diff -Nru qtbase-opensource-src-5.15.3+dfsg/.QT-ENTERPRISE-LICENSE-AGREEMENT qtbase-opensource-src-5.15.8+dfsg/.QT-ENTERPRISE-LICENSE-AGREEMENT --- qtbase-opensource-src-5.15.3+dfsg/.QT-ENTERPRISE-LICENSE-AGREEMENT 2021-03-30 02:27:15.450110200 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/.QT-ENTERPRISE-LICENSE-AGREEMENT 2022-11-13 04:41:14.436940200 +0800 @@ -1,48 +1,65 @@ QT LICENSE AGREEMENT -Agreement version 4.3 +Agreement version 4.4.1 This Qt License Agreement ("Agreement") is a legal agreement for the licensing of Licensed Software (as defined below) between The Qt Company (as defined -below) and the Licensee who has accepted the terms of this Agreement by -downloading or using the Licensed Software and/or as defined herein: +below) and the Licensee who has accepted the terms of this Agreement by signing +this Agreement or by downloading or using the Licensed Software or in any other +appropriate means. Capitalized terms used herein are defined in Section 1. WHEREAS: - (A) Licensee wishes to use the Licensed Software for the purpose of - developing and distributing Applications and/or Devices (each as - defined below); and - (B) The Qt Company is willing to grant the Licensee a right to use - Licensed Software for such a purpose pursuant to term and conditions - of this Agreement. + (A) Licensee wishes to use the Licensed Software for the purpose of + developing and distributing Applications and/or Devices (each as defined + below); + (B) The Qt Company is willing to grant the Licensee a right to use Licensed + Software for such a purpose pursuant to term and conditions of this + Agreement; and + (C) Parties wish to enable that their respective Affiliates also can sell + and purchase licenses to serve Licensee Affiliates' needs to use Licensed + Software pursuant to terms of the Agreement. Any such license purchases by + Licensee Affiliates from The Qt Company or its Affiliates will create + contractual relationship directly between the relevant The Qt Company and + the respective ordering Licensee Affiliate "Acceding Agreement"). + Accordingly, Licensee shall not be a party to any such Acceding Agreement, + and no rights or obligations are created to the Licensee thereunder but all + rights and obligations under such Acceding Agreement are vested and borne + solely by the ordering Licensee Affiliate and the relevant The Qt Company + as a contracting parties under such Acceding Agreement. NOW, THEREFORE, THE PARTIES HEREBY AGREE AS FOLLOWS: 1. DEFINITIONS -"Affiliate" of a Party shall mean an entity (i) which is directly -or indirectly controlling such Party; (ii) which is under the same direct or -indirect ownership or control as such Party; or (iii) which is directly or -indirectly owned or controlled by such Party. For these purposes, an entity -shall be treated as being controlled by another if that other entity has fifty -percent (50 %) or more of the votes in such entity, is able to direct its -affairs and/or to control the composition of its board of directors or -equivalent body. +"Affiliate" of a Party shall mean an entity + (i) which is directly or indirectly controlling such Party; + (ii) which is under the same direct or indirect ownership or control as + such Party; or + (iii) which is directly or indirectly owned or controlled by such Party. +For these purposes, an entity shall be treated as being controlled by another +if that other entity has fifty percent (50 %) or more of the votes in such +entity, is able to direct its affairs and/or to control the composition of its +board of directors or equivalent body. "Add-on Products" shall mean The Qt Company's specific add-on software products -(for example Qt Safe Renderer, Qt for Automation, Qt Application Manager), which -are not licensed as part of The Qt Company's standard offering, but shall be -included into the scope of Licensed Software only if so specifically agreed -between the Parties. - -"Applications" shall mean Licensee's software products created using the -Licensed Software, which may include the Redistributables, or part thereof. - -"Contractor(s)" shall mean third party consultants, distributors and contractors -performing services to the Licensee under applicable contractual arrangement. - -"Customer(s)" shall mean Licensee's end users to whom Licensee, directly or -indirectly, distributes copies of the Redistributables. +which are not licensed as part of The Qt Company's standard product offering, +but shall be included into the scope of Licensed Software only if so +specifically agreed between the Parties. + +"Agreement Term" shall mean the validity period of this Agreement, as set forth +in Section 12. + +"Applications" shall mean software products created using the Licensed +Software, which include the Redistributables, or part thereof. + +"Contractor(s)" shall mean third party consultants, distributors and +contractors performing services to the Licensee under applicable contractual +arrangement. + +"Customer(s)" shall mean Licensee's customers to whom Licensee, directly or +indirectly, distributes copies of the Redistributables as integrated or +incorporated into Applications or Devices. "Data Protection Legislation" shall mean the General Data Protection Regulation (EU 2016/679) (GDPR) and any national implementing laws, regulations and @@ -50,44 +67,61 @@ as any other data protection laws or regulations applicable in relevant territory. -"Deployment Platforms" shall mean operating systems and/or hardware specified -in the License Certificate, on which the Redistributables can be distributed -pursuant to the terms and conditions of this Agreement. +"Deployment Platforms" shall mean target operating systems and/or hardware +specified in the License Certificate, on which the Redistributables can be +distributed pursuant to the terms and conditions of this Agreement. "Designated User(s)" shall mean the employee(s) of Licensee or Licensee's -Affiliates acting within the scope of their employment or Licensee's Contractors -acting within the scope of their services for Licensee and on behalf of -Licensee. Designated Users shall be named in the License Certificate. +Affiliates acting within the scope of their employment or Licensee's +Contractors acting within the scope of their services on behalf of Licensee. "Development License" shall mean the license needed by the Licensee for each Designated User to use the Licensed Software under the license grant described in Section 3.1 of this Agreement. Development Licenses are available per respective Licensed Software products, each product having its designated scope -and purpose of use. Distribution Licenses are always connected to Qt for Device -Creation product and Qt for MCUs product only. +and purpose of use. -"Development Platforms" shall mean those operating systems specified in the -License Certificate, in which the Licensed Software can be used under the -Development License, but not distributed in any form or used for any other purpose. - -"Devices" shall mean hardware devices or products that 1) are manufactured -and/or distributed by the Licensee or its Affiliates or Contractors, and (2)(i) -incorporate or integrate the Redistributables or parts thereof; or (ii) where -the main user interface or substantial functionality of such unit , when used by -a Customer, is provided by Application(s) or otherwise depends on the Licensed -Software, regardless of whether the Redistributables are distributed together -with the hardware or not. Devices covered with this Agreement shall be specified -in Appendix 2 or in a quote. - -"Distribution License(s)" shall mean the license required for any kind of sale, -trade, exchange, loan, lease, rental or other distribution by or on behalf of -Licensee to a third party of Redistributables in connection with Devices -ursuant to license grant described in Section 3.3 of this Agreement. - -"Distribution License Packs" shall mean set of prepaid Distribution Licenses for -distribution of Redistributables, as defined in The Qt Company's standard price -list, quote, Purchase Order confirmation or in an appendix hereto, as the case -may be. +"Development License Term" shall mean the agreed validity period of the +Development License or QA Tools license during which time the relevant Licensed +Software product can be used pursuant to this Agreement. Agreed Development +License Term, as ordered and paid for by the Licensee, shall be memorialized in +the applicable License Certificate. + +"Development Platforms" shall mean those host operating systems specified in +the License Certificate, in which the Licensed Software can be used under the +Development License. + +"Devices" shall mean + (1) hardware devices or products that + i. are manufactured and/or distributed by the Licensee, its Affiliates, + Contractors or Customers, and + ii. incorporate, integrate or link to Applications such that + substantial functionality of such unit, when used by an End User, + is provided by Application(s) or otherwise depends on the Licensed + Software, regardless of whether the Application is developed by + Licensee or its Contractors; or + (2) Applications designed for the hardware devices specified in item (1). + + Devices covered by this Agreement shall be specified in Appendix 2 or in a + quote. + +"Distribution License(s)" shall mean a royalty-bearing license required for any +kind of sale, trade, exchange, loan, lease, rental or other distribution by or +on behalf of Licensee to a third party of Redistributables in connection with +Devices pursuant to license grant described in Section 3.3 of this Agreement. +Distribution Licensed are sold separately for each type of Device respectively +and cannot be used for any type of Devices at Licensee's discretion. + +"Distribution License Packs" shall mean set of prepaid Distribution Licenses +for distribution of Redistributables, as defined in The Qt Company's standard +price list, quote, Purchase Order confirmation or in an Appendix 2 hereto, as +the case may be. + +"End User" shall mean the final end user of the Application or a Device. + +"Evaluation License Term" shall mean a time period specified in the License +Certificate for the Licensee to use the relevant Licensed Software for +evaluation purposes according to Section 3.6 herein. "Intellectual Property Rights" shall mean patents (including utility models), design patents, and designs (whether or not capable of registration), chip @@ -99,136 +133,117 @@ "License Certificate" shall mean a certificate generated by The Qt Company for each Designated User respectively upon them downloading the Licensed Software, which will be available under respective Designated User's Qt Account at -account.qt.io. License Certificates will specify the Designated User, the -Development Platforms, Deployment Platforms and the License Term. Such terms are -considered part of the licenses granted hereunder and shall be updated from time -to time to reflect any agreed changes to the foregoing terms relating to -Designated User's rights to the Licensed Software. +account.qt.io. License Certificates will specify relevant information +pertaining the Licensed Software purchased by Licensee and Designated User's +license to the Licensed Software. "License Fee" shall mean the fee charged to the Licensee for rights granted under the terms of this Agreement. -"License Term" shall mean the agreed validity period of the Development License -of the respective Designated User, during which time the Designated User is -entitled to use the Licensed Software, as set forth in the respective License -Certificate. - -"Licensed Software" shall mean either - (i) Qt for Application Development or - (ii) Qt for Device Creation, and/or - (iii) Qt 3D Studio, and/or - (iv) Qt Design Studio, and/or - (v) Qt for MCUs, and/or - (vi) selected Add-on Products, if any, - -depending on which product(s) the Licensee has purchased under this Agreement, -as well as corresponding online or electronic documentation, associated media -and printed materials, including the source code (where applicable), example -programs and the documentation, licensed to the Licensee under this Agreement. -Licensed Software does not include Third Party Software (as defined in -Section 4) or Open Source Qt. The Qt Company may, in the course of its -development activities, at its free and absolute discretion and without any -obligation to send or publish any notifications to the Licensee or in general, -make changes, additions or deletions in the components and functionalities of -the Licensed Software, provided that no such changes, additions or deletions -will affect the already released version of the Licensed Software, but only -upcoming version(s). +"Licensed Software" shall mean specified product of commercially licensed +version of Qt Software and/or QA Tools defined in Appendix 1 and/or Appendix 3, +which Licensee has purchased and which is provided to Licensee under the terms +of this Agreement. Licensed Software shall include corresponding online or +electronic documentation, associated media and printed materials, including the +source code (where applicable), example programs and the documentation. +Licensed Software does not include Third Party Software (as defined in Section +4) or Open Source Qt. The Qt Company may, in the course of its development +activities, at its free and absolute discretion and without any obligation to +send or publish any notifications to the Licensee or in general, make changes, +additions or deletions in the components and functionalities of the Licensed +Software, provided that no such changes, additions or deletions will affect +the already released version of the Licensed Software, but only upcoming +version(s). "Licensee" shall mean the individual or legal entity that is party to this -Agreement, as identified on the signature page hereof. +Agreement. -"Licensee's Records" shall mean books and records that are likely to contain -information bearing on Licensee's compliance with this Agreement, Licensee's use -of Open Source Qt and/or the payments due to The Qt Company under this -Agreement, including, but not limited to user information, assembly logs, sales -records and distribution records. +"Licensee's Records" shall mean books and records that contain information +bearing on Licensee's compliance with this Agreement, Licensee's use of Open +Source Qt and/or the payments due to The Qt Company under this Agreement, +including, but not limited to user information, assembly logs, sales records +and distribution records. "Modified Software" shall have the meaning as set forth in Section 2.3. -"Online Services" shall mean any services or access to systems made available by -The Qt Company to the Licensee over the Internet relating to the Licensed +"Online Services" shall mean any services or access to systems made available +by The Qt Company to the Licensee over the Internet relating to the Licensed Software or for the purpose of use by the Licensee of the Licensed Software or Support. Use of any such Online Services is discretionary for the Licensee and some of them may be subject to additional fees. -"Open Source Qt" shall mean the non-commercial Qt computer software products, -licensed under the terms of the GNU Lesser General Public License, version 2.1 -or later ("LGPL") or the GNU General Public License, version 2.0 or later -("GPL"). For clarity, Open Source Qt shall not be provided nor governed under -this Agreement. +"Open Source Qt" shall mean Qt Software available under the terms of the GNU +Lesser General Public License, version 2.1 or later ("LGPL") or the GNU General +Public License, version 2.0 or later ("GPL"). For clarity, Open Source Qt shall +not be provided, governed or used under this Agreement. "Party" or "Parties" shall mean Licensee and/or The Qt Company. -"Permitted Combination" shall have the meaning as set forth in Section -3.4(viii). +"Permitted Software" shall mean (i) third party open source software products +that are generally available for public in source code form and free of any +charge under any of the licenses approved by Open Source Initiative as listed +on https://opensource.org/licenses, which may include parts of Open Source Qt +or be developed using Open Source Qt; and (ii) software The Qt Company has made +available via its Qt Marketplace online distribution channel. "Pre-Release Code" shall have the meaning as set forth in Section 4. -"Prohibited Combination" shall mean any means to (i) use, combine, incorporate, +"Prohibited Combination" shall mean any effort to use, combine, incorporate, link or integrate Licensed Software with any software created with or -incorporating Open Source Qt, (ii) use Licensed Software for creation of any -software created with or incorporating Open Source Qt, or (iii) incorporate or -integrate Applications into a hardware device or product other than a Device. +incorporating Open Source Qt, or use Licensed Software for creation of any such +software. -"Qt 3D Studio" shall mean The Qt Company's productized offering, which consist -of all versions of modules and tools as set forth in Appendix 1. +"Purchase Order" shall have the meaning as set forth in Section 10.2. -"Qt Design Studio" shall mean The Qt Company's productized offering, which -consist of all versions of modules and tools as set forth in Appendix 1. +"QA Tools" shall mean software libraries and tools as defined in Appendix 1 +depending on which product(s) the Licensee has purchased under the Agreement. -"Qt for Application Development" shall mean The Qt Company's productized -offering, which consist of all versions of modules and tools as set forth in -Appendix 1. - -"Qt for Device Creation" shall mean The Qt Company's productized offering, -which consist of all versions of modules and tools as set forth in Appendix 1. - -"Qt for MCUs" shall mean The Qt Company's productized offering, which consist -of all versions of modules and tools as set forth in Appendix 1. +"Qt Software" shall mean the software libraries and tools of The Qt Company, +which The Qt Company makes available under commercial and/or open source +licenses. "Redistributables" shall mean the portions of the Licensed Software set forth in Appendix 1 that may be distributed pursuant to the terms of this Agreement -in object code form only, including any relevant documentation. Where -relevant, any reference to Licensed Software in this Agreement shall include -and refer also to Redistributables. +in object code form only, including any relevant documentation. Where relevant, +any reference to Licensed Software in this Agreement shall include and refer +also to Redistributables. -"Renewal Term" shall mean an extension of previous License Term as agreed -between the Parties. +"Renewal Term" shall mean an extension of previous Development License Term as +agreed between the Parties. "Submitted Modified Software" shall have the meaning as set forth in Section 2.3. "Support" shall mean standard developer support that is provided by The Qt Company to assist Designated Users in using the Licensed Software in accordance -with The Qt Company's standard support terms available at -https://www.qt.io/terms-conditions/ and as further defined in Section 8 -hereunder. +with this Agreement and the Support Terms. -"Taxes" shall have the meaning set forth in Section 10.5. +"Support Terms" shall mean The Qt Company's standard support terms specified in +Appendix 9 hereto. -"Term" shall have the meaning set forth in Section 12. +"Taxes" shall have the meaning set forth in Section 10.5. "The Qt Company" shall mean: - (i) in the event Licensee is an individual residing in the United States - or a legal entity incorporated in the United States or having its - headquarters in the United States, The Qt Company Inc., a - Delaware corporation with its office at 2350 Mission College Blvd., - Suite 1020, Santa Clara, CA 95054, USA.; or - (ii) in the event the Licensee is an individual residing outside of the - United States or a legal entity incorporated outside of the United - States or having its registered office outside of the United States, - The Qt Company Ltd., a Finnish company with its registered office - at Bertel Jungin aukio D3A, 02600 Espoo, Finland. + (i) in the event Licensee is an individual residing in the United States or + a legal entity incorporated in the United States or having its + headquarters in the United States, The Qt Company Inc., a Delaware + corporation with its office at 3031 Tisch Way, 110 Plaza West, + San Jose, CA 95128, USA.; or + (ii) in the event the Licensee is an individual residing outside of the + United States or a legal entity incorporated outside of the United + States or having its registered office outside of the United States, + The Qt Company Ltd., a Finnish company with its registered office at + Miestentie 7, 02150 Espoo, Finland. "Third-Party Software" shall have the meaning set forth in Section 4. "Updates" shall mean a release or version of the Licensed Software containing -bug fixes, error corrections and other changes that are generally made available -to users of the Licensed Software that have contracted for Support. Updates are -generally depicted as a change to the digits following the decimal in the -Licensed Software version number. The Qt Company shall make Updates available to -the Licensee under the Support. Updates shall be considered as part of the -Licensed Software hereunder. +bug fixes, error corrections and other changes that are generally made +available to users of the Licensed Software that have contracted for Support. +Updates are generally depicted as a change to the digits following the decimal +in the Licensed Software version number. The Qt Company shall make Updates +available to the Licensee under the Support. Updates shall be considered as +part of the Licensed Software hereunder. "Upgrades" shall mean a release or version of the Licensed Software containing enhancements and new features and are generally depicted as a change to the @@ -239,38 +254,45 @@ 2. OWNERSHIP 2.1. Ownership of The Qt Company -The Licensed Software is protected by copyright laws and international copyright -treaties, as well as other intellectual property laws and treaties. The Licensed -Software is licensed, not sold. + +The Licensed Software is protected by copyright laws and international +copyright treaties, as well as other intellectual property laws and treaties. +The Licensed Software is licensed, not sold. All of The Qt Company's Intellectual Property Rights are and shall remain the -exclusive property of The Qt Company or its licensors respectively. +exclusive property of The Qt Company or its licensors respectively. No rights +to The Qt Company's Intellectual Property Rights are assigned or granted to +Licensee under this Agreement, except when and to the extent expressly +specified herein. 2.2. Ownership of Licensee + All the Licensee's Intellectual Property Rights are and shall remain the exclusive property of the Licensee or its licensors respectively. -All Intellectual Property Rights to the Modified Software, Applications and Devices -shall remain with the Licensee and no rights thereto shall be granted by the -Licensee to The Qt Company under this Agreement (except as set forth in Section -2.3 below). +All Intellectual Property Rights to the Modified Software, Applications and +Devices shall remain with the Licensee and no rights thereto shall be granted +by the Licensee to The Qt Company under this Agreement (except as set forth in +Section 2.3 below). 2.3. Modified Software + Licensee may create bug-fixes, error corrections, patches or modifications to the Licensed Software ("Modified Software"). Such Modified Software may break -the source or binary compatibility with the Licensed Software (including without -limitation through changing the application programming interfaces ("API") or by -adding, changing or deleting any variable, method, or class signature in the -Licensed Software and/or any inter-process protocols, services or standards in -the Licensed Software libraries). To the extent that Licensee's Modified -Software so breaks source or binary compatibility with the Licensed Software, -Licensee acknowledges that The Qt Company's ability to provide Support may be -prevented or limited and Licensee's ability to make use of Updates may be restricted. +the source or binary compatibility with the Licensed Software (including +without limitation through changing the application programming interfaces +("API") or by adding, changing or deleting any variable, method, or class +signature in the Licensed Software and/or any inter-process protocols, +services or standards in the Licensed Software libraries). To the extent that +Licensee's Modified Software so breaks source or binary compatibility with the +Licensed Software, Licensee acknowledges that The Qt Company's ability to +provide Support may be prevented or limited and Licensee's ability to make use +of Updates may be restricted. Licensee may, at its sole and absolute discretion, choose to submit Modified Software to The Qt Company ("Submitted Modified Software") in connection with -Licensee's Support request, service request or otherwise. In the event Licensee -does so, then, Licensee hereby grants The Qt Company a sublicensable, +Licensee's Support request, service request or otherwise. In the event +Licensee does so, then, Licensee hereby grants The Qt Company a sublicensable, assignable, irrevocable, perpetual, worldwide, non-exclusive, royalty-free and fully paid-up license, under all of Licensee's Intellectual Property Rights, to reproduce, adapt, translate, modify, and prepare derivative works of, publicly @@ -281,181 +303,222 @@ 3. LICENSES GRANTED 3.1. Development with Licensed Software + Subject to the terms of this Agreement, The Qt Company grants to Licensee a -worldwide, non-exclusive, non-transferable license, valid for the License Term, -to use, modify and copy the Licensed Software by Designated Users on the -Development Platforms for the sole purposes of designing, developing, -demonstrating and testing Application(s) and/or Devices, and to provide thereto -related support and other related services to end-user Customers. Each -Application and/or Device can only include, incorporate or integrate code -generated under this Agreement by such Designated Users who are duly licensed -for the applicable Development Platform(s) and Deployment Platform(s) (i.e have -a valid license for the appropriate Licensed Software product). +worldwide, non-exclusive, non-transferable license, valid for each Development +License Term, to use, modify and copy the Licensed Software by Designated +Users on the Development Platforms for the sole purposes of designing, +developing, demonstrating and testing Application(s) and/or Devices, and to +provide thereto related support and other related services to Customers. Each +Application and/or Device can only include, incorporate or integrate +contributions by such Designated Users who are duly licensed for the applicable +Development Platform(s) and Deployment Platform(s) (i.e have a valid license +for the appropriate Licensed Software product). Licensee may install copies of the Licensed Software on five (5) computers per Designated User, provided that only the Designated Users who have a valid Development License may use the Licensed Software. Licensee may at any time designate another Designated User to replace a -then-current Designated User by notifying The Qt Company in writing, provided -that any Designated User may be replaced only once during any six-month period. - -Upon expiry of the initially agreed License Term, the respective License Terms -shall be automatically extended to one or more Renewal Term(s), unless and -until either Party notifies the other Party in writing, or any other method -acceptable to The Qt Company, that it does not wish to continue the License -Term, such notification to be provided to the other Party no less than thirty -(30) days before expiry of the respective License Term. - -Unless otherwise agreed between the Parties, Renewal Term shall be of equal -length with the initial License Term. +then-current Designated User by notifying The Qt Company in writing, where such +replacement is due to termination of employment, change of job duties, long +time absence or other such permanent reason affecting Designated User's need +for Licensed Software. + +Upon expiry of the initially agreed Development License Term, the respective +Development License Term shall be automatically extended to one or more Renewal +Term(s), unless and until either Party notifies the other Party in writing, or +any other method acceptable to The Qt Company (it being specifically +acknowledged and understood that verbal notification is explicitly deemed +inadequate in all circumstances), that it does not wish to continue the +Development License Term, such notification to be provided to the other Party +no less than thirty (30) days before expiry of the respective Development +License Term. The Qt Company shall, in good time before the due date for the +above notification, remind the Licensee on the coming Renewal Term. Unless +otherwise agreed between the Parties, Renewal Term shall be 12 months. Any such Renewal Term shall be subject to License Fees agreed between the -Parties or, if no advance agreement exists, subject to The Qt Company's standard -pricing applicable at the commencement date of any such Renewal Term. - -Any price or other term specified for a Renewal Term shall be valid only for the -specified time. +Parties or, if no advance agreement exists, subject to The Qt Company's +standard list pricing applicable at the commencement date of any such +Renewal Term. The Qt Company may either request the Licensee to place a purchase order -corresponding to a quote by The Qt Company, or uses Licensees stored Credit -Card information in the QtAccount to automatically charge the Licensee for the +corresponding to a quote by The Qt Company, or use Licensee's stored Credit +Card information in the Qt Account to automatically charge the Licensee for the relevant Renewal Term. -In the event Licensee does not prevent auto-renewal pursuant the above, but a -Renewal Term is nevertheless not duly ordered within 30 days from the date of -the respective notification from The Qt Company and/or the respective License -Fee paid by due date specified in The Qt Company's respective invoice, The Qt -Company shall apply a reinstatement fee equal to ten percent (10 %) of the -total value of the License Fees of the Development Licenses for the expired -term to be added to the License Fee of the respective Renewal Term. - -In the event Licensee chooses not to renew a Development License for a Renewal -Term by notifying The Qt Company thereof no less than thirty (30) days before -expiry of the respective License Term, Licensee may still reinstate such -expired Development Licenses for a Renewal Term subject to applicable renewal -Term License Fees until thirty (30) days from the expiry of the initially -agreed License Term or preceding Renewal Term. After such thirty (30) day -period a Development License shall be subject to applicable License Fees for -a new Development License and not any Renewal Term License Fees. - 3.2. Distribution of Applications -Subject to the terms of this Agreement, The Qt Company grants to Licensee -a worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to -this Agreement) right and license, valid for the Term, to - (i) distribute, by itself or through its Contractors, Redistributables as - installed, incorporated or integrated into Applications for execution - on the Deployment Platforms, and - (ii) grant sublicenses to Redistributables, as distributed hereunder, for - Customers solely for Customer's internal use and to the extent - necessary in order for the Customers to use the Applications for their - respective intended purposes. + +Subject to the terms of this Agreement, The Qt Company grants to Licensee a +worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to +this Agreement), right and license, valid for the Agreement Term, to + (i) distribute, by itself or through its Contractors, Redistributables as + installed, incorporated or integrated into Applications for execution + on the Deployment Platforms, and + (ii) grant perpetual and irrevocable sublicenses to Redistributables, as + distributed hereunder, for Customers solely to the extent necessary in + order for the Customers to use the Applications for their respective + intended purposes. Right to distribute the Redistributables as part of an Application as provided -herein is not royalty-bearing but is conditional upon the Licensee not having -any unpaid License Fees for Development Licenses owed to The Qt Company at the -time of distribution of any Redistributables to Customers. +herein is not royalty-bearing but is conditional upon the Application having +been created, updated and maintained under a valid and duly paid Development +Licenses. 3.3. Distribution of Devices + Subject to the terms of this Agreement, The Qt Company grants to Licensee a worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to -this Agreement) right and license, valid for the Term, to - (i) distribute, by itself or through one or more tiers of Contractors, - Redistributables as installed, incorporated or integrated, or intended - to be installed, incorporated or integrated into Devices for execution - on the Deployment Platforms, and - (ii) grant sublicenses to Redistributables, as distributed hereunder, for - Customers solely for Customer's internal use and to the extent - necessary in order for the Customers to use the Devices for their - respective intended purposes. - -Right to distribute the Redistributables with Devices as provided herein is -conditional upon the Licensee (i) not having any unpaid License Fees for -Development Licenses owed to The Qt Company, and (ii) having purchased and paid -corresponding Distribution Licenses at the time of distribution of any -Redistributables to Customers. +this Agreement), right and license, valid for the Agreement Term, to + (i) distribute, by itself or through one or more tiers of Contractors, + Redistributables as installed, incorporated or integrated, or intended + to be installed, incorporated or integrated into Devices for execution + on the Deployment Platforms, and + (ii) grant perpetual and irrevocable sublicenses to Redistributables, as + distributed hereunder, for Customers solely to the extent necessary in + order for the Customers to use the Devices for their respective + intended purposes. + +Right to distribute the Devices as provided herein is conditional upon + (i) the Devices having been created, updated and maintained under a valid + and duly paid Development Licenses, and + (ii) the Licensee having acquired corresponding Distribution Licenses at + the time of distribution of any Devices to Customers. 3.4. Further Requirements + The licenses granted above in this Section 3 by The Qt Company to Licensee are conditional and subject to Licensee's compliance with the following terms: - (i) Licensee shall not remove or alter any copyright, trademark or other - proprietary rights notice(s) contained in any portion of the Licensed - Software; - (ii) Applications must add primary and substantial functionality to the - Licensed Software so as not to compete with the Licensed Software; - (iii) Applications may not pass on functionality which in any way makes it - possible for others to create software with the Licensed Software; - provided however that Licensee may use the Licensed Software's - scripting and QML ("Qt Quick") functionality solely in order to - enable scripting, themes and styles that augment the functionality - and appearance of the Application(s) without adding primary and - substantial functionality to the Application(s); - (iv) Licensee shall not use Licensed Software in any manner or for any - purpose that infringes, misappropriates or otherwise violates any - Intellectual property or right of any third party, or that violates - any applicable law; - (v) Licensee shall not use The Qt Company's or any of its suppliers' - names, logos, or trademarks to market Applications, except that - Licensee may use "Built with Qt" logo to indicate that - Application(s) was developed using the Licensed Software; - (vi) Licensee shall not distribute, sublicense or disclose source code - of Licensed Software to any third party (provided however that - Licensee may appoint employee(s) of Contractors as Designated - Users to use Licensed Software pursuant to this Agreement). Such - right may be available for the Licensee subject to a separate - software development kit ("SDK") license agreement to be concluded - with The Qt Company; - (vii) Licensee shall not grant the Customers a right to (i) make copies of - the Redistributables except when and to the extent required to use the - Applications and/or Devices for their intended purpose, (ii) modify - the Redistributables or create derivative works thereof, (iii) - decompile, disassemble or otherwise reverse engineer Redistributables, - or (iv) redistribute any copy or portion of the Redistributables to - any third party, except as part of the onward sale of the Device on - which the Redistributables are installed; - (viii) Licensee shall not and shall cause that its Affiliates or - Contractors shall not use Licensed Software in any Prohibited - Combination, unless Licensee has received an advance written - permission from The Qt Company to do so. Absent such written - permission, any and all distribution by the Licensee during the Term - of a hardware device or product a) which incorporate or integrate any - part of Licensed Software or Open Source Qt; or b) where the main - user interface or substantial functionality is provided by software - built with Licensed Software or Open Source Qt or otherwise depends - on the Licensed Software or Open Source Qt, shall be considered to be - Device distribution under this Agreement and shall be dependent on - Licensee's compliance thereof (including but not limited to - obligation to pay applicable License Fees for such distribution). - Notwithstanding what is provided above in this sub-section (viii), - Licensee is entitled to use and combine Licensed Software with any - Permitted Software; - (ix) Licensee shall cause all of its Affiliates and Contractors entitled - to make use of the licenses granted under this Agreement, to be - contractually bound to comply with the relevant terms of this - Agreement and not to use the Licensed Software beyond the terms - hereof and for any purposes other than operating within the scope - of their services for Licensee. Licensee shall be responsible for - any and all actions and omissions of its Affiliates and Contractors - relating to the Licensed Software and use thereof (including but not - limited to payment of all applicable License Fees); - (x) Except when and to the extent explicitly provided in this Section 3, - Licensee shall not transfer, publish, disclose, display or otherwise - make available the Licensed Software; and - (xi) Licensee shall not attempt or enlist a third party to conduct or - attempt to conduct any of the above. + (i) Licensee acknowledges that The Qt Company has separate products of + Licensed Software for the purpose of Applications and Devices + respectively, where development and distribution of Devices is only + allowed using the correct designated product. Licensee shall make sure + and bear the burden of proof that Licensee is using a correct product + of Licensed Software entitling Licensee to development and distribution + of Devices; + (ii) Licensee shall not remove or alter any copyright, trademark or other + proprietary rights notice(s) contained in any portion of the Licensed + Software; + (iii) Applications must add primary and substantial functionality to the + Licensed Software so as not to compete with the Licensed Software; + (iv) Applications may not pass on functionality which in any way makes it + possible for others to create software with the Licensed Software; + provided however that Licensee may use the Licensed Software's + scripting and QML ("Qt Quick") functionality solely in order to enable + scripting, themes and styles that augment the functionality and + appearance of the Application(s) without adding primary and substantial + functionality to the Application(s); + (v) Licensee shall not use Licensed Software in any manner or for any + purpose that infringes, misappropriates or otherwise violates any + Intellectual property or right of any third party, or that violates any + applicable law; + (vi) Licensee shall not use The Qt Company's or any of its suppliers' + names, logos, or trademarks to market Applications, except that + Licensee may use "Built with Qt" logo to indicate that Application(s) + or Device(s) was developed using the Licensed Software; + (vii) Licensee shall not distribute, sublicense or disclose source code of + Licensed Software to any third party (provided however that Licensee + may appoint employee(s) of Contractors and Affiliates as Designated + Users to use Licensed Software pursuant to this Agreement). Such right + may be available for the Licensee subject to a separate software + development kit ("SDK") license agreement to be concluded with The Qt + Company; + (viii) Licensee shall not grant the Customers a right to (a) make copies of + the Redistributables except when and to the extent required to use the + Applications and/or Devices for their intended purpose, (b) modify the + Redistributables or create derivative works thereof, (c) decompile, + disassemble or otherwise reverse engineer Redistributables, or (d) + redistribute any copy or portion of the Redistributables to any third + party, except as part of the onward sale of the Application or Device + on which the Redistributables are installed; + (ix) Licensee shall not and shall cause that its Affiliates or Contractors + shall not use Licensed Software in any Prohibited Combination, unless + Licensee has received an advance written permission from The Qt Company + to do so. Absent such written permission, any and all distribution by + the Licensee during the Agreement Term of a hardware device or product + a) which incorporate or integrate any part of Licensed Software or Open + Source Qt; or b) where substantial functionality is provided by + software built with Licensed Software or Open Source Qt or otherwise + depends on the Licensed Software or Open Source Qt, shall be considered + to be Device distribution under this Agreement and shall be dependent + on Licensee's compliance thereof (including but not limited to + obligation to pay applicable License Fees for such distribution). + Notwithstanding what is provided above in this sub-section (ix), + Licensee is entitled to use and combine Licensed Software with any + Permitted Software; + (x) Licensee shall cause all of its Affiliates, Contractors and Customers + entitled to make use of the licenses granted under this Agreement, to + be contractually bound to comply with the relevant terms of this + Agreement and not to use the Licensed Software beyond the terms hereof + and for any purposes other than operating within the scope of their + services for Licensee. Licensee shall be responsible for any and all + actions and omissions of its Affiliates and Contractors relating to the + Licensed Software and use thereof (including but not limited to payment + of all applicable License Fees); + (xi) Except when and to the extent explicitly provided in this Section 3, + Licensee shall not transfer, publish, disclose, display or otherwise + make available the Licensed Software; and + (xii) Licensee shall not attempt or enlist a third party to conduct or + attempt to conduct any of the above. Above terms shall not be applicable if and to the extent they conflict with any mandatory provisions of any applicable laws. + Any use of Licensed Software beyond the provisions of this Agreement is strictly prohibited and requires an additional license from The Qt Company. +3.5 QA Tools License + +Subject to the terms of this Agreement, The Qt Company grants to Licensee a +worldwide, non-exclusive, non-transferable license, valid for the Development +License Term, to use the QA Tools for Licensee's internal business purposes in +the manner provided below and in Appendix 1 hereto. + +Licensee may modify the QA Tools except for altering or removing any details of +ownership, copyright, trademark or other property right connected with the QA +Tools. + +Licensee shall not distribute the QA Tools or any part thereof, modified or +unmodified, separately or as part of any software package, Application or +Device. + +Upon expiry of the initially agreed Development License Term, the respective +Development License Term shall be automatically extended to one or more Renewal +Term(s), unless and until either Party notifies the other Party in writing, or +any other method acceptable to The Qt Company (it being specifically +acknowledged and understood that verbal notification is explicitly deemed +inadequate in all circumstances), that it does not wish to continue the +Development License Term, such notification to be provided to the other Party +no less than thirty (30) days before expiry of the respective Development +License Term. The Qt Company shall, in good time before the due date for the +above notification, remind the Licensee on the coming Renewal Term. Unless +otherwise agreed between the Parties, Renewal Term shall be 12 months. + +Any such Renewal Term shall be subject to License Fees agreed between the +Parties or, if no advance agreement exists, subject to The Qt Company's +standard list pricing applicable at the commencement date of any such +Renewal Term. + +3.6 Evaluation License + +Subject to the terms of this Agreement, The Qt Company grants to Licensee a +worldwide, non-exclusive, non-transferable license, valid for the Evaluation +License Term to use the Licensed Software solely for the Licensee's internal +use to evaluate and determine whether the Licensed Software meets Licensee's +business requirements, specifically excluding any commercial use of the +Licensed Software or any derived work thereof. + +Upon the expiry of the Evaluation License Term, Licensee must either +discontinue use of the relevant Licensed Software or acquire a commercial +Development License or QA Tools License specified herein. + 4. THIRD-PARTY SOFTWARE -The Licensed Software may provide links to third party libraries or code -(collectively "Third-Party Software") to implement various functions. -Third-Party Software does not comprise part of the Licensed Software. In some -cases, access to Third-Party Software may be included with the Licensed -Software. Such Third-Party Software will be listed in the ".../src/3rdparty" +The Licensed Software may provide links or access to third party libraries or +code (collectively "Third-Party Software") to implement various functions. +Third-Party Software does not, however, comprise part of the Licensed Software, +but is provided to Licensee complimentary and use thereof is discretionary for +the Licensee. Third-Party Software will be listed in the ".../src/3rdparty" source tree delivered with the Licensed Software or documented in the Licensed Software, as such may be amended from time to time. Licensee acknowledges that use or distribution of Third-Party Software is in all respects subject to @@ -464,68 +527,66 @@ 5. PRE-RELEASE CODE The Licensed Software may contain pre-release code and functionality, or sample -code marked or otherwise stated with appropriate designation such as "Technology -Preview", "Alpha", "Beta", "Sample" etc. ("Pre-Release Code"). - -Such Pre-Release Code may be present complimentary for the Licensee, in order to -provide experimental support or information for new platforms or preliminary -versions of one or more new functionalities or for other similar reasons. The -Pre-Release Code may not be at the level of performance and compatibility of a -final, generally available, product offering. The Pre-Release Code may not -operate correctly, may contain errors and may be substantially modified by The -Qt Company prior to the first commercial product release, if any. The Qt -Company is under no obligation to make Pre-Release Code commercially available, -or provide any Support or Updates relating thereto. The Qt Company assumes no -liability whatsoever regarding any Pre-Release Code, but any use thereof is -exclusively at Licensee's own risk and expense. - -For clarity, unless Licensed Software specifies different license terms for -the respective Pre-Release Code, the Licensee is entitled to use such -pre-release code pursuant to Section 3, just like other Licensed Software, -provided however that in the event Add-on Products are included and available -as such Pre-Release Code, Licensee's right to use such Add-on Products is -nevertheless subject to and conditional upon conclusion of separate agreement -with The Qt Company. +code marked or otherwise stated with appropriate designation such as +"Technology Preview", "Alpha", "Beta", "Sample", "Example" etc. +("Pre-Release Code"). + +Such Pre-Release Code may be present complimentary for the Licensee, in order +to provide experimental support or information for new platforms or +preliminary versions of one or more new functionalities or for other similar +reasons. The Pre-Release Code may not be at the level of performance and +compatibility of a final, generally available, product offering. The +Pre-Release Code may not operate correctly, may contain errors and may be +substantially modified by The Qt Company prior to the first commercial +product release, if any. The Qt Company is under no obligation to make +Pre-Release Code commercially available, or provide any Support or Updates +relating thereto. The Qt Company assumes no liability whatsoever regarding +any Pre-Release Code, but any use thereof is exclusively at Licensee's own risk +and expense. + +For clarity, unless Licensed Software specifies different license terms for the +respective Pre-Release Code, the Licensee is entitled to use such pre-release +code pursuant to Section 3, just like other Licensed Software. 6. LIMITED WARRANTY AND WARRANTY DISCLAIMER -The Qt Company hereby represents and warrants that it has the power and +The Qt Company hereby represents and warrants that (i) it has the power and authority to grant the rights and licenses granted to Licensee under this -Agreement. +Agreement, and (ii) Licensed Software will operate materially in accordance +with its specifications. -Except as set forth above, the Licensed Software is licensed to Licensee -"as is" and Licensee's exclusive remedy and The Qt Company's entire liability -for errors in the Licensed Software shall be limited, at The Qt Company's -option, to correction of the error, replacement of the Licensed Software or -return of the applicable fees paid for the defective Licensed Software for -the time period during which the License is not able to utilize the Licensed -Software under the terms of this Agreement. +Except as set forth above, the Licensed Software is licensed to Licensee "as +is" and Licensee's exclusive remedy and The Qt Company's entire liability for +errors in the Licensed Software shall be limited, at The Qt Company's option, +to correction of the error, replacement of the Licensed Software or return of +the applicable fees paid for the defective Licensed Software for the time +period during which the License is not able to utilize the Licensed Software +under the terms of this Agreement. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE QT COMPANY ON BEHALF OF ITSELF AND ITS LICENSORS, SUPPLIERS AND AFFILIATES, DISCLAIMS ALL OTHER WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND -NON-INFRINGEMENT WITH REGARD TO THE LICENSED SOFTWARE. THE QT COMPANY DOES -NOT WARRANT THAT THE LICENSED SOFTWARE WILL SATISFY LICENSEE'S REQUIREMENTS OR -THAT IT WILL OPERATE WITHOUT DEFECT OR ERROR OR THAT THE OPERATION THEREOF -WILL BE UNINTERRUPTED. +NON-INFRINGEMENT WITH REGARD TO THE LICENSED SOFTWARE. THE QT COMPANY DOES NOT +WARRANT THAT THE LICENSED SOFTWARE WILL SATISFY LICENSEE'S REQUIREMENTS OR THAT +IT WILL OPERATE WITHOUT DEFECT OR ERROR OR THAT THE OPERATION THEREOF WILL BE +UNINTERRUPTED. -7. INDEMNIFICATION AND LIMITATION OF LIABILITY +7. LIMITATION OF LIABILITY -7.1. Limitation of Liability -EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II) +EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II) BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL EITHER PARTY BE LIABLE TO THE OTHER PARTY FOR ANY LOSS OF PROFIT, LOSS OF DATA, LOSS OF BUSINESS OR GOODWILL OR ANY OTHER INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE COST, DAMAGES OR EXPENSE OF ANY KIND, HOWSOEVER ARISING UNDER OR IN CONNECTION WITH THIS AGREEMENT. -EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II) +EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II) BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO -EVENT SHALL EITHER PARTY'S TOTAL AGGREGATE LIABILITY UNDER THIS AGREEMENT EXCEED -THE AGGREGATE LICENSE FEES PAID OR PAYABLE TO THE QT COMPANY FROM LICENSEE -DURING THE PERIOD OF TWELVE (12) MONTHS IMMEDIATELY PRECEDING THE EVENT -RESULTING IN SUCH LIABILITY. +EVENT SHALL EITHER PARTY'S TOTAL AGGREGATE LIABILITY UNDER THIS AGREEMENT +EXCEED THE AGGREGATE LICENSE FEES PAID OR PAYABLE TO THE QT COMPANY BY LICENSEE +DURING THE DEVELOPMENT LICENSE TERM DURING WHICH THE EVENT RESULTING IN SUCH +LIABILITY OCCURRED. THE PROVISIONS OF THIS SECTION 7 ALLOCATE THE RISKS UNDER THIS AGREEMENT BETWEEN THE QT COMPANY AND LICENSEE AND THE PARTIES HAVE RELIED UPON THE @@ -533,55 +594,54 @@ AGREEMENT. NOTWITHSTANDING ANYTHING TO THE CONTRARY IN THIS AGREEMENT, LICENSEE SHALL -ALWAYS BE LIABLE TO PAY THE APPLICABLE LICENSE FEES CORRESPONDING TO ITS ACTUAL -USE OF LICENSED SOFTWARE. +ALWAYS BE LIABLE TO PAY THE APPLICABLE LICENSE FEES CORRESPONDING TO ITS +ACTUAL USE OF LICENSED SOFTWARE. 8. SUPPORT, UPDATES AND ONLINE SERVICES Upon due payment of the agreed License Fees the Licensee will be eligible to -receive Support and Updates and to use the Online Services during the License -Term, provided, however, that in the event the License Term is longer than 36 -months, the initial payment includes Support for only the first 12 months, -unless the Parties specifically otherwise agree. +receive Support and Updates and to use the Online Services during the agreed +Development License Term or other agreed fixed time period. Support is +provided according to agreed support level and subject to applicable +requirements and restrictions, as specified in the Support Terms. -Unless otherwise decided by The Company at its free and absolute discretion, +Unless otherwise decided by The Qt Company at its free and absolute discretion, Upgrades will not be included in the Support but may be available subject to additional fees. -From time to time The Qt Company may change the Support terms, provided that -during the respective ongoing License Term the level of Support provided by The -Qt Company may not be reduced without the consent of the Licensee. +From time to time The Qt Company may change the Support Terms, provided that +during the respective ongoing Support period the level of Support may not be +reduced without the consent of the Licensee. Unless otherwise agreed, The Qt Company shall not be responsible for providing any service or support to Customers. 9. CONFIDENTIALITY -Each Party acknowledges that during the Term of this Agreement each Party may -receive information about the other Party's business, business methods, -business plans, customers, business relations, technology, and other -information, including the terms of this Agreement, that is confidential and -of great value to the other Party, and the value of which would be -significantly reduced if disclosed to third parties ("Confidential -Information"). Accordingly, when a Party (the "Receiving Party") receives -Confidential Information from the other Party (the "Disclosing Party"), the -Receiving Party shall only disclose such information to employees and -Contractors on a need to know basis, and shall cause its employees and -employees of its Affiliates to: (i) maintain any and all Confidential -Information in confidence; (ii) not disclose the Confidential Information to -a third party without the Disclosing Party's prior written approval; and (iii) -not, directly or indirectly, use the Confidential Information for any purpose -other than for exercising its rights and fulfilling its responsibilities -pursuant to this Agreement. Each Party shall take reasonable measures to -protect the Confidential Information of the other Party, which measures shall -not be less than the measures taken by such Party to protect its own -confidential and proprietary information. +Each Party acknowledges that during the Agreement Term each Party may receive +information about the other Party's business, business methods, business plans, +customers, business relations, technology, and other information, including the +terms of this Agreement, that is confidential and of great value to the other +Party, and the value of which would be significantly reduced if disclosed to +third parties ("Confidential Information"). Accordingly, when a Party (the +"Receiving Party") receives Confidential Information from the other Party (the +"Disclosing Party"), the Receiving Party shall only disclose such information +to employees and Contractors on a need to know basis, and shall cause its +employees and employees of its Affiliates to: (i) maintain any and all +Confidential Information in confidence; (ii) not disclose the Confidential +Information to a third party without the Disclosing Party's prior written +approval; and (iii) not, directly or indirectly, use the Confidential +Information for any purpose other than for exercising its rights and +fulfilling its responsibilities pursuant to this Agreement. Each Party shall +take reasonable measures to protect the Confidential Information of the other +Party, which measures shall not be less than the measures taken by such Party +to protect its own confidential and proprietary information. Obligation of confidentiality shall not apply to information that (i) is or becomes generally known to the public through no act or omission of the -Receiving Party; (ii) was in the Receiving Party's lawful possession prior -to the disclosure hereunder and was not subject to limitations on disclosure -or use; (iii) is developed independently by employees or Contractors of the +Receiving Party; (ii) was in the Receiving Party's lawful possession prior to +the disclosure hereunder and was not subject to limitations on disclosure or +use; (iii) is developed independently by employees or Contractors of the Receiving Party or other persons working for the Receiving Party who have not had access to the Confidential Information of the Disclosing Party, as proven by the written records of the Receiving Party; (iv) is lawfully disclosed to @@ -595,721 +655,1323 @@ The obligations under this Section 9 shall continue to remain in force for a period of five (5) years after the last disclosure, and, with respect to trade -secrets, for so long as such trade secrets are protected under applicable -trade secret laws. +secrets, for so long as such trade secrets are protected under applicable trade +secret laws. 10. FEES, DELIVERY AND PAYMENT 10.1. License Fees + License Fees are described in The Qt Company's standard price list, quote or -Purchase Order confirmation or in an appendix hereto, as the case may be. +Purchase Order confirmation or in an Appendix 2 hereto, as the case may be. -The License Fees shall not be refunded or claimed as a credit in any event or -for any reason whatsoever. +Unless otherwise expressly provided in this Agreement, the License Fees shall +not be refunded or claimed as a credit in any event or for any reason +whatsoever. 10.2. Ordering Licenses -Licensee may purchase Development Licenses and Distribution Licenses pursuant -to agreed pricing terms or, if no specific pricing terms have been agreed -upon, at The Qt Company's standard pricing terms applicable at the time of -purchase. Unless specifically otherwise provided, any pricing terms -referenced in this Agreement shall be valid for twelve (12) months from the -date of this Agreement. + +Licensee may purchase Development Licenses, Distribution Licenses and QA Tools +Licenses pursuant to agreed pricing terms or, if no specific pricing terms have +been agreed upon, at The Qt Company's standard pricing terms applicable at the +time of purchase. + +Unless expressly otherwise agreed, any price or other term quoted to the +Licensee or specified herein shall only be valid for the thirty (30) days from +the effective date of this Agreement, Appendix 2 or the date of the quote, as +applicable. Licensee shall submit all purchase orders for Development Licenses and -Distribution Licenses to The Qt Company by email or any other method -acceptable to The Qt Company (each such order is referred to herein as a -"Purchase Order") for confirmation, whereupon the Purchase Order shall -become binding between the Parties. +Distribution Licenses to The Qt Company by email or any other method acceptable +to The Qt Company (each such order is referred to herein as a "Purchase Order") +for confirmation, whereupon the Purchase Order shall become binding between the +Parties. + +Licensee acknowledges and agrees that all Purchase Orders for Licensed Software +the Licensee makes during the Agreement Term shall be governed exclusively +under the terms of this Agreement. 10.3. Distribution License Packs + Unless otherwise agreed, Distribution Licenses shall be purchased by way of Distribution License Packs. -Upon due payment of the ordered Distribution License Pack(s), the Licensee -will have an account of Distribution Licenses available for distributing -the Redistributables in accordance with this Agreement. +Upon due payment of the ordered Distribution License Pack(s), the Licensee will +have an account of Distribution Licenses available for distributing the +Redistributables in accordance with this Agreement. Each time Licensee distributes a copy of Redistributables, then one -Distribution License is used, and Licensee's account of available -Distribution Licenses is decreased accordingly. +Distribution License is used, and Licensee's account of available Distribution +Licenses is decreased accordingly. -Licensee may distribute copies of the Redistributables so long as Licensee -has Distribution Licenses remaining on its account. +Licensee may distribute copies of the Redistributables so long as Licensee has +Distribution Licenses remaining on its account. 10.4. Payment Terms + License Fees and any other charges under this Agreement shall be paid by -Licensee no later than thirty (30) days from the date of the applicable -invoice from The Qt Company. +Licensee no later than thirty (30) days from the date of the applicable invoice +from The Qt Company. The Qt Company will submit an invoice to Licensee after the date of this Agreement and/or after The Qt Company receives a Purchase Order from Licensee. A late payment charge of the lower of (a) one percent per month; or (b) the interest rate stipulated by applicable law, shall be charged on any unpaid -balances that remain past due. +balances that remain past due and which have not been disputed by the Licensee +in good faith. 10.5. Taxes + All License Fees and other charges payable hereunder are gross amounts but -exclusive of any value added tax, use tax, sales tax, withholding tax and -other taxes, duties or tariffs ("Taxes") levied directly for the sale, -delivery or use of Licensed Software hereunder pursuant to any applicable -law. Such applicable Taxes shall be paid by Licensee to The Qt Company, or, -where applicable, in lieu of payment of such Taxes to The Qt Company, -Licensee shall provide an exemption certificate to The Qt Company and any -applicable authority. +exclusive of any value added tax, use tax, sales tax, withholding tax and other +taxes, duties or tariffs ("Taxes") levied directly for the sale, delivery or +use of Licensed Software hereunder pursuant to any applicable law. Such +applicable Taxes shall be paid by Licensee to The Qt Company, or, where +applicable, in lieu of payment of such Taxes to The Qt Company, Licensee shall +provide an exemption certificate to The Qt Company and any applicable +authority. 11. RECORD-KEEPING AND REPORTING OBLIGATIONS; AUDIT RIGHTS 11.1. Licensee's Record-keeping -Licensee shall at all times during the Term of this Agreement and for a -period of seven (7) years thereafter maintain Licensee's Records in an -accurate and up-to-date form. Licensee's Records shall be adequate to -reasonably enable The Qt Company to determine Licensee's compliance with -the provisions of this Agreement. The records shall conform to general -good accounting practices. - -Licensee shall, within thirty (30) days from receiving The Qt Company's -request to that effect, deliver to The Qt Company a report based on -Licensee's Records, such report to contain information, in sufficient -detail, on (i) number and identity of users working with Licensed Software -or Open Source Qt, (ii) copies of Redistributables distributed by Licensee -during the most recent calendar quarter and/or any other term specified by -The Qt Company, (iii) number of undistributed copies of Redistributables -and corresponding number of unused Distribution Licenses remaining on -Licensee's account, and (iv) any other information as The Qt Company may -reasonably require from time to time. + +Licensee shall at all times during the Agreement Term and for a period of two +(2) years thereafter maintain Licensee's Records in an accurate and up-to-date +form. Licensee's Records shall be adequate to reasonably enable The Qt Company +to determine Licensee's compliance with the provisions of this Agreement. The +records shall conform to general good accounting practices. + +Licensee shall, within thirty (30) days from receiving The Qt Company's request +to that effect, deliver to The Qt Company a report based on Licensee's Records, +such report to contain information, in sufficient detail, on (i) number and +identity of users working with Licensed Software or Open Source Qt, (ii) copies +of Redistributables distributed by Licensee during the most recent calendar +quarter and/or any other term specified by The Qt Company, , and (iii) any +other information pertaining to Licensee's compliance with the terms of this +Agreement (like e.g. information on products and/or projects relating to use of +Distribution Licenses), as The Qt Company may reasonably require from time to +time. 11.2. The Qt Company's Audit Rights -The Qt Company or an independent auditor acting on behalf of The Qt -Company's, may, upon at least five (5) business days' prior written -notice and at its expense, audit Licensee with respect to the Licensee's -use of the Licensed Software, but not more frequently than once during -each 6-month period. Such audit may be conducted by mail, electronic means -or through an in-person visit to Licensee's place of business. Any such -in-person audit shall be conducted during regular business hours at -Licensee's facilities and shall not unreasonably interfere with Licensee's -usiness activities. The Qt Company or the independent auditor acting on -behalf of The Qt Company shall be entitled to inspect Licensee's Records -and conduct necessary interviews of Licensee's relevant employees and -Contractors. All such Licensee's Records and use thereof shall be subject -to an obligation of confidentiality under this Agreement. - -If an audit reveals that Licensee is using the Licensed Software beyond -scope of the licenses Licensee has paid for, Licensee agrees to pay The Qt -Company any amounts owed for such unauthorized use within 30 days from -receipt of the corresponding invoice from The Qt Company. - -In addition, in the event the audit reveals a material violation of the -terms of this Agreement (without limitation, either (i) underpayment of -more than 10 % of License Fees or 10,000 euros (whichever is more) or -(ii) distribution of products, which include or result from Prohibited -Combination, shall be deemed a material violation for purposes of this -section), then the Licensee shall pay The Qt Company's reasonable cost of -conducting such audit. + +The Qt Company or an independent auditor acting on behalf of The Qt Company's, +may, upon at least thirty (30) days' prior written notice and at its expense, +audit Licensee with respect to the Licensee's use of the Licensed Software, but +not more frequently than once during each 6-month period. Such audit may be +conducted by mail, electronic means or through an in-person visit to Licensee's +place of business. Any possible in-person audit shall be conducted during +regular business hours at Licensee's facilities and shall not unreasonably +interfere with Licensee's business activities and shall be limited in scope to +verify Licensee's compliance with the terms of this Agreement. The Qt Company +or the independent auditor acting on behalf of The Qt Company shall be entitled +to inspect Licensee's Records and conduct necessary interviews of Licensee's +relevant employees and Contractors. All such Licensee's Records and use thereof +shall be subject to an obligation of confidentiality under this Agreement. + +If an audit reveals that Licensee is using the Licensed Software beyond scope +of the licenses Licensee has paid for, Licensee shall pay to The Qt Company any +amounts owed for such unauthorized use within 30 days from receipt of the +corresponding invoice from The Qt Company. + +In addition, in the event the audit reveals a material violation of the terms +of this Agreement (without limitation, either (i) underpayment of more than 10 +% of License Fees or 10,000 euros (whichever is more) or (ii) distribution of +products, which include or result from Prohibited Combination, shall be deemed +a material violation for purposes of this section), then the Licensee shall +pay The Qt Company's reasonable cost of conducting such audit. 12. TERM AND TERMINATION + 12.1. Agreement Term -This Agreement shall enter into force upon due acceptance by both -Parties and remain in force for as long as there is any Development -License(s) purchased under this Agreement in force ("Term"), unless and -until terminated pursuant to the terms of this Section 12. - -12.2. Termination and suspension of rights -Either Party shall have the right to terminate this Agreement upon thirty -(30) days prior written notice if the other Party commits a material -breach of any obligation of this Agreement and fails to remedy such breach -within such notice period. + +This Agreement shall enter into force upon due acceptance by both Parties and +remain in force until terminated pursuant to the terms of this Section 12 +("Agreement Term"). + +12.2. Termination for breach and suspension of rights +Either Party shall have the right to terminate this Agreement upon thirty (30) +days prior written notice if the other Party commits a material breach of any +obligation of this Agreement and fails to remedy such breach within such notice +period. Instead of termination, The Qt Company shall have the right to suspend or -withhold grants of all rights to the Licensed Software hereunder, -including but not limited to the Development Licenses, Distribution -License, and Support, should Licensee fail to make payment in timely -fashion or otherwise violates or is reasonably suspected to violate its -obligations or terms of this Agreement, and where such violation or breach -is not cured within five (5) business days following The Qt Company's -written notice thereof. - -12.3. Mutual Right to Terminate -Either Party shall have the right to terminate this Agreement immediately -upon written notice in the event that the other Party becomes insolvent, -files for any form of bankruptcy, makes any assignment for the benefit of -creditors, has a receiver, administrative receiver or officer appointed -over the whole or a substantial part of its assets, ceases to conduct -business, or an act equivalent to any of the above occurs under the laws -of the jurisdiction of the other Party. +withhold grants of all rights to the Licensed Software hereunder, including but +not limited to the Development Licenses, Distribution License, and Support, +should Licensee fail to make payment in timely fashion or otherwise violates or +is reasonably suspected to violate its obligations or terms of this Agreement, +and where such violation or breach is not cured within ten (10) business days +following The Qt Company's written notice thereof. + +12.3. Termination for insolvency + +Either Party shall have the right to terminate this Agreement immediately upon +written notice in the event that the other Party becomes insolvent, files for +any form of bankruptcy, makes any assignment for the benefit of creditors, has +a receiver, administrative receiver or officer appointed over the whole or a +substantial part of its assets, ceases to conduct business, or an act +equivalent to any of the above occurs under the laws of the jurisdiction of the +other Party. 12.4. Parties' Rights and Duties upon Termination -Upon expiry or termination of the Agreement, Licensee shall cease and -shall cause all Designated Users (including those of its Affiliates' and -Contractors') to cease using the Licensed Software and distribution of the -Redistributables under this Agreement. - -Notwithstanding the above, in the event the Agreement expires or is terminated: - (i) as a result of The Qt Company choosing not to renew the Development - License(s) as set forth in Section 3.1, and where such decision of - non-renewal is not due to any ongoing breach or alleged breach (as - reasonably determined by The Qt Company) by Licensee of the terms of this - Agreement or any applicable license terms of Open Source Qt, then all valid - licenses possessed by the Licensee at such date shall be extended to be - valid in perpetuity under the terms of this Agreement and Licensee is - entitled to purchase additional licenses as set forth in Section 10.2; or - (ii) for reason other than by The Qt Company pursuant to item (i) above - or pursuant to Section 12.2, then the Licensee is entitled, for a - period of six (6) months after the effective date of termination, - to continue distribution of Devices under the Distribution Licenses - paid but unused at such effective date of termination. - -Upon any such termination the Licensee shall destroy or return to The Qt -Company all copies of the Licensed Software and all related materials and will -certify the same to The Qt Company upon its request, provided however that -Licensee may retain and exploit such copies of the Licensed Software as it may -reasonably require in providing continued support to Customers. + +Upon expiry or termination of the Agreement, Licensee shall cease and shall +cause all Designated Users (including those of its Affiliates' and +Contractors') to cease using the Licensed Software under this Agreement. For +clarity, a Development License of a Designated User or a QA Tools License, and +all rights relating thereto, shall always terminate at the expiry of the +respective Development License Term, even if the Agreement continues to remain +in force. + +Upon such termination the Licensee shall destroy or return to The Qt Company +all copies of the Licensed Software and all related materials and will certify +the same by Licensee's duly authorized officer to The Qt Company upon its +request, provided however that Licensee may retain and exploit such copies of +the Licensed Software as it may reasonably require in providing continued +support to Customers. + +Except when this Agreement is terminated by The Qt Company due to Licensee's +material breach as set forth in Section 12.2, the Licensee may continue +distribution of Applications and Devices under the terms of this Agreement +despite the termination of this Agreement. In such event the terms hereof will +continue to be applicable and govern any such distribution of Applications and +Devices beyond the expiry or termination of this Agreement. In case of +termination by The Qt Company due to Licensee's material breach, Licensee must +cease any distribution of Applications and Devices at the date of termination +of this Agreement. Expiry or termination of this Agreement for any reason whatsoever shall not relieve Licensee of its obligation to pay any License Fees accrued or payable -to The Qt Company prior to the effective date of termination, and Licensee -shall immediately pay to The Qt Company all such fees upon the effective date -of termination. Termination of this Agreement shall not affect any rights of -Customers to continue use of Applications and Devices (and therein -incorporated Redistributables). - -12.5. Extension in case of bankruptcy -In the event The Qt Company is declared bankrupt under a final, -non-cancellable decision by relevant court of law, and this Agreement is not, -at the date of expiry of the Development License(s) pursuant to Section 3.1, -assigned to party, who has assumed The Qt Company's position as a legitimate -licensor of Licensed Software under this Agreement, then all valid licenses -possessed by the Licensee at such date of expiry, and which the Licensee has -not notified for expiry, shall be extended to be valid in perpetuity under the -terms of this Agreement. +to The Qt Company prior to the effective date of termination, and Licensee pay +to The Qt Company all such fees within 30 days from the effective date of +termination of this Agreement. + +Termination of this Agreement shall not affect any rights of Customers to +continue use of Applications and Devices (and therein incorporated +Redistributables). + +12.5. Extension of Rights under Special Circumstances + +In the event of The Qt Company choosing not to renew the Development License(s) +or QA Tools Licenses, as set forth in Section 3.1 and 3.5 respectively, and +where such decision of non-renewal is not due to any ongoing breach or alleged +breach (as reasonably determined by The Qt Company) by Licensee of the terms of +this Agreement or any applicable license terms of Open Source Qt, then all +valid and affected Development Licenses and QA Tools licenses possessed by the +Licensee at such date shall be extended to be valid in perpetuity under the +terms of this Agreement and Licensee is entitled to purchase additional +licenses as set forth in Section 10.2. + +In the event The Qt Company is declared bankrupt under a final, non-cancellable +decision by relevant court of law, and this Agreement is not, at the date of +expiry of the Development License(s) or QA Tools Licenses, assigned to party, +who has assumed The Qt Company's position as a legitimate licensor of Licensed +Software under this Agreement, then all valid Development Licenses and QA Tools +Licenses possessed by the Licensee at such date of expiry, and which the +Licensee has not notified for expiry, shall be extended to be valid in +perpetuity under the terms of this Agreement. + +For clarity, in case of an extension under this Section 12.5, any such +extension shall not apply to The Qt Company's Support obligations, but Support +shall be provided only up until the end of the respective fixed Development +License Term regardless of the extension of relevant Development License or QA +Tools License, unless otherwise agreed between the Parties. 13. GOVERNING LAW AND LEGAL VENUE In the event this Agreement is in the name of The Qt Company Inc., a Delaware Corporation, then: - (i) this Agreement shall be construed and interpreted in accordance with - the laws of the State of California, USA, excluding its choice of - law provisions; - (ii) the United Nations Convention on Contracts for the International - Sale of Goods will not apply to this Agreement; and - (iii) any dispute, claim or controversy arising out of or relating to this - Agreement or the breach, termination, enforcement, interpretation or - validity thereof, including the determination of the scope or - applicability of this Agreement to arbitrate, shall be determined by - arbitration in San Francisco, USA, before one arbitrator. The - arbitration shall be administered by JAMS pursuant to JAMS' - Streamlined Arbitration Rules and Procedures. Judgment on the Award - may be entered in any court having jurisdiction. This Section shall - not preclude parties from seeking provisional remedies in aid of - arbitration from a court of appropriate jurisdiction. + (i) this Agreement shall be construed and interpreted in accordance with + the laws of the State of California, USA, excluding its choice of law + provisions; + (ii) the United Nations Convention on Contracts for the International Sale + of Goods will not apply to this Agreement; and + (iii) any dispute, claim or controversy arising out of or relating to this + Agreement or the breach, termination, enforcement, interpretation or + validity thereof, including the determination of the scope or + applicability of this Agreement to arbitrate, shall be determined by + arbitration in San Francisco, USA, before one arbitrator. The + arbitration shall be administered by JAMS pursuant to JAMS' Streamlined + Arbitration Rules and Procedures. Judgment on the Award may be entered + in any court having jurisdiction. This Section shall not preclude + parties from seeking provisional remedies in aid of arbitration from a + court of appropriate jurisdiction. In the event this Agreement is in the name of The Qt Company Ltd., a Finnish Company, then: - (i) this Agreement shall be construed and interpreted in accordance with - the laws of Finland, excluding its choice of law provisions; - (ii) the United Nations Convention on Contracts for the International - Sale of Goods will not apply to this Agreement; and - (iii) any disputes, controversy or claim arising out of or relating to - this Agreement, or the breach, termination or validity thereof shall - be finally settled by arbitration in accordance with the Arbitration - Rules of Finland Chamber of Commerce. The arbitration tribunal shall - consist of one (1), or if either Party so requires, of three (3), - arbitrators. The award shall be final and binding and enforceable in - any court of competent jurisdiction. The arbitration shall be held - in Helsinki, Finland and the process shall be conducted in the - English language. This Section shall not preclude parties from - seeking provisional remedies in aid of arbitration from a court of - appropriate jurisdiction. + (i) this Agreement shall be construed and interpreted in accordance with + the laws of Finland, excluding its choice of law provisions; + (ii) the United Nations Convention on Contracts for the International Sale + of Goods will not apply to this Agreement; and + (iii) any disputes, controversy or claim arising out of or relating to this + Agreement, or the breach, termination or validity thereof shall be + finally settled by arbitration in accordance with the Arbitration Rules + of International Chamber of Commerce. The arbitration tribunal shall + consist of one (1), or if either Party so requires, of three (3), + arbitrators. The award shall be final and binding and enforceable in + any court of competent jurisdiction. The arbitration shall be held in + Helsinki, Finland and the process shall be conducted in the English + language. This Section shall not preclude parties from seeking + provisional remedies in aid of arbitration from a court of appropriate + jurisdiction. 14. GENERAL PROVISIONS 14.1. No Assignment + Except in the case of a merger or sale of substantially all of its corporate -assets, Licensee shall not be entitled to assign or transfer all or any of -its rights, benefits and obligations under this Agreement without the prior -written consent of The Qt Company, which shall not be unreasonably withheld -or delayed. The Qt Company shall be entitled to freely assign or transfer any -of its rights, benefits or obligations under this Agreement. +assets, Licensee shall not be entitled to assign or transfer all or any of its +rights, benefits and obligations under this Agreement without the prior written +consent of The Qt Company, which shall not be unreasonably withheld or delayed. +The Qt Company shall be entitled to freely assign or transfer any of its +rights, benefits or obligations under this Agreement. 14.2. No Third-Party Representations + Licensee shall make no representations or warranties concerning the Licensed Software on behalf of The Qt Company. Any representation or warranty Licensee -makes or purports to make on The Qt Company's behalf shall be void as to The -Qt Company. +makes or purports to make on The Qt Company's behalf shall be void as to +The Qt Company. 14.3. Surviving Sections + Any terms and conditions that by their nature or otherwise reasonably should survive termination of this Agreement shall so be deemed to survive. Such sections include especially the following: 1, 2, 6, 7, 9, 11, 12.4, 13 and 14. 14.4. Entire Agreement -This Agreement, the exhibits hereto, the License Certificate and any -applicable Purchase Order accepted by The Qt Company constitute the complete -agreement between the Parties and supersedes all prior or contemporaneous -discussions, representations, and proposals, written or oral, with respect -to the subject matters discussed herein. + +This Agreement, the Appendices hereto, the License Certificate and any +applicable quote and Purchase Order accepted by The Qt Company constitute the +complete agreement between the Parties and supersedes all prior or +contemporaneous discussions, representations, and proposals, written or oral, +with respect to the subject matters discussed herein. In the event of any conflict or inconsistency between this Agreement and any -Purchase Order, the terms of this Agreement will prevail over the terms of -the Purchase Order with respect to such conflict or inconsistency. +Purchase Order, the terms of this Agreement will prevail over the terms of the +Purchase Order with respect to such conflict or inconsistency. -Parties specifically acknowledge and agree that this Agreement prevails -over any click-to-accept or similar agreements the Designated Users may -need to accept online upon download of the Licensed Software, as may be -required by The Qt Company's applicable processes relating to Licensed -Software. +Parties specifically acknowledge and agree that this Agreement prevails over +any click-to-accept or similar agreements the Designated Users may need to +accept online upon download of the Licensed Software, as may be required by +The Qt Company's applicable processes relating to Licensed Software. 14.5. Modifications + No modification of this Agreement shall be effective unless contained in a writing executed by an authorized representative of each Party. No term or condition contained in Licensee's Purchase Order ("Deviating Terms") shall apply unless The Qt Company has expressly agreed such Deviating Terms in -writing. Unless and to the extent expressly agreed by The Qt Company, any -such Deviating Terms shall be deemed void and with no legal effect. For -clarity, delivery of the Licensed Software following the receipt of the -Purchase Order including Deviating Terms shall not constitute acceptance of -such Deviating Terms." +writing. Unless and to the extent expressly agreed by The Qt Company, any such +Deviating Terms shall be deemed void and with no legal effect. For clarity, +delivery of the Licensed Software following the receipt of the Purchase Order +including Deviating Terms shall not constitute acceptance of such Deviating +Terms. 14.6. Force Majeure -Except for the payment obligations hereunder, neither Party shall be liable -to the other for any delay or non-performance of its obligations hereunder -in the event and to the extent that such delay or non-performance is due to -an event of act of God, terrorist attack or other similar unforeseeable -catastrophic event that prevents either Party for fulfilling its -obligations under this Agreement and which such Party cannot avoid or -circumvent ("Force Majeure Event"). If the Force Majeure Event results in -a delay or non-performance of a Party for a period of three (3) months or -longer, then either Party shall have the right to terminate this Agreement -with immediate effect without any liability (except for the obligations of -payment arising prior to the event of Force Majeure) towards the other -Party. + +Except for the payment obligations hereunder, neither Party shall be liable to +the other for any delay or non-performance of its obligations hereunder in the +event and to the extent that such delay or non-performance is due to an event +of act of God, terrorist attack or other similar unforeseeable catastrophic +event that prevents either Party for fulfilling its obligations under this +Agreement and which such Party cannot avoid or circumvent ("Force Majeure +Event"). If the Force Majeure Event results in a delay or non-performance of a +Party for a period of three (3) months or longer, then either Party shall have +the right to terminate this Agreement with immediate effect without any +liability (except for the obligations of payment arising prior to the event of +Force Majeure) towards the other Party. 14.7. Notices -Any notice given by one Party to the other shall be deemed properly given -and deemed received if specifically acknowledged by the receiving Party in -writing or when successfully delivered to the recipient by hand, fax, or -special courier during normal business hours on a business day to the -addresses specified for each Party on the signature page. Each -communication and document made or delivered by one Party to the other -Party pursuant to this Agreement shall be in the English language. + +Any notice given by one Party to the other shall be deemed properly given and +deemed received if specifically acknowledged by the receiving Party in writing +or when successfully delivered to the recipient by hand, fax, or special +courier during normal business hours on a business day to the addresses +specified for each Party on the signature page. Each communication and document +made or delivered by one Party to the other Party pursuant to this Agreement +shall be in the English language. 14.8. Export Control + Licensee acknowledges that the Redistributables, as incorporated in -Applications or Devices, may be subject to export control restrictions -under the applicable laws of respective countries. Licensee shall fully -comply with all applicable export license restrictions and requirements -as well as with all laws and regulations relating to the Redistributables -and exercise of licenses hereunder and shall procure all necessary -governmental authorizations, including without limitation, all necessary -licenses, approvals, permissions or consents, where necessary for the -re-exportation of the Redistributables, Applications and/or Devices. +Applications or Devices, may be subject to export control restrictions under +the applicable laws of respective countries. Licensee shall fully comply with +all applicable export license restrictions and requirements as well as with all +laws and regulations relating to the Redistributables and exercise of licenses +hereunder and shall procure all necessary governmental authorizations, +including without limitation, all necessary licenses, approvals, permissions or +consents, where necessary for the re-exportation of the Redistributables, +Applications and/or Devices. 14.9. No Implied License -There are no implied licenses or other implied rights granted under -this Agreement, and all rights, save for those expressly granted hereunder, -shall remain with The Qt Company and its licensors. In addition, no licenses -or immunities are granted to the combination of the Licensed Software with -any other software or hardware not delivered by The Qt Company under this + +There are no implied licenses or other implied rights granted under this +Agreement, and all rights, save for those expressly granted hereunder, shall +remain with The Qt Company and its licensors. In addition, no licenses or +immunities are granted to the combination of the Licensed Software with any +other software or hardware not delivered by The Qt Company under this Agreement. 14.10. Attorney Fees -The prevailing Party in any action to enforce this Agreement shall be -entitled to recover its attorney's fees and costs in connection with such -action. + +The prevailing Party in any action to enforce this Agreement shall be entitled +to recover its attorney's fees and costs in connection with such action, as to +be ordered by the relevant dispute resolution body. 14.11. Privacy + Licensee acknowledges and agrees that for the purpose of this Agreement, -The Qt Company may collect, use, transfer and disclose personal data -pertaining to Designated Users as well as any other employees and directors -of the Licensee and its Contractors relevant for carrying out the intent of -this Agreement. Such personal data may be collected from the Licensee or -directly from the relevant individuals. The Parties acknowledge that with -regard to such personal data processed hereunder, The Qt Company shall be -regarded as the Data Controller under the applicable Data Protection -Legislation. The Qt Company shall process any such personal data in -accordance with its privacy policies and practices, which will comply with -all applicable requirements of the Data Protection Legislation. +The Qt Company may collect, use, transfer and disclose personal data pertaining +to Designated Users as well as any other employees and directors of the +Licensee and its Contractors relevant for carrying out the intent of this +Agreement. Such personal data will be primarily collected from the relevant +individuals but may be collected also from Licensee (e.g. in the course of +Licensee's reporting obligations). The Parties acknowledge that as +The Qt Company determines the purpose and means for such collection and +processing of the applicable personal data, The Qt Company shall be regarded as +the Data Controller under the applicable Data Protection Legislation. +The Qt Company shall process any such personal data in accordance with its +privacy and security policies and practices, which will comply with all +applicable requirements of the Data Protection Legislation. 14.12. Severability -If any provision of this Agreement shall be adjudged by any court of -competent jurisdiction to be unenforceable or invalid, that provision shall -be limited or eliminated to the minimum extent necessary so that this -Agreement shall otherwise remain in full force and effect and enforceable. -APPENDICES +If any provision of this Agreement shall be adjudged by any court of competent +jurisdiction to be unenforceable or invalid, that provision shall be limited or +eliminated to the minimum extent necessary so that this Agreement shall +otherwise remain in full force and effect and enforceable. -The Agreement includes Appendix 1, and possibly one or more of the -appendices 3-5, depending on the product(s) purchased by the Licensee, -what is stated in the quote or invoice, and/or what is stated in the -Licensee's License Certificate. - -APPENDIX 1 - -The modules and/or tools that are included in the respective product - Qt -for Application Development (QtAD), Qt for Device Creation (QtDC), Qt for -MCUs (QtMCU), Qt 3D Studio (Qt3DS) and Qt Design Studio (QtDS) - are -marked with 'X' in the below table. The modules and tools are ported to Qt 6 -in stages and are subject to availability. +14.13. Marketing Rights -Parts of the product that are permitted for distribution in object-code -form only ("Redistributables") are marked with 'R' in the below table. +Parties have agreed upon Marketing Rights pursuant to Appendix 7, if any. -+-----------------------------------------------------------------------+ -| Modules / Tools | QtAD | QtDC | QtMCU | Qt3DS | QtDS | -+-----------------------------------------------------------------------+ -| Qt Core | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt GUI | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Multimedia | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Multimedia Widgets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Network | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt PDF | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt QML | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Controls 2 | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Dialogs | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Layouts | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Test | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt SQL | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Test | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Widgets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Active Qt | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt 3D | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Android Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Bluetooth | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Canvas 3D | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Concurrent | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt D-Bus | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Gamepad | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Graphical Effects | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Help | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Image Formats | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Location | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Mac Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Network Authorization | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt NFC | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Platform Headers | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Positioning | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Print Support | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Purchasing | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt for Python | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Controls | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Widgets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt SCXML | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Sensors | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Serial Bus | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Serial Port | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Speech | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt SVG | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt UI Tools | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebChannel | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebEngine | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebSockets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebView | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Windows Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt X11 Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt XML | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt XML Patterns | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Wayland Compositor | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Charts | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Data Visualization | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Virtual Keyboard | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Boot 2 Qt stack | | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt OTA | | X, R | | | | -+-----------------------------------------------------------------------+ -| Device Utilities | | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Debugging Bridge (QDB) Daemon | | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Ultralite Controls | | | X, R | | | -+-----------------------------------------------------------------------+ -| Qt Quick Ultralite | | | X, R | | | -+-----------------------------------------------------------------------+ -| Qt Creator | X | X | X | | | -+-----------------------------------------------------------------------+ -| Qt Designer (Qt Widget Designer) | X | X | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Designer (Qt Creator | X, R | X, R | X, R | | | -| plugin) | | | | | | -+-----------------------------------------------------------------------+ -| Qt Linguist | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Qt Assistant | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Lupdate | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Lrelease | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Qmake | X | X | | | | -+-----------------------------------------------------------------------+ -| Uic | X | X | | | | -+-----------------------------------------------------------------------+ -| Rcc | X | X | | | | -+-----------------------------------------------------------------------+ -| Qlalr | X | X | | | | -+-----------------------------------------------------------------------+ -| Qdoc | X | X | | | | -+-----------------------------------------------------------------------+ -| Qmlscene | X | X | | | | -+-----------------------------------------------------------------------+ -| Qmlviewer | X | X | | | | -+-----------------------------------------------------------------------+ -| Target toolchains | | X | X | | | -+-----------------------------------------------------------------------+ -| Qt Debugging Bridge (QDB) Host | | X | | | | -| Tools | | | | | | -+-----------------------------------------------------------------------+ -| qtconfig-gui | | X | | | | -+-----------------------------------------------------------------------+ -| Qt Emulator | | X | | | | -+-----------------------------------------------------------------------+ -| Qmlinterfacegenerator | | | X | | | -+-----------------------------------------------------------------------+ -| Qmltocpp | | | X | | | -+-----------------------------------------------------------------------+ -| qulfontcompiler | | | X | | | -+-----------------------------------------------------------------------+ -| Qt53DStudioRuntime2 | | | | X, R | | -+-----------------------------------------------------------------------+ -| Qt 3D Studio | | | | X | | -+-----------------------------------------------------------------------+ -| Qt Design Studio | | | | | X | -+-----------------------------------------------------------------------+ -APPENDIX 3: ADDITIONS TO LICENSED SOFTWARE -In addition to what is provided under the definition of the Licensed Software, -Parties agree that Licensed Software shall also include the Add-On Products of -The Qt Company, as mentioned in this Appendix, if included in the quote / -invoice. - -The Modules and/or Tools of the Licensed Software that are included with each -Add-On Product respectively are marked with 'X' in the below table. The modules -are ported to Qt 6 in stages and are subject to availability. - -Parts of the respective Add-On Product that are permitted for distribution in -object-code form only ("Redistributables") are marked with 'R' in the below -table. - -+------------------------------------------------------------------------------------------------+ -| | Add-On Product(s) | -| +--------------------------------------------------------------------------+ -| Modules / Tools of | Qt for | Qt | Qt | Qt | Qt | Qt | -| Licensed Software | Automation | Automotive | Safe | Application | GammaRay | Deployment | -| | / Qt M2M | Suite | Renderer | Manager | | Platform | -| | Protocols | | | | | Package | -+------------------------------------------------------------------------------------------------+ -| Qt MQTT | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt KNX | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt OPC UA | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt CoAP | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Safe Renderer | | X, R | X, R | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Application | | X, R | | X, R | | | -| Manager | | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt IVI | | X, R | | | | | -+------------------------------------------------------------------------------------------------+ -| Reference UI | | X, R | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt GENIVI Extras | | X, R | | | | | -+------------------------------------------------------------------------------------------------+ -| QML Live | | X | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Creator | | X | | | | | -| Deployment | | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Creator Plugin | | X | | X | | | -| for Qt Application Manager | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Automotive Suite | | X | | | | | -| Deployment Server | | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Design Studio | | X | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt 3D Studio | | X | | | | | -+------------------------------------------------------------------------------------------------+ -| GammaRay | | X | | | X | | -+------------------------------------------------------------------------------------------------+ -| Platform adaptations| | | | | | X | -| for specified | | | | | | -| Deployment Platforms | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt for Device | | X | | | | | -| Creation | | | | | | | -+------------------------------------------------------------------------------------------------+ +APPENDICES +The Agreement includes following Appendices 1-10, as applicable. +- Appendix 1: Licensed Software details +- Appendix 2: Pricing +- Appendix 3: Add-on Software details (optional) +- Appendix 4: Small business and startup Licenses (optional) +- Appendix 5: Non-commercial and educational Licenses (optional) +- Appendix 6: License Reporting (optional) +- Appendix 7: Marketing Rights (optional) +- Appendix 8: Intentionally left blank (optional) +- Appendix 9: Support Terms +- Appendix 10: Conversion from legacy Licenses to Subscription (optional) + + +APPENDIX 1: LICENSED SOFTWARE + +The modules and/or tools that are included in the latest publicly available +version of the respective product at the effective date of this Agreement- Qt +for Application Development Professional (ADP), Qt for Application Development +Enterprise (ADE), Qt for Device Creation Professional (DCP), Qt for Device +Creation Enterprise (DCE), - are marked with "X" in the below table. The +modules and tools are specific to each product version respectively and may +vary from version to version. Modules and tools included in the latest publicly +available version of the respective product at any given time are listed in +Appendix 1 of the latest version of this Agreement available at +www.qt.io/terms-conditions/. If a new version of Licensed Software does not +include a module or tool present in an older version which Licensee is entitled +to use under a valid license from The Qt Company, then Licensee will continue +to have such right during the Term of this Agreement. In the event a new +version of the Licensed Software adds modules or tools to any previous +version(s), Licensee's rights will extend to cover also such additional modules +and tools. + +Parts of the product that are permitted for distribution in object-code form +only ("Redistributables") are marked with "R" in the below table. + ++----------------------------------------------------------+ +| Modules / Tools | ADP | ADE | DCP | DCE | ++----------------------------------------------------------+ +| Active Qt | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt 3D | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt 5 Core Compatibility APIs | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Android Extras | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Bluetooth | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Canvas 3D | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Charts | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Concurrent | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Core | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Data Visualization | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt D-Bus | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt for Python | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt for WebAssembly | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Gamepad | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Graphical Effects | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt GUI | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Help | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Image Formats | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Location | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Lottie Animation | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Mac Extras | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Multimedia | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Multimedia Widgets | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Network | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Network Authorization | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt NFC | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt OpenGL | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt PDF | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Platform Headers | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Positioning | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Print Support | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Purchasing | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt QML | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Quick | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Quick 3D | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Quick Controls 1 | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Quick Controls | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Quick Dialogs | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Quick Extras | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Quick Layouts | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Quick Test | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Quick Timeline | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Quick WebGL | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Quick Widgets | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Remote Objects | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Script | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Script Tools | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt SCXML | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Sensors | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Serial Bus | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Serial Port | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Shader Tools | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Speech | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt State Machine | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt SQL | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt SVG | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Test | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt UI Tools | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Virtual Keyboard | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Wayland Compositor | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt WebChannel | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt WebEngine | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt WebSockets | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt WebView | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Widgets | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Windows Extras | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt X11 Extras | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt XML | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt XML Patterns | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Designer (Qt Widget Designer) | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Linguist | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt Assistant | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| lupdate | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| lrelease | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| lconvert | X,R | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt MQTT | | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt KNX | | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt OPC UA | | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Qt CoAP | | X,R | X,R | X,R | ++----------------------------------------------------------+ +| Boot 2 Qt stacks | | | X,R | X,R | ++----------------------------------------------------------+ +| Qt OTA | | | X,R | X,R | ++----------------------------------------------------------+ +| Device Utilities | | | X,R | X,R | ++----------------------------------------------------------+ +| Qt Debugging Bridge (QBD) Daemon | | | X,R | X,R | ++----------------------------------------------------------+ +| Qt Quick Ultralite Controls | | | X,R | X,R | ++----------------------------------------------------------+ +| Qt Quick Ultralite | | | X,R | X,R | ++----------------------------------------------------------+ +| Qt Safe Renderer (QSR) | | | | X,R | ++----------------------------------------------------------+ +| Qt Application Manager | | | | X,R | ++----------------------------------------------------------+ +| Qt Interface Framework | | | | X,R | ++----------------------------------------------------------+ +| Neptune Reference UI | | | | X,R | ++----------------------------------------------------------+ +| Qt for Android Automotive (QAA) | | | | X,R | ++----------------------------------------------------------+ +| Qt Creator | X | X | X | X | ++----------------------------------------------------------+ +| Qt Design Studio Professional | X | X | X | X | ++----------------------------------------------------------+ +| androiddeployqt | X | X | X | X | ++----------------------------------------------------------+ +| androidtestrunner | X | X | X | X | ++----------------------------------------------------------+ +| canbusutil | X | X | X | X | ++----------------------------------------------------------+ +| dumpcpp | X | X | X | X | ++----------------------------------------------------------+ +| dumpdoc | X | X | X | X | ++----------------------------------------------------------+ +| fixqt4headers.pl | X | X | X | X | ++----------------------------------------------------------+ +| idc | X | X | X | X | ++----------------------------------------------------------+ +| moc | X | X | X | X | ++----------------------------------------------------------+ +| pixeltool | X | X | X | X | ++----------------------------------------------------------+ +| qdbus | X | X | X | X | ++----------------------------------------------------------+ +| qdbuscpp2xml | X | X | X | X | ++----------------------------------------------------------+ +| qdbusviwer | X | X | X | X | ++----------------------------------------------------------+ +| qdbusxml2cpp | X | X | X | X | ++----------------------------------------------------------+ +| qdistancefieldgenerator | X | X | X | X | ++----------------------------------------------------------+ +| qdoc | X | X | X | X | ++----------------------------------------------------------+ +| qhelpgenerator | X | X | X | X | ++----------------------------------------------------------+ +| qlalr | X | X | X | X | ++----------------------------------------------------------+ +| qmake | X | X | X | X | ++----------------------------------------------------------+ +| qml | X | X | X | X | ++----------------------------------------------------------+ +| qmlcachegen | X | X | X | X | ++----------------------------------------------------------+ +| qmldom | X | X | X | X | ++----------------------------------------------------------+ +| qmleasing | X | X | X | X | ++----------------------------------------------------------+ +| qmlformat | X | X | X | X | ++----------------------------------------------------------+ +| qmllint | X | X | X | X | ++----------------------------------------------------------+ +| qmlpreview | X | X | X | X | ++----------------------------------------------------------+ +| qmlprofiler | X | X | X | X | ++----------------------------------------------------------+ +| qmlscene | X | X | X | X | ++----------------------------------------------------------+ +| qmltestrunner | X | X | X | X | ++----------------------------------------------------------+ +| qmltime | X | X | X | X | ++----------------------------------------------------------+ +| qmlviewer | X | X | X | X | ++----------------------------------------------------------+ +| qtdiag | X | X | X | X | ++----------------------------------------------------------+ +| qtpaths | X | X | X | X | ++----------------------------------------------------------+ +| qtplugininfo | X | X | X | X | ++----------------------------------------------------------+ +| qvkgen | X | X | X | X | ++----------------------------------------------------------+ +| rcc | X | X | X | X | ++----------------------------------------------------------+ +| tracegen | X | X | X | X | ++----------------------------------------------------------+ +| uic | X | X | X | X | ++----------------------------------------------------------+ +| windeployqt | X | X | X | X | ++----------------------------------------------------------+ +| Target toolchains | | | X | X | ++----------------------------------------------------------+ +| Qt Debugging Bridge Host Tools | | | X | X | ++----------------------------------------------------------+ +| qtconfig-gui | | | X | X | ++----------------------------------------------------------+ +| Qt Emulator | | | X | X | ++----------------------------------------------------------+ +| Qt Creator VxWorks plugin | | | X | X | ++----------------------------------------------------------+ +| Qt Creator plugin for Qt | | | | X | +| Application Manager | | | | | ++----------------------------------------------------------+ +| qmlinterfacegenerator | | | | X | ++----------------------------------------------------------+ +| qmltocpp | | | | X | ++----------------------------------------------------------+ +| qulfontcompiler | | | | X | ++----------------------------------------------------------+ +| Qt Deployment Server | | | | X | ++----------------------------------------------------------+ + + +Rights for Application and Device use cases + +Following table summarizes the rights afforded by different products of the +Licensed Software to create and distribute Applications and Devices as defined +in this Agreement (X marks for rights): + ++---------------------------------------------------------------+ +| | Applications | Devices | ++---------------------------------------------------------------+ +| ADP | X | | ++---------------------------------------------------------------+ +| ADE | X | | ++---------------------------------------------------------------+ +| DCP | X | X | ++---------------------------------------------------------------+ +| DCE | X | X | ++---------------------------------------------------------------+ + +Licensed Software: Designer tools and modules + +The modules and/or tools that are included in the respective product - Qt for +Design Studio Professional (DSP), Qt for Design Studio Enterprise (DSE) - are +marked with "X" in the below table. + +Designer tools provides no Redistributables. + ++---------------------------------------------+ +| | DSP | DSE | ++---------------------------------------------+ +| Qt Design Studio | X | X | ++---------------------------------------------+ +| Qt Design Bridges | | X | ++---------------------------------------------+ +| QML Live on host | X | X | ++---------------------------------------------+ +| QML Live on target | | X | ++---------------------------------------------+ +| Variant Management | | X | ++---------------------------------------------+ +| Shader creation tools | | X | ++---------------------------------------------+ +| Profiling tools | | X | ++---------------------------------------------+ +| Simulink support | | X | ++---------------------------------------------+ + + +Both DSP and DSE can be used to create an user interface for use cases covered +by ADP, ADE, DCP and DCE. + +Licensed Software: QA Tools + +The modules and/or tools that are included in the respective QA Tools product +- Squish (both Tester and execution Licenses), Coco or Test Center - are marked +with "X" in the below table. Optional features that will need additional +licenses are marked with "O". QA Tools include no Redistributables. + ++---------------------------------------------------------------------+ +| | Squish | Coco | Test Center | ++---------------------------------------------------------------------+ +| Squish IDE | X | | | ++---------------------------------------------------------------------+ +| QA Tool-specific command line tools | X | X | X | ++---------------------------------------------------------------------+ +| Coverage Browser | | X | | ++---------------------------------------------------------------------+ +| HTML interface | | | X | ++---------------------------------------------------------------------+ +| Qt Support Module | X | | | ++---------------------------------------------------------------------+ +| Java support module | X | | | ++---------------------------------------------------------------------+ +| Windows support module | X | | | ++---------------------------------------------------------------------+ +| iOS support module | X | | | ++---------------------------------------------------------------------+ +| Android support module | X | | | ++---------------------------------------------------------------------+ +| Web support module | X | | | ++---------------------------------------------------------------------+ +| macOS support module | X | | | ++---------------------------------------------------------------------+ +| VNC support module | X | | | ++---------------------------------------------------------------------+ +| MCU support module | X | | | ++---------------------------------------------------------------------+ +| C and C++ language module | | X | | ++---------------------------------------------------------------------+ +| C# language module | | X | | ++---------------------------------------------------------------------+ +| QML language module | | X | | ++---------------------------------------------------------------------+ +| Tester Cross-Compilation Add-On | O | O | | ++---------------------------------------------------------------------+ + +License capabilities for Squish + +License capabilities that are included in the Squish Tester and Execution +Licenses are marked with "X" in the below table. + ++-----------------------------------------------------------------------------+ +| | Squish Tester License | Squish Execution License | ++-----------------------------------------------------------------------------+ +| Ability to create, edit, | X | | +| and debug test cas | | | ++-----------------------------------------------------------------------------+ +| Ability to execute test | X | X | +| cases | | | ++-----------------------------------------------------------------------------+ + +Install and use capabilities for QA Tools + +Install and use capabilities that are included in the respective QA Tools +products are defined in the below table. + ++-----------------------------------------------------------------------------+ +| | Squish | Squish | Coco | Test | +| | Tester | Execution | License | Center | +| | License | License | | License | ++-----------------------------------------------------------------------------+ +| Number of installation | Unlimited | Unlimited | Unlimited | One(1) | +| instances per license | | | | | ++-----------------------------------------------------------------------------+ +| Number of concurrent | Limited by| Limited by | Limited by | Limited by | +| users | number of | number of | number of | number of | +| | Squish | Squish | Coco | Test Center | +| | Tester | Execution | Tester | Licenses | +| | Licenses | Licenses | Licenses | | ++-----------------------------------------------------------------------------+ -All the above Redistributables are subject to applicable provisions and -limitations including but not limited to what is defined in section 3 of the -Agreement. +APPENDIX 2: PRICING + +Separate template + +APPENDIX 3: ADD-ON PRODUCTS TO LICENSED SOFTWARE + +Intentionally left blank. APPENDIX 4: SMALL BUSINESS AND STARTUP The provisions of this Appendix 4 are applicable for companies with an annual -revenue, including funding, equivalent to maximum of 250,000 USD (in -applicable currency) during the latest full calendar year, as evidenced by -duly audited records of the Licensee and approved by The Qt Company -("Start-up Company"). +revenue, including funding, equivalent to maximum of 250,000 USD (in applicable +currency) during the latest full calendar year, as evidenced by duly audited +records of the Licensee and approved by The Qt Company ("Start-up Company"). Start-up Companies are qualified for a discounted License Fee for maximum of -four (4) Development Licenses ("Start-up Development License") unless -otherwise agreed between the parties. +four (4) Development Licenses ("Start-up Development License") unless otherwise +agreed between the parties. Start-up Development License entitles the respective Designated User for -Support only for installation related issues. +Support only for Install Support as defined in Appendix 9, Support Terms. + +Upon expiry of the respective Development License Term, the Start-up +Development Licenses shall be automatically extended, pursuant to Section 3.1 +of the Agreement, for a Renewal Term either as new Start-up Development +Licenses (if the Licensee still qualifies as a Start-up Company), or as normal +then standard list price Development Licenses (if the Licensee no longer +qualifies as a Start-up Company). + +APPENDIX 5: NON-COMMERCIAL AND EDUCATIONAL USE -Upon expiry of the respective License Term, the Start-up Development -Licenses shall be automatically extended, pursuant to Section 3.1 of the -Agreement, for a Renewal Term either as new Start-up Development Licenses -(if the Licensee still qualifies as a Start-up Company), or as normal -Development Licenses (if the Licensee no longer qualifies as a Start-up -ompany). - -APPENDIX 5: NON-COMMERCIAL USE -The provisions of this Appendix 5 are applicable for non-commercial use of -the Licensed Software by the Licensee. +The provisions of this Appendix 5 are applicable for non-commercial use of the +Licensed Software by the Licensee. For the purpose of this Appendix 5, the following additional definitions -(replacing the relevant definition of the Agreement, where applicable) -shall be applicable: +(replacing the relevant definition of the Agreement, where applicable) shall be +applicable: "Demo Units" shall mean (i) hardware development platform, which incorporates -the Licensed Software along with Licensee's software and/or hardware, and -(ii) prototype versions of Applications or Devices. +the Licensed Software along with Licensee's software and/or hardware, and (ii) +prototype versions of Applications or Devices. "Designated User(s)" shall mean the employees and students of the Licensee. "Licensee Products" shall mean Applications and/or Devices. -"Permitted Purpose" shall mean (i) Licensee's internal evaluation and -testing of Licensed Software, (ii) building Demo Units as well as (iii) -educational use. - -"Term" shall mean a period of twelve (12) months or any such other period -as may be agreed between the Parties. - -For the purpose of this Appendix 5, the following changes shall be agreed -with respect to relevant Sections of the Agreement: - - I. Recital (A) shall be replaced in its entirety to read as follows: - "(A) Licensee wishes to use the Licensed Software for the Permitted - Purpose." - II. Section 3.1 shall be replaced in its entirety to read as follows: +"Permitted Purpose" shall mean (i) Licensee's internal evaluation and testing +of Licensed Software, (ii) building Demo Units as well as (iii) educational +use. + +"Agreement Term" shall mean a period of twelve (12) months or any such other +period as may be agreed between the Parties. + +For the purpose of this Appendix 5, the following changes shall be agreed with +respect to relevant Sections of the Agreement: + I. Recital (A) shall be replaced in its entirety to read as follows: + "(A) Licensee wishes to use the Licensed Software for the Permitted + Purpose." + II. Section 3.1 shall be replaced in its entirety to read as follows: "The Qt Company grants to Licensee a personal, non-exclusive, non-transferable, revocable, royalty-free license, valid for the - Term, to use, modify and copy the Licensed Software solely for the - Permitted Purpose. - Licensee may install copies of the Licensed Software on five (5) - computers per Designated User, provided that only the Designated - Users who have a valid Development License may use the Licensed - Software. - Licensee may demonstrate the Demo Units, provided that such - demonstrations must be conducted by Licensee, and the Demo Units - must remain in Licensee's possession and under Licensee's control + Agreement Term, to use, modify and copy the Licensed Software solely + for the Permitted Purpose. Licensee may install copies of the Licensed + Software on five (5) computers per Designated User, provided that only + the Designated Users who have a valid Development License may use the + Licensed Software. Licensee may demonstrate the Demo Units, provided + that such demonstrations must be conducted by Licensee, and the Demo + Units must remain in Licensee's possession and under Licensee's control at all times. For clarity, this Agreement does not (i) entitle Licensee to use Licensed Software to create Applications or Devices (other than - prototypes thereof) or (ii) carry any distribution rights to - Licensee, but such rights are subject to and conditional upon - conclusion of a separate license agreement with The Qt Company." - III. Sections 3.2, 3.3, 8 and 10 shall be deleted. - IV. Section 3.4 shall be replaced in its entirety to read as follows: + prototypes thereof) or (ii) carry any distribution rights to Licensee, + but such rights are subject to and conditional upon conclusion of a + separate license agreement with The Qt Company." + III. Sections 3.2, 3.3, 3.5, 3.6, 8 and 10 shall be deleted. + IV. Section 3.4 shall be replaced in its entirety to read as follows: "Licensee shall not: - - remove or alter any copyright, trademark or other proprietary - rights notice contained in any portion of the Licensed Software; - - transfer, publish, sublicense, disclose, display or otherwise - make the Licensed Software available to any third party (except - that Licensee may demonstrate the Demo Units pursuant to Section - 3.1); - - in any way combine, incorporate or integrate Licensed Software - with, or use Licensed Software for creation of, any software - created with or incorporating Open Source Qt; - - Licensee shall cause all Designated Users who make use of the - licenses granted under this Agreement, to be contractually bound - to comply with the relevant terms of this Agreement and not to use - the Licensed Software beyond the terms hereof. Licensee shall be - responsible for any and all actions and omissions of its - Designated Users relating to the Licensed Software and use - thereof. - - Any use of Licensed Software beyond the provisions of this - Agreement is strictly prohibited and requires an additional license - from The Qt Company." - V. Section 12 shall be replaced in its entirety to read as follows: - "This Agreement shall enter into force upon due acceptance by both - Parties and remain in force for the Term, unless and until - terminated pursuant to the terms of Section 12. - - Upon termination of the Agreement, Licensee shall cease using the - Licensed Software. All other copies of Licensed Software in the - possession or control of Licensee must be erased or destroyed. - An officer of Licensee must, upon request, promptly deliver to - The Qt Company a written confirmation that this has occurred." + - remove or alter any copyright, trademark or other proprietary rights + notice contained in any portion of the Licensed Software; + - transfer, publish, sublicense, disclose, display or otherwise make + the Licensed Software available to any third party (except that + Licensee may demonstrate the Demo Units pursuant to Section 3.1); + - in any way combine, incorporate or integrate Licensed Software with, + or use Licensed Software for creation of, any software created with + or incorporating Open Source Qt; Licensee shall cause all Designated + Users who make use of the licenses granted under this Agreement, to + be contractually bound to comply with the relevant terms of this + Agreement and not to use the Licensed Software beyond the terms + hereof. Licensee shall be responsible for any and all actions and + omissions of its Designated Users relating to the Licensed Software + and use thereof. Any use of Licensed Software beyond the provisions + of this Agreement is strictly prohibited and requires an additional + license from The Qt Company." + V. Section 12 shall be replaced in its entirety to read as follows: + "This Agreement shall enter into force upon due acceptance by both + Parties and remain in force for the Agreement Term, unless and until + terminated pursuant to the terms of Section 12. + Upon termination of the Agreement, Licensee shall cease using the + Licensed Software. All other copies of Licensed Software in the + possession or control of Licensee must be erased or destroyed. An + officer of Licensee must, upon request, promptly deliver to The Qt + Company a written confirmation that this has occurred." + +Except for the modifications specified above, this Appendix carries no change +to the terms of the Agreement which shall remain in full force. + +APPENDIX 6: LICENSE REPORTING + +Separate template + +APPENDIX 7: MARKETING RIGHTS + +This Appendix 7 has the purpose to grant visibility through The Qt Company +marketing channels of the usage of Qt and related product and service in +Licensee product. Following related marketing right are agreed between the Qt +Company and the Licensee. + +1. LICENSEE NAME AND LICENSEE LOGO + +The Qt Company has the right to use Licensee name and Licensee logo in public +channel, in respect of the value proposition that the Qt company provided to +the Licensee. + +2. MARKETING CONTENT COOPERATION + +2.1. LICENSEE CASES + +The Licensee is open to collaborate on content creation for marketing and +communication purpose. The Licensee will nominate one responsible that will be +in charge to support The Qt company with this content creation, according to +content format paragraph, answering technical questions or sharing professional +picture or video of required content. The Qt Company will have the right to +advertise this in Content Format and Channel as mentioned in paragraph 3 and 4. + +2.2. FINAL PRODUCT REFERRAL + +Licensee agree that The Qt Company could connect their software product and +services with the Licensee device or application, that the Licensee has created +using The Qt Company technology and competence. Licensee will provide high +quality picture, and video of the created final product where the Qt technology +is running into. The Qt Company will have the right to advertise this in +Content Format and Channel as mentioned in paragraph 3 and 4. + +3. CONTENT FORMAT + +- Video +- Written Licensee case +- Press release +- Social media posts +- Emails +- Event booth Graphics +- Printed material + +4. CHANNELS + +- Social media +- The Qt Company resource center and website +- Email to the Qt company contact database +- Events +- Online webinars +- Public speech +- Public presentations + +APPENDIX 8: INTENTIONALLY LEFT BLANK + +APPENDIX 9: SUPPORT TERMS + +These Qt support terms and conditions ("Support Terms") set forth the legal +framework, where under The Qt Company ("The Qt Company") provides support +services (as herein defined) to the Licensee. + +1 DEFINITIONS -Except for the modifications specified above, this Appendix carries no -change to the terms of the Agreement which shall remain in full force. +"Application Code" shall mean a computer software program written strictly +using the Qt programming language, by or for the Licensee, with a user +interface, enabling the Licensee or their users to accomplish a specific task +and display any results of the task on the display monitor or screen. + +"Dedicated Contact" shall mean the employee of The Qt Company who will be the +first point of contact for all Designated Users' requests for Support. + +"Errors" shall mean an error, flaw, mistake, failure, or fault in Licensed +Software that prevents it from behaving as described in the relevant +documentation or as agreed between the Parties. + +"Extended Support" shall mean a continuation to the normal Support period, +which allows Designated Users to receive selected Support (Standard Support or +Premium Support) for a version of Licensed Software that is no longer generally +supported by The Qt Company. + +"Install Support" shall mean Support that is limited to installation related +Error(s) on Development Platforms specified as supported host platforms for +each Qt release under doc.qt.io. + +"Maintenance Release" shall mean a release or version of Licensed Software +containing bug fixes, error corrections and other changes targeted to +maintaining and improving product stability and quality. Maintenance Releases +are generally depicted as a change to the third digit of Licensed Software +version number. + +"Platforms" shall mean both Development Platforms and Deployment Platforms. +Supported host and target Platforms may vary from for each Qt release as +defined under doc.qt.io. + +"Premium Support" shall mean an upgraded level of Support that The Qt Company +provides pursuant to these Support Terms to Licensee if Licensee has purchased +Premium Support instead of Standard Support. Premium Support shall always be +purchased for all Designated User(s) in the respective development team of the +Licensee. + +"Response Time" shall mean the period of time from when Licensee notifies +TheQt Company about an Error or requests Support until The Qt Company provides +Licensee with a response that addresses (but not necessarily resolves) the +reported Error or provides the requested Support. + +"Standard Support" shall mean standard level of Support that The Qt Company +provides pursuant to these Support Terms to Licensee. + +"Support" shall mean developer assistance that is provided by The Qt Company +to assist eligible Designated Users in Licensed Software installation, usage +and functionality problem resolution for Error(s) and Error workarounds +pursuant to the terms of these Support Terms. Support for different products is +available as specified in the below table ("X" marking the Support that is +included in the license price, optional Add-on Support services are marked as +"O"): + ++-----------------------------------------------------------------------+ +| |ADP|ADE|DCP|DCE|DSP|DSE|Squish|Coco|Test Center| ++-----------------------------------------------------------------------+ +| Install Support | X | X | X | X | X | X | X | X | X | ++-----------------------------------------------------------------------+ +| Standard Support | | X | X | X | X | X | X | X | X | ++-----------------------------------------------------------------------+ +| Premium Support | | O | O | O | O | O | O | O | O | ++-----------------------------------------------------------------------+ +| Extended Support | | O | O | O | O | O | | | | ++-----------------------------------------------------------------------+ +| Tool Qualification Kit| | | | | | | O | O | | ++-----------------------------------------------------------------------+ + +"Support Validity Term" shall mean the Development License Term or any other +fixed time period agreed between the Parties during which time the Customer is +eligible to receive Support from The Qt Company. + +"Tool Qualification Kit" shall mean a customized set of documents and +validation test cases. + +2 SUPPORT SERVICES + +2.1 Support Services Provided by The Qt Company + +Subject to these Support Terms and during the Support Validity Term, The Qt +Company will via its web-based support user-interface, provide Designated +User(s) with Support for the Platforms which Customer has licensed under the +Agreement. +The Qt Company will make commercially reasonable efforts to solve any Errors +reported by Designated User(s). Resolution of an Error may be provided through +Designated User(s) themselves downloading of a later released version of the +applicable Licensed Software product(s) or providing the Designated User with a +temporary workaround addressing such Error. + +2.2 Licensee's Obligations + +To report an Error, the Designated User shall register the Error on The Qt +Company's web-based support user interface located at: +https://account.qt.io/login or at another location designated by The Qt Company. + +The Designated User must provide adequate information and documentation to The +Qt Company to enable it to recreate the Error or problem for which the +Designated User has sought assistance. +To ensure efficient handling of Errors, the Designated User must provide the +following information, where relevant: +- A clear, detailed description of the problem, question or suggestion; +- Identification of which Licensed Software product and version is affected; +- Identification of the operating environment (e.g. operating system, hardware + Platform, build tools, etc.) on which the problem exists; +- On Standard Support: A complete and compilable test case of not more than 500 + lines of code that demonstrates the problem; +- On Premium Support: A complete and compilable test case that demonstrates the + problem or access to Application Code source codes. + +Additional relevant content, such as screenshots, etc. +Additional content should be included as attachments. The preferred image +formats are JPEG and PNG. Compressed content should be included in zip or +tar.gz archives. Executable content and documents in platform specific formats +such as Microsoft Office' are not accepted. + +In order for The Qt Company to provide prompt handling of Errors, the +Designated User shall promptly respond to any requests from The Qt Company for +additional information. + +2.3 Support Limitations + +General limitations: + +Each version or release of the Licensed Software will be Supported under +Standard Support or Premium Support only for limited time period as set forth +in doc.qt.io. For example, regular releases of Qt Software are supported for +one (1) year from the release date of the version x.y.0 and Long Term Support +(LTS) Releases are supported for a period of three (3) years from the release +date of the LTS version x.y.0. + +The Qt Company shall only provide Support for Designated User(s). + +Support is made available for the entire development teams only: It is not +allowed to purchase Support only for some members of the development team, and +all Designated Users of the respective development team must be eligible for +the same level of Support. + +Support is not provided for snapshots, preview releases, beta releases or +release candidates. + +The Qt Company shall have no obligation to provide Support for hardware or +operating system specific problems or problems arising from improper use, +accident, neglect or modification of Qt. + +Limitations with Install Support: + +Support limited to Error(s) regarding installation and setting up of the Qt +development environment on host Platforms. + +Limitations with Standard Support: + +The Qt Company shall not provide Support for third-party software or problems +caused by third-party software even if such third-party software is distributed +together with Licensed Software product(s). + +The Qt Company shall only provide Support for Error(s) that are reported on and +can be reproduced on Platforms that are officially supported for the release of +the Licensed Software. + +Limitations with Premium support: + +The Qt Company shall not provide Support for third-party software or problems +caused by third-party software. However, if such third-party software is +distributed together with Licensed Software, The Qt Company will make +commercially reasonable efforts to solve such problems. + +The Qt Company shall only provide Support for Error(s) that can be reproduced +on Platforms that are officially supported for the release of the Licensed +Software. If the Error is on a Platform that is not supported, The Qt Company +will make commercially reasonable efforts to provide a solution on closest +corresponding supported Platform. + +Premium Support is optional and purchased for an agreed bucket of hours +("Bucket"). Hours can be used by any Designated User in the respective +development team. To encourage continuous usage of the Support, ten percent +(10%) of the purchased Bucket shall automatically expire (regardless of whether +such support hours are actually used or not by the Licensee) each month after +three (3) months from the purchase of the Premium Support. + +2.4 Extended Support + +Extended Support extends the Support Validity Term for a release of Licensed +Software that is no longer generally supported. + +Extended Support includes and is by default provided with Standard Support +rules and limitations, unless Extended Support is purchased with Premium +Support in which case Premium Support rules and limitations will apply. + +Extended Support is optional and purchased with annual fee and separately per +each Licensee product. Extended Support will need definition of (i) Licensee +product, (ii) used Platform(s) and (iii) Licensed Software version(s). + +2.5 Tool Qualification Kit + +The Qt Company shall provide set of customized documents and validation tests +that enable Licensee to qualify QA testing tool for the purpose of ISO 26262, +EN 50128, DO-330, IEC 61508, IEC 62304 or IEC 13485 certification Licensee end +to end solution. + +3 RESPONSE TIME + +In performing Support, The Qt Company shall commit to following, non-binding, +Response Times: + +Standard Support: Errors and Support requests will have a Response Time not to +exceed two (2) business days. + +Premium Support: Errors and Support requests will have a Response Time not to +exceed one (1) business day. + +For complex issues, The Qt Company may provide an initial response to the +Designated User and then follow up, without undue delay, with additional +communication before an Error is properly addressed or Support provided. + +4 ADDITIONAL SERVICES IN PREMIUM SUPPORT + +The Designated User(s) will be assigned a Dedicated Contact to handle requests +for Support. Dedicated Contact is subject to change in cases such as sick +leave, vacation and other similar reasons. + +The Designated User(s) can on request ask The Qt Company to access their +computer remotely in order to resolve problems directly. + +The Designated User(s) can request a session via Instant Messaging or phone +call in the support request to The Qt Company. + +Premium Support can assist Licensee in implementing new features, bug fixes +and accessing patches in Licensed Software or Application Code. + +All Support requests will be handled with high priority. + +5 MAINTENANCE RELEASES, UPDATES AND UPGRADES + +Under the Support the Customer is eligible for Maintenance Releases and Updates +that The Qt Company generally makes available to customers who has purchased +Support. Unless otherwise decided by The Company at its free and absolute +discretion, Upgrades will not be provided under the Support. + +The primary focus of Maintenance Releases is product quality. Therefore, each +Maintenance Release typically includes the following types of changes to the +previous version of Licensed Software: +- Bug fixes caused by changes to previously working code; +- Fixes related to build issues on supported Platforms; +- Error corrections specific to a single Platform that are not present on other + Platforms; +- Critical Error corrections such as crashes, data corruption, loss of data, + race conditions; and +- Updates to documentation and license information when deemed necessary by + The Qt Company. + +The primary focus of Updates is introducing new features to Licensed Software +and covering new platforms. Therefore, each Updates typically includes the +following types of changes to the previous version of Licensed Software: +- New platform support; +- New toolchain support; +- New features and Qt modules; + +6 WARRANTY DISCLAIMER + +The Qt Company makes no warranties that the Support provided will be successful +in resolving any difficulties or problems or in diagnosing faults reported by +Licensee. Support is provided to Licensee on an "as is" basis. To the maximum +extent permitted by applicable law, The Qt Company disclaims all warranties and +conditions, either express or implied, including, but not limited to, implied +warranties of merchantability and fitness for a particular purpose for the +Support provided by The Qt Company to Licensee. + +APPENDIX 10: CONVERSION TO SUBSCRIPTION + +Subject to the terms of this Appendix Licensee's current development licenses +("Current Licenses") for commercial version of Qt Software and the license +agreements governing such Current Licenses ("Existing Agreements") are being +replaced by this Agreement and subscription based Development Licenses +governed hereunder, as further specified below. + ++---------------------------------------------------------------------------+ +| Existing Agreement(s) | <Trolltech, Nokia, Digia, The Qt Company> and | +| signing parties, version | <Licensee> <Version of the Agreement, e.g. 2,0,| +| and date of signatures | 3.2 or 4.1> <Date of the agreement signatures> | +| thereof | | ++---------------------------------------------------------------------------+ + +Parties hereby agree on conversion of Current Licenses listed in attached +Exhibit A to the subscription licenses listed in attached Exhibit B for use +through License Term. As of the date hereof, + +i. Licensee's Current Licenses as listed in Exhibit A shall terminate and be +replaced with the Subscription licenses listed in Exhibit B and; +ii. Existing Agreements are terminated. + +Prices for the conversion of Current Licenses are defined in Appendix 2 +Pricing or Quote. + +Notwithstanding anything in this Appendix to the contrary, and in addition to +any payments due pursuant to this Appendix, Licensee remains fully obligated to +fulfill any and all outstanding payment obligations to The Qt Company under any +applicable Existing Agreements. For the avoidance of doubt, if any payments +remain outstanding on the Current Licenses under the applicable terms Licensee +will continue to make such payments in accordance with the applicable order +documentation, notwithstanding the fact that the Current Licenses are being +converted to Development Licenses pursuant to this Appendix. diff -Nru qtbase-opensource-src-5.15.3+dfsg/.QT-FOR-APPLICATION-DEVELOPMENT-LICENSE-AGREEMENT qtbase-opensource-src-5.15.8+dfsg/.QT-FOR-APPLICATION-DEVELOPMENT-LICENSE-AGREEMENT --- qtbase-opensource-src-5.15.3+dfsg/.QT-FOR-APPLICATION-DEVELOPMENT-LICENSE-AGREEMENT 2021-03-30 02:27:15.450110200 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/.QT-FOR-APPLICATION-DEVELOPMENT-LICENSE-AGREEMENT 1970-01-01 08:00:00.000000000 +0800 @@ -1,1315 +0,0 @@ -QT LICENSE AGREEMENT -Agreement version 4.3 - -This Qt License Agreement ("Agreement") is a legal agreement for the licensing -of Licensed Software (as defined below) between The Qt Company (as defined -below) and the Licensee who has accepted the terms of this Agreement by -downloading or using the Licensed Software and/or as defined herein: - -Capitalized terms used herein are defined in Section 1. - -WHEREAS: - (A) Licensee wishes to use the Licensed Software for the purpose of - developing and distributing Applications and/or Devices (each as - defined below); and - (B) The Qt Company is willing to grant the Licensee a right to use - Licensed Software for such a purpose pursuant to term and conditions - of this Agreement. - -NOW, THEREFORE, THE PARTIES HEREBY AGREE AS FOLLOWS: - -1. DEFINITIONS - -"Affiliate" of a Party shall mean an entity (i) which is directly -or indirectly controlling such Party; (ii) which is under the same direct or -indirect ownership or control as such Party; or (iii) which is directly or -indirectly owned or controlled by such Party. For these purposes, an entity -shall be treated as being controlled by another if that other entity has fifty -percent (50 %) or more of the votes in such entity, is able to direct its -affairs and/or to control the composition of its board of directors or -equivalent body. - -"Add-on Products" shall mean The Qt Company's specific add-on software products -(for example Qt Safe Renderer, Qt for Automation, Qt Application Manager), which -are not licensed as part of The Qt Company's standard offering, but shall be -included into the scope of Licensed Software only if so specifically agreed -between the Parties. - -"Applications" shall mean Licensee's software products created using the -Licensed Software, which may include the Redistributables, or part thereof. - -"Contractor(s)" shall mean third party consultants, distributors and contractors -performing services to the Licensee under applicable contractual arrangement. - -"Customer(s)" shall mean Licensee's end users to whom Licensee, directly or -indirectly, distributes copies of the Redistributables. - -"Data Protection Legislation" shall mean the General Data Protection Regulation -(EU 2016/679) (GDPR) and any national implementing laws, regulations and -secondary legislation, as may be amended or updated from time to time, as well -as any other data protection laws or regulations applicable in relevant -territory. - -"Deployment Platforms" shall mean operating systems and/or hardware specified -in the License Certificate, on which the Redistributables can be distributed -pursuant to the terms and conditions of this Agreement. - -"Designated User(s)" shall mean the employee(s) of Licensee or Licensee's -Affiliates acting within the scope of their employment or Licensee's Contractors -acting within the scope of their services for Licensee and on behalf of -Licensee. Designated Users shall be named in the License Certificate. - -"Development License" shall mean the license needed by the Licensee for each -Designated User to use the Licensed Software under the license grant described -in Section 3.1 of this Agreement. Development Licenses are available per -respective Licensed Software products, each product having its designated scope -and purpose of use. Distribution Licenses are always connected to Qt for Device -Creation product and Qt for MCUs product only. - -"Development Platforms" shall mean those operating systems specified in the -License Certificate, in which the Licensed Software can be used under the -Development License, but not distributed in any form or used for any other purpose. - -"Devices" shall mean hardware devices or products that 1) are manufactured -and/or distributed by the Licensee or its Affiliates or Contractors, and (2)(i) -incorporate or integrate the Redistributables or parts thereof; or (ii) where -the main user interface or substantial functionality of such unit , when used by -a Customer, is provided by Application(s) or otherwise depends on the Licensed -Software, regardless of whether the Redistributables are distributed together -with the hardware or not. Devices covered with this Agreement shall be specified -in Appendix 2 or in a quote. - -"Distribution License(s)" shall mean the license required for any kind of sale, -trade, exchange, loan, lease, rental or other distribution by or on behalf of -Licensee to a third party of Redistributables in connection with Devices -ursuant to license grant described in Section 3.3 of this Agreement. - -"Distribution License Packs" shall mean set of prepaid Distribution Licenses for -distribution of Redistributables, as defined in The Qt Company's standard price -list, quote, Purchase Order confirmation or in an appendix hereto, as the case -may be. - -"Intellectual Property Rights" shall mean patents (including utility models), -design patents, and designs (whether or not capable of registration), chip -topography rights and other like protection, copyrights, trademarks, service -marks, trade names, logos or other words or symbols and any other form of -statutory protection of any kind and applications for any of the foregoing as -well as any trade secrets. - -"License Certificate" shall mean a certificate generated by The Qt Company for -each Designated User respectively upon them downloading the Licensed Software, -which will be available under respective Designated User's Qt Account at -account.qt.io. License Certificates will specify the Designated User, the -Development Platforms, Deployment Platforms and the License Term. Such terms are -considered part of the licenses granted hereunder and shall be updated from time -to time to reflect any agreed changes to the foregoing terms relating to -Designated User's rights to the Licensed Software. - -"License Fee" shall mean the fee charged to the Licensee for rights granted -under the terms of this Agreement. - -"License Term" shall mean the agreed validity period of the Development License -of the respective Designated User, during which time the Designated User is -entitled to use the Licensed Software, as set forth in the respective License -Certificate. - -"Licensed Software" shall mean either - (i) Qt for Application Development or - (ii) Qt for Device Creation, and/or - (iii) Qt 3D Studio, and/or - (iv) Qt Design Studio, and/or - (v) Qt for MCUs, and/or - (vi) selected Add-on Products, if any, - -depending on which product(s) the Licensee has purchased under this Agreement, -as well as corresponding online or electronic documentation, associated media -and printed materials, including the source code (where applicable), example -programs and the documentation, licensed to the Licensee under this Agreement. -Licensed Software does not include Third Party Software (as defined in -Section 4) or Open Source Qt. The Qt Company may, in the course of its -development activities, at its free and absolute discretion and without any -obligation to send or publish any notifications to the Licensee or in general, -make changes, additions or deletions in the components and functionalities of -the Licensed Software, provided that no such changes, additions or deletions -will affect the already released version of the Licensed Software, but only -upcoming version(s). - -"Licensee" shall mean the individual or legal entity that is party to this -Agreement, as identified on the signature page hereof. - -"Licensee's Records" shall mean books and records that are likely to contain -information bearing on Licensee's compliance with this Agreement, Licensee's use -of Open Source Qt and/or the payments due to The Qt Company under this -Agreement, including, but not limited to user information, assembly logs, sales -records and distribution records. - -"Modified Software" shall have the meaning as set forth in Section 2.3. - -"Online Services" shall mean any services or access to systems made available by -The Qt Company to the Licensee over the Internet relating to the Licensed -Software or for the purpose of use by the Licensee of the Licensed Software or -Support. Use of any such Online Services is discretionary for the Licensee and -some of them may be subject to additional fees. - -"Open Source Qt" shall mean the non-commercial Qt computer software products, -licensed under the terms of the GNU Lesser General Public License, version 2.1 -or later ("LGPL") or the GNU General Public License, version 2.0 or later -("GPL"). For clarity, Open Source Qt shall not be provided nor governed under -this Agreement. - -"Party" or "Parties" shall mean Licensee and/or The Qt Company. - -"Permitted Combination" shall have the meaning as set forth in Section -3.4(viii). - -"Pre-Release Code" shall have the meaning as set forth in Section 4. - -"Prohibited Combination" shall mean any means to (i) use, combine, incorporate, -link or integrate Licensed Software with any software created with or -incorporating Open Source Qt, (ii) use Licensed Software for creation of any -software created with or incorporating Open Source Qt, or (iii) incorporate or -integrate Applications into a hardware device or product other than a Device. - -"Qt 3D Studio" shall mean The Qt Company's productized offering, which consist -of all versions of modules and tools as set forth in Appendix 1. - -"Qt Design Studio" shall mean The Qt Company's productized offering, which -consist of all versions of modules and tools as set forth in Appendix 1. - -"Qt for Application Development" shall mean The Qt Company's productized -offering, which consist of all versions of modules and tools as set forth in -Appendix 1. - -"Qt for Device Creation" shall mean The Qt Company's productized offering, -which consist of all versions of modules and tools as set forth in Appendix 1. - -"Qt for MCUs" shall mean The Qt Company's productized offering, which consist -of all versions of modules and tools as set forth in Appendix 1. - -"Redistributables" shall mean the portions of the Licensed Software set forth -in Appendix 1 that may be distributed pursuant to the terms of this Agreement -in object code form only, including any relevant documentation. Where -relevant, any reference to Licensed Software in this Agreement shall include -and refer also to Redistributables. - -"Renewal Term" shall mean an extension of previous License Term as agreed -between the Parties. - -"Submitted Modified Software" shall have the meaning as set forth in Section -2.3. - -"Support" shall mean standard developer support that is provided by The Qt -Company to assist Designated Users in using the Licensed Software in accordance -with The Qt Company's standard support terms available at -https://www.qt.io/terms-conditions/ and as further defined in Section 8 -hereunder. - -"Taxes" shall have the meaning set forth in Section 10.5. - -"Term" shall have the meaning set forth in Section 12. - -"The Qt Company" shall mean: - (i) in the event Licensee is an individual residing in the United States - or a legal entity incorporated in the United States or having its - headquarters in the United States, The Qt Company Inc., a - Delaware corporation with its office at 2350 Mission College Blvd., - Suite 1020, Santa Clara, CA 95054, USA.; or - (ii) in the event the Licensee is an individual residing outside of the - United States or a legal entity incorporated outside of the United - States or having its registered office outside of the United States, - The Qt Company Ltd., a Finnish company with its registered office - at Bertel Jungin aukio D3A, 02600 Espoo, Finland. - -"Third-Party Software" shall have the meaning set forth in Section 4. - -"Updates" shall mean a release or version of the Licensed Software containing -bug fixes, error corrections and other changes that are generally made available -to users of the Licensed Software that have contracted for Support. Updates are -generally depicted as a change to the digits following the decimal in the -Licensed Software version number. The Qt Company shall make Updates available to -the Licensee under the Support. Updates shall be considered as part of the -Licensed Software hereunder. - -"Upgrades" shall mean a release or version of the Licensed Software containing -enhancements and new features and are generally depicted as a change to the -first digit of the Licensed Software version number. In the event Upgrades are -provided to the Licensee under this Agreement, they shall be considered as part -of the Licensed Software hereunder. - -2. OWNERSHIP - -2.1. Ownership of The Qt Company -The Licensed Software is protected by copyright laws and international copyright -treaties, as well as other intellectual property laws and treaties. The Licensed -Software is licensed, not sold. - -All of The Qt Company's Intellectual Property Rights are and shall remain the -exclusive property of The Qt Company or its licensors respectively. - -2.2. Ownership of Licensee -All the Licensee's Intellectual Property Rights are and shall remain the -exclusive property of the Licensee or its licensors respectively. - -All Intellectual Property Rights to the Modified Software, Applications and Devices -shall remain with the Licensee and no rights thereto shall be granted by the -Licensee to The Qt Company under this Agreement (except as set forth in Section -2.3 below). - -2.3. Modified Software -Licensee may create bug-fixes, error corrections, patches or modifications to -the Licensed Software ("Modified Software"). Such Modified Software may break -the source or binary compatibility with the Licensed Software (including without -limitation through changing the application programming interfaces ("API") or by -adding, changing or deleting any variable, method, or class signature in the -Licensed Software and/or any inter-process protocols, services or standards in -the Licensed Software libraries). To the extent that Licensee's Modified -Software so breaks source or binary compatibility with the Licensed Software, -Licensee acknowledges that The Qt Company's ability to provide Support may be -prevented or limited and Licensee's ability to make use of Updates may be restricted. - -Licensee may, at its sole and absolute discretion, choose to submit Modified -Software to The Qt Company ("Submitted Modified Software") in connection with -Licensee's Support request, service request or otherwise. In the event Licensee -does so, then, Licensee hereby grants The Qt Company a sublicensable, -assignable, irrevocable, perpetual, worldwide, non-exclusive, royalty-free and -fully paid-up license, under all of Licensee's Intellectual Property Rights, to -reproduce, adapt, translate, modify, and prepare derivative works of, publicly -display, publicly perform, sublicense, make available and distribute such -Submitted Modified Software as The Qt Company sees fit at its free and absolute -discretion. - -3. LICENSES GRANTED - -3.1. Development with Licensed Software -Subject to the terms of this Agreement, The Qt Company grants to Licensee a -worldwide, non-exclusive, non-transferable license, valid for the License Term, -to use, modify and copy the Licensed Software by Designated Users on the -Development Platforms for the sole purposes of designing, developing, -demonstrating and testing Application(s) and/or Devices, and to provide thereto -related support and other related services to end-user Customers. Each -Application and/or Device can only include, incorporate or integrate code -generated under this Agreement by such Designated Users who are duly licensed -for the applicable Development Platform(s) and Deployment Platform(s) (i.e have -a valid license for the appropriate Licensed Software product). - -Licensee may install copies of the Licensed Software on five (5) computers per -Designated User, provided that only the Designated Users who have a valid -Development License may use the Licensed Software. - -Licensee may at any time designate another Designated User to replace a -then-current Designated User by notifying The Qt Company in writing, provided -that any Designated User may be replaced only once during any six-month period. - -Upon expiry of the initially agreed License Term, the respective License Terms -shall be automatically extended to one or more Renewal Term(s), unless and -until either Party notifies the other Party in writing, or any other method -acceptable to The Qt Company, that it does not wish to continue the License -Term, such notification to be provided to the other Party no less than thirty -(30) days before expiry of the respective License Term. - -Unless otherwise agreed between the Parties, Renewal Term shall be of equal -length with the initial License Term. - -Any such Renewal Term shall be subject to License Fees agreed between the -Parties or, if no advance agreement exists, subject to The Qt Company's standard -pricing applicable at the commencement date of any such Renewal Term. - -Any price or other term specified for a Renewal Term shall be valid only for the -specified time. - -The Qt Company may either request the Licensee to place a purchase order -corresponding to a quote by The Qt Company, or uses Licensees stored Credit -Card information in the QtAccount to automatically charge the Licensee for the -relevant Renewal Term. - -In the event Licensee does not prevent auto-renewal pursuant the above, but a -Renewal Term is nevertheless not duly ordered within 30 days from the date of -the respective notification from The Qt Company and/or the respective License -Fee paid by due date specified in The Qt Company's respective invoice, The Qt -Company shall apply a reinstatement fee equal to ten percent (10 %) of the -total value of the License Fees of the Development Licenses for the expired -term to be added to the License Fee of the respective Renewal Term. - -In the event Licensee chooses not to renew a Development License for a Renewal -Term by notifying The Qt Company thereof no less than thirty (30) days before -expiry of the respective License Term, Licensee may still reinstate such -expired Development Licenses for a Renewal Term subject to applicable renewal -Term License Fees until thirty (30) days from the expiry of the initially -agreed License Term or preceding Renewal Term. After such thirty (30) day -period a Development License shall be subject to applicable License Fees for -a new Development License and not any Renewal Term License Fees. - -3.2. Distribution of Applications -Subject to the terms of this Agreement, The Qt Company grants to Licensee -a worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to -this Agreement) right and license, valid for the Term, to - (i) distribute, by itself or through its Contractors, Redistributables as - installed, incorporated or integrated into Applications for execution - on the Deployment Platforms, and - (ii) grant sublicenses to Redistributables, as distributed hereunder, for - Customers solely for Customer's internal use and to the extent - necessary in order for the Customers to use the Applications for their - respective intended purposes. - -Right to distribute the Redistributables as part of an Application as provided -herein is not royalty-bearing but is conditional upon the Licensee not having -any unpaid License Fees for Development Licenses owed to The Qt Company at the -time of distribution of any Redistributables to Customers. - -3.3. Distribution of Devices -Subject to the terms of this Agreement, The Qt Company grants to Licensee a -worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to -this Agreement) right and license, valid for the Term, to - (i) distribute, by itself or through one or more tiers of Contractors, - Redistributables as installed, incorporated or integrated, or intended - to be installed, incorporated or integrated into Devices for execution - on the Deployment Platforms, and - (ii) grant sublicenses to Redistributables, as distributed hereunder, for - Customers solely for Customer's internal use and to the extent - necessary in order for the Customers to use the Devices for their - respective intended purposes. - -Right to distribute the Redistributables with Devices as provided herein is -conditional upon the Licensee (i) not having any unpaid License Fees for -Development Licenses owed to The Qt Company, and (ii) having purchased and paid -corresponding Distribution Licenses at the time of distribution of any -Redistributables to Customers. - -3.4. Further Requirements -The licenses granted above in this Section 3 by The Qt Company to Licensee are -conditional and subject to Licensee's compliance with the following terms: - (i) Licensee shall not remove or alter any copyright, trademark or other - proprietary rights notice(s) contained in any portion of the Licensed - Software; - (ii) Applications must add primary and substantial functionality to the - Licensed Software so as not to compete with the Licensed Software; - (iii) Applications may not pass on functionality which in any way makes it - possible for others to create software with the Licensed Software; - provided however that Licensee may use the Licensed Software's - scripting and QML ("Qt Quick") functionality solely in order to - enable scripting, themes and styles that augment the functionality - and appearance of the Application(s) without adding primary and - substantial functionality to the Application(s); - (iv) Licensee shall not use Licensed Software in any manner or for any - purpose that infringes, misappropriates or otherwise violates any - Intellectual property or right of any third party, or that violates - any applicable law; - (v) Licensee shall not use The Qt Company's or any of its suppliers' - names, logos, or trademarks to market Applications, except that - Licensee may use "Built with Qt" logo to indicate that - Application(s) was developed using the Licensed Software; - (vi) Licensee shall not distribute, sublicense or disclose source code - of Licensed Software to any third party (provided however that - Licensee may appoint employee(s) of Contractors as Designated - Users to use Licensed Software pursuant to this Agreement). Such - right may be available for the Licensee subject to a separate - software development kit ("SDK") license agreement to be concluded - with The Qt Company; - (vii) Licensee shall not grant the Customers a right to (i) make copies of - the Redistributables except when and to the extent required to use the - Applications and/or Devices for their intended purpose, (ii) modify - the Redistributables or create derivative works thereof, (iii) - decompile, disassemble or otherwise reverse engineer Redistributables, - or (iv) redistribute any copy or portion of the Redistributables to - any third party, except as part of the onward sale of the Device on - which the Redistributables are installed; - (viii) Licensee shall not and shall cause that its Affiliates or - Contractors shall not use Licensed Software in any Prohibited - Combination, unless Licensee has received an advance written - permission from The Qt Company to do so. Absent such written - permission, any and all distribution by the Licensee during the Term - of a hardware device or product a) which incorporate or integrate any - part of Licensed Software or Open Source Qt; or b) where the main - user interface or substantial functionality is provided by software - built with Licensed Software or Open Source Qt or otherwise depends - on the Licensed Software or Open Source Qt, shall be considered to be - Device distribution under this Agreement and shall be dependent on - Licensee's compliance thereof (including but not limited to - obligation to pay applicable License Fees for such distribution). - Notwithstanding what is provided above in this sub-section (viii), - Licensee is entitled to use and combine Licensed Software with any - Permitted Software; - (ix) Licensee shall cause all of its Affiliates and Contractors entitled - to make use of the licenses granted under this Agreement, to be - contractually bound to comply with the relevant terms of this - Agreement and not to use the Licensed Software beyond the terms - hereof and for any purposes other than operating within the scope - of their services for Licensee. Licensee shall be responsible for - any and all actions and omissions of its Affiliates and Contractors - relating to the Licensed Software and use thereof (including but not - limited to payment of all applicable License Fees); - (x) Except when and to the extent explicitly provided in this Section 3, - Licensee shall not transfer, publish, disclose, display or otherwise - make available the Licensed Software; and - (xi) Licensee shall not attempt or enlist a third party to conduct or - attempt to conduct any of the above. - -Above terms shall not be applicable if and to the extent they conflict with any -mandatory provisions of any applicable laws. -Any use of Licensed Software beyond the provisions of this Agreement is -strictly prohibited and requires an additional license from The Qt Company. - -4. THIRD-PARTY SOFTWARE - -The Licensed Software may provide links to third party libraries or code -(collectively "Third-Party Software") to implement various functions. -Third-Party Software does not comprise part of the Licensed Software. In some -cases, access to Third-Party Software may be included with the Licensed -Software. Such Third-Party Software will be listed in the ".../src/3rdparty" -source tree delivered with the Licensed Software or documented in the Licensed -Software, as such may be amended from time to time. Licensee acknowledges that -use or distribution of Third-Party Software is in all respects subject to -applicable license terms of applicable third-party right holders. - -5. PRE-RELEASE CODE - -The Licensed Software may contain pre-release code and functionality, or sample -code marked or otherwise stated with appropriate designation such as "Technology -Preview", "Alpha", "Beta", "Sample" etc. ("Pre-Release Code"). - -Such Pre-Release Code may be present complimentary for the Licensee, in order to -provide experimental support or information for new platforms or preliminary -versions of one or more new functionalities or for other similar reasons. The -Pre-Release Code may not be at the level of performance and compatibility of a -final, generally available, product offering. The Pre-Release Code may not -operate correctly, may contain errors and may be substantially modified by The -Qt Company prior to the first commercial product release, if any. The Qt -Company is under no obligation to make Pre-Release Code commercially available, -or provide any Support or Updates relating thereto. The Qt Company assumes no -liability whatsoever regarding any Pre-Release Code, but any use thereof is -exclusively at Licensee's own risk and expense. - -For clarity, unless Licensed Software specifies different license terms for -the respective Pre-Release Code, the Licensee is entitled to use such -pre-release code pursuant to Section 3, just like other Licensed Software, -provided however that in the event Add-on Products are included and available -as such Pre-Release Code, Licensee's right to use such Add-on Products is -nevertheless subject to and conditional upon conclusion of separate agreement -with The Qt Company. - -6. LIMITED WARRANTY AND WARRANTY DISCLAIMER - -The Qt Company hereby represents and warrants that it has the power and -authority to grant the rights and licenses granted to Licensee under this -Agreement. - -Except as set forth above, the Licensed Software is licensed to Licensee -"as is" and Licensee's exclusive remedy and The Qt Company's entire liability -for errors in the Licensed Software shall be limited, at The Qt Company's -option, to correction of the error, replacement of the Licensed Software or -return of the applicable fees paid for the defective Licensed Software for -the time period during which the License is not able to utilize the Licensed -Software under the terms of this Agreement. - -TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE QT COMPANY ON BEHALF OF -ITSELF AND ITS LICENSORS, SUPPLIERS AND AFFILIATES, DISCLAIMS ALL OTHER -WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND -NON-INFRINGEMENT WITH REGARD TO THE LICENSED SOFTWARE. THE QT COMPANY DOES -NOT WARRANT THAT THE LICENSED SOFTWARE WILL SATISFY LICENSEE'S REQUIREMENTS OR -THAT IT WILL OPERATE WITHOUT DEFECT OR ERROR OR THAT THE OPERATION THEREOF -WILL BE UNINTERRUPTED. - -7. INDEMNIFICATION AND LIMITATION OF LIABILITY - -7.1. Limitation of Liability -EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II) -BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO -EVENT SHALL EITHER PARTY BE LIABLE TO THE OTHER PARTY FOR ANY LOSS OF PROFIT, -LOSS OF DATA, LOSS OF BUSINESS OR GOODWILL OR ANY OTHER INDIRECT, SPECIAL, -CONSEQUENTIAL, INCIDENTAL OR PUNITIVE COST, DAMAGES OR EXPENSE OF ANY KIND, -HOWSOEVER ARISING UNDER OR IN CONNECTION WITH THIS AGREEMENT. - -EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II) -BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO -EVENT SHALL EITHER PARTY'S TOTAL AGGREGATE LIABILITY UNDER THIS AGREEMENT EXCEED -THE AGGREGATE LICENSE FEES PAID OR PAYABLE TO THE QT COMPANY FROM LICENSEE -DURING THE PERIOD OF TWELVE (12) MONTHS IMMEDIATELY PRECEDING THE EVENT -RESULTING IN SUCH LIABILITY. - -THE PROVISIONS OF THIS SECTION 7 ALLOCATE THE RISKS UNDER THIS AGREEMENT -BETWEEN THE QT COMPANY AND LICENSEE AND THE PARTIES HAVE RELIED UPON THE -LIMITATIONS SET FORTH HEREIN IN DETERMINING WHETHER TO ENTER INTO THIS -AGREEMENT. - -NOTWITHSTANDING ANYTHING TO THE CONTRARY IN THIS AGREEMENT, LICENSEE SHALL -ALWAYS BE LIABLE TO PAY THE APPLICABLE LICENSE FEES CORRESPONDING TO ITS ACTUAL -USE OF LICENSED SOFTWARE. - -8. SUPPORT, UPDATES AND ONLINE SERVICES - -Upon due payment of the agreed License Fees the Licensee will be eligible to -receive Support and Updates and to use the Online Services during the License -Term, provided, however, that in the event the License Term is longer than 36 -months, the initial payment includes Support for only the first 12 months, -unless the Parties specifically otherwise agree. - -Unless otherwise decided by The Company at its free and absolute discretion, -Upgrades will not be included in the Support but may be available subject to -additional fees. - -From time to time The Qt Company may change the Support terms, provided that -during the respective ongoing License Term the level of Support provided by The -Qt Company may not be reduced without the consent of the Licensee. - -Unless otherwise agreed, The Qt Company shall not be responsible for providing -any service or support to Customers. - -9. CONFIDENTIALITY - -Each Party acknowledges that during the Term of this Agreement each Party may -receive information about the other Party's business, business methods, -business plans, customers, business relations, technology, and other -information, including the terms of this Agreement, that is confidential and -of great value to the other Party, and the value of which would be -significantly reduced if disclosed to third parties ("Confidential -Information"). Accordingly, when a Party (the "Receiving Party") receives -Confidential Information from the other Party (the "Disclosing Party"), the -Receiving Party shall only disclose such information to employees and -Contractors on a need to know basis, and shall cause its employees and -employees of its Affiliates to: (i) maintain any and all Confidential -Information in confidence; (ii) not disclose the Confidential Information to -a third party without the Disclosing Party's prior written approval; and (iii) -not, directly or indirectly, use the Confidential Information for any purpose -other than for exercising its rights and fulfilling its responsibilities -pursuant to this Agreement. Each Party shall take reasonable measures to -protect the Confidential Information of the other Party, which measures shall -not be less than the measures taken by such Party to protect its own -confidential and proprietary information. - -Obligation of confidentiality shall not apply to information that (i) is or -becomes generally known to the public through no act or omission of the -Receiving Party; (ii) was in the Receiving Party's lawful possession prior -to the disclosure hereunder and was not subject to limitations on disclosure -or use; (iii) is developed independently by employees or Contractors of the -Receiving Party or other persons working for the Receiving Party who have not -had access to the Confidential Information of the Disclosing Party, as proven -by the written records of the Receiving Party; (iv) is lawfully disclosed to -the Receiving Party without restrictions, by a third party not under an -obligation of confidentiality; or (v) the Receiving Party is legally compelled -to disclose, in which case the Receiving Party shall notify the Disclosing -Party of such compelled disclosure and assert the privileged and confidential -nature of the information and cooperate fully with the Disclosing Party to -limit the scope of disclosure and the dissemination of disclosed Confidential -Information to the minimum extent necessary. - -The obligations under this Section 9 shall continue to remain in force for a -period of five (5) years after the last disclosure, and, with respect to trade -secrets, for so long as such trade secrets are protected under applicable -trade secret laws. - -10. FEES, DELIVERY AND PAYMENT - -10.1. License Fees -License Fees are described in The Qt Company's standard price list, quote or -Purchase Order confirmation or in an appendix hereto, as the case may be. - -The License Fees shall not be refunded or claimed as a credit in any event or -for any reason whatsoever. - -10.2. Ordering Licenses -Licensee may purchase Development Licenses and Distribution Licenses pursuant -to agreed pricing terms or, if no specific pricing terms have been agreed -upon, at The Qt Company's standard pricing terms applicable at the time of -purchase. Unless specifically otherwise provided, any pricing terms -referenced in this Agreement shall be valid for twelve (12) months from the -date of this Agreement. - -Licensee shall submit all purchase orders for Development Licenses and -Distribution Licenses to The Qt Company by email or any other method -acceptable to The Qt Company (each such order is referred to herein as a -"Purchase Order") for confirmation, whereupon the Purchase Order shall -become binding between the Parties. - -10.3. Distribution License Packs -Unless otherwise agreed, Distribution Licenses shall be purchased by way of -Distribution License Packs. - -Upon due payment of the ordered Distribution License Pack(s), the Licensee -will have an account of Distribution Licenses available for distributing -the Redistributables in accordance with this Agreement. - -Each time Licensee distributes a copy of Redistributables, then one -Distribution License is used, and Licensee's account of available -Distribution Licenses is decreased accordingly. - -Licensee may distribute copies of the Redistributables so long as Licensee -has Distribution Licenses remaining on its account. - -10.4. Payment Terms -License Fees and any other charges under this Agreement shall be paid by -Licensee no later than thirty (30) days from the date of the applicable -invoice from The Qt Company. - -The Qt Company will submit an invoice to Licensee after the date of this -Agreement and/or after The Qt Company receives a Purchase Order from Licensee. - -A late payment charge of the lower of (a) one percent per month; or (b) the -interest rate stipulated by applicable law, shall be charged on any unpaid -balances that remain past due. - -10.5. Taxes -All License Fees and other charges payable hereunder are gross amounts but -exclusive of any value added tax, use tax, sales tax, withholding tax and -other taxes, duties or tariffs ("Taxes") levied directly for the sale, -delivery or use of Licensed Software hereunder pursuant to any applicable -law. Such applicable Taxes shall be paid by Licensee to The Qt Company, or, -where applicable, in lieu of payment of such Taxes to The Qt Company, -Licensee shall provide an exemption certificate to The Qt Company and any -applicable authority. - -11. RECORD-KEEPING AND REPORTING OBLIGATIONS; AUDIT RIGHTS - -11.1. Licensee's Record-keeping -Licensee shall at all times during the Term of this Agreement and for a -period of seven (7) years thereafter maintain Licensee's Records in an -accurate and up-to-date form. Licensee's Records shall be adequate to -reasonably enable The Qt Company to determine Licensee's compliance with -the provisions of this Agreement. The records shall conform to general -good accounting practices. - -Licensee shall, within thirty (30) days from receiving The Qt Company's -request to that effect, deliver to The Qt Company a report based on -Licensee's Records, such report to contain information, in sufficient -detail, on (i) number and identity of users working with Licensed Software -or Open Source Qt, (ii) copies of Redistributables distributed by Licensee -during the most recent calendar quarter and/or any other term specified by -The Qt Company, (iii) number of undistributed copies of Redistributables -and corresponding number of unused Distribution Licenses remaining on -Licensee's account, and (iv) any other information as The Qt Company may -reasonably require from time to time. - -11.2. The Qt Company's Audit Rights -The Qt Company or an independent auditor acting on behalf of The Qt -Company's, may, upon at least five (5) business days' prior written -notice and at its expense, audit Licensee with respect to the Licensee's -use of the Licensed Software, but not more frequently than once during -each 6-month period. Such audit may be conducted by mail, electronic means -or through an in-person visit to Licensee's place of business. Any such -in-person audit shall be conducted during regular business hours at -Licensee's facilities and shall not unreasonably interfere with Licensee's -usiness activities. The Qt Company or the independent auditor acting on -behalf of The Qt Company shall be entitled to inspect Licensee's Records -and conduct necessary interviews of Licensee's relevant employees and -Contractors. All such Licensee's Records and use thereof shall be subject -to an obligation of confidentiality under this Agreement. - -If an audit reveals that Licensee is using the Licensed Software beyond -scope of the licenses Licensee has paid for, Licensee agrees to pay The Qt -Company any amounts owed for such unauthorized use within 30 days from -receipt of the corresponding invoice from The Qt Company. - -In addition, in the event the audit reveals a material violation of the -terms of this Agreement (without limitation, either (i) underpayment of -more than 10 % of License Fees or 10,000 euros (whichever is more) or -(ii) distribution of products, which include or result from Prohibited -Combination, shall be deemed a material violation for purposes of this -section), then the Licensee shall pay The Qt Company's reasonable cost of -conducting such audit. - -12. TERM AND TERMINATION -12.1. Agreement Term -This Agreement shall enter into force upon due acceptance by both -Parties and remain in force for as long as there is any Development -License(s) purchased under this Agreement in force ("Term"), unless and -until terminated pursuant to the terms of this Section 12. - -12.2. Termination and suspension of rights -Either Party shall have the right to terminate this Agreement upon thirty -(30) days prior written notice if the other Party commits a material -breach of any obligation of this Agreement and fails to remedy such breach -within such notice period. - -Instead of termination, The Qt Company shall have the right to suspend or -withhold grants of all rights to the Licensed Software hereunder, -including but not limited to the Development Licenses, Distribution -License, and Support, should Licensee fail to make payment in timely -fashion or otherwise violates or is reasonably suspected to violate its -obligations or terms of this Agreement, and where such violation or breach -is not cured within five (5) business days following The Qt Company's -written notice thereof. - -12.3. Mutual Right to Terminate -Either Party shall have the right to terminate this Agreement immediately -upon written notice in the event that the other Party becomes insolvent, -files for any form of bankruptcy, makes any assignment for the benefit of -creditors, has a receiver, administrative receiver or officer appointed -over the whole or a substantial part of its assets, ceases to conduct -business, or an act equivalent to any of the above occurs under the laws -of the jurisdiction of the other Party. - -12.4. Parties' Rights and Duties upon Termination -Upon expiry or termination of the Agreement, Licensee shall cease and -shall cause all Designated Users (including those of its Affiliates' and -Contractors') to cease using the Licensed Software and distribution of the -Redistributables under this Agreement. - -Notwithstanding the above, in the event the Agreement expires or is terminated: - (i) as a result of The Qt Company choosing not to renew the Development - License(s) as set forth in Section 3.1, and where such decision of - non-renewal is not due to any ongoing breach or alleged breach (as - reasonably determined by The Qt Company) by Licensee of the terms of this - Agreement or any applicable license terms of Open Source Qt, then all valid - licenses possessed by the Licensee at such date shall be extended to be - valid in perpetuity under the terms of this Agreement and Licensee is - entitled to purchase additional licenses as set forth in Section 10.2; or - (ii) for reason other than by The Qt Company pursuant to item (i) above - or pursuant to Section 12.2, then the Licensee is entitled, for a - period of six (6) months after the effective date of termination, - to continue distribution of Devices under the Distribution Licenses - paid but unused at such effective date of termination. - -Upon any such termination the Licensee shall destroy or return to The Qt -Company all copies of the Licensed Software and all related materials and will -certify the same to The Qt Company upon its request, provided however that -Licensee may retain and exploit such copies of the Licensed Software as it may -reasonably require in providing continued support to Customers. - -Expiry or termination of this Agreement for any reason whatsoever shall not -relieve Licensee of its obligation to pay any License Fees accrued or payable -to The Qt Company prior to the effective date of termination, and Licensee -shall immediately pay to The Qt Company all such fees upon the effective date -of termination. Termination of this Agreement shall not affect any rights of -Customers to continue use of Applications and Devices (and therein -incorporated Redistributables). - -12.5. Extension in case of bankruptcy -In the event The Qt Company is declared bankrupt under a final, -non-cancellable decision by relevant court of law, and this Agreement is not, -at the date of expiry of the Development License(s) pursuant to Section 3.1, -assigned to party, who has assumed The Qt Company's position as a legitimate -licensor of Licensed Software under this Agreement, then all valid licenses -possessed by the Licensee at such date of expiry, and which the Licensee has -not notified for expiry, shall be extended to be valid in perpetuity under the -terms of this Agreement. - -13. GOVERNING LAW AND LEGAL VENUE - -In the event this Agreement is in the name of The Qt Company Inc., a Delaware -Corporation, then: - (i) this Agreement shall be construed and interpreted in accordance with - the laws of the State of California, USA, excluding its choice of - law provisions; - (ii) the United Nations Convention on Contracts for the International - Sale of Goods will not apply to this Agreement; and - (iii) any dispute, claim or controversy arising out of or relating to this - Agreement or the breach, termination, enforcement, interpretation or - validity thereof, including the determination of the scope or - applicability of this Agreement to arbitrate, shall be determined by - arbitration in San Francisco, USA, before one arbitrator. The - arbitration shall be administered by JAMS pursuant to JAMS' - Streamlined Arbitration Rules and Procedures. Judgment on the Award - may be entered in any court having jurisdiction. This Section shall - not preclude parties from seeking provisional remedies in aid of - arbitration from a court of appropriate jurisdiction. - -In the event this Agreement is in the name of The Qt Company Ltd., a Finnish -Company, then: - (i) this Agreement shall be construed and interpreted in accordance with - the laws of Finland, excluding its choice of law provisions; - (ii) the United Nations Convention on Contracts for the International - Sale of Goods will not apply to this Agreement; and - (iii) any disputes, controversy or claim arising out of or relating to - this Agreement, or the breach, termination or validity thereof shall - be finally settled by arbitration in accordance with the Arbitration - Rules of Finland Chamber of Commerce. The arbitration tribunal shall - consist of one (1), or if either Party so requires, of three (3), - arbitrators. The award shall be final and binding and enforceable in - any court of competent jurisdiction. The arbitration shall be held - in Helsinki, Finland and the process shall be conducted in the - English language. This Section shall not preclude parties from - seeking provisional remedies in aid of arbitration from a court of - appropriate jurisdiction. - -14. GENERAL PROVISIONS - -14.1. No Assignment -Except in the case of a merger or sale of substantially all of its corporate -assets, Licensee shall not be entitled to assign or transfer all or any of -its rights, benefits and obligations under this Agreement without the prior -written consent of The Qt Company, which shall not be unreasonably withheld -or delayed. The Qt Company shall be entitled to freely assign or transfer any -of its rights, benefits or obligations under this Agreement. - -14.2. No Third-Party Representations -Licensee shall make no representations or warranties concerning the Licensed -Software on behalf of The Qt Company. Any representation or warranty Licensee -makes or purports to make on The Qt Company's behalf shall be void as to The -Qt Company. - -14.3. Surviving Sections -Any terms and conditions that by their nature or otherwise reasonably should -survive termination of this Agreement shall so be deemed to survive. Such -sections include especially the following: 1, 2, 6, 7, 9, 11, 12.4, 13 and 14. - -14.4. Entire Agreement -This Agreement, the exhibits hereto, the License Certificate and any -applicable Purchase Order accepted by The Qt Company constitute the complete -agreement between the Parties and supersedes all prior or contemporaneous -discussions, representations, and proposals, written or oral, with respect -to the subject matters discussed herein. - -In the event of any conflict or inconsistency between this Agreement and any -Purchase Order, the terms of this Agreement will prevail over the terms of -the Purchase Order with respect to such conflict or inconsistency. - -Parties specifically acknowledge and agree that this Agreement prevails -over any click-to-accept or similar agreements the Designated Users may -need to accept online upon download of the Licensed Software, as may be -required by The Qt Company's applicable processes relating to Licensed -Software. - -14.5. Modifications -No modification of this Agreement shall be effective unless contained in a -writing executed by an authorized representative of each Party. No term or -condition contained in Licensee's Purchase Order ("Deviating Terms") shall -apply unless The Qt Company has expressly agreed such Deviating Terms in -writing. Unless and to the extent expressly agreed by The Qt Company, any -such Deviating Terms shall be deemed void and with no legal effect. For -clarity, delivery of the Licensed Software following the receipt of the -Purchase Order including Deviating Terms shall not constitute acceptance of -such Deviating Terms." - -14.6. Force Majeure -Except for the payment obligations hereunder, neither Party shall be liable -to the other for any delay or non-performance of its obligations hereunder -in the event and to the extent that such delay or non-performance is due to -an event of act of God, terrorist attack or other similar unforeseeable -catastrophic event that prevents either Party for fulfilling its -obligations under this Agreement and which such Party cannot avoid or -circumvent ("Force Majeure Event"). If the Force Majeure Event results in -a delay or non-performance of a Party for a period of three (3) months or -longer, then either Party shall have the right to terminate this Agreement -with immediate effect without any liability (except for the obligations of -payment arising prior to the event of Force Majeure) towards the other -Party. - -14.7. Notices -Any notice given by one Party to the other shall be deemed properly given -and deemed received if specifically acknowledged by the receiving Party in -writing or when successfully delivered to the recipient by hand, fax, or -special courier during normal business hours on a business day to the -addresses specified for each Party on the signature page. Each -communication and document made or delivered by one Party to the other -Party pursuant to this Agreement shall be in the English language. - -14.8. Export Control -Licensee acknowledges that the Redistributables, as incorporated in -Applications or Devices, may be subject to export control restrictions -under the applicable laws of respective countries. Licensee shall fully -comply with all applicable export license restrictions and requirements -as well as with all laws and regulations relating to the Redistributables -and exercise of licenses hereunder and shall procure all necessary -governmental authorizations, including without limitation, all necessary -licenses, approvals, permissions or consents, where necessary for the -re-exportation of the Redistributables, Applications and/or Devices. - -14.9. No Implied License -There are no implied licenses or other implied rights granted under -this Agreement, and all rights, save for those expressly granted hereunder, -shall remain with The Qt Company and its licensors. In addition, no licenses -or immunities are granted to the combination of the Licensed Software with -any other software or hardware not delivered by The Qt Company under this -Agreement. - -14.10. Attorney Fees -The prevailing Party in any action to enforce this Agreement shall be -entitled to recover its attorney's fees and costs in connection with such -action. - -14.11. Privacy -Licensee acknowledges and agrees that for the purpose of this Agreement, -The Qt Company may collect, use, transfer and disclose personal data -pertaining to Designated Users as well as any other employees and directors -of the Licensee and its Contractors relevant for carrying out the intent of -this Agreement. Such personal data may be collected from the Licensee or -directly from the relevant individuals. The Parties acknowledge that with -regard to such personal data processed hereunder, The Qt Company shall be -regarded as the Data Controller under the applicable Data Protection -Legislation. The Qt Company shall process any such personal data in -accordance with its privacy policies and practices, which will comply with -all applicable requirements of the Data Protection Legislation. - -14.12. Severability -If any provision of this Agreement shall be adjudged by any court of -competent jurisdiction to be unenforceable or invalid, that provision shall -be limited or eliminated to the minimum extent necessary so that this -Agreement shall otherwise remain in full force and effect and enforceable. - -APPENDICES - -The Agreement includes Appendix 1, and possibly one or more of the -appendices 3-5, depending on the product(s) purchased by the Licensee, -what is stated in the quote or invoice, and/or what is stated in the -Licensee's License Certificate. - -APPENDIX 1 - -The modules and/or tools that are included in the respective product - Qt -for Application Development (QtAD), Qt for Device Creation (QtDC), Qt for -MCUs (QtMCU), Qt 3D Studio (Qt3DS) and Qt Design Studio (QtDS) - are -marked with 'X' in the below table. The modules and tools are ported to Qt 6 -in stages and are subject to availability. - -Parts of the product that are permitted for distribution in object-code -form only ("Redistributables") are marked with 'R' in the below table. - -+-----------------------------------------------------------------------+ -| Modules / Tools | QtAD | QtDC | QtMCU | Qt3DS | QtDS | -+-----------------------------------------------------------------------+ -| Qt Core | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt GUI | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Multimedia | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Multimedia Widgets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Network | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt PDF | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt QML | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Controls 2 | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Dialogs | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Layouts | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Test | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt SQL | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Test | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Widgets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Active Qt | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt 3D | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Android Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Bluetooth | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Canvas 3D | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Concurrent | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt D-Bus | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Gamepad | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Graphical Effects | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Help | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Image Formats | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Location | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Mac Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Network Authorization | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt NFC | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Platform Headers | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Positioning | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Print Support | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Purchasing | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt for Python | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Controls | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Widgets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt SCXML | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Sensors | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Serial Bus | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Serial Port | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Speech | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt SVG | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt UI Tools | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebChannel | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebEngine | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebSockets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebView | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Windows Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt X11 Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt XML | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt XML Patterns | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Wayland Compositor | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Charts | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Data Visualization | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Virtual Keyboard | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Boot 2 Qt stack | | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt OTA | | X, R | | | | -+-----------------------------------------------------------------------+ -| Device Utilities | | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Debugging Bridge (QDB) Daemon | | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Ultralite Controls | | | X, R | | | -+-----------------------------------------------------------------------+ -| Qt Quick Ultralite | | | X, R | | | -+-----------------------------------------------------------------------+ -| Qt Creator | X | X | X | | | -+-----------------------------------------------------------------------+ -| Qt Designer (Qt Widget Designer) | X | X | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Designer (Qt Creator | X, R | X, R | X, R | | | -| plugin) | | | | | | -+-----------------------------------------------------------------------+ -| Qt Linguist | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Qt Assistant | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Lupdate | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Lrelease | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Qmake | X | X | | | | -+-----------------------------------------------------------------------+ -| Uic | X | X | | | | -+-----------------------------------------------------------------------+ -| Rcc | X | X | | | | -+-----------------------------------------------------------------------+ -| Qlalr | X | X | | | | -+-----------------------------------------------------------------------+ -| Qdoc | X | X | | | | -+-----------------------------------------------------------------------+ -| Qmlscene | X | X | | | | -+-----------------------------------------------------------------------+ -| Qmlviewer | X | X | | | | -+-----------------------------------------------------------------------+ -| Target toolchains | | X | X | | | -+-----------------------------------------------------------------------+ -| Qt Debugging Bridge (QDB) Host | | X | | | | -| Tools | | | | | | -+-----------------------------------------------------------------------+ -| qtconfig-gui | | X | | | | -+-----------------------------------------------------------------------+ -| Qt Emulator | | X | | | | -+-----------------------------------------------------------------------+ -| Qmlinterfacegenerator | | | X | | | -+-----------------------------------------------------------------------+ -| Qmltocpp | | | X | | | -+-----------------------------------------------------------------------+ -| qulfontcompiler | | | X | | | -+-----------------------------------------------------------------------+ -| Qt53DStudioRuntime2 | | | | X, R | | -+-----------------------------------------------------------------------+ -| Qt 3D Studio | | | | X | | -+-----------------------------------------------------------------------+ -| Qt Design Studio | | | | | X | -+-----------------------------------------------------------------------+ - - -APPENDIX 3: ADDITIONS TO LICENSED SOFTWARE - -In addition to what is provided under the definition of the Licensed Software, -Parties agree that Licensed Software shall also include the Add-On Products of -The Qt Company, as mentioned in this Appendix, if included in the quote / -invoice. - -The Modules and/or Tools of the Licensed Software that are included with each -Add-On Product respectively are marked with 'X' in the below table. The modules -are ported to Qt 6 in stages and are subject to availability. - -Parts of the respective Add-On Product that are permitted for distribution in -object-code form only ("Redistributables") are marked with 'R' in the below -table. - -+------------------------------------------------------------------------------------------------+ -| | Add-On Product(s) | -| +--------------------------------------------------------------------------+ -| Modules / Tools of | Qt for | Qt | Qt | Qt | Qt | Qt | -| Licensed Software | Automation | Automotive | Safe | Application | GammaRay | Deployment | -| | / Qt M2M | Suite | Renderer | Manager | | Platform | -| | Protocols | | | | | Package | -+------------------------------------------------------------------------------------------------+ -| Qt MQTT | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt KNX | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt OPC UA | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt CoAP | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Safe Renderer | | X, R | X, R | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Application | | X, R | | X, R | | | -| Manager | | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt IVI | | X, R | | | | | -+------------------------------------------------------------------------------------------------+ -| Reference UI | | X, R | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt GENIVI Extras | | X, R | | | | | -+------------------------------------------------------------------------------------------------+ -| QML Live | | X | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Creator | | X | | | | | -| Deployment | | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Creator Plugin | | X | | X | | | -| for Qt Application Manager | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Automotive Suite | | X | | | | | -| Deployment Server | | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Design Studio | | X | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt 3D Studio | | X | | | | | -+------------------------------------------------------------------------------------------------+ -| GammaRay | | X | | | X | | -+------------------------------------------------------------------------------------------------+ -| Platform adaptations| | | | | | X | -| for specified | | | | | | -| Deployment Platforms | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt for Device | | X | | | | | -| Creation | | | | | | | -+------------------------------------------------------------------------------------------------+ - - -All the above Redistributables are subject to applicable provisions and -limitations including but not limited to what is defined in section 3 of the -Agreement. - -APPENDIX 4: SMALL BUSINESS AND STARTUP - -The provisions of this Appendix 4 are applicable for companies with an annual -revenue, including funding, equivalent to maximum of 250,000 USD (in -applicable currency) during the latest full calendar year, as evidenced by -duly audited records of the Licensee and approved by The Qt Company -("Start-up Company"). - -Start-up Companies are qualified for a discounted License Fee for maximum of -four (4) Development Licenses ("Start-up Development License") unless -otherwise agreed between the parties. - -Start-up Development License entitles the respective Designated User for -Support only for installation related issues. - -Upon expiry of the respective License Term, the Start-up Development -Licenses shall be automatically extended, pursuant to Section 3.1 of the -Agreement, for a Renewal Term either as new Start-up Development Licenses -(if the Licensee still qualifies as a Start-up Company), or as normal -Development Licenses (if the Licensee no longer qualifies as a Start-up -ompany). - -APPENDIX 5: NON-COMMERCIAL USE -The provisions of this Appendix 5 are applicable for non-commercial use of -the Licensed Software by the Licensee. - -For the purpose of this Appendix 5, the following additional definitions -(replacing the relevant definition of the Agreement, where applicable) -shall be applicable: - -"Demo Units" shall mean (i) hardware development platform, which incorporates -the Licensed Software along with Licensee's software and/or hardware, and -(ii) prototype versions of Applications or Devices. - -"Designated User(s)" shall mean the employees and students of the Licensee. - -"Licensee Products" shall mean Applications and/or Devices. - -"Permitted Purpose" shall mean (i) Licensee's internal evaluation and -testing of Licensed Software, (ii) building Demo Units as well as (iii) -educational use. - -"Term" shall mean a period of twelve (12) months or any such other period -as may be agreed between the Parties. - -For the purpose of this Appendix 5, the following changes shall be agreed -with respect to relevant Sections of the Agreement: - - I. Recital (A) shall be replaced in its entirety to read as follows: - "(A) Licensee wishes to use the Licensed Software for the Permitted - Purpose." - II. Section 3.1 shall be replaced in its entirety to read as follows: - "The Qt Company grants to Licensee a personal, non-exclusive, - non-transferable, revocable, royalty-free license, valid for the - Term, to use, modify and copy the Licensed Software solely for the - Permitted Purpose. - Licensee may install copies of the Licensed Software on five (5) - computers per Designated User, provided that only the Designated - Users who have a valid Development License may use the Licensed - Software. - Licensee may demonstrate the Demo Units, provided that such - demonstrations must be conducted by Licensee, and the Demo Units - must remain in Licensee's possession and under Licensee's control - at all times. - For clarity, this Agreement does not (i) entitle Licensee to use - Licensed Software to create Applications or Devices (other than - prototypes thereof) or (ii) carry any distribution rights to - Licensee, but such rights are subject to and conditional upon - conclusion of a separate license agreement with The Qt Company." - III. Sections 3.2, 3.3, 8 and 10 shall be deleted. - IV. Section 3.4 shall be replaced in its entirety to read as follows: - "Licensee shall not: - - remove or alter any copyright, trademark or other proprietary - rights notice contained in any portion of the Licensed Software; - - transfer, publish, sublicense, disclose, display or otherwise - make the Licensed Software available to any third party (except - that Licensee may demonstrate the Demo Units pursuant to Section - 3.1); - - in any way combine, incorporate or integrate Licensed Software - with, or use Licensed Software for creation of, any software - created with or incorporating Open Source Qt; - - Licensee shall cause all Designated Users who make use of the - licenses granted under this Agreement, to be contractually bound - to comply with the relevant terms of this Agreement and not to use - the Licensed Software beyond the terms hereof. Licensee shall be - responsible for any and all actions and omissions of its - Designated Users relating to the Licensed Software and use - thereof. - - Any use of Licensed Software beyond the provisions of this - Agreement is strictly prohibited and requires an additional license - from The Qt Company." - V. Section 12 shall be replaced in its entirety to read as follows: - "This Agreement shall enter into force upon due acceptance by both - Parties and remain in force for the Term, unless and until - terminated pursuant to the terms of Section 12. - - Upon termination of the Agreement, Licensee shall cease using the - Licensed Software. All other copies of Licensed Software in the - possession or control of Licensee must be erased or destroyed. - An officer of Licensee must, upon request, promptly deliver to - The Qt Company a written confirmation that this has occurred." - -Except for the modifications specified above, this Appendix carries no -change to the terms of the Agreement which shall remain in full force. diff -Nru qtbase-opensource-src-5.15.3+dfsg/.QT-FOR-AUTOMATION-LICENSE-AGREEMENT qtbase-opensource-src-5.15.8+dfsg/.QT-FOR-AUTOMATION-LICENSE-AGREEMENT --- qtbase-opensource-src-5.15.3+dfsg/.QT-FOR-AUTOMATION-LICENSE-AGREEMENT 2021-03-30 02:27:15.450110200 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/.QT-FOR-AUTOMATION-LICENSE-AGREEMENT 1970-01-01 08:00:00.000000000 +0800 @@ -1,1315 +0,0 @@ -QT LICENSE AGREEMENT -Agreement version 4.3 - -This Qt License Agreement ("Agreement") is a legal agreement for the licensing -of Licensed Software (as defined below) between The Qt Company (as defined -below) and the Licensee who has accepted the terms of this Agreement by -downloading or using the Licensed Software and/or as defined herein: - -Capitalized terms used herein are defined in Section 1. - -WHEREAS: - (A) Licensee wishes to use the Licensed Software for the purpose of - developing and distributing Applications and/or Devices (each as - defined below); and - (B) The Qt Company is willing to grant the Licensee a right to use - Licensed Software for such a purpose pursuant to term and conditions - of this Agreement. - -NOW, THEREFORE, THE PARTIES HEREBY AGREE AS FOLLOWS: - -1. DEFINITIONS - -"Affiliate" of a Party shall mean an entity (i) which is directly -or indirectly controlling such Party; (ii) which is under the same direct or -indirect ownership or control as such Party; or (iii) which is directly or -indirectly owned or controlled by such Party. For these purposes, an entity -shall be treated as being controlled by another if that other entity has fifty -percent (50 %) or more of the votes in such entity, is able to direct its -affairs and/or to control the composition of its board of directors or -equivalent body. - -"Add-on Products" shall mean The Qt Company's specific add-on software products -(for example Qt Safe Renderer, Qt for Automation, Qt Application Manager), which -are not licensed as part of The Qt Company's standard offering, but shall be -included into the scope of Licensed Software only if so specifically agreed -between the Parties. - -"Applications" shall mean Licensee's software products created using the -Licensed Software, which may include the Redistributables, or part thereof. - -"Contractor(s)" shall mean third party consultants, distributors and contractors -performing services to the Licensee under applicable contractual arrangement. - -"Customer(s)" shall mean Licensee's end users to whom Licensee, directly or -indirectly, distributes copies of the Redistributables. - -"Data Protection Legislation" shall mean the General Data Protection Regulation -(EU 2016/679) (GDPR) and any national implementing laws, regulations and -secondary legislation, as may be amended or updated from time to time, as well -as any other data protection laws or regulations applicable in relevant -territory. - -"Deployment Platforms" shall mean operating systems and/or hardware specified -in the License Certificate, on which the Redistributables can be distributed -pursuant to the terms and conditions of this Agreement. - -"Designated User(s)" shall mean the employee(s) of Licensee or Licensee's -Affiliates acting within the scope of their employment or Licensee's Contractors -acting within the scope of their services for Licensee and on behalf of -Licensee. Designated Users shall be named in the License Certificate. - -"Development License" shall mean the license needed by the Licensee for each -Designated User to use the Licensed Software under the license grant described -in Section 3.1 of this Agreement. Development Licenses are available per -respective Licensed Software products, each product having its designated scope -and purpose of use. Distribution Licenses are always connected to Qt for Device -Creation product and Qt for MCUs product only. - -"Development Platforms" shall mean those operating systems specified in the -License Certificate, in which the Licensed Software can be used under the -Development License, but not distributed in any form or used for any other purpose. - -"Devices" shall mean hardware devices or products that 1) are manufactured -and/or distributed by the Licensee or its Affiliates or Contractors, and (2)(i) -incorporate or integrate the Redistributables or parts thereof; or (ii) where -the main user interface or substantial functionality of such unit , when used by -a Customer, is provided by Application(s) or otherwise depends on the Licensed -Software, regardless of whether the Redistributables are distributed together -with the hardware or not. Devices covered with this Agreement shall be specified -in Appendix 2 or in a quote. - -"Distribution License(s)" shall mean the license required for any kind of sale, -trade, exchange, loan, lease, rental or other distribution by or on behalf of -Licensee to a third party of Redistributables in connection with Devices -ursuant to license grant described in Section 3.3 of this Agreement. - -"Distribution License Packs" shall mean set of prepaid Distribution Licenses for -distribution of Redistributables, as defined in The Qt Company's standard price -list, quote, Purchase Order confirmation or in an appendix hereto, as the case -may be. - -"Intellectual Property Rights" shall mean patents (including utility models), -design patents, and designs (whether or not capable of registration), chip -topography rights and other like protection, copyrights, trademarks, service -marks, trade names, logos or other words or symbols and any other form of -statutory protection of any kind and applications for any of the foregoing as -well as any trade secrets. - -"License Certificate" shall mean a certificate generated by The Qt Company for -each Designated User respectively upon them downloading the Licensed Software, -which will be available under respective Designated User's Qt Account at -account.qt.io. License Certificates will specify the Designated User, the -Development Platforms, Deployment Platforms and the License Term. Such terms are -considered part of the licenses granted hereunder and shall be updated from time -to time to reflect any agreed changes to the foregoing terms relating to -Designated User's rights to the Licensed Software. - -"License Fee" shall mean the fee charged to the Licensee for rights granted -under the terms of this Agreement. - -"License Term" shall mean the agreed validity period of the Development License -of the respective Designated User, during which time the Designated User is -entitled to use the Licensed Software, as set forth in the respective License -Certificate. - -"Licensed Software" shall mean either - (i) Qt for Application Development or - (ii) Qt for Device Creation, and/or - (iii) Qt 3D Studio, and/or - (iv) Qt Design Studio, and/or - (v) Qt for MCUs, and/or - (vi) selected Add-on Products, if any, - -depending on which product(s) the Licensee has purchased under this Agreement, -as well as corresponding online or electronic documentation, associated media -and printed materials, including the source code (where applicable), example -programs and the documentation, licensed to the Licensee under this Agreement. -Licensed Software does not include Third Party Software (as defined in -Section 4) or Open Source Qt. The Qt Company may, in the course of its -development activities, at its free and absolute discretion and without any -obligation to send or publish any notifications to the Licensee or in general, -make changes, additions or deletions in the components and functionalities of -the Licensed Software, provided that no such changes, additions or deletions -will affect the already released version of the Licensed Software, but only -upcoming version(s). - -"Licensee" shall mean the individual or legal entity that is party to this -Agreement, as identified on the signature page hereof. - -"Licensee's Records" shall mean books and records that are likely to contain -information bearing on Licensee's compliance with this Agreement, Licensee's use -of Open Source Qt and/or the payments due to The Qt Company under this -Agreement, including, but not limited to user information, assembly logs, sales -records and distribution records. - -"Modified Software" shall have the meaning as set forth in Section 2.3. - -"Online Services" shall mean any services or access to systems made available by -The Qt Company to the Licensee over the Internet relating to the Licensed -Software or for the purpose of use by the Licensee of the Licensed Software or -Support. Use of any such Online Services is discretionary for the Licensee and -some of them may be subject to additional fees. - -"Open Source Qt" shall mean the non-commercial Qt computer software products, -licensed under the terms of the GNU Lesser General Public License, version 2.1 -or later ("LGPL") or the GNU General Public License, version 2.0 or later -("GPL"). For clarity, Open Source Qt shall not be provided nor governed under -this Agreement. - -"Party" or "Parties" shall mean Licensee and/or The Qt Company. - -"Permitted Combination" shall have the meaning as set forth in Section -3.4(viii). - -"Pre-Release Code" shall have the meaning as set forth in Section 4. - -"Prohibited Combination" shall mean any means to (i) use, combine, incorporate, -link or integrate Licensed Software with any software created with or -incorporating Open Source Qt, (ii) use Licensed Software for creation of any -software created with or incorporating Open Source Qt, or (iii) incorporate or -integrate Applications into a hardware device or product other than a Device. - -"Qt 3D Studio" shall mean The Qt Company's productized offering, which consist -of all versions of modules and tools as set forth in Appendix 1. - -"Qt Design Studio" shall mean The Qt Company's productized offering, which -consist of all versions of modules and tools as set forth in Appendix 1. - -"Qt for Application Development" shall mean The Qt Company's productized -offering, which consist of all versions of modules and tools as set forth in -Appendix 1. - -"Qt for Device Creation" shall mean The Qt Company's productized offering, -which consist of all versions of modules and tools as set forth in Appendix 1. - -"Qt for MCUs" shall mean The Qt Company's productized offering, which consist -of all versions of modules and tools as set forth in Appendix 1. - -"Redistributables" shall mean the portions of the Licensed Software set forth -in Appendix 1 that may be distributed pursuant to the terms of this Agreement -in object code form only, including any relevant documentation. Where -relevant, any reference to Licensed Software in this Agreement shall include -and refer also to Redistributables. - -"Renewal Term" shall mean an extension of previous License Term as agreed -between the Parties. - -"Submitted Modified Software" shall have the meaning as set forth in Section -2.3. - -"Support" shall mean standard developer support that is provided by The Qt -Company to assist Designated Users in using the Licensed Software in accordance -with The Qt Company's standard support terms available at -https://www.qt.io/terms-conditions/ and as further defined in Section 8 -hereunder. - -"Taxes" shall have the meaning set forth in Section 10.5. - -"Term" shall have the meaning set forth in Section 12. - -"The Qt Company" shall mean: - (i) in the event Licensee is an individual residing in the United States - or a legal entity incorporated in the United States or having its - headquarters in the United States, The Qt Company Inc., a - Delaware corporation with its office at 2350 Mission College Blvd., - Suite 1020, Santa Clara, CA 95054, USA.; or - (ii) in the event the Licensee is an individual residing outside of the - United States or a legal entity incorporated outside of the United - States or having its registered office outside of the United States, - The Qt Company Ltd., a Finnish company with its registered office - at Bertel Jungin aukio D3A, 02600 Espoo, Finland. - -"Third-Party Software" shall have the meaning set forth in Section 4. - -"Updates" shall mean a release or version of the Licensed Software containing -bug fixes, error corrections and other changes that are generally made available -to users of the Licensed Software that have contracted for Support. Updates are -generally depicted as a change to the digits following the decimal in the -Licensed Software version number. The Qt Company shall make Updates available to -the Licensee under the Support. Updates shall be considered as part of the -Licensed Software hereunder. - -"Upgrades" shall mean a release or version of the Licensed Software containing -enhancements and new features and are generally depicted as a change to the -first digit of the Licensed Software version number. In the event Upgrades are -provided to the Licensee under this Agreement, they shall be considered as part -of the Licensed Software hereunder. - -2. OWNERSHIP - -2.1. Ownership of The Qt Company -The Licensed Software is protected by copyright laws and international copyright -treaties, as well as other intellectual property laws and treaties. The Licensed -Software is licensed, not sold. - -All of The Qt Company's Intellectual Property Rights are and shall remain the -exclusive property of The Qt Company or its licensors respectively. - -2.2. Ownership of Licensee -All the Licensee's Intellectual Property Rights are and shall remain the -exclusive property of the Licensee or its licensors respectively. - -All Intellectual Property Rights to the Modified Software, Applications and Devices -shall remain with the Licensee and no rights thereto shall be granted by the -Licensee to The Qt Company under this Agreement (except as set forth in Section -2.3 below). - -2.3. Modified Software -Licensee may create bug-fixes, error corrections, patches or modifications to -the Licensed Software ("Modified Software"). Such Modified Software may break -the source or binary compatibility with the Licensed Software (including without -limitation through changing the application programming interfaces ("API") or by -adding, changing or deleting any variable, method, or class signature in the -Licensed Software and/or any inter-process protocols, services or standards in -the Licensed Software libraries). To the extent that Licensee's Modified -Software so breaks source or binary compatibility with the Licensed Software, -Licensee acknowledges that The Qt Company's ability to provide Support may be -prevented or limited and Licensee's ability to make use of Updates may be restricted. - -Licensee may, at its sole and absolute discretion, choose to submit Modified -Software to The Qt Company ("Submitted Modified Software") in connection with -Licensee's Support request, service request or otherwise. In the event Licensee -does so, then, Licensee hereby grants The Qt Company a sublicensable, -assignable, irrevocable, perpetual, worldwide, non-exclusive, royalty-free and -fully paid-up license, under all of Licensee's Intellectual Property Rights, to -reproduce, adapt, translate, modify, and prepare derivative works of, publicly -display, publicly perform, sublicense, make available and distribute such -Submitted Modified Software as The Qt Company sees fit at its free and absolute -discretion. - -3. LICENSES GRANTED - -3.1. Development with Licensed Software -Subject to the terms of this Agreement, The Qt Company grants to Licensee a -worldwide, non-exclusive, non-transferable license, valid for the License Term, -to use, modify and copy the Licensed Software by Designated Users on the -Development Platforms for the sole purposes of designing, developing, -demonstrating and testing Application(s) and/or Devices, and to provide thereto -related support and other related services to end-user Customers. Each -Application and/or Device can only include, incorporate or integrate code -generated under this Agreement by such Designated Users who are duly licensed -for the applicable Development Platform(s) and Deployment Platform(s) (i.e have -a valid license for the appropriate Licensed Software product). - -Licensee may install copies of the Licensed Software on five (5) computers per -Designated User, provided that only the Designated Users who have a valid -Development License may use the Licensed Software. - -Licensee may at any time designate another Designated User to replace a -then-current Designated User by notifying The Qt Company in writing, provided -that any Designated User may be replaced only once during any six-month period. - -Upon expiry of the initially agreed License Term, the respective License Terms -shall be automatically extended to one or more Renewal Term(s), unless and -until either Party notifies the other Party in writing, or any other method -acceptable to The Qt Company, that it does not wish to continue the License -Term, such notification to be provided to the other Party no less than thirty -(30) days before expiry of the respective License Term. - -Unless otherwise agreed between the Parties, Renewal Term shall be of equal -length with the initial License Term. - -Any such Renewal Term shall be subject to License Fees agreed between the -Parties or, if no advance agreement exists, subject to The Qt Company's standard -pricing applicable at the commencement date of any such Renewal Term. - -Any price or other term specified for a Renewal Term shall be valid only for the -specified time. - -The Qt Company may either request the Licensee to place a purchase order -corresponding to a quote by The Qt Company, or uses Licensees stored Credit -Card information in the QtAccount to automatically charge the Licensee for the -relevant Renewal Term. - -In the event Licensee does not prevent auto-renewal pursuant the above, but a -Renewal Term is nevertheless not duly ordered within 30 days from the date of -the respective notification from The Qt Company and/or the respective License -Fee paid by due date specified in The Qt Company's respective invoice, The Qt -Company shall apply a reinstatement fee equal to ten percent (10 %) of the -total value of the License Fees of the Development Licenses for the expired -term to be added to the License Fee of the respective Renewal Term. - -In the event Licensee chooses not to renew a Development License for a Renewal -Term by notifying The Qt Company thereof no less than thirty (30) days before -expiry of the respective License Term, Licensee may still reinstate such -expired Development Licenses for a Renewal Term subject to applicable renewal -Term License Fees until thirty (30) days from the expiry of the initially -agreed License Term or preceding Renewal Term. After such thirty (30) day -period a Development License shall be subject to applicable License Fees for -a new Development License and not any Renewal Term License Fees. - -3.2. Distribution of Applications -Subject to the terms of this Agreement, The Qt Company grants to Licensee -a worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to -this Agreement) right and license, valid for the Term, to - (i) distribute, by itself or through its Contractors, Redistributables as - installed, incorporated or integrated into Applications for execution - on the Deployment Platforms, and - (ii) grant sublicenses to Redistributables, as distributed hereunder, for - Customers solely for Customer's internal use and to the extent - necessary in order for the Customers to use the Applications for their - respective intended purposes. - -Right to distribute the Redistributables as part of an Application as provided -herein is not royalty-bearing but is conditional upon the Licensee not having -any unpaid License Fees for Development Licenses owed to The Qt Company at the -time of distribution of any Redistributables to Customers. - -3.3. Distribution of Devices -Subject to the terms of this Agreement, The Qt Company grants to Licensee a -worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to -this Agreement) right and license, valid for the Term, to - (i) distribute, by itself or through one or more tiers of Contractors, - Redistributables as installed, incorporated or integrated, or intended - to be installed, incorporated or integrated into Devices for execution - on the Deployment Platforms, and - (ii) grant sublicenses to Redistributables, as distributed hereunder, for - Customers solely for Customer's internal use and to the extent - necessary in order for the Customers to use the Devices for their - respective intended purposes. - -Right to distribute the Redistributables with Devices as provided herein is -conditional upon the Licensee (i) not having any unpaid License Fees for -Development Licenses owed to The Qt Company, and (ii) having purchased and paid -corresponding Distribution Licenses at the time of distribution of any -Redistributables to Customers. - -3.4. Further Requirements -The licenses granted above in this Section 3 by The Qt Company to Licensee are -conditional and subject to Licensee's compliance with the following terms: - (i) Licensee shall not remove or alter any copyright, trademark or other - proprietary rights notice(s) contained in any portion of the Licensed - Software; - (ii) Applications must add primary and substantial functionality to the - Licensed Software so as not to compete with the Licensed Software; - (iii) Applications may not pass on functionality which in any way makes it - possible for others to create software with the Licensed Software; - provided however that Licensee may use the Licensed Software's - scripting and QML ("Qt Quick") functionality solely in order to - enable scripting, themes and styles that augment the functionality - and appearance of the Application(s) without adding primary and - substantial functionality to the Application(s); - (iv) Licensee shall not use Licensed Software in any manner or for any - purpose that infringes, misappropriates or otherwise violates any - Intellectual property or right of any third party, or that violates - any applicable law; - (v) Licensee shall not use The Qt Company's or any of its suppliers' - names, logos, or trademarks to market Applications, except that - Licensee may use "Built with Qt" logo to indicate that - Application(s) was developed using the Licensed Software; - (vi) Licensee shall not distribute, sublicense or disclose source code - of Licensed Software to any third party (provided however that - Licensee may appoint employee(s) of Contractors as Designated - Users to use Licensed Software pursuant to this Agreement). Such - right may be available for the Licensee subject to a separate - software development kit ("SDK") license agreement to be concluded - with The Qt Company; - (vii) Licensee shall not grant the Customers a right to (i) make copies of - the Redistributables except when and to the extent required to use the - Applications and/or Devices for their intended purpose, (ii) modify - the Redistributables or create derivative works thereof, (iii) - decompile, disassemble or otherwise reverse engineer Redistributables, - or (iv) redistribute any copy or portion of the Redistributables to - any third party, except as part of the onward sale of the Device on - which the Redistributables are installed; - (viii) Licensee shall not and shall cause that its Affiliates or - Contractors shall not use Licensed Software in any Prohibited - Combination, unless Licensee has received an advance written - permission from The Qt Company to do so. Absent such written - permission, any and all distribution by the Licensee during the Term - of a hardware device or product a) which incorporate or integrate any - part of Licensed Software or Open Source Qt; or b) where the main - user interface or substantial functionality is provided by software - built with Licensed Software or Open Source Qt or otherwise depends - on the Licensed Software or Open Source Qt, shall be considered to be - Device distribution under this Agreement and shall be dependent on - Licensee's compliance thereof (including but not limited to - obligation to pay applicable License Fees for such distribution). - Notwithstanding what is provided above in this sub-section (viii), - Licensee is entitled to use and combine Licensed Software with any - Permitted Software; - (ix) Licensee shall cause all of its Affiliates and Contractors entitled - to make use of the licenses granted under this Agreement, to be - contractually bound to comply with the relevant terms of this - Agreement and not to use the Licensed Software beyond the terms - hereof and for any purposes other than operating within the scope - of their services for Licensee. Licensee shall be responsible for - any and all actions and omissions of its Affiliates and Contractors - relating to the Licensed Software and use thereof (including but not - limited to payment of all applicable License Fees); - (x) Except when and to the extent explicitly provided in this Section 3, - Licensee shall not transfer, publish, disclose, display or otherwise - make available the Licensed Software; and - (xi) Licensee shall not attempt or enlist a third party to conduct or - attempt to conduct any of the above. - -Above terms shall not be applicable if and to the extent they conflict with any -mandatory provisions of any applicable laws. -Any use of Licensed Software beyond the provisions of this Agreement is -strictly prohibited and requires an additional license from The Qt Company. - -4. THIRD-PARTY SOFTWARE - -The Licensed Software may provide links to third party libraries or code -(collectively "Third-Party Software") to implement various functions. -Third-Party Software does not comprise part of the Licensed Software. In some -cases, access to Third-Party Software may be included with the Licensed -Software. Such Third-Party Software will be listed in the ".../src/3rdparty" -source tree delivered with the Licensed Software or documented in the Licensed -Software, as such may be amended from time to time. Licensee acknowledges that -use or distribution of Third-Party Software is in all respects subject to -applicable license terms of applicable third-party right holders. - -5. PRE-RELEASE CODE - -The Licensed Software may contain pre-release code and functionality, or sample -code marked or otherwise stated with appropriate designation such as "Technology -Preview", "Alpha", "Beta", "Sample" etc. ("Pre-Release Code"). - -Such Pre-Release Code may be present complimentary for the Licensee, in order to -provide experimental support or information for new platforms or preliminary -versions of one or more new functionalities or for other similar reasons. The -Pre-Release Code may not be at the level of performance and compatibility of a -final, generally available, product offering. The Pre-Release Code may not -operate correctly, may contain errors and may be substantially modified by The -Qt Company prior to the first commercial product release, if any. The Qt -Company is under no obligation to make Pre-Release Code commercially available, -or provide any Support or Updates relating thereto. The Qt Company assumes no -liability whatsoever regarding any Pre-Release Code, but any use thereof is -exclusively at Licensee's own risk and expense. - -For clarity, unless Licensed Software specifies different license terms for -the respective Pre-Release Code, the Licensee is entitled to use such -pre-release code pursuant to Section 3, just like other Licensed Software, -provided however that in the event Add-on Products are included and available -as such Pre-Release Code, Licensee's right to use such Add-on Products is -nevertheless subject to and conditional upon conclusion of separate agreement -with The Qt Company. - -6. LIMITED WARRANTY AND WARRANTY DISCLAIMER - -The Qt Company hereby represents and warrants that it has the power and -authority to grant the rights and licenses granted to Licensee under this -Agreement. - -Except as set forth above, the Licensed Software is licensed to Licensee -"as is" and Licensee's exclusive remedy and The Qt Company's entire liability -for errors in the Licensed Software shall be limited, at The Qt Company's -option, to correction of the error, replacement of the Licensed Software or -return of the applicable fees paid for the defective Licensed Software for -the time period during which the License is not able to utilize the Licensed -Software under the terms of this Agreement. - -TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE QT COMPANY ON BEHALF OF -ITSELF AND ITS LICENSORS, SUPPLIERS AND AFFILIATES, DISCLAIMS ALL OTHER -WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND -NON-INFRINGEMENT WITH REGARD TO THE LICENSED SOFTWARE. THE QT COMPANY DOES -NOT WARRANT THAT THE LICENSED SOFTWARE WILL SATISFY LICENSEE'S REQUIREMENTS OR -THAT IT WILL OPERATE WITHOUT DEFECT OR ERROR OR THAT THE OPERATION THEREOF -WILL BE UNINTERRUPTED. - -7. INDEMNIFICATION AND LIMITATION OF LIABILITY - -7.1. Limitation of Liability -EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II) -BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO -EVENT SHALL EITHER PARTY BE LIABLE TO THE OTHER PARTY FOR ANY LOSS OF PROFIT, -LOSS OF DATA, LOSS OF BUSINESS OR GOODWILL OR ANY OTHER INDIRECT, SPECIAL, -CONSEQUENTIAL, INCIDENTAL OR PUNITIVE COST, DAMAGES OR EXPENSE OF ANY KIND, -HOWSOEVER ARISING UNDER OR IN CONNECTION WITH THIS AGREEMENT. - -EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II) -BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO -EVENT SHALL EITHER PARTY'S TOTAL AGGREGATE LIABILITY UNDER THIS AGREEMENT EXCEED -THE AGGREGATE LICENSE FEES PAID OR PAYABLE TO THE QT COMPANY FROM LICENSEE -DURING THE PERIOD OF TWELVE (12) MONTHS IMMEDIATELY PRECEDING THE EVENT -RESULTING IN SUCH LIABILITY. - -THE PROVISIONS OF THIS SECTION 7 ALLOCATE THE RISKS UNDER THIS AGREEMENT -BETWEEN THE QT COMPANY AND LICENSEE AND THE PARTIES HAVE RELIED UPON THE -LIMITATIONS SET FORTH HEREIN IN DETERMINING WHETHER TO ENTER INTO THIS -AGREEMENT. - -NOTWITHSTANDING ANYTHING TO THE CONTRARY IN THIS AGREEMENT, LICENSEE SHALL -ALWAYS BE LIABLE TO PAY THE APPLICABLE LICENSE FEES CORRESPONDING TO ITS ACTUAL -USE OF LICENSED SOFTWARE. - -8. SUPPORT, UPDATES AND ONLINE SERVICES - -Upon due payment of the agreed License Fees the Licensee will be eligible to -receive Support and Updates and to use the Online Services during the License -Term, provided, however, that in the event the License Term is longer than 36 -months, the initial payment includes Support for only the first 12 months, -unless the Parties specifically otherwise agree. - -Unless otherwise decided by The Company at its free and absolute discretion, -Upgrades will not be included in the Support but may be available subject to -additional fees. - -From time to time The Qt Company may change the Support terms, provided that -during the respective ongoing License Term the level of Support provided by The -Qt Company may not be reduced without the consent of the Licensee. - -Unless otherwise agreed, The Qt Company shall not be responsible for providing -any service or support to Customers. - -9. CONFIDENTIALITY - -Each Party acknowledges that during the Term of this Agreement each Party may -receive information about the other Party's business, business methods, -business plans, customers, business relations, technology, and other -information, including the terms of this Agreement, that is confidential and -of great value to the other Party, and the value of which would be -significantly reduced if disclosed to third parties ("Confidential -Information"). Accordingly, when a Party (the "Receiving Party") receives -Confidential Information from the other Party (the "Disclosing Party"), the -Receiving Party shall only disclose such information to employees and -Contractors on a need to know basis, and shall cause its employees and -employees of its Affiliates to: (i) maintain any and all Confidential -Information in confidence; (ii) not disclose the Confidential Information to -a third party without the Disclosing Party's prior written approval; and (iii) -not, directly or indirectly, use the Confidential Information for any purpose -other than for exercising its rights and fulfilling its responsibilities -pursuant to this Agreement. Each Party shall take reasonable measures to -protect the Confidential Information of the other Party, which measures shall -not be less than the measures taken by such Party to protect its own -confidential and proprietary information. - -Obligation of confidentiality shall not apply to information that (i) is or -becomes generally known to the public through no act or omission of the -Receiving Party; (ii) was in the Receiving Party's lawful possession prior -to the disclosure hereunder and was not subject to limitations on disclosure -or use; (iii) is developed independently by employees or Contractors of the -Receiving Party or other persons working for the Receiving Party who have not -had access to the Confidential Information of the Disclosing Party, as proven -by the written records of the Receiving Party; (iv) is lawfully disclosed to -the Receiving Party without restrictions, by a third party not under an -obligation of confidentiality; or (v) the Receiving Party is legally compelled -to disclose, in which case the Receiving Party shall notify the Disclosing -Party of such compelled disclosure and assert the privileged and confidential -nature of the information and cooperate fully with the Disclosing Party to -limit the scope of disclosure and the dissemination of disclosed Confidential -Information to the minimum extent necessary. - -The obligations under this Section 9 shall continue to remain in force for a -period of five (5) years after the last disclosure, and, with respect to trade -secrets, for so long as such trade secrets are protected under applicable -trade secret laws. - -10. FEES, DELIVERY AND PAYMENT - -10.1. License Fees -License Fees are described in The Qt Company's standard price list, quote or -Purchase Order confirmation or in an appendix hereto, as the case may be. - -The License Fees shall not be refunded or claimed as a credit in any event or -for any reason whatsoever. - -10.2. Ordering Licenses -Licensee may purchase Development Licenses and Distribution Licenses pursuant -to agreed pricing terms or, if no specific pricing terms have been agreed -upon, at The Qt Company's standard pricing terms applicable at the time of -purchase. Unless specifically otherwise provided, any pricing terms -referenced in this Agreement shall be valid for twelve (12) months from the -date of this Agreement. - -Licensee shall submit all purchase orders for Development Licenses and -Distribution Licenses to The Qt Company by email or any other method -acceptable to The Qt Company (each such order is referred to herein as a -"Purchase Order") for confirmation, whereupon the Purchase Order shall -become binding between the Parties. - -10.3. Distribution License Packs -Unless otherwise agreed, Distribution Licenses shall be purchased by way of -Distribution License Packs. - -Upon due payment of the ordered Distribution License Pack(s), the Licensee -will have an account of Distribution Licenses available for distributing -the Redistributables in accordance with this Agreement. - -Each time Licensee distributes a copy of Redistributables, then one -Distribution License is used, and Licensee's account of available -Distribution Licenses is decreased accordingly. - -Licensee may distribute copies of the Redistributables so long as Licensee -has Distribution Licenses remaining on its account. - -10.4. Payment Terms -License Fees and any other charges under this Agreement shall be paid by -Licensee no later than thirty (30) days from the date of the applicable -invoice from The Qt Company. - -The Qt Company will submit an invoice to Licensee after the date of this -Agreement and/or after The Qt Company receives a Purchase Order from Licensee. - -A late payment charge of the lower of (a) one percent per month; or (b) the -interest rate stipulated by applicable law, shall be charged on any unpaid -balances that remain past due. - -10.5. Taxes -All License Fees and other charges payable hereunder are gross amounts but -exclusive of any value added tax, use tax, sales tax, withholding tax and -other taxes, duties or tariffs ("Taxes") levied directly for the sale, -delivery or use of Licensed Software hereunder pursuant to any applicable -law. Such applicable Taxes shall be paid by Licensee to The Qt Company, or, -where applicable, in lieu of payment of such Taxes to The Qt Company, -Licensee shall provide an exemption certificate to The Qt Company and any -applicable authority. - -11. RECORD-KEEPING AND REPORTING OBLIGATIONS; AUDIT RIGHTS - -11.1. Licensee's Record-keeping -Licensee shall at all times during the Term of this Agreement and for a -period of seven (7) years thereafter maintain Licensee's Records in an -accurate and up-to-date form. Licensee's Records shall be adequate to -reasonably enable The Qt Company to determine Licensee's compliance with -the provisions of this Agreement. The records shall conform to general -good accounting practices. - -Licensee shall, within thirty (30) days from receiving The Qt Company's -request to that effect, deliver to The Qt Company a report based on -Licensee's Records, such report to contain information, in sufficient -detail, on (i) number and identity of users working with Licensed Software -or Open Source Qt, (ii) copies of Redistributables distributed by Licensee -during the most recent calendar quarter and/or any other term specified by -The Qt Company, (iii) number of undistributed copies of Redistributables -and corresponding number of unused Distribution Licenses remaining on -Licensee's account, and (iv) any other information as The Qt Company may -reasonably require from time to time. - -11.2. The Qt Company's Audit Rights -The Qt Company or an independent auditor acting on behalf of The Qt -Company's, may, upon at least five (5) business days' prior written -notice and at its expense, audit Licensee with respect to the Licensee's -use of the Licensed Software, but not more frequently than once during -each 6-month period. Such audit may be conducted by mail, electronic means -or through an in-person visit to Licensee's place of business. Any such -in-person audit shall be conducted during regular business hours at -Licensee's facilities and shall not unreasonably interfere with Licensee's -usiness activities. The Qt Company or the independent auditor acting on -behalf of The Qt Company shall be entitled to inspect Licensee's Records -and conduct necessary interviews of Licensee's relevant employees and -Contractors. All such Licensee's Records and use thereof shall be subject -to an obligation of confidentiality under this Agreement. - -If an audit reveals that Licensee is using the Licensed Software beyond -scope of the licenses Licensee has paid for, Licensee agrees to pay The Qt -Company any amounts owed for such unauthorized use within 30 days from -receipt of the corresponding invoice from The Qt Company. - -In addition, in the event the audit reveals a material violation of the -terms of this Agreement (without limitation, either (i) underpayment of -more than 10 % of License Fees or 10,000 euros (whichever is more) or -(ii) distribution of products, which include or result from Prohibited -Combination, shall be deemed a material violation for purposes of this -section), then the Licensee shall pay The Qt Company's reasonable cost of -conducting such audit. - -12. TERM AND TERMINATION -12.1. Agreement Term -This Agreement shall enter into force upon due acceptance by both -Parties and remain in force for as long as there is any Development -License(s) purchased under this Agreement in force ("Term"), unless and -until terminated pursuant to the terms of this Section 12. - -12.2. Termination and suspension of rights -Either Party shall have the right to terminate this Agreement upon thirty -(30) days prior written notice if the other Party commits a material -breach of any obligation of this Agreement and fails to remedy such breach -within such notice period. - -Instead of termination, The Qt Company shall have the right to suspend or -withhold grants of all rights to the Licensed Software hereunder, -including but not limited to the Development Licenses, Distribution -License, and Support, should Licensee fail to make payment in timely -fashion or otherwise violates or is reasonably suspected to violate its -obligations or terms of this Agreement, and where such violation or breach -is not cured within five (5) business days following The Qt Company's -written notice thereof. - -12.3. Mutual Right to Terminate -Either Party shall have the right to terminate this Agreement immediately -upon written notice in the event that the other Party becomes insolvent, -files for any form of bankruptcy, makes any assignment for the benefit of -creditors, has a receiver, administrative receiver or officer appointed -over the whole or a substantial part of its assets, ceases to conduct -business, or an act equivalent to any of the above occurs under the laws -of the jurisdiction of the other Party. - -12.4. Parties' Rights and Duties upon Termination -Upon expiry or termination of the Agreement, Licensee shall cease and -shall cause all Designated Users (including those of its Affiliates' and -Contractors') to cease using the Licensed Software and distribution of the -Redistributables under this Agreement. - -Notwithstanding the above, in the event the Agreement expires or is terminated: - (i) as a result of The Qt Company choosing not to renew the Development - License(s) as set forth in Section 3.1, and where such decision of - non-renewal is not due to any ongoing breach or alleged breach (as - reasonably determined by The Qt Company) by Licensee of the terms of this - Agreement or any applicable license terms of Open Source Qt, then all valid - licenses possessed by the Licensee at such date shall be extended to be - valid in perpetuity under the terms of this Agreement and Licensee is - entitled to purchase additional licenses as set forth in Section 10.2; or - (ii) for reason other than by The Qt Company pursuant to item (i) above - or pursuant to Section 12.2, then the Licensee is entitled, for a - period of six (6) months after the effective date of termination, - to continue distribution of Devices under the Distribution Licenses - paid but unused at such effective date of termination. - -Upon any such termination the Licensee shall destroy or return to The Qt -Company all copies of the Licensed Software and all related materials and will -certify the same to The Qt Company upon its request, provided however that -Licensee may retain and exploit such copies of the Licensed Software as it may -reasonably require in providing continued support to Customers. - -Expiry or termination of this Agreement for any reason whatsoever shall not -relieve Licensee of its obligation to pay any License Fees accrued or payable -to The Qt Company prior to the effective date of termination, and Licensee -shall immediately pay to The Qt Company all such fees upon the effective date -of termination. Termination of this Agreement shall not affect any rights of -Customers to continue use of Applications and Devices (and therein -incorporated Redistributables). - -12.5. Extension in case of bankruptcy -In the event The Qt Company is declared bankrupt under a final, -non-cancellable decision by relevant court of law, and this Agreement is not, -at the date of expiry of the Development License(s) pursuant to Section 3.1, -assigned to party, who has assumed The Qt Company's position as a legitimate -licensor of Licensed Software under this Agreement, then all valid licenses -possessed by the Licensee at such date of expiry, and which the Licensee has -not notified for expiry, shall be extended to be valid in perpetuity under the -terms of this Agreement. - -13. GOVERNING LAW AND LEGAL VENUE - -In the event this Agreement is in the name of The Qt Company Inc., a Delaware -Corporation, then: - (i) this Agreement shall be construed and interpreted in accordance with - the laws of the State of California, USA, excluding its choice of - law provisions; - (ii) the United Nations Convention on Contracts for the International - Sale of Goods will not apply to this Agreement; and - (iii) any dispute, claim or controversy arising out of or relating to this - Agreement or the breach, termination, enforcement, interpretation or - validity thereof, including the determination of the scope or - applicability of this Agreement to arbitrate, shall be determined by - arbitration in San Francisco, USA, before one arbitrator. The - arbitration shall be administered by JAMS pursuant to JAMS' - Streamlined Arbitration Rules and Procedures. Judgment on the Award - may be entered in any court having jurisdiction. This Section shall - not preclude parties from seeking provisional remedies in aid of - arbitration from a court of appropriate jurisdiction. - -In the event this Agreement is in the name of The Qt Company Ltd., a Finnish -Company, then: - (i) this Agreement shall be construed and interpreted in accordance with - the laws of Finland, excluding its choice of law provisions; - (ii) the United Nations Convention on Contracts for the International - Sale of Goods will not apply to this Agreement; and - (iii) any disputes, controversy or claim arising out of or relating to - this Agreement, or the breach, termination or validity thereof shall - be finally settled by arbitration in accordance with the Arbitration - Rules of Finland Chamber of Commerce. The arbitration tribunal shall - consist of one (1), or if either Party so requires, of three (3), - arbitrators. The award shall be final and binding and enforceable in - any court of competent jurisdiction. The arbitration shall be held - in Helsinki, Finland and the process shall be conducted in the - English language. This Section shall not preclude parties from - seeking provisional remedies in aid of arbitration from a court of - appropriate jurisdiction. - -14. GENERAL PROVISIONS - -14.1. No Assignment -Except in the case of a merger or sale of substantially all of its corporate -assets, Licensee shall not be entitled to assign or transfer all or any of -its rights, benefits and obligations under this Agreement without the prior -written consent of The Qt Company, which shall not be unreasonably withheld -or delayed. The Qt Company shall be entitled to freely assign or transfer any -of its rights, benefits or obligations under this Agreement. - -14.2. No Third-Party Representations -Licensee shall make no representations or warranties concerning the Licensed -Software on behalf of The Qt Company. Any representation or warranty Licensee -makes or purports to make on The Qt Company's behalf shall be void as to The -Qt Company. - -14.3. Surviving Sections -Any terms and conditions that by their nature or otherwise reasonably should -survive termination of this Agreement shall so be deemed to survive. Such -sections include especially the following: 1, 2, 6, 7, 9, 11, 12.4, 13 and 14. - -14.4. Entire Agreement -This Agreement, the exhibits hereto, the License Certificate and any -applicable Purchase Order accepted by The Qt Company constitute the complete -agreement between the Parties and supersedes all prior or contemporaneous -discussions, representations, and proposals, written or oral, with respect -to the subject matters discussed herein. - -In the event of any conflict or inconsistency between this Agreement and any -Purchase Order, the terms of this Agreement will prevail over the terms of -the Purchase Order with respect to such conflict or inconsistency. - -Parties specifically acknowledge and agree that this Agreement prevails -over any click-to-accept or similar agreements the Designated Users may -need to accept online upon download of the Licensed Software, as may be -required by The Qt Company's applicable processes relating to Licensed -Software. - -14.5. Modifications -No modification of this Agreement shall be effective unless contained in a -writing executed by an authorized representative of each Party. No term or -condition contained in Licensee's Purchase Order ("Deviating Terms") shall -apply unless The Qt Company has expressly agreed such Deviating Terms in -writing. Unless and to the extent expressly agreed by The Qt Company, any -such Deviating Terms shall be deemed void and with no legal effect. For -clarity, delivery of the Licensed Software following the receipt of the -Purchase Order including Deviating Terms shall not constitute acceptance of -such Deviating Terms." - -14.6. Force Majeure -Except for the payment obligations hereunder, neither Party shall be liable -to the other for any delay or non-performance of its obligations hereunder -in the event and to the extent that such delay or non-performance is due to -an event of act of God, terrorist attack or other similar unforeseeable -catastrophic event that prevents either Party for fulfilling its -obligations under this Agreement and which such Party cannot avoid or -circumvent ("Force Majeure Event"). If the Force Majeure Event results in -a delay or non-performance of a Party for a period of three (3) months or -longer, then either Party shall have the right to terminate this Agreement -with immediate effect without any liability (except for the obligations of -payment arising prior to the event of Force Majeure) towards the other -Party. - -14.7. Notices -Any notice given by one Party to the other shall be deemed properly given -and deemed received if specifically acknowledged by the receiving Party in -writing or when successfully delivered to the recipient by hand, fax, or -special courier during normal business hours on a business day to the -addresses specified for each Party on the signature page. Each -communication and document made or delivered by one Party to the other -Party pursuant to this Agreement shall be in the English language. - -14.8. Export Control -Licensee acknowledges that the Redistributables, as incorporated in -Applications or Devices, may be subject to export control restrictions -under the applicable laws of respective countries. Licensee shall fully -comply with all applicable export license restrictions and requirements -as well as with all laws and regulations relating to the Redistributables -and exercise of licenses hereunder and shall procure all necessary -governmental authorizations, including without limitation, all necessary -licenses, approvals, permissions or consents, where necessary for the -re-exportation of the Redistributables, Applications and/or Devices. - -14.9. No Implied License -There are no implied licenses or other implied rights granted under -this Agreement, and all rights, save for those expressly granted hereunder, -shall remain with The Qt Company and its licensors. In addition, no licenses -or immunities are granted to the combination of the Licensed Software with -any other software or hardware not delivered by The Qt Company under this -Agreement. - -14.10. Attorney Fees -The prevailing Party in any action to enforce this Agreement shall be -entitled to recover its attorney's fees and costs in connection with such -action. - -14.11. Privacy -Licensee acknowledges and agrees that for the purpose of this Agreement, -The Qt Company may collect, use, transfer and disclose personal data -pertaining to Designated Users as well as any other employees and directors -of the Licensee and its Contractors relevant for carrying out the intent of -this Agreement. Such personal data may be collected from the Licensee or -directly from the relevant individuals. The Parties acknowledge that with -regard to such personal data processed hereunder, The Qt Company shall be -regarded as the Data Controller under the applicable Data Protection -Legislation. The Qt Company shall process any such personal data in -accordance with its privacy policies and practices, which will comply with -all applicable requirements of the Data Protection Legislation. - -14.12. Severability -If any provision of this Agreement shall be adjudged by any court of -competent jurisdiction to be unenforceable or invalid, that provision shall -be limited or eliminated to the minimum extent necessary so that this -Agreement shall otherwise remain in full force and effect and enforceable. - -APPENDICES - -The Agreement includes Appendix 1, and possibly one or more of the -appendices 3-5, depending on the product(s) purchased by the Licensee, -what is stated in the quote or invoice, and/or what is stated in the -Licensee's License Certificate. - -APPENDIX 1 - -The modules and/or tools that are included in the respective product - Qt -for Application Development (QtAD), Qt for Device Creation (QtDC), Qt for -MCUs (QtMCU), Qt 3D Studio (Qt3DS) and Qt Design Studio (QtDS) - are -marked with 'X' in the below table. The modules and tools are ported to Qt 6 -in stages and are subject to availability. - -Parts of the product that are permitted for distribution in object-code -form only ("Redistributables") are marked with 'R' in the below table. - -+-----------------------------------------------------------------------+ -| Modules / Tools | QtAD | QtDC | QtMCU | Qt3DS | QtDS | -+-----------------------------------------------------------------------+ -| Qt Core | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt GUI | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Multimedia | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Multimedia Widgets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Network | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt PDF | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt QML | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Controls 2 | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Dialogs | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Layouts | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Test | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt SQL | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Test | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Widgets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Active Qt | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt 3D | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Android Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Bluetooth | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Canvas 3D | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Concurrent | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt D-Bus | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Gamepad | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Graphical Effects | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Help | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Image Formats | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Location | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Mac Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Network Authorization | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt NFC | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Platform Headers | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Positioning | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Print Support | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Purchasing | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt for Python | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Controls | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Widgets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt SCXML | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Sensors | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Serial Bus | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Serial Port | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Speech | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt SVG | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt UI Tools | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebChannel | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebEngine | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebSockets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebView | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Windows Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt X11 Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt XML | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt XML Patterns | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Wayland Compositor | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Charts | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Data Visualization | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Virtual Keyboard | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Boot 2 Qt stack | | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt OTA | | X, R | | | | -+-----------------------------------------------------------------------+ -| Device Utilities | | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Debugging Bridge (QDB) Daemon | | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Ultralite Controls | | | X, R | | | -+-----------------------------------------------------------------------+ -| Qt Quick Ultralite | | | X, R | | | -+-----------------------------------------------------------------------+ -| Qt Creator | X | X | X | | | -+-----------------------------------------------------------------------+ -| Qt Designer (Qt Widget Designer) | X | X | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Designer (Qt Creator | X, R | X, R | X, R | | | -| plugin) | | | | | | -+-----------------------------------------------------------------------+ -| Qt Linguist | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Qt Assistant | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Lupdate | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Lrelease | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Qmake | X | X | | | | -+-----------------------------------------------------------------------+ -| Uic | X | X | | | | -+-----------------------------------------------------------------------+ -| Rcc | X | X | | | | -+-----------------------------------------------------------------------+ -| Qlalr | X | X | | | | -+-----------------------------------------------------------------------+ -| Qdoc | X | X | | | | -+-----------------------------------------------------------------------+ -| Qmlscene | X | X | | | | -+-----------------------------------------------------------------------+ -| Qmlviewer | X | X | | | | -+-----------------------------------------------------------------------+ -| Target toolchains | | X | X | | | -+-----------------------------------------------------------------------+ -| Qt Debugging Bridge (QDB) Host | | X | | | | -| Tools | | | | | | -+-----------------------------------------------------------------------+ -| qtconfig-gui | | X | | | | -+-----------------------------------------------------------------------+ -| Qt Emulator | | X | | | | -+-----------------------------------------------------------------------+ -| Qmlinterfacegenerator | | | X | | | -+-----------------------------------------------------------------------+ -| Qmltocpp | | | X | | | -+-----------------------------------------------------------------------+ -| qulfontcompiler | | | X | | | -+-----------------------------------------------------------------------+ -| Qt53DStudioRuntime2 | | | | X, R | | -+-----------------------------------------------------------------------+ -| Qt 3D Studio | | | | X | | -+-----------------------------------------------------------------------+ -| Qt Design Studio | | | | | X | -+-----------------------------------------------------------------------+ - - -APPENDIX 3: ADDITIONS TO LICENSED SOFTWARE - -In addition to what is provided under the definition of the Licensed Software, -Parties agree that Licensed Software shall also include the Add-On Products of -The Qt Company, as mentioned in this Appendix, if included in the quote / -invoice. - -The Modules and/or Tools of the Licensed Software that are included with each -Add-On Product respectively are marked with 'X' in the below table. The modules -are ported to Qt 6 in stages and are subject to availability. - -Parts of the respective Add-On Product that are permitted for distribution in -object-code form only ("Redistributables") are marked with 'R' in the below -table. - -+------------------------------------------------------------------------------------------------+ -| | Add-On Product(s) | -| +--------------------------------------------------------------------------+ -| Modules / Tools of | Qt for | Qt | Qt | Qt | Qt | Qt | -| Licensed Software | Automation | Automotive | Safe | Application | GammaRay | Deployment | -| | / Qt M2M | Suite | Renderer | Manager | | Platform | -| | Protocols | | | | | Package | -+------------------------------------------------------------------------------------------------+ -| Qt MQTT | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt KNX | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt OPC UA | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt CoAP | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Safe Renderer | | X, R | X, R | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Application | | X, R | | X, R | | | -| Manager | | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt IVI | | X, R | | | | | -+------------------------------------------------------------------------------------------------+ -| Reference UI | | X, R | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt GENIVI Extras | | X, R | | | | | -+------------------------------------------------------------------------------------------------+ -| QML Live | | X | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Creator | | X | | | | | -| Deployment | | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Creator Plugin | | X | | X | | | -| for Qt Application Manager | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Automotive Suite | | X | | | | | -| Deployment Server | | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Design Studio | | X | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt 3D Studio | | X | | | | | -+------------------------------------------------------------------------------------------------+ -| GammaRay | | X | | | X | | -+------------------------------------------------------------------------------------------------+ -| Platform adaptations| | | | | | X | -| for specified | | | | | | -| Deployment Platforms | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt for Device | | X | | | | | -| Creation | | | | | | | -+------------------------------------------------------------------------------------------------+ - - -All the above Redistributables are subject to applicable provisions and -limitations including but not limited to what is defined in section 3 of the -Agreement. - -APPENDIX 4: SMALL BUSINESS AND STARTUP - -The provisions of this Appendix 4 are applicable for companies with an annual -revenue, including funding, equivalent to maximum of 250,000 USD (in -applicable currency) during the latest full calendar year, as evidenced by -duly audited records of the Licensee and approved by The Qt Company -("Start-up Company"). - -Start-up Companies are qualified for a discounted License Fee for maximum of -four (4) Development Licenses ("Start-up Development License") unless -otherwise agreed between the parties. - -Start-up Development License entitles the respective Designated User for -Support only for installation related issues. - -Upon expiry of the respective License Term, the Start-up Development -Licenses shall be automatically extended, pursuant to Section 3.1 of the -Agreement, for a Renewal Term either as new Start-up Development Licenses -(if the Licensee still qualifies as a Start-up Company), or as normal -Development Licenses (if the Licensee no longer qualifies as a Start-up -ompany). - -APPENDIX 5: NON-COMMERCIAL USE -The provisions of this Appendix 5 are applicable for non-commercial use of -the Licensed Software by the Licensee. - -For the purpose of this Appendix 5, the following additional definitions -(replacing the relevant definition of the Agreement, where applicable) -shall be applicable: - -"Demo Units" shall mean (i) hardware development platform, which incorporates -the Licensed Software along with Licensee's software and/or hardware, and -(ii) prototype versions of Applications or Devices. - -"Designated User(s)" shall mean the employees and students of the Licensee. - -"Licensee Products" shall mean Applications and/or Devices. - -"Permitted Purpose" shall mean (i) Licensee's internal evaluation and -testing of Licensed Software, (ii) building Demo Units as well as (iii) -educational use. - -"Term" shall mean a period of twelve (12) months or any such other period -as may be agreed between the Parties. - -For the purpose of this Appendix 5, the following changes shall be agreed -with respect to relevant Sections of the Agreement: - - I. Recital (A) shall be replaced in its entirety to read as follows: - "(A) Licensee wishes to use the Licensed Software for the Permitted - Purpose." - II. Section 3.1 shall be replaced in its entirety to read as follows: - "The Qt Company grants to Licensee a personal, non-exclusive, - non-transferable, revocable, royalty-free license, valid for the - Term, to use, modify and copy the Licensed Software solely for the - Permitted Purpose. - Licensee may install copies of the Licensed Software on five (5) - computers per Designated User, provided that only the Designated - Users who have a valid Development License may use the Licensed - Software. - Licensee may demonstrate the Demo Units, provided that such - demonstrations must be conducted by Licensee, and the Demo Units - must remain in Licensee's possession and under Licensee's control - at all times. - For clarity, this Agreement does not (i) entitle Licensee to use - Licensed Software to create Applications or Devices (other than - prototypes thereof) or (ii) carry any distribution rights to - Licensee, but such rights are subject to and conditional upon - conclusion of a separate license agreement with The Qt Company." - III. Sections 3.2, 3.3, 8 and 10 shall be deleted. - IV. Section 3.4 shall be replaced in its entirety to read as follows: - "Licensee shall not: - - remove or alter any copyright, trademark or other proprietary - rights notice contained in any portion of the Licensed Software; - - transfer, publish, sublicense, disclose, display or otherwise - make the Licensed Software available to any third party (except - that Licensee may demonstrate the Demo Units pursuant to Section - 3.1); - - in any way combine, incorporate or integrate Licensed Software - with, or use Licensed Software for creation of, any software - created with or incorporating Open Source Qt; - - Licensee shall cause all Designated Users who make use of the - licenses granted under this Agreement, to be contractually bound - to comply with the relevant terms of this Agreement and not to use - the Licensed Software beyond the terms hereof. Licensee shall be - responsible for any and all actions and omissions of its - Designated Users relating to the Licensed Software and use - thereof. - - Any use of Licensed Software beyond the provisions of this - Agreement is strictly prohibited and requires an additional license - from The Qt Company." - V. Section 12 shall be replaced in its entirety to read as follows: - "This Agreement shall enter into force upon due acceptance by both - Parties and remain in force for the Term, unless and until - terminated pursuant to the terms of Section 12. - - Upon termination of the Agreement, Licensee shall cease using the - Licensed Software. All other copies of Licensed Software in the - possession or control of Licensee must be erased or destroyed. - An officer of Licensee must, upon request, promptly deliver to - The Qt Company a written confirmation that this has occurred." - -Except for the modifications specified above, this Appendix carries no -change to the terms of the Agreement which shall remain in full force. diff -Nru qtbase-opensource-src-5.15.3+dfsg/.QT-FOR-AUTOMOTIVE-LICENSE-AGREEMENT qtbase-opensource-src-5.15.8+dfsg/.QT-FOR-AUTOMOTIVE-LICENSE-AGREEMENT --- qtbase-opensource-src-5.15.3+dfsg/.QT-FOR-AUTOMOTIVE-LICENSE-AGREEMENT 2021-03-30 02:27:15.450110200 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/.QT-FOR-AUTOMOTIVE-LICENSE-AGREEMENT 1970-01-01 08:00:00.000000000 +0800 @@ -1,894 +0,0 @@ -QT AUTOMOTIVE SUITE LICENSE AGREEMENT -Agreement version 3.0 - -This Qt Automotive Suite License Agreement (“Agreement”) is a legal agreement -between The Qt Company (as defined below) and the Licensee (as defined below) -for the license of Licensed Software (as defined below). Capitalized terms used -herein are defined in Section 1. - -WHEREAS: - -(A) Licensee wishes to use the Licensed Software for the purpose of developing -and distributing Applications and/or Devices; and - -(B) The Qt Company is willing to grant the Licensee a right to use Licensed -Software for such purpose pursuant to term and conditions of this Agreement. - -NOW, THEREFORE, THE PARTIES HEREBY AGREE AS FOLLOWS: - -1. DEFINITIONS - -"Affiliate" of a Party shall mean an entity (i) which is directly or indirectly -controlling such Party; (ii) which is under the same direct or indirect -ownership or control as such Party; or (iii) which is directly or indirectly -owned or controlled by such Party. For these purposes, an entity shall be -treated as being controlled by another if that other entity has fifty percent -(50 %) or more of the votes in such entity, is able to direct its affairs and/or -to control the composition of its board of directors or equivalent body. - -"Applications" shall mean Licensee's software products created using the -Licensed Software in connection with the Program, which may include the -Redistributables, or part thereof. - -"Contractor(s)" shall mean third party consultants, distributors and contractors -performing services to a Party under applicable contractual arrangement. - -"Customer(s)" shall mean Licensee's end users to whom Licensee, directly or -indirectly, distributes copies of the Redistributables. - -"Deployment Platforms" shall mean operating systems specified in the License -Certificate, in which the Redistributables can be distributed pursuant to the -terms and conditions of this Agreement. - -"Designated User(s)" shall mean the employee(s) of Licensee or Licensee's -Affiliates acting within the scope of their employment or Licensee's -Contractors acting within the scope of their services for Licensee and on behalf -of Licensee. Designated Users shall be named in the License Certificate. - -"Development License" shall mean the license needed by the Licensee for each -Designated User to use the Licensed Software under the license grant described -in Section 3.1 of this Agreement. - -"Development Platforms" shall mean those operating systems specified in the -License Certificate, in which the Licensed Software can be used under the -Development License, but not distributed in any form or used for any other -purpose. - -"Devices" shall mean hardware devices or products that 1) are manufactured -and/or distributed by the Licensee or its Affiliates or Contractors in -connection with the Program, and (2)(i) incorporate or integrate the -Redistributables or parts thereof; or (ii) do not incorporate or integrate -the Redistributables at the time of distribution, but where, when used by a -Customer, the main user interface or substantial functionality of such -device is provided by Application(s) or otherwise depends on the Licensed -Software. - -"Distribution License(s)" shall mean the license required for distribution of -Redistributables in accordance with the license grant described in Section -3.2(ii)-(iii) of this Agreement. - -"Distribution License Packs" shall mean set of prepaid Distribution Licenses -for distribution of Redistributables, as defined in The Qt Company's standard -price list, quote, Purchase Order confirmation or in an appendix hereto, as the -case may be. - -"Initial Support Term" shall mean a time period of twelve (12) months, -calculated from the effective date of this Agreement. - -"Intellectual Property Rights" shall mean patents (including utility models), -design patents, and designs (whether or not capable of registration), chip -topography rights and other like protection, copyrights, trademarks, service -marks, trade names, logos or other words or symbols and any other form of -statutory protection of any kind and applications for any of the foregoing -as well as any trade secrets. -"Licensee" shall mean the individual or legal entity that is party to this -Agreement, as identified on the signature page hereof. - -"License Certificate" shall mean a certificate accompanying the Licensed -Software and generated for each Designated User respectively. License -Certificate will specify the Designated User, the Development Platforms, -Deployment Platforms, Program and the Term of this Agreement. The terms of the -License Certificate are considered part of this Agreement and shall be updated -from time to time to reflect any changes to the foregoing terms relating to -Licensee's rights to the Licensed Software. - -"Licensee's Records" shall mean books and records that are likely to contain -information bearing on Licensee's compliance with this Agreement or the payments -due to The Qt Company under this Agreement, including, but not limited to: -assembly logs, sales records and distribution records. - -"Licensee´s SDK Contractors" shall mean Contractors of Licensee, who have -purchased or received SDK from the Licensee relating to the Program. - -"License Fee" shall mean the fee charged to the Licensee for rights granted -under the terms of this Agreement. - -"Licensed Software" shall mean all versions of The Qt Company's computer -software products, online or electronic documentation, associated media and -printed materials, including the source code, example programs and the -documentation, licensed to the Licensee under this Agreement. Licensed Software -does not include Third Party Software (as defined in Section 4) or Open Source -Qt. - -"Modified Software" shall mean bug-fixes, error corrections, patches or -modifications made to the Licensed Software by Licensee, including documentation -related thereto. - -"Online Services" shall mean any services or access to systems made available -by The Qt Company to the Licensee over the Internet relating to the Licensed -Software or for the purpose of use by the Licensee of the Licensed Software or -Support. Use of any such Online Services is discretionary for the Licensee and -some of them may be subject to additional fees. - -"Open Source Qt" shall mean all versions of The Qt Company's Qt computer -software products, online or electronic documentation, associated media and -printed materials, including the source code, example programs and the -documentation available under the terms of the GNU Lesser General Public -License, version 2.1 or later ("LGPL") or the GNU General Public License, -version 2.0 or later ("GPL"). - -"Party" or "Parties" shall mean Licensee and/or The Qt Company. - -"Program" shall mean Licensee´s business program for which purpose the Licensee -is entitled to use the Licensed Software and grant the Licensee's SDK -Contractors a right to use the Licensed Software as part of a SDK. - -"Redistributables" shall mean the portions of the Licensed Software set forth -in Appendix 1, Section 1 that may be distributed pursuant to the terms of this -Agreement in object code form only, including any relevant documentation. Where -relevant, any reference to Licensed Software in this Agreement shall include and -refer also to Redistributables. - -"SDK" or "Software Development Kit" shall mean a combination of software modules -including Licensed Software intended to be utilized in connection with the -Program. - -"Submitted Modified Software" shall have the meaning as set forth in Section -2.3. - -"Support" shall mean standard developer support that is provided by -The Qt Company to assist Designated Users in using the Licensed Software in -accordance with The Qt Company's standard support terms. - -"Support Renewal Term" shall mean a time period of twelve (12) months, -calculated from the end of the Initial Support Term or previous Support Renewal -Term, as applicable. - -"Support Term" shall mean the Initial Support Term and any possible Support -Renewal Terms(s) during which time the Licensee is eligible to receive for -Support for the Licensed Software. - -"Taxes" shall have the meaning set forth in Section 10.5. - -"Term" shall mean the validity period of this Agreement, as set forth in the -License Certificate. - -“The Qt Company” shall mean: - -(i) in the event Licensee is an individual residing in the United States or a -legal entity incorporated in the United States or having its headquarters in the -United States, The Qt Company Inc., a Delaware corporation with its office at -2350 Mission College Blvd., Suite 1020, Santa Clara, CA 95054, USA.; or - -(ii) in the event the Licensee is an individual residing outside of the United -States or a legal entity incorporated outside of the United States or having its -registered office outside of the United States, The Qt Company Ltd., a Finnish -company with its registered office at Bertel Jungin aukio D3A, 02600 Espoo, -Finland. - -"Updates" shall mean a release or version of the Licensed Software containing -bug fixes, error corrections and other changes that are generally made available -to users of the Licensed Software that have contracted for Support. Updates are -generally depicted as a change to the digits following the decimal in the -Licensed Software version number. The Qt Company shall make Updates available to -the Licensee under the Support. Updates shall be considered as part of the -Licensed Software hereunder. - -"Upgrades" shall mean a release or version of the Licensed Software containing -enhancements and new features and are generally depicted as a change to the -first digit of the Licensed Software version number. In the event Upgrades are -provided to the Licensee under this Agreement, they shall be considered as part -of the Licensed Software hereunder. - -2. OWNERSHIP 2.1 - -Ownership of The Qt Company - -The Licensed Software is protected by copyright laws and international copyright -treaties, as well as other intellectual property laws and treaties. The Licensed -Software is licensed, not sold. - -All The Qt Company's Intellectual Property Rights are and shall remain the -exclusive property of The Qt Company or its licensors respectively. - -2.2 Ownership of Licensee - -All the Licensee's Intellectual Property Rights are and shall remain the -exclusive property of the Licensee or its licensors respectively. - -All Intellectual Property Rights to the Modified Software, Applications and -Devices shall remain with the Licensee and no rights thereto shall be granted by -the Licensee to The Qt Company under this Agreement (except as set forth in -Section 2.3 below). - -2.3 Modified Software - -Licensee may create Modified Software that breaks the source or binary -compatibility with the Licensed Software. This includes, but is not limited to, -changing the application programming interfaces ("API") by adding, changing or -deleting any variable, method, or class signature in the Licensed Software -and/or any inter-process protocols, services or standards in the Licensed -Software libraries. To the extent that Licensee breaks source or binary -compatibility with the Licensed Software, Licensee acknowledges that The Qt -Company's ability to provide Support may be prevented or limited and Licensee's -ability to make use of Updates may be restricted. - -To the extent Licensee submits Modified Software to The Qt Company ("Submitted -Modified Software"), Licensee hereby grants The Qt Company a sublicensable, -assignable, irrevocable, perpetual, worldwide, non-exclusive, royalty-free and -fully paid-up license, under all of Licensee's Intellectual Property Rights, to -reproduce, adapt, translate, modify, and prepare derivative works of, publicly -display, publicly perform, sublicense, make available and distribute such -Submitted Modified Software as The Qt Company sees fit at its free and absolute -discretion. For the sake of clarity, the Licensee shall have no obligation to -provide Modified Software to The Qt Company. - -3. LICENSES GRANTED - -3.1 Development with Licensed Software - -Subject to the terms of this Agreement, The Qt Company grants to Licensee a -personal, worldwide, non- exclusive, non-transferable license, valid for the -Term, to use, modify and copy the Licensed Software by Designated Users on the -Development Platforms for the sole purposes of designing, developing, -demonstrating and testing Application(s) and/or Devices, and to provide thereto -related support and other services to end-user Customers. - -Licensee may install copies of the Licensed Software on an unlimited number of -computers provided that (i) only the Designated Users may use the Licensed -Software, and (ii) all Designated Users must have a valid Development License to -use Licensed Software. - -Licensee may at any time designate another Designated User to replace a -then-current Designated User by notifying The Qt Company in writing, provided -that any Designated User may be replaced only once during any six-month period. - -3.2 Distribution of Redistributables - -Subject to the terms of this Agreement, The Qt Company grants to Licensee a -personal, worldwide, non- exclusive, non-transferable license, valid for the -Term, to (i) distribute, by itself or through its Contractors, Redistributables -as installed, incorporated or integrated into Applications for execution on the -Deployment Platforms, and (ii) distribute, by itself or through one or more -tiers of Contractors, Redistributables as installed, incorporated or integrated, -or intended to be installed, incorporated or integrated into Devices for -execution on the Deployment Platforms, and (iii) grant sublicenses to -Redistributables, as distributed hereunder, for Customers solely for Customer's -internal use and to the extent necessary in order for the Customers to use the -Applications and/or Devices for their respective intended purposes. - -Right to distribute the Redistributables as provided herein is conditional upon -the Licensee having purchased and paid the appropriate amount of Development and -Distribution Licenses from The Qt Company before distributing any -Redistributables to Customers. - -For the avoidance of any doubt it is specifically acknowledged and agreed that -distribution of Redistributables solely as installed, incorporated or integrated -into Applications for execution on the Deployment Platform(s), as specified in -(i) of the first paragraph of Section 3.2 above, i.e. with no connection to -Devices or intention to use in connection therewith, shall not require a -Distribution License. - -3.3 SDK License - -The Qt Company grants to Licensee a personal, worldwide, non-exclusive, -non-transferable license, valid for the Term, to (i) distribute Licensed -Software as a part of the SDK to Licensee´s SDK Contractors in connection with -the Program and (ii) in connection with the Program, by itself or by Licensee's -SDK Contractors, combine, incorporate or integrate Licensed Software with, or -use Licensed Software for creation of, any software created with or -incorporating Open Source Qt, provided, however, that: - -(i) the Licensee´s SDK Contractors are only entitled to use the Licensed -Software as part of SDK and for the sole purpose of developing software for -Devices that are distributed under the Program; and - -(ii) Licensee´s SDK Contractors shall not be entitled to distribute the SDK or -any part thereof to any third parties. - -For the avoidance of any doubt, the distribution of such software development -tools that do not contain Licensed Software shall not be covered by this -Agreement. - -3.4 Further Requirements - -The licenses granted above in this Section 3 by The Qt Company to Licensee are -conditional and subject to Licensee's compliance with the following terms: - -(i) Licensee shall not remove or alter any copyright, trademark or other -proprietary rights notice contained in any portion of the Licensed Software; - -(ii) Applications and SDKs must add primary and substantial functionality to the -Licensed Software; - -(iii) Applications may not pass on functionality which in any way makes it -possible for others to create software with the Licensed Software; provided -however that Licensee may use the Licensed Software's scripting and QML ("Qt -Quick") functionality solely in order to enable scripting, themes and styles -that augment the functionality and appearance of the Application(s) without -adding primary and substantial functionality to the Application(s); - -(iv) Applications and SDKs must not compete with the Licensed Software; - -(v) Licensee shall not use The Qt Company's or any of its suppliers' names, -logos, or trademarks to market Applications or SDKs, except that Licensee may -use "Built with Qt" logo to indicate that Application(s) was developed using -the Licensed Software; - -(vi) Except as expressly provided in Section 3.3, Licensee shall not -distribute, sublicense or disclose source code of Licensed Software to any third -party (provided however that Licensee may appoint employee(s) of Contractors as -Designated Users to use Licensed Software pursuant to this Agreement); - -(vii) Licensee shall not grant the Customers a right to (i) make copies of the -Redistributables except when and to the extent required to use the Applications -and/or Devices for their intended purpose, (ii) modify the Redistributables or -create derivative works thereof, (iii) decompile, disassemble or otherwise -reverse engineer Redistributables, or (iv) redistribute any copy or portion of -the Redistributables to any third party, except as part of the onward sale of -the Device on which the Redistributables are installed; - -(viii) Except as expressly provided in Section 3.3, Licensee shall not and -shall cause that its Affiliates, Contractors and Licensee's SDK Contractors -shall not a) in any way, combine, incorporate or integrate Licensed Software -with, or use Licensed Software for creation of, any software created with or -incorporating Open Source Qt or b) incorporate or integrate Applications into a -hardware device or product other than a Device, unless Licensee has received an -advance written permission from The Qt Company to do so. Unless specifically -otherwise agreed, any and all distribution by the Licensee during the Term of -a hardware device or product a) which incorporate or integrate any part of -Licensed Software or Open Source Qt; or b) where the main user interface or -substantial functionality is provided by software build with Licensed -Software or Open Source Qt or otherwise depends on the Licensed Software or Open -Open Source Qt, shall be considered as distribution under this Agreement and -dependent on compliance thereof (including but not limited to obligation to -pay applicable License Fees for such distribution); - -(ix) Licensee shall cause all of its Affiliates and Contractors entitled to make -use of the licenses granted under this Agreement, to be contractually bound to -comply with the relevant terms of this Agreement and not to use the Licensed -Software beyond the terms hereof and for any purposes other than operating -within the scope of their services for Licensee. Licensee shall be responsible -for any and all actions and omissions of its Affiliates and Contractors relating -to the Licensed Software and use thereof (including but not limited to payment -of all applicable License Fees); - -(x) Except when and to the extent explicitly provided in this Section 3, -Licensee shall not transfer, publish, disclose, display or otherwise make -available the Licensed Software; - -(xi) Licensee shall not take any action inconsistent with The Qt Company's -Intellectual Property Rights; and - -(xii) Attempt or enlist a third party to conduct or attempt to conduct any of -the above. - -Above terms shall not be applicable if and to the extent they conflict with any -mandatory provisions of any applicable laws. - -Any use of Licensed Software beyond the provisions of this Agreement is strictly -prohibited and requires an additional license from The Qt Company. - -4. THIRD PARTY SOFTWARE - -The Licensed Software may provide links to third party libraries or code -(collectively "Third Party Software") to implement various functions. Third -Party Software does not comprise part of the Licensed Software. In some cases, -access to Third Party Software may be included in the Licensed Software. Such -Third Party Software will be listed in the ".../src/3rdparty" source tree -delivered with the Licensed Software or documented in the Licensed Software, as -such may be amended from time to time. Licensee acknowledges that use or -distribution of Third Party Software is in all respects subject to applicable -license terms of applicable third party right holders. 5. PRE-RELEASE CODE - -The Licensed Software may contain pre-release code and functionality marked or -otherwise stated as "Technology Preview", "Alpha", "Beta" or similar -designation. Such pre-release code may be present in order to provide -experimental support for new platforms or preliminary versions of one or more -new functionalities. The pre-release code may not be at the level of performance -and compatibility of a final, generally available, product offering of the -Licensed Software. The pre-release parts of the Licensed Software may not -operate correctly, may contain errors and may be substantially modified by The -Qt Company prior to the first commercial product release, if any. The Qt Company -is under no obligation to make pre-release code commercially available, or -provide any Support or Updates relating thereto. The Qt Company assumes no -liability whatsoever regarding any pre-release code, but any use thereof is -exclusively at Licensee's own risk and expense. - -6. LIMITED WARRANTY AND WARRANTY DISCLAIMER - -The Qt Company hereby represents and warrants that it has the power and -authority to grant the rights and licenses granted to Licensee under this -Agreement. - -Except as set forth above, the Licensed Software is licensed to Licensee "as -is". - -TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE QT COMPANY ON BEHALF OF -ITSELF AND ITS LICENSORS, SUPPLIERS AND AFFILIATES, DISCLAIMS ALL WARRANTIES, -EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT -WITH REGARD TO THE LICENSED SOFTWARE. THE QT COMPANY DOES NOT WARRANT THAT THE -LICENSED SOFTWARE WILL SATISFY LICENSEE'S REQUIREMENTS OR THAT IT WILL OPERATE -WITHOUT DEFECT OR ERROR OR THAT THE OPERATION THEREOF WILL BE UNINTERRUPTED. ALL -USE OF AND RELIANCE ON THE LICENSED SOFTWARE IS AT THE SOLE RISK OF AND -RESPONSIBILITY OF LICENSEE. - -Licensee's exclusive remedy and The Qt Company's entire liability for Licensed -Software shall be limited, at The Qt Company's option, to correction of the -error, replacement of the Licensed Software or return of the applicable fees -paid for the defective Licensed Software for the time period during which the -License is not able to utilize the Licensed Software under the terms of this -Agreement. - -7. INDEMNIFICATION AND LIMITATION OF LIABILITY - -7.1 Limitation of Liability - -EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, (II) -LICENSEE'S DUTY TO PAY ALL APPLICABLE LICENSE FEES AND COMPENSATIONS, AND (III) -BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO -EVENT SHALL EITHER PARTY BE LIABLE TO THE OTHER PARTY FOR ANY LOSS OF PROFIT, -LOSS OF DATA, LOSS OF BUSINESS OR GOODWILL OR ANY OTHER INDIRECT, SPECIAL, -CONSEQUENTIAL, INCIDENTAL OR PUNITIVE COST, DAMAGES OR EXPENSE OF ANY KIND, -HOWSOEVER ARISING UNDER OR IN CONNECTION WITH THIS AGREEMENT. - -EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, (II) -LICENSEE'S DUTY TO PAY ALL APPLICABLE LICENSE FEES AND COMPENSATIONS, AND (III) -BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO -EVENT SHALL EITHER PARTY'S TOTAL AGGREGATE LIABILITY UNDER THIS AGREEMENT EXCEED -THE AGGREGATE LICENSE FEES RECEIVED BY THE QT COMPANY FROM LICENSEE DURING THE -PERIOD OF TWELVE (12) MONTHS IMMEDIATELY PRECEDING THE EVENT RESULTING IN SUCH -LIABILITY. - -THE PROVISIONS OF THIS SECTION 7 ALLOCATE THE RISKS UNDER THIS AGREEMENT BETWEEN -THE QT COMPANY AND LICENSEE AND THE PARTIES HAVE RELIED UPON THE LIMITATIONS SET -FORTH HEREIN IN DETERMINING WHETHER TO ENTER INTO THIS AGREEMENT. - -7.2 Licensee´s Indemnification - -Licensee shall indemnify and hold harmless The Qt Company from and against any -claim, injury, judgment, settlement, loss or expense, including attorneys' fees -related to: (a) Licensee's misrepresentation in connection with The Qt Company -or the Licensed Software or breach of this Agreement, (b) the Application or -Device (except where such cause of liability is solely attributable to the -Licensed Software). - -8. SUPPORT, UPDATES AND ONLINE SERVICES - -Licensee will be eligible to receive Support and Updates and to use the Online -Services during the Support Term. Unless otherwise decided by The Company at its -free and absolute discretion, Upgrades will not be included in the Support but -may be available subject to additional fees. - -Licenses granted under this Agreement shall include a prepaid Initial Support -Term. - -Initial Support Term shall be automatically extended to one or more Support -Renewal Term(s), unless and until either Party notifies the other Party in -writing that it does not wish to continue the Support, such notification to be -provided to the other Party no less than ninety (90) days before expiry of the -Initial Support Term or respective Support Renewal Term. During any such Support -Renewal Term Support shall be available subject to prices and terms agreed -between the Parties or, if no advance agreement exists, subject to The Qt -Company's standard pricing applicable at the commencement date of any such -Support Renewal Term. From time to time The Qt Company may change Support -provided within each Support plan; provided that during the respective Initial -Support Term or Support Renewal Term (as the case may be), the level of Support -provided by The Qt Company may not be reduced without the consent of the -Licensee. - -Unless otherwise agreed, The Qt Company shall not be responsible for providing -any service or support to the Customers. - -9. CONFIDENTIALITY - -Each Party acknowledges that during the Term of this Agreement each Party may -receive information about the other Party's business, business methods, business -plans, customers, business relations, technology, and other information, -including the terms of this Agreement, that is confidential and of great value -to the other Party, and the value of which would be significantly reduced if -disclosed to third parties ("Confidential Information"). Accordingly, when a -Party (the "Receiving Party") receives Confidential Information from the other -Party (the "Disclosing Party"), the Receiving Party shall only disclose such -information to employees and Contractors on a need to know basis, and shall -cause its employees and employees of its Affiliates to: (i) maintain any and all -Confidential Information in confidence; (ii) not disclose the Confidential -Information to a third party without the Disclosing Party's prior written -approval; and (iii) not, directly or indirectly, use the Confidential -Information for any purpose other than for exercising its rights and fulfilling -its responsibilities pursuant to this Agreement. Each Party shall take -reasonable measures to protect the Confidential Information of the other Party, -which measures shall not be less than the measures taken by such Party to -protect its own confidential and proprietary information. - -Obligation of confidentiality shall not apply to information that (i) is or -becomes generally known to the public through no act or omission of the -Receiving Party; (ii) was in the Receiving Party's lawful possession prior to -the disclosure hereunder and was not subject to limitations on disclosure or -use; (iii) is developed independently by employees or Contractors of the -Receiving Party or other persons working for the Receiving Party who have not -had access to the Confidential Information of the Disclosing Party, as proven by -the written records of the Receiving Party; (iv) is lawfully disclosed to the -Receiving Party without restrictions, by a third party not under an obligation -of confidentiality; or (v) the Receiving Party is legally compelled to disclose, -in which case the Receiving Party shall notify the Disclosing Party of such -compelled disclosure and assert the privileged and confidential nature of the -information and cooperate fully with the Disclosing Party to limit the scope of -disclosure and the dissemination of disclosed Confidential Information to the -minimum extent necessary. - -The obligations under this Section 9 shall continue to remain in force for a -period of five (5) years after the last disclosure, and, with respect to trade -secrets, for so long as such trade secrets are protected under applicable trade -secret laws. - -10. FEES, DELIVERY AND PAYMENT - -10.1 License Fees - -License Fees are described in The Qt Company's standard price list, quote or -Purchase Order confirmation or in an appendix hereto, as the case may be. The -License Fees shall not be refunded or claimed as a credit, even on the ground -that Distribution Licenses are not used, i.e. Redistributables are not actually -distributed corresponding to the Distribution Licenses purchased, or for any -other reason. - -10.2 Ordering Licenses - -Licensee may purchase Development Licenses and Distribution Licenses pursuant to -agreed pricing terms or, if no specific pricing terms have been agreed upon, at -The Qt Company's standard pricing terms applicable at the time of purchase. - -Licensee shall submit all purchase orders for Development Licenses and -Distribution Licenses to The Qt Company by email or any other method acceptable -to The Qt Company (each such order is referred to herein as a "Purchase Order") -for confirmation, whereupon the Purchase Order shall become binding between the -Parties. - -10.3 Distribution - -License Packs Unless otherwise agreed, the Distribution Licenses are bought by -way of Distribution License Packs. - -Upon due payment of the ordered Distribution License Pack(s), the Licensee will -have an account of Distribution Licenses available for installing, bundling or -integrating (all jointly "installing") the Redistributables with the Devices or -for otherwise distributing the Redistributables in accordance with this -Agreement. - -Each time Licensee "installs" or distributes a copy of Redistributables, then -one Distribution License is used, and Licensee's account of available -Distribution Licenses is decreased accordingly. - -Licensee may "install" copies of the Redistributables so long as Licensee has -Distribution Licenses remaining on its account. - -Redistributables will be deemed to have been "installed" into a Device when one -of the following circumstances shall have occurred: a) the Redistributables -have been loaded onto the Device and used outside of the Licensee's premises or -b) the Device has been fully tested and placed into Licensee's inventory (or -sold) for the first time (i.e., Licensee will not be required to use (or pay -for) more than one Distribution License for each individual Device, e.g. in a -situation where a Device is returned to Licensee's inventory after delivery to -a distributor or sale to a Customer). In addition, if Licensee includes a -back-up copy of the Redistributables on a CD-ROM or other storage medium -along with the product, that backup copy of the Redistributables will not -be deemed to have been "installed" and will not require an additional -Distribution License. - -10.4 Payment Terms -License Fees and any other charges under this Agreement shall be paid by -Licensee no later than thirty (30) days from the date of the applicable invoice -from The Qt Company. - -The Qt Company will submit an invoice to Licensee after the date of this -Agreement and/or after The Qt Company receives a Purchase Order from Licensee. -A late payment charge of the lower of (a) one percent per month; or (b) the -interest rate stipulated by applicable law, shall be charged on any unpaid -balances that remain past due. - -The Qt Company shall have the right to suspend, terminate or withhold grants of -all rights to the Licensed Software hereunder, including but not limited to the -Developer License, Distribution License, and Support, should Licensee fail to -make payment in a timely fashion. - -10.5 Taxes -All License Fees and other charges payable hereunder are gross amounts but -exclusive of any value added tax, use tax, sales tax and other taxes, duties or -tariffs ("Taxes"). Such applicable Taxes shall be paid by Licensee, or, where -applicable, in lieu of payment of such Taxes, Licensee shall provide an -exemption certificate to The Qt Company and any applicable authority. - -11 RECORD-KEEPING AND REPORTING OBLIGATIONS; AUDIT RIGHTS - -11.1 Licensee's Record-keeping - -Licensee shall at all times maintain accurate and up-to-date written records of -Licensee's activities related to the use of Licensed Software and distribution -of Redistributables. The records shall be adequate to determine Licensee's -compliance with the provisions of this Agreement and to demonstrate the number -of Designated Users and Redistributables distributed by Licensee. The records -shall conform to good accounting practices reasonably acceptable to The Qt -Company. - -Licensee shall, within thirty (30) days from the end of each calendar -quarter, deliver to The Qt Company a report detailing the number of Designated -Users and copies of Redistributables distributed by Licensee during that -calendar quarter, and also detailing the number of undistributed copies of -Redistributables made by Licensee and remaining in its account (i.e., -undistributed copies for which Distribution Licenses have been or need to be -obtained from The Qt Company). Such report shall contain such other information -as The Qt Company shall reasonably require from time to time. - -11.2. The Qt Company's Audit Rights - -The Qt Company or an independent auditor acting on behalf of The Qt Company's, -may, upon at least five (5) business days' prior written notice and at its -expense, audit Licensee with respect to the use of the Redistributables, but -not more frequently than once during each 6-month period. Such audit may be -conducted by mail, electronic means or through an in-person visit to -Licensee's place of business. Any such in-person audit shall be conducted -during regular business hours at Licensee's facilities and shall not -unreasonably interfere with Licensee's business activities. The Qt Company or -the independent auditor acting on behalf of The Qt Company shall be entitled to -inspect Licensee's Records. All such Licensee's Records and use thereof shall be -subject to an obligation of confidentiality under this Agreement. - -If an audit reveals that Licensee is using the Licensed Software beyond scope of -the licenses Licensee has paid for, Licensee agrees to immediately pay The Qt -Company any amounts owed for such unauthorized use. - -In addition, in the event the audit reveals a material violation of the terms of -this Agreement (underpayment of more than 5% of License Fees shall always be -deemed a material violation for purposes of this section), then the Licensee -shall pay The Qt Company's reasonable cost of conducting such audit. - -12 TERM AND TERMINATION - -12.1 Term - -This Agreement shall enter into force upon due acceptance by both Parties and -remain in force for the Term, unless and until terminated pursuant to the terms -of this Section 12. - -12.2 Termination by The Qt Company - -The Qt Company shall have the right to terminate this Agreement upon thirty -(30) days prior written notice if (i) the Licensee is in material breach of any -obligation of this Agreement and fails to remedy such breach within such notice -period; (ii) or Licensee or any of its Affiliates bring a suit before any court -or administrative agency or otherwise assert a claim against The Qt Company's -or any of its Affiliates' Intellectual Property Rights or validity thereof. - -12.3 Mutual Right to Terminate - -Either Party shall have the right to terminate this Agreement immediately upon -written notice in the event that the other Party becomes insolvent, files for -any form of bankruptcy, makes any assignment for the benefit of creditors, has a -receiver, administrative receiver or officer appointed over the whole or a -substantial part of its assets, ceases to conduct business, or an act equivalent -to any of the above occurs under the laws of the jurisdiction of the other -Party. - -12.4 Parties´ Rights and Duties upon Termination - -Upon expiry or termination of the Agreement for any reason, Licensee shall, -within 30 days after such termination, cease and shall cause all Designated -Users (including those of its Affiliates' and Contractors') and Licensee's SDK -Contractors to cease using the Licensed Software and distribution of the -Redistributables under this Agreement. Notwithstanding the above, in the event -the Agreement expires or is terminated for reason other than by The Qt Company -pursuant to Section 12.2, the Licensee is entitled, for a period of six (6) -months after the effective date of termination, to continue distribution of -Devices under the Distribution Licenses paid but unused at such effective date -of termination. - -Upon any such termination the Licensee shall destroy or return to The Qt -Company all copies of the Licensed Software and all related materials and will -certify the same to The Qt Company upon its request, provided however that -Licensee may retain and exploit such copies of the Licensed Software as it may -reasonably require in providing continued support to Customers. - -Expiry or termination of this Agreement for any reason whatsoever shall not -relieve Licensee of its obligation to pay any License Fees accrued or payable -to The Qt Company prior to the effective date of termination, and Licensee shall -immediately pay to The Qt Company all such fees upon the effective date of -termination. Termination of this Agreement shall not affect any rights of -Customers to continue use of Applications and Devices (and therein incorporated -Redistributables). - -13.GOVERNING LAW AND LEGAL VENUE - -In the event this Agreement is in the name of The Qt Company Inc., a Delaware -Corporation, then: - -(i) this Agreement shall be construed and interpreted in accordance with the -laws of the State of California, USA, excluding its choice of law provisions; - -(ii) the United Nations Convention on Contracts for the International Sale of -Goods will not apply to this Agreement; and - -(iii) any dispute, claim or controversy arising out of or relating to this -Agreement or the breach, termination, enforcement, interpretation or validity -thereof, including the determination of the scope or applicability of this -Agreement to arbitrate, shall be determined by arbitration in San Francisco, -USA, before one arbitrator. The arbitration shall be administered by JAMS -pursuant to JAMS' Streamlined Arbitration Rules and Procedures. Judgment on the -Award may be entered in any court having jurisdiction. This Section shall not -preclude parties from seeking provisional remedies in aid of arbitration from a -court of appropriate jurisdiction. - -In the event this Agreement is in the name of The Qt Company Ltd., a Finnish -Company, then: - -(i) this Agreement shall be construed and interpreted in accordance with the -laws of Finland, excluding its choice of law provisions; - -(ii) the United Nations Convention on Contracts for the International Sale of -Goods will not apply to this Agreement; and - -(iii) any disputes, controversy or claim arising out of or relating to this -Agreement, or the breach, termination or validity thereof shall be shall be -finally settled by arbitration in accordance with the Arbitration Rules of -Finland Chamber of Commerce. The arbitration tribunal shall consist of one (1), -or if either Party so requires, of three (3), arbitrators. The award shall be -final and binding and enforceable in any court of competent jurisdiction. The -arbitration shall be held in Helsinki, Finland and the process shall be -conducted in the English language. This Section shall not preclude parties from -seeking provisional remedies in aid of arbitration from a court of appropriate -jurisdiction. - -14. GENERAL PROVISIONS - -14.1 No Assignment Licensee - -shall not be entitled to assign or transfer all or any of its rights, benefits -and obligations under this Agreement without the prior written consent of The Qt -Company, which shall not be unreasonably withheld or delayed. The Qt Company -shall be entitled to freely assign or transfer any of its rights, benefits or -obligations under this Agreement. - -14.2 No Third Party Representations - -Licensee shall make no representations or warranties concerning the Licensed -Software on behalf of The Qt Company. Any representation or warranty Licensee -makes or purports to make on The Qt Company's behalf shall be void as to The Qt -Company. - -14.3 Surviving Sections - -Any terms and conditions that by their nature or otherwise reasonably should -survive termination of this Agreement shall so be deemed to survive. - -14.4 Entire Agreement - -This Agreement, the exhibits hereto, the License Certificate and any applicable -Purchase Order constitute the complete agreement between the Parties and -supersedes all prior or contemporaneous discussions, representations, and -proposals, written or oral, with respect to the subject matters discussed -herein. In the event of any conflict or inconsistency between this Agreement and -any Purchase Order, the terms of this Agreement will prevail over the terms of -the Purchase Order with respect to such conflict or inconsistency. - -14.5 Modifications - -No modification of this Agreement shall be effective unless contained in a -writing executed by an authorized representative of each Party. No term or -condition contained in Licensee's Purchase Order shall apply unless expressly -accepted by The Qt Company in writing. - -14.6 Force Majeure - -Except for the payment obligations hereunder, neither Party shall be liable to -the other for any delay or non-performance of its obligations hereunder in the -event and to the extent that such delay or non- performance is due to an event -of act of God, terrorist attack or other similar unforeseeable catastrophic -event that prevents either Party for fulfilling its obligations under this -Agreement and which such Party cannot avoid or circumvent ("Force Majeure -Event"). If the Force Majeure Event results in a delay or non- performance of a -Party for a period of three (3) months or longer, then either Party shall have -the right to terminate this Agreement with immediate effect without any -liability (except for the obligations of payment arising prior to the event of -Force Majeure) towards the other Party. - -14.7 Notices - -Any notice given by one Party to the other shall be deemed properly given and -deemed received if specifically acknowledged by the receiving Party in writing -or when successfully delivered to the recipient by hand, fax, or special courier -during normal business hours on a business day to the addresses specified for -The Qt Company in the beginning of this Agreement, and for the Licensee in the -Licensee’s account profile. Each communication and document made or delivered by -one Party to the other Party pursuant to this Agreement shall be in the English -language. - -14.8 Export Control -Licensee acknowledges that the Redistributables may be subject to export -control restrictions under the applicable laws of respective countries. -Licensee shall fully comply with all applicable export license restrictions -and requirements as well as with all lawses hereunder and shall procure all -necessary governmental authorizations, including without limitation, all -necessary licenses, approvals, permissions or consents, where necessary for -the re- exportation of the Redistributables, Applications -and/or Devices. - -14.9 No Implied License -There are no implied licenses or other implied rights granted under this -Agreement, and all rights, save for those expressly granted hereunder, shall -remain with The Qt Company and its licensors. In addition, no licenses or -immunities are granted to the combination of the Licensed Software with any -other software or hardware not delivered by The Qt Company under this Agreement. - -14.10 Attorney Fees - -The prevailing Party in any action to enforce this Agreement shall be entitled -to recover its attorney's fees and costs in connection with such action. - -14.11 Severability - -If any provision of this Agreement shall be adjudged by any court of competent -jurisdiction to be unenforceable or invalid, that provision shall be limited or -eliminated to the minimum extent necessary so that this Agreement shall -otherwise remain in full force and effect and enforceable. - -IN WITNESS WHEREOF, the Parties hereto, intending to be legally bound hereby, -have caused this Agreement to be executed by Licensee’s authorized -representative installing the Licensed Software and accepting the terms hereof -in connection therewith. - -Appendix 1 - -1. Parts of the Licensed Software that are permitted for distribution in object -code form only ("Redistributables") under this Agreement: - -- The Licensed Software's essential and add-on libraries - -- The Licensed Software's configuration tool ("qtconfig") - -- The Licensed Software's help tool ("Qt Assistant") - -- The Licensed Software's internationalization tools ("Qt Linguist", "lupdate", -"lrelease") - -- The Licensed Software's QML ("Qt Quick") launcher tool ("qmlscene" and -"qmlviewer") - -- The Licensed Software's installer framework - -2. Parts of the Licensed Software that are not permitted for distribution -include, but are not limited to: - -- The Licensed Software's source code and header files - -- The Licensed Software's documentation - -- The Licensed Software's documentation generation tool ("qdoc") - -- The Licensed Software's tool for writing makefiles ("qmake") - -- The Licensed Software's Meta Object Compiler ("moc") - -- The Licensed Software's User Interface Compiler ("uic" or in the case of Qt Jambi: "juic") - -- The Licensed Software's Resource Compiler ("rcc") - -- The Licensed Software's generator (only in the case of Qt Jambi if applicable) - -- The Licensed Software's parts of the IDE tool ("Qt Creator") - -- The Licensed Software's Emulator - -- Build scripts, recipes and other material for creating the -configuration of Licensed Software and/or 3rd party components, including the -reference operating system configuration delivered in conjunction with the diff -Nru qtbase-opensource-src-5.15.3+dfsg/.QT-FOR-DEVICE-CREATION-LICENSE-AGREEMENT qtbase-opensource-src-5.15.8+dfsg/.QT-FOR-DEVICE-CREATION-LICENSE-AGREEMENT --- qtbase-opensource-src-5.15.3+dfsg/.QT-FOR-DEVICE-CREATION-LICENSE-AGREEMENT 2021-03-30 02:27:15.450110200 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/.QT-FOR-DEVICE-CREATION-LICENSE-AGREEMENT 1970-01-01 08:00:00.000000000 +0800 @@ -1,1315 +0,0 @@ -QT LICENSE AGREEMENT -Agreement version 4.3 - -This Qt License Agreement ("Agreement") is a legal agreement for the licensing -of Licensed Software (as defined below) between The Qt Company (as defined -below) and the Licensee who has accepted the terms of this Agreement by -downloading or using the Licensed Software and/or as defined herein: - -Capitalized terms used herein are defined in Section 1. - -WHEREAS: - (A) Licensee wishes to use the Licensed Software for the purpose of - developing and distributing Applications and/or Devices (each as - defined below); and - (B) The Qt Company is willing to grant the Licensee a right to use - Licensed Software for such a purpose pursuant to term and conditions - of this Agreement. - -NOW, THEREFORE, THE PARTIES HEREBY AGREE AS FOLLOWS: - -1. DEFINITIONS - -"Affiliate" of a Party shall mean an entity (i) which is directly -or indirectly controlling such Party; (ii) which is under the same direct or -indirect ownership or control as such Party; or (iii) which is directly or -indirectly owned or controlled by such Party. For these purposes, an entity -shall be treated as being controlled by another if that other entity has fifty -percent (50 %) or more of the votes in such entity, is able to direct its -affairs and/or to control the composition of its board of directors or -equivalent body. - -"Add-on Products" shall mean The Qt Company's specific add-on software products -(for example Qt Safe Renderer, Qt for Automation, Qt Application Manager), which -are not licensed as part of The Qt Company's standard offering, but shall be -included into the scope of Licensed Software only if so specifically agreed -between the Parties. - -"Applications" shall mean Licensee's software products created using the -Licensed Software, which may include the Redistributables, or part thereof. - -"Contractor(s)" shall mean third party consultants, distributors and contractors -performing services to the Licensee under applicable contractual arrangement. - -"Customer(s)" shall mean Licensee's end users to whom Licensee, directly or -indirectly, distributes copies of the Redistributables. - -"Data Protection Legislation" shall mean the General Data Protection Regulation -(EU 2016/679) (GDPR) and any national implementing laws, regulations and -secondary legislation, as may be amended or updated from time to time, as well -as any other data protection laws or regulations applicable in relevant -territory. - -"Deployment Platforms" shall mean operating systems and/or hardware specified -in the License Certificate, on which the Redistributables can be distributed -pursuant to the terms and conditions of this Agreement. - -"Designated User(s)" shall mean the employee(s) of Licensee or Licensee's -Affiliates acting within the scope of their employment or Licensee's Contractors -acting within the scope of their services for Licensee and on behalf of -Licensee. Designated Users shall be named in the License Certificate. - -"Development License" shall mean the license needed by the Licensee for each -Designated User to use the Licensed Software under the license grant described -in Section 3.1 of this Agreement. Development Licenses are available per -respective Licensed Software products, each product having its designated scope -and purpose of use. Distribution Licenses are always connected to Qt for Device -Creation product and Qt for MCUs product only. - -"Development Platforms" shall mean those operating systems specified in the -License Certificate, in which the Licensed Software can be used under the -Development License, but not distributed in any form or used for any other purpose. - -"Devices" shall mean hardware devices or products that 1) are manufactured -and/or distributed by the Licensee or its Affiliates or Contractors, and (2)(i) -incorporate or integrate the Redistributables or parts thereof; or (ii) where -the main user interface or substantial functionality of such unit , when used by -a Customer, is provided by Application(s) or otherwise depends on the Licensed -Software, regardless of whether the Redistributables are distributed together -with the hardware or not. Devices covered with this Agreement shall be specified -in Appendix 2 or in a quote. - -"Distribution License(s)" shall mean the license required for any kind of sale, -trade, exchange, loan, lease, rental or other distribution by or on behalf of -Licensee to a third party of Redistributables in connection with Devices -ursuant to license grant described in Section 3.3 of this Agreement. - -"Distribution License Packs" shall mean set of prepaid Distribution Licenses for -distribution of Redistributables, as defined in The Qt Company's standard price -list, quote, Purchase Order confirmation or in an appendix hereto, as the case -may be. - -"Intellectual Property Rights" shall mean patents (including utility models), -design patents, and designs (whether or not capable of registration), chip -topography rights and other like protection, copyrights, trademarks, service -marks, trade names, logos or other words or symbols and any other form of -statutory protection of any kind and applications for any of the foregoing as -well as any trade secrets. - -"License Certificate" shall mean a certificate generated by The Qt Company for -each Designated User respectively upon them downloading the Licensed Software, -which will be available under respective Designated User's Qt Account at -account.qt.io. License Certificates will specify the Designated User, the -Development Platforms, Deployment Platforms and the License Term. Such terms are -considered part of the licenses granted hereunder and shall be updated from time -to time to reflect any agreed changes to the foregoing terms relating to -Designated User's rights to the Licensed Software. - -"License Fee" shall mean the fee charged to the Licensee for rights granted -under the terms of this Agreement. - -"License Term" shall mean the agreed validity period of the Development License -of the respective Designated User, during which time the Designated User is -entitled to use the Licensed Software, as set forth in the respective License -Certificate. - -"Licensed Software" shall mean either - (i) Qt for Application Development or - (ii) Qt for Device Creation, and/or - (iii) Qt 3D Studio, and/or - (iv) Qt Design Studio, and/or - (v) Qt for MCUs, and/or - (vi) selected Add-on Products, if any, - -depending on which product(s) the Licensee has purchased under this Agreement, -as well as corresponding online or electronic documentation, associated media -and printed materials, including the source code (where applicable), example -programs and the documentation, licensed to the Licensee under this Agreement. -Licensed Software does not include Third Party Software (as defined in -Section 4) or Open Source Qt. The Qt Company may, in the course of its -development activities, at its free and absolute discretion and without any -obligation to send or publish any notifications to the Licensee or in general, -make changes, additions or deletions in the components and functionalities of -the Licensed Software, provided that no such changes, additions or deletions -will affect the already released version of the Licensed Software, but only -upcoming version(s). - -"Licensee" shall mean the individual or legal entity that is party to this -Agreement, as identified on the signature page hereof. - -"Licensee's Records" shall mean books and records that are likely to contain -information bearing on Licensee's compliance with this Agreement, Licensee's use -of Open Source Qt and/or the payments due to The Qt Company under this -Agreement, including, but not limited to user information, assembly logs, sales -records and distribution records. - -"Modified Software" shall have the meaning as set forth in Section 2.3. - -"Online Services" shall mean any services or access to systems made available by -The Qt Company to the Licensee over the Internet relating to the Licensed -Software or for the purpose of use by the Licensee of the Licensed Software or -Support. Use of any such Online Services is discretionary for the Licensee and -some of them may be subject to additional fees. - -"Open Source Qt" shall mean the non-commercial Qt computer software products, -licensed under the terms of the GNU Lesser General Public License, version 2.1 -or later ("LGPL") or the GNU General Public License, version 2.0 or later -("GPL"). For clarity, Open Source Qt shall not be provided nor governed under -this Agreement. - -"Party" or "Parties" shall mean Licensee and/or The Qt Company. - -"Permitted Combination" shall have the meaning as set forth in Section -3.4(viii). - -"Pre-Release Code" shall have the meaning as set forth in Section 4. - -"Prohibited Combination" shall mean any means to (i) use, combine, incorporate, -link or integrate Licensed Software with any software created with or -incorporating Open Source Qt, (ii) use Licensed Software for creation of any -software created with or incorporating Open Source Qt, or (iii) incorporate or -integrate Applications into a hardware device or product other than a Device. - -"Qt 3D Studio" shall mean The Qt Company's productized offering, which consist -of all versions of modules and tools as set forth in Appendix 1. - -"Qt Design Studio" shall mean The Qt Company's productized offering, which -consist of all versions of modules and tools as set forth in Appendix 1. - -"Qt for Application Development" shall mean The Qt Company's productized -offering, which consist of all versions of modules and tools as set forth in -Appendix 1. - -"Qt for Device Creation" shall mean The Qt Company's productized offering, -which consist of all versions of modules and tools as set forth in Appendix 1. - -"Qt for MCUs" shall mean The Qt Company's productized offering, which consist -of all versions of modules and tools as set forth in Appendix 1. - -"Redistributables" shall mean the portions of the Licensed Software set forth -in Appendix 1 that may be distributed pursuant to the terms of this Agreement -in object code form only, including any relevant documentation. Where -relevant, any reference to Licensed Software in this Agreement shall include -and refer also to Redistributables. - -"Renewal Term" shall mean an extension of previous License Term as agreed -between the Parties. - -"Submitted Modified Software" shall have the meaning as set forth in Section -2.3. - -"Support" shall mean standard developer support that is provided by The Qt -Company to assist Designated Users in using the Licensed Software in accordance -with The Qt Company's standard support terms available at -https://www.qt.io/terms-conditions/ and as further defined in Section 8 -hereunder. - -"Taxes" shall have the meaning set forth in Section 10.5. - -"Term" shall have the meaning set forth in Section 12. - -"The Qt Company" shall mean: - (i) in the event Licensee is an individual residing in the United States - or a legal entity incorporated in the United States or having its - headquarters in the United States, The Qt Company Inc., a - Delaware corporation with its office at 2350 Mission College Blvd., - Suite 1020, Santa Clara, CA 95054, USA.; or - (ii) in the event the Licensee is an individual residing outside of the - United States or a legal entity incorporated outside of the United - States or having its registered office outside of the United States, - The Qt Company Ltd., a Finnish company with its registered office - at Bertel Jungin aukio D3A, 02600 Espoo, Finland. - -"Third-Party Software" shall have the meaning set forth in Section 4. - -"Updates" shall mean a release or version of the Licensed Software containing -bug fixes, error corrections and other changes that are generally made available -to users of the Licensed Software that have contracted for Support. Updates are -generally depicted as a change to the digits following the decimal in the -Licensed Software version number. The Qt Company shall make Updates available to -the Licensee under the Support. Updates shall be considered as part of the -Licensed Software hereunder. - -"Upgrades" shall mean a release or version of the Licensed Software containing -enhancements and new features and are generally depicted as a change to the -first digit of the Licensed Software version number. In the event Upgrades are -provided to the Licensee under this Agreement, they shall be considered as part -of the Licensed Software hereunder. - -2. OWNERSHIP - -2.1. Ownership of The Qt Company -The Licensed Software is protected by copyright laws and international copyright -treaties, as well as other intellectual property laws and treaties. The Licensed -Software is licensed, not sold. - -All of The Qt Company's Intellectual Property Rights are and shall remain the -exclusive property of The Qt Company or its licensors respectively. - -2.2. Ownership of Licensee -All the Licensee's Intellectual Property Rights are and shall remain the -exclusive property of the Licensee or its licensors respectively. - -All Intellectual Property Rights to the Modified Software, Applications and Devices -shall remain with the Licensee and no rights thereto shall be granted by the -Licensee to The Qt Company under this Agreement (except as set forth in Section -2.3 below). - -2.3. Modified Software -Licensee may create bug-fixes, error corrections, patches or modifications to -the Licensed Software ("Modified Software"). Such Modified Software may break -the source or binary compatibility with the Licensed Software (including without -limitation through changing the application programming interfaces ("API") or by -adding, changing or deleting any variable, method, or class signature in the -Licensed Software and/or any inter-process protocols, services or standards in -the Licensed Software libraries). To the extent that Licensee's Modified -Software so breaks source or binary compatibility with the Licensed Software, -Licensee acknowledges that The Qt Company's ability to provide Support may be -prevented or limited and Licensee's ability to make use of Updates may be restricted. - -Licensee may, at its sole and absolute discretion, choose to submit Modified -Software to The Qt Company ("Submitted Modified Software") in connection with -Licensee's Support request, service request or otherwise. In the event Licensee -does so, then, Licensee hereby grants The Qt Company a sublicensable, -assignable, irrevocable, perpetual, worldwide, non-exclusive, royalty-free and -fully paid-up license, under all of Licensee's Intellectual Property Rights, to -reproduce, adapt, translate, modify, and prepare derivative works of, publicly -display, publicly perform, sublicense, make available and distribute such -Submitted Modified Software as The Qt Company sees fit at its free and absolute -discretion. - -3. LICENSES GRANTED - -3.1. Development with Licensed Software -Subject to the terms of this Agreement, The Qt Company grants to Licensee a -worldwide, non-exclusive, non-transferable license, valid for the License Term, -to use, modify and copy the Licensed Software by Designated Users on the -Development Platforms for the sole purposes of designing, developing, -demonstrating and testing Application(s) and/or Devices, and to provide thereto -related support and other related services to end-user Customers. Each -Application and/or Device can only include, incorporate or integrate code -generated under this Agreement by such Designated Users who are duly licensed -for the applicable Development Platform(s) and Deployment Platform(s) (i.e have -a valid license for the appropriate Licensed Software product). - -Licensee may install copies of the Licensed Software on five (5) computers per -Designated User, provided that only the Designated Users who have a valid -Development License may use the Licensed Software. - -Licensee may at any time designate another Designated User to replace a -then-current Designated User by notifying The Qt Company in writing, provided -that any Designated User may be replaced only once during any six-month period. - -Upon expiry of the initially agreed License Term, the respective License Terms -shall be automatically extended to one or more Renewal Term(s), unless and -until either Party notifies the other Party in writing, or any other method -acceptable to The Qt Company, that it does not wish to continue the License -Term, such notification to be provided to the other Party no less than thirty -(30) days before expiry of the respective License Term. - -Unless otherwise agreed between the Parties, Renewal Term shall be of equal -length with the initial License Term. - -Any such Renewal Term shall be subject to License Fees agreed between the -Parties or, if no advance agreement exists, subject to The Qt Company's standard -pricing applicable at the commencement date of any such Renewal Term. - -Any price or other term specified for a Renewal Term shall be valid only for the -specified time. - -The Qt Company may either request the Licensee to place a purchase order -corresponding to a quote by The Qt Company, or uses Licensees stored Credit -Card information in the QtAccount to automatically charge the Licensee for the -relevant Renewal Term. - -In the event Licensee does not prevent auto-renewal pursuant the above, but a -Renewal Term is nevertheless not duly ordered within 30 days from the date of -the respective notification from The Qt Company and/or the respective License -Fee paid by due date specified in The Qt Company's respective invoice, The Qt -Company shall apply a reinstatement fee equal to ten percent (10 %) of the -total value of the License Fees of the Development Licenses for the expired -term to be added to the License Fee of the respective Renewal Term. - -In the event Licensee chooses not to renew a Development License for a Renewal -Term by notifying The Qt Company thereof no less than thirty (30) days before -expiry of the respective License Term, Licensee may still reinstate such -expired Development Licenses for a Renewal Term subject to applicable renewal -Term License Fees until thirty (30) days from the expiry of the initially -agreed License Term or preceding Renewal Term. After such thirty (30) day -period a Development License shall be subject to applicable License Fees for -a new Development License and not any Renewal Term License Fees. - -3.2. Distribution of Applications -Subject to the terms of this Agreement, The Qt Company grants to Licensee -a worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to -this Agreement) right and license, valid for the Term, to - (i) distribute, by itself or through its Contractors, Redistributables as - installed, incorporated or integrated into Applications for execution - on the Deployment Platforms, and - (ii) grant sublicenses to Redistributables, as distributed hereunder, for - Customers solely for Customer's internal use and to the extent - necessary in order for the Customers to use the Applications for their - respective intended purposes. - -Right to distribute the Redistributables as part of an Application as provided -herein is not royalty-bearing but is conditional upon the Licensee not having -any unpaid License Fees for Development Licenses owed to The Qt Company at the -time of distribution of any Redistributables to Customers. - -3.3. Distribution of Devices -Subject to the terms of this Agreement, The Qt Company grants to Licensee a -worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to -this Agreement) right and license, valid for the Term, to - (i) distribute, by itself or through one or more tiers of Contractors, - Redistributables as installed, incorporated or integrated, or intended - to be installed, incorporated or integrated into Devices for execution - on the Deployment Platforms, and - (ii) grant sublicenses to Redistributables, as distributed hereunder, for - Customers solely for Customer's internal use and to the extent - necessary in order for the Customers to use the Devices for their - respective intended purposes. - -Right to distribute the Redistributables with Devices as provided herein is -conditional upon the Licensee (i) not having any unpaid License Fees for -Development Licenses owed to The Qt Company, and (ii) having purchased and paid -corresponding Distribution Licenses at the time of distribution of any -Redistributables to Customers. - -3.4. Further Requirements -The licenses granted above in this Section 3 by The Qt Company to Licensee are -conditional and subject to Licensee's compliance with the following terms: - (i) Licensee shall not remove or alter any copyright, trademark or other - proprietary rights notice(s) contained in any portion of the Licensed - Software; - (ii) Applications must add primary and substantial functionality to the - Licensed Software so as not to compete with the Licensed Software; - (iii) Applications may not pass on functionality which in any way makes it - possible for others to create software with the Licensed Software; - provided however that Licensee may use the Licensed Software's - scripting and QML ("Qt Quick") functionality solely in order to - enable scripting, themes and styles that augment the functionality - and appearance of the Application(s) without adding primary and - substantial functionality to the Application(s); - (iv) Licensee shall not use Licensed Software in any manner or for any - purpose that infringes, misappropriates or otherwise violates any - Intellectual property or right of any third party, or that violates - any applicable law; - (v) Licensee shall not use The Qt Company's or any of its suppliers' - names, logos, or trademarks to market Applications, except that - Licensee may use "Built with Qt" logo to indicate that - Application(s) was developed using the Licensed Software; - (vi) Licensee shall not distribute, sublicense or disclose source code - of Licensed Software to any third party (provided however that - Licensee may appoint employee(s) of Contractors as Designated - Users to use Licensed Software pursuant to this Agreement). Such - right may be available for the Licensee subject to a separate - software development kit ("SDK") license agreement to be concluded - with The Qt Company; - (vii) Licensee shall not grant the Customers a right to (i) make copies of - the Redistributables except when and to the extent required to use the - Applications and/or Devices for their intended purpose, (ii) modify - the Redistributables or create derivative works thereof, (iii) - decompile, disassemble or otherwise reverse engineer Redistributables, - or (iv) redistribute any copy or portion of the Redistributables to - any third party, except as part of the onward sale of the Device on - which the Redistributables are installed; - (viii) Licensee shall not and shall cause that its Affiliates or - Contractors shall not use Licensed Software in any Prohibited - Combination, unless Licensee has received an advance written - permission from The Qt Company to do so. Absent such written - permission, any and all distribution by the Licensee during the Term - of a hardware device or product a) which incorporate or integrate any - part of Licensed Software or Open Source Qt; or b) where the main - user interface or substantial functionality is provided by software - built with Licensed Software or Open Source Qt or otherwise depends - on the Licensed Software or Open Source Qt, shall be considered to be - Device distribution under this Agreement and shall be dependent on - Licensee's compliance thereof (including but not limited to - obligation to pay applicable License Fees for such distribution). - Notwithstanding what is provided above in this sub-section (viii), - Licensee is entitled to use and combine Licensed Software with any - Permitted Software; - (ix) Licensee shall cause all of its Affiliates and Contractors entitled - to make use of the licenses granted under this Agreement, to be - contractually bound to comply with the relevant terms of this - Agreement and not to use the Licensed Software beyond the terms - hereof and for any purposes other than operating within the scope - of their services for Licensee. Licensee shall be responsible for - any and all actions and omissions of its Affiliates and Contractors - relating to the Licensed Software and use thereof (including but not - limited to payment of all applicable License Fees); - (x) Except when and to the extent explicitly provided in this Section 3, - Licensee shall not transfer, publish, disclose, display or otherwise - make available the Licensed Software; and - (xi) Licensee shall not attempt or enlist a third party to conduct or - attempt to conduct any of the above. - -Above terms shall not be applicable if and to the extent they conflict with any -mandatory provisions of any applicable laws. -Any use of Licensed Software beyond the provisions of this Agreement is -strictly prohibited and requires an additional license from The Qt Company. - -4. THIRD-PARTY SOFTWARE - -The Licensed Software may provide links to third party libraries or code -(collectively "Third-Party Software") to implement various functions. -Third-Party Software does not comprise part of the Licensed Software. In some -cases, access to Third-Party Software may be included with the Licensed -Software. Such Third-Party Software will be listed in the ".../src/3rdparty" -source tree delivered with the Licensed Software or documented in the Licensed -Software, as such may be amended from time to time. Licensee acknowledges that -use or distribution of Third-Party Software is in all respects subject to -applicable license terms of applicable third-party right holders. - -5. PRE-RELEASE CODE - -The Licensed Software may contain pre-release code and functionality, or sample -code marked or otherwise stated with appropriate designation such as "Technology -Preview", "Alpha", "Beta", "Sample" etc. ("Pre-Release Code"). - -Such Pre-Release Code may be present complimentary for the Licensee, in order to -provide experimental support or information for new platforms or preliminary -versions of one or more new functionalities or for other similar reasons. The -Pre-Release Code may not be at the level of performance and compatibility of a -final, generally available, product offering. The Pre-Release Code may not -operate correctly, may contain errors and may be substantially modified by The -Qt Company prior to the first commercial product release, if any. The Qt -Company is under no obligation to make Pre-Release Code commercially available, -or provide any Support or Updates relating thereto. The Qt Company assumes no -liability whatsoever regarding any Pre-Release Code, but any use thereof is -exclusively at Licensee's own risk and expense. - -For clarity, unless Licensed Software specifies different license terms for -the respective Pre-Release Code, the Licensee is entitled to use such -pre-release code pursuant to Section 3, just like other Licensed Software, -provided however that in the event Add-on Products are included and available -as such Pre-Release Code, Licensee's right to use such Add-on Products is -nevertheless subject to and conditional upon conclusion of separate agreement -with The Qt Company. - -6. LIMITED WARRANTY AND WARRANTY DISCLAIMER - -The Qt Company hereby represents and warrants that it has the power and -authority to grant the rights and licenses granted to Licensee under this -Agreement. - -Except as set forth above, the Licensed Software is licensed to Licensee -"as is" and Licensee's exclusive remedy and The Qt Company's entire liability -for errors in the Licensed Software shall be limited, at The Qt Company's -option, to correction of the error, replacement of the Licensed Software or -return of the applicable fees paid for the defective Licensed Software for -the time period during which the License is not able to utilize the Licensed -Software under the terms of this Agreement. - -TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE QT COMPANY ON BEHALF OF -ITSELF AND ITS LICENSORS, SUPPLIERS AND AFFILIATES, DISCLAIMS ALL OTHER -WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND -NON-INFRINGEMENT WITH REGARD TO THE LICENSED SOFTWARE. THE QT COMPANY DOES -NOT WARRANT THAT THE LICENSED SOFTWARE WILL SATISFY LICENSEE'S REQUIREMENTS OR -THAT IT WILL OPERATE WITHOUT DEFECT OR ERROR OR THAT THE OPERATION THEREOF -WILL BE UNINTERRUPTED. - -7. INDEMNIFICATION AND LIMITATION OF LIABILITY - -7.1. Limitation of Liability -EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II) -BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO -EVENT SHALL EITHER PARTY BE LIABLE TO THE OTHER PARTY FOR ANY LOSS OF PROFIT, -LOSS OF DATA, LOSS OF BUSINESS OR GOODWILL OR ANY OTHER INDIRECT, SPECIAL, -CONSEQUENTIAL, INCIDENTAL OR PUNITIVE COST, DAMAGES OR EXPENSE OF ANY KIND, -HOWSOEVER ARISING UNDER OR IN CONNECTION WITH THIS AGREEMENT. - -EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II) -BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO -EVENT SHALL EITHER PARTY'S TOTAL AGGREGATE LIABILITY UNDER THIS AGREEMENT EXCEED -THE AGGREGATE LICENSE FEES PAID OR PAYABLE TO THE QT COMPANY FROM LICENSEE -DURING THE PERIOD OF TWELVE (12) MONTHS IMMEDIATELY PRECEDING THE EVENT -RESULTING IN SUCH LIABILITY. - -THE PROVISIONS OF THIS SECTION 7 ALLOCATE THE RISKS UNDER THIS AGREEMENT -BETWEEN THE QT COMPANY AND LICENSEE AND THE PARTIES HAVE RELIED UPON THE -LIMITATIONS SET FORTH HEREIN IN DETERMINING WHETHER TO ENTER INTO THIS -AGREEMENT. - -NOTWITHSTANDING ANYTHING TO THE CONTRARY IN THIS AGREEMENT, LICENSEE SHALL -ALWAYS BE LIABLE TO PAY THE APPLICABLE LICENSE FEES CORRESPONDING TO ITS ACTUAL -USE OF LICENSED SOFTWARE. - -8. SUPPORT, UPDATES AND ONLINE SERVICES - -Upon due payment of the agreed License Fees the Licensee will be eligible to -receive Support and Updates and to use the Online Services during the License -Term, provided, however, that in the event the License Term is longer than 36 -months, the initial payment includes Support for only the first 12 months, -unless the Parties specifically otherwise agree. - -Unless otherwise decided by The Company at its free and absolute discretion, -Upgrades will not be included in the Support but may be available subject to -additional fees. - -From time to time The Qt Company may change the Support terms, provided that -during the respective ongoing License Term the level of Support provided by The -Qt Company may not be reduced without the consent of the Licensee. - -Unless otherwise agreed, The Qt Company shall not be responsible for providing -any service or support to Customers. - -9. CONFIDENTIALITY - -Each Party acknowledges that during the Term of this Agreement each Party may -receive information about the other Party's business, business methods, -business plans, customers, business relations, technology, and other -information, including the terms of this Agreement, that is confidential and -of great value to the other Party, and the value of which would be -significantly reduced if disclosed to third parties ("Confidential -Information"). Accordingly, when a Party (the "Receiving Party") receives -Confidential Information from the other Party (the "Disclosing Party"), the -Receiving Party shall only disclose such information to employees and -Contractors on a need to know basis, and shall cause its employees and -employees of its Affiliates to: (i) maintain any and all Confidential -Information in confidence; (ii) not disclose the Confidential Information to -a third party without the Disclosing Party's prior written approval; and (iii) -not, directly or indirectly, use the Confidential Information for any purpose -other than for exercising its rights and fulfilling its responsibilities -pursuant to this Agreement. Each Party shall take reasonable measures to -protect the Confidential Information of the other Party, which measures shall -not be less than the measures taken by such Party to protect its own -confidential and proprietary information. - -Obligation of confidentiality shall not apply to information that (i) is or -becomes generally known to the public through no act or omission of the -Receiving Party; (ii) was in the Receiving Party's lawful possession prior -to the disclosure hereunder and was not subject to limitations on disclosure -or use; (iii) is developed independently by employees or Contractors of the -Receiving Party or other persons working for the Receiving Party who have not -had access to the Confidential Information of the Disclosing Party, as proven -by the written records of the Receiving Party; (iv) is lawfully disclosed to -the Receiving Party without restrictions, by a third party not under an -obligation of confidentiality; or (v) the Receiving Party is legally compelled -to disclose, in which case the Receiving Party shall notify the Disclosing -Party of such compelled disclosure and assert the privileged and confidential -nature of the information and cooperate fully with the Disclosing Party to -limit the scope of disclosure and the dissemination of disclosed Confidential -Information to the minimum extent necessary. - -The obligations under this Section 9 shall continue to remain in force for a -period of five (5) years after the last disclosure, and, with respect to trade -secrets, for so long as such trade secrets are protected under applicable -trade secret laws. - -10. FEES, DELIVERY AND PAYMENT - -10.1. License Fees -License Fees are described in The Qt Company's standard price list, quote or -Purchase Order confirmation or in an appendix hereto, as the case may be. - -The License Fees shall not be refunded or claimed as a credit in any event or -for any reason whatsoever. - -10.2. Ordering Licenses -Licensee may purchase Development Licenses and Distribution Licenses pursuant -to agreed pricing terms or, if no specific pricing terms have been agreed -upon, at The Qt Company's standard pricing terms applicable at the time of -purchase. Unless specifically otherwise provided, any pricing terms -referenced in this Agreement shall be valid for twelve (12) months from the -date of this Agreement. - -Licensee shall submit all purchase orders for Development Licenses and -Distribution Licenses to The Qt Company by email or any other method -acceptable to The Qt Company (each such order is referred to herein as a -"Purchase Order") for confirmation, whereupon the Purchase Order shall -become binding between the Parties. - -10.3. Distribution License Packs -Unless otherwise agreed, Distribution Licenses shall be purchased by way of -Distribution License Packs. - -Upon due payment of the ordered Distribution License Pack(s), the Licensee -will have an account of Distribution Licenses available for distributing -the Redistributables in accordance with this Agreement. - -Each time Licensee distributes a copy of Redistributables, then one -Distribution License is used, and Licensee's account of available -Distribution Licenses is decreased accordingly. - -Licensee may distribute copies of the Redistributables so long as Licensee -has Distribution Licenses remaining on its account. - -10.4. Payment Terms -License Fees and any other charges under this Agreement shall be paid by -Licensee no later than thirty (30) days from the date of the applicable -invoice from The Qt Company. - -The Qt Company will submit an invoice to Licensee after the date of this -Agreement and/or after The Qt Company receives a Purchase Order from Licensee. - -A late payment charge of the lower of (a) one percent per month; or (b) the -interest rate stipulated by applicable law, shall be charged on any unpaid -balances that remain past due. - -10.5. Taxes -All License Fees and other charges payable hereunder are gross amounts but -exclusive of any value added tax, use tax, sales tax, withholding tax and -other taxes, duties or tariffs ("Taxes") levied directly for the sale, -delivery or use of Licensed Software hereunder pursuant to any applicable -law. Such applicable Taxes shall be paid by Licensee to The Qt Company, or, -where applicable, in lieu of payment of such Taxes to The Qt Company, -Licensee shall provide an exemption certificate to The Qt Company and any -applicable authority. - -11. RECORD-KEEPING AND REPORTING OBLIGATIONS; AUDIT RIGHTS - -11.1. Licensee's Record-keeping -Licensee shall at all times during the Term of this Agreement and for a -period of seven (7) years thereafter maintain Licensee's Records in an -accurate and up-to-date form. Licensee's Records shall be adequate to -reasonably enable The Qt Company to determine Licensee's compliance with -the provisions of this Agreement. The records shall conform to general -good accounting practices. - -Licensee shall, within thirty (30) days from receiving The Qt Company's -request to that effect, deliver to The Qt Company a report based on -Licensee's Records, such report to contain information, in sufficient -detail, on (i) number and identity of users working with Licensed Software -or Open Source Qt, (ii) copies of Redistributables distributed by Licensee -during the most recent calendar quarter and/or any other term specified by -The Qt Company, (iii) number of undistributed copies of Redistributables -and corresponding number of unused Distribution Licenses remaining on -Licensee's account, and (iv) any other information as The Qt Company may -reasonably require from time to time. - -11.2. The Qt Company's Audit Rights -The Qt Company or an independent auditor acting on behalf of The Qt -Company's, may, upon at least five (5) business days' prior written -notice and at its expense, audit Licensee with respect to the Licensee's -use of the Licensed Software, but not more frequently than once during -each 6-month period. Such audit may be conducted by mail, electronic means -or through an in-person visit to Licensee's place of business. Any such -in-person audit shall be conducted during regular business hours at -Licensee's facilities and shall not unreasonably interfere with Licensee's -usiness activities. The Qt Company or the independent auditor acting on -behalf of The Qt Company shall be entitled to inspect Licensee's Records -and conduct necessary interviews of Licensee's relevant employees and -Contractors. All such Licensee's Records and use thereof shall be subject -to an obligation of confidentiality under this Agreement. - -If an audit reveals that Licensee is using the Licensed Software beyond -scope of the licenses Licensee has paid for, Licensee agrees to pay The Qt -Company any amounts owed for such unauthorized use within 30 days from -receipt of the corresponding invoice from The Qt Company. - -In addition, in the event the audit reveals a material violation of the -terms of this Agreement (without limitation, either (i) underpayment of -more than 10 % of License Fees or 10,000 euros (whichever is more) or -(ii) distribution of products, which include or result from Prohibited -Combination, shall be deemed a material violation for purposes of this -section), then the Licensee shall pay The Qt Company's reasonable cost of -conducting such audit. - -12. TERM AND TERMINATION -12.1. Agreement Term -This Agreement shall enter into force upon due acceptance by both -Parties and remain in force for as long as there is any Development -License(s) purchased under this Agreement in force ("Term"), unless and -until terminated pursuant to the terms of this Section 12. - -12.2. Termination and suspension of rights -Either Party shall have the right to terminate this Agreement upon thirty -(30) days prior written notice if the other Party commits a material -breach of any obligation of this Agreement and fails to remedy such breach -within such notice period. - -Instead of termination, The Qt Company shall have the right to suspend or -withhold grants of all rights to the Licensed Software hereunder, -including but not limited to the Development Licenses, Distribution -License, and Support, should Licensee fail to make payment in timely -fashion or otherwise violates or is reasonably suspected to violate its -obligations or terms of this Agreement, and where such violation or breach -is not cured within five (5) business days following The Qt Company's -written notice thereof. - -12.3. Mutual Right to Terminate -Either Party shall have the right to terminate this Agreement immediately -upon written notice in the event that the other Party becomes insolvent, -files for any form of bankruptcy, makes any assignment for the benefit of -creditors, has a receiver, administrative receiver or officer appointed -over the whole or a substantial part of its assets, ceases to conduct -business, or an act equivalent to any of the above occurs under the laws -of the jurisdiction of the other Party. - -12.4. Parties' Rights and Duties upon Termination -Upon expiry or termination of the Agreement, Licensee shall cease and -shall cause all Designated Users (including those of its Affiliates' and -Contractors') to cease using the Licensed Software and distribution of the -Redistributables under this Agreement. - -Notwithstanding the above, in the event the Agreement expires or is terminated: - (i) as a result of The Qt Company choosing not to renew the Development - License(s) as set forth in Section 3.1, and where such decision of - non-renewal is not due to any ongoing breach or alleged breach (as - reasonably determined by The Qt Company) by Licensee of the terms of this - Agreement or any applicable license terms of Open Source Qt, then all valid - licenses possessed by the Licensee at such date shall be extended to be - valid in perpetuity under the terms of this Agreement and Licensee is - entitled to purchase additional licenses as set forth in Section 10.2; or - (ii) for reason other than by The Qt Company pursuant to item (i) above - or pursuant to Section 12.2, then the Licensee is entitled, for a - period of six (6) months after the effective date of termination, - to continue distribution of Devices under the Distribution Licenses - paid but unused at such effective date of termination. - -Upon any such termination the Licensee shall destroy or return to The Qt -Company all copies of the Licensed Software and all related materials and will -certify the same to The Qt Company upon its request, provided however that -Licensee may retain and exploit such copies of the Licensed Software as it may -reasonably require in providing continued support to Customers. - -Expiry or termination of this Agreement for any reason whatsoever shall not -relieve Licensee of its obligation to pay any License Fees accrued or payable -to The Qt Company prior to the effective date of termination, and Licensee -shall immediately pay to The Qt Company all such fees upon the effective date -of termination. Termination of this Agreement shall not affect any rights of -Customers to continue use of Applications and Devices (and therein -incorporated Redistributables). - -12.5. Extension in case of bankruptcy -In the event The Qt Company is declared bankrupt under a final, -non-cancellable decision by relevant court of law, and this Agreement is not, -at the date of expiry of the Development License(s) pursuant to Section 3.1, -assigned to party, who has assumed The Qt Company's position as a legitimate -licensor of Licensed Software under this Agreement, then all valid licenses -possessed by the Licensee at such date of expiry, and which the Licensee has -not notified for expiry, shall be extended to be valid in perpetuity under the -terms of this Agreement. - -13. GOVERNING LAW AND LEGAL VENUE - -In the event this Agreement is in the name of The Qt Company Inc., a Delaware -Corporation, then: - (i) this Agreement shall be construed and interpreted in accordance with - the laws of the State of California, USA, excluding its choice of - law provisions; - (ii) the United Nations Convention on Contracts for the International - Sale of Goods will not apply to this Agreement; and - (iii) any dispute, claim or controversy arising out of or relating to this - Agreement or the breach, termination, enforcement, interpretation or - validity thereof, including the determination of the scope or - applicability of this Agreement to arbitrate, shall be determined by - arbitration in San Francisco, USA, before one arbitrator. The - arbitration shall be administered by JAMS pursuant to JAMS' - Streamlined Arbitration Rules and Procedures. Judgment on the Award - may be entered in any court having jurisdiction. This Section shall - not preclude parties from seeking provisional remedies in aid of - arbitration from a court of appropriate jurisdiction. - -In the event this Agreement is in the name of The Qt Company Ltd., a Finnish -Company, then: - (i) this Agreement shall be construed and interpreted in accordance with - the laws of Finland, excluding its choice of law provisions; - (ii) the United Nations Convention on Contracts for the International - Sale of Goods will not apply to this Agreement; and - (iii) any disputes, controversy or claim arising out of or relating to - this Agreement, or the breach, termination or validity thereof shall - be finally settled by arbitration in accordance with the Arbitration - Rules of Finland Chamber of Commerce. The arbitration tribunal shall - consist of one (1), or if either Party so requires, of three (3), - arbitrators. The award shall be final and binding and enforceable in - any court of competent jurisdiction. The arbitration shall be held - in Helsinki, Finland and the process shall be conducted in the - English language. This Section shall not preclude parties from - seeking provisional remedies in aid of arbitration from a court of - appropriate jurisdiction. - -14. GENERAL PROVISIONS - -14.1. No Assignment -Except in the case of a merger or sale of substantially all of its corporate -assets, Licensee shall not be entitled to assign or transfer all or any of -its rights, benefits and obligations under this Agreement without the prior -written consent of The Qt Company, which shall not be unreasonably withheld -or delayed. The Qt Company shall be entitled to freely assign or transfer any -of its rights, benefits or obligations under this Agreement. - -14.2. No Third-Party Representations -Licensee shall make no representations or warranties concerning the Licensed -Software on behalf of The Qt Company. Any representation or warranty Licensee -makes or purports to make on The Qt Company's behalf shall be void as to The -Qt Company. - -14.3. Surviving Sections -Any terms and conditions that by their nature or otherwise reasonably should -survive termination of this Agreement shall so be deemed to survive. Such -sections include especially the following: 1, 2, 6, 7, 9, 11, 12.4, 13 and 14. - -14.4. Entire Agreement -This Agreement, the exhibits hereto, the License Certificate and any -applicable Purchase Order accepted by The Qt Company constitute the complete -agreement between the Parties and supersedes all prior or contemporaneous -discussions, representations, and proposals, written or oral, with respect -to the subject matters discussed herein. - -In the event of any conflict or inconsistency between this Agreement and any -Purchase Order, the terms of this Agreement will prevail over the terms of -the Purchase Order with respect to such conflict or inconsistency. - -Parties specifically acknowledge and agree that this Agreement prevails -over any click-to-accept or similar agreements the Designated Users may -need to accept online upon download of the Licensed Software, as may be -required by The Qt Company's applicable processes relating to Licensed -Software. - -14.5. Modifications -No modification of this Agreement shall be effective unless contained in a -writing executed by an authorized representative of each Party. No term or -condition contained in Licensee's Purchase Order ("Deviating Terms") shall -apply unless The Qt Company has expressly agreed such Deviating Terms in -writing. Unless and to the extent expressly agreed by The Qt Company, any -such Deviating Terms shall be deemed void and with no legal effect. For -clarity, delivery of the Licensed Software following the receipt of the -Purchase Order including Deviating Terms shall not constitute acceptance of -such Deviating Terms." - -14.6. Force Majeure -Except for the payment obligations hereunder, neither Party shall be liable -to the other for any delay or non-performance of its obligations hereunder -in the event and to the extent that such delay or non-performance is due to -an event of act of God, terrorist attack or other similar unforeseeable -catastrophic event that prevents either Party for fulfilling its -obligations under this Agreement and which such Party cannot avoid or -circumvent ("Force Majeure Event"). If the Force Majeure Event results in -a delay or non-performance of a Party for a period of three (3) months or -longer, then either Party shall have the right to terminate this Agreement -with immediate effect without any liability (except for the obligations of -payment arising prior to the event of Force Majeure) towards the other -Party. - -14.7. Notices -Any notice given by one Party to the other shall be deemed properly given -and deemed received if specifically acknowledged by the receiving Party in -writing or when successfully delivered to the recipient by hand, fax, or -special courier during normal business hours on a business day to the -addresses specified for each Party on the signature page. Each -communication and document made or delivered by one Party to the other -Party pursuant to this Agreement shall be in the English language. - -14.8. Export Control -Licensee acknowledges that the Redistributables, as incorporated in -Applications or Devices, may be subject to export control restrictions -under the applicable laws of respective countries. Licensee shall fully -comply with all applicable export license restrictions and requirements -as well as with all laws and regulations relating to the Redistributables -and exercise of licenses hereunder and shall procure all necessary -governmental authorizations, including without limitation, all necessary -licenses, approvals, permissions or consents, where necessary for the -re-exportation of the Redistributables, Applications and/or Devices. - -14.9. No Implied License -There are no implied licenses or other implied rights granted under -this Agreement, and all rights, save for those expressly granted hereunder, -shall remain with The Qt Company and its licensors. In addition, no licenses -or immunities are granted to the combination of the Licensed Software with -any other software or hardware not delivered by The Qt Company under this -Agreement. - -14.10. Attorney Fees -The prevailing Party in any action to enforce this Agreement shall be -entitled to recover its attorney's fees and costs in connection with such -action. - -14.11. Privacy -Licensee acknowledges and agrees that for the purpose of this Agreement, -The Qt Company may collect, use, transfer and disclose personal data -pertaining to Designated Users as well as any other employees and directors -of the Licensee and its Contractors relevant for carrying out the intent of -this Agreement. Such personal data may be collected from the Licensee or -directly from the relevant individuals. The Parties acknowledge that with -regard to such personal data processed hereunder, The Qt Company shall be -regarded as the Data Controller under the applicable Data Protection -Legislation. The Qt Company shall process any such personal data in -accordance with its privacy policies and practices, which will comply with -all applicable requirements of the Data Protection Legislation. - -14.12. Severability -If any provision of this Agreement shall be adjudged by any court of -competent jurisdiction to be unenforceable or invalid, that provision shall -be limited or eliminated to the minimum extent necessary so that this -Agreement shall otherwise remain in full force and effect and enforceable. - -APPENDICES - -The Agreement includes Appendix 1, and possibly one or more of the -appendices 3-5, depending on the product(s) purchased by the Licensee, -what is stated in the quote or invoice, and/or what is stated in the -Licensee's License Certificate. - -APPENDIX 1 - -The modules and/or tools that are included in the respective product - Qt -for Application Development (QtAD), Qt for Device Creation (QtDC), Qt for -MCUs (QtMCU), Qt 3D Studio (Qt3DS) and Qt Design Studio (QtDS) - are -marked with 'X' in the below table. The modules and tools are ported to Qt 6 -in stages and are subject to availability. - -Parts of the product that are permitted for distribution in object-code -form only ("Redistributables") are marked with 'R' in the below table. - -+-----------------------------------------------------------------------+ -| Modules / Tools | QtAD | QtDC | QtMCU | Qt3DS | QtDS | -+-----------------------------------------------------------------------+ -| Qt Core | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt GUI | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Multimedia | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Multimedia Widgets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Network | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt PDF | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt QML | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Controls 2 | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Dialogs | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Layouts | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Test | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt SQL | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Test | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Widgets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Active Qt | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt 3D | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Android Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Bluetooth | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Canvas 3D | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Concurrent | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt D-Bus | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Gamepad | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Graphical Effects | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Help | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Image Formats | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Location | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Mac Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Network Authorization | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt NFC | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Platform Headers | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Positioning | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Print Support | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Purchasing | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt for Python | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Controls | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Widgets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt SCXML | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Sensors | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Serial Bus | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Serial Port | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Speech | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt SVG | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt UI Tools | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebChannel | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebEngine | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebSockets | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt WebView | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Windows Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt X11 Extras | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt XML | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt XML Patterns | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Wayland Compositor | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Charts | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Data Visualization | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Virtual Keyboard | X, R | X, R | | | | -+-----------------------------------------------------------------------+ -| Boot 2 Qt stack | | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt OTA | | X, R | | | | -+-----------------------------------------------------------------------+ -| Device Utilities | | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Debugging Bridge (QDB) Daemon | | X, R | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Ultralite Controls | | | X, R | | | -+-----------------------------------------------------------------------+ -| Qt Quick Ultralite | | | X, R | | | -+-----------------------------------------------------------------------+ -| Qt Creator | X | X | X | | | -+-----------------------------------------------------------------------+ -| Qt Designer (Qt Widget Designer) | X | X | | | | -+-----------------------------------------------------------------------+ -| Qt Quick Designer (Qt Creator | X, R | X, R | X, R | | | -| plugin) | | | | | | -+-----------------------------------------------------------------------+ -| Qt Linguist | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Qt Assistant | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Lupdate | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Lrelease | X, R | X, R | X, R | | | -+-----------------------------------------------------------------------+ -| Qmake | X | X | | | | -+-----------------------------------------------------------------------+ -| Uic | X | X | | | | -+-----------------------------------------------------------------------+ -| Rcc | X | X | | | | -+-----------------------------------------------------------------------+ -| Qlalr | X | X | | | | -+-----------------------------------------------------------------------+ -| Qdoc | X | X | | | | -+-----------------------------------------------------------------------+ -| Qmlscene | X | X | | | | -+-----------------------------------------------------------------------+ -| Qmlviewer | X | X | | | | -+-----------------------------------------------------------------------+ -| Target toolchains | | X | X | | | -+-----------------------------------------------------------------------+ -| Qt Debugging Bridge (QDB) Host | | X | | | | -| Tools | | | | | | -+-----------------------------------------------------------------------+ -| qtconfig-gui | | X | | | | -+-----------------------------------------------------------------------+ -| Qt Emulator | | X | | | | -+-----------------------------------------------------------------------+ -| Qmlinterfacegenerator | | | X | | | -+-----------------------------------------------------------------------+ -| Qmltocpp | | | X | | | -+-----------------------------------------------------------------------+ -| qulfontcompiler | | | X | | | -+-----------------------------------------------------------------------+ -| Qt53DStudioRuntime2 | | | | X, R | | -+-----------------------------------------------------------------------+ -| Qt 3D Studio | | | | X | | -+-----------------------------------------------------------------------+ -| Qt Design Studio | | | | | X | -+-----------------------------------------------------------------------+ - - -APPENDIX 3: ADDITIONS TO LICENSED SOFTWARE - -In addition to what is provided under the definition of the Licensed Software, -Parties agree that Licensed Software shall also include the Add-On Products of -The Qt Company, as mentioned in this Appendix, if included in the quote / -invoice. - -The Modules and/or Tools of the Licensed Software that are included with each -Add-On Product respectively are marked with 'X' in the below table. The modules -are ported to Qt 6 in stages and are subject to availability. - -Parts of the respective Add-On Product that are permitted for distribution in -object-code form only ("Redistributables") are marked with 'R' in the below -table. - -+------------------------------------------------------------------------------------------------+ -| | Add-On Product(s) | -| +--------------------------------------------------------------------------+ -| Modules / Tools of | Qt for | Qt | Qt | Qt | Qt | Qt | -| Licensed Software | Automation | Automotive | Safe | Application | GammaRay | Deployment | -| | / Qt M2M | Suite | Renderer | Manager | | Platform | -| | Protocols | | | | | Package | -+------------------------------------------------------------------------------------------------+ -| Qt MQTT | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt KNX | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt OPC UA | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt CoAP | X, R | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Safe Renderer | | X, R | X, R | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Application | | X, R | | X, R | | | -| Manager | | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt IVI | | X, R | | | | | -+------------------------------------------------------------------------------------------------+ -| Reference UI | | X, R | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt GENIVI Extras | | X, R | | | | | -+------------------------------------------------------------------------------------------------+ -| QML Live | | X | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Creator | | X | | | | | -| Deployment | | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Creator Plugin | | X | | X | | | -| for Qt Application Manager | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Automotive Suite | | X | | | | | -| Deployment Server | | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt Design Studio | | X | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt 3D Studio | | X | | | | | -+------------------------------------------------------------------------------------------------+ -| GammaRay | | X | | | X | | -+------------------------------------------------------------------------------------------------+ -| Platform adaptations| | | | | | X | -| for specified | | | | | | -| Deployment Platforms | | | | | | -+------------------------------------------------------------------------------------------------+ -| Qt for Device | | X | | | | | -| Creation | | | | | | | -+------------------------------------------------------------------------------------------------+ - - -All the above Redistributables are subject to applicable provisions and -limitations including but not limited to what is defined in section 3 of the -Agreement. - -APPENDIX 4: SMALL BUSINESS AND STARTUP - -The provisions of this Appendix 4 are applicable for companies with an annual -revenue, including funding, equivalent to maximum of 250,000 USD (in -applicable currency) during the latest full calendar year, as evidenced by -duly audited records of the Licensee and approved by The Qt Company -("Start-up Company"). - -Start-up Companies are qualified for a discounted License Fee for maximum of -four (4) Development Licenses ("Start-up Development License") unless -otherwise agreed between the parties. - -Start-up Development License entitles the respective Designated User for -Support only for installation related issues. - -Upon expiry of the respective License Term, the Start-up Development -Licenses shall be automatically extended, pursuant to Section 3.1 of the -Agreement, for a Renewal Term either as new Start-up Development Licenses -(if the Licensee still qualifies as a Start-up Company), or as normal -Development Licenses (if the Licensee no longer qualifies as a Start-up -ompany). - -APPENDIX 5: NON-COMMERCIAL USE -The provisions of this Appendix 5 are applicable for non-commercial use of -the Licensed Software by the Licensee. - -For the purpose of this Appendix 5, the following additional definitions -(replacing the relevant definition of the Agreement, where applicable) -shall be applicable: - -"Demo Units" shall mean (i) hardware development platform, which incorporates -the Licensed Software along with Licensee's software and/or hardware, and -(ii) prototype versions of Applications or Devices. - -"Designated User(s)" shall mean the employees and students of the Licensee. - -"Licensee Products" shall mean Applications and/or Devices. - -"Permitted Purpose" shall mean (i) Licensee's internal evaluation and -testing of Licensed Software, (ii) building Demo Units as well as (iii) -educational use. - -"Term" shall mean a period of twelve (12) months or any such other period -as may be agreed between the Parties. - -For the purpose of this Appendix 5, the following changes shall be agreed -with respect to relevant Sections of the Agreement: - - I. Recital (A) shall be replaced in its entirety to read as follows: - "(A) Licensee wishes to use the Licensed Software for the Permitted - Purpose." - II. Section 3.1 shall be replaced in its entirety to read as follows: - "The Qt Company grants to Licensee a personal, non-exclusive, - non-transferable, revocable, royalty-free license, valid for the - Term, to use, modify and copy the Licensed Software solely for the - Permitted Purpose. - Licensee may install copies of the Licensed Software on five (5) - computers per Designated User, provided that only the Designated - Users who have a valid Development License may use the Licensed - Software. - Licensee may demonstrate the Demo Units, provided that such - demonstrations must be conducted by Licensee, and the Demo Units - must remain in Licensee's possession and under Licensee's control - at all times. - For clarity, this Agreement does not (i) entitle Licensee to use - Licensed Software to create Applications or Devices (other than - prototypes thereof) or (ii) carry any distribution rights to - Licensee, but such rights are subject to and conditional upon - conclusion of a separate license agreement with The Qt Company." - III. Sections 3.2, 3.3, 8 and 10 shall be deleted. - IV. Section 3.4 shall be replaced in its entirety to read as follows: - "Licensee shall not: - - remove or alter any copyright, trademark or other proprietary - rights notice contained in any portion of the Licensed Software; - - transfer, publish, sublicense, disclose, display or otherwise - make the Licensed Software available to any third party (except - that Licensee may demonstrate the Demo Units pursuant to Section - 3.1); - - in any way combine, incorporate or integrate Licensed Software - with, or use Licensed Software for creation of, any software - created with or incorporating Open Source Qt; - - Licensee shall cause all Designated Users who make use of the - licenses granted under this Agreement, to be contractually bound - to comply with the relevant terms of this Agreement and not to use - the Licensed Software beyond the terms hereof. Licensee shall be - responsible for any and all actions and omissions of its - Designated Users relating to the Licensed Software and use - thereof. - - Any use of Licensed Software beyond the provisions of this - Agreement is strictly prohibited and requires an additional license - from The Qt Company." - V. Section 12 shall be replaced in its entirety to read as follows: - "This Agreement shall enter into force upon due acceptance by both - Parties and remain in force for the Term, unless and until - terminated pursuant to the terms of Section 12. - - Upon termination of the Agreement, Licensee shall cease using the - Licensed Software. All other copies of Licensed Software in the - possession or control of Licensee must be erased or destroyed. - An officer of Licensee must, upon request, promptly deliver to - The Qt Company a written confirmation that this has occurred." - -Except for the modifications specified above, this Appendix carries no -change to the terms of the Agreement which shall remain in full force. diff -Nru qtbase-opensource-src-5.15.3+dfsg/.qmake.conf qtbase-opensource-src-5.15.8+dfsg/.qmake.conf --- qtbase-opensource-src-5.15.3+dfsg/.qmake.conf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/.qmake.conf 2022-11-11 15:29:17.000000000 +0800 @@ -6,4 +6,4 @@ QT_SOURCE_TREE = $$PWD QT_BUILD_TREE = $$shadowed($$PWD) -MODULE_VERSION = 5.15.3 +MODULE_VERSION = 5.15.8 diff -Nru qtbase-opensource-src-5.15.3+dfsg/.release-timestamp qtbase-opensource-src-5.15.8+dfsg/.release-timestamp --- qtbase-opensource-src-5.15.3+dfsg/.release-timestamp 2021-03-30 02:27:04.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/.release-timestamp 2022-11-13 04:40:55.000000000 +0800 @@ -1 +1 @@ -QT_PACKAGEDATE_STR=2021-03-29 \ No newline at end of file +QT_PACKAGEDATE_STR=2022-11-12 \ No newline at end of file diff -Nru qtbase-opensource-src-5.15.3+dfsg/.tag qtbase-opensource-src-5.15.8+dfsg/.tag --- qtbase-opensource-src-5.15.3+dfsg/.tag 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/.tag 2022-11-11 15:29:17.000000000 +0800 @@ -1 +1 @@ -c8989ca20fa5798f7853f07df6e150cc407c64a4 +4ee4fc18b4067b90efa46ca9baba74f53b54d9ec diff -Nru qtbase-opensource-src-5.15.3+dfsg/LICENSE.QT-LICENSE-AGREEMENT qtbase-opensource-src-5.15.8+dfsg/LICENSE.QT-LICENSE-AGREEMENT --- qtbase-opensource-src-5.15.3+dfsg/LICENSE.QT-LICENSE-AGREEMENT 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/LICENSE.QT-LICENSE-AGREEMENT 2022-11-11 15:29:17.000000000 +0800 @@ -1,5 +1,5 @@ QT LICENSE AGREEMENT -Agreement version 4.2.1 +Agreement version 4.3 This Qt License Agreement ("Agreement") is a legal agreement for the licensing of Licensed Software (as defined below) between The Qt Company (as defined @@ -19,26 +19,27 @@ NOW, THEREFORE, THE PARTIES HEREBY AGREE AS FOLLOWS: 1. DEFINITIONS -"Affiliate" of a Party shall mean an entity (i) which is directly or indirectly -controlling such Party; (ii) which is under the same direct or indirect -ownership or control as such Party; or (iii) which is directly or indirectly -owned or controlled by such Party. For these purposes, an entity shall be -treated as being controlled by another if that other entity has fifty percent -(50 %) or more of the votes in such entity, is able to direct its affairs -and/or to control the composition of its board of directors or equivalent body. + +"Affiliate" of a Party shall mean an entity (i) which is directly +or indirectly controlling such Party; (ii) which is under the same direct or +indirect ownership or control as such Party; or (iii) which is directly or +indirectly owned or controlled by such Party. For these purposes, an entity +shall be treated as being controlled by another if that other entity has fifty +percent (50 %) or more of the votes in such entity, is able to direct its +affairs and/or to control the composition of its board of directors or +equivalent body. "Add-on Products" shall mean The Qt Company's specific add-on software products -(for example Qt Safe Renderer, Qt for Automation, Qt Application Manager), -which are not licensed as part of The Qt Company's standard offering, but shall -be included into the scope of Licensed Software only if so specifically agreed +(for example Qt Safe Renderer, Qt for Automation, Qt Application Manager), which +are not licensed as part of The Qt Company's standard offering, but shall be +included into the scope of Licensed Software only if so specifically agreed between the Parties. "Applications" shall mean Licensee's software products created using the Licensed Software, which may include the Redistributables, or part thereof. -"Contractor(s)" shall mean third party consultants, distributors and -contractors performing services to the Licensee under applicable contractual -arrangement. +"Contractor(s)" shall mean third party consultants, distributors and contractors +performing services to the Licensee under applicable contractual arrangement. "Customer(s)" shall mean Licensee's end users to whom Licensee, directly or indirectly, distributes copies of the Redistributables. @@ -54,41 +55,39 @@ pursuant to the terms and conditions of this Agreement. "Designated User(s)" shall mean the employee(s) of Licensee or Licensee's -Affiliates acting within the scope of their employment or Licensee's -Contractors acting within the scope of their services for Licensee and on -behalf of Licensee. Designated Users shall be named in the License Certificate. +Affiliates acting within the scope of their employment or Licensee's Contractors +acting within the scope of their services for Licensee and on behalf of +Licensee. Designated Users shall be named in the License Certificate. "Development License" shall mean the license needed by the Licensee for each Designated User to use the Licensed Software under the license grant described -in Section 3.1 of this Agreement. Development Licenses are available -separately for Qt for Application Development and Qt for Device Creation -products, each product having its designated scope and purpose of use. -Distribution Licenses are always connected to Qt for Device Creation -product only. +in Section 3.1 of this Agreement. Development Licenses are available per +respective Licensed Software products, each product having its designated scope +and purpose of use. Distribution Licenses are always connected to Qt for Device +Creation product and Qt for MCUs product only. "Development Platforms" shall mean those operating systems specified in the License Certificate, in which the Licensed Software can be used under the -Development License, but not distributed in any form or used for any other -purpose. +Development License, but not distributed in any form or used for any other purpose. "Devices" shall mean hardware devices or products that 1) are manufactured -and/or distributed by the Licensee or its Affiliates or Contractors, and -(2)(i) incorporate or integrate the Redistributables or parts thereof; or (ii) -where the main user interface or substantial functionality of such unit , when -used by a Customer, is provided by Application(s) or otherwise depends on the -Licensed Software, regardless of whether the Redistributables are distributed -together with the hardware or not. Devices covered with this Agreement shall -be specified in Appendix 2 or in a quote. +and/or distributed by the Licensee or its Affiliates or Contractors, and (2)(i) +incorporate or integrate the Redistributables or parts thereof; or (ii) where +the main user interface or substantial functionality of such unit , when used by +a Customer, is provided by Application(s) or otherwise depends on the Licensed +Software, regardless of whether the Redistributables are distributed together +with the hardware or not. Devices covered with this Agreement shall be specified +in Appendix 2 or in a quote. "Distribution License(s)" shall mean the license required for any kind of sale, trade, exchange, loan, lease, rental or other distribution by or on behalf of Licensee to a third party of Redistributables in connection with Devices pursuant to license grant described in Section 3.3 of this Agreement. -"Distribution License Packs" shall mean set of prepaid Distribution Licenses -for distribution of Redistributables, as defined in The Qt Company's standard -price list, quote, Purchase Order confirmation or in an appendix hereto, as -the case may be. +"Distribution License Packs" shall mean set of prepaid Distribution Licenses for +distribution of Redistributables, as defined in The Qt Company's standard price +list, quote, Purchase Order confirmation or in an appendix hereto, as the case +may be. "Intellectual Property Rights" shall mean patents (including utility models), design patents, and designs (whether or not capable of registration), chip @@ -101,10 +100,10 @@ each Designated User respectively upon them downloading the Licensed Software, which will be available under respective Designated User's Qt Account at account.qt.io. License Certificates will specify the Designated User, the -Development Platforms, Deployment Platforms and the License Term. Such terms -are considered part of the licenses granted hereunder and shall be updated -from time to time to reflect any agreed changes to the foregoing terms -relating to Designated User's rights to the Licensed Software. +Development Platforms, Deployment Platforms and the License Term. Such terms are +considered part of the licenses granted hereunder and shall be updated from time +to time to reflect any agreed changes to the foregoing terms relating to +Designated User's rights to the Licensed Software. "License Fee" shall mean the fee charged to the Licensee for rights granted under the terms of this Agreement. @@ -115,39 +114,39 @@ Certificate. "Licensed Software" shall mean either - (i) Qt for Application Development or - (ii) Qt for Device Creation, and/or - (iii) Qt 3D Studio, and/or - (iv) Qt Design Studio, and/or - (v) Qt for MCUs, and/or - (vi) selected Add-on Products, if any, + (i) Qt for Application Development or + (ii) Qt for Device Creation, and/or + (iii) Qt 3D Studio, and/or + (iv) Qt Design Studio, and/or + (v) Qt for MCUs, and/or + (vi) selected Add-on Products, if any, depending on which product(s) the Licensee has purchased under this Agreement, as well as corresponding online or electronic documentation, associated media and printed materials, including the source code (where applicable), example programs and the documentation, licensed to the Licensee under this Agreement. -Licensed Software does not include Third Party Software (as defined in Section -4) or Open Source Qt. The Qt Company may, in the course of its development -activities, at its free and absolute discretion and without any obligation to -send or publish any notifications to the Licensee or in general, make changes, -additions or deletions in the components and functionalities of the Licensed -Software, provided that no such changes, additions or deletions will affect -the already released version of the Licensed Software, but only upcoming -version(s). +Licensed Software does not include Third Party Software (as defined in +Section 4) or Open Source Qt. The Qt Company may, in the course of its +development activities, at its free and absolute discretion and without any +obligation to send or publish any notifications to the Licensee or in general, +make changes, additions or deletions in the components and functionalities of +the Licensed Software, provided that no such changes, additions or deletions +will affect the already released version of the Licensed Software, but only +upcoming version(s). "Licensee" shall mean the individual or legal entity that is party to this Agreement, as identified on the signature page hereof. "Licensee's Records" shall mean books and records that are likely to contain -information bearing on Licensee's compliance with this Agreement, Licensee's -use of Open Source Qt and/or the payments due to The Qt Company under this -Agreement, including, but not limited to user information, assembly logs, -sales records and distribution records. +information bearing on Licensee's compliance with this Agreement, Licensee's use +of Open Source Qt and/or the payments due to The Qt Company under this +Agreement, including, but not limited to user information, assembly logs, sales +records and distribution records. "Modified Software" shall have the meaning as set forth in Section 2.3. -"Online Services" shall mean any services or access to systems made available -by The Qt Company to the Licensee over the Internet relating to the Licensed +"Online Services" shall mean any services or access to systems made available by +The Qt Company to the Licensee over the Internet relating to the Licensed Software or for the purpose of use by the Licensee of the Licensed Software or Support. Use of any such Online Services is discretionary for the Licensee and some of them may be subject to additional fees. @@ -196,12 +195,12 @@ "Renewal Term" shall mean an extension of previous License Term as agreed between the Parties. -"Submitted Modified Software" shall have the meaning as set forth in -Section 2.3. +"Submitted Modified Software" shall have the meaning as set forth in Section +2.3. "Support" shall mean standard developer support that is provided by The Qt -Company to assist Designated Users in using the Licensed Software in -accordance with The Qt Company's standard support terms available at +Company to assist Designated Users in using the Licensed Software in accordance +with The Qt Company's standard support terms available at https://www.qt.io/terms-conditions/ and as further defined in Section 8 hereunder. @@ -210,39 +209,39 @@ "Term" shall have the meaning set forth in Section 12. "The Qt Company" shall mean: - (i) in the event Licensee is an individual residing in the United - States or a legal entity incorporated in the United States or - having its headquarters in the United States, The Qt Company Inc., - a Delaware corporation with its office at 2350 Mission College - Blvd., Suite 1020, Santa Clara, CA 95054, USA.; or - (ii) in the event the Licensee is an individual residing outside of the - United States or a legal entity incorporated outside of the United - States or having its registered office outside of the United - States, The Qt Company Ltd., a Finnish company with its registered - office at Bertel Jungin aukio D3A, 02600 Espoo, Finland. + (i) in the event Licensee is an individual residing in the United States + or a legal entity incorporated in the United States or having its + headquarters in the United States, The Qt Company Inc., a + Delaware corporation with its office at 2350 Mission College Blvd., + Suite 1020, Santa Clara, CA 95054, USA.; or + (ii) in the event the Licensee is an individual residing outside of the + United States or a legal entity incorporated outside of the United + States or having its registered office outside of the United States, + The Qt Company Ltd., a Finnish company with its registered office + at Bertel Jungin aukio D3A, 02600 Espoo, Finland. "Third-Party Software" shall have the meaning set forth in Section 4. "Updates" shall mean a release or version of the Licensed Software containing -bug fixes, error corrections and other changes that are generally made -available to users of the Licensed Software that have contracted for Support. -Updates are generally depicted as a change to the digits following the decimal -in the Licensed Software version number. The Qt Company shall make Updates -available to the Licensee under the Support. Updates shall be considered as -part of the Licensed Software hereunder. +bug fixes, error corrections and other changes that are generally made available +to users of the Licensed Software that have contracted for Support. Updates are +generally depicted as a change to the digits following the decimal in the +Licensed Software version number. The Qt Company shall make Updates available to +the Licensee under the Support. Updates shall be considered as part of the +Licensed Software hereunder. "Upgrades" shall mean a release or version of the Licensed Software containing enhancements and new features and are generally depicted as a change to the first digit of the Licensed Software version number. In the event Upgrades are -provided to the Licensee under this Agreement, they shall be considered as -part of the Licensed Software hereunder. - +provided to the Licensee under this Agreement, they shall be considered as part +of the Licensed Software hereunder. 2. OWNERSHIP + 2.1. Ownership of The Qt Company -The Licensed Software is protected by copyright laws and international -copyright treaties, as well as other intellectual property laws and -treaties. The Licensed Software is licensed, not sold. +The Licensed Software is protected by copyright laws and international copyright +treaties, as well as other intellectual property laws and treaties. The Licensed +Software is licensed, not sold. All of The Qt Company's Intellectual Property Rights are and shall remain the exclusive property of The Qt Company or its licensors respectively. @@ -251,43 +250,47 @@ All the Licensee's Intellectual Property Rights are and shall remain the exclusive property of the Licensee or its licensors respectively. -All Intellectual Property Rights to the Modified Software, Applications and -Devices shall remain with the Licensee and no rights thereto shall be granted -by the Licensee to The Qt Company under this Agreement (except as set forth in -Section 2.3 below). +All Intellectual Property Rights to the Modified Software, Applications and Devices +shall remain with the Licensee and no rights thereto shall be granted by the +Licensee to The Qt Company under this Agreement (except as set forth in Section +2.3 below). 2.3. Modified Software Licensee may create bug-fixes, error corrections, patches or modifications to the Licensed Software ("Modified Software"). Such Modified Software may break -the source or binary compatibility with the Licensed Software (including -without limitation through changing the application programming interfaces -("API") or by adding, changing or deleting any variable, method, or class -signature in the Licensed Software and/or any inter-process protocols, -services or standards in the Licensed Software libraries). To the extent that -Licensee's Modified Software so breaks source or binary compatibility with the -Licensed Software, Licensee acknowledges that The Qt Company's ability to -provide Support may be prevented or limited and Licensee's ability to make use -of Updates may be restricted. +the source or binary compatibility with the Licensed Software (including without +limitation through changing the application programming interfaces ("API") or by +adding, changing or deleting any variable, method, or class signature in the +Licensed Software and/or any inter-process protocols, services or standards in +the Licensed Software libraries). To the extent that Licensee's Modified +Software so breaks source or binary compatibility with the Licensed Software, +Licensee acknowledges that The Qt Company's ability to provide Support may be +prevented or limited and Licensee's ability to make use of Updates may be restricted. Licensee may, at its sole and absolute discretion, choose to submit Modified Software to The Qt Company ("Submitted Modified Software") in connection with -Licensee's Support request, service request or otherwise. In the event -Licensee does so, then, Licensee hereby grants The Qt Company a sublicensable, +Licensee's Support request, service request or otherwise. In the event Licensee +does so, then, Licensee hereby grants The Qt Company a sublicensable, assignable, irrevocable, perpetual, worldwide, non-exclusive, royalty-free and -fully paid-up license, under all of Licensee's Intellectual Property Rights, -to reproduce, adapt, translate, modify, and prepare derivative works of, -publicly display, publicly perform, sublicense, make available and distribute -such Submitted Modified Software as The Qt Company sees fit at its free and -absolute discretion. +fully paid-up license, under all of Licensee's Intellectual Property Rights, to +reproduce, adapt, translate, modify, and prepare derivative works of, publicly +display, publicly perform, sublicense, make available and distribute such +Submitted Modified Software as The Qt Company sees fit at its free and absolute +discretion. 3. LICENSES GRANTED + 3.1. Development with Licensed Software Subject to the terms of this Agreement, The Qt Company grants to Licensee a -worldwide, non-exclusive, non-transferable license, valid for the License -Term, to use, modify and copy the Licensed Software by Designated Users on the +worldwide, non-exclusive, non-transferable license, valid for the License Term, +to use, modify and copy the Licensed Software by Designated Users on the Development Platforms for the sole purposes of designing, developing, -demonstrating and testing Application(s) and/or Devices, and to provide -thereto related support and other related services to end-user Customers. +demonstrating and testing Application(s) and/or Devices, and to provide thereto +related support and other related services to end-user Customers. Each +Application and/or Device can only include, incorporate or integrate code +generated under this Agreement by such Designated Users who are duly licensed +for the applicable Development Platform(s) and Deployment Platform(s) (i.e have +a valid license for the appropriate Licensed Software product). Licensee may install copies of the Licensed Software on five (5) computers per Designated User, provided that only the Designated Users who have a valid @@ -299,50 +302,54 @@ Upon expiry of the initially agreed License Term, the respective License Terms shall be automatically extended to one or more Renewal Term(s), unless and -until either Party notifies the other Party in writing that it does not wish -to continue the License Term, such notification to be provided to the other -Party no less than ninety (90) days before expiry of the respective License -Term. Unless otherwise agreed between the Parties, Renewal Term shall be of -equal length with the initial License Term. +until either Party notifies the other Party in writing, or any other method +acceptable to The Qt Company, that it does not wish to continue the License +Term, such notification to be provided to the other Party no less than thirty +(30) days before expiry of the respective License Term. + +Unless otherwise agreed between the Parties, Renewal Term shall be of equal +length with the initial License Term. Any such Renewal Term shall be subject to License Fees agreed between the -Parties or, if no advance agreement exists, subject to The Qt Company's -standard pricing applicable at the commencement date of any such Renewal Term. +Parties or, if no advance agreement exists, subject to The Qt Company's standard +pricing applicable at the commencement date of any such Renewal Term. -Any price or other term specified for a Renewal Term shall be valid only for -the specified time. +Any price or other term specified for a Renewal Term shall be valid only for the +specified time. -The Qt Company may request the Licensee to place a purchase order corresponding -to a quote by The Qt Company for the relevant Renewal Term. +The Qt Company may either request the Licensee to place a purchase order +corresponding to a quote by The Qt Company, or uses Licensees stored Credit +Card information in the QtAccount to automatically charge the Licensee for the +relevant Renewal Term. In the event Licensee does not prevent auto-renewal pursuant the above, but a Renewal Term is nevertheless not duly ordered within 30 days from the date of -the respective quote from The Qt Company and/or the respective License Fee -paid by due date specified in The Qt Company's respective invoice, The Qt +the respective notification from The Qt Company and/or the respective License +Fee paid by due date specified in The Qt Company's respective invoice, The Qt Company shall apply a reinstatement fee equal to ten percent (10 %) of the total value of the License Fees of the Development Licenses for the expired term to be added to the License Fee of the respective Renewal Term. In the event Licensee chooses not to renew a Development License for a Renewal -Term by notifying The Qt Company thereof no less than ninety (90) days before +Term by notifying The Qt Company thereof no less than thirty (30) days before expiry of the respective License Term, Licensee may still reinstate such expired Development Licenses for a Renewal Term subject to applicable renewal Term License Fees until thirty (30) days from the expiry of the initially agreed License Term or preceding Renewal Term. After such thirty (30) day -period a Development License shall be subject to applicable License Fees for a -new Development License and not any Renewal Term License Fees. +period a Development License shall be subject to applicable License Fees for +a new Development License and not any Renewal Term License Fees. 3.2. Distribution of Applications -Subject to the terms of this Agreement, The Qt Company grants to Licensee a -worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to +Subject to the terms of this Agreement, The Qt Company grants to Licensee +a worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to this Agreement) right and license, valid for the Term, to - (i) distribute, by itself or through its Contractors, Redistributables - as installed, incorporated or integrated into Applications for - execution on the Deployment Platforms, and - (ii) grant sublicenses to Redistributables, as distributed hereunder, - for Customers solely for Customer's internal use and to the extent - necessary in order for the Customers to use the Applications for - their respective intended purposes. + (i) distribute, by itself or through its Contractors, Redistributables as + installed, incorporated or integrated into Applications for execution + on the Deployment Platforms, and + (ii) grant sublicenses to Redistributables, as distributed hereunder, for + Customers solely for Customer's internal use and to the extent + necessary in order for the Customers to use the Applications for their + respective intended purposes. Right to distribute the Redistributables as part of an Application as provided herein is not royalty-bearing but is conditional upon the Licensee not having @@ -353,102 +360,97 @@ Subject to the terms of this Agreement, The Qt Company grants to Licensee a worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to this Agreement) right and license, valid for the Term, to - (i) distribute, by itself or through one or more tiers of Contractors, - Redistributables as installed, incorporated or integrated, or - intended to be installed, incorporated or integrated into Devices - for execution on the Deployment Platforms, and - (ii) grant sublicenses to Redistributables, as distributed hereunder, - for Customers solely for Customer's internal use and to the extent - necessary in order for the Customers to use the Devices for their - respective intended purposes. + (i) distribute, by itself or through one or more tiers of Contractors, + Redistributables as installed, incorporated or integrated, or intended + to be installed, incorporated or integrated into Devices for execution + on the Deployment Platforms, and + (ii) grant sublicenses to Redistributables, as distributed hereunder, for + Customers solely for Customer's internal use and to the extent + necessary in order for the Customers to use the Devices for their + respective intended purposes. Right to distribute the Redistributables with Devices as provided herein is conditional upon the Licensee (i) not having any unpaid License Fees for -Development Licenses owed to The Qt Company, and (ii) having purchased and -paid corresponding Distribution Licenses at the time of distribution of any +Development Licenses owed to The Qt Company, and (ii) having purchased and paid +corresponding Distribution Licenses at the time of distribution of any Redistributables to Customers. 3.4. Further Requirements The licenses granted above in this Section 3 by The Qt Company to Licensee are conditional and subject to Licensee's compliance with the following terms: - (i) Licensee shall not remove or alter any copyright, trademark or - other proprietary rights notice(s) contained in any portion of the - Licensed Software; - (ii) Applications must add primary and substantial functionality to the - Licensed Software so as not to compete with the Licensed Software; - (iii) Applications may not pass on functionality which in any way makes - it possible for others to create software with the Licensed - Software; provided however that Licensee may use the Licensed - Software's scripting and QML ("Qt Quick") functionality solely in - order to enable scripting, themes and styles that augment the - functionality and appearance of the Application(s) without adding - primary and substantial functionality to the Application(s); - (iv) Licensee shall not use Licensed Software in any manner or for any - purpose that infringes, misappropriates or otherwise violates any - Intellectual property or right of any third party, or that - violates any applicable law; - (v) Licensee shall not use The Qt Company's or any of its suppliers' - names, logos, or trademarks to market Applications, except that - Licensee may use "Built with Qt" logo to indicate that - Application(s) was developed using the Licensed Software; - (vi) Licensee shall not distribute, sublicense or disclose source code - of Licensed Software to any third party (provided however that - Licensee may appoint employee(s) of Contractors as Designated - Users to use Licensed Software pursuant to this Agreement). Such - right may be available for the Licensee subject to a separate - software development kit ("SDK") license agreement to be concluded - with The Qt Company; - (vii) Licensee shall not grant the Customers a right to (i) make copies - of the Redistributables except when and to the extent required to - use the Applications and/or Devices for their intended purpose, - (ii) modify the Redistributables or create derivative works - thereof, (iii) decompile, disassemble or otherwise reverse - engineer Redistributables, or (iv) redistribute any copy or - portion of the Redistributables to any third party, except as part - of the onward sale of the Device on which the Redistributables are - installed; - (viii) Licensee shall not and shall cause that its Affiliates or - Contractors shall not use Licensed Software in any Prohibited - Combination, unless Licensee has received an advance written - permission from The Qt Company to do so. Absent such written - permission, any and all distribution by the Licensee during the - Term of a hardware device or product a) which incorporate or - integrate any part of Licensed Software or Open Source Qt; or b) - where the main user interface or substantial functionality is - provided by software built with Licensed Software or Open Source - Qt or otherwise depends on the Licensed Software or Open Source - Qt, shall be considered to be Device distribution under this - Agreement and shall be dependent on Licensee's compliance thereof - (including but not limited to obligation to pay applicable License - Fees for such distribution). Notwithstanding what is provided - above in this sub-section (viii), Licensee is entitled to use and - combine Qt 3D Studio and/or Qt Design Studio with Open Source Qt - ("Permitted Combination") for its internal evaluation purposes, - provided that Licensee shall in no way transfer, publish, disclose, - display or otherwise make available any software or work resulting - from such Permitted Combination; - (ix) Licensee shall cause all of its Affiliates and Contractors - entitled to make use of the licenses granted under this Agreement, - to be contractually bound to comply with the relevant terms of - this Agreement and not to use the Licensed Software beyond the - terms hereof and for any purposes other than operating within the - scope of their services for Licensee. Licensee shall be responsible - for any and all actions and omissions of its Affiliates and - Contractors relating to the Licensed Software and use thereof - (including but not limited to payment of all applicable License - Fees); - (x) Except when and to the extent explicitly provided in this Section - 3, Licensee shall not transfer, publish, disclose, display or - otherwise make available the Licensed Software; and - (xi) Licensee shall not attempt or enlist a third party to conduct or - attempt to conduct any of the above. + (i) Licensee shall not remove or alter any copyright, trademark or other + proprietary rights notice(s) contained in any portion of the Licensed + Software; + (ii) Applications must add primary and substantial functionality to the + Licensed Software so as not to compete with the Licensed Software; + (iii) Applications may not pass on functionality which in any way makes it + possible for others to create software with the Licensed Software; + provided however that Licensee may use the Licensed Software's + scripting and QML ("Qt Quick") functionality solely in order to + enable scripting, themes and styles that augment the functionality + and appearance of the Application(s) without adding primary and + substantial functionality to the Application(s); + (iv) Licensee shall not use Licensed Software in any manner or for any + purpose that infringes, misappropriates or otherwise violates any + Intellectual property or right of any third party, or that violates + any applicable law; + (v) Licensee shall not use The Qt Company's or any of its suppliers' + names, logos, or trademarks to market Applications, except that + Licensee may use "Built with Qt" logo to indicate that + Application(s) was developed using the Licensed Software; + (vi) Licensee shall not distribute, sublicense or disclose source code + of Licensed Software to any third party (provided however that + Licensee may appoint employee(s) of Contractors as Designated + Users to use Licensed Software pursuant to this Agreement). Such + right may be available for the Licensee subject to a separate + software development kit ("SDK") license agreement to be concluded + with The Qt Company; + (vii) Licensee shall not grant the Customers a right to (i) make copies of + the Redistributables except when and to the extent required to use the + Applications and/or Devices for their intended purpose, (ii) modify + the Redistributables or create derivative works thereof, (iii) + decompile, disassemble or otherwise reverse engineer Redistributables, + or (iv) redistribute any copy or portion of the Redistributables to + any third party, except as part of the onward sale of the Device on + which the Redistributables are installed; + (viii) Licensee shall not and shall cause that its Affiliates or + Contractors shall not use Licensed Software in any Prohibited + Combination, unless Licensee has received an advance written + permission from The Qt Company to do so. Absent such written + permission, any and all distribution by the Licensee during the Term + of a hardware device or product a) which incorporate or integrate any + part of Licensed Software or Open Source Qt; or b) where the main + user interface or substantial functionality is provided by software + built with Licensed Software or Open Source Qt or otherwise depends + on the Licensed Software or Open Source Qt, shall be considered to be + Device distribution under this Agreement and shall be dependent on + Licensee's compliance thereof (including but not limited to + obligation to pay applicable License Fees for such distribution). + Notwithstanding what is provided above in this sub-section (viii), + Licensee is entitled to use and combine Licensed Software with any + Permitted Software; + (ix) Licensee shall cause all of its Affiliates and Contractors entitled + to make use of the licenses granted under this Agreement, to be + contractually bound to comply with the relevant terms of this + Agreement and not to use the Licensed Software beyond the terms + hereof and for any purposes other than operating within the scope + of their services for Licensee. Licensee shall be responsible for + any and all actions and omissions of its Affiliates and Contractors + relating to the Licensed Software and use thereof (including but not + limited to payment of all applicable License Fees); + (x) Except when and to the extent explicitly provided in this Section 3, + Licensee shall not transfer, publish, disclose, display or otherwise + make available the Licensed Software; and + (xi) Licensee shall not attempt or enlist a third party to conduct or + attempt to conduct any of the above. -Above terms shall not be applicable if and to the extent they conflict with -any mandatory provisions of any applicable laws. +Above terms shall not be applicable if and to the extent they conflict with any +mandatory provisions of any applicable laws. Any use of Licensed Software beyond the provisions of this Agreement is strictly prohibited and requires an additional license from The Qt Company. 4. THIRD-PARTY SOFTWARE + The Licensed Software may provide links to third party libraries or code (collectively "Third-Party Software") to implement various functions. Third-Party Software does not comprise part of the Licensed Software. In some @@ -460,15 +462,16 @@ applicable license terms of applicable third-party right holders. 5. PRE-RELEASE CODE + The Licensed Software may contain pre-release code and functionality, or sample -code marked or otherwise stated with appropriate designation such as -"Technology Preview", "Alpha", "Beta", "Sample" etc. ("Pre-Release Code"). +code marked or otherwise stated with appropriate designation such as "Technology +Preview", "Alpha", "Beta", "Sample" etc. ("Pre-Release Code"). -Such Pre-Release Code may be present complimentary for the Licensee, in order -to provide experimental support or information for new platforms or preliminary +Such Pre-Release Code may be present complimentary for the Licensee, in order to +provide experimental support or information for new platforms or preliminary versions of one or more new functionalities or for other similar reasons. The Pre-Release Code may not be at the level of performance and compatibility of a -final, generally available, product offering. The Pre-Release Code may not +final, generally available, product offering. The Pre-Release Code may not operate correctly, may contain errors and may be substantially modified by The Qt Company prior to the first commercial product release, if any. The Qt Company is under no obligation to make Pre-Release Code commercially available, @@ -476,15 +479,16 @@ liability whatsoever regarding any Pre-Release Code, but any use thereof is exclusively at Licensee's own risk and expense. -For clarity, unless Licensed Software specifies different license terms for the -respective Pre-Release Code, the Licensee is entitled to use such pre-release -code pursuant to Section 3, just like other Licensed Software, provided however -that in the event Add-on Products are included and available as such -Pre-Release Code, Licensee's right to use such Add-on Products is nevertheless -subject to and conditional upon conclusion of separate agreement with The Qt -Company. +For clarity, unless Licensed Software specifies different license terms for +the respective Pre-Release Code, the Licensee is entitled to use such +pre-release code pursuant to Section 3, just like other Licensed Software, +provided however that in the event Add-on Products are included and available +as such Pre-Release Code, Licensee's right to use such Add-on Products is +nevertheless subject to and conditional upon conclusion of separate agreement +with The Qt Company. 6. LIMITED WARRANTY AND WARRANTY DISCLAIMER + The Qt Company hereby represents and warrants that it has the power and authority to grant the rights and licenses granted to Licensee under this Agreement. @@ -493,20 +497,21 @@ "as is" and Licensee's exclusive remedy and The Qt Company's entire liability for errors in the Licensed Software shall be limited, at The Qt Company's option, to correction of the error, replacement of the Licensed Software or -return of the applicable fees paid for the defective Licensed Software for the -time period during which the License is not able to utilize the Licensed +return of the applicable fees paid for the defective Licensed Software for +the time period during which the License is not able to utilize the Licensed Software under the terms of this Agreement. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE QT COMPANY ON BEHALF OF ITSELF AND ITS LICENSORS, SUPPLIERS AND AFFILIATES, DISCLAIMS ALL OTHER WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND -NON-INFRINGEMENT WITH REGARD TO THE LICENSED SOFTWARE. THE QT COMPANY DOES NOT -WARRANT THAT THE LICENSED SOFTWARE WILL SATISFY LICENSEE'S REQUIREMENTS OR THAT -IT WILL OPERATE WITHOUT DEFECT OR ERROR OR THAT THE OPERATION THEREOF WILL BE -UNINTERRUPTED. +NON-INFRINGEMENT WITH REGARD TO THE LICENSED SOFTWARE. THE QT COMPANY DOES +NOT WARRANT THAT THE LICENSED SOFTWARE WILL SATISFY LICENSEE'S REQUIREMENTS OR +THAT IT WILL OPERATE WITHOUT DEFECT OR ERROR OR THAT THE OPERATION THEREOF +WILL BE UNINTERRUPTED. 7. INDEMNIFICATION AND LIMITATION OF LIABILITY + 7.1. Limitation of Liability EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II) BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO @@ -517,10 +522,10 @@ EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II) BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO -EVENT SHALL EITHER PARTY'S TOTAL AGGREGATE LIABILITY UNDER THIS AGREEMENT -EXCEED THE AGGREGATE LICENSE FEES PAID OR PAYABLE TO THE QT COMPANY FROM -LICENSEE DURING THE PERIOD OF TWELVE (12) MONTHS IMMEDIATELY PRECEDING THE -EVENT RESULTING IN SUCH LIABILITY. +EVENT SHALL EITHER PARTY'S TOTAL AGGREGATE LIABILITY UNDER THIS AGREEMENT EXCEED +THE AGGREGATE LICENSE FEES PAID OR PAYABLE TO THE QT COMPANY FROM LICENSEE +DURING THE PERIOD OF TWELVE (12) MONTHS IMMEDIATELY PRECEDING THE EVENT +RESULTING IN SUCH LIABILITY. THE PROVISIONS OF THIS SECTION 7 ALLOCATE THE RISKS UNDER THIS AGREEMENT BETWEEN THE QT COMPANY AND LICENSEE AND THE PARTIES HAVE RELIED UPON THE @@ -532,6 +537,7 @@ USE OF LICENSED SOFTWARE. 8. SUPPORT, UPDATES AND ONLINE SERVICES + Upon due payment of the agreed License Fees the Licensee will be eligible to receive Support and Updates and to use the Online Services during the License Term, provided, however, that in the event the License Term is longer than 36 @@ -550,30 +556,32 @@ any service or support to Customers. 9. CONFIDENTIALITY + Each Party acknowledges that during the Term of this Agreement each Party may receive information about the other Party's business, business methods, business plans, customers, business relations, technology, and other -information, including the terms of this Agreement, that is confidential and of -great value to the other Party, and the value of which would be significantly -reduced if disclosed to third parties ("Confidential Information"). -Accordingly, when a Party (the "Receiving Party") receives Confidential -Information from the other Party (the "Disclosing Party"), the Receiving Party -shall only disclose such information to employees and Contractors on a need to -know basis, and shall cause its employees and employees of its Affiliates to: -(i) maintain any and all Confidential Information in confidence; (ii) not -disclose the Confidential Information to a third party without the Disclosing -Party's prior written approval; and (iii) not, directly or indirectly, use the -Confidential Information for any purpose other than for exercising its rights -and fulfilling its responsibilities pursuant to this Agreement. Each Party -shall take reasonable measures to protect the Confidential Information of the -other Party, which measures shall not be less than the measures taken by such -Party to protect its own confidential and proprietary information. +information, including the terms of this Agreement, that is confidential and +of great value to the other Party, and the value of which would be +significantly reduced if disclosed to third parties ("Confidential +Information"). Accordingly, when a Party (the "Receiving Party") receives +Confidential Information from the other Party (the "Disclosing Party"), the +Receiving Party shall only disclose such information to employees and +Contractors on a need to know basis, and shall cause its employees and +employees of its Affiliates to: (i) maintain any and all Confidential +Information in confidence; (ii) not disclose the Confidential Information to +a third party without the Disclosing Party's prior written approval; and (iii) +not, directly or indirectly, use the Confidential Information for any purpose +other than for exercising its rights and fulfilling its responsibilities +pursuant to this Agreement. Each Party shall take reasonable measures to +protect the Confidential Information of the other Party, which measures shall +not be less than the measures taken by such Party to protect its own +confidential and proprietary information. Obligation of confidentiality shall not apply to information that (i) is or becomes generally known to the public through no act or omission of the -Receiving Party; (ii) was in the Receiving Party's lawful possession prior to -the disclosure hereunder and was not subject to limitations on disclosure or -use; (iii) is developed independently by employees or Contractors of the +Receiving Party; (ii) was in the Receiving Party's lawful possession prior +to the disclosure hereunder and was not subject to limitations on disclosure +or use; (iii) is developed independently by employees or Contractors of the Receiving Party or other persons working for the Receiving Party who have not had access to the Confidential Information of the Disclosing Party, as proven by the written records of the Receiving Party; (iv) is lawfully disclosed to @@ -587,10 +595,11 @@ The obligations under this Section 9 shall continue to remain in force for a period of five (5) years after the last disclosure, and, with respect to trade -secrets, for so long as such trade secrets are protected under applicable trade -secret laws. +secrets, for so long as such trade secrets are protected under applicable +trade secret laws. 10. FEES, DELIVERY AND PAYMENT + 10.1. License Fees License Fees are described in The Qt Company's standard price list, quote or Purchase Order confirmation or in an appendix hereto, as the case may be. @@ -600,30 +609,32 @@ 10.2. Ordering Licenses Licensee may purchase Development Licenses and Distribution Licenses pursuant -to agreed pricing terms or, if no specific pricing terms have been agreed upon, -at The Qt Company's standard pricing terms applicable at the time of purchase. -Unless specifically otherwise provided, any pricing terms referenced in this -Agreement shall be valid for twelve (12) months from the date of this Agreement. +to agreed pricing terms or, if no specific pricing terms have been agreed +upon, at The Qt Company's standard pricing terms applicable at the time of +purchase. Unless specifically otherwise provided, any pricing terms +referenced in this Agreement shall be valid for twelve (12) months from the +date of this Agreement. Licensee shall submit all purchase orders for Development Licenses and -Distribution Licenses to The Qt Company by email or any other method acceptable -to The Qt Company (each such order is referred to herein as a "Purchase Order") -for confirmation, whereupon the Purchase Order shall become binding between the -Parties. +Distribution Licenses to The Qt Company by email or any other method +acceptable to The Qt Company (each such order is referred to herein as a +"Purchase Order") for confirmation, whereupon the Purchase Order shall +become binding between the Parties. 10.3. Distribution License Packs Unless otherwise agreed, Distribution Licenses shall be purchased by way of Distribution License Packs. -Upon due payment of the ordered Distribution License Pack(s), the Licensee will -have an account of Distribution Licenses available for distributing the -Redistributables in accordance with this Agreement. +Upon due payment of the ordered Distribution License Pack(s), the Licensee +will have an account of Distribution Licenses available for distributing +the Redistributables in accordance with this Agreement. Each time Licensee distributes a copy of Redistributables, then one -Distribution License is used, and Licensee's account of available Distribution -Licenses is decreased accordingly.Licensee may distribute copies of the -Redistributables so long as Licensee has Distribution Licenses remaining on -its account. +Distribution License is used, and Licensee's account of available +Distribution Licenses is decreased accordingly. + +Licensee may distribute copies of the Redistributables so long as Licensee +has Distribution Licenses remaining on its account. 10.4. Payment Terms License Fees and any other charges under this Agreement shall be paid by @@ -639,104 +650,114 @@ 10.5. Taxes All License Fees and other charges payable hereunder are gross amounts but -exclusive of any value added tax, use tax, sales tax, withholding tax and other -taxes, duties or tariffs ("Taxes") levied directly for the sale, delivery or -use of Licensed Software hereunder pursuant to any applicable law. Such -applicable Taxes shall be paid by Licensee to The Qt Company, or, where -applicable, in lieu of payment of such Taxes to The Qt Company, Licensee shall -provide an exemption certificate to The Qt Company and any applicable authority. +exclusive of any value added tax, use tax, sales tax, withholding tax and +other taxes, duties or tariffs ("Taxes") levied directly for the sale, +delivery or use of Licensed Software hereunder pursuant to any applicable +law. Such applicable Taxes shall be paid by Licensee to The Qt Company, or, +where applicable, in lieu of payment of such Taxes to The Qt Company, +Licensee shall provide an exemption certificate to The Qt Company and any +applicable authority. 11. RECORD-KEEPING AND REPORTING OBLIGATIONS; AUDIT RIGHTS + 11.1. Licensee's Record-keeping -Licensee shall at all times during the Term of this Agreement and for a period -of seven (7) years thereafter maintain Licensee's Records in an accurate and -up-to-date form. Licensee's Records shall be adequate to reasonably enable The -Qt Company to determine Licensee's compliance with the provisions of this -Agreement. The records shall conform to general good accounting practices. - -Licensee shall, within thirty (30) days from receiving The Qt Company's request -to that effect, deliver to The Qt Company a report based on Licensee's Records, -such report to contain information, in sufficient detail, on (i) number and -identity of users working with Licensed Software or Open Source Qt, (ii) copies -of Redistributables distributed by Licensee during the most recent calendar -quarter and/or any other term specified by The Qt Company, (iii) number of -undistributed copies of Redistributables and corresponding number of unused -Distribution Licenses remaining on Licensee's account, and (iv) any other -information as The Qt Company may reasonably require from time to time. +Licensee shall at all times during the Term of this Agreement and for a +period of seven (7) years thereafter maintain Licensee's Records in an +accurate and up-to-date form. Licensee's Records shall be adequate to +reasonably enable The Qt Company to determine Licensee's compliance with +the provisions of this Agreement. The records shall conform to general +good accounting practices. + +Licensee shall, within thirty (30) days from receiving The Qt Company's +request to that effect, deliver to The Qt Company a report based on +Licensee's Records, such report to contain information, in sufficient +detail, on (i) number and identity of users working with Licensed Software +or Open Source Qt, (ii) copies of Redistributables distributed by Licensee +during the most recent calendar quarter and/or any other term specified by +The Qt Company, (iii) number of undistributed copies of Redistributables +and corresponding number of unused Distribution Licenses remaining on +Licensee's account, and (iv) any other information as The Qt Company may +reasonably require from time to time. 11.2. The Qt Company's Audit Rights -The Qt Company or an independent auditor acting on behalf of The Qt Company's, -may, upon at least five (5) business days' prior written notice and at its -expense, audit Licensee with respect to the Licensee's use of the Licensed -Software, but not more frequently than once during each 6-month period. Such -audit may be conducted by mail, electronic means or through an in-person visit -to Licensee's place of business. Any such in-person audit shall be conducted -during regular business hours at Licensee's facilities and shall not -unreasonably interfere with Licensee's business activities. The Qt Company or -the independent auditor acting on behalf of The Qt Company shall be entitled to -inspect Licensee's Records and conduct necessary interviews of Licensee's -relevant employees and Contractors. All such Licensee's Records and use thereof -shall be subject to an obligation of confidentiality under this Agreement. - -If an audit reveals that Licensee is using the Licensed Software beyond scope -of the licenses Licensee has paid for, Licensee agrees to pay The Qt Company -any amounts owed for such unauthorized use within 30 days from receipt of the -corresponding invoice from The Qt Company. In addition, in the event the audit -reveals a material violation of the terms of this Agreement (without -limitation, either (i) underpayment of more than 10 % of License Fees or 10,000 -euros (whichever is more) or (ii) distribution of products, which include or -result from Prohibited Combination, shall be deemed a material violation for -purposes of this section), then the Licensee shall pay The Qt Company's -reasonable cost of conducting such audit. +The Qt Company or an independent auditor acting on behalf of The Qt +Company's, may, upon at least five (5) business days' prior written +notice and at its expense, audit Licensee with respect to the Licensee's +use of the Licensed Software, but not more frequently than once during +each 6-month period. Such audit may be conducted by mail, electronic means +or through an in-person visit to Licensee's place of business. Any such +in-person audit shall be conducted during regular business hours at +Licensee's facilities and shall not unreasonably interfere with Licensee's +business activities. The Qt Company or the independent auditor acting on +behalf of The Qt Company shall be entitled to inspect Licensee's Records +and conduct necessary interviews of Licensee's relevant employees and +Contractors. All such Licensee's Records and use thereof shall be subject +to an obligation of confidentiality under this Agreement. + +If an audit reveals that Licensee is using the Licensed Software beyond +scope of the licenses Licensee has paid for, Licensee agrees to pay The Qt +Company any amounts owed for such unauthorized use within 30 days from +receipt of the corresponding invoice from The Qt Company. + +In addition, in the event the audit reveals a material violation of the +terms of this Agreement (without limitation, either (i) underpayment of +more than 10 % of License Fees or 10,000 euros (whichever is more) or +(ii) distribution of products, which include or result from Prohibited +Combination, shall be deemed a material violation for purposes of this +section), then the Licensee shall pay The Qt Company's reasonable cost of +conducting such audit. 12. TERM AND TERMINATION 12.1. Agreement Term -This Agreement shall enter into force upon due acceptance by both Parties and -remain in force for as long as there is any Development License(s) purchased -under this Agreement in force ("Term"), unless and until terminated pursuant to -the terms of this Section 12. +This Agreement shall enter into force upon due acceptance by both +Parties and remain in force for as long as there is any Development +License(s) purchased under this Agreement in force ("Term"), unless and +until terminated pursuant to the terms of this Section 12. 12.2. Termination and suspension of rights -Either Party shall have the right to terminate this Agreement upon thirty (30) -days prior written notice if the other Party commits a material breach of any -obligation of this Agreement and fails to remedy such breach within such notice -period. +Either Party shall have the right to terminate this Agreement upon thirty +(30) days prior written notice if the other Party commits a material +breach of any obligation of this Agreement and fails to remedy such breach +within such notice period. Instead of termination, The Qt Company shall have the right to suspend or -withhold grants of all rights to the Licensed Software hereunder, including but -not limited to the Development Licenses, Distribution License, and Support, -should Licensee fail to make payment in timely fashion or otherwise violates or -is reasonably suspected to violate its obligations or terms of this Agreement, -and where such violation or breach is not cured within five (5) business days -following The Qt Company's written notice thereof. +withhold grants of all rights to the Licensed Software hereunder, +including but not limited to the Development Licenses, Distribution +License, and Support, should Licensee fail to make payment in timely +fashion or otherwise violates or is reasonably suspected to violate its +obligations or terms of this Agreement, and where such violation or breach +is not cured within five (5) business days following The Qt Company's +written notice thereof. 12.3. Mutual Right to Terminate -Either Party shall have the right to terminate this Agreement immediately upon -written notice in the event that the other Party becomes insolvent, files for -any form of bankruptcy, makes any assignment for the benefit of creditors, has -a receiver, administrative receiver or officer appointed over the whole or a -substantial part of its assets, ceases to conduct business, or an act -equivalent to any of the above occurs under the laws of the jurisdiction of the -other Party. - -12.4. Parties´ Rights and Duties upon Termination -Upon expiry or termination of the Agreement, Licensee shall cease and shall -cause all Designated Users (including those of its Affiliates' and +Either Party shall have the right to terminate this Agreement immediately +upon written notice in the event that the other Party becomes insolvent, +files for any form of bankruptcy, makes any assignment for the benefit of +creditors, has a receiver, administrative receiver or officer appointed +over the whole or a substantial part of its assets, ceases to conduct +business, or an act equivalent to any of the above occurs under the laws +of the jurisdiction of the other Party. + +12.4. Parties' Rights and Duties upon Termination +Upon expiry or termination of the Agreement, Licensee shall cease and +shall cause all Designated Users (including those of its Affiliates' and Contractors') to cease using the Licensed Software and distribution of the Redistributables under this Agreement. Notwithstanding the above, in the event the Agreement expires or is terminated: - (i) as a result of The Qt Company choosing not to renew the Development - License(s) as set forth in Section 3.1, then all valid licenses - possessed by the Licensee at such date shall be extended to be - valid in perpetuity under the terms of this Agreement and Licensee - is entitled to purchase additional licenses as set forth in - Section 10.2; or - (ii) for reason other than by The Qt Company pursuant to item (i) above - or pursuant to Section 12.2, then the Licensee is entitled, for a - period of six (6) months after the effective date of termination, - to continue distribution of Devices under the Distribution Licenses - paid but unused at such effective date of termination. + (i) as a result of The Qt Company choosing not to renew the Development + License(s) as set forth in Section 3.1, and where such decision of + non-renewal is not due to any ongoing breach or alleged breach (as + reasonably determined by The Qt Company) by Licensee of the terms of this + Agreement or any applicable license terms of Open Source Qt, then all valid + licenses possessed by the Licensee at such date shall be extended to be + valid in perpetuity under the terms of this Agreement and Licensee is + entitled to purchase additional licenses as set forth in Section 10.2; or + (ii) for reason other than by The Qt Company pursuant to item (i) above + or pursuant to Section 12.2, then the Licensee is entitled, for a + period of six (6) months after the effective date of termination, + to continue distribution of Devices under the Distribution Licenses + paid but unused at such effective date of termination. Upon any such termination the Licensee shall destroy or return to The Qt Company all copies of the Licensed Software and all related materials and will @@ -749,65 +770,66 @@ to The Qt Company prior to the effective date of termination, and Licensee shall immediately pay to The Qt Company all such fees upon the effective date of termination. Termination of this Agreement shall not affect any rights of -Customers to continue use of Applications and Devices (and therein incorporated -Redistributables). +Customers to continue use of Applications and Devices (and therein +incorporated Redistributables). 12.5. Extension in case of bankruptcy -In the event The Qt Company is declared bankrupt under a final, non-cancellable -decision by relevant court of law, and this Agreement is not, at the date of -expiry of the Development License(s) pursuant to Section 3.1, assigned to -party, who has assumed The Qt Company's position as a legitimate licensor of -Licensed Software under this Agreement, then all valid licenses possessed by -the Licensee at such date of expiry, and which the Licensee has not notified -for expiry, shall be extended to be valid in perpetuity under the terms of this -Agreement. +In the event The Qt Company is declared bankrupt under a final, +non-cancellable decision by relevant court of law, and this Agreement is not, +at the date of expiry of the Development License(s) pursuant to Section 3.1, +assigned to party, who has assumed The Qt Company's position as a legitimate +licensor of Licensed Software under this Agreement, then all valid licenses +possessed by the Licensee at such date of expiry, and which the Licensee has +not notified for expiry, shall be extended to be valid in perpetuity under the +terms of this Agreement. 13. GOVERNING LAW AND LEGAL VENUE + In the event this Agreement is in the name of The Qt Company Inc., a Delaware Corporation, then: - (i) this Agreement shall be construed and interpreted in accordance - with the laws of the State of California, USA, excluding its choice - of law provisions; - (ii) the United Nations Convention on Contracts for the International - Sale of Goods will not apply to this Agreement; and - (iii) any dispute, claim or controversy arising out of or relating to - this Agreement or the breach, termination, enforcement, - interpretation or validity thereof, including the determination of - the scope or applicability of this Agreement to arbitrate, shall - be determined by arbitration in San Francisco, USA, before one - arbitrator. The arbitration shall be administered by JAMS pursuant - to JAMS' Streamlined Arbitration Rules and Procedures. Judgment on - the Award may be entered in any court having jurisdiction. This - Section shall not preclude parties from seeking provisional - remedies in aid of arbitration from a court of appropriate - jurisdiction. + (i) this Agreement shall be construed and interpreted in accordance with + the laws of the State of California, USA, excluding its choice of + law provisions; + (ii) the United Nations Convention on Contracts for the International + Sale of Goods will not apply to this Agreement; and + (iii) any dispute, claim or controversy arising out of or relating to this + Agreement or the breach, termination, enforcement, interpretation or + validity thereof, including the determination of the scope or + applicability of this Agreement to arbitrate, shall be determined by + arbitration in San Francisco, USA, before one arbitrator. The + arbitration shall be administered by JAMS pursuant to JAMS' + Streamlined Arbitration Rules and Procedures. Judgment on the Award + may be entered in any court having jurisdiction. This Section shall + not preclude parties from seeking provisional remedies in aid of + arbitration from a court of appropriate jurisdiction. In the event this Agreement is in the name of The Qt Company Ltd., a Finnish Company, then: - (i) this Agreement shall be construed and interpreted in accordance - with the laws of Finland, excluding its choice of law provisions; - (ii) the United Nations Convention on Contracts for the International - Sale of Goods will not apply to this Agreement; and - (iii) any disputes, controversy or claim arising out of or relating to - this Agreement, or the breach, termination or validity thereof - shall be finally settled by arbitration in accordance with the - Arbitration Rules of Finland Chamber of Commerce. The arbitration - tribunal shall consist of one (1), or if either Party so requires, - of three (3), arbitrators. The award shall be final and binding and - enforceable in any court of competent jurisdiction. The arbitration - shall be held in Helsinki, Finland and the process shall be - conducted in the English language. This Section shall not preclude - parties from seeking provisional remedies in aid of arbitration - from a court of appropriate jurisdiction. + (i) this Agreement shall be construed and interpreted in accordance with + the laws of Finland, excluding its choice of law provisions; + (ii) the United Nations Convention on Contracts for the International + Sale of Goods will not apply to this Agreement; and + (iii) any disputes, controversy or claim arising out of or relating to + this Agreement, or the breach, termination or validity thereof shall + be finally settled by arbitration in accordance with the Arbitration + Rules of Finland Chamber of Commerce. The arbitration tribunal shall + consist of one (1), or if either Party so requires, of three (3), + arbitrators. The award shall be final and binding and enforceable in + any court of competent jurisdiction. The arbitration shall be held + in Helsinki, Finland and the process shall be conducted in the + English language. This Section shall not preclude parties from + seeking provisional remedies in aid of arbitration from a court of + appropriate jurisdiction. 14. GENERAL PROVISIONS + 14.1. No Assignment Except in the case of a merger or sale of substantially all of its corporate -assets, Licensee shall not be entitled to assign or transfer all or any of its -rights, benefits and obligations under this Agreement without the prior written -consent of The Qt Company, which shall not be unreasonably withheld or delayed. -The Qt Company shall be entitled to freely assign or transfer any of its -rights, benefits or obligations under this Agreement. +assets, Licensee shall not be entitled to assign or transfer all or any of +its rights, benefits and obligations under this Agreement without the prior +written consent of The Qt Company, which shall not be unreasonably withheld +or delayed. The Qt Company shall be entitled to freely assign or transfer any +of its rights, benefits or obligations under this Agreement. 14.2. No Third-Party Representations Licensee shall make no representations or warranties concerning the Licensed @@ -821,511 +843,473 @@ sections include especially the following: 1, 2, 6, 7, 9, 11, 12.4, 13 and 14. 14.4. Entire Agreement -This Agreement, the exhibits hereto, the License Certificate and any applicable -Purchase Order accepted by The Qt Company constitute the complete agreement -between the Parties and supersedes all prior or contemporaneous discussions, -representations, and proposals, written or oral, with respect to the subject -matters discussed herein. +This Agreement, the exhibits hereto, the License Certificate and any +applicable Purchase Order accepted by The Qt Company constitute the complete +agreement between the Parties and supersedes all prior or contemporaneous +discussions, representations, and proposals, written or oral, with respect +to the subject matters discussed herein. In the event of any conflict or inconsistency between this Agreement and any -Purchase Order, the terms of this Agreement will prevail over the terms of the -Purchase Order with respect to such conflict or inconsistency. +Purchase Order, the terms of this Agreement will prevail over the terms of +the Purchase Order with respect to such conflict or inconsistency. -Parties specifically acknowledge and agree that this Agreement prevails over -any click-to-accept or similar agreements the Designated Users may need to -accept online upon download of the Licensed Software, as may be required by -The Qt Company's applicable processes relating to Licensed Software. +Parties specifically acknowledge and agree that this Agreement prevails +over any click-to-accept or similar agreements the Designated Users may +need to accept online upon download of the Licensed Software, as may be +required by The Qt Company's applicable processes relating to Licensed +Software. 14.5. Modifications No modification of this Agreement shall be effective unless contained in a writing executed by an authorized representative of each Party. No term or condition contained in Licensee's Purchase Order ("Deviating Terms") shall apply unless The Qt Company has expressly agreed such Deviating Terms in -writing. Unless and to the extent expressly agreed by The Qt Company, any such -Deviating Terms shall be deemed void and with no legal effect. For clarity, -delivery of the Licensed Software following the receipt of the Purchase Order -including Deviating Terms shall not constitute acceptance of such Deviating -Terms." +writing. Unless and to the extent expressly agreed by The Qt Company, any +such Deviating Terms shall be deemed void and with no legal effect. For +clarity, delivery of the Licensed Software following the receipt of the +Purchase Order including Deviating Terms shall not constitute acceptance of +such Deviating Terms." 14.6. Force Majeure -Except for the payment obligations hereunder, neither Party shall be liable to -the other for any delay or non-performance of its obligations hereunder in the -event and to the extent that such delay or non-performance is due to an event -of act of God, terrorist attack or other similar unforeseeable catastrophic -event that prevents either Party for fulfilling its obligations under this -Agreement and which such Party cannot avoid or circumvent ("Force Majeure -Event"). If the Force Majeure Event results in a delay or non-performance of a -Party for a period of three (3) months or longer, then either Party shall have -the right to terminate this Agreement with immediate effect without any -liability (except for the obligations of payment arising prior to the event of -Force Majeure) towards the other Party. +Except for the payment obligations hereunder, neither Party shall be liable +to the other for any delay or non-performance of its obligations hereunder +in the event and to the extent that such delay or non-performance is due to +an event of act of God, terrorist attack or other similar unforeseeable +catastrophic event that prevents either Party for fulfilling its +obligations under this Agreement and which such Party cannot avoid or +circumvent ("Force Majeure Event"). If the Force Majeure Event results in +a delay or non-performance of a Party for a period of three (3) months or +longer, then either Party shall have the right to terminate this Agreement +with immediate effect without any liability (except for the obligations of +payment arising prior to the event of Force Majeure) towards the other +Party. 14.7. Notices -Any notice given by one Party to the other shall be deemed properly given and -deemed received if specifically acknowledged by the receiving Party in writing -or when successfully delivered to the recipient by hand, fax, or special -courier during normal business hours on a business day to the addresses -specified for each Party on the signature page. Each communication and document -made or delivered by one Party to the other Party pursuant to this Agreement -shall be in the English language. +Any notice given by one Party to the other shall be deemed properly given +and deemed received if specifically acknowledged by the receiving Party in +writing or when successfully delivered to the recipient by hand, fax, or +special courier during normal business hours on a business day to the +addresses specified for each Party on the signature page. Each +communication and document made or delivered by one Party to the other +Party pursuant to this Agreement shall be in the English language. 14.8. Export Control Licensee acknowledges that the Redistributables, as incorporated in -Applications or Devices, may be subject to export control restrictions under -the applicable laws of respective countries. Licensee shall fully comply with -all applicable export license restrictions and requirements as well as with all -laws and regulations relating to the Redistributables and exercise of licenses -hereunder and shall procure all necessary governmental authorizations, -including without limitation, all necessary licenses, approvals, permissions or -consents, where necessary for the re-exportation of the Redistributables, -Applications and/or Devices. +Applications or Devices, may be subject to export control restrictions +under the applicable laws of respective countries. Licensee shall fully +comply with all applicable export license restrictions and requirements +as well as with all laws and regulations relating to the Redistributables +and exercise of licenses hereunder and shall procure all necessary +governmental authorizations, including without limitation, all necessary +licenses, approvals, permissions or consents, where necessary for the +re-exportation of the Redistributables, Applications and/or Devices. 14.9. No Implied License -There are no implied licenses or other implied rights granted under this -Agreement, and all rights, save for those expressly granted hereunder, shall -remain with The Qt Company and its licensors. In addition, no licenses or -immunities are granted to the combination of the Licensed Software with any -other software or hardware not delivered by The Qt Company under this Agreement. +There are no implied licenses or other implied rights granted under +this Agreement, and all rights, save for those expressly granted hereunder, +shall remain with The Qt Company and its licensors. In addition, no licenses +or immunities are granted to the combination of the Licensed Software with +any other software or hardware not delivered by The Qt Company under this +Agreement. 14.10. Attorney Fees -The prevailing Party in any action to enforce this Agreement shall be entitled -to recover its attorney's fees and costs in connection with such action. +The prevailing Party in any action to enforce this Agreement shall be +entitled to recover its attorney's fees and costs in connection with such +action. 14.11. Privacy -Licensee acknowledges and agrees that for the purpose of this Agreement, The Qt -Company may collect, use, transfer and disclose personal data pertaining to -Designated Users as well as any other employees and directors of the Licensee -and its Contractors relevant for carrying out the intent of this Agreement. -Such personal data may be collected from the Licensee or directly from the -relevant individuals. The Parties acknowledge that with regard to such personal -data processed hereunder, The Qt Company shall be regarded as the Data -Controller under the applicable Data Protection Legislation. The Qt Company -shall process any such personal data in accordance with its privacy policies -and practices, which will comply with all applicable requirements of the Data -Protection Legislation. +Licensee acknowledges and agrees that for the purpose of this Agreement, +The Qt Company may collect, use, transfer and disclose personal data +pertaining to Designated Users as well as any other employees and directors +of the Licensee and its Contractors relevant for carrying out the intent of +this Agreement. Such personal data may be collected from the Licensee or +directly from the relevant individuals. The Parties acknowledge that with +regard to such personal data processed hereunder, The Qt Company shall be +regarded as the Data Controller under the applicable Data Protection +Legislation. The Qt Company shall process any such personal data in +accordance with its privacy policies and practices, which will comply with +all applicable requirements of the Data Protection Legislation. 14.12. Severability -If any provision of this Agreement shall be adjudged by any court of competent -jurisdiction to be unenforceable or invalid, that provision shall be limited or -eliminated to the minimum extent necessary so that this Agreement shall -otherwise remain in full force and effect and enforceable. - - +If any provision of this Agreement shall be adjudged by any court of +competent jurisdiction to be unenforceable or invalid, that provision shall +be limited or eliminated to the minimum extent necessary so that this +Agreement shall otherwise remain in full force and effect and enforceable. APPENDICES -The Agreement includes Appendix 1, and possibly one or more of the appendices -3-5, depending on the product(s) purchased by the Licensee, what is stated in -the quote or invoice, and/or what is stated in the Licensee's License -Certificate. +The Agreement includes Appendix 1, and possibly one or more of the +appendices 3-5, depending on the product(s) purchased by the Licensee, +what is stated in the quote or invoice, and/or what is stated in the +Licensee's License Certificate. APPENDIX 1 -The modules and/or tools that are included in the respective product - Qt for -Application Development (QtAD), Qt for Device Creation (QtDC), Qt for MCUs -(QtMCU), Qt 3D Studio (Qt3DS) and Qt Design Studio (QtDS) - are marked with 'X' -in the below table. - -Parts of the product that are permitted for distribution in object-code form -only ("Redistributables") are marked with 'R' in the below table. - -Modules/Tools | QtAD | QtDC | QtMCU | Qt3DS | QtDS -------------------------------------------------------------------------------- -Qt Core | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt GUI | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Multimedia | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Multimedia Widgets | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Network | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt QML | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Quick | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Quick Controls 2 | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Quick Dialogs | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Quick Layouts | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Quick Test | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt SQL | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Test | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Widgets | X,R | X,R | | | -------------------------------------------------------------------------------- -Active Qt | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt 3D | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Android Extras | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Bluetooth | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Canvas 3D | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Concurrent | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt D-Bus | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Gamepad | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Graphical Effects | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Help | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Image Formats | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Location | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Mac Extras | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Network Authorization | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt NFC | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Platform Headers | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Positioning | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Print Support | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Purchasing | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt for Python | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Quick Controls | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Quick Extras | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Quick Widgets | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt SCXML | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Sensors | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Serial Bus | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Serial Port | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Speech | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt SVG | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt UI Tools | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt WebChannel | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt WebEngine | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt WebSockets | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt WebView | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Windows Extras | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt X11 Extras | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt XML | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt XML Patterns | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Wayland Compositor | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Charts | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Data Visualization | X,R | X,R | | | -------------------------------------------------------------------------------- -Qt Virtual Keyboard | X,R | X,R | | | -------------------------------------------------------------------------------- -Boot 2 Qt stack | | X,R | | | -------------------------------------------------------------------------------- -Qt OTA | | X,R | | | -------------------------------------------------------------------------------- -Device Utilities | | X,R | | | -------------------------------------------------------------------------------- -Qt Debugging Bridge (QDB) Daemon | | X,R | | | -------------------------------------------------------------------------------- -Qt Quick Ultralite Controls | | | X,R | | -------------------------------------------------------------------------------- -Qt Quick Ultralite | | | X,R | | -------------------------------------------------------------------------------- -Qt Creator | X | X | X | | -------------------------------------------------------------------------------- -Qt Designer (Qt Widget Designer) | X | X | | | -------------------------------------------------------------------------------- -Qt Quick Designer (Qt Creator plugin) | X | X | X | | -------------------------------------------------------------------------------- -Qt Linguist | X | X | X | | -------------------------------------------------------------------------------- -Qt Assistant | X | X | X | | -------------------------------------------------------------------------------- -lupdate | X | X | X | | -------------------------------------------------------------------------------- -lrelease | X | X | X | | -------------------------------------------------------------------------------- -qmake | X | X | | | -------------------------------------------------------------------------------- -uic | X | X | | | -------------------------------------------------------------------------------- -rcc | X | X | | | -------------------------------------------------------------------------------- -qlalr | X | X | | | -------------------------------------------------------------------------------- -qdoc | X | X | | | -------------------------------------------------------------------------------- -qmlscene | X | X | | | -------------------------------------------------------------------------------- -qmlviewer | X | X | | | -------------------------------------------------------------------------------- -Target toolchains | | X | X | | -------------------------------------------------------------------------------- -Qt Debugging Bridge (QDB) Host Tools | | X | | | -------------------------------------------------------------------------------- -qtconfig-gui | | X | | | -------------------------------------------------------------------------------- -Qt Emulator | | X | | | -------------------------------------------------------------------------------- -qmlinterfacegenerator | | | X | | -------------------------------------------------------------------------------- -qmltocpp | | | X | | -------------------------------------------------------------------------------- -qulfontcompiler | | | X | | -------------------------------------------------------------------------------- -Qt53DStudioRuntime2 | | | | X,R | -------------------------------------------------------------------------------- -Qt 3D Studio | | | | X | -------------------------------------------------------------------------------- -Qt Design Studio | | | | | X -------------------------------------------------------------------------------- + +The modules and/or tools that are included in the respective product - Qt +for Application Development (QtAD), Qt for Device Creation (QtDC), Qt for +MCUs (QtMCU), Qt 3D Studio (Qt3DS) and Qt Design Studio (QtDS) - are +marked with 'X' in the below table. The modules and tools are ported to Qt 6 +in stages and are subject to availability. + +Parts of the product that are permitted for distribution in object-code +form only ("Redistributables") are marked with 'R' in the below table. + ++-----------------------------------------------------------------------+ +| Modules / Tools | QtAD | QtDC | QtMCU | Qt3DS | QtDS | ++-----------------------------------------------------------------------+ +| Qt Core | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt GUI | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Multimedia | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Multimedia Widgets | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Network | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt PDF | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt QML | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Quick | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Quick Controls 2 | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Quick Dialogs | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Quick Layouts | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Quick Test | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt SQL | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Test | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Widgets | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Active Qt | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt 3D | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Android Extras | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Bluetooth | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Canvas 3D | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Concurrent | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt D-Bus | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Gamepad | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Graphical Effects | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Help | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Image Formats | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Location | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Mac Extras | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Network Authorization | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt NFC | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Platform Headers | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Positioning | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Print Support | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Purchasing | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt for Python | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Quick Controls | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Quick Extras | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Quick Widgets | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt SCXML | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Sensors | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Serial Bus | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Serial Port | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Speech | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt SVG | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt UI Tools | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt WebChannel | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt WebEngine | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt WebSockets | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt WebView | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Windows Extras | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt X11 Extras | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt XML | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt XML Patterns | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Wayland Compositor | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Charts | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Data Visualization | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Virtual Keyboard | X, R | X, R | | | | ++-----------------------------------------------------------------------+ +| Boot 2 Qt stack | | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt OTA | | X, R | | | | ++-----------------------------------------------------------------------+ +| Device Utilities | | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Debugging Bridge (QDB) Daemon | | X, R | | | | ++-----------------------------------------------------------------------+ +| Qt Quick Ultralite Controls | | | X, R | | | ++-----------------------------------------------------------------------+ +| Qt Quick Ultralite | | | X, R | | | ++-----------------------------------------------------------------------+ +| Qt Creator | X | X | X | | | ++-----------------------------------------------------------------------+ +| Qt Designer (Qt Widget Designer) | X | X | | | | ++-----------------------------------------------------------------------+ +| Qt Quick Designer (Qt Creator | X, R | X, R | X, R | | | +| plugin) | | | | | | ++-----------------------------------------------------------------------+ +| Qt Linguist | X, R | X, R | X, R | | | ++-----------------------------------------------------------------------+ +| Qt Assistant | X, R | X, R | X, R | | | ++-----------------------------------------------------------------------+ +| Lupdate | X, R | X, R | X, R | | | ++-----------------------------------------------------------------------+ +| Lrelease | X, R | X, R | X, R | | | ++-----------------------------------------------------------------------+ +| Qmake | X | X | | | | ++-----------------------------------------------------------------------+ +| Uic | X | X | | | | ++-----------------------------------------------------------------------+ +| Rcc | X | X | | | | ++-----------------------------------------------------------------------+ +| Qlalr | X | X | | | | ++-----------------------------------------------------------------------+ +| Qdoc | X | X | | | | ++-----------------------------------------------------------------------+ +| Qmlscene | X | X | | | | ++-----------------------------------------------------------------------+ +| Qmlviewer | X | X | | | | ++-----------------------------------------------------------------------+ +| Target toolchains | | X | X | | | ++-----------------------------------------------------------------------+ +| Qt Debugging Bridge (QDB) Host | | X | | | | +| Tools | | | | | | ++-----------------------------------------------------------------------+ +| qtconfig-gui | | X | | | | ++-----------------------------------------------------------------------+ +| Qt Emulator | | X | | | | ++-----------------------------------------------------------------------+ +| Qmlinterfacegenerator | | | X | | | ++-----------------------------------------------------------------------+ +| Qmltocpp | | | X | | | ++-----------------------------------------------------------------------+ +| qulfontcompiler | | | X | | | ++-----------------------------------------------------------------------+ +| Qt53DStudioRuntime2 | | | | X, R | | ++-----------------------------------------------------------------------+ +| Qt 3D Studio | | | | X | | ++-----------------------------------------------------------------------+ +| Qt Design Studio | | | | | X | ++-----------------------------------------------------------------------+ APPENDIX 3: ADDITIONS TO LICENSED SOFTWARE + In addition to what is provided under the definition of the Licensed Software, Parties agree that Licensed Software shall also include the Add-On Products of -The Qt Company, as mentioned in this Appendix, if included in the -quote / invoice. +The Qt Company, as mentioned in this Appendix, if included in the quote / +invoice. The Modules and/or Tools of the Licensed Software that are included with each -Add-On Product respectively are marked with 'X' in the below table. Parts of -the respective Add-On Product that are permitted for distribution in +Add-On Product respectively are marked with 'X' in the below table. The modules +are ported to Qt 6 in stages and are subject to availability. + +Parts of the respective Add-On Product that are permitted for distribution in object-code form only ("Redistributables") are marked with 'R' in the below table. -------------------------------------------------------------------------------- - | Add-On Product(s) -Modules / |------------------------------------------------------------------ -Tools of |Qt for |Qt |Qt Safe |Qt |Qt |Qt -Licensed |Automation |Automotive |Renderer |Application|Gammaray |Deployment -Software | |Suite | |Manager | |Platform - | | | | | |Package -------------------------------------------------------------------------------- -Qt MQTT | X,R | | | | | -------------------------------------------------------------------------------- -Qt KNX | X,R | | | | | -------------------------------------------------------------------------------- -Qt OPC UA | X,R | | | | | -------------------------------------------------------------------------------- -Qt CoAP | X,R | | | | | -------------------------------------------------------------------------------- -Qt Safe | | X,R | X,R | | | -Renderer | | | | | | -------------------------------------------------------------------------------- -Qt | | | | | | -Application | | X,R | | X,R | | -Manager | | | | | | -------------------------------------------------------------------------------- -Qt IVI | | X,R | | | | -------------------------------------------------------------------------------- -Reference UI| | X,R | | | | -------------------------------------------------------------------------------- -Qt GENIVI | | X,R | | | | -Extras | | | | | | -------------------------------------------------------------------------------- -QML Live | | X | | | | -------------------------------------------------------------------------------- -Qt Creator | | X | | | | -Deployment | | | | | | -------------------------------------------------------------------------------- -Qt Creator | | | | | | -Plugin for | | | | | | -Qt | | X | | X | | -Application | | | | | | -Manager | | | | | | -------------------------------------------------------------------------------- -Qt | | | | | | -Automotive | | | | | | -Suite | | X | | | | -Deployment | | | | | | -Server | | | | | | -------------------------------------------------------------------------------- -Qt Design | | X | | | | -Studio | | | | | | -------------------------------------------------------------------------------- -Qt 3D Studio| | X | | | | -------------------------------------------------------------------------------- -GammaRay | | X | | | X | -------------------------------------------------------------------------------- -Platform | | | | | | -adaptations | | | | | | -for | | | | | | X -specified | | | | | | -Deployment | | | | | | -Platforms | | | | | | -------------------------------------------------------------------------------- -Qt for | | | | | | -Device | | X | | | | -Creation | | | | | | -------------------------------------------------------------------------------- ++------------------------------------------------------------------------------------------------+ +| | Add-On Product(s) | +| +--------------------------------------------------------------------------+ +| Modules / Tools of | Qt for | Qt | Qt | Qt | Qt | Qt | +| Licensed Software | Automation | Automotive | Safe | Application | GammaRay | Deployment | +| | / Qt M2M | Suite | Renderer | Manager | | Platform | +| | Protocols | | | | | Package | ++------------------------------------------------------------------------------------------------+ +| Qt MQTT | X, R | | | | | | ++------------------------------------------------------------------------------------------------+ +| Qt KNX | X, R | | | | | | ++------------------------------------------------------------------------------------------------+ +| Qt OPC UA | X, R | | | | | | ++------------------------------------------------------------------------------------------------+ +| Qt CoAP | X, R | | | | | | ++------------------------------------------------------------------------------------------------+ +| Qt Safe Renderer | | X, R | X, R | | | | ++------------------------------------------------------------------------------------------------+ +| Qt Application | | X, R | | X, R | | | +| Manager | | | | | | | ++------------------------------------------------------------------------------------------------+ +| Qt IVI | | X, R | | | | | ++------------------------------------------------------------------------------------------------+ +| Reference UI | | X, R | | | | | ++------------------------------------------------------------------------------------------------+ +| Qt GENIVI Extras | | X, R | | | | | ++------------------------------------------------------------------------------------------------+ +| QML Live | | X | | | | | ++------------------------------------------------------------------------------------------------+ +| Qt Creator | | X | | | | | +| Deployment | | | | | | | ++------------------------------------------------------------------------------------------------+ +| Qt Creator Plugin | | X | | X | | | +| for Qt Application Manager | | | | | | ++------------------------------------------------------------------------------------------------+ +| Qt Automotive Suite | | X | | | | | +| Deployment Server | | | | | | | ++------------------------------------------------------------------------------------------------+ +| Qt Design Studio | | X | | | | | ++------------------------------------------------------------------------------------------------+ +| Qt 3D Studio | | X | | | | | ++------------------------------------------------------------------------------------------------+ +| GammaRay | | X | | | X | | ++------------------------------------------------------------------------------------------------+ +| Platform adaptations| | | | | | X | +| for specified | | | | | | +| Deployment Platforms | | | | | | ++------------------------------------------------------------------------------------------------+ +| Qt for Device | | X | | | | | +| Creation | | | | | | | ++------------------------------------------------------------------------------------------------+ + All the above Redistributables are subject to applicable provisions and limitations including but not limited to what is defined in section 3 of the Agreement. - APPENDIX 4: SMALL BUSINESS AND STARTUP -The provisions of this Appendix 4 are applicable for Start-up Companies and for -the Evaluation Term.For the purpose of this Appendix 4, the following -additional definitions shall be applicable: - -"Trial Term" shall mean a period of twelve (12) months. - -"Start-up Company" means a company with a maximum annual revenue, including -funding, equivalent to 100,000 USD (in applicable currency) during a respective -calendar year, as evidenced by duly audited records of the Licensee and -approved by The Qt Company. - -During the Trial Term, Section 3 shall apply with following modifications -("Trial Term Modifications"): - (i) Licenses granted under Sections 3.1 and 3.2 shall be free of any - charge. For clarity, License for distribution of Devices pursuant - to Section 3.3 is subject to applicable License Fee for necessary - Distribution Licenses; - (ii) Development License under Section 3.1 is limited to a maximum of - three (3) Designated Users; and - (iii) Support is available subject to availability, as judged by The Qt - Company at its free and absolute discretion, provided that support - will be limited to a maximum of ten (10) tickets during the Trial - Term. - -Upon expiry of the Trial Term: - (a) This Appendix 4 is terminated, Trial Term Modifications cease to - remain in force, Licensee's Development Licenses shall be - automatically converted into licenses subject to a License Fee (in - the amount specified in the quote or in Appendix 2 and payable with - a 30-day payment term) and Licensee's rights and obligations under - this Agreement shall continue to remain in force under the standard - provisions of the Agreement, unless the Licensee notifies The Qt - Company in writing no less than ninety (90) days before such expiry - date that Licensee does not agree to such continuance, in which - event the Agreement, and all rights of the Licensee thereunder, - shall expire; provided however that - (b) in the event the Licensee still qualifies as a Start-up Company, - the Licensee has an option ("Option"), instead of what is stated in - item a) above, to renew the Trial Term. Renewal is limited to one - time, and the total duration of Trial Term is thus 24 months after - the effective date. Licensee shall notify The Qt Company in - writing, no less than ninety (90) days before the expiry date, if - Licensee wish to exercise the Option. +The provisions of this Appendix 4 are applicable for companies with an annual +revenue, including funding, equivalent to maximum of 250,000 USD (in +applicable currency) during the latest full calendar year, as evidenced by +duly audited records of the Licensee and approved by The Qt Company +("Start-up Company"). + +Start-up Companies are qualified for a discounted License Fee for maximum of +four (4) Development Licenses ("Start-up Development License") unless +otherwise agreed between the parties. + +Start-up Development License entitles the respective Designated User for +Support only for installation related issues. + +Upon expiry of the respective License Term, the Start-up Development +Licenses shall be automatically extended, pursuant to Section 3.1 of the +Agreement, for a Renewal Term either as new Start-up Development Licenses +(if the Licensee still qualifies as a Start-up Company), or as normal +Development Licenses (if the Licensee no longer qualifies as a Start-up +company). APPENDIX 5: NON-COMMERCIAL USE -The provisions of this Appendix 5 are applicable for non-commercial use of the -Licensed Software by the Licensee. +The provisions of this Appendix 5 are applicable for non-commercial use of +the Licensed Software by the Licensee. For the purpose of this Appendix 5, the following additional definitions -(replacing the relevant definition of the Agreement, where applicable) shall be -applicable: +(replacing the relevant definition of the Agreement, where applicable) +shall be applicable: "Demo Units" shall mean (i) hardware development platform, which incorporates -the Licensed Software along with Licensee's software and/or hardware, and (ii) -prototype versions of Applications or Devices. +the Licensed Software along with Licensee's software and/or hardware, and +(ii) prototype versions of Applications or Devices. "Designated User(s)" shall mean the employees and students of the Licensee. "Licensee Products" shall mean Applications and/or Devices. -"Permitted Purpose" shall mean (i) Licensee's internal evaluation and testing -of Licensed Software, (ii) building Demo Units as well as (iii) educational -use. - -"Term" shall mean a period of twelve (12) months or any such other period as -may be agreed between the Parties. - -For the purpose of this Appendix 5, the following changes shall be agreed with -respect to relevant Sections of the Agreement: - I. Recital (A) shall be replaced in its entirety to read as follows: - - "(A) Licensee wishes to use the Licensed Software for the Permitted - Purpose." - - II. Section 3.1 shall be replaced in its entirety to read as follows: - - "The Qt Company grants to Licensee a personal, non-exclusive, - non-transferable, revocable, royalty-free license, valid for the - Term, to use, modify and copy the Licensed Software solely for the - Permitted Purpose. - - Licensee may install copies of the Licensed Software on an - unlimited number of computers provided that only Designated Users - may use the Licensed Software. - - Licensee may demonstrate the Demo Units, provided that such - demonstrations must be conducted by Licensee, and the Demo Units - must remain in Licensee's possession and under Licensee's control - at all times. - - For clarity, this Agreement does not (i) entitle Licensee to use - Licensed Software to create Applications or Devices (other than - prototypes thereof) or (ii) carry any distribution rights to - Licensee, but such rights are subject to and conditional upon - conclusion of a separate license agreement with The Qt Company." - - III. Sections 3.2, 3.3, 8 and 10 shall be deleted. - - IV. Section 3.4 shall be replaced in its entirety to read as follows: - - "Licensee shall not: - - remove or alter any copyright, trademark or other proprietary - rights notice contained in any portion of the Licensed - Software; - - - transfer, publish, sublicense, disclose, display or otherwise - make the Licensed Software available to any third party - (except that Licensee may demonstrate the Demo Units pursuant - to Section 3.1); - - - in any way combine, incorporate or integrate Licensed - Software with, or use Licensed Software for creation of, any - software created with or incorporating Open Source Qt; - - Licensee shall cause all Designated Users who make use of the - licenses granted under this Agreement, to be contractually bound to - comply with the relevant terms of this Agreement and not to use the - Licensed Software beyond the terms hereof. Licensee shall be - responsible for any and all actions and omissions of its Designated - Users relating to the Licensed Software and use thereof. - - Any use of Licensed Software beyond the provisions of this - Agreement is strictly prohibited and requires an additional license - from The Qt Company." - - V. Section 12 shall be replaced in its entirety to read as follows: - - "This Agreement shall enter into force upon due acceptance by both - Parties and remain in force for the Term, unless and until - terminated pursuant to the terms of Section 12. - - Upon termination of the Agreement, Licensee shall cease using the - Licensed Software. All other copies of Licensed Software in the - possession or control of Licensee must be erased or destroyed. An - officer of Licensee must, upon request, promptly deliver to The Qt - Company a written confirmation that this has occurred." - -Except for the modifications specified above, this Appendix carries no change -to the terms of the Agreement which shall remain in full force. +"Permitted Purpose" shall mean (i) Licensee's internal evaluation and +testing of Licensed Software, (ii) building Demo Units as well as (iii) +educational use. + +"Term" shall mean a period of twelve (12) months or any such other period +as may be agreed between the Parties. + +For the purpose of this Appendix 5, the following changes shall be agreed +with respect to relevant Sections of the Agreement: + + I. Recital (A) shall be replaced in its entirety to read as follows: + "(A) Licensee wishes to use the Licensed Software for the Permitted + Purpose." + II. Section 3.1 shall be replaced in its entirety to read as follows: + "The Qt Company grants to Licensee a personal, non-exclusive, + non-transferable, revocable, royalty-free license, valid for the + Term, to use, modify and copy the Licensed Software solely for the + Permitted Purpose. + Licensee may install copies of the Licensed Software on five (5) + computers per Designated User, provided that only the Designated + Users who have a valid Development License may use the Licensed + Software. + Licensee may demonstrate the Demo Units, provided that such + demonstrations must be conducted by Licensee, and the Demo Units + must remain in Licensee's possession and under Licensee's control + at all times. + For clarity, this Agreement does not (i) entitle Licensee to use + Licensed Software to create Applications or Devices (other than + prototypes thereof) or (ii) carry any distribution rights to + Licensee, but such rights are subject to and conditional upon + conclusion of a separate license agreement with The Qt Company." + III. Sections 3.2, 3.3, 8 and 10 shall be deleted. + IV. Section 3.4 shall be replaced in its entirety to read as follows: + "Licensee shall not: + - remove or alter any copyright, trademark or other proprietary + rights notice contained in any portion of the Licensed Software; + - transfer, publish, sublicense, disclose, display or otherwise + make the Licensed Software available to any third party (except + that Licensee may demonstrate the Demo Units pursuant to Section + 3.1); + - in any way combine, incorporate or integrate Licensed Software + with, or use Licensed Software for creation of, any software + created with or incorporating Open Source Qt; + + Licensee shall cause all Designated Users who make use of the + licenses granted under this Agreement, to be contractually bound + to comply with the relevant terms of this Agreement and not to use + the Licensed Software beyond the terms hereof. Licensee shall be + responsible for any and all actions and omissions of its + Designated Users relating to the Licensed Software and use + thereof. + + Any use of Licensed Software beyond the provisions of this + Agreement is strictly prohibited and requires an additional license + from The Qt Company." + V. Section 12 shall be replaced in its entirety to read as follows: + "This Agreement shall enter into force upon due acceptance by both + Parties and remain in force for the Term, unless and until + terminated pursuant to the terms of Section 12. + + Upon termination of the Agreement, Licensee shall cease using the + Licensed Software. All other copies of Licensed Software in the + possession or control of Licensee must be erased or destroyed. + An officer of Licensee must, upon request, promptly deliver to + The Qt Company a written confirmation that this has occurred." +Except for the modifications specified above, this Appendix carries no +change to the terms of the Agreement which shall remain in full force. diff -Nru qtbase-opensource-src-5.15.3+dfsg/configure.json qtbase-opensource-src-5.15.8+dfsg/configure.json --- qtbase-opensource-src-5.15.3+dfsg/configure.json 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/configure.json 2022-11-11 15:29:17.000000000 +0800 @@ -244,11 +244,18 @@ "testTypeDependencies": { "linkerSupportsFlag": [ "use_bfd_linker", "use_gold_linker", "use_lld_linker" ], - "verifySpec": [ "shared", "use_bfd_linker", "use_gold_linker", "use_lld_linker", "compiler-flags", "qmakeargs", "commit" ], + "verifySpec": [ + "shared", + "use_bfd_linker", "use_gold_linker", "use_lld_linker", + "compiler-flags", "qmakeargs", + "simulator_and_device", + "thread", + "commit" ], "compile": [ "verifyspec" ], "detectPkgConfig": [ "cross_compile", "machineTuple" ], "library": [ "pkg-config", "compiler-flags" ], - "getPkgConfigVariable": [ "pkg-config" ] + "getPkgConfigVariable": [ "pkg-config" ], + "architecture" : [ "verifyspec" ] }, "testTypeAliases": { @@ -762,7 +769,7 @@ }, "architecture": { "label": "Architecture", - "output": [ "architecture" ] + "output": [ "architecture", "commitConfig" ] }, "pkg-config": { "label": "Using pkg-config", diff -Nru qtbase-opensource-src-5.15.3+dfsg/configure.pri qtbase-opensource-src-5.15.8+dfsg/configure.pri --- qtbase-opensource-src-5.15.3+dfsg/configure.pri 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/configure.pri 2022-11-11 15:29:17.000000000 +0800 @@ -662,6 +662,13 @@ write_file($$QT_BUILD_TREE/mkspecs/qdevice.pri, $${currentConfig}.output.devicePro)|error() } +# Output is written after configuring each Qt module, +# but some tests within a module might depend on the +# configuration output of previous tests. +defineTest(qtConfOutput_commitConfig) { + qtConfProcessOutput() +} + # type (empty or 'host'), option name, default value defineTest(processQtPath) { out_var = config.rel_input.$${2} @@ -985,6 +992,12 @@ subarch = $$qtConfEvaluate('tests.architecture.subarch') buildabi = $$qtConfEvaluate("tests.architecture.buildabi") + macos { + eval($$config.input.qmakeArgs) + apple_archs = $$QMAKE_APPLE_DEVICE_ARCHS + isEmpty(apple_archs): apple_archs = "\$\$QT_ARCH" + } + $$qtConfEvaluate("features.cross_compile") { host_arch = $$qtConfEvaluate("tests.host_architecture.arch") host_buildabi = $$qtConfEvaluate("tests.host_architecture.buildabi") @@ -1006,12 +1019,22 @@ " QT_BUILDABI = $$buildabi" \ "}" + macos { + publicPro += \ + "host_build {" \ + " QT_ARCHS = \$\$QT_ARCH" \ + "} else {" \ + " QT_ARCHS = $$apple_archs" \ + "}" + } } else { privatePro = \ "QT_CPU_FEATURES.$$arch = $$subarch" publicPro = \ "QT_ARCH = $$arch" \ "QT_BUILDABI = $$buildabi" + + macos: publicPro += "QT_ARCHS = $$apple_archs" } $${currentConfig}.output.publicPro += $$publicPro diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/changelog qtbase-opensource-src-5.15.8+dfsg/debian/changelog --- qtbase-opensource-src-5.15.3+dfsg/debian/changelog 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/changelog 2023-04-23 15:28:28.000000000 +0800 @@ -1,3 +1,9 @@ +qtbase-opensource-src (5.15.8+dfsg-ok1.1) yangtze; urgency=medium + + * + + -- kylin <kylin@kylin-hpl> Sun, 23 Apr 2023 15:28:28 +0800 + qtbase-opensource-src (5.15.3+dfsg-ok1.1) yangtze; urgency=medium * Bug: Issue#I66RY2 diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/0029-1-ISSUE-I66RY2.patch qtbase-opensource-src-5.15.8+dfsg/debian/patches/0029-1-ISSUE-I66RY2.patch --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/0029-1-ISSUE-I66RY2.patch 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/0029-1-ISSUE-I66RY2.patch 2023-04-23 15:28:28.000000000 +0800 @@ -8,10 +8,10 @@ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp -index a95331e..bbdf9ce 100644 +index 87643a3..aee9b8d 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp -@@ -3061,7 +3061,8 @@ void QGuiApplicationPrivate::processTouchEvent(QWindowSystemInterfacePrivate::To +@@ -3064,7 +3064,8 @@ void QGuiApplicationPrivate::processTouchEvent(QWindowSystemInterfacePrivate::To QEvent::Type mouseEventType = QEvent::MouseMove; Qt::MouseButton button = Qt::NoButton; Qt::MouseButtons buttons = Qt::LeftButton; diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/CVE-2021-38593.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/CVE-2021-38593.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/CVE-2021-38593.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/CVE-2021-38593.diff 2023-04-23 15:28:28.000000000 +0800 @@ -14,19 +14,15 @@ https://code.qt.io/cgit/qt/qtbase.git/commit/?id=cca8ed0547405b1c Last-Update: 2021-11-27 --- - src/gui/painting/qpaintengineex.cpp | 46 +++++++++++++++++++++++++++++-------- - 1 file changed, 36 insertions(+), 10 deletions(-) + src/gui/painting/qpaintengineex.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp -index 5d8f89e..a7d2e7a 100644 +index 9d8e068..071d45e 100644 --- a/src/gui/painting/qpaintengineex.cpp +++ b/src/gui/painting/qpaintengineex.cpp -@@ -385,10 +385,10 @@ QPainterState *QPaintEngineEx::createState(QPainterState *orig) const - - Q_GUI_EXPORT extern bool qt_scaleForTransform(const QTransform &transform, qreal *scale); // qtransform.cpp - --void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen) -+void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &inPen) +@@ -388,7 +388,7 @@ Q_GUI_EXPORT extern bool qt_scaleForTransform(const QTransform &transform, qreal + void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &inPen) { #ifdef QT_DEBUG_DRAW - qDebug() << "QPaintEngineEx::stroke()" << pen; @@ -34,59 +30,3 @@ #endif Q_D(QPaintEngineEx); -@@ -403,6 +403,38 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen) - d->stroker.setCubicToHook(qpaintengineex_cubicTo); - } - -+ QRectF clipRect; -+ QPen pen = inPen; -+ if (pen.style() > Qt::SolidLine) { -+ QRectF cpRect = path.controlPointRect(); -+ const QTransform &xf = state()->matrix; -+ if (qt_pen_is_cosmetic(pen, state()->renderHints)) { -+ clipRect = d->exDeviceRect; -+ cpRect.translate(xf.dx(), xf.dy()); -+ } else { -+ clipRect = xf.inverted().mapRect(QRectF(d->exDeviceRect)); -+ } -+ // Check to avoid generating unwieldy amount of dashes that will not be visible anyway -+ qreal pw = pen.widthF() ? pen.widthF() : 1; -+ QRectF extentRect = cpRect.adjusted(-pw, -pw, pw, pw) & clipRect; -+ qreal extent = qMax(extentRect.width(), extentRect.height()); -+ qreal patternLength = 0; -+ const QVector<qreal> pattern = pen.dashPattern(); -+ const int patternSize = qMin(pattern.size(), 32); -+ for (int i = 0; i < patternSize; i++) -+ patternLength += qMax(pattern.at(i), qreal(0)); -+ patternLength *= pw; -+ if (qFuzzyIsNull(patternLength)) { -+ pen.setStyle(Qt::NoPen); -+ } else if (extent / patternLength > 10000) { -+ // approximate stream of tiny dashes with semi-transparent solid line -+ pen.setStyle(Qt::SolidLine); -+ QColor color(pen.color()); -+ color.setAlpha(color.alpha() / 2); -+ pen.setColor(color); -+ } -+ } -+ - if (!qpen_fast_equals(pen, d->strokerPen)) { - d->strokerPen = pen; - d->stroker.setJoinStyle(pen.joinStyle()); -@@ -430,14 +462,8 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen) - return; - } - -- if (pen.style() > Qt::SolidLine) { -- if (qt_pen_is_cosmetic(pen, state()->renderHints)){ -- d->activeStroker->setClipRect(d->exDeviceRect); -- } else { -- QRectF clipRect = state()->matrix.inverted().mapRect(QRectF(d->exDeviceRect)); -- d->activeStroker->setClipRect(clipRect); -- } -- } -+ if (!clipRect.isNull()) -+ d->activeStroker->setClipRect(clipRect); - - if (d->activeStroker == &d->stroker) - d->stroker.setForceOpen(path.hasExplicitOpen()); diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/CVE-2022-25255.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/CVE-2022-25255.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/CVE-2022-25255.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/CVE-2022-25255.diff 2023-04-23 15:28:28.000000000 +0800 @@ -18,8 +18,8 @@ Last-Update: 2022-02-21 --- src/corelib/io/qprocess_unix.cpp | 28 ++++++++++++---------- - .../kernel/qapplication/tst_qapplication.cpp | 4 ++-- - 2 files changed, 17 insertions(+), 15 deletions(-) + .../kernel/qapplication/tst_qapplication.cpp | 2 +- + 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp index 50390e5..15c8f30 100644 @@ -80,19 +80,10 @@ if (envp) qt_safe_execve(argv[0], argv, envp); diff --git a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp -index 69a81bd..8e81425 100644 +index a3b8ef7..c2353ff 100644 --- a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp +++ b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp -@@ -1493,7 +1493,7 @@ void tst_QApplication::desktopSettingsAware() - { - #if QT_CONFIG(process) - QProcess testProcess; -- testProcess.start("desktopsettingsaware_helper"); -+ testProcess.start("./desktopsettingsaware_helper"); - QVERIFY2(testProcess.waitForStarted(), - qPrintable(QString::fromLatin1("Cannot start 'desktopsettingsaware_helper': %1").arg(testProcess.errorString()))); - QVERIFY(testProcess.waitForFinished(10000)); -@@ -2447,7 +2447,7 @@ void tst_QApplication::qtbug_12673() +@@ -2452,7 +2452,7 @@ void tst_QApplication::qtbug_12673() #if QT_CONFIG(process) QProcess testProcess; QStringList arguments; diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/fix-invalid-pointer-return-with-QGridLayout.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/fix-invalid-pointer-return-with-QGridLayout.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/fix-invalid-pointer-return-with-QGridLayout.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/fix-invalid-pointer-return-with-QGridLayout.diff 1970-01-01 08:00:00.000000000 +0800 @@ -1,115 +0,0 @@ -From: Zhang Yu <zhangyub@uniontech.com> -Date: Mon, 22 Feb 2021 09:25:01 +0800 -Subject: [PATCH] Fix invalid pointer return with QGridLayout::itemAt(-1) - -QGridLayout::takeAt() and QLayoutItem *itemAt() only check the upper bound. -If the index < 0, these function will return invalid pointer. - -Fixes: QTBUG-91261 -Pick-to: 5.15 6.0 6.1 -Change-Id: Idfb9fb6228b9707f817353b04974da16205a835c -Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> ---- - src/widgets/kernel/qgridlayout.cpp | 6 +-- - .../widgets/kernel/qgridlayout/tst_qgridlayout.cpp | 51 ++++++++++++++++++++++ - 2 files changed, 54 insertions(+), 3 deletions(-) - -diff --git a/src/widgets/kernel/qgridlayout.cpp b/src/widgets/kernel/qgridlayout.cpp -index b4e8541..e2777b6 100644 ---- a/src/widgets/kernel/qgridlayout.cpp -+++ b/src/widgets/kernel/qgridlayout.cpp -@@ -149,14 +149,14 @@ public: - QRect cellRect(int row, int col) const; - - inline QLayoutItem *itemAt(int index) const { -- if (index < things.count()) -+ if (index >= 0 && index < things.count()) - return things.at(index)->item(); - else - return nullptr; - } - inline QLayoutItem *takeAt(int index) { - Q_Q(QGridLayout); -- if (index < things.count()) { -+ if (index >= 0 && index < things.count()) { - if (QGridBox *b = things.takeAt(index)) { - QLayoutItem *item = b->takeItem(); - if (QLayout *l = item->layout()) { -@@ -184,7 +184,7 @@ public: - } - - void getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const { -- if (index < things.count()) { -+ if (index >= 0 && index < things.count()) { - const QGridBox *b = things.at(index); - int toRow = b->toRow(rr); - int toCol = b->toCol(cc); -diff --git a/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp b/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp -index 1d63d14..d57da3c 100644 ---- a/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp -+++ b/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp -@@ -75,6 +75,7 @@ private slots: - void taskQTBUG_40609_addingWidgetToItsOwnLayout(); - void taskQTBUG_40609_addingLayoutToItself(); - void taskQTBUG_52357_spacingWhenItemIsHidden(); -+ void taskQTBUG_91261_itemIndexRange(); - void replaceWidget(); - void dontCrashWhenExtendsToEnd(); - }; -@@ -1666,6 +1667,56 @@ void tst_QGridLayout::taskQTBUG_52357_spacingWhenItemIsHidden() - QTRY_COMPARE_WITH_TIMEOUT(tempWidth, button1.width() + button3.width() + layout.spacing(), 1000); - } - -+void tst_QGridLayout::taskQTBUG_91261_itemIndexRange() -+{ -+ QWidget widget; -+ QGridLayout lay(&widget); -+ QPushButton *btn = new QPushButton(&widget); -+ lay.addWidget(btn, 0, 0); -+ -+ { -+ auto ptr = lay.itemAt(-1); -+ QCOMPARE(ptr, nullptr); -+ -+ ptr = lay.itemAt(0); -+ QCOMPARE(ptr->widget(), btn); -+ -+ ptr = lay.itemAt(1); -+ QCOMPARE(ptr, nullptr); -+ } -+ -+ { -+ int row = -1; -+ int column = -1; -+ int rowSpan; -+ int columnSpan; -+ -+ lay.getItemPosition(-1, &row, &column, &rowSpan, &columnSpan); -+ QCOMPARE(row, -1); -+ QCOMPARE(column, -1); -+ -+ lay.getItemPosition(1, &row, &column, &rowSpan, &columnSpan); -+ QCOMPARE(row, -1); -+ QCOMPARE(column, -1); -+ -+ lay.getItemPosition(0, &row, &column, &rowSpan, &columnSpan); -+ QCOMPARE(row, 0); -+ QCOMPARE(column, 0); -+ } -+ -+ { -+ auto ptr = lay.takeAt(-1); -+ QCOMPARE(ptr, nullptr); -+ -+ ptr = lay.takeAt(1); -+ QCOMPARE(ptr, nullptr); -+ -+ ptr = lay.takeAt(0); -+ QCOMPARE(ptr->widget(), btn); -+ delete ptr; -+ } -+} -+ - void tst_QGridLayout::replaceWidget() - { - QWidget wdg; diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/fix-misplacement-of-placeholder-text-in-QLineEdit.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/fix-misplacement-of-placeholder-text-in-QLineEdit.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/fix-misplacement-of-placeholder-text-in-QLineEdit.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/fix-misplacement-of-placeholder-text-in-QLineEdit.diff 1970-01-01 08:00:00.000000000 +0800 @@ -1,64 +0,0 @@ -From: Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org> -Date: Sat, 14 May 2022 17:41:00 +0800 -Subject: fix misplacement of placeholder text in QLineEdit with RTL content - -The placeholder text was rendered in the wrong position after clicking -on the clear button in a QLineEdit with right-to-left content. The -button was still taking up space while it was fading out, so the first -paintEvent rendered the placeholder with space reserved for the clear -button. Once the button gets hidden, no new update was issued, so -garbage was left behind. - -Fix this by not giving a fading-out clear button any margin space. The -result of this is that the placeholder text is visible underneath the -fading-out clear button. This is preferable to the placeholder text -being first rendered next to the fading-out clear button, and then -popping to the edge when the clear button is hidden (which would have -been the result of issuing a complete update for the line edit at the -end of the fade-out animation). -Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=dc794f7622bc00f7 -Last-Update: 2021-06-16 ---- - src/widgets/widgets/qlineedit_p.cpp | 14 +++++++++++--- - src/widgets/widgets/qlineedit_p.h | 2 ++ - 2 files changed, 13 insertions(+), 3 deletions(-) - -diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp -index b854d9d..3eb3abc 100644 ---- a/src/widgets/widgets/qlineedit_p.cpp -+++ b/src/widgets/widgets/qlineedit_p.cpp -@@ -664,10 +664,18 @@ static int effectiveTextMargin(int defaultMargin, const QLineEditPrivate::SideWi - if (widgets.empty()) - return defaultMargin; - -- return defaultMargin + (parameters.margin + parameters.widgetWidth) * -- int(std::count_if(widgets.begin(), widgets.end(), -+ const auto visibleSideWidgetCount = std::count_if(widgets.begin(), widgets.end(), - [](const QLineEditPrivate::SideWidgetEntry &e) { -- return e.widget->isVisibleTo(e.widget->parentWidget()); })); -+#if QT_CONFIG(animation) -+ // a button that's fading out doesn't get any space -+ if (auto* iconButton = qobject_cast<QLineEditIconButton*>(e.widget)) -+ return iconButton->needsSpace(); -+ -+#endif -+ return e.widget->isVisibleTo(e.widget->parentWidget()); -+ }); -+ -+ return defaultMargin + (parameters.margin + parameters.widgetWidth) * visibleSideWidgetCount; - } - - QMargins QLineEditPrivate::effectiveTextMargins() const -diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h -index 5ae402b..bbe3e8e 100644 ---- a/src/widgets/widgets/qlineedit_p.h -+++ b/src/widgets/widgets/qlineedit_p.h -@@ -95,6 +95,8 @@ public: - - bool shouldHideWithText() const; - void setHideWithText(bool hide); -+ // m_wasHidden is true unless the button is fading out -+ bool needsSpace() const { return m_wasHidden; } - #endif - - protected: diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/fix-placement-of-placeholder-text-in-QLineEdits-with-action-icons.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/fix-placement-of-placeholder-text-in-QLineEdits-with-action-icons.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/fix-placement-of-placeholder-text-in-QLineEdits-with-action-icons.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/fix-placement-of-placeholder-text-in-QLineEdits-with-action-icons.diff 1970-01-01 08:00:00.000000000 +0800 @@ -1,158 +0,0 @@ -From: Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org> -Date: Sat, 14 May 2022 17:41:00 +0800 -Subject: fix placement of placeholder text in QLineEdits with action icons - -After dc794f7622bc00f7ca50fab65d6965695d6d2972, side widgets only got -space if they were not fading out, but the logic was not correctly -accounting for side widgets that never fade, such as buttons added via -QLineEdit::addAction. - -Fix this to give visible widgets space, unless they are fading out. That -was the intent of the original change. Rename the variable to make its -purpose clearer, and reset it at the end of the fade-out animation. - -Add a much-needed test that relies on private APIs to verify that the -effective margins are calculated correctly. -Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=0e6b31019f01c72e -Last-Update: 2021-08-10 ---- - src/widgets/widgets/qlineedit_p.cpp | 5 +- - src/widgets/widgets/qlineedit_p.h | 9 ++- - .../widgets/widgets/qlineedit/tst_qlineedit.cpp | 66 ++++++++++++++++++++++ - 3 files changed, 75 insertions(+), 5 deletions(-) - -diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp -index 3eb3abc..bad36fd 100644 ---- a/src/widgets/widgets/qlineedit_p.cpp -+++ b/src/widgets/widgets/qlineedit_p.cpp -@@ -407,8 +407,9 @@ void QLineEditIconButton::setHideWithText(bool hide) - - void QLineEditIconButton::onAnimationFinished() - { -- if (shouldHideWithText() && isVisible() && !m_wasHidden) { -+ if (shouldHideWithText() && isVisible() && m_fadingOut) { - hide(); -+ m_fadingOut = false; - - // Invalidate previous geometry to take into account new size of side widgets - if (auto le = lineEditPrivate()) -@@ -418,7 +419,7 @@ void QLineEditIconButton::onAnimationFinished() - - void QLineEditIconButton::animateShow(bool visible) - { -- m_wasHidden = visible; -+ m_fadingOut = !visible; - - if (shouldHideWithText() && !isVisible()) { - show(); -diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h -index bbe3e8e..f55210f 100644 ---- a/src/widgets/widgets/qlineedit_p.h -+++ b/src/widgets/widgets/qlineedit_p.h -@@ -95,8 +95,11 @@ public: - - bool shouldHideWithText() const; - void setHideWithText(bool hide); -- // m_wasHidden is true unless the button is fading out -- bool needsSpace() const { return m_wasHidden; } -+ bool needsSpace() const { -+ if (m_fadingOut) -+ return false; -+ return isVisibleTo(parentWidget()); -+ } - #endif - - protected: -@@ -120,7 +123,7 @@ private: - - #if QT_CONFIG(animation) - bool m_hideWithText = false; -- bool m_wasHidden = false; -+ bool m_fadingOut = false; - #endif - - }; -diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp -index 6408df3..7c2203d 100644 ---- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp -+++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp -@@ -292,6 +292,7 @@ private slots: - void clearButtonVisibleAfterSettingText_QTBUG_45518(); - void sideWidgets(); - void sideWidgetsActionEvents(); -+ void sideWidgetsEffectiveMargins(); - - void shouldShowPlaceholderText_data(); - void shouldShowPlaceholderText(); -@@ -4646,6 +4647,71 @@ void tst_QLineEdit::sideWidgetsActionEvents() - QCOMPARE(toolButton2->x(), toolButton1X); - } - -+/*! -+ Verify that side widgets are positioned correctly and result in -+ correct effective text margins. -+*/ -+void tst_QLineEdit::sideWidgetsEffectiveMargins() -+{ -+#ifndef QT_BUILD_INTERNAL -+ QSKIP("This test requires a developer build."); -+#else -+ QLineEdit edit; -+ edit.setPlaceholderText("placeholder"); -+ edit.setClearButtonEnabled(true); -+ edit.show(); -+ QLineEditPrivate *priv = QLineEditPrivate::get(&edit); -+ const auto sideWidgetParameters = priv->sideWidgetParameters(); -+ const int sideWidgetWidth = sideWidgetParameters.widgetWidth + sideWidgetParameters.margin; -+ QVERIFY(QTest::qWaitForWindowExposed(&edit)); -+ -+ QCOMPARE(priv->effectiveTextMargins().left(), 0); -+ QCOMPARE(priv->effectiveTextMargins().right(), 0); -+ -+ edit.setText("Left to right"); // clear button fades in on the right -+ QCOMPARE(priv->effectiveTextMargins().left(), 0); -+ QCOMPARE(priv->effectiveTextMargins().right(), sideWidgetWidth); -+ edit.clear(); -+ QCOMPARE(priv->effectiveTextMargins().left(), 0); -+ QCOMPARE(priv->effectiveTextMargins().right(), 0); -+ -+ edit.setLayoutDirection(Qt::RightToLeft); -+ edit.setText("ئۇيغۇر تىلى"); // clear button fades in on the left -+ QCOMPARE(priv->effectiveTextMargins().left(), sideWidgetWidth); -+ QCOMPARE(priv->effectiveTextMargins().right(), 0); -+ edit.clear(); -+ QCOMPARE(priv->effectiveTextMargins().left(), 0); -+ QCOMPARE(priv->effectiveTextMargins().right(), 0); -+ -+ edit.setLayoutDirection(Qt::LeftToRight); -+ -+ const QIcon leftIcon = edit.style()->standardIcon(QStyle::SP_FileIcon); -+ const QIcon rightIcon = edit.style()->standardIcon(QStyle::SP_DirIcon); -+ edit.addAction(leftIcon, QLineEdit::ActionPosition::LeadingPosition); -+ QCOMPARE(priv->effectiveTextMargins().left(), sideWidgetWidth); -+ QCOMPARE(priv->effectiveTextMargins().right(), 0); -+ -+ edit.addAction(rightIcon, QLineEdit::ActionPosition::TrailingPosition); -+ QCOMPARE(priv->effectiveTextMargins().left(), sideWidgetWidth); -+ QCOMPARE(priv->effectiveTextMargins().right(), sideWidgetWidth); -+ -+ edit.setText("Left to right"); // clear button on the right -+ QCOMPARE(priv->effectiveTextMargins().left(), sideWidgetWidth); -+ QCOMPARE(priv->effectiveTextMargins().right(), 2 * sideWidgetWidth); -+ edit.clear(); -+ QCOMPARE(priv->effectiveTextMargins().left(), sideWidgetWidth); -+ QCOMPARE(priv->effectiveTextMargins().right(), sideWidgetWidth); -+ -+ edit.setLayoutDirection(Qt::RightToLeft); -+ edit.setText("ئۇيغۇر تىلى"); // clear button fades in on the left -+ QCOMPARE(priv->effectiveTextMargins().left(), 2 * sideWidgetWidth); -+ QCOMPARE(priv->effectiveTextMargins().right(), sideWidgetWidth); -+ edit.clear(); -+ QCOMPARE(priv->effectiveTextMargins().left(), sideWidgetWidth); -+ QCOMPARE(priv->effectiveTextMargins().right(), sideWidgetWidth); -+#endif -+} -+ - Q_DECLARE_METATYPE(Qt::AlignmentFlag) - void tst_QLineEdit::shouldShowPlaceholderText_data() - { diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/fix_recursion_crash.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/fix_recursion_crash.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/fix_recursion_crash.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/fix_recursion_crash.diff 2023-04-23 15:28:28.000000000 +0800 @@ -17,10 +17,10 @@ 2 files changed, 21 insertions(+) diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp -index 53fff29..f9ab558 100644 +index 9fcb8ba..da88f0b 100644 --- a/src/widgets/styles/qstylesheetstyle.cpp +++ b/src/widgets/styles/qstylesheetstyle.cpp -@@ -2640,6 +2640,9 @@ void QStyleSheetStyle::setProperties(QWidget *w) +@@ -2649,6 +2649,9 @@ void QStyleSheetStyle::setProperties(QWidget *w) default: v = decl.d->values.at(0).variant; break; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/full_width_selection_rtl.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/full_width_selection_rtl.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/full_width_selection_rtl.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/full_width_selection_rtl.diff 1970-01-01 08:00:00.000000000 +0800 @@ -1,41 +0,0 @@ -From: Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org> -Date: Sat, 14 May 2022 17:41:00 +0800 -Subject: fix QTextFormat::FullWidthSelection for right-to-left text layouts - -Using the QTextFormat::FullWidthSelection property to select a line -would previously not take into account right-to-left text layouts. - -With this patch, the whole line should now be drawn correctly for both -left-to-right, and right-to-left layouts. -Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=a7894855f2f59028 -Last-Update: 2021-08-15 ---- - src/gui/text/qtextlayout.cpp | 15 +++++++++++---- - 1 file changed, 11 insertions(+), 4 deletions(-) - -diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp -index 5ae41d9..a82d061 100644 ---- a/src/gui/text/qtextlayout.cpp -+++ b/src/gui/text/qtextlayout.cpp -@@ -1173,10 +1173,17 @@ void QTextLayout::draw(QPainter *p, const QPointF &pos, const QVector<FormatRang - QRectF fullLineRect(tl.rect()); - fullLineRect.translate(position); - fullLineRect.setRight(QFIXED_MAX); -- if (!selectionEndInLine) -- region.addRect(clipIfValid(QRectF(lineRect.topRight(), fullLineRect.bottomRight()), clip)); -- if (!selectionStartInLine) -- region.addRect(clipIfValid(QRectF(fullLineRect.topLeft(), lineRect.bottomLeft()), clip)); -+ -+ const bool rightToLeft = d->isRightToLeft(); -+ -+ if (!selectionEndInLine) { -+ region.addRect(clipIfValid(rightToLeft ? QRectF(fullLineRect.topLeft(), lineRect.bottomLeft()) -+ : QRectF(lineRect.topRight(), fullLineRect.bottomRight()), clip)); -+ } -+ if (!selectionStartInLine) { -+ region.addRect(clipIfValid(rightToLeft ? QRectF(lineRect.topRight(), fullLineRect.bottomRight()) -+ : QRectF(fullLineRect.topLeft(), lineRect.bottomLeft()), clip)); -+ } - } else if (!selectionEndInLine - && isLastLineInBlock - &&!(d->option.flags() & QTextOption::ShowLineAndParagraphSeparators)) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/gcc-11-qtconcurrentthreadengine.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/gcc-11-qtconcurrentthreadengine.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/gcc-11-qtconcurrentthreadengine.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/gcc-11-qtconcurrentthreadengine.diff 1970-01-01 08:00:00.000000000 +0800 @@ -1,27 +0,0 @@ -From: Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org> -Date: Sat, 14 May 2022 17:41:01 +0800 -Subject: Fix builds of qtconcurrentthreadengine.h with GCC 11 - -Without this patch, all the code that #includes QtConcurrent headers -will fail to compile with GCC 11. -Origin: upstream, https://codereview.qt-project.org/c/qt/qtbase/+/339417 -Last-Update: 2022-04-01 ---- - src/concurrent/qtconcurrentthreadengine.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/concurrent/qtconcurrentthreadengine.h b/src/concurrent/qtconcurrentthreadengine.h -index af41370..a4c8548 100644 ---- a/src/concurrent/qtconcurrentthreadengine.h -+++ b/src/concurrent/qtconcurrentthreadengine.h -@@ -247,8 +247,8 @@ template <> - class ThreadEngineStarter<void> : public ThreadEngineStarterBase<void> - { - public: -- ThreadEngineStarter<void>(ThreadEngine<void> *_threadEngine) -- :ThreadEngineStarterBase<void>(_threadEngine) {} -+ ThreadEngineStarter(ThreadEngine<void> *_threadEngine) -+ : ThreadEngineStarterBase<void>(_threadEngine) {} - - void startBlocking() - { diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/gcc_11_limits.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/gcc_11_limits.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/gcc_11_limits.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/gcc_11_limits.diff 1970-01-01 08:00:00.000000000 +0800 @@ -1,23 +0,0 @@ -From: Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org> -Date: Sat, 14 May 2022 17:41:00 +0800 -Subject: include <limits> to fix GCC 11 build - -Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=813a928c7c3cf986 -Last-Update: 2022-03-03 ---- - src/corelib/text/qbytearraymatcher.h | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/corelib/text/qbytearraymatcher.h b/src/corelib/text/qbytearraymatcher.h -index 0eedfc1..f5f9bef 100644 ---- a/src/corelib/text/qbytearraymatcher.h -+++ b/src/corelib/text/qbytearraymatcher.h -@@ -42,6 +42,8 @@ - - #include <QtCore/qbytearray.h> - -+#include <limits> -+ - QT_BEGIN_NAMESPACE - - diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/gnukfreebsd_linker_warnings.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/gnukfreebsd_linker_warnings.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/gnukfreebsd_linker_warnings.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/gnukfreebsd_linker_warnings.diff 2023-04-23 15:28:28.000000000 +0800 @@ -14,7 +14,7 @@ 1 file changed, 3 insertions(+) diff --git a/src/corelib/configure.json b/src/corelib/configure.json -index 9b5d19d..3cf77dc 100644 +index a9025a2..06f4311 100644 --- a/src/corelib/configure.json +++ b/src/corelib/configure.json @@ -331,6 +331,7 @@ diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/mime_globs.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/mime_globs.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/mime_globs.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/mime_globs.diff 2023-04-23 15:28:28.000000000 +0800 @@ -45,7 +45,7 @@ } diff --git a/src/corelib/mimetypes/qmimeglobpattern.cpp b/src/corelib/mimetypes/qmimeglobpattern.cpp -index 1016884..943eb84 100644 +index a81112d..3ab5bd4 100644 --- a/src/corelib/mimetypes/qmimeglobpattern.cpp +++ b/src/corelib/mimetypes/qmimeglobpattern.cpp @@ -83,7 +83,10 @@ void QMimeGlobMatchResult::addMatch(const QString &mimeType, int weight, const Q diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/moc_handle_include.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/moc_handle_include.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/moc_handle_include.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/moc_handle_include.diff 1970-01-01 08:00:00.000000000 +0800 @@ -1,48 +0,0 @@ -From: Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org> -Date: Sat, 14 May 2022 17:41:01 +0800 -Subject: handle even more include in enum cases - -The solution in d3ed7dac8aa2f4ede0c409254b9dd44842086be0 was needlessly -complicated, and broke a valid use case. -The issue of no identifier being available to parse after the include -has been processed can instead be solved by moving the test for the -closing brace after the include processing. -Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=87973325f1b99f2b -Last-Update: 2022-04-07 ---- - src/tools/moc/moc.cpp | 3 +-- - tests/auto/tools/moc/enum_with_include.h | 5 +++++ - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp -index 7389919..28c7a43 100644 ---- a/src/tools/moc/moc.cpp -+++ b/src/tools/moc/moc.cpp -@@ -305,10 +305,9 @@ bool Moc::parseEnum(EnumDef *def) - return IncludeState::NoInclude; - }; - do { -+ handleInclude(); - if (lookup() == RBRACE) // accept trailing comma - break; -- if ( handleInclude() == IncludeState::IncludeEnd) -- continue; - next(IDENTIFIER); - def->values += lexem(); - handleInclude(); -diff --git a/tests/auto/tools/moc/enum_with_include.h b/tests/auto/tools/moc/enum_with_include.h -index b8abf77..cd53ba6 100644 ---- a/tests/auto/tools/moc/enum_with_include.h -+++ b/tests/auto/tools/moc/enum_with_include.h -@@ -34,6 +34,11 @@ class Foo : public QObject { - enum en { - #include <enum_inc.h> - }; -+ -+ enum class en2 { -+ #include <enum_inc.h> -+ reference = 42 -+ }; - Q_OBJECT - }; - #endif diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/mysql_remove_version_checks.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/mysql_remove_version_checks.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/mysql_remove_version_checks.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/mysql_remove_version_checks.diff 1970-01-01 08:00:00.000000000 +0800 @@ -1,52 +0,0 @@ -From: Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org> -Date: Sat, 14 May 2022 17:41:00 +0800 -Subject: remove the version number checks in favor of actual functionality - -MariaDB library version 3.2 no longer returns the server version in the -10.x range but the library version itself, which is lower than 4.x. That -meant we concluded the server did not support prepared statements. - -And because of the lack of prepared statements, all QDateTime -conversions failed, because of the timezone. I don't know if this was -intended or what, but it's a side issue. -Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=211369133cf40b2f -Last-Update: 2021-08-10 ---- - src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 17 +++++++++++++++-- - 1 file changed, 15 insertions(+), 2 deletions(-) - -diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -index a641935..7ca055e 100644 ---- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -+++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -@@ -158,6 +158,20 @@ static inline QVariant qDateTimeFromString(QString &val) - #endif - } - -+// check if this client and server version of MySQL/MariaDB support prepared statements -+static inline bool checkPreparedQueries(MYSQL *mysql) -+{ -+ std::unique_ptr<MYSQL_STMT, decltype(&mysql_stmt_close)> stmt(mysql_stmt_init(mysql), &mysql_stmt_close); -+ if (!stmt) -+ return false; -+ -+ static const char dummyQuery[] = "SELECT ? + ?"; -+ if (mysql_stmt_prepare(stmt.get(), dummyQuery, sizeof(dummyQuery) - 1)) -+ return false; -+ -+ return mysql_stmt_param_count(stmt.get()) == 2; -+} -+ - class QMYSQLResultPrivate; - - class QMYSQLResult : public QSqlResult -@@ -1371,8 +1385,7 @@ bool QMYSQLDriver::open(const QString& db, - } - #endif // MYSQL_VERSION_ID >= 50007 - -- d->preparedQuerysEnabled = mysql_get_client_version() >= 40108 -- && mysql_get_server_version(d->mysql) >= 40100; -+ d->preparedQuerysEnabled = checkPreparedQueries(d->mysql); - - #if QT_CONFIG(thread) - mysql_thread_init(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/nonlinux_utime.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/nonlinux_utime.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/nonlinux_utime.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/nonlinux_utime.diff 2023-04-23 15:28:28.000000000 +0800 @@ -23,7 +23,7 @@ const bool utimeError = utimensat(AT_FDCWD, targetFileName.toLocal8Bit().constData(), times, 0) < 0; # else diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp -index 231e5cb..3cbf032 100644 +index f32bb52..58e06ee 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -1595,7 +1595,7 @@ bool QFileSystemEngine::setFileTime(int fd, const QDateTime &newDate, QAbstractF diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/openssl3.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/openssl3.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/openssl3.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/openssl3.diff 2023-04-23 15:28:28.000000000 +0800 @@ -101,7 +101,7 @@ { int status = 0; diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp -index 94aa5a5..f89f520 100644 +index e53fb27..68a766c 100644 --- a/src/network/ssl/qsslsocket_openssl_symbols.cpp +++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp @@ -148,7 +148,6 @@ DEFINEFUNC(int, EVP_PKEY_up_ref, EVP_PKEY *a, a, return 0, return) @@ -112,7 +112,7 @@ DEFINEFUNC(int, RSA_bits, RSA *a, a, return 0, return) DEFINEFUNC(int, DSA_bits, DSA *a, a, return 0, return) DEFINEFUNC(int, OPENSSL_sk_num, OPENSSL_STACK *a, a, return -1, return) -@@ -368,7 +367,15 @@ DEFINEFUNC(const SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return nullptr +@@ -371,7 +370,15 @@ DEFINEFUNC(const SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return nullptr DEFINEFUNC(int, SSL_version, const SSL *a, a, return 0, return) DEFINEFUNC2(int, SSL_get_error, SSL *a, a, int b, b, return -1, return) DEFINEFUNC(STACK_OF(X509) *, SSL_get_peer_cert_chain, SSL *a, a, return nullptr, return) @@ -128,7 +128,7 @@ DEFINEFUNC(long, SSL_get_verify_result, const SSL *a, a, return -1, return) DEFINEFUNC(SSL *, SSL_new, SSL_CTX *a, a, return nullptr, return) DEFINEFUNC(SSL_CTX *, SSL_get_SSL_CTX, SSL *a, a, return nullptr, return) -@@ -489,9 +496,7 @@ DEFINEFUNC(DH *, DH_new, DUMMYARG, DUMMYARG, return nullptr, return) +@@ -492,9 +499,7 @@ DEFINEFUNC(DH *, DH_new, DUMMYARG, DUMMYARG, return nullptr, return) DEFINEFUNC(void, DH_free, DH *dh, dh, return, DUMMYARG) DEFINEFUNC3(DH *, d2i_DHparams, DH**a, a, const unsigned char **pp, pp, long length, length, return nullptr, return) DEFINEFUNC2(int, i2d_DHparams, DH *a, a, unsigned char **p, p, return -1, return) @@ -138,7 +138,7 @@ DEFINEFUNC3(BIGNUM *, BN_bin2bn, const unsigned char *s, s, int len, len, BIGNUM *ret, ret, return nullptr, return) #ifndef OPENSSL_NO_EC -@@ -852,7 +857,6 @@ bool q_resolveOpenSslSymbols() +@@ -868,7 +873,6 @@ bool q_resolveOpenSslSymbols() RESOLVEFUNC(EVP_PKEY_CTX_new) RESOLVEFUNC(EVP_PKEY_param_check) RESOLVEFUNC(EVP_PKEY_CTX_free) @@ -146,7 +146,7 @@ RESOLVEFUNC(RSA_bits) RESOLVEFUNC(OPENSSL_sk_new_null) RESOLVEFUNC(OPENSSL_sk_push) -@@ -1077,7 +1081,15 @@ bool q_resolveOpenSslSymbols() +@@ -1107,7 +1111,15 @@ bool q_resolveOpenSslSymbols() RESOLVEFUNC(SSL_version) RESOLVEFUNC(SSL_get_error) RESOLVEFUNC(SSL_get_peer_cert_chain) @@ -162,7 +162,7 @@ RESOLVEFUNC(SSL_get_verify_result) RESOLVEFUNC(SSL_new) RESOLVEFUNC(SSL_get_SSL_CTX) -@@ -1176,9 +1188,7 @@ bool q_resolveOpenSslSymbols() +@@ -1206,9 +1218,7 @@ bool q_resolveOpenSslSymbols() RESOLVEFUNC(DH_free) RESOLVEFUNC(d2i_DHparams) RESOLVEFUNC(i2d_DHparams) @@ -173,10 +173,10 @@ #ifndef OPENSSL_NO_EC diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h -index c46afcf..b36d0bc 100644 +index 95e8897..7196177 100644 --- a/src/network/ssl/qsslsocket_openssl_symbols_p.h +++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h -@@ -236,7 +236,6 @@ Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a); +@@ -237,7 +237,6 @@ Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a); EVP_PKEY_CTX *q_EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); void q_EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); int q_EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); @@ -184,7 +184,7 @@ int q_RSA_bits(RSA *a); Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a); Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *)); -@@ -509,7 +508,6 @@ const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a); +@@ -510,7 +509,6 @@ const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a); int q_SSL_version(const SSL *a); int q_SSL_get_error(SSL *a, int b); STACK_OF(X509) *q_SSL_get_peer_cert_chain(SSL *a); @@ -192,7 +192,7 @@ long q_SSL_get_verify_result(const SSL *a); SSL *q_SSL_new(SSL_CTX *a); SSL_CTX *q_SSL_get_SSL_CTX(SSL *a); -@@ -581,10 +579,7 @@ DH *q_DH_new(); +@@ -582,10 +580,7 @@ DH *q_DH_new(); void q_DH_free(DH *dh); DH *q_d2i_DHparams(DH **a, const unsigned char **pp, long length); int q_i2d_DHparams(DH *a, unsigned char **p); @@ -203,7 +203,7 @@ BIGNUM *q_BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); #define q_SSL_CTX_set_tmp_dh(ctx, dh) q_SSL_CTX_ctrl((ctx), SSL_CTRL_SET_TMP_DH, 0, (char *)dh) -@@ -751,6 +746,17 @@ void *q_CRYPTO_malloc(size_t num, const char *file, int line); +@@ -754,6 +749,17 @@ void q_CRYPTO_free(void *str, const char *file, int line); int q_SSL_CTX_get_security_level(const SSL_CTX *ctx); void q_SSL_CTX_set_security_level(SSL_CTX *ctx, int level); diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/path_max.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/path_max.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/path_max.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/path_max.diff 2023-04-23 15:28:28.000000000 +0800 @@ -11,7 +11,7 @@ 1 file changed, 4 insertions(+) diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp -index 3cbf032..2432171 100644 +index 58e06ee..b0e123a 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -689,7 +689,11 @@ QFileSystemEntry QFileSystemEngine::canonicalName(const QFileSystemEntry &entry, diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/qdoc_default_incdirs.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/qdoc_default_incdirs.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/qdoc_default_incdirs.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/qdoc_default_incdirs.diff 2023-04-23 15:28:28.000000000 +0800 @@ -10,7 +10,7 @@ 1 file changed, 4 insertions(+) diff --git a/mkspecs/features/qt_docs.prf b/mkspecs/features/qt_docs.prf -index 095bf15..5178a7d 100644 +index e19d06f..05cdb11 100644 --- a/mkspecs/features/qt_docs.prf +++ b/mkspecs/features/qt_docs.prf @@ -98,6 +98,10 @@ doc_command = $$QDOC $$QMAKE_DOCS diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/series qtbase-opensource-src-5.15.8+dfsg/debian/patches/series --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/series 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/series 2023-04-23 15:28:28.000000000 +0800 @@ -1,19 +1,10 @@ -gcc_11_limits.diff mime_globs.diff -fix-invalid-pointer-return-with-QGridLayout.diff -fix-misplacement-of-placeholder-text-in-QLineEdit.diff -fix-placement-of-placeholder-text-in-QLineEdits-with-action-icons.diff fusion_checkable_qpushbutton.diff -mysql_remove_version_checks.diff -full_width_selection_rtl.diff -xcb_add_a_timeout_control_when_reading_INCR_property.diff fix_recursion_crash.diff mysql_field_readonly.diff CVE-2021-38593.diff openssl3.diff CVE-2022-25255.diff -gcc-11-qtconcurrentthreadengine.diff -moc_handle_include.diff gnukfreebsd.diff no_htmlinfo_example.diff remove_privacy_breaches.diff diff -Nru qtbase-opensource-src-5.15.3+dfsg/debian/patches/xcb_add_a_timeout_control_when_reading_INCR_property.diff qtbase-opensource-src-5.15.8+dfsg/debian/patches/xcb_add_a_timeout_control_when_reading_INCR_property.diff --- qtbase-opensource-src-5.15.3+dfsg/debian/patches/xcb_add_a_timeout_control_when_reading_INCR_property.diff 2023-01-04 16:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/debian/patches/xcb_add_a_timeout_control_when_reading_INCR_property.diff 1970-01-01 08:00:00.000000000 +0800 @@ -1,54 +0,0 @@ -From: Liang Qi <liang.qi@qt.io> -Date: Wed, 7 Jul 2021 13:19:14 +0200 -Subject: [PATCH] xcb: add a timeout control when reading INCR property -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 8bit - -For the first call of QXcbClipboard::clipboardReadProperty() -inside of clipboardReadIncrementalProperty() in getSelection(), -it will get a XCB_NONE reply before the contents arrived via -property change. Then we give a chance to read more. - -Manually tested with following setups: -* examples/widgets/mainwindows/application with gvim(gtk3) -* examples/widgets/widgets/imageviewer with GIMP 2.10.18(based on -gtk2) and GIMP 2.99.6(based on gtk3 via flatpak) - -Fixes: QTBUG-56595 -Pick-to: 5.12 5.15 6.1 6.2 -Done-With: JiDe Zhang <zhangjide@uniontech.com> -Change-Id: Ib45f08464d39ad79137b1da99808c89b7dca2d08 -Reviewed-by: JiDe Zhang <zhangjide@uniontech.com> -Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> ---- - src/plugins/platforms/xcb/qxcbclipboard.cpp | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/plugins/platforms/xcb/qxcbclipboard.cpp b/src/plugins/platforms/xcb/qxcbclipboard.cpp -index 0a4d675..dabdfcb 100644 ---- a/src/plugins/platforms/xcb/qxcbclipboard.cpp -+++ b/src/plugins/platforms/xcb/qxcbclipboard.cpp -@@ -835,6 +835,8 @@ QByteArray QXcbClipboard::clipboardReadIncrementalProperty(xcb_window_t win, xcb - alloc_error = buf.size() != nbytes+1; - } - -+ QElapsedTimer timer; -+ timer.start(); - for (;;) { - connection()->flush(); - xcb_generic_event_t *ge = waitForClipboardEvent(win, XCB_PROPERTY_NOTIFY); -@@ -870,9 +872,11 @@ QByteArray QXcbClipboard::clipboardReadIncrementalProperty(xcb_window_t win, xcb - tmp_buf.resize(0); - offset += length; - } -- } else { -- break; - } -+ -+ const auto elapsed = timer.elapsed(); -+ if (elapsed > clipboard_timeout) -+ break; - } - - // timed out ... create a new requestor window, otherwise the requestor diff -Nru qtbase-opensource-src-5.15.3+dfsg/doc/global/externalsites/external-resources.qdoc qtbase-opensource-src-5.15.8+dfsg/doc/global/externalsites/external-resources.qdoc --- qtbase-opensource-src-5.15.3+dfsg/doc/global/externalsites/external-resources.qdoc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/doc/global/externalsites/external-resources.qdoc 2022-11-11 15:29:17.000000000 +0800 @@ -41,6 +41,10 @@ \title Android: App Versioning */ /*! + \externalpage https://developer.android.com/studio/command-line/adb#devicestatus + \title Android: Query for devices +*/ +/*! \externalpage http://www.freedesktop.org/ \title freedesktop.org */ @@ -522,3 +526,8 @@ \externalpage https://login.qt.io/ \title Qt Account Sign-up */ + +/*! + \externalpage https://www.unicode.org/ + \title Unicode standard +*/ diff -Nru qtbase-opensource-src-5.15.3+dfsg/doc/global/template/style/offline-simple.css qtbase-opensource-src-5.15.8+dfsg/doc/global/template/style/offline-simple.css --- qtbase-opensource-src-5.15.3+dfsg/doc/global/template/style/offline-simple.css 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/doc/global/template/style/offline-simple.css 2022-11-11 15:29:17.000000000 +0800 @@ -8,10 +8,6 @@ overflow-x:auto; } -pre a[href] { - color: #5caa15; -} - p { width: 70%; margin: 15px 0px 10px 15px; @@ -22,16 +18,6 @@ padding: 0px; } -a[href] { - color: #007330; - text-decoration: none; -} - -/* Different color for ext. links */ -a[href|="http://"], a[href|="https://"] { - color: #6bb8db; -} - h1.title { margin-top: 30px; margin-left: 6px; diff -Nru qtbase-opensource-src-5.15.3+dfsg/doc/global/template/style/offline.css qtbase-opensource-src-5.15.8+dfsg/doc/global/template/style/offline.css --- qtbase-opensource-src-5.15.3+dfsg/doc/global/template/style/offline.css 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/doc/global/template/style/offline.css 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,6 @@ body { font: normal 400 14px/1.2 Arial; - margin-top: 85px; + margin-top: 50px; font-family: Arial, Helvetica; text-align: left; margin-left: 5px; @@ -112,39 +112,18 @@ NOTE styles ------------------------------- */ - -.notetitle, .tiptitle, .fastpathtitle { - font-weight: bold +.admonition { + padding: 5px 0 5px 40px; + border: #ccc 1px solid; } -.attentiontitle, .cautiontitle, .dangertitle, .importanttitle, .remembertitle, .restrictiontitle { - font-weight: bold +.admonition.note, .admonition.important { + background: #f2f2f2 3px 6px no-repeat url(../images/ico_note.png); } -.note, .tip, .fastpath { - background: #F2F2F2 url(../images/ico_note.png); - background-repeat: no-repeat; - background-position: top left; - padding: 5px; - padding-left: 40px; - padding-bottom: 10px; - border: #999 1px dotted; - color: #666666; - margin: 5px; +.admonition.warning { + background: #f2f2f2 3px 6px no-repeat url(../images/ico_note_attention.png); } - -.attention, .caution, .danger, .important, .remember, .restriction { - background: #F2F2F2 url(../images/ico_note_attention.png); - background-repeat: no-repeat; - background-position: top left; - padding: 5px; - padding-left: 40px; - padding-bottom: 10px; - border: #999 1px dotted; - color: #666666; - margin: 5px; -} - /* ------------------------------- Top navigation @@ -232,7 +211,6 @@ .navigationbar { display: block; position: relative; - top: -20px; border-top: 1px solid #cecece; border-bottom: 1px solid #cecece; background-color: #F2F2F2; @@ -320,18 +298,17 @@ @media screen { .title { color: #313131; - font-size: 24px; + font-size: 20px; font-weight: normal; left: 0; - padding-bottom: 20px; + padding-bottom: 15px; padding-left: 10px; - padding-top: 20px; + padding-top: 15px; position: absolute; right: 0; top: 0; background-color: #E6E6E6; border-bottom: 1px #CCC solid; - border-top: 2px #CCC solid; font-weight: bold; margin-left: 0px; margin-right: 0px; @@ -351,7 +328,7 @@ font-weight: 100; background-color: #F2F3F4; padding: 4px; - margin-bottom: 30px; + margin-bottom: 15px; margin-top: 30px; border-top: #E0E0DE 1px solid; border-bottom: #E0E0DE 1px solid; @@ -366,7 +343,7 @@ font: 500 14px/1.2 Arial; font-weight: 100; text-decoration: underline; - margin-bottom: 30px; + margin-bottom: 15px; margin-top: 30px; } @@ -385,7 +362,7 @@ max-width: 75%; font-size: 14px; margin: 0px; - margin-top: 45px; + margin-top: 30px; } .fngroup h3.fngroupitem { margin-bottom: 5px; @@ -659,6 +636,7 @@ width: 200px; text-align: left; margin-left: 20px; + margin-top: 5px; } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/doc/global/template/style/online.css qtbase-opensource-src-5.15.8+dfsg/doc/global/template/style/online.css --- qtbase-opensource-src-5.15.3+dfsg/doc/global/template/style/online.css 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/doc/global/template/style/online.css 2022-11-11 15:29:17.000000000 +0800 @@ -992,6 +992,25 @@ color:#fff; white-space: pre-wrap } +div.admonition { + margin:1.5em 0 1.5em; + padding:12px; +} +div.admonition.note { + background-color:#c5d3f4; + border-left:5px solid #7a9ae5; +} +div.admonition.warning { + background-color:#ffe4e4; + border-left:5px solid #ff8383; +} +div.admonition.important { + background-color:#fef9f3; + border-left:5px solid #f6cb97; +} +.mainContent .admonition p { + margin:0; +} pre .str,code .str { color:#aaaaaa } diff -Nru qtbase-opensource-src-5.15.3+dfsg/examples/widgets/itemviews/editabletreemodel/mainwindow.cpp qtbase-opensource-src-5.15.8+dfsg/examples/widgets/itemviews/editabletreemodel/mainwindow.cpp --- qtbase-opensource-src-5.15.3+dfsg/examples/widgets/itemviews/editabletreemodel/mainwindow.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/examples/widgets/itemviews/editabletreemodel/mainwindow.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -62,7 +62,7 @@ QFile file(":/default.txt"); file.open(QIODevice::ReadOnly); - TreeModel *model = new TreeModel(headers, file.readAll()); + TreeModel *model = new TreeModel(headers, file.readAll(), this); file.close(); view->setModel(model); diff -Nru qtbase-opensource-src-5.15.3+dfsg/examples/widgets/itemviews/editabletreemodel/treemodel.cpp qtbase-opensource-src-5.15.8+dfsg/examples/widgets/itemviews/editabletreemodel/treemodel.cpp --- qtbase-opensource-src-5.15.3+dfsg/examples/widgets/itemviews/editabletreemodel/treemodel.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/examples/widgets/itemviews/editabletreemodel/treemodel.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -212,6 +212,9 @@ //! [8] int TreeModel::rowCount(const QModelIndex &parent) const { + if (parent.isValid() && parent.column() > 0) + return 0; + const TreeItem *parentItem = getItem(parent); return parentItem ? parentItem->childCount() : 0; diff -Nru qtbase-opensource-src-5.15.3+dfsg/examples/widgets/tools/plugandpaint/app/app.pro qtbase-opensource-src-5.15.8+dfsg/examples/widgets/tools/plugandpaint/app/app.pro --- qtbase-opensource-src-5.15.3+dfsg/examples/widgets/tools/plugandpaint/app/app.pro 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/examples/widgets/tools/plugandpaint/app/app.pro 2022-11-11 15:29:17.000000000 +0800 @@ -18,7 +18,11 @@ macx-xcode { LIBS += -lpnp_basictools$($${QMAKE_XCODE_LIBRARY_SUFFIX_SETTING}) } else { - LIBS += -lpnp_basictools + android { + LIBS += -lpnp_basictools_$${QT_ARCH} + } else { + LIBS += -lpnp_basictools + } if(!debug_and_release|build_pass):CONFIG(debug, debug|release) { mac:LIBS = $$member(LIBS, 0) $$member(LIBS, 1)_debug win32:LIBS = $$member(LIBS, 0) $$member(LIBS, 1)d diff -Nru qtbase-opensource-src-5.15.3+dfsg/examples/widgets/tools/treemodelcompleter/mainwindow.cpp qtbase-opensource-src-5.15.8+dfsg/examples/widgets/tools/treemodelcompleter/mainwindow.cpp --- qtbase-opensource-src-5.15.3+dfsg/examples/widgets/tools/treemodelcompleter/mainwindow.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/examples/widgets/tools/treemodelcompleter/mainwindow.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -206,7 +206,7 @@ QRegularExpression re("^\\s+"); while (!file.atEnd()) { - const QString line = QString::fromUtf8(file.readLine()).trimmed(); + const QString line = QString::fromUtf8(file.readLine()); const QString trimmedLine = line.trimmed(); if (trimmedLine.isEmpty()) continue; @@ -218,7 +218,7 @@ level = 0; } else { const int capLen = match.capturedLength(); - level = line.startsWith(QLatin1Char('\t')) ? capLen / 4 : capLen; + level = capLen / 4; } if (level + 1 >= parents.size()) @@ -267,4 +267,3 @@ { contentsLabel->setText(tr("Type path from model above with items at each level separated by a '%1'").arg(sep)); } - diff -Nru qtbase-opensource-src-5.15.3+dfsg/examples/widgets/widgets/imageviewer/imageviewer.cpp qtbase-opensource-src-5.15.8+dfsg/examples/widgets/widgets/imageviewer/imageviewer.cpp --- qtbase-opensource-src-5.15.3+dfsg/examples/widgets/widgets/imageviewer/imageviewer.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/examples/widgets/widgets/imageviewer/imageviewer.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -176,6 +176,7 @@ mimeTypeFilters.sort(); dialog.setMimeTypeFilters(mimeTypeFilters); dialog.selectMimeTypeFilter("image/jpeg"); + dialog.setAcceptMode(acceptMode); if (acceptMode == QFileDialog::AcceptSave) dialog.setDefaultSuffix("jpg"); } @@ -185,7 +186,7 @@ QFileDialog dialog(this, tr("Open File")); initializeImageFileDialog(dialog, QFileDialog::AcceptOpen); - while (dialog.exec() == QDialog::Accepted && !loadFile(dialog.selectedFiles().first())) {} + while (dialog.exec() == QDialog::Accepted && !loadFile(dialog.selectedFiles().constFirst())) {} } //! [1] @@ -194,7 +195,7 @@ QFileDialog dialog(this, tr("Save File As")); initializeImageFileDialog(dialog, QFileDialog::AcceptSave); - while (dialog.exec() == QDialog::Accepted && !saveFile(dialog.selectedFiles().first())) {} + while (dialog.exec() == QDialog::Accepted && !saveFile(dialog.selectedFiles().constFirst())) {} } //! [5] @@ -365,7 +366,7 @@ QMenu *helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addAction(tr("&About"), this, &ImageViewer::about); - helpMenu->addAction(tr("About &Qt"), &QApplication::aboutQt); + helpMenu->addAction(tr("About &Qt"), this, &QApplication::aboutQt); } //! [18] diff -Nru qtbase-opensource-src-5.15.3+dfsg/examples/widgets/widgets/imageviewer/main.cpp qtbase-opensource-src-5.15.8+dfsg/examples/widgets/widgets/imageviewer/main.cpp --- qtbase-opensource-src-5.15.3+dfsg/examples/widgets/widgets/imageviewer/main.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/examples/widgets/widgets/imageviewer/main.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -63,7 +63,7 @@ commandLineParser.process(QCoreApplication::arguments()); ImageViewer imageViewer; if (!commandLineParser.positionalArguments().isEmpty() - && !imageViewer.loadFile(commandLineParser.positionalArguments().front())) { + && !imageViewer.loadFile(commandLineParser.positionalArguments().constFirst())) { return -1; } imageViewer.show(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtAccessibilitySupport/5.15.3/QtAccessibilitySupport/private/qaccessiblebridgeutils_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtAccessibilitySupport/5.15.3/QtAccessibilitySupport/private/qaccessiblebridgeutils_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtAccessibilitySupport/5.15.3/QtAccessibilitySupport/private/qaccessiblebridgeutils_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtAccessibilitySupport/5.15.3/QtAccessibilitySupport/private/qaccessiblebridgeutils_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/accessibility/qaccessiblebridgeutils_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtAccessibilitySupport/5.15.8/QtAccessibilitySupport/private/qaccessiblebridgeutils_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtAccessibilitySupport/5.15.8/QtAccessibilitySupport/private/qaccessiblebridgeutils_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtAccessibilitySupport/5.15.8/QtAccessibilitySupport/private/qaccessiblebridgeutils_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtAccessibilitySupport/5.15.8/QtAccessibilitySupport/private/qaccessiblebridgeutils_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/accessibility/qaccessiblebridgeutils_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtAccessibilitySupport/qtaccessibilitysupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtAccessibilitySupport/qtaccessibilitysupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtAccessibilitySupport/qtaccessibilitysupportversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtAccessibilitySupport/qtaccessibilitysupportversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTACCESSIBILITYSUPPORT_VERSION_H #define QT_QTACCESSIBILITYSUPPORT_VERSION_H -#define QTACCESSIBILITYSUPPORT_VERSION_STR "5.15.3" +#define QTACCESSIBILITYSUPPORT_VERSION_STR "5.15.8" -#define QTACCESSIBILITYSUPPORT_VERSION 0x050F03 +#define QTACCESSIBILITYSUPPORT_VERSION 0x050F08 #endif // QT_QTACCESSIBILITYSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtClipboardSupport/5.15.3/QtClipboardSupport/private/qmacmime_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtClipboardSupport/5.15.3/QtClipboardSupport/private/qmacmime_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtClipboardSupport/5.15.3/QtClipboardSupport/private/qmacmime_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtClipboardSupport/5.15.3/QtClipboardSupport/private/qmacmime_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/clipboard/qmacmime_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtClipboardSupport/5.15.8/QtClipboardSupport/private/qmacmime_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtClipboardSupport/5.15.8/QtClipboardSupport/private/qmacmime_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtClipboardSupport/5.15.8/QtClipboardSupport/private/qmacmime_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtClipboardSupport/5.15.8/QtClipboardSupport/private/qmacmime_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/clipboard/qmacmime_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtClipboardSupport/qtclipboardsupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtClipboardSupport/qtclipboardsupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtClipboardSupport/qtclipboardsupportversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtClipboardSupport/qtclipboardsupportversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTCLIPBOARDSUPPORT_VERSION_H #define QT_QTCLIPBOARDSUPPORT_VERSION_H -#define QTCLIPBOARDSUPPORT_VERSION_STR "5.15.3" +#define QTCLIPBOARDSUPPORT_VERSION_STR "5.15.8" -#define QTCLIPBOARDSUPPORT_VERSION 0x050F03 +#define QTCLIPBOARDSUPPORT_VERSION 0x050F08 #endif // QT_QTCLIPBOARDSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtConcurrent/qtconcurrentversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtConcurrent/qtconcurrentversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtConcurrent/qtconcurrentversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtConcurrent/qtconcurrentversion.h 2022-11-13 04:40:57.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTCONCURRENT_VERSION_H #define QT_QTCONCURRENT_VERSION_H -#define QTCONCURRENT_VERSION_STR "5.15.3" +#define QTCONCURRENT_VERSION_STR "5.15.8" -#define QTCONCURRENT_VERSION 0x050F03 +#define QTCONCURRENT_VERSION 0x050F08 #endif // QT_QTCONCURRENT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/cp949codetbl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/cp949codetbl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/cp949codetbl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/cp949codetbl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/cp949codetbl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/minimum-linux_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/minimum-linux_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/minimum-linux_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/minimum-linux_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/global/minimum-linux_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractanimation_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractanimation_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractanimation_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractanimation_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/animation/qabstractanimation_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qabstracteventdispatcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qabstracteventdispatcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qabstracteventdispatcher_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qabstracteventdispatcher_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qabstracteventdispatcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractfileengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractfileengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractfileengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractfileengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qabstractfileengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractitemmodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractitemmodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractitemmodel_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractitemmodel_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/itemmodels/qabstractitemmodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractproxymodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractproxymodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractproxymodel_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractproxymodel_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/itemmodels/qabstractproxymodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractstate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractstate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractstate_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qabstractstate_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/statemachine/qabstractstate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qabstracttransition_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qabstracttransition_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qabstracttransition_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qabstracttransition_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/statemachine/qabstracttransition_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qanimationgroup_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qanimationgroup_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qanimationgroup_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qanimationgroup_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/animation/qanimationgroup_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qbig5codec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qbig5codec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qbig5codec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qbig5codec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qbig5codec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjson_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjson_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjson_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjson_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/serialization/qbinaryjson_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjsonarray_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjsonarray_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjsonarray_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjsonarray_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/serialization/qbinaryjsonarray_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjsonobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjsonobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjsonobject_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjsonobject_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/serialization/qbinaryjsonobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjsonvalue_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjsonvalue_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjsonvalue_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qbinaryjsonvalue_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/serialization/qbinaryjsonvalue_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qbytearray_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qbytearray_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qbytearray_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qbytearray_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/text/qbytearray_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qbytedata_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qbytedata_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qbytedata_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qbytedata_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/text/qbytedata_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcalendarbackend_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcalendarbackend_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcalendarbackend_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcalendarbackend_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qcalendarbackend_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcalendarmath_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcalendarmath_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcalendarmath_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcalendarmath_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qcalendarmath_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcborcommon_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcborcommon_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcborcommon_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcborcommon_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/serialization/qcborcommon_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcborvalue_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcborvalue_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcborvalue_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcborvalue_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/serialization/qcborvalue_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcfsocketnotifier_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcfsocketnotifier_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcfsocketnotifier_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcfsocketnotifier_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qcfsocketnotifier_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcollator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcollator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcollator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcollator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/text/qcollator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcore_mac_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcore_mac_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcore_mac_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcore_mac_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qcore_mac_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcore_unix_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcore_unix_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcore_unix_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcore_unix_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qcore_unix_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcoreapplication_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcoreapplication_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcoreapplication_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcoreapplication_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qcoreapplication_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcorecmdlineargs_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcorecmdlineargs_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcorecmdlineargs_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcorecmdlineargs_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qcorecmdlineargs_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcoreglobaldata_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcoreglobaldata_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qcoreglobaldata_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qcoreglobaldata_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qcoreglobaldata_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdatastream_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdatastream_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdatastream_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdatastream_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/serialization/qdatastream_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdataurl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdataurl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdataurl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdataurl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qdataurl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdatetime_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdatetime_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdatetime_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdatetime_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qdatetime_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdatetimeparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdatetimeparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdatetimeparser_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdatetimeparser_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qdatetimeparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdeadlinetimer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdeadlinetimer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdeadlinetimer_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdeadlinetimer_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qdeadlinetimer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdebug_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdebug_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdebug_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdebug_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qdebug_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdir_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdir_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdir_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdir_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qdir_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdoublescanprint_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdoublescanprint_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qdoublescanprint_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qdoublescanprint_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/text/qdoublescanprint_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qduplicatetracker_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qduplicatetracker_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qduplicatetracker_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qduplicatetracker_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/tools/qduplicatetracker_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qelfparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qelfparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qelfparser_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qelfparser_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/plugin/qelfparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qendian_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qendian_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qendian_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qendian_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/global/qendian_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeucjpcodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeucjpcodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeucjpcodec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeucjpcodec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qeucjpcodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeuckrcodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeuckrcodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeuckrcodec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeuckrcodec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qeuckrcodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_cf_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_cf_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_cf_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_cf_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qeventdispatcher_cf_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_glib_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_glib_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_glib_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_glib_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qeventdispatcher_glib_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_unix_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_unix_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_unix_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_unix_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qeventdispatcher_unix_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_win_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_win_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_win_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_win_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qeventdispatcher_win_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_winrt_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_winrt_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_winrt_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeventdispatcher_winrt_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qeventdispatcher_winrt_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeventloop_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeventloop_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeventloop_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeventloop_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qeventloop_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeventtransition_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeventtransition_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qeventtransition_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qeventtransition_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/statemachine/qeventtransition_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfactoryloader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfactoryloader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfactoryloader_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfactoryloader_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/plugin/qfactoryloader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfile_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfile_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfile_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfile_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfile_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfiledevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfiledevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfiledevice_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfiledevice_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfiledevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfileinfo_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfileinfo_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfileinfo_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfileinfo_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfileinfo_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfileselector_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfileselector_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfileselector_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfileselector_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfileselector_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfilesystemengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystementry_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystementry_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystementry_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystementry_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfilesystementry_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemiterator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemiterator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemiterator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemiterator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfilesystemiterator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemmetadata_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemmetadata_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemmetadata_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemmetadata_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfilesystemmetadata_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_fsevents_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_fsevents_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_fsevents_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_fsevents_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfilesystemwatcher_fsevents_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_inotify_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_inotify_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_inotify_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_inotify_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfilesystemwatcher_inotify_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_kqueue_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_kqueue_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_kqueue_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_kqueue_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfilesystemwatcher_kqueue_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfilesystemwatcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_polling_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_polling_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_polling_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_polling_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfilesystemwatcher_polling_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_win_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_win_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_win_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfilesystemwatcher_win_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfilesystemwatcher_win_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfinalstate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfinalstate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfinalstate_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfinalstate_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/statemachine/qfinalstate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfreelist_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfreelist_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfreelist_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfreelist_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/tools/qfreelist_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfsfileengine_iterator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfsfileengine_iterator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfsfileengine_iterator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfsfileengine_iterator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfsfileengine_iterator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfsfileengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfsfileengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfsfileengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfsfileengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qfsfileengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfunctions_fake_env_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfunctions_fake_env_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfunctions_fake_env_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfunctions_fake_env_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qfunctions_fake_env_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfunctions_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfunctions_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfunctions_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfunctions_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qfunctions_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfutex_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfutex_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfutex_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfutex_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/thread/qfutex_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfutureinterface_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfutureinterface_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfutureinterface_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfutureinterface_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/thread/qfutureinterface_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfuturewatcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfuturewatcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qfuturewatcher_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qfuturewatcher_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/thread/qfuturewatcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qgb18030codec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qgb18030codec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qgb18030codec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qgb18030codec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qgb18030codec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qglobal_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qglobal_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/global/qglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qgregoriancalendar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qgregoriancalendar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qgregoriancalendar_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qgregoriancalendar_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qgregoriancalendar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qharfbuzz_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qharfbuzz_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qharfbuzz_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qharfbuzz_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/text/qharfbuzz_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qhijricalendar_data_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qhijricalendar_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qhijricalendar_data_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qhijricalendar_data_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qhijricalendar_data_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qhijricalendar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qhijricalendar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qhijricalendar_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qhijricalendar_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qhijricalendar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qhistorystate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qhistorystate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qhistorystate_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qhistorystate_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/statemachine/qhistorystate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qhooks_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qhooks_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qhooks_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qhooks_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/global/qhooks_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qiconvcodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qiconvcodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qiconvcodec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qiconvcodec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qiconvcodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qicucodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qicucodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qicucodec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qicucodec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qicucodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qiodevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qiodevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qiodevice_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qiodevice_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qiodevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qipaddress_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qipaddress_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qipaddress_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qipaddress_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qipaddress_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qisciicodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qisciicodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qisciicodec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qisciicodec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qisciicodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qislamiccivilcalendar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qislamiccivilcalendar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qislamiccivilcalendar_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qislamiccivilcalendar_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qislamiccivilcalendar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qitemselectionmodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qitemselectionmodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qitemselectionmodel_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qitemselectionmodel_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/itemmodels/qitemselectionmodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjalalicalendar_data_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjalalicalendar_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjalalicalendar_data_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjalalicalendar_data_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qjalalicalendar_data_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjalalicalendar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjalalicalendar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjalalicalendar_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjalalicalendar_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qjalalicalendar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjiscodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjiscodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjiscodec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjiscodec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qjiscodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjni_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjni_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjni_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjni_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qjni_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjnihelpers_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjnihelpers_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjnihelpers_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjnihelpers_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qjnihelpers_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjpunicode_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjpunicode_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjpunicode_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjpunicode_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qjpunicode_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjson_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjson_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjson_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjson_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/serialization/qjson_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjsonparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjsonparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjsonparser_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjsonparser_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/serialization/qjsonparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjsonwriter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjsonwriter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjsonwriter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjsonwriter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/serialization/qjsonwriter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjuliancalendar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjuliancalendar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qjuliancalendar_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qjuliancalendar_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qjuliancalendar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlatincodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlatincodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlatincodec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlatincodec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qlatincodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlibrary_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlibrary_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlibrary_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlibrary_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/plugin/qlibrary_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlocale_data_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlocale_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlocale_data_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlocale_data_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/text/qlocale_data_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlocale_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlocale_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlocale_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlocale_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/text/qlocale_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlocale_tools_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlocale_tools_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlocale_tools_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlocale_tools_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/text/qlocale_tools_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlockfile_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlockfile_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlockfile_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlockfile_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qlockfile_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlocking_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlocking_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlocking_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlocking_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/thread/qlocking_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlogging_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlogging_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qlogging_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qlogging_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/global/qlogging_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qloggingregistry_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qloggingregistry_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qloggingregistry_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qloggingregistry_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qloggingregistry_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmachparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmachparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmachparser_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmachparser_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/plugin/qmachparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmakearray_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmakearray_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmakearray_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmakearray_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/tools/qmakearray_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmemory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmemory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmemory_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmemory_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/global/qmemory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmetaobject_moc_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmetaobject_moc_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmetaobject_moc_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmetaobject_moc_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qmetaobject_moc_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmetaobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmetaobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmetaobject_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmetaobject_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qmetaobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmetaobjectbuilder_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmetaobjectbuilder_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmetaobjectbuilder_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmetaobjectbuilder_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qmetaobjectbuilder_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmetatype_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmetatype_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmetatype_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmetatype_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qmetatype_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmetatypeswitcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmetatypeswitcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmetatypeswitcher_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmetatypeswitcher_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qmetatypeswitcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmilankoviccalendar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmilankoviccalendar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmilankoviccalendar_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmilankoviccalendar_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qmilankoviccalendar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmimedatabase_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmimedatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmimedatabase_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmimedatabase_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/mimetypes/qmimedatabase_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmimeglobpattern_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmimeglobpattern_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmimeglobpattern_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmimeglobpattern_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/mimetypes/qmimeglobpattern_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmimemagicrule_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmimemagicrule_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmimemagicrule_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmimemagicrule_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/mimetypes/qmimemagicrule_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmimemagicrulematcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmimemagicrulematcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmimemagicrulematcher_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmimemagicrulematcher_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/mimetypes/qmimemagicrulematcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmimeprovider_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmimeprovider_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmimeprovider_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmimeprovider_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/mimetypes/qmimeprovider_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmimetype_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmimetype_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmimetype_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmimetype_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/mimetypes/qmimetype_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmimetypeparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmimetypeparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmimetypeparser_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmimetypeparser_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/mimetypes/qmimetypeparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmutex_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmutex_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qmutex_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qmutex_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/thread/qmutex_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qnoncontiguousbytedevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qnoncontiguousbytedevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qnoncontiguousbytedevice_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qnoncontiguousbytedevice_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qnoncontiguousbytedevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qnumeric_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qnumeric_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qnumeric_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qnumeric_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/global/qnumeric_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qobject_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qobject_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qoffsetstringarray_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qoffsetstringarray_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qoffsetstringarray_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qoffsetstringarray_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/tools/qoffsetstringarray_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qoperatingsystemversion_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qoperatingsystemversion_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qoperatingsystemversion_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qoperatingsystemversion_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/global/qoperatingsystemversion_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qoperatingsystemversion_win_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qoperatingsystemversion_win_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qoperatingsystemversion_win_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qoperatingsystemversion_win_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/global/qoperatingsystemversion_win_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qorderedmutexlocker_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qorderedmutexlocker_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qorderedmutexlocker_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qorderedmutexlocker_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/thread/qorderedmutexlocker_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qparallelanimationgroup_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qparallelanimationgroup_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qparallelanimationgroup_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qparallelanimationgroup_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/animation/qparallelanimationgroup_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qplugin_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qplugin_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qplugin_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qplugin_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/plugin/qplugin_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qpoll_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qpoll_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qpoll_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qpoll_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qpoll_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qppsattribute_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qppsattribute_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qppsattribute_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qppsattribute_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qppsattribute_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qppsattributeprivate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qppsattributeprivate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qppsattributeprivate_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qppsattributeprivate_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qppsattributeprivate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qppsobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qppsobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qppsobject_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qppsobject_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qppsobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qppsobjectprivate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qppsobjectprivate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qppsobjectprivate_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qppsobjectprivate_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qppsobjectprivate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qprocess_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qprocess_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qprocess_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qprocess_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qprocess_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qpropertyanimation_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qpropertyanimation_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qpropertyanimation_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qpropertyanimation_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/animation/qpropertyanimation_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qrandom_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qrandom_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qrandom_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qrandom_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/global/qrandom_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qreadwritelock_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qreadwritelock_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qreadwritelock_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qreadwritelock_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/thread/qreadwritelock_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qresource_iterator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qresource_iterator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qresource_iterator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qresource_iterator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qresource_iterator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qresource_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qresource_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qresource_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qresource_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qresource_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qringbuffer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qringbuffer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qringbuffer_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qringbuffer_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/tools/qringbuffer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qromancalendar_data_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qromancalendar_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qromancalendar_data_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qromancalendar_data_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qromancalendar_data_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qromancalendar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qromancalendar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qromancalendar_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qromancalendar_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qromancalendar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsavefile_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsavefile_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsavefile_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsavefile_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qsavefile_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qscopedpointer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qscopedpointer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qscopedpointer_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qscopedpointer_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/tools/qscopedpointer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsequentialanimationgroup_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsequentialanimationgroup_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsequentialanimationgroup_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsequentialanimationgroup_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/animation/qsequentialanimationgroup_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsettings_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsettings_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsettings_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsettings_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qsettings_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsharedmemory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsharedmemory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsharedmemory_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsharedmemory_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qsharedmemory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsignaleventgenerator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsignaleventgenerator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsignaleventgenerator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsignaleventgenerator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/statemachine/qsignaleventgenerator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsignaltransition_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsignaltransition_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsignaltransition_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsignaltransition_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/statemachine/qsignaltransition_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsimd_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsimd_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsimd_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsimd_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/tools/qsimd_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsimd_x86_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsimd_x86_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsimd_x86_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsimd_x86_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/tools/qsimd_x86_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsimplecodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsimplecodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsimplecodec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsimplecodec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qsimplecodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsjiscodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsjiscodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsjiscodec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsjiscodec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qsjiscodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qstate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qstate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qstate_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qstate_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/statemachine/qstate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qstatemachine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qstatemachine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qstatemachine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qstatemachine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/statemachine/qstatemachine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qstdweb_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qstdweb_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qstdweb_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qstdweb_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/platform/wasm/qstdweb_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qstorageinfo_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qstorageinfo_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qstorageinfo_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qstorageinfo_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qstorageinfo_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qstringalgorithms_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qstringalgorithms_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qstringalgorithms_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qstringalgorithms_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/text/qstringalgorithms_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qstringiterator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qstringiterator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qstringiterator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qstringiterator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/text/qstringiterator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsystemerror_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsystemerror_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsystemerror_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsystemerror_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qsystemerror_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsystemlibrary_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsystemlibrary_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsystemlibrary_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsystemlibrary_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/plugin/qsystemlibrary_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsystemsemaphore_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsystemsemaphore_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qsystemsemaphore_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qsystemsemaphore_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qsystemsemaphore_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qt_pch.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qt_pch.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qt_pch.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qt_pch.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/global/qt_pch.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtemporaryfile_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtemporaryfile_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtemporaryfile_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtemporaryfile_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qtemporaryfile_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtextcodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtextcodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtextcodec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtextcodec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qtextcodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtextstream_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtextstream_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtextstream_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtextstream_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/serialization/qtextstream_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qthread_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qthread_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qthread_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qthread_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/thread/qthread_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qthreadpool_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qthreadpool_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qthreadpool_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qthreadpool_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/thread/qthreadpool_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtimerinfo_unix_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtimerinfo_unix_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtimerinfo_unix_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtimerinfo_unix_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qtimerinfo_unix_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtimezoneprivate_data_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtimezoneprivate_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtimezoneprivate_data_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtimezoneprivate_data_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qtimezoneprivate_data_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtimezoneprivate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtimezoneprivate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtimezoneprivate_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtimezoneprivate_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/time/qtimezoneprivate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtldurl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtldurl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtldurl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtldurl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qtldurl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtools_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtools_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtools_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtools_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/tools/qtools_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtrace_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtrace_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtrace_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtrace_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/global/qtrace_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtranslator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtranslator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtranslator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtranslator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qtranslator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtransposeproxymodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtransposeproxymodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtransposeproxymodel_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtransposeproxymodel_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/itemmodels/qtransposeproxymodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtsciicodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtsciicodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qtsciicodec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qtsciicodec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qtsciicodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qunicodetables_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qunicodetables_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qunicodetables_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qunicodetables_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/text/qunicodetables_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qunicodetools_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qunicodetools_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qunicodetools_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qunicodetools_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/text/qunicodetools_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qurl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qurl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qurl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qurl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qurl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qurltlds_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qurltlds_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qurltlds_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qurltlds_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qurltlds_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qutfcodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qutfcodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qutfcodec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qutfcodec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qutfcodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qvariant_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qvariant_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qvariant_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qvariant_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qvariant_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qvariantanimation_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qvariantanimation_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qvariantanimation_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qvariantanimation_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/animation/qvariantanimation_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qwaitcondition_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qwaitcondition_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qwaitcondition_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qwaitcondition_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/thread/qwaitcondition_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qwindowscodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qwindowscodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qwindowscodec_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qwindowscodec_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/codecs/qwindowscodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qwindowspipereader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qwindowspipereader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qwindowspipereader_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qwindowspipereader_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qwindowspipereader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qwindowspipewriter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qwindowspipewriter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qwindowspipewriter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qwindowspipewriter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/io/qwindowspipewriter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qwineventnotifier_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qwineventnotifier_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qwineventnotifier_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qwineventnotifier_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qwineventnotifier_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qwinregistry_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qwinregistry_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qwinregistry_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qwinregistry_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/kernel/qwinregistry_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qxmlstream_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qxmlstream_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qxmlstream_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qxmlstream_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/serialization/qxmlstream_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qxmlutils_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qxmlutils_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.3/QtCore/private/qxmlutils_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.3/QtCore/private/qxmlutils_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/corelib/serialization/qxmlutils_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/cp949codetbl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/cp949codetbl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/cp949codetbl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/cp949codetbl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/cp949codetbl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/minimum-linux_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/minimum-linux_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/minimum-linux_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/minimum-linux_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/global/minimum-linux_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractanimation_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractanimation_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractanimation_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractanimation_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/animation/qabstractanimation_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qabstracteventdispatcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qabstracteventdispatcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qabstracteventdispatcher_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qabstracteventdispatcher_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qabstracteventdispatcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractfileengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractfileengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractfileengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractfileengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qabstractfileengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractitemmodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractitemmodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractitemmodel_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractitemmodel_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/itemmodels/qabstractitemmodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractproxymodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractproxymodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractproxymodel_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractproxymodel_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/itemmodels/qabstractproxymodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractstate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractstate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractstate_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qabstractstate_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/statemachine/qabstractstate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qabstracttransition_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qabstracttransition_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qabstracttransition_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qabstracttransition_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/statemachine/qabstracttransition_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qanimationgroup_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qanimationgroup_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qanimationgroup_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qanimationgroup_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/animation/qanimationgroup_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qbig5codec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qbig5codec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qbig5codec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qbig5codec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qbig5codec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjson_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjson_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjson_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjson_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/serialization/qbinaryjson_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjsonarray_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjsonarray_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjsonarray_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjsonarray_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/serialization/qbinaryjsonarray_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjsonobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjsonobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjsonobject_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjsonobject_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/serialization/qbinaryjsonobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjsonvalue_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjsonvalue_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjsonvalue_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qbinaryjsonvalue_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/serialization/qbinaryjsonvalue_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qbytearray_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qbytearray_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qbytearray_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qbytearray_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/text/qbytearray_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qbytedata_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qbytedata_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qbytedata_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qbytedata_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/text/qbytedata_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcalendarbackend_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcalendarbackend_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcalendarbackend_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcalendarbackend_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qcalendarbackend_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcalendarmath_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcalendarmath_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcalendarmath_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcalendarmath_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qcalendarmath_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcborcommon_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcborcommon_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcborcommon_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcborcommon_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/serialization/qcborcommon_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcborvalue_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcborvalue_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcborvalue_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcborvalue_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/serialization/qcborvalue_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcfsocketnotifier_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcfsocketnotifier_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcfsocketnotifier_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcfsocketnotifier_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qcfsocketnotifier_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcollator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcollator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcollator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcollator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/text/qcollator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcore_mac_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcore_mac_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcore_mac_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcore_mac_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qcore_mac_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcore_unix_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcore_unix_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcore_unix_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcore_unix_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qcore_unix_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcoreapplication_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcoreapplication_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcoreapplication_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcoreapplication_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qcoreapplication_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcorecmdlineargs_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcorecmdlineargs_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcorecmdlineargs_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcorecmdlineargs_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qcorecmdlineargs_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcoreglobaldata_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcoreglobaldata_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qcoreglobaldata_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qcoreglobaldata_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qcoreglobaldata_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdatastream_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdatastream_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdatastream_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdatastream_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/serialization/qdatastream_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdataurl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdataurl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdataurl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdataurl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qdataurl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdatetime_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdatetime_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdatetime_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdatetime_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qdatetime_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdatetimeparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdatetimeparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdatetimeparser_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdatetimeparser_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qdatetimeparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdeadlinetimer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdeadlinetimer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdeadlinetimer_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdeadlinetimer_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qdeadlinetimer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdebug_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdebug_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdebug_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdebug_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qdebug_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdir_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdir_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdir_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdir_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qdir_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdoublescanprint_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdoublescanprint_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qdoublescanprint_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qdoublescanprint_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/text/qdoublescanprint_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qduplicatetracker_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qduplicatetracker_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qduplicatetracker_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qduplicatetracker_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/tools/qduplicatetracker_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qelfparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qelfparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qelfparser_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qelfparser_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/plugin/qelfparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qendian_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qendian_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qendian_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qendian_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/global/qendian_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeucjpcodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeucjpcodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeucjpcodec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeucjpcodec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qeucjpcodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeuckrcodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeuckrcodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeuckrcodec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeuckrcodec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qeuckrcodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_cf_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_cf_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_cf_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_cf_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qeventdispatcher_cf_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_glib_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_glib_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_glib_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_glib_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qeventdispatcher_glib_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_unix_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_unix_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_unix_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_unix_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qeventdispatcher_unix_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_win_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_win_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_win_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_win_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qeventdispatcher_win_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_winrt_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_winrt_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_winrt_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeventdispatcher_winrt_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qeventdispatcher_winrt_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeventloop_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeventloop_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeventloop_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeventloop_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qeventloop_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeventtransition_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeventtransition_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qeventtransition_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qeventtransition_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/statemachine/qeventtransition_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfactoryloader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfactoryloader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfactoryloader_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfactoryloader_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/plugin/qfactoryloader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfile_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfile_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfile_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfile_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfile_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfiledevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfiledevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfiledevice_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfiledevice_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfiledevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfileinfo_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfileinfo_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfileinfo_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfileinfo_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfileinfo_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfileselector_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfileselector_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfileselector_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfileselector_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfileselector_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfilesystemengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystementry_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystementry_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystementry_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystementry_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfilesystementry_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemiterator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemiterator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemiterator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemiterator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfilesystemiterator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemmetadata_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemmetadata_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemmetadata_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemmetadata_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfilesystemmetadata_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_fsevents_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_fsevents_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_fsevents_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_fsevents_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfilesystemwatcher_fsevents_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_inotify_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_inotify_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_inotify_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_inotify_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfilesystemwatcher_inotify_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_kqueue_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_kqueue_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_kqueue_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_kqueue_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfilesystemwatcher_kqueue_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfilesystemwatcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_polling_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_polling_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_polling_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_polling_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfilesystemwatcher_polling_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_win_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_win_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_win_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfilesystemwatcher_win_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfilesystemwatcher_win_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfinalstate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfinalstate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfinalstate_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfinalstate_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/statemachine/qfinalstate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfreelist_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfreelist_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfreelist_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfreelist_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/tools/qfreelist_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfsfileengine_iterator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfsfileengine_iterator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfsfileengine_iterator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfsfileengine_iterator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfsfileengine_iterator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfsfileengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfsfileengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfsfileengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfsfileengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qfsfileengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfunctions_fake_env_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfunctions_fake_env_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfunctions_fake_env_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfunctions_fake_env_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qfunctions_fake_env_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfunctions_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfunctions_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfunctions_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfunctions_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qfunctions_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfutex_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfutex_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfutex_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfutex_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/thread/qfutex_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfutureinterface_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfutureinterface_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfutureinterface_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfutureinterface_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/thread/qfutureinterface_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfuturewatcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfuturewatcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qfuturewatcher_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qfuturewatcher_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/thread/qfuturewatcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qgb18030codec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qgb18030codec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qgb18030codec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qgb18030codec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qgb18030codec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qglobal_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qglobal_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/global/qglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qgregoriancalendar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qgregoriancalendar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qgregoriancalendar_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qgregoriancalendar_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qgregoriancalendar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qharfbuzz_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qharfbuzz_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qharfbuzz_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qharfbuzz_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/text/qharfbuzz_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qhijricalendar_data_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qhijricalendar_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qhijricalendar_data_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qhijricalendar_data_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qhijricalendar_data_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qhijricalendar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qhijricalendar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qhijricalendar_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qhijricalendar_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qhijricalendar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qhistorystate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qhistorystate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qhistorystate_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qhistorystate_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/statemachine/qhistorystate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qhooks_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qhooks_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qhooks_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qhooks_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/global/qhooks_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qiconvcodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qiconvcodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qiconvcodec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qiconvcodec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qiconvcodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qicucodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qicucodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qicucodec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qicucodec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qicucodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qiodevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qiodevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qiodevice_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qiodevice_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qiodevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qipaddress_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qipaddress_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qipaddress_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qipaddress_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qipaddress_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qisciicodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qisciicodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qisciicodec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qisciicodec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qisciicodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qislamiccivilcalendar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qislamiccivilcalendar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qislamiccivilcalendar_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qislamiccivilcalendar_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qislamiccivilcalendar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qitemselectionmodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qitemselectionmodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qitemselectionmodel_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qitemselectionmodel_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/itemmodels/qitemselectionmodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjalalicalendar_data_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjalalicalendar_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjalalicalendar_data_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjalalicalendar_data_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qjalalicalendar_data_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjalalicalendar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjalalicalendar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjalalicalendar_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjalalicalendar_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qjalalicalendar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjiscodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjiscodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjiscodec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjiscodec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qjiscodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjni_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjni_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjni_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjni_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qjni_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjnihelpers_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjnihelpers_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjnihelpers_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjnihelpers_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qjnihelpers_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjpunicode_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjpunicode_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjpunicode_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjpunicode_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qjpunicode_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjson_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjson_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjson_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjson_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/serialization/qjson_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjsonparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjsonparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjsonparser_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjsonparser_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/serialization/qjsonparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjsonwriter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjsonwriter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjsonwriter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjsonwriter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/serialization/qjsonwriter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjuliancalendar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjuliancalendar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qjuliancalendar_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qjuliancalendar_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qjuliancalendar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlatincodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlatincodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlatincodec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlatincodec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qlatincodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlibrary_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlibrary_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlibrary_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlibrary_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/plugin/qlibrary_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlocale_data_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlocale_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlocale_data_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlocale_data_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/text/qlocale_data_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlocale_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlocale_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlocale_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlocale_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/text/qlocale_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlocale_tools_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlocale_tools_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlocale_tools_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlocale_tools_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/text/qlocale_tools_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlockfile_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlockfile_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlockfile_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlockfile_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qlockfile_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlocking_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlocking_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlocking_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlocking_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/thread/qlocking_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlogging_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlogging_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qlogging_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qlogging_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/global/qlogging_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qloggingregistry_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qloggingregistry_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qloggingregistry_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qloggingregistry_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qloggingregistry_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmachparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmachparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmachparser_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmachparser_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/plugin/qmachparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmakearray_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmakearray_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmakearray_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmakearray_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/tools/qmakearray_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmemory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmemory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmemory_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmemory_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/global/qmemory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmetaobject_moc_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmetaobject_moc_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmetaobject_moc_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmetaobject_moc_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qmetaobject_moc_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmetaobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmetaobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmetaobject_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmetaobject_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qmetaobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmetaobjectbuilder_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmetaobjectbuilder_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmetaobjectbuilder_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmetaobjectbuilder_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qmetaobjectbuilder_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmetatype_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmetatype_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmetatype_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmetatype_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qmetatype_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmetatypeswitcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmetatypeswitcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmetatypeswitcher_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmetatypeswitcher_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qmetatypeswitcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmilankoviccalendar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmilankoviccalendar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmilankoviccalendar_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmilankoviccalendar_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qmilankoviccalendar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmimedatabase_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmimedatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmimedatabase_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmimedatabase_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/mimetypes/qmimedatabase_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmimeglobpattern_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmimeglobpattern_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmimeglobpattern_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmimeglobpattern_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/mimetypes/qmimeglobpattern_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmimemagicrule_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmimemagicrule_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmimemagicrule_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmimemagicrule_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/mimetypes/qmimemagicrule_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmimemagicrulematcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmimemagicrulematcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmimemagicrulematcher_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmimemagicrulematcher_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/mimetypes/qmimemagicrulematcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmimeprovider_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmimeprovider_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmimeprovider_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmimeprovider_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/mimetypes/qmimeprovider_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmimetype_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmimetype_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmimetype_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmimetype_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/mimetypes/qmimetype_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmimetypeparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmimetypeparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmimetypeparser_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmimetypeparser_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/mimetypes/qmimetypeparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmutex_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmutex_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qmutex_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qmutex_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/thread/qmutex_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qnoncontiguousbytedevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qnoncontiguousbytedevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qnoncontiguousbytedevice_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qnoncontiguousbytedevice_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qnoncontiguousbytedevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qnumeric_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qnumeric_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qnumeric_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qnumeric_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/global/qnumeric_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qobject_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qobject_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qoffsetstringarray_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qoffsetstringarray_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qoffsetstringarray_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qoffsetstringarray_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/tools/qoffsetstringarray_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qoperatingsystemversion_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qoperatingsystemversion_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qoperatingsystemversion_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qoperatingsystemversion_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/global/qoperatingsystemversion_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qoperatingsystemversion_win_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qoperatingsystemversion_win_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qoperatingsystemversion_win_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qoperatingsystemversion_win_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/global/qoperatingsystemversion_win_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qorderedmutexlocker_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qorderedmutexlocker_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qorderedmutexlocker_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qorderedmutexlocker_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/thread/qorderedmutexlocker_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qparallelanimationgroup_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qparallelanimationgroup_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qparallelanimationgroup_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qparallelanimationgroup_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/animation/qparallelanimationgroup_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qplugin_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qplugin_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qplugin_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qplugin_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/plugin/qplugin_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qpoll_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qpoll_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qpoll_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qpoll_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qpoll_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qppsattribute_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qppsattribute_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qppsattribute_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qppsattribute_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qppsattribute_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qppsattributeprivate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qppsattributeprivate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qppsattributeprivate_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qppsattributeprivate_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qppsattributeprivate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qppsobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qppsobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qppsobject_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qppsobject_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qppsobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qppsobjectprivate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qppsobjectprivate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qppsobjectprivate_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qppsobjectprivate_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qppsobjectprivate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qprocess_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qprocess_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qprocess_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qprocess_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qprocess_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qpropertyanimation_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qpropertyanimation_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qpropertyanimation_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qpropertyanimation_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/animation/qpropertyanimation_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qrandom_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qrandom_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qrandom_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qrandom_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/global/qrandom_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qreadwritelock_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qreadwritelock_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qreadwritelock_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qreadwritelock_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/thread/qreadwritelock_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qresource_iterator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qresource_iterator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qresource_iterator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qresource_iterator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qresource_iterator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qresource_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qresource_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qresource_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qresource_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qresource_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qringbuffer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qringbuffer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qringbuffer_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qringbuffer_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/tools/qringbuffer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qromancalendar_data_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qromancalendar_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qromancalendar_data_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qromancalendar_data_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qromancalendar_data_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qromancalendar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qromancalendar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qromancalendar_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qromancalendar_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qromancalendar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsavefile_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsavefile_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsavefile_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsavefile_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qsavefile_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qscopedpointer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qscopedpointer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qscopedpointer_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qscopedpointer_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/tools/qscopedpointer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsequentialanimationgroup_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsequentialanimationgroup_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsequentialanimationgroup_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsequentialanimationgroup_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/animation/qsequentialanimationgroup_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsettings_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsettings_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsettings_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsettings_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qsettings_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsharedmemory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsharedmemory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsharedmemory_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsharedmemory_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qsharedmemory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsignaleventgenerator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsignaleventgenerator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsignaleventgenerator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsignaleventgenerator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/statemachine/qsignaleventgenerator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsignaltransition_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsignaltransition_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsignaltransition_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsignaltransition_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/statemachine/qsignaltransition_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsimd_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsimd_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsimd_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsimd_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/tools/qsimd_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsimd_x86_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsimd_x86_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsimd_x86_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsimd_x86_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/tools/qsimd_x86_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsimplecodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsimplecodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsimplecodec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsimplecodec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qsimplecodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsjiscodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsjiscodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsjiscodec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsjiscodec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qsjiscodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qstate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qstate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qstate_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qstate_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/statemachine/qstate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qstatemachine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qstatemachine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qstatemachine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qstatemachine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/statemachine/qstatemachine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qstdweb_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qstdweb_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qstdweb_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qstdweb_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/platform/wasm/qstdweb_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qstorageinfo_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qstorageinfo_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qstorageinfo_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qstorageinfo_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qstorageinfo_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qstringalgorithms_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qstringalgorithms_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qstringalgorithms_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qstringalgorithms_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/text/qstringalgorithms_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qstringiterator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qstringiterator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qstringiterator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qstringiterator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/text/qstringiterator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsystemerror_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsystemerror_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsystemerror_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsystemerror_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qsystemerror_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsystemlibrary_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsystemlibrary_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsystemlibrary_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsystemlibrary_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/plugin/qsystemlibrary_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsystemsemaphore_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsystemsemaphore_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qsystemsemaphore_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qsystemsemaphore_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qsystemsemaphore_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qt_pch.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qt_pch.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qt_pch.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qt_pch.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/global/qt_pch.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtemporaryfile_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtemporaryfile_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtemporaryfile_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtemporaryfile_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qtemporaryfile_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtextcodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtextcodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtextcodec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtextcodec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qtextcodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtextstream_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtextstream_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtextstream_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtextstream_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/serialization/qtextstream_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qthread_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qthread_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qthread_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qthread_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/thread/qthread_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qthreadpool_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qthreadpool_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qthreadpool_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qthreadpool_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/thread/qthreadpool_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtimerinfo_unix_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtimerinfo_unix_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtimerinfo_unix_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtimerinfo_unix_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qtimerinfo_unix_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtimezoneprivate_data_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtimezoneprivate_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtimezoneprivate_data_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtimezoneprivate_data_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qtimezoneprivate_data_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtimezoneprivate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtimezoneprivate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtimezoneprivate_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtimezoneprivate_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/time/qtimezoneprivate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtldurl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtldurl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtldurl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtldurl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qtldurl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtools_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtools_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtools_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtools_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/tools/qtools_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtrace_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtrace_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtrace_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtrace_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/global/qtrace_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtranslator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtranslator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtranslator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtranslator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qtranslator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtransposeproxymodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtransposeproxymodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtransposeproxymodel_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtransposeproxymodel_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/itemmodels/qtransposeproxymodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtsciicodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtsciicodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qtsciicodec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qtsciicodec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qtsciicodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qunicodetables_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qunicodetables_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qunicodetables_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qunicodetables_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/text/qunicodetables_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qunicodetools_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qunicodetools_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qunicodetools_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qunicodetools_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/text/qunicodetools_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qurl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qurl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qurl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qurl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qurl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qurltlds_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qurltlds_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qurltlds_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qurltlds_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qurltlds_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qutfcodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qutfcodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qutfcodec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qutfcodec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qutfcodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qvariant_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qvariant_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qvariant_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qvariant_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qvariant_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qvariantanimation_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qvariantanimation_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qvariantanimation_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qvariantanimation_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/animation/qvariantanimation_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qwaitcondition_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qwaitcondition_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qwaitcondition_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qwaitcondition_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/thread/qwaitcondition_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qwindowscodec_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qwindowscodec_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qwindowscodec_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qwindowscodec_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/codecs/qwindowscodec_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qwindowspipereader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qwindowspipereader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qwindowspipereader_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qwindowspipereader_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qwindowspipereader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qwindowspipewriter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qwindowspipewriter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qwindowspipewriter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qwindowspipewriter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/io/qwindowspipewriter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qwineventnotifier_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qwineventnotifier_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qwineventnotifier_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qwineventnotifier_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qwineventnotifier_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qwinregistry_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qwinregistry_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qwinregistry_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qwinregistry_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/kernel/qwinregistry_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qxmlstream_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qxmlstream_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qxmlstream_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qxmlstream_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/serialization/qxmlstream_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qxmlutils_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qxmlutils_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/5.15.8/QtCore/private/qxmlutils_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/5.15.8/QtCore/private/qxmlutils_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/corelib/serialization/qxmlutils_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/headers.pri qtbase-opensource-src-5.15.8+dfsg/include/QtCore/headers.pri --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/headers.pri 2021-03-30 02:27:07.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/headers.pri 2022-11-13 04:40:56.000000000 +0800 @@ -3,4 +3,4 @@ SYNCQT.PRIVATE_HEADER_FILES = animation/qabstractanimation_p.h animation/qanimationgroup_p.h animation/qparallelanimationgroup_p.h animation/qpropertyanimation_p.h animation/qsequentialanimationgroup_p.h animation/qvariantanimation_p.h codecs/cp949codetbl_p.h codecs/qbig5codec_p.h codecs/qeucjpcodec_p.h codecs/qeuckrcodec_p.h codecs/qgb18030codec_p.h codecs/qiconvcodec_p.h codecs/qicucodec_p.h codecs/qisciicodec_p.h codecs/qjiscodec_p.h codecs/qjpunicode_p.h codecs/qlatincodec_p.h codecs/qsimplecodec_p.h codecs/qsjiscodec_p.h codecs/qtextcodec_p.h codecs/qtsciicodec_p.h codecs/qutfcodec_p.h codecs/qwindowscodec_p.h global/minimum-linux_p.h global/qendian_p.h global/qglobal_p.h global/qhooks_p.h global/qlogging_p.h global/qmemory_p.h global/qnumeric_p.h global/qoperatingsystemversion_p.h global/qoperatingsystemversion_win_p.h global/qrandom_p.h global/qt_pch.h global/qtrace_p.h io/qabstractfileengine_p.h io/qdataurl_p.h io/qdebug_p.h io/qdir_p.h io/qfile_p.h io/qfiledevice_p.h io/qfileinfo_p.h io/qfileselector_p.h io/qfilesystemengine_p.h io/qfilesystementry_p.h io/qfilesystemiterator_p.h io/qfilesystemmetadata_p.h io/qfilesystemwatcher_fsevents_p.h io/qfilesystemwatcher_inotify_p.h io/qfilesystemwatcher_kqueue_p.h io/qfilesystemwatcher_p.h io/qfilesystemwatcher_polling_p.h io/qfilesystemwatcher_win_p.h io/qfsfileengine_iterator_p.h io/qfsfileengine_p.h io/qiodevice_p.h io/qipaddress_p.h io/qlockfile_p.h io/qloggingregistry_p.h io/qnoncontiguousbytedevice_p.h io/qprocess_p.h io/qresource_iterator_p.h io/qresource_p.h io/qsavefile_p.h io/qsettings_p.h io/qstorageinfo_p.h io/qtemporaryfile_p.h io/qtldurl_p.h io/qurl_p.h io/qurltlds_p.h io/qwindowspipereader_p.h io/qwindowspipewriter_p.h itemmodels/qabstractitemmodel_p.h itemmodels/qabstractproxymodel_p.h itemmodels/qitemselectionmodel_p.h itemmodels/qtransposeproxymodel_p.h kernel/qabstracteventdispatcher_p.h kernel/qcfsocketnotifier_p.h kernel/qcore_mac_p.h kernel/qcore_unix_p.h kernel/qcoreapplication_p.h kernel/qcorecmdlineargs_p.h kernel/qcoreglobaldata_p.h kernel/qdeadlinetimer_p.h kernel/qeventdispatcher_cf_p.h kernel/qeventdispatcher_glib_p.h kernel/qeventdispatcher_unix_p.h kernel/qeventdispatcher_win_p.h kernel/qeventdispatcher_winrt_p.h kernel/qeventloop_p.h kernel/qfunctions_fake_env_p.h kernel/qfunctions_p.h kernel/qjni_p.h kernel/qjnihelpers_p.h kernel/qmetaobject_moc_p.h kernel/qmetaobject_p.h kernel/qmetaobjectbuilder_p.h kernel/qmetatype_p.h kernel/qmetatypeswitcher_p.h kernel/qobject_p.h kernel/qpoll_p.h kernel/qppsattribute_p.h kernel/qppsattributeprivate_p.h kernel/qppsobject_p.h kernel/qppsobjectprivate_p.h kernel/qsharedmemory_p.h kernel/qsystemerror_p.h kernel/qsystemsemaphore_p.h kernel/qtimerinfo_unix_p.h kernel/qtranslator_p.h kernel/qvariant_p.h kernel/qwineventnotifier_p.h kernel/qwinregistry_p.h mimetypes/qmimedatabase_p.h mimetypes/qmimeglobpattern_p.h mimetypes/qmimemagicrule_p.h mimetypes/qmimemagicrulematcher_p.h mimetypes/qmimeprovider_p.h mimetypes/qmimetype_p.h mimetypes/qmimetypeparser_p.h plugin/qelfparser_p.h plugin/qfactoryloader_p.h plugin/qlibrary_p.h plugin/qmachparser_p.h plugin/qplugin_p.h plugin/qsystemlibrary_p.h serialization/qbinaryjson_p.h serialization/qbinaryjsonarray_p.h serialization/qbinaryjsonobject_p.h serialization/qbinaryjsonvalue_p.h serialization/qcborcommon_p.h serialization/qcborvalue_p.h serialization/qdatastream_p.h serialization/qjson_p.h serialization/qjsonparser_p.h serialization/qjsonwriter_p.h serialization/qtextstream_p.h serialization/qxmlstream_p.h serialization/qxmlutils_p.h statemachine/qabstractstate_p.h statemachine/qabstracttransition_p.h statemachine/qeventtransition_p.h statemachine/qfinalstate_p.h statemachine/qhistorystate_p.h statemachine/qsignaleventgenerator_p.h statemachine/qsignaltransition_p.h statemachine/qstate_p.h statemachine/qstatemachine_p.h text/qbytearray_p.h text/qbytedata_p.h text/qcollator_p.h text/qdoublescanprint_p.h text/qharfbuzz_p.h text/qlocale_data_p.h text/qlocale_p.h text/qlocale_tools_p.h text/qstringalgorithms_p.h text/qstringiterator_p.h text/qunicodetables_p.h text/qunicodetools_p.h thread/qfutex_p.h thread/qfutureinterface_p.h thread/qfuturewatcher_p.h thread/qlocking_p.h thread/qmutex_p.h thread/qorderedmutexlocker_p.h thread/qreadwritelock_p.h thread/qthread_p.h thread/qthreadpool_p.h thread/qwaitcondition_p.h time/qcalendarbackend_p.h time/qcalendarmath_p.h time/qdatetime_p.h time/qdatetimeparser_p.h time/qgregoriancalendar_p.h time/qhijricalendar_data_p.h time/qhijricalendar_p.h time/qislamiccivilcalendar_p.h time/qjalalicalendar_data_p.h time/qjalalicalendar_p.h time/qjuliancalendar_p.h time/qmilankoviccalendar_p.h time/qromancalendar_data_p.h time/qromancalendar_p.h time/qtimezoneprivate_data_p.h time/qtimezoneprivate_p.h tools/qduplicatetracker_p.h tools/qfreelist_p.h tools/qmakearray_p.h tools/qoffsetstringarray_p.h tools/qringbuffer_p.h tools/qscopedpointer_p.h tools/qsimd_p.h tools/qsimd_x86_p.h tools/qtools_p.h platform/wasm/qstdweb_p.h SYNCQT.QPA_HEADER_FILES = SYNCQT.CLEAN_HEADER_FILES = animation/qabstractanimation.h:animation animation/qanimationgroup.h:animation animation/qparallelanimationgroup.h:animation animation/qpauseanimation.h:animation animation/qpropertyanimation.h:animation animation/qsequentialanimationgroup.h:animation animation/qvariantanimation.h:animation codecs/qtextcodec.h:textcodec global/qcompilerdetection.h global/qendian.h global/qflags.h global/qfloat16.h global/qglobal.h global/qglobalstatic.h global/qisenum.h global/qlibraryinfo.h global/qlogging.h global/qnamespace.h global/qnumeric.h global/qoperatingsystemversion.h global/qprocessordetection.h global/qrandom.h global/qsysinfo.h global/qsystemdetection.h global/qtypeinfo.h global/qtypetraits.h global/qversiontagging.h io/qbuffer.h io/qdebug.h io/qdir.h io/qdiriterator.h io/qfile.h io/qfiledevice.h io/qfileinfo.h io/qfileselector.h io/qfilesystemwatcher.h:filesystemwatcher io/qiodevice.h io/qlockfile.h io/qloggingcategory.h io/qprocess.h:processenvironment io/qresource.h io/qsavefile.h io/qsettings.h:settings io/qstandardpaths.h io/qstorageinfo.h io/qtemporarydir.h io/qtemporaryfile.h io/qurl.h io/qurlquery.h itemmodels/qabstractitemmodel.h:itemmodel itemmodels/qabstractproxymodel.h:proxymodel itemmodels/qconcatenatetablesproxymodel.h:concatenatetablesproxymodel itemmodels/qidentityproxymodel.h:identityproxymodel itemmodels/qitemselectionmodel.h:itemmodel itemmodels/qsortfilterproxymodel.h:sortfilterproxymodel itemmodels/qstringlistmodel.h:stringlistmodel itemmodels/qtransposeproxymodel.h:transposeproxymodel kernel/qabstracteventdispatcher.h kernel/qabstractnativeeventfilter.h kernel/qbasictimer.h kernel/qcoreapplication.h kernel/qcoreevent.h kernel/qdeadlinetimer.h kernel/qelapsedtimer.h kernel/qeventloop.h kernel/qfunctions_nacl.h kernel/qfunctions_vxworks.h kernel/qfunctions_winrt.h kernel/qmath.h kernel/qmetaobject.h kernel/qmetatype.h kernel/qmimedata.h kernel/qobject.h kernel/qobjectcleanuphandler.h kernel/qobjectdefs.h kernel/qpointer.h kernel/qsharedmemory.h kernel/qsignalmapper.h kernel/qsocketnotifier.h kernel/qsystemsemaphore.h kernel/qtestsupport_core.h kernel/qtimer.h kernel/qtranslator.h kernel/qvariant.h kernel/qwineventnotifier.h mimetypes/qmimedatabase.h:mimetype mimetypes/qmimetype.h:mimetype plugin/qfactoryinterface.h plugin/qlibrary.h:library plugin/qplugin.h plugin/qpluginloader.h plugin/quuid.h serialization/qcborarray.h serialization/qcborcommon.h serialization/qcbormap.h serialization/qcborstream.h serialization/qcborstreamreader.h:cborstreamreader serialization/qcborstreamwriter.h:cborstreamwriter serialization/qcborvalue.h serialization/qdatastream.h serialization/qjsonarray.h serialization/qjsondocument.h serialization/qjsonobject.h serialization/qjsonvalue.h serialization/qtextstream.h serialization/qxmlstream.h statemachine/qabstractstate.h:statemachine statemachine/qabstracttransition.h:statemachine statemachine/qeventtransition.h:qeventtransition statemachine/qfinalstate.h:statemachine statemachine/qhistorystate.h:statemachine statemachine/qsignaltransition.h:statemachine statemachine/qstate.h:statemachine statemachine/qstatemachine.h:statemachine text/qbytearray.h text/qbytearraylist.h text/qbytearraymatcher.h text/qchar.h text/qcollator.h text/qlocale.h text/qregexp.h text/qregularexpression.h:regularexpression text/qstring.h text/qstringalgorithms.h text/qstringbuilder.h text/qstringlist.h text/qstringliteral.h text/qstringmatcher.h text/qstringview.h text/qtextboundaryfinder.h thread/qatomic.h thread/qbasicatomic.h thread/qexception.h:future thread/qfuture.h:future thread/qfutureinterface.h:future thread/qfuturesynchronizer.h:future thread/qfuturewatcher.h:future thread/qmutex.h thread/qreadwritelock.h thread/qresultstore.h:future thread/qrunnable.h thread/qsemaphore.h:thread thread/qthread.h thread/qthreadpool.h:thread thread/qthreadstorage.h thread/qwaitcondition.h time/qcalendar.h time/qdatetime.h time/qtimezone.h:timezone tools/qalgorithms.h tools/qarraydata.h tools/qarraydataops.h tools/qarraydatapointer.h tools/qbitarray.h tools/qcache.h tools/qcommandlineoption.h:commandlineparser tools/qcommandlineparser.h:commandlineparser tools/qcontainerfwd.h tools/qcontiguouscache.h tools/qcryptographichash.h tools/qeasingcurve.h:easingcurve tools/qhash.h tools/qhashfunctions.h tools/qiterator.h tools/qline.h tools/qlinkedlist.h tools/qlist.h tools/qmap.h tools/qmargins.h tools/qmessageauthenticationcode.h tools/qpair.h tools/qpoint.h tools/qqueue.h tools/qrect.h tools/qrefcount.h tools/qscopedpointer.h tools/qscopedvaluerollback.h tools/qscopeguard.h tools/qset.h tools/qshareddata.h tools/qsharedpointer.h tools/qsize.h tools/qstack.h tools/qtimeline.h:easingcurve tools/qvarlengtharray.h tools/qvector.h tools/qversionnumber.h -SYNCQT.INJECTIONS = src/corelib/global/qconfig.h:qconfig.h:QtConfig src/corelib/global/qconfig_p.h:5.15.3/QtCore/private/qconfig_p.h +SYNCQT.INJECTIONS = src/corelib/global/qconfig.h:qconfig.h:QtConfig src/corelib/global/qconfig_p.h:5.15.8/QtCore/private/qconfig_p.h diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtCore/qtcoreversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtCore/qtcoreversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtCore/qtcoreversion.h 2021-03-30 02:27:07.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtCore/qtcoreversion.h 2022-11-13 04:40:56.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTCORE_VERSION_H #define QT_QTCORE_VERSION_H -#define QTCORE_VERSION_STR "5.15.3" +#define QTCORE_VERSION_STR "5.15.8" -#define QTCORE_VERSION 0x050F03 +#define QTCORE_VERSION 0x050F08 #endif // QT_QTCORE_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/dbus_minimal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/dbus_minimal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/dbus_minimal_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/dbus_minimal_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/dbus_minimal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbus_symbols_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbus_symbols_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbus_symbols_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbus_symbols_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbus_symbols_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusabstractadaptor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusabstractadaptor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusabstractadaptor_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusabstractadaptor_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbusabstractadaptor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusabstractinterface_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusabstractinterface_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusabstractinterface_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusabstractinterface_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbusabstractinterface_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusargument_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusargument_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusargument_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusargument_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbusargument_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusconnection_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusconnection_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusconnection_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusconnection_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbusconnection_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusconnectionmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusconnectionmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusconnectionmanager_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusconnectionmanager_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbusconnectionmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbuscontext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbuscontext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbuscontext_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbuscontext_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbuscontext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusintegrator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusintegrator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusintegrator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusintegrator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbusintegrator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusinterface_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusinterface_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusinterface_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusinterface_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbusinterface_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusintrospection_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusintrospection_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusintrospection_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusintrospection_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbusintrospection_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusmessage_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusmessage_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusmessage_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusmessage_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbusmessage_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusmetaobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusmetaobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusmetaobject_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusmetaobject_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbusmetaobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusmetatype_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusmetatype_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusmetatype_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusmetatype_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbusmetatype_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbuspendingcall_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbuspendingcall_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbuspendingcall_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbuspendingcall_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbuspendingcall_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusthreaddebug_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusthreaddebug_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusthreaddebug_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusthreaddebug_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbusthreaddebug_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusutil_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusutil_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusutil_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusutil_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbusutil_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusxmlparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusxmlparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusxmlparser_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qdbusxmlparser_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qdbusxmlparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qtdbusglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qtdbusglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.3/QtDBus/private/qtdbusglobal_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.3/QtDBus/private/qtdbusglobal_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/dbus/qtdbusglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/dbus_minimal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/dbus_minimal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/dbus_minimal_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/dbus_minimal_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/dbus_minimal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbus_symbols_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbus_symbols_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbus_symbols_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbus_symbols_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbus_symbols_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusabstractadaptor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusabstractadaptor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusabstractadaptor_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusabstractadaptor_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbusabstractadaptor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusabstractinterface_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusabstractinterface_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusabstractinterface_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusabstractinterface_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbusabstractinterface_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusargument_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusargument_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusargument_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusargument_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbusargument_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusconnection_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusconnection_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusconnection_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusconnection_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbusconnection_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusconnectionmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusconnectionmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusconnectionmanager_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusconnectionmanager_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbusconnectionmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbuscontext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbuscontext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbuscontext_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbuscontext_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbuscontext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusintegrator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusintegrator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusintegrator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusintegrator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbusintegrator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusinterface_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusinterface_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusinterface_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusinterface_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbusinterface_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusintrospection_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusintrospection_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusintrospection_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusintrospection_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbusintrospection_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusmessage_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusmessage_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusmessage_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusmessage_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbusmessage_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusmetaobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusmetaobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusmetaobject_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusmetaobject_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbusmetaobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusmetatype_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusmetatype_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusmetatype_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusmetatype_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbusmetatype_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbuspendingcall_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbuspendingcall_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbuspendingcall_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbuspendingcall_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbuspendingcall_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusthreaddebug_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusthreaddebug_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusthreaddebug_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusthreaddebug_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbusthreaddebug_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusutil_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusutil_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusutil_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusutil_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbusutil_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusxmlparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusxmlparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusxmlparser_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qdbusxmlparser_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qdbusxmlparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qtdbusglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qtdbusglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/5.15.8/QtDBus/private/qtdbusglobal_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/5.15.8/QtDBus/private/qtdbusglobal_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/dbus/qtdbusglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/qtdbusversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/qtdbusversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDBus/qtdbusversion.h 2021-03-30 02:27:07.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDBus/qtdbusversion.h 2022-11-13 04:40:57.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTDBUS_VERSION_H #define QT_QTDBUS_VERSION_H -#define QTDBUS_VERSION_STR "5.15.3" +#define QTDBUS_VERSION_STR "5.15.8" -#define QTDBUS_VERSION 0x050F03 +#define QTDBUS_VERSION 0x050F08 #endif // QT_QTDBUS_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_dummy_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_dummy_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_dummy_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_dummy_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/devicediscovery/qdevicediscovery_dummy_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/devicediscovery/qdevicediscovery_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_static_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_static_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_static_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_static_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/devicediscovery/qdevicediscovery_static_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_udev_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_udev_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_udev_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.3/QtDeviceDiscoverySupport/private/qdevicediscovery_udev_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/devicediscovery/qdevicediscovery_udev_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_dummy_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_dummy_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_dummy_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_dummy_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/devicediscovery/qdevicediscovery_dummy_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/devicediscovery/qdevicediscovery_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_static_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_static_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_static_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_static_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/devicediscovery/qdevicediscovery_static_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_udev_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_udev_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_udev_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/5.15.8/QtDeviceDiscoverySupport/private/qdevicediscovery_udev_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/devicediscovery/qdevicediscovery_udev_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/qtdevicediscoverysupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/qtdevicediscoverysupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtDeviceDiscoverySupport/qtdevicediscoverysupportversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtDeviceDiscoverySupport/qtdevicediscoverysupportversion.h 2022-11-13 04:40:55.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTDEVICEDISCOVERYSUPPORT_VERSION_H #define QT_QTDEVICEDISCOVERYSUPPORT_VERSION_H -#define QTDEVICEDISCOVERYSUPPORT_VERSION_STR "5.15.3" +#define QTDEVICEDISCOVERYSUPPORT_VERSION_STR "5.15.8" -#define QTDEVICEDISCOVERYSUPPORT_VERSION 0x050F03 +#define QTDEVICEDISCOVERYSUPPORT_VERSION 0x050F08 #endif // QT_QTDEVICEDISCOVERYSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEdidSupport/5.15.3/QtEdidSupport/private/qedidparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEdidSupport/5.15.3/QtEdidSupport/private/qedidparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEdidSupport/5.15.3/QtEdidSupport/private/qedidparser_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEdidSupport/5.15.3/QtEdidSupport/private/qedidparser_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/edid/qedidparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEdidSupport/5.15.3/QtEdidSupport/private/qedidvendortable_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEdidSupport/5.15.3/QtEdidSupport/private/qedidvendortable_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEdidSupport/5.15.3/QtEdidSupport/private/qedidvendortable_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEdidSupport/5.15.3/QtEdidSupport/private/qedidvendortable_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/edid/qedidvendortable_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEdidSupport/5.15.8/QtEdidSupport/private/qedidparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEdidSupport/5.15.8/QtEdidSupport/private/qedidparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEdidSupport/5.15.8/QtEdidSupport/private/qedidparser_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEdidSupport/5.15.8/QtEdidSupport/private/qedidparser_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/edid/qedidparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEdidSupport/5.15.8/QtEdidSupport/private/qedidvendortable_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEdidSupport/5.15.8/QtEdidSupport/private/qedidvendortable_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEdidSupport/5.15.8/QtEdidSupport/private/qedidvendortable_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEdidSupport/5.15.8/QtEdidSupport/private/qedidvendortable_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/edid/qedidvendortable_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEdidSupport/qtedidsupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtEdidSupport/qtedidsupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEdidSupport/qtedidsupportversion.h 2021-03-30 02:27:07.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEdidSupport/qtedidsupportversion.h 2022-11-13 04:40:55.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTEDIDSUPPORT_VERSION_H #define QT_QTEDIDSUPPORT_VERSION_H -#define QTEDIDSUPPORT_VERSION_STR "5.15.3" +#define QTEDIDSUPPORT_VERSION_STR "5.15.8" -#define QTEDIDSUPPORT_VERSION 0x050F03 +#define QTEDIDSUPPORT_VERSION 0x050F08 #endif // QT_QTEDIDSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfscontext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfscontext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfscontext_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfscontext_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/plugins/platforms/eglfs/api/qeglfscontext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfscursor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfscursor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfscursor_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfscursor_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/plugins/platforms/eglfs/api/qeglfscursor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsdeviceintegration_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsdeviceintegration_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsdeviceintegration_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsdeviceintegration_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsglobal_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsglobal_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/plugins/platforms/eglfs/api/qeglfsglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfshooks_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfshooks_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfshooks_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfshooks_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/plugins/platforms/eglfs/api/qeglfshooks_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsintegration_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsintegration_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsintegration_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsintegration_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/plugins/platforms/eglfs/api/qeglfsintegration_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsoffscreenwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsoffscreenwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsoffscreenwindow_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsoffscreenwindow_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/plugins/platforms/eglfs/api/qeglfsoffscreenwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsscreen_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsscreen_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsscreen_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsscreen_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/plugins/platforms/eglfs/api/qeglfsscreen_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsvulkaninstance_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsvulkaninstance_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsvulkaninstance_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsvulkaninstance_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkaninstance_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsvulkanwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsvulkanwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsvulkanwindow_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfsvulkanwindow_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkanwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfswindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfswindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfswindow_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.3/QtEglFSDeviceIntegration/private/qeglfswindow_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/plugins/platforms/eglfs/api/qeglfswindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfscontext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfscontext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfscontext_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfscontext_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/plugins/platforms/eglfs/api/qeglfscontext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfscursor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfscursor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfscursor_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfscursor_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/plugins/platforms/eglfs/api/qeglfscursor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsdeviceintegration_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsdeviceintegration_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsdeviceintegration_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsdeviceintegration_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsglobal_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsglobal_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/plugins/platforms/eglfs/api/qeglfsglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfshooks_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfshooks_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfshooks_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfshooks_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/plugins/platforms/eglfs/api/qeglfshooks_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsintegration_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsintegration_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsintegration_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsintegration_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/plugins/platforms/eglfs/api/qeglfsintegration_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsoffscreenwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsoffscreenwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsoffscreenwindow_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsoffscreenwindow_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/plugins/platforms/eglfs/api/qeglfsoffscreenwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsscreen_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsscreen_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsscreen_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsscreen_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/plugins/platforms/eglfs/api/qeglfsscreen_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsvulkaninstance_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsvulkaninstance_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsvulkaninstance_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsvulkaninstance_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkaninstance_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsvulkanwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsvulkanwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsvulkanwindow_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfsvulkanwindow_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/plugins/platforms/eglfs/api/vulkan/qeglfsvulkanwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfswindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfswindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfswindow_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/5.15.8/QtEglFSDeviceIntegration/private/qeglfswindow_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/plugins/platforms/eglfs/api/qeglfswindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/qteglfsdeviceintegrationversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/qteglfsdeviceintegrationversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglFSDeviceIntegration/qteglfsdeviceintegrationversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglFSDeviceIntegration/qteglfsdeviceintegrationversion.h 2022-11-13 04:40:55.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTEGLFSDEVICEINTEGRATION_VERSION_H #define QT_QTEGLFSDEVICEINTEGRATION_VERSION_H -#define QTEGLFSDEVICEINTEGRATION_VERSION_STR "5.15.3" +#define QTEGLFSDEVICEINTEGRATION_VERSION_STR "5.15.8" -#define QTEGLFSDEVICEINTEGRATION_VERSION 0x050F03 +#define QTEGLFSDEVICEINTEGRATION_VERSION 0x050F08 #endif // QT_QTEGLFSDEVICEINTEGRATION_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglconvenience_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglconvenience_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglconvenience_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglconvenience_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/eglconvenience/qeglconvenience_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglpbuffer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglpbuffer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglpbuffer_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglpbuffer_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/eglconvenience/qeglpbuffer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglplatformcontext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglplatformcontext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglplatformcontext_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglplatformcontext_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/eglconvenience/qeglplatformcontext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglstreamconvenience_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglstreamconvenience_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglstreamconvenience_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qeglstreamconvenience_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/eglconvenience/qeglstreamconvenience_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qt_egl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qt_egl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qt_egl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qt_egl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/eglconvenience/qt_egl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qxlibeglintegration_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qxlibeglintegration_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qxlibeglintegration_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.3/QtEglSupport/private/qxlibeglintegration_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/eglconvenience/qxlibeglintegration_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglconvenience_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglconvenience_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglconvenience_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglconvenience_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/eglconvenience/qeglconvenience_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglpbuffer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglpbuffer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglpbuffer_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglpbuffer_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/eglconvenience/qeglpbuffer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglplatformcontext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglplatformcontext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglplatformcontext_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglplatformcontext_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/eglconvenience/qeglplatformcontext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglstreamconvenience_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglstreamconvenience_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglstreamconvenience_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qeglstreamconvenience_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/eglconvenience/qeglstreamconvenience_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qt_egl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qt_egl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qt_egl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qt_egl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/eglconvenience/qt_egl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qxlibeglintegration_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qxlibeglintegration_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qxlibeglintegration_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/5.15.8/QtEglSupport/private/qxlibeglintegration_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/eglconvenience/qxlibeglintegration_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/qteglsupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/qteglsupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEglSupport/qteglsupportversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEglSupport/qteglsupportversion.h 2022-11-13 04:40:56.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTEGLSUPPORT_VERSION_H #define QT_QTEGLSUPPORT_VERSION_H -#define QTEGLSUPPORT_VERSION_STR "5.15.3" +#define QTEGLSUPPORT_VERSION_STR "5.15.8" -#define QTEGLSUPPORT_VERSION 0x050F03 +#define QTEGLSUPPORT_VERSION 0x050F08 #endif // QT_QTEGLSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qeventdispatcher_glib_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qeventdispatcher_glib_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qeventdispatcher_glib_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qeventdispatcher_glib_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/eventdispatchers/qeventdispatcher_glib_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qgenericunixeventdispatcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qgenericunixeventdispatcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qgenericunixeventdispatcher_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qgenericunixeventdispatcher_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/eventdispatchers/qgenericunixeventdispatcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qunixeventdispatcher_qpa_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qunixeventdispatcher_qpa_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qunixeventdispatcher_qpa_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qunixeventdispatcher_qpa_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/eventdispatchers/qunixeventdispatcher_qpa_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qwindowsguieventdispatcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qwindowsguieventdispatcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qwindowsguieventdispatcher_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.3/QtEventDispatcherSupport/private/qwindowsguieventdispatcher_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/eventdispatchers/qwindowsguieventdispatcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qeventdispatcher_glib_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qeventdispatcher_glib_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qeventdispatcher_glib_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qeventdispatcher_glib_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/eventdispatchers/qeventdispatcher_glib_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qgenericunixeventdispatcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qgenericunixeventdispatcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qgenericunixeventdispatcher_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qgenericunixeventdispatcher_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/eventdispatchers/qgenericunixeventdispatcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qunixeventdispatcher_qpa_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qunixeventdispatcher_qpa_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qunixeventdispatcher_qpa_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qunixeventdispatcher_qpa_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/eventdispatchers/qunixeventdispatcher_qpa_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qwindowsguieventdispatcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qwindowsguieventdispatcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qwindowsguieventdispatcher_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qwindowsguieventdispatcher_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/eventdispatchers/qwindowsguieventdispatcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/qteventdispatchersupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/qteventdispatchersupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtEventDispatcherSupport/qteventdispatchersupportversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtEventDispatcherSupport/qteventdispatchersupportversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTEVENTDISPATCHERSUPPORT_VERSION_H #define QT_QTEVENTDISPATCHERSUPPORT_VERSION_H -#define QTEVENTDISPATCHERSUPPORT_VERSION_STR "5.15.3" +#define QTEVENTDISPATCHERSUPPORT_VERSION_STR "5.15.8" -#define QTEVENTDISPATCHERSUPPORT_VERSION 0x050F03 +#define QTEVENTDISPATCHERSUPPORT_VERSION 0x050F08 #endif // QT_QTEVENTDISPATCHERSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbbackingstore_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbbackingstore_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbbackingstore_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbbackingstore_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fbconvenience/qfbbackingstore_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbcursor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbcursor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbcursor_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbcursor_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fbconvenience/qfbcursor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbscreen_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbscreen_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbscreen_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbscreen_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fbconvenience/qfbscreen_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbvthandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbvthandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbvthandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbvthandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fbconvenience/qfbvthandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbwindow_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.3/QtFbSupport/private/qfbwindow_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fbconvenience/qfbwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbbackingstore_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbbackingstore_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbbackingstore_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbbackingstore_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fbconvenience/qfbbackingstore_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbcursor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbcursor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbcursor_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbcursor_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fbconvenience/qfbcursor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbscreen_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbscreen_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbscreen_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbscreen_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fbconvenience/qfbscreen_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbvthandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbvthandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbvthandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbvthandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fbconvenience/qfbvthandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbwindow_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/5.15.8/QtFbSupport/private/qfbwindow_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fbconvenience/qfbwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/qtfbsupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/qtfbsupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFbSupport/qtfbsupportversion.h 2021-03-30 02:27:04.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFbSupport/qtfbsupportversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTFBSUPPORT_VERSION_H #define QT_QTFBSUPPORT_VERSION_H -#define QTFBSUPPORT_VERSION_STR "5.15.3" +#define QTFBSUPPORT_VERSION_STR "5.15.8" -#define QTFBSUPPORT_VERSION 0x050F03 +#define QTFBSUPPORT_VERSION 0x050F08 #endif // QT_QTFBSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qcoretextfontdatabase_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qcoretextfontdatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qcoretextfontdatabase_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qcoretextfontdatabase_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontconfigdatabase_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontconfigdatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontconfigdatabase_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontconfigdatabase_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontengine_coretext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontengine_coretext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontengine_coretext_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontengine_coretext_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontengine_ft_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontengine_ft_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontengine_ft_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontengine_ft_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fontdatabases/freetype/qfontengine_ft_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontenginemultifontconfig_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontenginemultifontconfig_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontenginemultifontconfig_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfontenginemultifontconfig_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfreetypefontdatabase_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfreetypefontdatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfreetypefontdatabase_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qfreetypefontdatabase_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fontdatabases/freetype/qfreetypefontdatabase_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qgenericunixfontdatabase_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qgenericunixfontdatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qgenericunixfontdatabase_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qgenericunixfontdatabase_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fontdatabases/genericunix/qgenericunixfontdatabase_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontdatabase_ft_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontdatabase_ft_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontdatabase_ft_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontdatabase_ft_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontdatabase_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontdatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontdatabase_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontdatabase_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fontdatabases/windows/qwindowsfontengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontenginedirectwrite_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontenginedirectwrite_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontenginedirectwrite_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsfontenginedirectwrite_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsnativeimage_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsnativeimage_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsnativeimage_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwindowsnativeimage_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fontdatabases/windows/qwindowsnativeimage_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwinrtfontdatabase_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwinrtfontdatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwinrtfontdatabase_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.3/QtFontDatabaseSupport/private/qwinrtfontdatabase_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/fontdatabases/winrt/qwinrtfontdatabase_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qcoretextfontdatabase_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qcoretextfontdatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qcoretextfontdatabase_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qcoretextfontdatabase_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontconfigdatabase_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontconfigdatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontconfigdatabase_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontconfigdatabase_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontengine_coretext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontengine_coretext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontengine_coretext_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontengine_coretext_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontengine_ft_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontengine_ft_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontengine_ft_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontengine_ft_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fontdatabases/freetype/qfontengine_ft_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontenginemultifontconfig_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontenginemultifontconfig_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontenginemultifontconfig_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfontenginemultifontconfig_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfreetypefontdatabase_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfreetypefontdatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfreetypefontdatabase_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qfreetypefontdatabase_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fontdatabases/freetype/qfreetypefontdatabase_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qgenericunixfontdatabase_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qgenericunixfontdatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qgenericunixfontdatabase_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qgenericunixfontdatabase_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fontdatabases/genericunix/qgenericunixfontdatabase_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontdatabase_ft_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontdatabase_ft_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontdatabase_ft_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontdatabase_ft_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontdatabase_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontdatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontdatabase_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontdatabase_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fontdatabases/windows/qwindowsfontengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontenginedirectwrite_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontenginedirectwrite_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontenginedirectwrite_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsfontenginedirectwrite_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsnativeimage_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsnativeimage_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsnativeimage_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwindowsnativeimage_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fontdatabases/windows/qwindowsnativeimage_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwinrtfontdatabase_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwinrtfontdatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwinrtfontdatabase_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/5.15.8/QtFontDatabaseSupport/private/qwinrtfontdatabase_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/fontdatabases/winrt/qwinrtfontdatabase_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/qtfontdatabasesupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/qtfontdatabasesupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtFontDatabaseSupport/qtfontdatabasesupportversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtFontDatabaseSupport/qtfontdatabasesupportversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTFONTDATABASESUPPORT_VERSION_H #define QT_QTFONTDATABASESUPPORT_VERSION_H -#define QTFONTDATABASESUPPORT_VERSION_STR "5.15.3" +#define QTFONTDATABASESUPPORT_VERSION_STR "5.15.8" -#define QTFONTDATABASESUPPORT_VERSION 0x050F03 +#define QTFONTDATABASESUPPORT_VERSION 0x050F08 #endif // QT_QTFONTDATABASESUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGlxSupport/5.15.3/QtGlxSupport/private/qglxconvenience_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGlxSupport/5.15.3/QtGlxSupport/private/qglxconvenience_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGlxSupport/5.15.3/QtGlxSupport/private/qglxconvenience_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGlxSupport/5.15.3/QtGlxSupport/private/qglxconvenience_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/glxconvenience/qglxconvenience_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGlxSupport/5.15.8/QtGlxSupport/private/qglxconvenience_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGlxSupport/5.15.8/QtGlxSupport/private/qglxconvenience_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGlxSupport/5.15.8/QtGlxSupport/private/qglxconvenience_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGlxSupport/5.15.8/QtGlxSupport/private/qglxconvenience_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/glxconvenience/qglxconvenience_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGlxSupport/qtglxsupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtGlxSupport/qtglxsupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGlxSupport/qtglxsupportversion.h 2021-03-30 02:27:04.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGlxSupport/qtglxsupportversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTGLXSUPPORT_VERSION_H #define QT_QTGLXSUPPORT_VERSION_H -#define QTGLXSUPPORT_VERSION_STR "5.15.3" +#define QTGLXSUPPORT_VERSION_STR "5.15.8" -#define QTGLXSUPPORT_VERSION 0x050F03 +#define QTGLXSUPPORT_VERSION 0x050F08 #endif // QT_QTGLXSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGraphicsSupport/5.15.3/QtGraphicsSupport/private/qrasterbackingstore_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGraphicsSupport/5.15.3/QtGraphicsSupport/private/qrasterbackingstore_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGraphicsSupport/5.15.3/QtGraphicsSupport/private/qrasterbackingstore_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGraphicsSupport/5.15.3/QtGraphicsSupport/private/qrasterbackingstore_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/graphics/qrasterbackingstore_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGraphicsSupport/5.15.8/QtGraphicsSupport/private/qrasterbackingstore_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGraphicsSupport/5.15.8/QtGraphicsSupport/private/qrasterbackingstore_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGraphicsSupport/5.15.8/QtGraphicsSupport/private/qrasterbackingstore_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGraphicsSupport/5.15.8/QtGraphicsSupport/private/qrasterbackingstore_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/graphics/qrasterbackingstore_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGraphicsSupport/qtgraphicssupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtGraphicsSupport/qtgraphicssupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGraphicsSupport/qtgraphicssupportversion.h 2021-03-30 02:27:04.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGraphicsSupport/qtgraphicssupportversion.h 2022-11-13 04:40:56.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTGRAPHICSSUPPORT_VERSION_H #define QT_QTGRAPHICSSUPPORT_VERSION_H -#define QTGRAPHICSSUPPORT_VERSION_STR "5.15.3" +#define QTGRAPHICSSUPPORT_VERSION_STR "5.15.8" -#define QTGRAPHICSSUPPORT_VERSION 0x050F03 +#define QTGRAPHICSSUPPORT_VERSION 0x050F08 #endif // QT_QTGRAPHICSSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/cs_tdr_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/cs_tdr_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/cs_tdr_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/cs_tdr_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/cs_tdr_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qabstractlayoutstyleinfo_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qabstractlayoutstyleinfo_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qabstractlayoutstyleinfo_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qabstractlayoutstyleinfo_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qabstractlayoutstyleinfo_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qabstracttextdocumentlayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qabstracttextdocumentlayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qabstracttextdocumentlayout_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qabstracttextdocumentlayout_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qabstracttextdocumentlayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qaccessiblecache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qaccessiblecache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qaccessiblecache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qaccessiblecache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/accessible/qaccessiblecache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qastchandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qastchandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qastchandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qastchandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qastchandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qbezier_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qbezier_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qbezier_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qbezier_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qbezier_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qblendfunctions_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qblendfunctions_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qblendfunctions_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qblendfunctions_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qblendfunctions_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qblittable_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qblittable_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qblittable_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qblittable_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qblittable_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qbmphandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qbmphandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qbmphandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qbmphandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qbmphandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolor_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolor_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qcolor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolormatrix_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolormatrix_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolormatrix_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolormatrix_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qcolormatrix_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolorspace_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolorspace_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolorspace_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolorspace_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qcolorspace_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortransferfunction_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortransferfunction_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortransferfunction_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortransferfunction_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qcolortransferfunction_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortransfertable_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortransfertable_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortransfertable_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortransfertable_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qcolortransfertable_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortransform_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortransform_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortransform_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortransform_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qcolortransform_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortrc_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortrc_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortrc_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortrc_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qcolortrc_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortrclut_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortrclut_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortrclut_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcolortrclut_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qcolortrclut_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcoregraphics_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcoregraphics_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcoregraphics_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcoregraphics_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qcoregraphics_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcosmeticstroker_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcosmeticstroker_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcosmeticstroker_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcosmeticstroker_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qcosmeticstroker_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcssparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcssparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcssparser_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcssparser_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qcssparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcssutil_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcssutil_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcssutil_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcssutil_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qcssutil_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcursor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcursor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qcursor_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qcursor_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qcursor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdatabuffer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdatabuffer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdatabuffer_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdatabuffer_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qdatabuffer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdistancefield_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdistancefield_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdistancefield_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdistancefield_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qdistancefield_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdnd_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdnd_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdnd_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdnd_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qdnd_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_mips_dsp_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_mips_dsp_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_mips_dsp_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_mips_dsp_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qdrawhelper_mips_dsp_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_neon_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_neon_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_neon_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_neon_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qdrawhelper_neon_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qdrawhelper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_x86_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_x86_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_x86_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawhelper_x86_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qdrawhelper_x86_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawingprimitive_sse2_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawingprimitive_sse2_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawingprimitive_sse2_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qdrawingprimitive_sse2_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qdrawingprimitive_sse2_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qemulationpaintengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qemulationpaintengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qemulationpaintengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qemulationpaintengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qemulationpaintengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qevent_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qevent_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qevent_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qevent_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qevent_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qfixed_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qfixed_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qfixed_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qfixed_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qfixed_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qfont_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qfont_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qfont_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qfont_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qfont_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qfontengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qfontengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qfontengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qfontengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qfontengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qfontengine_qpf2_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qfontengine_qpf2_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qfontengine_qpf2_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qfontengine_qpf2_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qfontengine_qpf2_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qfontengineglyphcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qfontengineglyphcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qfontengineglyphcache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qfontengineglyphcache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qfontengineglyphcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qfontsubset_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qfontsubset_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qfontsubset_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qfontsubset_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qfontsubset_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qfragmentmap_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qfragmentmap_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qfragmentmap_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qfragmentmap_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qfragmentmap_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qglyphrun_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qglyphrun_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qglyphrun_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qglyphrun_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qglyphrun_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qgrayraster_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qgrayraster_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qgrayraster_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qgrayraster_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qgrayraster_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qgridlayoutengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qgridlayoutengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qgridlayoutengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qgridlayoutengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qgridlayoutengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qguiapplication_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qguiapplication_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qguiapplication_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qguiapplication_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qguiapplication_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qharfbuzzng_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qharfbuzzng_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qharfbuzzng_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qharfbuzzng_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qharfbuzzng_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qhexstring_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qhexstring_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qhexstring_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qhexstring_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qhexstring_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qhighdpiscaling_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qhighdpiscaling_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qhighdpiscaling_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qhighdpiscaling_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qhighdpiscaling_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qicc_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qicc_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qicc_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qicc_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qicc_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qicon_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qicon_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qicon_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qicon_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qicon_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qiconloader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qiconloader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qiconloader_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qiconloader_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qiconloader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qimage_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qimage_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qimage_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qimage_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qimage_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qimagepixmapcleanuphooks_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qimagepixmapcleanuphooks_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qimagepixmapcleanuphooks_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qimagepixmapcleanuphooks_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qimagepixmapcleanuphooks_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qimagereaderwriterhelpers_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qimagereaderwriterhelpers_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qimagereaderwriterhelpers_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qimagereaderwriterhelpers_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qimagereaderwriterhelpers_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qimagescale_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qimagescale_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qimagescale_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qimagescale_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qimagescale_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qinputcontrol_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qinputcontrol_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qinputcontrol_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qinputcontrol_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qinputcontrol_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qinputdevicemanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qinputdevicemanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qinputdevicemanager_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qinputdevicemanager_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qinputdevicemanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qinputdevicemanager_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qinputdevicemanager_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qinputdevicemanager_p_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qinputdevicemanager_p_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qinputdevicemanager_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qinputmethod_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qinputmethod_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qinputmethod_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qinputmethod_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qinputmethod_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qinternalmimedata_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qinternalmimedata_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qinternalmimedata_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qinternalmimedata_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qinternalmimedata_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qkeymapper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qkeymapper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qkeymapper_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qkeymapper_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qkeymapper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qkeysequence_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qkeysequence_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qkeysequence_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qkeysequence_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qkeysequence_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qktxhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qktxhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qktxhandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qktxhandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qktxhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qlayoutpolicy_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qlayoutpolicy_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qlayoutpolicy_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qlayoutpolicy_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qlayoutpolicy_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qmath_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qmath_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qmath_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qmath_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qmath_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qmemrotate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qmemrotate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qmemrotate_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qmemrotate_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qmemrotate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopengl2pexvertexarray_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopengl2pexvertexarray_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopengl2pexvertexarray_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopengl2pexvertexarray_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopengl2pexvertexarray_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopengl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopengl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopengl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopengl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopengl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglcontext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglcontext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglcontext_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglcontext_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qopenglcontext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglcustomshaderstage_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglcustomshaderstage_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglcustomshaderstage_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglcustomshaderstage_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopenglcustomshaderstage_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglengineshadermanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglengineshadermanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglengineshadermanager_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglengineshadermanager_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopenglengineshadermanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglengineshadersource_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglengineshadersource_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglengineshadersource_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglengineshadersource_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopenglengineshadersource_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglextensions_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglextensions_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglextensions_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglextensions_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopenglextensions_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglframebufferobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglframebufferobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglframebufferobject_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglframebufferobject_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopenglframebufferobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglgradientcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglgradientcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglgradientcache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglgradientcache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopenglgradientcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglpaintdevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglpaintdevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglpaintdevice_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglpaintdevice_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopenglpaintdevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglpaintengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglpaintengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglpaintengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglpaintengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopenglpaintengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglprogrambinarycache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglprogrambinarycache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglprogrambinarycache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglprogrambinarycache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopenglprogrambinarycache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglqueryhelper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglqueryhelper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglqueryhelper_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglqueryhelper_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopenglqueryhelper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglshadercache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglshadercache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglshadercache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglshadercache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopenglshadercache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltexture_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltexture_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltexture_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltexture_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopengltexture_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltexturecache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltexturecache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltexturecache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltexturecache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopengltexturecache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltextureglyphcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltextureglyphcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltextureglyphcache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltextureglyphcache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopengltextureglyphcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltexturehelper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltexturehelper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltexturehelper_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltexturehelper_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopengltexturehelper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltextureuploader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltextureuploader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltextureuploader_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopengltextureuploader_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopengltextureuploader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglversionfunctionsfactory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglversionfunctionsfactory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglversionfunctionsfactory_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglversionfunctionsfactory_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopenglversionfunctionsfactory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglvertexarrayobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglvertexarrayobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglvertexarrayobject_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qopenglvertexarrayobject_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/opengl/qopenglvertexarrayobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qoutlinemapper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qoutlinemapper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qoutlinemapper_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qoutlinemapper_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qoutlinemapper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpagedpaintdevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpagedpaintdevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpagedpaintdevice_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpagedpaintdevice_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qpagedpaintdevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintdevicewindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintdevicewindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintdevicewindow_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintdevicewindow_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qpaintdevicewindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_blitter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_blitter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_blitter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_blitter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qpaintengine_blitter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qpaintengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_pic_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_pic_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_pic_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_pic_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qpaintengine_pic_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_raster_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_raster_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_raster_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengine_raster_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qpaintengine_raster_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengineex_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengineex_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengineex_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpaintengineex_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qpaintengineex_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpainter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpainter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpainter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpainter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qpainter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpainterpath_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpainterpath_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpainterpath_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpainterpath_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qpainterpath_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpathclipper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpathclipper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpathclipper_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpathclipper_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qpathclipper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpathsimplifier_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpathsimplifier_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpathsimplifier_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpathsimplifier_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qpathsimplifier_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpdf_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpdf_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpdf_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpdf_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qpdf_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpen_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpen_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpen_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpen_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qpen_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpicture_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpicture_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpicture_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpicture_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qpicture_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpixmap_blitter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpixmap_blitter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpixmap_blitter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpixmap_blitter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qpixmap_blitter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpixmap_raster_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpixmap_raster_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpixmap_raster_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpixmap_raster_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qpixmap_raster_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpixmapcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpixmapcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpixmapcache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpixmapcache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qpixmapcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpkmhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpkmhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpkmhandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpkmhandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qpkmhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpnghandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpnghandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpnghandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpnghandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qpnghandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpolygonclipper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpolygonclipper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qpolygonclipper_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qpolygonclipper_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qpolygonclipper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qppmhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qppmhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qppmhandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qppmhandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qppmhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrasterdefs_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrasterdefs_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrasterdefs_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrasterdefs_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qrasterdefs_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrasterizer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrasterizer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrasterizer_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrasterizer_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qrasterizer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrawfont_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrawfont_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrawfont_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrawfont_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qrawfont_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrbtree_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrbtree_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrbtree_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrbtree_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qrbtree_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrgba64_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrgba64_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrgba64_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrgba64_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qrgba64_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhi_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhi_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhi_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhi_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhi_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhi_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhi_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhi_p_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhi_p_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhi_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhid3d11_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhid3d11_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhid3d11_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhid3d11_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhid3d11_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhid3d11_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhid3d11_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhid3d11_p_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhid3d11_p_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhid3d11_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhigles2_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhigles2_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhigles2_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhigles2_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhigles2_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhigles2_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhigles2_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhigles2_p_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhigles2_p_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhigles2_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhimetal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhimetal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhimetal_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhimetal_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhimetal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhimetal_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhimetal_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhimetal_p_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhimetal_p_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhimetal_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhinull_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhinull_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhinull_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhinull_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhinull_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhinull_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhinull_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhinull_p_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhinull_p_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhinull_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhiprofiler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhiprofiler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhiprofiler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhiprofiler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhiprofiler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhiprofiler_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhiprofiler_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhiprofiler_p_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhiprofiler_p_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhiprofiler_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhivulkan_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhivulkan_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhivulkan_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhivulkan_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhivulkan_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhivulkan_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhivulkan_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhivulkan_p_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhivulkan_p_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhivulkan_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhivulkanext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhivulkanext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qrhivulkanext_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qrhivulkanext_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qrhivulkanext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qscreen_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qscreen_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qscreen_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qscreen_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qscreen_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qsessionmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qsessionmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qsessionmanager_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qsessionmanager_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qsessionmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshader_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshader_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qshader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshader_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshader_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshader_p_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshader_p_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qshader_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderdescription_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderdescription_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderdescription_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderdescription_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qshaderdescription_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderdescription_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderdescription_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderdescription_p_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderdescription_p_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/rhi/qshaderdescription_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderformat_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderformat_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderformat_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderformat_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qshaderformat_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshadergenerator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshadergenerator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshadergenerator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshadergenerator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qshadergenerator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshadergraph_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshadergraph_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshadergraph_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshadergraph_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qshadergraph_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshadergraphloader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshadergraphloader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshadergraphloader_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshadergraphloader_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qshadergraphloader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderlanguage_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderlanguage_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderlanguage_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshaderlanguage_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qshaderlanguage_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshadernode_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshadernode_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshadernode_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshadernode_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qshadernode_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshadernodeport_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshadernodeport_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshadernodeport_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshadernodeport_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qshadernodeport_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshadernodesloader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshadernodesloader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshadernodesloader_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshadernodesloader_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qshadernodesloader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshapedpixmapdndwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshapedpixmapdndwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshapedpixmapdndwindow_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshapedpixmapdndwindow_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qshapedpixmapdndwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshortcutmap_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshortcutmap_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qshortcutmap_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qshortcutmap_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qshortcutmap_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qsimpledrag_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qsimpledrag_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qsimpledrag_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qsimpledrag_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qsimpledrag_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qstandarditemmodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qstandarditemmodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qstandarditemmodel_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qstandarditemmodel_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/itemmodels/qstandarditemmodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qstatictext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qstatictext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qstatictext_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qstatictext_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qstatictext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qstroker_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qstroker_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qstroker_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qstroker_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qstroker_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qt_gui_pch.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qt_gui_pch.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qt_gui_pch.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qt_gui_pch.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qt_gui_pch.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qt_mips_asm_dsp_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qt_mips_asm_dsp_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qt_mips_asm_dsp_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qt_mips_asm_dsp_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qt_mips_asm_dsp_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextcursor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextcursor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextcursor_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextcursor_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qtextcursor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextdocument_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextdocument_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextdocument_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextdocument_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qtextdocument_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextdocumentfragment_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextdocumentfragment_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextdocumentfragment_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextdocumentfragment_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qtextdocumentfragment_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextdocumentlayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextdocumentlayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextdocumentlayout_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextdocumentlayout_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qtextdocumentlayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qtextengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextformat_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextformat_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextformat_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextformat_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qtextformat_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtexthtmlparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtexthtmlparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtexthtmlparser_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtexthtmlparser_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qtexthtmlparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextimagehandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextimagehandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextimagehandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextimagehandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qtextimagehandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextmarkdownimporter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextmarkdownimporter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextmarkdownimporter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextmarkdownimporter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qtextmarkdownimporter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextmarkdownwriter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextmarkdownwriter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextmarkdownwriter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextmarkdownwriter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qtextmarkdownwriter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextobject_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextobject_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qtextobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextodfwriter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextodfwriter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextodfwriter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextodfwriter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qtextodfwriter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtexttable_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtexttable_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtexttable_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtexttable_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qtexttable_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtexturefiledata_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtexturefiledata_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtexturefiledata_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtexturefiledata_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qtexturefiledata_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtexturefilehandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtexturefilehandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtexturefilehandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtexturefilehandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qtexturefilehandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtexturefilereader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtexturefilereader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtexturefilereader_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtexturefilereader_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/util/qtexturefilereader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextureglyphcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextureglyphcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtextureglyphcache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtextureglyphcache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qtextureglyphcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtguiglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtguiglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtguiglobal_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtguiglobal_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qtguiglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtouchdevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtouchdevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtouchdevice_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtouchdevice_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qtouchdevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtriangulatingstroker_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtriangulatingstroker_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtriangulatingstroker_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtriangulatingstroker_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qtriangulatingstroker_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtriangulator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtriangulator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qtriangulator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qtriangulator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qtriangulator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qvectorpath_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qvectorpath_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qvectorpath_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qvectorpath_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qvectorpath_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qvulkanwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qvulkanwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qvulkanwindow_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qvulkanwindow_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/vulkan/qvulkanwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qwasmlocalfileaccess_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qwasmlocalfileaccess_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qwasmlocalfileaccess_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qwasmlocalfileaccess_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/platform/wasm/qwasmlocalfileaccess_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qwindow_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qwindow_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qxbmhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qxbmhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qxbmhandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qxbmhandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qxbmhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qxpmhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qxpmhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qxpmhandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qxpmhandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qxpmhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qzipreader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qzipreader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qzipreader_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qzipreader_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qzipreader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qzipwriter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qzipwriter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/private/qzipwriter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/private/qzipwriter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qzipwriter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformaccessibility.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformaccessibility.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformaccessibility.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformaccessibility.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/accessible/qplatformaccessibility.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformbackingstore.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformbackingstore.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformbackingstore.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformbackingstore.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/painting/qplatformbackingstore.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformclipboard.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformclipboard.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformclipboard.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformclipboard.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformclipboard.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformcursor.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformcursor.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformcursor.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformcursor.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformcursor.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformdialoghelper.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformdialoghelper.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformdialoghelper.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformdialoghelper.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformdialoghelper.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformdrag.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformdrag.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformdrag.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformdrag.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformdrag.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformfontdatabase.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformfontdatabase.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformfontdatabase.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformfontdatabase.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/text/qplatformfontdatabase.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformgraphicsbuffer.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformgraphicsbuffer.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformgraphicsbuffer.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformgraphicsbuffer.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformgraphicsbuffer.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformgraphicsbufferhelper.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformgraphicsbufferhelper.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformgraphicsbufferhelper.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformgraphicsbufferhelper.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformgraphicsbufferhelper.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontext.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontext.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontext.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontext.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatforminputcontext.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontext_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontext_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatforminputcontext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontextfactory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontextfactory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontextfactory_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontextfactory_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatforminputcontextfactory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontextplugin_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontextplugin_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontextplugin_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatforminputcontextplugin_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatforminputcontextplugin_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformintegration.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformintegration.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformintegration.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformintegration.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformintegration.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformintegrationfactory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformintegrationfactory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformintegrationfactory_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformintegrationfactory_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformintegrationfactory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformintegrationplugin.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformintegrationplugin.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformintegrationplugin.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformintegrationplugin.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformintegrationplugin.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformmenu.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformmenu.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformmenu.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformmenu.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformmenu.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformnativeinterface.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformnativeinterface.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformnativeinterface.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformnativeinterface.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformnativeinterface.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformoffscreensurface.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformoffscreensurface.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformoffscreensurface.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformoffscreensurface.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformoffscreensurface.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformopenglcontext.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformopenglcontext.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformopenglcontext.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformopenglcontext.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformopenglcontext.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformpixmap.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformpixmap.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformpixmap.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformpixmap.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/image/qplatformpixmap.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformscreen.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformscreen.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformscreen.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformscreen.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformscreen.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformscreen_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformscreen_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformscreen_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformscreen_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformscreen_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformservices.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformservices.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformservices.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformservices.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformservices.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsessionmanager.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsessionmanager.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsessionmanager.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsessionmanager.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformsessionmanager.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsharedgraphicscache.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsharedgraphicscache.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsharedgraphicscache.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsharedgraphicscache.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformsharedgraphicscache.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsurface.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsurface.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsurface.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsurface.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformsurface.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsystemtrayicon.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsystemtrayicon.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsystemtrayicon.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformsystemtrayicon.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformsystemtrayicon.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformtheme.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformtheme.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformtheme.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformtheme.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformtheme.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformtheme_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformtheme_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformtheme_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformtheme_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformtheme_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformthemefactory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformthemefactory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformthemefactory_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformthemefactory_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformthemefactory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformthemeplugin.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformthemeplugin.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformthemeplugin.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformthemeplugin.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformthemeplugin.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformvulkaninstance.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformvulkaninstance.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformvulkaninstance.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformvulkaninstance.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/vulkan/qplatformvulkaninstance.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformwindow.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformwindow.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformwindow.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformwindow.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformwindow.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformwindow_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qplatformwindow_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qplatformwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qwindowsysteminterface.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qwindowsysteminterface.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qwindowsysteminterface.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qwindowsysteminterface.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qwindowsysteminterface.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qwindowsysteminterface_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qwindowsysteminterface_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.3/QtGui/qpa/qwindowsysteminterface_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.3/QtGui/qpa/qwindowsysteminterface_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/gui/kernel/qwindowsysteminterface_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/cs_tdr_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/cs_tdr_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/cs_tdr_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/cs_tdr_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/cs_tdr_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qabstractlayoutstyleinfo_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qabstractlayoutstyleinfo_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qabstractlayoutstyleinfo_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qabstractlayoutstyleinfo_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qabstractlayoutstyleinfo_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qabstracttextdocumentlayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qabstracttextdocumentlayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qabstracttextdocumentlayout_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qabstracttextdocumentlayout_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qabstracttextdocumentlayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qaccessiblecache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qaccessiblecache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qaccessiblecache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qaccessiblecache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/accessible/qaccessiblecache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qastchandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qastchandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qastchandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qastchandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qastchandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qbezier_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qbezier_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qbezier_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qbezier_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qbezier_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qblendfunctions_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qblendfunctions_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qblendfunctions_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qblendfunctions_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qblendfunctions_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qblittable_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qblittable_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qblittable_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qblittable_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qblittable_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qbmphandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qbmphandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qbmphandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qbmphandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qbmphandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolor_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolor_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qcolor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolormatrix_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolormatrix_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolormatrix_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolormatrix_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qcolormatrix_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolorspace_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolorspace_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolorspace_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolorspace_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qcolorspace_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortransferfunction_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortransferfunction_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortransferfunction_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortransferfunction_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qcolortransferfunction_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortransfertable_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortransfertable_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortransfertable_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortransfertable_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qcolortransfertable_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortransform_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortransform_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortransform_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortransform_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qcolortransform_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortrc_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortrc_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortrc_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortrc_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qcolortrc_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortrclut_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortrclut_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortrclut_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcolortrclut_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qcolortrclut_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcoregraphics_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcoregraphics_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcoregraphics_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcoregraphics_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qcoregraphics_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcosmeticstroker_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcosmeticstroker_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcosmeticstroker_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcosmeticstroker_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qcosmeticstroker_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcssparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcssparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcssparser_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcssparser_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qcssparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcssutil_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcssutil_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcssutil_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcssutil_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qcssutil_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcursor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcursor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qcursor_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qcursor_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qcursor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdatabuffer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdatabuffer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdatabuffer_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdatabuffer_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qdatabuffer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdistancefield_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdistancefield_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdistancefield_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdistancefield_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qdistancefield_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdnd_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdnd_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdnd_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdnd_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qdnd_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_mips_dsp_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_mips_dsp_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_mips_dsp_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_mips_dsp_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qdrawhelper_mips_dsp_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_neon_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_neon_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_neon_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_neon_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qdrawhelper_neon_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qdrawhelper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_x86_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_x86_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_x86_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawhelper_x86_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qdrawhelper_x86_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawingprimitive_sse2_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawingprimitive_sse2_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawingprimitive_sse2_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qdrawingprimitive_sse2_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qdrawingprimitive_sse2_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qemulationpaintengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qemulationpaintengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qemulationpaintengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qemulationpaintengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qemulationpaintengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qevent_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qevent_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qevent_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qevent_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qevent_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qfixed_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qfixed_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qfixed_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qfixed_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qfixed_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qfont_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qfont_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qfont_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qfont_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qfont_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qfontengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qfontengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qfontengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qfontengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qfontengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qfontengine_qpf2_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qfontengine_qpf2_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qfontengine_qpf2_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qfontengine_qpf2_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qfontengine_qpf2_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qfontengineglyphcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qfontengineglyphcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qfontengineglyphcache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qfontengineglyphcache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qfontengineglyphcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qfontsubset_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qfontsubset_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qfontsubset_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qfontsubset_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qfontsubset_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qfragmentmap_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qfragmentmap_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qfragmentmap_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qfragmentmap_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qfragmentmap_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qglyphrun_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qglyphrun_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qglyphrun_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qglyphrun_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qglyphrun_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qgrayraster_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qgrayraster_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qgrayraster_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qgrayraster_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qgrayraster_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qgridlayoutengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qgridlayoutengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qgridlayoutengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qgridlayoutengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qgridlayoutengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qguiapplication_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qguiapplication_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qguiapplication_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qguiapplication_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qguiapplication_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qharfbuzzng_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qharfbuzzng_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qharfbuzzng_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qharfbuzzng_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qharfbuzzng_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qhexstring_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qhexstring_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qhexstring_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qhexstring_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qhexstring_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qhighdpiscaling_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qhighdpiscaling_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qhighdpiscaling_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qhighdpiscaling_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qhighdpiscaling_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qicc_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qicc_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qicc_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qicc_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qicc_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qicon_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qicon_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qicon_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qicon_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qicon_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qiconloader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qiconloader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qiconloader_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qiconloader_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qiconloader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qimage_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qimage_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qimage_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qimage_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qimage_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qimagepixmapcleanuphooks_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qimagepixmapcleanuphooks_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qimagepixmapcleanuphooks_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qimagepixmapcleanuphooks_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qimagepixmapcleanuphooks_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qimagereaderwriterhelpers_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qimagereaderwriterhelpers_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qimagereaderwriterhelpers_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qimagereaderwriterhelpers_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qimagereaderwriterhelpers_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qimagescale_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qimagescale_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qimagescale_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qimagescale_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qimagescale_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qinputcontrol_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qinputcontrol_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qinputcontrol_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qinputcontrol_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qinputcontrol_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qinputdevicemanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qinputdevicemanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qinputdevicemanager_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qinputdevicemanager_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qinputdevicemanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qinputdevicemanager_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qinputdevicemanager_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qinputdevicemanager_p_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qinputdevicemanager_p_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qinputdevicemanager_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qinputmethod_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qinputmethod_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qinputmethod_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qinputmethod_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qinputmethod_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qinternalmimedata_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qinternalmimedata_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qinternalmimedata_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qinternalmimedata_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qinternalmimedata_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qkeymapper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qkeymapper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qkeymapper_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qkeymapper_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qkeymapper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qkeysequence_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qkeysequence_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qkeysequence_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qkeysequence_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qkeysequence_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qktxhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qktxhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qktxhandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qktxhandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qktxhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qlayoutpolicy_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qlayoutpolicy_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qlayoutpolicy_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qlayoutpolicy_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qlayoutpolicy_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qmath_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qmath_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qmath_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qmath_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qmath_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qmemrotate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qmemrotate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qmemrotate_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qmemrotate_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qmemrotate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopengl2pexvertexarray_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopengl2pexvertexarray_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopengl2pexvertexarray_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopengl2pexvertexarray_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopengl2pexvertexarray_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopengl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopengl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopengl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopengl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopengl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglcontext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglcontext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglcontext_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglcontext_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qopenglcontext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglcustomshaderstage_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglcustomshaderstage_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglcustomshaderstage_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglcustomshaderstage_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopenglcustomshaderstage_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglengineshadermanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglengineshadermanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglengineshadermanager_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglengineshadermanager_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopenglengineshadermanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglengineshadersource_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglengineshadersource_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglengineshadersource_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglengineshadersource_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopenglengineshadersource_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglextensions_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglextensions_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglextensions_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglextensions_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopenglextensions_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglframebufferobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglframebufferobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglframebufferobject_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglframebufferobject_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopenglframebufferobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglgradientcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglgradientcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglgradientcache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglgradientcache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopenglgradientcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglpaintdevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglpaintdevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglpaintdevice_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglpaintdevice_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopenglpaintdevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglpaintengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglpaintengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglpaintengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglpaintengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopenglpaintengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglprogrambinarycache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglprogrambinarycache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglprogrambinarycache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglprogrambinarycache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopenglprogrambinarycache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglqueryhelper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglqueryhelper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglqueryhelper_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglqueryhelper_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopenglqueryhelper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglshadercache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglshadercache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglshadercache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglshadercache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopenglshadercache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltexture_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltexture_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltexture_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltexture_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopengltexture_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltexturecache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltexturecache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltexturecache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltexturecache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopengltexturecache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltextureglyphcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltextureglyphcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltextureglyphcache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltextureglyphcache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopengltextureglyphcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltexturehelper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltexturehelper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltexturehelper_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltexturehelper_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopengltexturehelper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltextureuploader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltextureuploader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltextureuploader_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopengltextureuploader_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopengltextureuploader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglversionfunctionsfactory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglversionfunctionsfactory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglversionfunctionsfactory_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglversionfunctionsfactory_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopenglversionfunctionsfactory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglvertexarrayobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglvertexarrayobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglvertexarrayobject_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qopenglvertexarrayobject_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/opengl/qopenglvertexarrayobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qoutlinemapper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qoutlinemapper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qoutlinemapper_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qoutlinemapper_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qoutlinemapper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpagedpaintdevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpagedpaintdevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpagedpaintdevice_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpagedpaintdevice_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qpagedpaintdevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintdevicewindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintdevicewindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintdevicewindow_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintdevicewindow_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qpaintdevicewindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_blitter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_blitter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_blitter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_blitter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qpaintengine_blitter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qpaintengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_pic_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_pic_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_pic_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_pic_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qpaintengine_pic_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_raster_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_raster_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_raster_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengine_raster_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qpaintengine_raster_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengineex_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengineex_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengineex_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpaintengineex_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qpaintengineex_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpainter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpainter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpainter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpainter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qpainter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpainterpath_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpainterpath_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpainterpath_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpainterpath_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qpainterpath_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpathclipper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpathclipper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpathclipper_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpathclipper_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qpathclipper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpathsimplifier_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpathsimplifier_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpathsimplifier_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpathsimplifier_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qpathsimplifier_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpdf_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpdf_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpdf_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpdf_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qpdf_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpen_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpen_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpen_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpen_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qpen_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpicture_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpicture_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpicture_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpicture_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qpicture_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpixmap_blitter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpixmap_blitter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpixmap_blitter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpixmap_blitter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qpixmap_blitter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpixmap_raster_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpixmap_raster_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpixmap_raster_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpixmap_raster_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qpixmap_raster_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpixmapcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpixmapcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpixmapcache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpixmapcache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qpixmapcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpkmhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpkmhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpkmhandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpkmhandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qpkmhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpnghandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpnghandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpnghandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpnghandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qpnghandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpolygonclipper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpolygonclipper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qpolygonclipper_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qpolygonclipper_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qpolygonclipper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qppmhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qppmhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qppmhandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qppmhandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qppmhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrasterdefs_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrasterdefs_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrasterdefs_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrasterdefs_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qrasterdefs_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrasterizer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrasterizer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrasterizer_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrasterizer_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qrasterizer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrawfont_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrawfont_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrawfont_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrawfont_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qrawfont_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrbtree_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrbtree_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrbtree_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrbtree_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qrbtree_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrgba64_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrgba64_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrgba64_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrgba64_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qrgba64_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhi_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhi_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhi_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhi_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhi_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhi_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhi_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhi_p_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhi_p_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhi_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhid3d11_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhid3d11_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhid3d11_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhid3d11_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhid3d11_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhid3d11_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhid3d11_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhid3d11_p_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhid3d11_p_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhid3d11_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhigles2_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhigles2_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhigles2_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhigles2_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhigles2_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhigles2_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhigles2_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhigles2_p_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhigles2_p_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhigles2_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhimetal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhimetal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhimetal_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhimetal_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhimetal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhimetal_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhimetal_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhimetal_p_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhimetal_p_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhimetal_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhinull_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhinull_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhinull_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhinull_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhinull_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhinull_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhinull_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhinull_p_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhinull_p_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhinull_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhiprofiler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhiprofiler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhiprofiler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhiprofiler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhiprofiler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhiprofiler_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhiprofiler_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhiprofiler_p_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhiprofiler_p_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhiprofiler_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhivulkan_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhivulkan_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhivulkan_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhivulkan_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhivulkan_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhivulkan_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhivulkan_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhivulkan_p_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhivulkan_p_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhivulkan_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhivulkanext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhivulkanext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qrhivulkanext_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qrhivulkanext_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qrhivulkanext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qscreen_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qscreen_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qscreen_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qscreen_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qscreen_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qsessionmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qsessionmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qsessionmanager_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qsessionmanager_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qsessionmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshader_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshader_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qshader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshader_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshader_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshader_p_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshader_p_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qshader_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderdescription_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderdescription_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderdescription_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderdescription_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qshaderdescription_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderdescription_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderdescription_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderdescription_p_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderdescription_p_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/rhi/qshaderdescription_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderformat_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderformat_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderformat_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderformat_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qshaderformat_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshadergenerator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshadergenerator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshadergenerator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshadergenerator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qshadergenerator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshadergraph_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshadergraph_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshadergraph_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshadergraph_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qshadergraph_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshadergraphloader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshadergraphloader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshadergraphloader_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshadergraphloader_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qshadergraphloader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderlanguage_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderlanguage_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderlanguage_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshaderlanguage_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qshaderlanguage_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshadernode_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshadernode_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshadernode_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshadernode_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qshadernode_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshadernodeport_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshadernodeport_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshadernodeport_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshadernodeport_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qshadernodeport_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshadernodesloader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshadernodesloader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshadernodesloader_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshadernodesloader_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qshadernodesloader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshapedpixmapdndwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshapedpixmapdndwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshapedpixmapdndwindow_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshapedpixmapdndwindow_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qshapedpixmapdndwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshortcutmap_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshortcutmap_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qshortcutmap_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qshortcutmap_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qshortcutmap_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qsimpledrag_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qsimpledrag_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qsimpledrag_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qsimpledrag_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qsimpledrag_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qstandarditemmodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qstandarditemmodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qstandarditemmodel_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qstandarditemmodel_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/itemmodels/qstandarditemmodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qstatictext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qstatictext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qstatictext_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qstatictext_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qstatictext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qstroker_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qstroker_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qstroker_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qstroker_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qstroker_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qt_gui_pch.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qt_gui_pch.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qt_gui_pch.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qt_gui_pch.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qt_gui_pch.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qt_mips_asm_dsp_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qt_mips_asm_dsp_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qt_mips_asm_dsp_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qt_mips_asm_dsp_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qt_mips_asm_dsp_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextcursor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextcursor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextcursor_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextcursor_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qtextcursor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextdocument_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextdocument_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextdocument_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextdocument_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qtextdocument_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextdocumentfragment_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextdocumentfragment_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextdocumentfragment_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextdocumentfragment_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qtextdocumentfragment_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextdocumentlayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextdocumentlayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextdocumentlayout_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextdocumentlayout_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qtextdocumentlayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qtextengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextformat_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextformat_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextformat_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextformat_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qtextformat_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtexthtmlparser_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtexthtmlparser_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtexthtmlparser_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtexthtmlparser_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qtexthtmlparser_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextimagehandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextimagehandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextimagehandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextimagehandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qtextimagehandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextmarkdownimporter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextmarkdownimporter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextmarkdownimporter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextmarkdownimporter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qtextmarkdownimporter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextmarkdownwriter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextmarkdownwriter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextmarkdownwriter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextmarkdownwriter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qtextmarkdownwriter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextobject_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextobject_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qtextobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextodfwriter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextodfwriter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextodfwriter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextodfwriter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qtextodfwriter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtexttable_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtexttable_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtexttable_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtexttable_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qtexttable_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtexturefiledata_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtexturefiledata_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtexturefiledata_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtexturefiledata_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qtexturefiledata_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtexturefilehandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtexturefilehandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtexturefilehandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtexturefilehandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qtexturefilehandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtexturefilereader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtexturefilereader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtexturefilereader_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtexturefilereader_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/util/qtexturefilereader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextureglyphcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextureglyphcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtextureglyphcache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtextureglyphcache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qtextureglyphcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtguiglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtguiglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtguiglobal_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtguiglobal_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qtguiglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtouchdevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtouchdevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtouchdevice_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtouchdevice_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qtouchdevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtriangulatingstroker_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtriangulatingstroker_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtriangulatingstroker_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtriangulatingstroker_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qtriangulatingstroker_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtriangulator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtriangulator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qtriangulator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qtriangulator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qtriangulator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qvectorpath_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qvectorpath_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qvectorpath_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qvectorpath_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qvectorpath_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qvulkanwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qvulkanwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qvulkanwindow_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qvulkanwindow_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/vulkan/qvulkanwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qwasmlocalfileaccess_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qwasmlocalfileaccess_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qwasmlocalfileaccess_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qwasmlocalfileaccess_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/platform/wasm/qwasmlocalfileaccess_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qwindow_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qwindow_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qxbmhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qxbmhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qxbmhandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qxbmhandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qxbmhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qxpmhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qxpmhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qxpmhandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qxpmhandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qxpmhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qzipreader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qzipreader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qzipreader_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qzipreader_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qzipreader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qzipwriter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qzipwriter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/private/qzipwriter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/private/qzipwriter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qzipwriter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformaccessibility.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformaccessibility.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformaccessibility.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformaccessibility.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/accessible/qplatformaccessibility.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformbackingstore.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformbackingstore.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformbackingstore.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformbackingstore.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/painting/qplatformbackingstore.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformclipboard.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformclipboard.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformclipboard.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformclipboard.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformclipboard.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformcursor.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformcursor.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformcursor.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformcursor.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformcursor.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformdialoghelper.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformdialoghelper.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformdialoghelper.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformdialoghelper.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformdialoghelper.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformdrag.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformdrag.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformdrag.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformdrag.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformdrag.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformfontdatabase.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformfontdatabase.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformfontdatabase.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformfontdatabase.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/text/qplatformfontdatabase.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformgraphicsbuffer.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformgraphicsbuffer.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformgraphicsbuffer.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformgraphicsbuffer.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformgraphicsbuffer.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformgraphicsbufferhelper.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformgraphicsbufferhelper.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformgraphicsbufferhelper.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformgraphicsbufferhelper.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformgraphicsbufferhelper.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontext.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontext.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontext.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontext.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatforminputcontext.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontext_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontext_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontext_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontext_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatforminputcontext_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontextfactory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontextfactory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontextfactory_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontextfactory_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatforminputcontextfactory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontextplugin_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontextplugin_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontextplugin_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatforminputcontextplugin_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatforminputcontextplugin_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformintegration.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformintegration.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformintegration.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformintegration.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformintegration.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformintegrationfactory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformintegrationfactory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformintegrationfactory_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformintegrationfactory_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformintegrationfactory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformintegrationplugin.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformintegrationplugin.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformintegrationplugin.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformintegrationplugin.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformintegrationplugin.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformmenu.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformmenu.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformmenu.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformmenu.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformmenu.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformnativeinterface.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformnativeinterface.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformnativeinterface.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformnativeinterface.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformnativeinterface.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformoffscreensurface.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformoffscreensurface.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformoffscreensurface.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformoffscreensurface.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformoffscreensurface.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformopenglcontext.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformopenglcontext.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformopenglcontext.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformopenglcontext.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformopenglcontext.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformpixmap.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformpixmap.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformpixmap.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformpixmap.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/image/qplatformpixmap.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformscreen.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformscreen.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformscreen.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformscreen.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformscreen.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformscreen_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformscreen_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformscreen_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformscreen_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformscreen_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformservices.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformservices.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformservices.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformservices.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformservices.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsessionmanager.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsessionmanager.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsessionmanager.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsessionmanager.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformsessionmanager.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsharedgraphicscache.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsharedgraphicscache.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsharedgraphicscache.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsharedgraphicscache.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformsharedgraphicscache.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsurface.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsurface.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsurface.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsurface.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformsurface.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsystemtrayicon.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsystemtrayicon.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsystemtrayicon.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformsystemtrayicon.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformsystemtrayicon.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformtheme.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformtheme.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformtheme.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformtheme.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformtheme.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformtheme_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformtheme_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformtheme_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformtheme_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformtheme_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformthemefactory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformthemefactory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformthemefactory_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformthemefactory_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformthemefactory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformthemeplugin.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformthemeplugin.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformthemeplugin.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformthemeplugin.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformthemeplugin.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformvulkaninstance.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformvulkaninstance.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformvulkaninstance.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformvulkaninstance.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/vulkan/qplatformvulkaninstance.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformwindow.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformwindow.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformwindow.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformwindow.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformwindow.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformwindow_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qplatformwindow_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qplatformwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qwindowsysteminterface.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qwindowsysteminterface.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qwindowsysteminterface.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qwindowsysteminterface.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qwindowsysteminterface.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qwindowsysteminterface_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qwindowsysteminterface_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/5.15.8/QtGui/qpa/qwindowsysteminterface_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/5.15.8/QtGui/qpa/qwindowsysteminterface_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/gui/kernel/qwindowsysteminterface_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/headers.pri qtbase-opensource-src-5.15.8+dfsg/include/QtGui/headers.pri --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/headers.pri 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/headers.pri 2022-11-13 04:40:59.000000000 +0800 @@ -1,6 +1,6 @@ SYNCQT.HEADER_FILES = accessible/qaccessible.h accessible/qaccessiblebridge.h accessible/qaccessibleobject.h accessible/qaccessibleplugin.h image/qbitmap.h image/qicon.h image/qiconengine.h image/qiconengineplugin.h image/qimage.h image/qimageiohandler.h image/qimagereader.h image/qimagewriter.h image/qmovie.h image/qpicture.h image/qpictureformatplugin.h image/qpixmap.h image/qpixmapcache.h itemmodels/qstandarditemmodel.h kernel/qclipboard.h kernel/qcursor.h kernel/qdrag.h kernel/qevent.h kernel/qgenericplugin.h kernel/qgenericpluginfactory.h kernel/qguiapplication.h kernel/qinputmethod.h kernel/qkeysequence.h kernel/qoffscreensurface.h kernel/qopenglcontext.h kernel/qopenglwindow.h kernel/qpaintdevicewindow.h kernel/qpalette.h kernel/qpixelformat.h kernel/qrasterwindow.h kernel/qscreen.h kernel/qsessionmanager.h kernel/qstylehints.h kernel/qsurface.h kernel/qsurfaceformat.h kernel/qtestsupport_gui.h kernel/qtguiglobal.h kernel/qtouchdevice.h kernel/qwindow.h kernel/qwindowdefs.h kernel/qwindowdefs_win.h math3d/qgenericmatrix.h math3d/qmatrix4x4.h math3d/qquaternion.h math3d/qvector2d.h math3d/qvector3d.h math3d/qvector4d.h opengl/qopengl.h opengl/qopenglbuffer.h opengl/qopengldebug.h opengl/qopengles2ext.h opengl/qopenglext.h opengl/qopenglextrafunctions.h opengl/qopenglframebufferobject.h opengl/qopenglfunctions.h opengl/qopenglfunctions_1_0.h opengl/qopenglfunctions_1_1.h opengl/qopenglfunctions_1_2.h opengl/qopenglfunctions_1_3.h opengl/qopenglfunctions_1_4.h opengl/qopenglfunctions_1_5.h opengl/qopenglfunctions_2_0.h opengl/qopenglfunctions_2_1.h opengl/qopenglfunctions_3_0.h opengl/qopenglfunctions_3_1.h opengl/qopenglfunctions_3_2_compatibility.h opengl/qopenglfunctions_3_2_core.h opengl/qopenglfunctions_3_3_compatibility.h opengl/qopenglfunctions_3_3_core.h opengl/qopenglfunctions_4_0_compatibility.h opengl/qopenglfunctions_4_0_core.h opengl/qopenglfunctions_4_1_compatibility.h opengl/qopenglfunctions_4_1_core.h opengl/qopenglfunctions_4_2_compatibility.h opengl/qopenglfunctions_4_2_core.h opengl/qopenglfunctions_4_3_compatibility.h opengl/qopenglfunctions_4_3_core.h opengl/qopenglfunctions_4_4_compatibility.h opengl/qopenglfunctions_4_4_core.h opengl/qopenglfunctions_4_5_compatibility.h opengl/qopenglfunctions_4_5_core.h opengl/qopenglfunctions_es2.h opengl/qopenglpaintdevice.h opengl/qopenglpixeltransferoptions.h opengl/qopenglshaderprogram.h opengl/qopengltexture.h opengl/qopengltextureblitter.h opengl/qopengltimerquery.h opengl/qopenglversionfunctions.h opengl/qopenglvertexarrayobject.h painting/qbackingstore.h painting/qbrush.h painting/qcolor.h painting/qcolorspace.h painting/qcolortransform.h painting/qmatrix.h painting/qpagedpaintdevice.h painting/qpagelayout.h painting/qpagesize.h painting/qpaintdevice.h painting/qpaintengine.h painting/qpainter.h painting/qpainterpath.h painting/qpdfwriter.h painting/qpen.h painting/qpolygon.h painting/qregion.h painting/qrgb.h painting/qrgba64.h painting/qtransform.h text/qabstracttextdocumentlayout.h text/qfont.h text/qfontdatabase.h text/qfontinfo.h text/qfontmetrics.h text/qglyphrun.h text/qrawfont.h text/qstatictext.h text/qsyntaxhighlighter.h text/qtextcursor.h text/qtextdocument.h text/qtextdocumentfragment.h text/qtextdocumentwriter.h text/qtextformat.h text/qtextlayout.h text/qtextlist.h text/qtextobject.h text/qtextoption.h text/qtexttable.h util/qdesktopservices.h util/qvalidator.h vulkan/qvulkaninstance.h vulkan/qvulkanwindow.h -SYNCQT.GENERATED_HEADER_FILES = QAccessible QAccessibleInterface QAccessibleTextInterface QAccessibleEditableTextInterface QAccessibleValueInterface QAccessibleTableCellInterface QAccessibleTableInterface QAccessibleActionInterface QAccessibleImageInterface QAccessibleEvent QAccessibleStateChangeEvent QAccessibleTextCursorEvent QAccessibleTextSelectionEvent QAccessibleTextInsertEvent QAccessibleTextRemoveEvent QAccessibleTextUpdateEvent QAccessibleValueChangeEvent QAccessibleTableModelChangeEvent QAccessibleBridge QAccessibleBridgePlugin QAccessibleObject QAccessibleApplication QAccessiblePlugin QBitmap QIcon QIconEngine QIconEngineV2 QIconEnginePlugin QImageTextKeyLang QImageCleanupFunction QImage QImageIOHandler QImageIOPlugin QImageReader QImageWriter QMovie QPicture QPictureIO QPictureFormatPlugin QPixmap QPixmapCache QStandardItem QStandardItemModel QClipboard QCursor QDrag QInputEvent QEnterEvent QMouseEvent QHoverEvent QWheelEvent QTabletEvent QNativeGestureEvent QKeyEvent QFocusEvent QPaintEvent QMoveEvent QExposeEvent QPlatformSurfaceEvent QResizeEvent QCloseEvent QIconDragEvent QShowEvent QHideEvent QContextMenuEvent QInputMethodEvent QInputMethodQueryEvent QDropEvent QDragMoveEvent QDragEnterEvent QDragLeaveEvent QHelpEvent QStatusTipEvent QWhatsThisClickedEvent QActionEvent QFileOpenEvent QToolBarChangeEvent QShortcutEvent QWindowStateChangeEvent QPointingDeviceUniqueId QTouchEvent QScrollPrepareEvent QScrollEvent QScreenOrientationChangeEvent QApplicationStateChangeEvent QtEvents QGenericPlugin QGenericPluginFactory QGuiApplication QInputMethod QKeySequence QOffscreenSurface QOpenGLVersionProfile QOpenGLContextGroup QOpenGLContext QOpenGLWindow QPaintDeviceWindow QPalette QPixelFormat QRasterWindow QScreen QSessionManager QStyleHints QSurface QSurfaceFormat QTouchDevice QWindow QWidgetList QWindowList QWidgetMapper QWidgetSet QGenericMatrix QMatrix2x2 QMatrix2x3 QMatrix2x4 QMatrix3x2 QMatrix3x3 QMatrix3x4 QMatrix4x2 QMatrix4x3 QMatrix4x4 QQuaternion QVector2D QVector3D QVector4D QOpenGLBuffer QOpenGLDebugMessage QOpenGLDebugLogger QOpenGLExtraFunctions QOpenGLExtraFunctionsPrivate QOpenGLFramebufferObject QOpenGLFramebufferObjectFormat QOpenGLFunctions QOpenGLFunctionsPrivate QOpenGLFunctions_1_0 QOpenGLFunctions_1_1 QOpenGLFunctions_1_2 QOpenGLFunctions_1_3 QOpenGLFunctions_1_4 QOpenGLFunctions_1_5 QOpenGLFunctions_2_0 QOpenGLFunctions_2_1 QOpenGLFunctions_3_0 QOpenGLFunctions_3_1 QOpenGLFunctions_3_2_Compatibility QOpenGLFunctions_3_2_Core QOpenGLFunctions_3_3_Compatibility QOpenGLFunctions_3_3_Core QOpenGLFunctions_4_0_Compatibility QOpenGLFunctions_4_0_Core QOpenGLFunctions_4_1_Compatibility QOpenGLFunctions_4_1_Core QOpenGLFunctions_4_2_Compatibility QOpenGLFunctions_4_2_Core QOpenGLFunctions_4_3_Compatibility QOpenGLFunctions_4_3_Core QOpenGLFunctions_4_4_Compatibility QOpenGLFunctions_4_4_Core QOpenGLFunctions_4_5_Compatibility QOpenGLFunctions_4_5_Core QOpenGLFunctions_ES2 QOpenGLPaintDevice QOpenGLPixelTransferOptions QOpenGLShader QOpenGLShaderProgram QOpenGLTexture QOpenGLTextureBlitter QOpenGLTimerQuery QOpenGLTimeMonitor QOpenGLVersionFunctions QOpenGLVertexArrayObject QBackingStore QBrush QBrushData QGradientStop QGradientStops QGradient QLinearGradient QRadialGradient QConicalGradient QColor QColorSpace QColorTransform QMatrix QPagedPaintDevice QPageLayout QPageSize QPaintDevice QTextItem QPaintEngine QPaintEngineState QPainter QPainterPath QPainterPathStroker QPdfWriter QPen QPolygon QPolygonF QRegion QRgb QRgba64 QTransform QAbstractTextDocumentLayout QTextObjectInterface QFont QFontDatabase QFontInfo QFontMetrics QFontMetricsF QGlyphRun QRawFont QStaticText QSyntaxHighlighter QTextCursor QAbstractUndoItem QTextDocument QTextDocumentFragment QTextDocumentWriter QTextLength QTextFormat QTextCharFormat QTextBlockFormat QTextListFormat QTextImageFormat QTextFrameFormat QTextTableFormat QTextTableCellFormat QTextInlineObject QTextLayout QTextLine QTextList QTextObject QTextBlockGroup QTextFrameLayoutData QTextFrame QTextBlockUserData QTextBlock QTextFragment QTextOption QTextTableCell QTextTable QDesktopServices QValidator QIntValidator QDoubleValidator QRegExpValidator QRegularExpressionValidator QVulkanLayer QVulkanExtension QVulkanInfoVector QVulkanInstance QVulkanWindowRenderer QVulkanWindow QGenericPluginFactory QGenericPlugin qtguiversion.h QtGuiVersion QtGui +SYNCQT.GENERATED_HEADER_FILES = QAccessible QAccessibleInterface QAccessibleTextInterface QAccessibleEditableTextInterface QAccessibleValueInterface QAccessibleTableCellInterface QAccessibleTableInterface QAccessibleActionInterface QAccessibleImageInterface QAccessibleEvent QAccessibleStateChangeEvent QAccessibleTextCursorEvent QAccessibleTextSelectionEvent QAccessibleTextInsertEvent QAccessibleTextRemoveEvent QAccessibleTextUpdateEvent QAccessibleValueChangeEvent QAccessibleTableModelChangeEvent QAccessibleBridge QAccessibleBridgePlugin QAccessibleObject QAccessibleApplication QAccessiblePlugin QBitmap QIcon QIconEngine QIconEngineV2 QIconEnginePlugin QImageTextKeyLang QImageCleanupFunction QImage QImageIOHandler QImageIOPlugin QImageReader QImageWriter QMovie QPicture QPictureIO QPictureFormatPlugin QPixmap QPixmapCache QStandardItem QStandardItemModel QClipboard QCursor QDrag QInputEvent QEnterEvent QMouseEvent QHoverEvent QWheelEvent QTabletEvent QNativeGestureEvent QKeyEvent QFocusEvent QPaintEvent QMoveEvent QExposeEvent QPlatformSurfaceEvent QResizeEvent QCloseEvent QIconDragEvent QShowEvent QHideEvent QContextMenuEvent QInputMethodEvent QInputMethodQueryEvent QDropEvent QDragMoveEvent QDragEnterEvent QDragLeaveEvent QHelpEvent QStatusTipEvent QWhatsThisClickedEvent QActionEvent QFileOpenEvent QToolBarChangeEvent QShortcutEvent QWindowStateChangeEvent QPointingDeviceUniqueId QTouchEvent QScrollPrepareEvent QScrollEvent QScreenOrientationChangeEvent QApplicationStateChangeEvent QtEvents QGenericPlugin QGenericPluginFactory QGuiApplication QInputMethod QKeySequence QOffscreenSurface QOpenGLVersionProfile QOpenGLContextGroup QOpenGLContext QOpenGLWindow QPaintDeviceWindow QPalette QPixelFormat QRasterWindow QScreen QSessionManager QStyleHints QSurface QSurfaceFormat QTouchDevice QWindow QWidgetList QWindowList QWidgetMapper QWidgetSet QGenericMatrix QMatrix2x2 QMatrix2x3 QMatrix2x4 QMatrix3x2 QMatrix3x3 QMatrix3x4 QMatrix4x2 QMatrix4x3 QMatrix4x4 QQuaternion QVector2D QVector3D QVector4D QOpenGLBuffer QOpenGLDebugMessage QOpenGLDebugLogger QOpenGLExtraFunctions QOpenGLExtraFunctionsPrivate QOpenGLFramebufferObject QOpenGLFramebufferObjectFormat QOpenGLFunctions QOpenGLFunctionsPrivate QOpenGLFunctions_1_0 QOpenGLFunctions_1_1 QOpenGLFunctions_1_2 QOpenGLFunctions_1_3 QOpenGLFunctions_1_4 QOpenGLFunctions_1_5 QOpenGLFunctions_2_0 QOpenGLFunctions_2_1 QOpenGLFunctions_3_0 QOpenGLFunctions_3_1 QOpenGLFunctions_3_2_Compatibility QOpenGLFunctions_3_2_Core QOpenGLFunctions_3_3_Compatibility QOpenGLFunctions_3_3_Core QOpenGLFunctions_4_0_Compatibility QOpenGLFunctions_4_0_Core QOpenGLFunctions_4_1_Compatibility QOpenGLFunctions_4_1_Core QOpenGLFunctions_4_2_Compatibility QOpenGLFunctions_4_2_Core QOpenGLFunctions_4_3_Compatibility QOpenGLFunctions_4_3_Core QOpenGLFunctions_4_4_Compatibility QOpenGLFunctions_4_4_Core QOpenGLFunctions_4_5_Compatibility QOpenGLFunctions_4_5_Core QOpenGLFunctions_ES2 QOpenGLPaintDevice QOpenGLPixelTransferOptions QOpenGLShader QOpenGLShaderProgram QOpenGLTexture QOpenGLTextureBlitter QOpenGLTimerQuery QOpenGLTimeMonitor QOpenGLVersionFunctions QOpenGLVertexArrayObject QBackingStore QBrush QBrushData QGradientStop QGradientStops QGradient QLinearGradient QRadialGradient QConicalGradient QColor QColorSpace QColorTransform QMatrix QPagedPaintDevice QPageLayout QPageSize QPaintDevice QTextItem QPaintEngine QPaintEngineState QPainter QPainterPath QPainterPathStroker QPdfWriter QPen QPolygon QPolygonF QRegion QRgb QRgba64 QTransform QAbstractTextDocumentLayout QTextObjectInterface QFont QFontDatabase QFontInfo QFontMetrics QFontMetricsF QGlyphRun QRawFont QStaticText QSyntaxHighlighter QTextCursor QAbstractUndoItem QTextDocument QTextDocumentFragment QTextDocumentWriter QTextLength QTextFormat QTextCharFormat QTextBlockFormat QTextListFormat QTextImageFormat QTextFrameFormat QTextTableFormat QTextTableCellFormat QTextInlineObject QTextLayout QTextLine QTextList QTextObject QTextBlockGroup QTextFrameLayoutData QTextFrame QTextBlockUserData QTextBlock QTextFragment QTextOption QTextTableCell QTextTable QDesktopServices QValidator QIntValidator QDoubleValidator QRegExpValidator QRegularExpressionValidator QVulkanLayer QVulkanExtension QVulkanInfoVector QVulkanInstance QVulkanWindowRenderer QVulkanWindow QGenericPlugin QGenericPluginFactory qtguiversion.h QtGuiVersion QtGui SYNCQT.PRIVATE_HEADER_FILES = accessible/qaccessiblecache_p.h image/qbmphandler_p.h image/qicon_p.h image/qiconloader_p.h image/qimage_p.h image/qimagepixmapcleanuphooks_p.h image/qimagereaderwriterhelpers_p.h image/qpaintengine_pic_p.h image/qpicture_p.h image/qpixmap_blitter_p.h image/qpixmap_raster_p.h image/qpixmapcache_p.h image/qpnghandler_p.h image/qppmhandler_p.h image/qxbmhandler_p.h image/qxpmhandler_p.h itemmodels/qstandarditemmodel_p.h kernel/qcursor_p.h kernel/qdnd_p.h kernel/qevent_p.h kernel/qguiapplication_p.h kernel/qhighdpiscaling_p.h kernel/qinputdevicemanager_p.h kernel/qinputdevicemanager_p_p.h kernel/qinputmethod_p.h kernel/qinternalmimedata_p.h kernel/qkeymapper_p.h kernel/qkeysequence_p.h kernel/qopenglcontext_p.h kernel/qpaintdevicewindow_p.h kernel/qscreen_p.h kernel/qsessionmanager_p.h kernel/qshapedpixmapdndwindow_p.h kernel/qshortcutmap_p.h kernel/qsimpledrag_p.h kernel/qt_gui_pch.h kernel/qtguiglobal_p.h kernel/qtouchdevice_p.h kernel/qwindow_p.h opengl/qopengl2pexvertexarray_p.h opengl/qopengl_p.h opengl/qopenglcustomshaderstage_p.h opengl/qopenglengineshadermanager_p.h opengl/qopenglengineshadersource_p.h opengl/qopenglextensions_p.h opengl/qopenglframebufferobject_p.h opengl/qopenglgradientcache_p.h opengl/qopenglpaintdevice_p.h opengl/qopenglpaintengine_p.h opengl/qopenglprogrambinarycache_p.h opengl/qopenglqueryhelper_p.h opengl/qopenglshadercache_p.h opengl/qopengltexture_p.h opengl/qopengltexturecache_p.h opengl/qopengltextureglyphcache_p.h opengl/qopengltexturehelper_p.h opengl/qopengltextureuploader_p.h opengl/qopenglversionfunctionsfactory_p.h opengl/qopenglvertexarrayobject_p.h painting/qbezier_p.h painting/qblendfunctions_p.h painting/qblittable_p.h painting/qcolor_p.h painting/qcolormatrix_p.h painting/qcolorspace_p.h painting/qcolortransferfunction_p.h painting/qcolortransfertable_p.h painting/qcolortransform_p.h painting/qcolortrc_p.h painting/qcolortrclut_p.h painting/qcoregraphics_p.h painting/qcosmeticstroker_p.h painting/qcssutil_p.h painting/qdatabuffer_p.h painting/qdrawhelper_mips_dsp_p.h painting/qdrawhelper_neon_p.h painting/qdrawhelper_p.h painting/qdrawhelper_x86_p.h painting/qdrawingprimitive_sse2_p.h painting/qemulationpaintengine_p.h painting/qfixed_p.h painting/qgrayraster_p.h painting/qicc_p.h painting/qimagescale_p.h painting/qmath_p.h painting/qmemrotate_p.h painting/qoutlinemapper_p.h painting/qpagedpaintdevice_p.h painting/qpaintengine_blitter_p.h painting/qpaintengine_p.h painting/qpaintengine_raster_p.h painting/qpaintengineex_p.h painting/qpainter_p.h painting/qpainterpath_p.h painting/qpathclipper_p.h painting/qpathsimplifier_p.h painting/qpdf_p.h painting/qpen_p.h painting/qpolygonclipper_p.h painting/qrasterdefs_p.h painting/qrasterizer_p.h painting/qrbtree_p.h painting/qrgba64_p.h painting/qstroker_p.h painting/qt_mips_asm_dsp_p.h painting/qtextureglyphcache_p.h painting/qtriangulatingstroker_p.h painting/qtriangulator_p.h painting/qvectorpath_p.h rhi/cs_tdr_p.h rhi/qrhi_p.h rhi/qrhi_p_p.h rhi/qrhid3d11_p.h rhi/qrhid3d11_p_p.h rhi/qrhigles2_p.h rhi/qrhigles2_p_p.h rhi/qrhimetal_p.h rhi/qrhimetal_p_p.h rhi/qrhinull_p.h rhi/qrhinull_p_p.h rhi/qrhiprofiler_p.h rhi/qrhiprofiler_p_p.h rhi/qrhivulkan_p.h rhi/qrhivulkan_p_p.h rhi/qrhivulkanext_p.h rhi/qshader_p.h rhi/qshader_p_p.h rhi/qshaderdescription_p.h rhi/qshaderdescription_p_p.h text/qabstracttextdocumentlayout_p.h text/qcssparser_p.h text/qdistancefield_p.h text/qfont_p.h text/qfontengine_p.h text/qfontengine_qpf2_p.h text/qfontengineglyphcache_p.h text/qfontsubset_p.h text/qfragmentmap_p.h text/qglyphrun_p.h text/qharfbuzzng_p.h text/qinputcontrol_p.h text/qrawfont_p.h text/qstatictext_p.h text/qtextcursor_p.h text/qtextdocument_p.h text/qtextdocumentfragment_p.h text/qtextdocumentlayout_p.h text/qtextengine_p.h text/qtextformat_p.h text/qtexthtmlparser_p.h text/qtextimagehandler_p.h text/qtextmarkdownimporter_p.h text/qtextmarkdownwriter_p.h text/qtextobject_p.h text/qtextodfwriter_p.h text/qtexttable_p.h text/qzipreader_p.h text/qzipwriter_p.h util/qabstractlayoutstyleinfo_p.h util/qastchandler_p.h util/qgridlayoutengine_p.h util/qhexstring_p.h util/qktxhandler_p.h util/qlayoutpolicy_p.h util/qpkmhandler_p.h util/qshaderformat_p.h util/qshadergenerator_p.h util/qshadergraph_p.h util/qshadergraphloader_p.h util/qshaderlanguage_p.h util/qshadernode_p.h util/qshadernodeport_p.h util/qshadernodesloader_p.h util/qtexturefiledata_p.h util/qtexturefilehandler_p.h util/qtexturefilereader_p.h vulkan/qvulkanwindow_p.h platform/wasm/qwasmlocalfileaccess_p.h SYNCQT.QPA_HEADER_FILES = accessible/qplatformaccessibility.h image/qplatformpixmap.h kernel/qplatformclipboard.h kernel/qplatformcursor.h kernel/qplatformdialoghelper.h kernel/qplatformdrag.h kernel/qplatformgraphicsbuffer.h kernel/qplatformgraphicsbufferhelper.h kernel/qplatforminputcontext.h kernel/qplatforminputcontext_p.h kernel/qplatforminputcontextfactory_p.h kernel/qplatforminputcontextplugin_p.h kernel/qplatformintegration.h kernel/qplatformintegrationfactory_p.h kernel/qplatformintegrationplugin.h kernel/qplatformmenu.h kernel/qplatformnativeinterface.h kernel/qplatformoffscreensurface.h kernel/qplatformopenglcontext.h kernel/qplatformscreen.h kernel/qplatformscreen_p.h kernel/qplatformservices.h kernel/qplatformsessionmanager.h kernel/qplatformsharedgraphicscache.h kernel/qplatformsurface.h kernel/qplatformsystemtrayicon.h kernel/qplatformtheme.h kernel/qplatformtheme_p.h kernel/qplatformthemefactory_p.h kernel/qplatformthemeplugin.h kernel/qplatformwindow.h kernel/qplatformwindow_p.h kernel/qwindowsysteminterface.h kernel/qwindowsysteminterface_p.h painting/qplatformbackingstore.h text/qplatformfontdatabase.h vulkan/qplatformvulkaninstance.h SYNCQT.CLEAN_HEADER_FILES = accessible/qaccessible.h accessible/qaccessiblebridge.h accessible/qaccessibleobject.h accessible/qaccessibleplugin.h image/qbitmap.h image/qicon.h image/qiconengine.h image/qiconengineplugin.h image/qimage.h image/qimageiohandler.h image/qimagereader.h image/qimagewriter.h image/qmovie.h:movie image/qpicture.h image/qpictureformatplugin.h image/qpixmap.h image/qpixmapcache.h itemmodels/qstandarditemmodel.h:standarditemmodel kernel/qclipboard.h kernel/qcursor.h kernel/qdrag.h:draganddrop kernel/qevent.h kernel/qgenericplugin.h kernel/qgenericpluginfactory.h kernel/qguiapplication.h kernel/qinputmethod.h kernel/qkeysequence.h kernel/qoffscreensurface.h kernel/qopenglcontext.h kernel/qopenglwindow.h kernel/qpaintdevicewindow.h kernel/qpalette.h kernel/qpixelformat.h kernel/qrasterwindow.h kernel/qscreen.h kernel/qsessionmanager.h kernel/qstylehints.h kernel/qsurface.h kernel/qsurfaceformat.h kernel/qtestsupport_gui.h kernel/qtguiglobal.h kernel/qtouchdevice.h kernel/qwindow.h kernel/qwindowdefs.h kernel/qwindowdefs_win.h math3d/qgenericmatrix.h math3d/qmatrix4x4.h math3d/qquaternion.h math3d/qvector2d.h math3d/qvector3d.h math3d/qvector4d.h opengl/qopengl.h opengl/qopenglbuffer.h opengl/qopengldebug.h opengl/qopenglextrafunctions.h opengl/qopenglframebufferobject.h opengl/qopenglfunctions.h opengl/qopenglfunctions_1_0.h opengl/qopenglfunctions_1_1.h opengl/qopenglfunctions_1_2.h opengl/qopenglfunctions_1_3.h opengl/qopenglfunctions_1_4.h opengl/qopenglfunctions_1_5.h opengl/qopenglfunctions_2_0.h opengl/qopenglfunctions_2_1.h opengl/qopenglfunctions_3_0.h opengl/qopenglfunctions_3_1.h opengl/qopenglfunctions_3_2_compatibility.h opengl/qopenglfunctions_3_2_core.h opengl/qopenglfunctions_3_3_compatibility.h opengl/qopenglfunctions_3_3_core.h opengl/qopenglfunctions_4_0_compatibility.h opengl/qopenglfunctions_4_0_core.h opengl/qopenglfunctions_4_1_compatibility.h opengl/qopenglfunctions_4_1_core.h opengl/qopenglfunctions_4_2_compatibility.h opengl/qopenglfunctions_4_2_core.h opengl/qopenglfunctions_4_3_compatibility.h opengl/qopenglfunctions_4_3_core.h opengl/qopenglfunctions_4_4_compatibility.h opengl/qopenglfunctions_4_4_core.h opengl/qopenglfunctions_4_5_compatibility.h opengl/qopenglfunctions_4_5_core.h opengl/qopenglfunctions_es2.h opengl/qopenglpaintdevice.h opengl/qopenglpixeltransferoptions.h opengl/qopenglshaderprogram.h opengl/qopengltexture.h opengl/qopengltextureblitter.h opengl/qopengltimerquery.h opengl/qopenglversionfunctions.h opengl/qopenglvertexarrayobject.h painting/qbackingstore.h painting/qbrush.h painting/qcolor.h painting/qcolorspace.h painting/qcolortransform.h painting/qmatrix.h painting/qpagedpaintdevice.h painting/qpagelayout.h painting/qpagesize.h painting/qpaintdevice.h painting/qpaintengine.h painting/qpainter.h painting/qpainterpath.h painting/qpdfwriter.h painting/qpen.h painting/qpolygon.h painting/qregion.h painting/qrgb.h painting/qrgba64.h painting/qtransform.h text/qabstracttextdocumentlayout.h text/qfont.h text/qfontdatabase.h text/qfontinfo.h text/qfontmetrics.h text/qglyphrun.h text/qrawfont.h text/qstatictext.h text/qsyntaxhighlighter.h text/qtextcursor.h text/qtextdocument.h text/qtextdocumentfragment.h text/qtextdocumentwriter.h text/qtextformat.h text/qtextlayout.h text/qtextlist.h text/qtextobject.h text/qtextoption.h text/qtexttable.h util/qdesktopservices.h util/qvalidator.h vulkan/qvulkaninstance.h vulkan/qvulkanwindow.h -SYNCQT.INJECTIONS = src/gui/vulkan/qvulkanfunctions.h:^qvulkanfunctions.h:QVulkanFunctions:QVulkanDeviceFunctions src/gui/vulkan/qvulkanfunctions_p.h:^5.15.3/QtGui/private/qvulkanfunctions_p.h +SYNCQT.INJECTIONS = src/gui/vulkan/qvulkanfunctions.h:^qvulkanfunctions.h:QVulkanFunctions:QVulkanDeviceFunctions src/gui/vulkan/qvulkanfunctions_p.h:^5.15.8/QtGui/private/qvulkanfunctions_p.h diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtGui/qtguiversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtGui/qtguiversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtGui/qtguiversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtGui/qtguiversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTGUI_VERSION_H #define QT_QTGUI_VERSION_H -#define QTGUI_VERSION_STR "5.15.3" +#define QTGUI_VERSION_STR "5.15.8" -#define QTGUI_VERSION 0x050F03 +#define QTGUI_VERSION 0x050F08 #endif // QT_QTGUI_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/devicehandlerlist_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/devicehandlerlist_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/devicehandlerlist_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/devicehandlerlist_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/shared/devicehandlerlist_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevkeyboard_defaultmap_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevkeyboard_defaultmap_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevkeyboard_defaultmap_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevkeyboard_defaultmap_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/evdevkeyboard/qevdevkeyboard_defaultmap_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevkeyboardhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevkeyboardhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevkeyboardhandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevkeyboardhandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevkeyboardmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevkeyboardmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevkeyboardmanager_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevkeyboardmanager_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/evdevkeyboard/qevdevkeyboardmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevmousehandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevmousehandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevmousehandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevmousehandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevmousemanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevmousemanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevmousemanager_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevmousemanager_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/evdevmouse/qevdevmousemanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtablethandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtablethandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtablethandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtablethandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/evdevtablet/qevdevtablethandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtabletmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtabletmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtabletmanager_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtabletmanager_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/evdevtablet/qevdevtabletmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtouchfilter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtouchfilter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtouchfilter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtouchfilter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/evdevtouch/qevdevtouchfilter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtouchhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtouchhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtouchhandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtouchhandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/evdevtouch/qevdevtouchhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtouchmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtouchmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtouchmanager_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevtouchmanager_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/evdevtouch/qevdevtouchmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevutil_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevutil_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevutil_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qevdevutil_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/shared/qevdevutil_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputhandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputhandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/libinput/qlibinputhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputkeyboard_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputkeyboard_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputkeyboard_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputkeyboard_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/libinput/qlibinputkeyboard_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputpointer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputpointer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputpointer_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputpointer_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/libinput/qlibinputpointer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputtouch_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputtouch_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputtouch_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qlibinputtouch_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/libinput/qlibinputtouch_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qtouchoutputmapping_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qtouchoutputmapping_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qtouchoutputmapping_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qtouchoutputmapping_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/shared/qtouchoutputmapping_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qtslib_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qtslib_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qtslib_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qtslib_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/tslib/qtslib_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qxkbcommon_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qxkbcommon_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qxkbcommon_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.3/QtInputSupport/private/qxkbcommon_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/xkbcommon/qxkbcommon_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/devicehandlerlist_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/devicehandlerlist_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/devicehandlerlist_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/devicehandlerlist_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/shared/devicehandlerlist_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevkeyboard_defaultmap_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevkeyboard_defaultmap_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevkeyboard_defaultmap_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevkeyboard_defaultmap_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/evdevkeyboard/qevdevkeyboard_defaultmap_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevkeyboardhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevkeyboardhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevkeyboardhandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevkeyboardhandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevkeyboardmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevkeyboardmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevkeyboardmanager_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevkeyboardmanager_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/evdevkeyboard/qevdevkeyboardmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevmousehandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevmousehandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevmousehandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevmousehandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevmousemanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevmousemanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevmousemanager_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevmousemanager_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/evdevmouse/qevdevmousemanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtablethandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtablethandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtablethandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtablethandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/evdevtablet/qevdevtablethandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtabletmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtabletmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtabletmanager_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtabletmanager_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/evdevtablet/qevdevtabletmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtouchfilter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtouchfilter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtouchfilter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtouchfilter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/evdevtouch/qevdevtouchfilter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtouchhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtouchhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtouchhandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtouchhandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/evdevtouch/qevdevtouchhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtouchmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtouchmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtouchmanager_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevtouchmanager_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/evdevtouch/qevdevtouchmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevutil_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevutil_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevutil_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qevdevutil_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/shared/qevdevutil_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputhandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputhandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/libinput/qlibinputhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputkeyboard_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputkeyboard_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputkeyboard_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputkeyboard_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/libinput/qlibinputkeyboard_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputpointer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputpointer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputpointer_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputpointer_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/libinput/qlibinputpointer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputtouch_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputtouch_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputtouch_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qlibinputtouch_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/libinput/qlibinputtouch_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qtouchoutputmapping_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qtouchoutputmapping_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qtouchoutputmapping_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qtouchoutputmapping_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/shared/qtouchoutputmapping_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qtslib_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qtslib_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qtslib_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qtslib_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/tslib/qtslib_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qxkbcommon_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qxkbcommon_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qxkbcommon_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/5.15.8/QtInputSupport/private/qxkbcommon_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/xkbcommon/qxkbcommon_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/qtinputsupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/qtinputsupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtInputSupport/qtinputsupportversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtInputSupport/qtinputsupportversion.h 2022-11-13 04:40:55.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTINPUTSUPPORT_VERSION_H #define QT_QTINPUTSUPPORT_VERSION_H -#define QTINPUTSUPPORT_VERSION_STR "5.15.3" +#define QTINPUTSUPPORT_VERSION_STR "5.15.8" -#define QTINPUTSUPPORT_VERSION 0x050F03 +#define QTINPUTSUPPORT_VERSION 0x050F08 #endif // QT_QTINPUTSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtKmsSupport/5.15.3/QtKmsSupport/private/qkmsdevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtKmsSupport/5.15.3/QtKmsSupport/private/qkmsdevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtKmsSupport/5.15.3/QtKmsSupport/private/qkmsdevice_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtKmsSupport/5.15.3/QtKmsSupport/private/qkmsdevice_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/kmsconvenience/qkmsdevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtKmsSupport/5.15.8/QtKmsSupport/private/qkmsdevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtKmsSupport/5.15.8/QtKmsSupport/private/qkmsdevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtKmsSupport/5.15.8/QtKmsSupport/private/qkmsdevice_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtKmsSupport/5.15.8/QtKmsSupport/private/qkmsdevice_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/kmsconvenience/qkmsdevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtKmsSupport/qtkmssupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtKmsSupport/qtkmssupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtKmsSupport/qtkmssupportversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtKmsSupport/qtkmssupportversion.h 2022-11-13 04:40:57.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTKMSSUPPORT_VERSION_H #define QT_QTKMSSUPPORT_VERSION_H -#define QTKMSSUPPORT_VERSION_STR "5.15.3" +#define QTKMSSUPPORT_VERSION_STR "5.15.8" -#define QTKMSSUPPORT_VERSION 0x050F03 +#define QTKMSSUPPORT_VERSION 0x050F08 #endif // QT_QTKMSSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/application_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/application_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/application_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/application_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/linuxaccessibility/application_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/atspiadaptor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/atspiadaptor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/atspiadaptor_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/atspiadaptor_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/linuxaccessibility/atspiadaptor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/bridge_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/bridge_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/bridge_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/bridge_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/linuxaccessibility/bridge_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/cache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/cache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/cache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/cache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/linuxaccessibility/cache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/constant_mappings_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/constant_mappings_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/constant_mappings_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/constant_mappings_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/linuxaccessibility/constant_mappings_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/dbusconnection_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/dbusconnection_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/dbusconnection_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/dbusconnection_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/linuxaccessibility/dbusconnection_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/struct_marshallers_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/struct_marshallers_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/struct_marshallers_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.3/QtLinuxAccessibilitySupport/private/struct_marshallers_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/linuxaccessibility/struct_marshallers_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/application_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/application_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/application_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/application_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/linuxaccessibility/application_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/atspiadaptor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/atspiadaptor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/atspiadaptor_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/atspiadaptor_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/linuxaccessibility/atspiadaptor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/bridge_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/bridge_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/bridge_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/bridge_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/linuxaccessibility/bridge_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/cache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/cache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/cache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/cache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/linuxaccessibility/cache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/constant_mappings_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/constant_mappings_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/constant_mappings_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/constant_mappings_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/linuxaccessibility/constant_mappings_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/dbusconnection_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/dbusconnection_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/dbusconnection_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/dbusconnection_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/linuxaccessibility/dbusconnection_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/struct_marshallers_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/struct_marshallers_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/struct_marshallers_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/5.15.8/QtLinuxAccessibilitySupport/private/struct_marshallers_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/linuxaccessibility/struct_marshallers_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/qtlinuxaccessibilitysupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/qtlinuxaccessibilitysupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtLinuxAccessibilitySupport/qtlinuxaccessibilitysupportversion.h 2021-03-30 02:27:04.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtLinuxAccessibilitySupport/qtlinuxaccessibilitysupportversion.h 2022-11-13 04:40:55.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTLINUXACCESSIBILITYSUPPORT_VERSION_H #define QT_QTLINUXACCESSIBILITYSUPPORT_VERSION_H -#define QTLINUXACCESSIBILITYSUPPORT_VERSION_STR "5.15.3" +#define QTLINUXACCESSIBILITYSUPPORT_VERSION_STR "5.15.8" -#define QTLINUXACCESSIBILITYSUPPORT_VERSION 0x050F03 +#define QTLINUXACCESSIBILITYSUPPORT_VERSION 0x050F08 #endif // QT_QTLINUXACCESSIBILITYSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtMockPlugins1/qtmockplugins1version.h qtbase-opensource-src-5.15.8+dfsg/include/QtMockPlugins1/qtmockplugins1version.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtMockPlugins1/qtmockplugins1version.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtMockPlugins1/qtmockplugins1version.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTMOCKPLUGINS1_VERSION_H #define QT_QTMOCKPLUGINS1_VERSION_H -#define QTMOCKPLUGINS1_VERSION_STR "5.15.3" +#define QTMOCKPLUGINS1_VERSION_STR "5.15.8" -#define QTMOCKPLUGINS1_VERSION 0x050F03 +#define QTMOCKPLUGINS1_VERSION 0x050F08 #endif // QT_QTMOCKPLUGINS1_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtMockPlugins2/qtmockplugins2version.h qtbase-opensource-src-5.15.8+dfsg/include/QtMockPlugins2/qtmockplugins2version.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtMockPlugins2/qtmockplugins2version.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtMockPlugins2/qtmockplugins2version.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTMOCKPLUGINS2_VERSION_H #define QT_QTMOCKPLUGINS2_VERSION_H -#define QTMOCKPLUGINS2_VERSION_STR "5.15.3" +#define QTMOCKPLUGINS2_VERSION_STR "5.15.8" -#define QTMOCKPLUGINS2_VERSION 0x050F03 +#define QTMOCKPLUGINS2_VERSION 0x050F08 #endif // QT_QTMOCKPLUGINS2_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtMockPlugins3/qtmockplugins3version.h qtbase-opensource-src-5.15.8+dfsg/include/QtMockPlugins3/qtmockplugins3version.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtMockPlugins3/qtmockplugins3version.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtMockPlugins3/qtmockplugins3version.h 2022-11-13 04:40:55.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTMOCKPLUGINS3_VERSION_H #define QT_QTMOCKPLUGINS3_VERSION_H -#define QTMOCKPLUGINS3_VERSION_STR "5.15.3" +#define QTMOCKPLUGINS3_VERSION_STR "5.15.8" -#define QTMOCKPLUGINS3_VERSION 0x050F03 +#define QTMOCKPLUGINS3_VERSION 0x050F08 #endif // QT_QTMOCKPLUGINS3_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/bitstreams_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/bitstreams_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/bitstreams_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/bitstreams_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/http2/bitstreams_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/hpack_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/hpack_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/hpack_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/hpack_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/http2/hpack_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/hpacktable_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/hpacktable_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/hpacktable_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/hpacktable_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/http2/hpacktable_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/http2frames_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/http2frames_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/http2frames_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/http2frames_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/http2/http2frames_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/http2protocol_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/http2protocol_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/http2protocol_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/http2protocol_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/http2/http2protocol_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/http2streams_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/http2streams_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/http2streams_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/http2streams_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/http2/http2streams_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/huffman_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/huffman_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/huffman_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/huffman_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/http2/huffman_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractnetworkcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractnetworkcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractnetworkcache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractnetworkcache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qabstractnetworkcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractprotocolhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractprotocolhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractprotocolhandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractprotocolhandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qabstractprotocolhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractsocket_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractsocket_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractsocket_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractsocket_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/socket/qabstractsocket_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractsocketengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractsocketengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractsocketengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qabstractsocketengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/socket/qabstractsocketengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qasn1element_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qasn1element_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qasn1element_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qasn1element_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qasn1element_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qauthenticator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qauthenticator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qauthenticator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qauthenticator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/kernel/qauthenticator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qbearerengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qbearerengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qbearerengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qbearerengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/bearer/qbearerengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qbearerplugin_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qbearerplugin_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qbearerplugin_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qbearerplugin_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/bearer/qbearerplugin_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qdnslookup_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qdnslookup_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qdnslookup_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qdnslookup_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/kernel/qdnslookup_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qdtls_openssl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qdtls_openssl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qdtls_openssl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qdtls_openssl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qdtls_openssl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qdtls_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qdtls_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qdtls_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qdtls_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qdtls_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qftp_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qftp_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qftp_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qftp_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qftp_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhostaddress_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhostaddress_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhostaddress_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhostaddress_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/kernel/qhostaddress_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhostinfo_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhostinfo_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhostinfo_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhostinfo_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/kernel/qhostinfo_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhsts_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhsts_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhsts_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhsts_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qhsts_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhstsstore_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhstsstore_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhstsstore_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhstsstore_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qhstsstore_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttp2protocolhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttp2protocolhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttp2protocolhandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttp2protocolhandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qhttp2protocolhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpmultipart_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpmultipart_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpmultipart_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpmultipart_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qhttpmultipart_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkconnection_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkconnection_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkconnection_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkconnection_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qhttpnetworkconnection_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkconnectionchannel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkconnectionchannel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkconnectionchannel_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkconnectionchannel_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qhttpnetworkconnectionchannel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkheader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkheader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkheader_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkheader_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qhttpnetworkheader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkreply_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkreply_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkreply_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkreply_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qhttpnetworkreply_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkrequest_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkrequest_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkrequest_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpnetworkrequest_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qhttpnetworkrequest_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpprotocolhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpprotocolhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpprotocolhandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpprotocolhandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qhttpprotocolhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpsocketengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpsocketengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpsocketengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpsocketengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/socket/qhttpsocketengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpthreaddelegate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpthreaddelegate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpthreaddelegate_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qhttpthreaddelegate_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qhttpthreaddelegate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qlocalserver_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qlocalserver_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qlocalserver_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qlocalserver_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/socket/qlocalserver_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qlocalsocket_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qlocalsocket_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qlocalsocket_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qlocalsocket_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/socket/qlocalsocket_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnativesocketengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnativesocketengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnativesocketengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnativesocketengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/socket/qnativesocketengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnativesocketengine_winrt_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnativesocketengine_winrt_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnativesocketengine_winrt_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnativesocketengine_winrt_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/socket/qnativesocketengine_winrt_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnet_unix_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnet_unix_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnet_unix_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnet_unix_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/socket/qnet_unix_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetconmonitor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetconmonitor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetconmonitor_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetconmonitor_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/kernel/qnetconmonitor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessauthenticationmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessauthenticationmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessauthenticationmanager_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessauthenticationmanager_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkaccessauthenticationmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessbackend_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessbackend_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessbackend_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessbackend_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkaccessbackend_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccesscache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccesscache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccesscache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccesscache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkaccesscache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccesscachebackend_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccesscachebackend_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccesscachebackend_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccesscachebackend_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkaccesscachebackend_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessdebugpipebackend_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessdebugpipebackend_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessdebugpipebackend_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessdebugpipebackend_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkaccessdebugpipebackend_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessfilebackend_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessfilebackend_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessfilebackend_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessfilebackend_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkaccessfilebackend_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessftpbackend_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessftpbackend_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessftpbackend_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessftpbackend_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkaccessftpbackend_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessmanager_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkaccessmanager_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkaccessmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkconfigmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkconfigmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkconfigmanager_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkconfigmanager_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/bearer/qnetworkconfigmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkconfiguration_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkconfiguration_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkconfiguration_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkconfiguration_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/bearer/qnetworkconfiguration_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkcookie_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkcookie_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkcookie_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkcookie_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkcookie_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkcookiejar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkcookiejar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkcookiejar_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkcookiejar_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkcookiejar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkdatagram_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkdatagram_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkdatagram_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkdatagram_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/kernel/qnetworkdatagram_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkdiskcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkdiskcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkdiskcache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkdiskcache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkdiskcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkfile_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkfile_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkfile_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkfile_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkfile_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkinterface_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkinterface_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkinterface_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkinterface_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/kernel/qnetworkinterface_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkinterface_uikit_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkinterface_uikit_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkinterface_uikit_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkinterface_uikit_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/kernel/qnetworkinterface_uikit_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkinterface_unix_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkinterface_unix_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkinterface_unix_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkinterface_unix_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/kernel/qnetworkinterface_unix_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreply_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreply_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreply_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreply_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkreply_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplydataimpl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplydataimpl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplydataimpl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplydataimpl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkreplydataimpl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplyfileimpl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplyfileimpl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplyfileimpl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplyfileimpl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkreplyfileimpl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplyhttpimpl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplyhttpimpl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplyhttpimpl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplyhttpimpl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkreplyhttpimpl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplyimpl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplyimpl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplyimpl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplyimpl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkreplyimpl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplywasmimpl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplywasmimpl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplywasmimpl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkreplywasmimpl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkreplywasmimpl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkrequest_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkrequest_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkrequest_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworkrequest_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qnetworkrequest_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworksession_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworksession_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworksession_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qnetworksession_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/bearer/qnetworksession_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qocsp_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qocsp_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qocsp_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qocsp_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qocsp_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qocspresponse_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qocspresponse_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qocspresponse_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qocspresponse_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qocspresponse_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsctpserver_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsctpserver_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsctpserver_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsctpserver_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/socket/qsctpserver_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsctpsocket_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsctpsocket_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsctpsocket_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsctpsocket_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/socket/qsctpsocket_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsharednetworksession_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsharednetworksession_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsharednetworksession_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsharednetworksession_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/bearer/qsharednetworksession_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsocks5socketengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsocks5socketengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsocks5socketengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsocks5socketengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/socket/qsocks5socketengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qspdyprotocolhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qspdyprotocolhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qspdyprotocolhandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qspdyprotocolhandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/access/qspdyprotocolhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qssl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qssl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qssl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qssl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qssl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcertificate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcertificate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcertificate_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcertificate_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qsslcertificate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcertificateextension_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcertificateextension_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcertificateextension_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcertificateextension_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qsslcertificateextension_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcipher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcipher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcipher_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcipher_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qsslcipher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslconfiguration_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslconfiguration_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslconfiguration_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslconfiguration_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qsslconfiguration_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcontext_openssl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcontext_openssl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcontext_openssl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslcontext_openssl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qsslcontext_openssl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qssldiffiehellmanparameters_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qssldiffiehellmanparameters_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qssldiffiehellmanparameters_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qssldiffiehellmanparameters_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qssldiffiehellmanparameters_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslkey_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslkey_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslkey_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslkey_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qsslkey_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslpresharedkeyauthenticator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslpresharedkeyauthenticator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslpresharedkeyauthenticator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslpresharedkeyauthenticator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qsslpresharedkeyauthenticator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_mac_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_mac_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_mac_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_mac_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qsslsocket_mac_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_openssl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_openssl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_openssl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_openssl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qsslsocket_openssl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_openssl_symbols_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_openssl_symbols_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_openssl_symbols_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_openssl_symbols_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qsslsocket_openssl_symbols_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qsslsocket_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_schannel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_schannel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_schannel_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_schannel_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qsslsocket_schannel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_winrt_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_winrt_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_winrt_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qsslsocket_winrt_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qsslsocket_winrt_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qtcpserver_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qtcpserver_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qtcpserver_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qtcpserver_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/socket/qtcpserver_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qtcpsocket_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qtcpsocket_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qtcpsocket_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qtcpsocket_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/socket/qtcpsocket_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qtnetworkglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qtnetworkglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qtnetworkglobal_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qtnetworkglobal_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/kernel/qtnetworkglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qurlinfo_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qurlinfo_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qurlinfo_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qurlinfo_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/kernel/qurlinfo_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qwindowscarootfetcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qwindowscarootfetcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qwindowscarootfetcher_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.3/QtNetwork/private/qwindowscarootfetcher_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/network/ssl/qwindowscarootfetcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/bitstreams_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/bitstreams_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/bitstreams_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/bitstreams_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/http2/bitstreams_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/hpack_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/hpack_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/hpack_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/hpack_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/http2/hpack_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/hpacktable_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/hpacktable_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/hpacktable_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/hpacktable_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/http2/hpacktable_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/http2frames_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/http2frames_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/http2frames_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/http2frames_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/http2/http2frames_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/http2protocol_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/http2protocol_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/http2protocol_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/http2protocol_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/http2/http2protocol_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/http2streams_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/http2streams_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/http2streams_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/http2streams_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/http2/http2streams_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/huffman_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/huffman_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/huffman_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/huffman_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/http2/huffman_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractnetworkcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractnetworkcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractnetworkcache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractnetworkcache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qabstractnetworkcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractprotocolhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractprotocolhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractprotocolhandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractprotocolhandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qabstractprotocolhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractsocket_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractsocket_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractsocket_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractsocket_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/socket/qabstractsocket_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractsocketengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractsocketengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractsocketengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qabstractsocketengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/socket/qabstractsocketengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qasn1element_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qasn1element_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qasn1element_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qasn1element_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qasn1element_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qauthenticator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qauthenticator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qauthenticator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qauthenticator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/kernel/qauthenticator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qbearerengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qbearerengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qbearerengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qbearerengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/bearer/qbearerengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qbearerplugin_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qbearerplugin_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qbearerplugin_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qbearerplugin_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/bearer/qbearerplugin_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qdnslookup_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qdnslookup_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qdnslookup_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qdnslookup_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/kernel/qdnslookup_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qdtls_openssl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qdtls_openssl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qdtls_openssl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qdtls_openssl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qdtls_openssl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qdtls_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qdtls_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qdtls_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qdtls_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qdtls_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qftp_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qftp_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qftp_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qftp_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qftp_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhostaddress_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhostaddress_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhostaddress_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhostaddress_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/kernel/qhostaddress_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhostinfo_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhostinfo_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhostinfo_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhostinfo_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/kernel/qhostinfo_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhsts_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhsts_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhsts_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhsts_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qhsts_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhstsstore_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhstsstore_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhstsstore_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhstsstore_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qhstsstore_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttp2protocolhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttp2protocolhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttp2protocolhandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttp2protocolhandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qhttp2protocolhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpmultipart_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpmultipart_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpmultipart_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpmultipart_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qhttpmultipart_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkconnection_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkconnection_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkconnection_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkconnection_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qhttpnetworkconnection_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkconnectionchannel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkconnectionchannel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkconnectionchannel_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkconnectionchannel_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qhttpnetworkconnectionchannel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkheader_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkheader_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkheader_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkheader_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qhttpnetworkheader_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkreply_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkreply_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkreply_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkreply_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qhttpnetworkreply_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkrequest_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkrequest_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkrequest_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpnetworkrequest_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qhttpnetworkrequest_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpprotocolhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpprotocolhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpprotocolhandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpprotocolhandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qhttpprotocolhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpsocketengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpsocketengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpsocketengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpsocketengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/socket/qhttpsocketengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpthreaddelegate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpthreaddelegate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpthreaddelegate_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qhttpthreaddelegate_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qhttpthreaddelegate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qlocalserver_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qlocalserver_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qlocalserver_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qlocalserver_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/socket/qlocalserver_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qlocalsocket_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qlocalsocket_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qlocalsocket_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qlocalsocket_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/socket/qlocalsocket_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnativesocketengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnativesocketengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnativesocketengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnativesocketengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/socket/qnativesocketengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnativesocketengine_winrt_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnativesocketengine_winrt_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnativesocketengine_winrt_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnativesocketengine_winrt_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/socket/qnativesocketengine_winrt_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnet_unix_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnet_unix_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnet_unix_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnet_unix_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/socket/qnet_unix_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetconmonitor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetconmonitor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetconmonitor_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetconmonitor_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/kernel/qnetconmonitor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessauthenticationmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessauthenticationmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessauthenticationmanager_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessauthenticationmanager_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkaccessauthenticationmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessbackend_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessbackend_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessbackend_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessbackend_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkaccessbackend_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccesscache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccesscache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccesscache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccesscache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkaccesscache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccesscachebackend_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccesscachebackend_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccesscachebackend_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccesscachebackend_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkaccesscachebackend_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessdebugpipebackend_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessdebugpipebackend_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessdebugpipebackend_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessdebugpipebackend_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkaccessdebugpipebackend_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessfilebackend_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessfilebackend_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessfilebackend_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessfilebackend_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkaccessfilebackend_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessftpbackend_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessftpbackend_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessftpbackend_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessftpbackend_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkaccessftpbackend_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessmanager_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkaccessmanager_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkaccessmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkconfigmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkconfigmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkconfigmanager_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkconfigmanager_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/bearer/qnetworkconfigmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkconfiguration_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkconfiguration_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkconfiguration_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkconfiguration_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/bearer/qnetworkconfiguration_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkcookie_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkcookie_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkcookie_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkcookie_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkcookie_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkcookiejar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkcookiejar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkcookiejar_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkcookiejar_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkcookiejar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkdatagram_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkdatagram_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkdatagram_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkdatagram_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/kernel/qnetworkdatagram_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkdiskcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkdiskcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkdiskcache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkdiskcache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkdiskcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkfile_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkfile_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkfile_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkfile_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkfile_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkinterface_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkinterface_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkinterface_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkinterface_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/kernel/qnetworkinterface_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkinterface_uikit_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkinterface_uikit_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkinterface_uikit_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkinterface_uikit_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/kernel/qnetworkinterface_uikit_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkinterface_unix_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkinterface_unix_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkinterface_unix_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkinterface_unix_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/kernel/qnetworkinterface_unix_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreply_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreply_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreply_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreply_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkreply_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplydataimpl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplydataimpl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplydataimpl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplydataimpl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkreplydataimpl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplyfileimpl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplyfileimpl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplyfileimpl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplyfileimpl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkreplyfileimpl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplyhttpimpl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplyhttpimpl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplyhttpimpl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplyhttpimpl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkreplyhttpimpl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplyimpl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplyimpl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplyimpl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplyimpl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkreplyimpl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplywasmimpl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplywasmimpl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplywasmimpl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkreplywasmimpl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkreplywasmimpl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkrequest_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkrequest_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkrequest_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworkrequest_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qnetworkrequest_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworksession_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworksession_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworksession_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qnetworksession_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/bearer/qnetworksession_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qocsp_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qocsp_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qocsp_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qocsp_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qocsp_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qocspresponse_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qocspresponse_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qocspresponse_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qocspresponse_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qocspresponse_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsctpserver_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsctpserver_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsctpserver_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsctpserver_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/socket/qsctpserver_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsctpsocket_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsctpsocket_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsctpsocket_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsctpsocket_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/socket/qsctpsocket_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsharednetworksession_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsharednetworksession_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsharednetworksession_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsharednetworksession_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/bearer/qsharednetworksession_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsocks5socketengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsocks5socketengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsocks5socketengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsocks5socketengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/socket/qsocks5socketengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qspdyprotocolhandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qspdyprotocolhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qspdyprotocolhandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qspdyprotocolhandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/access/qspdyprotocolhandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qssl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qssl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qssl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qssl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qssl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcertificate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcertificate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcertificate_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcertificate_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qsslcertificate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcertificateextension_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcertificateextension_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcertificateextension_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcertificateextension_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qsslcertificateextension_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcipher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcipher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcipher_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcipher_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qsslcipher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslconfiguration_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslconfiguration_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslconfiguration_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslconfiguration_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qsslconfiguration_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcontext_openssl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcontext_openssl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcontext_openssl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslcontext_openssl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qsslcontext_openssl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qssldiffiehellmanparameters_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qssldiffiehellmanparameters_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qssldiffiehellmanparameters_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qssldiffiehellmanparameters_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qssldiffiehellmanparameters_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslkey_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslkey_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslkey_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslkey_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qsslkey_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslpresharedkeyauthenticator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslpresharedkeyauthenticator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslpresharedkeyauthenticator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslpresharedkeyauthenticator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qsslpresharedkeyauthenticator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_mac_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_mac_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_mac_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_mac_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qsslsocket_mac_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_openssl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_openssl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_openssl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_openssl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qsslsocket_openssl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_openssl_symbols_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_openssl_symbols_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_openssl_symbols_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_openssl_symbols_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qsslsocket_openssl_symbols_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qsslsocket_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_schannel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_schannel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_schannel_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_schannel_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qsslsocket_schannel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_winrt_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_winrt_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_winrt_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qsslsocket_winrt_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qsslsocket_winrt_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qtcpserver_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qtcpserver_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qtcpserver_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qtcpserver_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/socket/qtcpserver_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qtcpsocket_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qtcpsocket_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qtcpsocket_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qtcpsocket_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/socket/qtcpsocket_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qtnetworkglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qtnetworkglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qtnetworkglobal_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qtnetworkglobal_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/kernel/qtnetworkglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qurlinfo_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qurlinfo_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qurlinfo_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qurlinfo_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/kernel/qurlinfo_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qwindowscarootfetcher_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qwindowscarootfetcher_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qwindowscarootfetcher_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/5.15.8/QtNetwork/private/qwindowscarootfetcher_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/network/ssl/qwindowscarootfetcher_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/qtnetworkversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/qtnetworkversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtNetwork/qtnetworkversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtNetwork/qtnetworkversion.h 2022-11-13 04:40:56.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTNETWORK_VERSION_H #define QT_QTNETWORK_VERSION_H -#define QTNETWORK_VERSION_STR "5.15.3" +#define QTNETWORK_VERSION_STR "5.15.8" -#define QTNETWORK_VERSION 0x050F03 +#define QTNETWORK_VERSION 0x050F08 #endif // QT_QTNETWORK_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qgl2pexvertexarray_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qgl2pexvertexarray_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qgl2pexvertexarray_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qgl2pexvertexarray_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qgl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qgl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qgl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qgl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/opengl/qgl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglcustomshaderstage_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglcustomshaderstage_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglcustomshaderstage_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglcustomshaderstage_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/opengl/gl2paintengineex/qglcustomshaderstage_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglengineshadermanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglengineshadermanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglengineshadermanager_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglengineshadermanager_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/opengl/gl2paintengineex/qglengineshadermanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglengineshadersource_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglengineshadersource_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglengineshadersource_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglengineshadersource_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/opengl/gl2paintengineex/qglengineshadersource_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglframebufferobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglframebufferobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglframebufferobject_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglframebufferobject_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/opengl/qglframebufferobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglgradientcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglgradientcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglgradientcache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglgradientcache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/opengl/gl2paintengineex/qglgradientcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglpaintdevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglpaintdevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglpaintdevice_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglpaintdevice_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/opengl/qglpaintdevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglpixelbuffer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglpixelbuffer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglpixelbuffer_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglpixelbuffer_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/opengl/qglpixelbuffer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglshadercache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglshadercache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglshadercache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qglshadercache_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/opengl/gl2paintengineex/qglshadercache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qgraphicsshadereffect_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qgraphicsshadereffect_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qgraphicsshadereffect_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qgraphicsshadereffect_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/opengl/qgraphicsshadereffect_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qpaintengineex_opengl2_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qpaintengineex_opengl2_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qpaintengineex_opengl2_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qpaintengineex_opengl2_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qtextureglyphcache_gl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qtextureglyphcache_gl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qtextureglyphcache_gl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.3/QtOpenGL/private/qtextureglyphcache_gl_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qgl2pexvertexarray_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qgl2pexvertexarray_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qgl2pexvertexarray_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qgl2pexvertexarray_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qgl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qgl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qgl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qgl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/opengl/qgl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglcustomshaderstage_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglcustomshaderstage_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglcustomshaderstage_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglcustomshaderstage_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/opengl/gl2paintengineex/qglcustomshaderstage_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglengineshadermanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglengineshadermanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglengineshadermanager_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglengineshadermanager_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/opengl/gl2paintengineex/qglengineshadermanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglengineshadersource_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglengineshadersource_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglengineshadersource_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglengineshadersource_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/opengl/gl2paintengineex/qglengineshadersource_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglframebufferobject_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglframebufferobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglframebufferobject_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglframebufferobject_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/opengl/qglframebufferobject_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglgradientcache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglgradientcache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglgradientcache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglgradientcache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/opengl/gl2paintengineex/qglgradientcache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglpaintdevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglpaintdevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglpaintdevice_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglpaintdevice_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/opengl/qglpaintdevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglpixelbuffer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglpixelbuffer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglpixelbuffer_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglpixelbuffer_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/opengl/qglpixelbuffer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglshadercache_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglshadercache_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglshadercache_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qglshadercache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/opengl/gl2paintengineex/qglshadercache_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qgraphicsshadereffect_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qgraphicsshadereffect_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qgraphicsshadereffect_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qgraphicsshadereffect_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/opengl/qgraphicsshadereffect_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qpaintengineex_opengl2_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qpaintengineex_opengl2_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qpaintengineex_opengl2_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qpaintengineex_opengl2_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qtextureglyphcache_gl_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qtextureglyphcache_gl_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qtextureglyphcache_gl_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/5.15.8/QtOpenGL/private/qtextureglyphcache_gl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/qtopenglversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/qtopenglversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGL/qtopenglversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGL/qtopenglversion.h 2022-11-13 04:40:55.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTOPENGL_VERSION_H #define QT_QTOPENGL_VERSION_H -#define QTOPENGL_VERSION_STR "5.15.3" +#define QTOPENGL_VERSION_STR "5.15.8" -#define QTOPENGL_VERSION 0x050F03 +#define QTOPENGL_VERSION 0x050F08 #endif // QT_QTOPENGL_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGLExtensions/qtopenglextensionsversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGLExtensions/qtopenglextensionsversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtOpenGLExtensions/qtopenglextensionsversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtOpenGLExtensions/qtopenglextensionsversion.h 2022-11-13 04:40:55.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTOPENGLEXTENSIONS_VERSION_H #define QT_QTOPENGLEXTENSIONS_VERSION_H -#define QTOPENGLEXTENSIONS_VERSION_STR "5.15.3" +#define QTOPENGLEXTENSIONS_VERSION_STR "5.15.8" -#define QTOPENGLEXTENSIONS_VERSION 0x050F03 +#define QTOPENGLEXTENSIONS_VERSION 0x050F08 #endif // QT_QTOPENGLEXTENSIONS_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPlatformCompositorSupport/5.15.3/QtPlatformCompositorSupport/private/qopenglcompositor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPlatformCompositorSupport/5.15.3/QtPlatformCompositorSupport/private/qopenglcompositor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPlatformCompositorSupport/5.15.3/QtPlatformCompositorSupport/private/qopenglcompositor_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPlatformCompositorSupport/5.15.3/QtPlatformCompositorSupport/private/qopenglcompositor_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/platformcompositor/qopenglcompositor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPlatformCompositorSupport/5.15.3/QtPlatformCompositorSupport/private/qopenglcompositorbackingstore_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPlatformCompositorSupport/5.15.3/QtPlatformCompositorSupport/private/qopenglcompositorbackingstore_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPlatformCompositorSupport/5.15.3/QtPlatformCompositorSupport/private/qopenglcompositorbackingstore_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPlatformCompositorSupport/5.15.3/QtPlatformCompositorSupport/private/qopenglcompositorbackingstore_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/platformcompositor/qopenglcompositorbackingstore_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPlatformCompositorSupport/5.15.8/QtPlatformCompositorSupport/private/qopenglcompositor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPlatformCompositorSupport/5.15.8/QtPlatformCompositorSupport/private/qopenglcompositor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPlatformCompositorSupport/5.15.8/QtPlatformCompositorSupport/private/qopenglcompositor_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPlatformCompositorSupport/5.15.8/QtPlatformCompositorSupport/private/qopenglcompositor_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/platformcompositor/qopenglcompositor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPlatformCompositorSupport/5.15.8/QtPlatformCompositorSupport/private/qopenglcompositorbackingstore_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPlatformCompositorSupport/5.15.8/QtPlatformCompositorSupport/private/qopenglcompositorbackingstore_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPlatformCompositorSupport/5.15.8/QtPlatformCompositorSupport/private/qopenglcompositorbackingstore_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPlatformCompositorSupport/5.15.8/QtPlatformCompositorSupport/private/qopenglcompositorbackingstore_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/platformcompositor/qopenglcompositorbackingstore_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPlatformCompositorSupport/qtplatformcompositorsupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtPlatformCompositorSupport/qtplatformcompositorsupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPlatformCompositorSupport/qtplatformcompositorsupportversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPlatformCompositorSupport/qtplatformcompositorsupportversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTPLATFORMCOMPOSITORSUPPORT_VERSION_H #define QT_QTPLATFORMCOMPOSITORSUPPORT_VERSION_H -#define QTPLATFORMCOMPOSITORSUPPORT_VERSION_STR "5.15.3" +#define QTPLATFORMCOMPOSITORSUPPORT_VERSION_STR "5.15.8" -#define QTPLATFORMCOMPOSITORSUPPORT_VERSION 0x050F03 +#define QTPLATFORMCOMPOSITORSUPPORT_VERSION 0x050F08 #endif // QT_QTPLATFORMCOMPOSITORSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPlatformHeaders/qtplatformheadersversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtPlatformHeaders/qtplatformheadersversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPlatformHeaders/qtplatformheadersversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPlatformHeaders/qtplatformheadersversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTPLATFORMHEADERS_VERSION_H #define QT_QTPLATFORMHEADERS_VERSION_H -#define QTPLATFORMHEADERS_VERSION_STR "5.15.3" +#define QTPLATFORMHEADERS_VERSION_STR "5.15.8" -#define QTPLATFORMHEADERS_VERSION 0x050F03 +#define QTPLATFORMHEADERS_VERSION 0x050F08 #endif // QT_QTPLATFORMHEADERS_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qabstractprintdialog_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qabstractprintdialog_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qabstractprintdialog_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qabstractprintdialog_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/dialogs/qabstractprintdialog_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qcups_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qcups_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qcups_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qcups_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/kernel/qcups_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qcupsjobwidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qcupsjobwidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qcupsjobwidget_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qcupsjobwidget_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/widgets/qcupsjobwidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpagesetupdialog_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpagesetupdialog_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpagesetupdialog_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpagesetupdialog_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/dialogs/qpagesetupdialog_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpagesetupdialog_unix_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpagesetupdialog_unix_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpagesetupdialog_unix_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpagesetupdialog_unix_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/dialogs/qpagesetupdialog_unix_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpaintengine_alpha_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpaintengine_alpha_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpaintengine_alpha_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpaintengine_alpha_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/kernel/qpaintengine_alpha_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpaintengine_preview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpaintengine_preview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpaintengine_preview_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qpaintengine_preview_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/kernel/qpaintengine_preview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprint_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprint_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprint_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprint_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/kernel/qprint_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprintdevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprintdevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprintdevice_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprintdevice_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/kernel/qprintdevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprintengine_pdf_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprintengine_pdf_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprintengine_pdf_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprintengine_pdf_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/kernel/qprintengine_pdf_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprintengine_win_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprintengine_win_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprintengine_win_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprintengine_win_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/kernel/qprintengine_win_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprinter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprinter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprinter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprinter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/kernel/qprinter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprinterinfo_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprinterinfo_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprinterinfo_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qprinterinfo_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/kernel/qprinterinfo_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qtprintsupportglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qtprintsupportglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qtprintsupportglobal_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/private/qtprintsupportglobal_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/kernel/qtprintsupportglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/qpa/qplatformprintdevice.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/qpa/qplatformprintdevice.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/qpa/qplatformprintdevice.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/qpa/qplatformprintdevice.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/kernel/qplatformprintdevice.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/qpa/qplatformprintersupport.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/qpa/qplatformprintersupport.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/qpa/qplatformprintersupport.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/qpa/qplatformprintersupport.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/kernel/qplatformprintersupport.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/qpa/qplatformprintplugin.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/qpa/qplatformprintplugin.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/qpa/qplatformprintplugin.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.3/QtPrintSupport/qpa/qplatformprintplugin.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/printsupport/kernel/qplatformprintplugin.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qabstractprintdialog_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qabstractprintdialog_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qabstractprintdialog_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qabstractprintdialog_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/dialogs/qabstractprintdialog_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qcups_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qcups_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qcups_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qcups_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/kernel/qcups_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qcupsjobwidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qcupsjobwidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qcupsjobwidget_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qcupsjobwidget_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/widgets/qcupsjobwidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpagesetupdialog_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpagesetupdialog_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpagesetupdialog_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpagesetupdialog_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/dialogs/qpagesetupdialog_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpagesetupdialog_unix_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpagesetupdialog_unix_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpagesetupdialog_unix_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpagesetupdialog_unix_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/dialogs/qpagesetupdialog_unix_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpaintengine_alpha_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpaintengine_alpha_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpaintengine_alpha_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpaintengine_alpha_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/kernel/qpaintengine_alpha_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpaintengine_preview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpaintengine_preview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpaintengine_preview_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qpaintengine_preview_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/kernel/qpaintengine_preview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprint_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprint_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprint_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprint_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/kernel/qprint_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprintdevice_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprintdevice_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprintdevice_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprintdevice_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/kernel/qprintdevice_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprintengine_pdf_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprintengine_pdf_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprintengine_pdf_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprintengine_pdf_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/kernel/qprintengine_pdf_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprintengine_win_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprintengine_win_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprintengine_win_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprintengine_win_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/kernel/qprintengine_win_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprinter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprinter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprinter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprinter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/kernel/qprinter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprinterinfo_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprinterinfo_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprinterinfo_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qprinterinfo_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/kernel/qprinterinfo_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qtprintsupportglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qtprintsupportglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qtprintsupportglobal_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/private/qtprintsupportglobal_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/kernel/qtprintsupportglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/qpa/qplatformprintdevice.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/qpa/qplatformprintdevice.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/qpa/qplatformprintdevice.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/qpa/qplatformprintdevice.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/kernel/qplatformprintdevice.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/qpa/qplatformprintersupport.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/qpa/qplatformprintersupport.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/qpa/qplatformprintersupport.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/qpa/qplatformprintersupport.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/kernel/qplatformprintersupport.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/qpa/qplatformprintplugin.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/qpa/qplatformprintplugin.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/qpa/qplatformprintplugin.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/5.15.8/QtPrintSupport/qpa/qplatformprintplugin.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/printsupport/kernel/qplatformprintplugin.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/qtprintsupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/qtprintsupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtPrintSupport/qtprintsupportversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtPrintSupport/qtprintsupportversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTPRINTSUPPORT_VERSION_H #define QT_QTPRINTSUPPORT_VERSION_H -#define QTPRINTSUPPORT_VERSION_STR "5.15.3" +#define QTPRINTSUPPORT_VERSION_STR "5.15.8" -#define QTPRINTSUPPORT_VERSION 0x050F03 +#define QTPRINTSUPPORT_VERSION 0x050F08 #endif // QT_QTPRINTSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtServiceSupport/5.15.3/QtServiceSupport/private/qgenericunixservices_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtServiceSupport/5.15.3/QtServiceSupport/private/qgenericunixservices_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtServiceSupport/5.15.3/QtServiceSupport/private/qgenericunixservices_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtServiceSupport/5.15.3/QtServiceSupport/private/qgenericunixservices_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/services/genericunix/qgenericunixservices_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtServiceSupport/5.15.8/QtServiceSupport/private/qgenericunixservices_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtServiceSupport/5.15.8/QtServiceSupport/private/qgenericunixservices_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtServiceSupport/5.15.8/QtServiceSupport/private/qgenericunixservices_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtServiceSupport/5.15.8/QtServiceSupport/private/qgenericunixservices_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/services/genericunix/qgenericunixservices_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtServiceSupport/qtservicesupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtServiceSupport/qtservicesupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtServiceSupport/qtservicesupportversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtServiceSupport/qtservicesupportversion.h 2022-11-13 04:40:55.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTSERVICESUPPORT_VERSION_H #define QT_QTSERVICESUPPORT_VERSION_H -#define QTSERVICESUPPORT_VERSION_STR "5.15.3" +#define QTSERVICESUPPORT_VERSION_STR "5.15.8" -#define QTSERVICESUPPORT_VERSION 0x050F03 +#define QTSERVICESUPPORT_VERSION 0x050F08 #endif // QT_QTSERVICESUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlcachedresult_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlcachedresult_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlcachedresult_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlcachedresult_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/sql/kernel/qsqlcachedresult_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.3/QtSql/private/qsqldriver_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.3/QtSql/private/qsqldriver_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.3/QtSql/private/qsqldriver_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.3/QtSql/private/qsqldriver_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/sql/kernel/qsqldriver_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlnulldriver_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlnulldriver_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlnulldriver_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlnulldriver_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/sql/kernel/qsqlnulldriver_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlquerymodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlquerymodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlquerymodel_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlquerymodel_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/sql/models/qsqlquerymodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlresult_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlresult_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlresult_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.3/QtSql/private/qsqlresult_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/sql/kernel/qsqlresult_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.3/QtSql/private/qsqltablemodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.3/QtSql/private/qsqltablemodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.3/QtSql/private/qsqltablemodel_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.3/QtSql/private/qsqltablemodel_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/sql/models/qsqltablemodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.3/QtSql/private/qtsqlglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.3/QtSql/private/qtsqlglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.3/QtSql/private/qtsqlglobal_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.3/QtSql/private/qtsqlglobal_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/sql/kernel/qtsqlglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlcachedresult_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlcachedresult_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlcachedresult_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlcachedresult_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/sql/kernel/qsqlcachedresult_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.8/QtSql/private/qsqldriver_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.8/QtSql/private/qsqldriver_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.8/QtSql/private/qsqldriver_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.8/QtSql/private/qsqldriver_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/sql/kernel/qsqldriver_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlnulldriver_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlnulldriver_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlnulldriver_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlnulldriver_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/sql/kernel/qsqlnulldriver_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlquerymodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlquerymodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlquerymodel_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlquerymodel_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/sql/models/qsqlquerymodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlresult_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlresult_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlresult_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.8/QtSql/private/qsqlresult_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/sql/kernel/qsqlresult_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.8/QtSql/private/qsqltablemodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.8/QtSql/private/qsqltablemodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.8/QtSql/private/qsqltablemodel_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.8/QtSql/private/qsqltablemodel_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/sql/models/qsqltablemodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.8/QtSql/private/qtsqlglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.8/QtSql/private/qtsqlglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/5.15.8/QtSql/private/qtsqlglobal_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/5.15.8/QtSql/private/qtsqlglobal_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/sql/kernel/qtsqlglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtSql/qtsqlversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtSql/qtsqlversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtSql/qtsqlversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtSql/qtsqlversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTSQL_VERSION_H #define QT_QTSQL_VERSION_H -#define QTSQL_VERSION_STR "5.15.3" +#define QTSQL_VERSION_STR "5.15.8" -#define QTSQL_VERSION 0x050F03 +#define QTSQL_VERSION 0x050F08 #endif // QT_QTSQL_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/callgrind_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/callgrind_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/callgrind_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/callgrind_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/3rdparty/callgrind_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/cycle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/cycle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/cycle_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/cycle_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/3rdparty/cycle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/linux_perf_event_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/linux_perf_event_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/linux_perf_event_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/linux_perf_event_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/3rdparty/linux_perf_event_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qabstracttestlogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qabstracttestlogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qabstracttestlogger_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qabstracttestlogger_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qabstracttestlogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qappletestlogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qappletestlogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qappletestlogger_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qappletestlogger_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qappletestlogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmark_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmark_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmark_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmark_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qbenchmark_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkevent_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkevent_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkevent_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkevent_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qbenchmarkevent_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkmeasurement_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkmeasurement_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkmeasurement_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkmeasurement_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qbenchmarkmeasurement_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkmetric_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkmetric_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkmetric_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkmetric_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qbenchmarkmetric_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkperfevents_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkperfevents_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkperfevents_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkperfevents_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qbenchmarkperfevents_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarktimemeasurers_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarktimemeasurers_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarktimemeasurers_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarktimemeasurers_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qbenchmarktimemeasurers_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkvalgrind_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkvalgrind_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkvalgrind_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qbenchmarkvalgrind_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qbenchmarkvalgrind_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qcsvbenchmarklogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qcsvbenchmarklogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qcsvbenchmarklogger_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qcsvbenchmarklogger_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qcsvbenchmarklogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qjunittestlogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qjunittestlogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qjunittestlogger_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qjunittestlogger_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qjunittestlogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qplaintestlogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qplaintestlogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qplaintestlogger_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qplaintestlogger_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qplaintestlogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qsignaldumper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qsignaldumper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qsignaldumper_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qsignaldumper_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qsignaldumper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtaptestlogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtaptestlogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtaptestlogger_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtaptestlogger_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qtaptestlogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qteamcitylogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qteamcitylogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qteamcitylogger_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qteamcitylogger_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qteamcitylogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestblacklist_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestblacklist_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestblacklist_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestblacklist_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qtestblacklist_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestcoreelement_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestcoreelement_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestcoreelement_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestcoreelement_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qtestcoreelement_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestcorelist_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestcorelist_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestcorelist_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestcorelist_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qtestcorelist_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestelement_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestelement_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestelement_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestelement_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qtestelement_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestelementattribute_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestelementattribute_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestelementattribute_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestelementattribute_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qtestelementattribute_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtesthelpers_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtesthelpers_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtesthelpers_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtesthelpers_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qtesthelpers_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestjunitstreamer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestjunitstreamer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestjunitstreamer_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestjunitstreamer_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qtestjunitstreamer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestlog_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestlog_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestlog_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestlog_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qtestlog_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestresult_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestresult_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestresult_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestresult_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qtestresult_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtesttable_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtesttable_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtesttable_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtesttable_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qtesttable_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestutil_macos_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestutil_macos_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qtestutil_macos_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qtestutil_macos_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qtestutil_macos_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qxctestlogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qxctestlogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qxctestlogger_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qxctestlogger_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qxctestlogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qxmltestlogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qxmltestlogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/qxmltestlogger_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/qxmltestlogger_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/qxmltestlogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/valgrind_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/valgrind_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.3/QtTest/private/valgrind_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.3/QtTest/private/valgrind_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/testlib/3rdparty/valgrind_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/callgrind_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/callgrind_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/callgrind_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/callgrind_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/3rdparty/callgrind_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/cycle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/cycle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/cycle_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/cycle_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/3rdparty/cycle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/linux_perf_event_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/linux_perf_event_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/linux_perf_event_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/linux_perf_event_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/3rdparty/linux_perf_event_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qabstracttestlogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qabstracttestlogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qabstracttestlogger_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qabstracttestlogger_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qabstracttestlogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qappletestlogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qappletestlogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qappletestlogger_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qappletestlogger_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qappletestlogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmark_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmark_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmark_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmark_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qbenchmark_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkevent_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkevent_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkevent_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkevent_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qbenchmarkevent_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkmeasurement_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkmeasurement_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkmeasurement_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkmeasurement_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qbenchmarkmeasurement_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkmetric_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkmetric_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkmetric_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkmetric_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qbenchmarkmetric_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkperfevents_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkperfevents_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkperfevents_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkperfevents_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qbenchmarkperfevents_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarktimemeasurers_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarktimemeasurers_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarktimemeasurers_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarktimemeasurers_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qbenchmarktimemeasurers_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkvalgrind_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkvalgrind_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkvalgrind_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qbenchmarkvalgrind_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qbenchmarkvalgrind_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qcsvbenchmarklogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qcsvbenchmarklogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qcsvbenchmarklogger_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qcsvbenchmarklogger_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qcsvbenchmarklogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qjunittestlogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qjunittestlogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qjunittestlogger_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qjunittestlogger_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qjunittestlogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qplaintestlogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qplaintestlogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qplaintestlogger_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qplaintestlogger_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qplaintestlogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qsignaldumper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qsignaldumper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qsignaldumper_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qsignaldumper_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qsignaldumper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtaptestlogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtaptestlogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtaptestlogger_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtaptestlogger_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qtaptestlogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qteamcitylogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qteamcitylogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qteamcitylogger_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qteamcitylogger_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qteamcitylogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestblacklist_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestblacklist_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestblacklist_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestblacklist_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qtestblacklist_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestcoreelement_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestcoreelement_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestcoreelement_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestcoreelement_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qtestcoreelement_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestcorelist_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestcorelist_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestcorelist_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestcorelist_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qtestcorelist_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestelement_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestelement_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestelement_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestelement_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qtestelement_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestelementattribute_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestelementattribute_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestelementattribute_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestelementattribute_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qtestelementattribute_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtesthelpers_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtesthelpers_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtesthelpers_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtesthelpers_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qtesthelpers_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestjunitstreamer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestjunitstreamer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestjunitstreamer_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestjunitstreamer_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qtestjunitstreamer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestlog_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestlog_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestlog_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestlog_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qtestlog_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestresult_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestresult_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestresult_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestresult_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qtestresult_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtesttable_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtesttable_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtesttable_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtesttable_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qtesttable_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestutil_macos_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestutil_macos_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qtestutil_macos_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qtestutil_macos_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qtestutil_macos_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qxctestlogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qxctestlogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qxctestlogger_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qxctestlogger_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qxctestlogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qxmltestlogger_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qxmltestlogger_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/qxmltestlogger_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/qxmltestlogger_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/qxmltestlogger_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/valgrind_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/valgrind_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/5.15.8/QtTest/private/valgrind_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/5.15.8/QtTest/private/valgrind_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/testlib/3rdparty/valgrind_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtTest/qttestversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtTest/qttestversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtTest/qttestversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtTest/qttestversion.h 2022-11-13 04:40:55.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTTEST_VERSION_H #define QT_QTTEST_VERSION_H -#define QTTEST_VERSION_STR "5.15.3" +#define QTTEST_VERSION_STR "5.15.8" -#define QTTEST_VERSION 0x050F03 +#define QTTEST_VERSION 0x050F08 #endif // QT_QTTEST_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qabstractfileiconengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qabstractfileiconengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qabstractfileiconengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qabstractfileiconengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/themes/qabstractfileiconengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenuadaptor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenuadaptor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenuadaptor_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenuadaptor_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuadaptor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenubar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenubar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenubar_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenubar_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/themes/genericunix/dbusmenu/qdbusmenubar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenuconnection_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenuconnection_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenuconnection_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenuconnection_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenuregistrarproxy_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenuregistrarproxy_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenuregistrarproxy_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenuregistrarproxy_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuregistrarproxy_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenutypes_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenutypes_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenutypes_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusmenutypes_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/themes/genericunix/dbusmenu/qdbusmenutypes_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusplatformmenu_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusplatformmenu_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusplatformmenu_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbusplatformmenu_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbustrayicon_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbustrayicon_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbustrayicon_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbustrayicon_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/themes/genericunix/dbustray/qdbustrayicon_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbustraytypes_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbustraytypes_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbustraytypes_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qdbustraytypes_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/themes/genericunix/dbustray/qdbustraytypes_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qgenericunixthemes_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qgenericunixthemes_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qgenericunixthemes_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qgenericunixthemes_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/themes/genericunix/qgenericunixthemes_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qstatusnotifieritemadaptor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qstatusnotifieritemadaptor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qstatusnotifieritemadaptor_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qstatusnotifieritemadaptor_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/themes/genericunix/dbustray/qstatusnotifieritemadaptor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qxdgnotificationproxy_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qxdgnotificationproxy_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qxdgnotificationproxy_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.3/QtThemeSupport/private/qxdgnotificationproxy_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/themes/genericunix/dbustray/qxdgnotificationproxy_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qabstractfileiconengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qabstractfileiconengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qabstractfileiconengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qabstractfileiconengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/themes/qabstractfileiconengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenuadaptor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenuadaptor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenuadaptor_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenuadaptor_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuadaptor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenubar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenubar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenubar_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenubar_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/themes/genericunix/dbusmenu/qdbusmenubar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenuconnection_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenuconnection_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenuconnection_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenuconnection_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenuregistrarproxy_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenuregistrarproxy_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenuregistrarproxy_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenuregistrarproxy_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuregistrarproxy_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenutypes_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenutypes_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenutypes_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusmenutypes_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/themes/genericunix/dbusmenu/qdbusmenutypes_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusplatformmenu_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusplatformmenu_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusplatformmenu_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbusplatformmenu_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbustrayicon_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbustrayicon_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbustrayicon_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbustrayicon_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/themes/genericunix/dbustray/qdbustrayicon_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbustraytypes_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbustraytypes_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbustraytypes_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qdbustraytypes_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/themes/genericunix/dbustray/qdbustraytypes_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qgenericunixthemes_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qgenericunixthemes_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qgenericunixthemes_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qgenericunixthemes_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/themes/genericunix/qgenericunixthemes_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qstatusnotifieritemadaptor_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qstatusnotifieritemadaptor_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qstatusnotifieritemadaptor_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qstatusnotifieritemadaptor_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/themes/genericunix/dbustray/qstatusnotifieritemadaptor_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qxdgnotificationproxy_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qxdgnotificationproxy_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qxdgnotificationproxy_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/5.15.8/QtThemeSupport/private/qxdgnotificationproxy_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/themes/genericunix/dbustray/qxdgnotificationproxy_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/qtthemesupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/qtthemesupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtThemeSupport/qtthemesupportversion.h 2021-03-30 02:27:07.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtThemeSupport/qtthemesupportversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTTHEMESUPPORT_VERSION_H #define QT_QTTHEMESUPPORT_VERSION_H -#define QTTHEMESUPPORT_VERSION_STR "5.15.3" +#define QTTHEMESUPPORT_VERSION_STR "5.15.8" -#define QTTHEMESUPPORT_VERSION 0x050F03 +#define QTTHEMESUPPORT_VERSION 0x050F08 #endif // QT_QTTHEMESUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtVulkanSupport/5.15.3/QtVulkanSupport/private/qbasicvulkanplatforminstance_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtVulkanSupport/5.15.3/QtVulkanSupport/private/qbasicvulkanplatforminstance_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtVulkanSupport/5.15.3/QtVulkanSupport/private/qbasicvulkanplatforminstance_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtVulkanSupport/5.15.3/QtVulkanSupport/private/qbasicvulkanplatforminstance_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/vkconvenience/qbasicvulkanplatforminstance_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtVulkanSupport/5.15.3/QtVulkanSupport/private/qvkconvenience_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtVulkanSupport/5.15.3/QtVulkanSupport/private/qvkconvenience_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtVulkanSupport/5.15.3/QtVulkanSupport/private/qvkconvenience_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtVulkanSupport/5.15.3/QtVulkanSupport/private/qvkconvenience_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/vkconvenience/qvkconvenience_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtVulkanSupport/5.15.8/QtVulkanSupport/private/qbasicvulkanplatforminstance_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtVulkanSupport/5.15.8/QtVulkanSupport/private/qbasicvulkanplatforminstance_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtVulkanSupport/5.15.8/QtVulkanSupport/private/qbasicvulkanplatforminstance_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtVulkanSupport/5.15.8/QtVulkanSupport/private/qbasicvulkanplatforminstance_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/vkconvenience/qbasicvulkanplatforminstance_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtVulkanSupport/5.15.8/QtVulkanSupport/private/qvkconvenience_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtVulkanSupport/5.15.8/QtVulkanSupport/private/qvkconvenience_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtVulkanSupport/5.15.8/QtVulkanSupport/private/qvkconvenience_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtVulkanSupport/5.15.8/QtVulkanSupport/private/qvkconvenience_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/vkconvenience/qvkconvenience_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtVulkanSupport/qtvulkansupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtVulkanSupport/qtvulkansupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtVulkanSupport/qtvulkansupportversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtVulkanSupport/qtvulkansupportversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTVULKANSUPPORT_VERSION_H #define QT_QTVULKANSUPPORT_VERSION_H -#define QTVULKANSUPPORT_VERSION_STR "5.15.3" +#define QTVULKANSUPPORT_VERSION_STR "5.15.8" -#define QTVULKANSUPPORT_VERSION 0x050F03 +#define QTVULKANSUPPORT_VERSION 0x050F08 #endif // QT_QTVULKANSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/complexwidgets_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/complexwidgets_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/complexwidgets_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/complexwidgets_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/accessible/complexwidgets_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/itemviews_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/itemviews_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/itemviews_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/itemviews_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/accessible/itemviews_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractbutton_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractbutton_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractbutton_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractbutton_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qabstractbutton_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractitemdelegate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractitemdelegate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractitemdelegate_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractitemdelegate_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qabstractitemdelegate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractitemview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractitemview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractitemview_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractitemview_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qabstractitemview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractscrollarea_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractscrollarea_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractscrollarea_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractscrollarea_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qabstractscrollarea_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractslider_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractslider_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractslider_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractslider_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qabstractslider_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractspinbox_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractspinbox_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractspinbox_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qabstractspinbox_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qabstractspinbox_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaccessiblemenu_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaccessiblemenu_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaccessiblemenu_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaccessiblemenu_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/accessible/qaccessiblemenu_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaccessiblewidgetfactory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaccessiblewidgetfactory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaccessiblewidgetfactory_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaccessiblewidgetfactory_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/accessible/qaccessiblewidgetfactory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaccessiblewidgets_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaccessiblewidgets_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaccessiblewidgets_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaccessiblewidgets_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/accessible/qaccessiblewidgets_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaction_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaction_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaction_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qaction_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qaction_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qapplication_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qapplication_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qapplication_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qapplication_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qapplication_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbasickeyeventtransition_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbasickeyeventtransition_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbasickeyeventtransition_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbasickeyeventtransition_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/statemachine/qbasickeyeventtransition_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbasicmouseeventtransition_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbasicmouseeventtransition_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbasicmouseeventtransition_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbasicmouseeventtransition_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/statemachine/qbasicmouseeventtransition_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbsptree_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbsptree_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbsptree_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbsptree_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qbsptree_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbuttongroup_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbuttongroup_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbuttongroup_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qbuttongroup_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qbuttongroup_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcolumnview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcolumnview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcolumnview_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcolumnview_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qcolumnview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcolumnviewgrip_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcolumnviewgrip_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcolumnviewgrip_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcolumnviewgrip_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qcolumnviewgrip_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcombobox_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcombobox_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcombobox_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcombobox_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qcombobox_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcommonstyle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcommonstyle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcommonstyle_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcommonstyle_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/styles/qcommonstyle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcommonstylepixmaps_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcommonstylepixmaps_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcommonstylepixmaps_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcommonstylepixmaps_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/styles/qcommonstylepixmaps_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcompleter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcompleter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcompleter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qcompleter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/util/qcompleter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdatetimeedit_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdatetimeedit_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdatetimeedit_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdatetimeedit_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qdatetimeedit_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdesktopwidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdesktopwidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdesktopwidget_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdesktopwidget_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qdesktopwidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdialog_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdialog_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdialog_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdialog_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/dialogs/qdialog_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdockarealayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdockarealayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdockarealayout_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdockarealayout_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qdockarealayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdockwidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdockwidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdockwidget_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qdockwidget_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qdockwidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qeffects_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qeffects_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qeffects_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qeffects_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qeffects_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfiledialog_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfiledialog_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfiledialog_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfiledialog_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/dialogs/qfiledialog_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfileiconprovider_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfileiconprovider_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfileiconprovider_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfileiconprovider_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qfileiconprovider_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfileinfogatherer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfileinfogatherer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfileinfogatherer_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfileinfogatherer_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/dialogs/qfileinfogatherer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfilesystemmodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfilesystemmodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfilesystemmodel_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfilesystemmodel_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/dialogs/qfilesystemmodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qflickgesture_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qflickgesture_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qflickgesture_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qflickgesture_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/util/qflickgesture_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfontdialog_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfontdialog_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfontdialog_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfontdialog_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/dialogs/qfontdialog_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qframe_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qframe_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qframe_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qframe_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qframe_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfscompleter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfscompleter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfscompleter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfscompleter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/dialogs/qfscompleter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfusionstyle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfusionstyle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfusionstyle_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfusionstyle_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/styles/qfusionstyle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfusionstyle_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfusionstyle_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfusionstyle_p_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qfusionstyle_p_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/styles/qfusionstyle_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgesture_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgesture_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgesture_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgesture_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qgesture_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgesturemanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgesturemanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgesturemanager_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgesturemanager_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qgesturemanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraph_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraph_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraph_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraph_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraph_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsanchorlayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsanchorlayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsanchorlayout_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsanchorlayout_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicsanchorlayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicseffect_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicseffect_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicseffect_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicseffect_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/effects/qgraphicseffect_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsgridlayoutengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsgridlayoutengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsgridlayoutengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsgridlayoutengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicsgridlayoutengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsitem_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsitem_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsitem_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsitem_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicsitem_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicslayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicslayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicslayout_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicslayout_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicslayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicslayoutitem_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicslayoutitem_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicslayoutitem_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicslayoutitem_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicslayoutitem_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicslayoutstyleinfo_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicslayoutstyleinfo_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicslayoutstyleinfo_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicslayoutstyleinfo_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicslayoutstyleinfo_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsproxywidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsproxywidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsproxywidget_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsproxywidget_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicsproxywidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscene_bsp_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscene_bsp_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscene_bsp_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscene_bsp_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicsscene_bsp_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscene_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscene_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscene_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscene_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicsscene_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscenebsptreeindex_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscenebsptreeindex_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscenebsptreeindex_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscenebsptreeindex_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicsscenebsptreeindex_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicssceneindex_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicssceneindex_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicssceneindex_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicssceneindex_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicssceneindex_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscenelinearindex_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscenelinearindex_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscenelinearindex_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsscenelinearindex_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicsscenelinearindex_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicstransform_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicstransform_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicstransform_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicstransform_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicstransform_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsview_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicsview_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicsview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicswidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicswidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicswidget_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qgraphicswidget_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qgraphicswidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qheaderview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qheaderview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qheaderview_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qheaderview_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qheaderview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qitemeditorfactory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qitemeditorfactory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qitemeditorfactory_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qitemeditorfactory_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qitemeditorfactory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qkeysequenceedit_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qkeysequenceedit_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qkeysequenceedit_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qkeysequenceedit_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qkeysequenceedit_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlabel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlabel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlabel_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlabel_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qlabel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlayout_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlayout_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qlayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlayoutengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlayoutengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlayoutengine_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlayoutengine_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qlayoutengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlineedit_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlineedit_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlineedit_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlineedit_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qlineedit_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlistview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlistview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlistview_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlistview_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qlistview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlistwidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlistwidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlistwidget_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qlistwidget_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qlistwidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmacgesturerecognizer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmacgesturerecognizer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmacgesturerecognizer_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmacgesturerecognizer_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qmacgesturerecognizer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmainwindowlayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmainwindowlayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmainwindowlayout_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmainwindowlayout_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qmainwindowlayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmdiarea_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmdiarea_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmdiarea_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmdiarea_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qmdiarea_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmdisubwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmdisubwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmdisubwindow_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmdisubwindow_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qmdisubwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmenu_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmenu_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmenu_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmenu_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qmenu_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmenubar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmenubar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmenubar_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qmenubar_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qmenubar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpixmapfilter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpixmapfilter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpixmapfilter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpixmapfilter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/effects/qpixmapfilter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpixmapstyle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpixmapstyle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpixmapstyle_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpixmapstyle_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/styles/qpixmapstyle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpixmapstyle_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpixmapstyle_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpixmapstyle_p_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpixmapstyle_p_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/styles/qpixmapstyle_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qplaintextedit_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qplaintextedit_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qplaintextedit_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qplaintextedit_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qplaintextedit_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qproxystyle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qproxystyle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qproxystyle_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qproxystyle_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/styles/qproxystyle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpushbutton_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpushbutton_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpushbutton_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qpushbutton_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qpushbutton_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscrollarea_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscrollarea_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscrollarea_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscrollarea_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qscrollarea_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscrollbar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscrollbar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscrollbar_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscrollbar_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qscrollbar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscroller_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscroller_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscroller_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscroller_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/util/qscroller_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscrollerproperties_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscrollerproperties_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscrollerproperties_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qscrollerproperties_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/util/qscrollerproperties_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsidebar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsidebar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsidebar_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsidebar_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/dialogs/qsidebar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsimplex_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsimplex_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsimplex_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsimplex_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/graphicsview/qsimplex_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsplitter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsplitter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsplitter_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsplitter_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qsplitter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstandardgestures_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstandardgestures_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstandardgestures_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstandardgestures_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qstandardgestures_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstyle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstyle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstyle_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstyle_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/styles/qstyle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstyleanimation_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstyleanimation_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstyleanimation_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstyleanimation_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/styles/qstyleanimation_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstylehelper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstylehelper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstylehelper_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstylehelper_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/styles/qstylehelper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstylesheetstyle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstylesheetstyle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstylesheetstyle_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qstylesheetstyle_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/styles/qstylesheetstyle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsystemtrayicon_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsystemtrayicon_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsystemtrayicon_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qsystemtrayicon_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/util/qsystemtrayicon_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qt_widgets_pch.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qt_widgets_pch.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qt_widgets_pch.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qt_widgets_pch.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qt_widgets_pch.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtabbar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtabbar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtabbar_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtabbar_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qtabbar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtableview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtableview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtableview_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtableview_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qtableview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtablewidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtablewidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtablewidget_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtablewidget_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qtablewidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtextedit_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtextedit_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtextedit_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtextedit_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qtextedit_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbar_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbar_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qtoolbar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbararealayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbararealayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbararealayout_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbararealayout_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qtoolbararealayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbarextension_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbarextension_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbarextension_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbarextension_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qtoolbarextension_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbarlayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbarlayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbarlayout_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbarlayout_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qtoolbarlayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbarseparator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbarseparator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbarseparator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtoolbarseparator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qtoolbarseparator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtreeview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtreeview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtreeview_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtreeview_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qtreeview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtreewidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtreewidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtreewidget_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtreewidget_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qtreewidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtreewidgetitemiterator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtreewidgetitemiterator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtreewidgetitemiterator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtreewidgetitemiterator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qtreewidgetitemiterator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtwidgetsglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtwidgetsglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtwidgetsglobal_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qtwidgetsglobal_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qtwidgetsglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qundostack_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qundostack_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qundostack_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qundostack_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/util/qundostack_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidget_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidget_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qwidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetaction_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetaction_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetaction_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetaction_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qwidgetaction_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetanimator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetanimator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetanimator_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetanimator_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qwidgetanimator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetitemdata_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetitemdata_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetitemdata_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetitemdata_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/itemviews/qwidgetitemdata_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetlinecontrol_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetlinecontrol_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetlinecontrol_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetlinecontrol_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qwidgetlinecontrol_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetrepaintmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetrepaintmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetrepaintmanager_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetrepaintmanager_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qwidgetrepaintmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetresizehandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetresizehandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetresizehandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetresizehandler_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qwidgetresizehandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgettextcontrol_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgettextcontrol_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgettextcontrol_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgettextcontrol_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qwidgettextcontrol_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgettextcontrol_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgettextcontrol_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgettextcontrol_p_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgettextcontrol_p_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/widgets/qwidgettextcontrol_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetwindow_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwidgetwindow_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qwidgetwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwindowcontainer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwindowcontainer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwindowcontainer_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwindowcontainer_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/kernel/qwindowcontainer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwindowsstyle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwindowsstyle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwindowsstyle_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwindowsstyle_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/styles/qwindowsstyle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwindowsstyle_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwindowsstyle_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwindowsstyle_p_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwindowsstyle_p_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/styles/qwindowsstyle_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwizard_win_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwizard_win_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwizard_win_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/qwizard_win_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/dialogs/qwizard_win_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/rangecontrols_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/rangecontrols_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/rangecontrols_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/rangecontrols_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/accessible/rangecontrols_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/simplewidgets_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/simplewidgets_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/simplewidgets_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.3/QtWidgets/private/simplewidgets_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/widgets/accessible/simplewidgets_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/complexwidgets_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/complexwidgets_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/complexwidgets_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/complexwidgets_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/accessible/complexwidgets_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/itemviews_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/itemviews_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/itemviews_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/itemviews_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/accessible/itemviews_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractbutton_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractbutton_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractbutton_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractbutton_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qabstractbutton_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractitemdelegate_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractitemdelegate_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractitemdelegate_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractitemdelegate_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qabstractitemdelegate_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractitemview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractitemview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractitemview_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractitemview_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qabstractitemview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractscrollarea_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractscrollarea_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractscrollarea_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractscrollarea_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qabstractscrollarea_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractslider_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractslider_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractslider_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractslider_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qabstractslider_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractspinbox_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractspinbox_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractspinbox_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qabstractspinbox_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qabstractspinbox_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaccessiblemenu_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaccessiblemenu_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaccessiblemenu_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaccessiblemenu_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/accessible/qaccessiblemenu_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaccessiblewidgetfactory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaccessiblewidgetfactory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaccessiblewidgetfactory_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaccessiblewidgetfactory_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/accessible/qaccessiblewidgetfactory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaccessiblewidgets_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaccessiblewidgets_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaccessiblewidgets_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaccessiblewidgets_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/accessible/qaccessiblewidgets_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaction_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaction_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaction_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qaction_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qaction_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qapplication_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qapplication_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qapplication_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qapplication_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qapplication_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbasickeyeventtransition_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbasickeyeventtransition_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbasickeyeventtransition_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbasickeyeventtransition_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/statemachine/qbasickeyeventtransition_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbasicmouseeventtransition_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbasicmouseeventtransition_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbasicmouseeventtransition_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbasicmouseeventtransition_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/statemachine/qbasicmouseeventtransition_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbsptree_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbsptree_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbsptree_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbsptree_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qbsptree_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbuttongroup_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbuttongroup_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbuttongroup_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qbuttongroup_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qbuttongroup_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcolumnview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcolumnview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcolumnview_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcolumnview_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qcolumnview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcolumnviewgrip_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcolumnviewgrip_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcolumnviewgrip_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcolumnviewgrip_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qcolumnviewgrip_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcombobox_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcombobox_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcombobox_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcombobox_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qcombobox_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcommonstyle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcommonstyle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcommonstyle_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcommonstyle_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/styles/qcommonstyle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcommonstylepixmaps_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcommonstylepixmaps_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcommonstylepixmaps_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcommonstylepixmaps_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/styles/qcommonstylepixmaps_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcompleter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcompleter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcompleter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qcompleter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/util/qcompleter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdatetimeedit_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdatetimeedit_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdatetimeedit_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdatetimeedit_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qdatetimeedit_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdesktopwidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdesktopwidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdesktopwidget_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdesktopwidget_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qdesktopwidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdialog_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdialog_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdialog_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdialog_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/dialogs/qdialog_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdockarealayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdockarealayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdockarealayout_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdockarealayout_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qdockarealayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdockwidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdockwidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdockwidget_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qdockwidget_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qdockwidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qeffects_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qeffects_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qeffects_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qeffects_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qeffects_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfiledialog_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfiledialog_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfiledialog_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfiledialog_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/dialogs/qfiledialog_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfileiconprovider_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfileiconprovider_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfileiconprovider_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfileiconprovider_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qfileiconprovider_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfileinfogatherer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfileinfogatherer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfileinfogatherer_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfileinfogatherer_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/dialogs/qfileinfogatherer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfilesystemmodel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfilesystemmodel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfilesystemmodel_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfilesystemmodel_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/dialogs/qfilesystemmodel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qflickgesture_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qflickgesture_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qflickgesture_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qflickgesture_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/util/qflickgesture_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfontdialog_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfontdialog_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfontdialog_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfontdialog_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/dialogs/qfontdialog_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qframe_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qframe_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qframe_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qframe_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qframe_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfscompleter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfscompleter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfscompleter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfscompleter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/dialogs/qfscompleter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfusionstyle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfusionstyle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfusionstyle_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfusionstyle_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/styles/qfusionstyle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfusionstyle_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfusionstyle_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfusionstyle_p_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qfusionstyle_p_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/styles/qfusionstyle_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgesture_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgesture_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgesture_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgesture_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qgesture_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgesturemanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgesturemanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgesturemanager_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgesturemanager_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qgesturemanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraph_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraph_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraph_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraph_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraph_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsanchorlayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsanchorlayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsanchorlayout_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsanchorlayout_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicsanchorlayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicseffect_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicseffect_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicseffect_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicseffect_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/effects/qgraphicseffect_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsgridlayoutengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsgridlayoutengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsgridlayoutengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsgridlayoutengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicsgridlayoutengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsitem_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsitem_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsitem_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsitem_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicsitem_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicslayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicslayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicslayout_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicslayout_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicslayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicslayoutitem_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicslayoutitem_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicslayoutitem_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicslayoutitem_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicslayoutitem_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicslayoutstyleinfo_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicslayoutstyleinfo_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicslayoutstyleinfo_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicslayoutstyleinfo_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicslayoutstyleinfo_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsproxywidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsproxywidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsproxywidget_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsproxywidget_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicsproxywidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscene_bsp_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscene_bsp_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscene_bsp_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscene_bsp_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicsscene_bsp_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscene_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscene_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscene_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscene_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicsscene_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscenebsptreeindex_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscenebsptreeindex_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscenebsptreeindex_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscenebsptreeindex_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicsscenebsptreeindex_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicssceneindex_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicssceneindex_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicssceneindex_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicssceneindex_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicssceneindex_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscenelinearindex_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscenelinearindex_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscenelinearindex_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsscenelinearindex_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicsscenelinearindex_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicstransform_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicstransform_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicstransform_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicstransform_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicstransform_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsview_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicsview_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicsview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicswidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicswidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicswidget_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qgraphicswidget_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qgraphicswidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qheaderview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qheaderview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qheaderview_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qheaderview_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qheaderview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qitemeditorfactory_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qitemeditorfactory_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qitemeditorfactory_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qitemeditorfactory_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qitemeditorfactory_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qkeysequenceedit_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qkeysequenceedit_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qkeysequenceedit_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qkeysequenceedit_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qkeysequenceedit_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlabel_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlabel_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlabel_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlabel_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qlabel_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlayout_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlayout_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qlayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlayoutengine_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlayoutengine_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlayoutengine_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlayoutengine_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qlayoutengine_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlineedit_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlineedit_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlineedit_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlineedit_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qlineedit_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlistview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlistview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlistview_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlistview_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qlistview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlistwidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlistwidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlistwidget_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qlistwidget_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qlistwidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmacgesturerecognizer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmacgesturerecognizer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmacgesturerecognizer_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmacgesturerecognizer_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qmacgesturerecognizer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmainwindowlayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmainwindowlayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmainwindowlayout_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmainwindowlayout_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qmainwindowlayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmdiarea_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmdiarea_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmdiarea_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmdiarea_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qmdiarea_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmdisubwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmdisubwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmdisubwindow_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmdisubwindow_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qmdisubwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmenu_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmenu_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmenu_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmenu_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qmenu_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmenubar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmenubar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmenubar_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qmenubar_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qmenubar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpixmapfilter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpixmapfilter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpixmapfilter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpixmapfilter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/effects/qpixmapfilter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpixmapstyle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpixmapstyle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpixmapstyle_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpixmapstyle_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/styles/qpixmapstyle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpixmapstyle_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpixmapstyle_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpixmapstyle_p_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpixmapstyle_p_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/styles/qpixmapstyle_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qplaintextedit_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qplaintextedit_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qplaintextedit_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qplaintextedit_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qplaintextedit_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qproxystyle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qproxystyle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qproxystyle_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qproxystyle_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/styles/qproxystyle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpushbutton_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpushbutton_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpushbutton_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qpushbutton_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qpushbutton_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscrollarea_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscrollarea_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscrollarea_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscrollarea_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qscrollarea_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscrollbar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscrollbar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscrollbar_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscrollbar_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qscrollbar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscroller_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscroller_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscroller_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscroller_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/util/qscroller_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscrollerproperties_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscrollerproperties_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscrollerproperties_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qscrollerproperties_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/util/qscrollerproperties_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsidebar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsidebar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsidebar_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsidebar_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/dialogs/qsidebar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsimplex_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsimplex_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsimplex_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsimplex_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/graphicsview/qsimplex_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsplitter_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsplitter_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsplitter_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsplitter_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qsplitter_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstandardgestures_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstandardgestures_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstandardgestures_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstandardgestures_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qstandardgestures_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstyle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstyle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstyle_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstyle_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/styles/qstyle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstyleanimation_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstyleanimation_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstyleanimation_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstyleanimation_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/styles/qstyleanimation_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstylehelper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstylehelper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstylehelper_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstylehelper_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/styles/qstylehelper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstylesheetstyle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstylesheetstyle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstylesheetstyle_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qstylesheetstyle_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/styles/qstylesheetstyle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsystemtrayicon_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsystemtrayicon_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsystemtrayicon_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qsystemtrayicon_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/util/qsystemtrayicon_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qt_widgets_pch.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qt_widgets_pch.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qt_widgets_pch.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qt_widgets_pch.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qt_widgets_pch.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtabbar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtabbar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtabbar_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtabbar_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qtabbar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtableview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtableview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtableview_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtableview_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qtableview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtablewidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtablewidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtablewidget_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtablewidget_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qtablewidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtextedit_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtextedit_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtextedit_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtextedit_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qtextedit_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbar_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbar_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbar_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbar_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qtoolbar_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbararealayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbararealayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbararealayout_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbararealayout_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qtoolbararealayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbarextension_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbarextension_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbarextension_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbarextension_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qtoolbarextension_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbarlayout_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbarlayout_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbarlayout_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbarlayout_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qtoolbarlayout_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbarseparator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbarseparator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbarseparator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtoolbarseparator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qtoolbarseparator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtreeview_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtreeview_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtreeview_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtreeview_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qtreeview_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtreewidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtreewidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtreewidget_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtreewidget_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qtreewidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtreewidgetitemiterator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtreewidgetitemiterator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtreewidgetitemiterator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtreewidgetitemiterator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qtreewidgetitemiterator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtwidgetsglobal_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtwidgetsglobal_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtwidgetsglobal_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qtwidgetsglobal_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qtwidgetsglobal_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qundostack_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qundostack_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qundostack_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qundostack_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/util/qundostack_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidget_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidget_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidget_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidget_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qwidget_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetaction_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetaction_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetaction_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetaction_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qwidgetaction_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetanimator_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetanimator_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetanimator_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetanimator_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qwidgetanimator_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetitemdata_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetitemdata_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetitemdata_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetitemdata_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/itemviews/qwidgetitemdata_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetlinecontrol_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetlinecontrol_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetlinecontrol_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetlinecontrol_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qwidgetlinecontrol_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetrepaintmanager_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetrepaintmanager_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetrepaintmanager_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetrepaintmanager_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qwidgetrepaintmanager_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetresizehandler_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetresizehandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetresizehandler_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetresizehandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qwidgetresizehandler_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgettextcontrol_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgettextcontrol_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgettextcontrol_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgettextcontrol_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qwidgettextcontrol_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgettextcontrol_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgettextcontrol_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgettextcontrol_p_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgettextcontrol_p_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/widgets/qwidgettextcontrol_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetwindow_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetwindow_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwidgetwindow_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qwidgetwindow_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwindowcontainer_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwindowcontainer_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwindowcontainer_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwindowcontainer_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/kernel/qwindowcontainer_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwindowsstyle_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwindowsstyle_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwindowsstyle_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwindowsstyle_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/styles/qwindowsstyle_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwindowsstyle_p_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwindowsstyle_p_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwindowsstyle_p_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwindowsstyle_p_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/styles/qwindowsstyle_p_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwizard_win_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwizard_win_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwizard_win_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/qwizard_win_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/dialogs/qwizard_win_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/rangecontrols_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/rangecontrols_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/rangecontrols_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/rangecontrols_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/accessible/rangecontrols_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/simplewidgets_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/simplewidgets_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/simplewidgets_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/5.15.8/QtWidgets/private/simplewidgets_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/widgets/accessible/simplewidgets_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/qtwidgetsversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/qtwidgetsversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWidgets/qtwidgetsversion.h 2021-03-30 02:27:04.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWidgets/qtwidgetsversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTWIDGETS_VERSION_H #define QT_QTWIDGETS_VERSION_H -#define QTWIDGETS_VERSION_STR "5.15.3" +#define QTWIDGETS_VERSION_STR "5.15.8" -#define QTWIDGETS_VERSION 0x050F03 +#define QTWIDGETS_VERSION 0x050F08 #endif // QT_QTWIDGETS_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/qwindowsuiawrapper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/qwindowsuiawrapper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/qwindowsuiawrapper_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/qwindowsuiawrapper_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/windowsuiautomation/qwindowsuiawrapper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaattributeids_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaattributeids_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaattributeids_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaattributeids_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/windowsuiautomation/uiaattributeids_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaclientinterfaces_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaclientinterfaces_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaclientinterfaces_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaclientinterfaces_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/windowsuiautomation/uiaclientinterfaces_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiacontroltypeids_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiacontroltypeids_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiacontroltypeids_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiacontroltypeids_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/windowsuiautomation/uiacontroltypeids_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaerrorids_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaerrorids_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaerrorids_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaerrorids_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/windowsuiautomation/uiaerrorids_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaeventids_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaeventids_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaeventids_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaeventids_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/windowsuiautomation/uiaeventids_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiageneralids_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiageneralids_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiageneralids_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiageneralids_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/windowsuiautomation/uiageneralids_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiapatternids_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiapatternids_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiapatternids_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiapatternids_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/windowsuiautomation/uiapatternids_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiapropertyids_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiapropertyids_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiapropertyids_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiapropertyids_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/windowsuiautomation/uiapropertyids_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaserverinterfaces_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaserverinterfaces_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaserverinterfaces_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiaserverinterfaces_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/windowsuiautomation/uiaserverinterfaces_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiatypes_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiatypes_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiatypes_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.3/QtWindowsUIAutomationSupport/private/uiatypes_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/windowsuiautomation/uiatypes_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/qwindowsuiawrapper_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/qwindowsuiawrapper_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/qwindowsuiawrapper_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/qwindowsuiawrapper_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/windowsuiautomation/qwindowsuiawrapper_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaattributeids_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaattributeids_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaattributeids_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaattributeids_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/windowsuiautomation/uiaattributeids_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaclientinterfaces_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaclientinterfaces_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaclientinterfaces_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaclientinterfaces_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/windowsuiautomation/uiaclientinterfaces_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiacontroltypeids_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiacontroltypeids_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiacontroltypeids_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiacontroltypeids_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/windowsuiautomation/uiacontroltypeids_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaerrorids_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaerrorids_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaerrorids_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaerrorids_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/windowsuiautomation/uiaerrorids_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaeventids_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaeventids_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaeventids_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaeventids_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/windowsuiautomation/uiaeventids_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiageneralids_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiageneralids_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiageneralids_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiageneralids_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/windowsuiautomation/uiageneralids_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiapatternids_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiapatternids_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiapatternids_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiapatternids_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/windowsuiautomation/uiapatternids_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiapropertyids_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiapropertyids_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiapropertyids_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiapropertyids_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/windowsuiautomation/uiapropertyids_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaserverinterfaces_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaserverinterfaces_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaserverinterfaces_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiaserverinterfaces_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/windowsuiautomation/uiaserverinterfaces_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiatypes_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiatypes_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiatypes_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/5.15.8/QtWindowsUIAutomationSupport/private/uiatypes_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/windowsuiautomation/uiatypes_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/qtwindowsuiautomationsupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/qtwindowsuiautomationsupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtWindowsUIAutomationSupport/qtwindowsuiautomationsupportversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtWindowsUIAutomationSupport/qtwindowsuiautomationsupportversion.h 2022-11-13 04:40:55.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTWINDOWSUIAUTOMATIONSUPPORT_VERSION_H #define QT_QTWINDOWSUIAUTOMATIONSUPPORT_VERSION_H -#define QTWINDOWSUIAUTOMATIONSUPPORT_VERSION_STR "5.15.3" +#define QTWINDOWSUIAUTOMATIONSUPPORT_VERSION_STR "5.15.8" -#define QTWINDOWSUIAUTOMATIONSUPPORT_VERSION 0x050F03 +#define QTWINDOWSUIAUTOMATIONSUPPORT_VERSION 0x050F08 #endif // QT_QTWINDOWSUIAUTOMATIONSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtXkbCommonSupport/5.15.3/QtXkbCommonSupport/private/qxkbcommon_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtXkbCommonSupport/5.15.3/QtXkbCommonSupport/private/qxkbcommon_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtXkbCommonSupport/5.15.3/QtXkbCommonSupport/private/qxkbcommon_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtXkbCommonSupport/5.15.3/QtXkbCommonSupport/private/qxkbcommon_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/platformsupport/input/xkbcommon/qxkbcommon_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtXkbCommonSupport/5.15.8/QtXkbCommonSupport/private/qxkbcommon_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtXkbCommonSupport/5.15.8/QtXkbCommonSupport/private/qxkbcommon_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtXkbCommonSupport/5.15.8/QtXkbCommonSupport/private/qxkbcommon_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtXkbCommonSupport/5.15.8/QtXkbCommonSupport/private/qxkbcommon_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/platformsupport/input/xkbcommon/qxkbcommon_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtXkbCommonSupport/qtxkbcommonsupportversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtXkbCommonSupport/qtxkbcommonsupportversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtXkbCommonSupport/qtxkbcommonsupportversion.h 2021-03-30 02:27:07.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtXkbCommonSupport/qtxkbcommonsupportversion.h 2022-11-13 04:40:59.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTXKBCOMMONSUPPORT_VERSION_H #define QT_QTXKBCOMMONSUPPORT_VERSION_H -#define QTXKBCOMMONSUPPORT_VERSION_STR "5.15.3" +#define QTXKBCOMMONSUPPORT_VERSION_STR "5.15.8" -#define QTXKBCOMMONSUPPORT_VERSION 0x050F03 +#define QTXKBCOMMONSUPPORT_VERSION 0x050F08 #endif // QT_QTXKBCOMMONSUPPORT_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtXml/5.15.3/QtXml/private/qdom_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtXml/5.15.3/QtXml/private/qdom_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtXml/5.15.3/QtXml/private/qdom_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtXml/5.15.3/QtXml/private/qdom_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/xml/dom/qdom_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtXml/5.15.3/QtXml/private/qdomhelpers_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtXml/5.15.3/QtXml/private/qdomhelpers_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtXml/5.15.3/QtXml/private/qdomhelpers_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtXml/5.15.3/QtXml/private/qdomhelpers_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/xml/dom/qdomhelpers_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtXml/5.15.3/QtXml/private/qxml_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtXml/5.15.3/QtXml/private/qxml_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtXml/5.15.3/QtXml/private/qxml_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtXml/5.15.3/QtXml/private/qxml_p.h 1970-01-01 08:00:00.000000000 +0800 @@ -1 +0,0 @@ -#include "../../../../../src/xml/sax/qxml_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtXml/5.15.8/QtXml/private/qdom_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtXml/5.15.8/QtXml/private/qdom_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtXml/5.15.8/QtXml/private/qdom_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtXml/5.15.8/QtXml/private/qdom_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/xml/dom/qdom_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtXml/5.15.8/QtXml/private/qdomhelpers_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtXml/5.15.8/QtXml/private/qdomhelpers_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtXml/5.15.8/QtXml/private/qdomhelpers_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtXml/5.15.8/QtXml/private/qdomhelpers_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/xml/dom/qdomhelpers_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtXml/5.15.8/QtXml/private/qxml_p.h qtbase-opensource-src-5.15.8+dfsg/include/QtXml/5.15.8/QtXml/private/qxml_p.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtXml/5.15.8/QtXml/private/qxml_p.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtXml/5.15.8/QtXml/private/qxml_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1 @@ +#include "../../../../../src/xml/sax/qxml_p.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/include/QtXml/qtxmlversion.h qtbase-opensource-src-5.15.8+dfsg/include/QtXml/qtxmlversion.h --- qtbase-opensource-src-5.15.3+dfsg/include/QtXml/qtxmlversion.h 2021-03-30 02:27:06.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/include/QtXml/qtxmlversion.h 2022-11-13 04:40:57.000000000 +0800 @@ -2,8 +2,8 @@ #ifndef QT_QTXML_VERSION_H #define QT_QTXML_VERSION_H -#define QTXML_VERSION_STR "5.15.3" +#define QTXML_VERSION_STR "5.15.8" -#define QTXML_VERSION 0x050F03 +#define QTXML_VERSION 0x050F08 #endif // QT_QTXML_VERSION_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/android-clang/qmake.conf qtbase-opensource-src-5.15.8+dfsg/mkspecs/android-clang/qmake.conf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/android-clang/qmake.conf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/android-clang/qmake.conf 2022-11-11 15:29:17.000000000 +0800 @@ -44,7 +44,7 @@ CONFIG += $$ANDROID_PLATFORM ANDROID_MIN_SDK_VERSION = $$replace(ANDROID_PLATFORM, "android-", "") -ANDROID_TARGET_SDK_VERSION = 29 +ANDROID_TARGET_SDK_VERSION = 30 NDK_LLVM_PATH = $$NDK_ROOT/toolchains/llvm/prebuilt/$$NDK_HOST QMAKE_CC = $$NDK_LLVM_PATH/bin/clang diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/gcc-base-mac.conf qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/gcc-base-mac.conf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/gcc-base-mac.conf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/gcc-base-mac.conf 2022-11-11 15:29:17.000000000 +0800 @@ -22,3 +22,4 @@ QMAKE_LFLAGS_VERSION += -current_version$${LITERAL_WHITESPACE} QMAKE_LFLAGS_COMPAT_VERSION += -compatibility_version$${LITERAL_WHITESPACE} +QMAKE_CFLAGS_ARCH_HASWELL = -Xarch_x86_64 $$QMAKE_CFLAGS_ARCH_HASWELL diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/gcc-base.conf qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/gcc-base.conf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/gcc-base.conf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/gcc-base.conf 2022-11-11 15:29:17.000000000 +0800 @@ -86,6 +86,7 @@ QMAKE_CFLAGS_C99 = -std=c99 QMAKE_CFLAGS_C11 = -std=c11 +QMAKE_CFLAGS_C17 = -std=c17 QMAKE_CFLAGS_SSE2 += -msse2 QMAKE_CFLAGS_SSE3 += -msse3 diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/macx.conf qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/macx.conf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/macx.conf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/macx.conf 2022-11-11 15:29:17.000000000 +0800 @@ -6,13 +6,12 @@ QMAKE_MAC_SDK = macosx QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.13 -QMAKE_APPLE_DEVICE_ARCHS = x86_64 # Should be 10.15, but as long as the CI builds with # older SDKs we have to keep this. QT_MAC_SDK_VERSION_MIN = 10.14 -QT_MAC_SDK_VERSION_MAX = 11.0 +QT_MAC_SDK_VERSION_MAX = 12 device.sdk = macosx device.target = device @@ -20,6 +19,8 @@ device.CONFIG = $${device.sdk} device.deployment_identifier = $${device.sdk} +CONFIG += only_active_arch + QMAKE_LIBS_VULKAN = include(mac.conf) diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/msvc-based-version.conf qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/msvc-based-version.conf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/msvc-based-version.conf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/msvc-based-version.conf 2022-11-11 15:29:17.000000000 +0800 @@ -34,4 +34,9 @@ MSVC_VER = 16.0 } +greaterThan(QMAKE_MSC_VER, 1929) { + # Visual Studio 2022 (17.0) / Visual C++ 19.30 and up + MSVC_VER = 17.0 +} + !isEmpty(COMPAT_MKSPEC):!$$COMPAT_MKSPEC: CONFIG += $$COMPAT_MKSPEC diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/msvc-version.conf qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/msvc-version.conf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/msvc-version.conf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/msvc-version.conf 2022-11-11 15:29:17.000000000 +0800 @@ -121,4 +121,16 @@ } +greaterThan(QMAKE_MSC_VER, 1927) { + # Visual Studio 2019 (16.8 or 16.9) / Visual C++ 19.28 and up + MSVC_VER = 16.8 + QMAKE_CFLAGS_C11 = /std:c11 + QMAKE_CFLAGS_C17 = /std:c17 +} + +greaterThan(QMAKE_MSC_VER, 1929) { + # Visual Studio 2022 (17.0) / Visual C++ 19.30 and up + MSVC_VER = 17.0 +} + !isEmpty(COMPAT_MKSPEC):!$$COMPAT_MKSPEC: CONFIG += $$COMPAT_MKSPEC diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/qcc-base-qnx-aarch64le.conf qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/qcc-base-qnx-aarch64le.conf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/qcc-base-qnx-aarch64le.conf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/qcc-base-qnx-aarch64le.conf 2022-11-11 15:29:17.000000000 +0800 @@ -8,7 +8,7 @@ include(unix.conf) QMAKE_CC = qcc -Vgcc_ntoaarch64le -QMAKE_CXX = qcc -Vgcc_ntoaarch64le +QMAKE_CXX = q++ -Vgcc_ntoaarch64le QNX_CPUDIR = aarch64le include(qcc-base-qnx.conf) diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/qcc-base-qnx-armle-v7.conf qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/qcc-base-qnx-armle-v7.conf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/qcc-base-qnx-armle-v7.conf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/qcc-base-qnx-armle-v7.conf 2022-11-11 15:29:17.000000000 +0800 @@ -9,9 +9,10 @@ include(g++-unix.conf) QMAKE_CC = qcc -Vgcc_ntoarmv7le -QMAKE_CXX = qcc -Vgcc_ntoarmv7le +QMAKE_CXX = q++ -Vgcc_ntoarmv7le QNX_CPUDIR = armle-v7 QMAKE_CFLAGS += -mfpu=neon +QMAKE_CXXFLAGS += -mfpu=neon include(qcc-base-qnx.conf) diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/qcc-base-qnx-x86-64.conf qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/qcc-base-qnx-x86-64.conf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/qcc-base-qnx-x86-64.conf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/qcc-base-qnx-x86-64.conf 2022-11-11 15:29:17.000000000 +0800 @@ -8,7 +8,7 @@ include(unix.conf) QMAKE_CC = qcc -Vgcc_ntox86_64 -QMAKE_CXX = qcc -Vgcc_ntox86_64 +QMAKE_CXX = q++ -Vgcc_ntox86_64 QNX_CPUDIR = x86_64 include(qcc-base-qnx.conf) diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/qcc-base-qnx-x86.conf qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/qcc-base-qnx-x86.conf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/qcc-base-qnx-x86.conf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/qcc-base-qnx-x86.conf 2022-11-11 15:29:17.000000000 +0800 @@ -9,7 +9,7 @@ include(g++-unix.conf) QMAKE_CC = qcc -Vgcc_ntox86 -QMAKE_CXX = qcc -Vgcc_ntox86 +QMAKE_CXX = q++ -Vgcc_ntox86 QNX_CPUDIR = x86 include(qcc-base-qnx.conf) diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/qcc-base.conf qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/qcc-base.conf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/common/qcc-base.conf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/common/qcc-base.conf 2022-11-11 15:29:17.000000000 +0800 @@ -38,7 +38,6 @@ QMAKE_CFLAGS_STACK_PROTECTOR_STRONG = -fstack-protector-strong -QMAKE_CXXFLAGS += $$QMAKE_CFLAGS -lang-c++ QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF @@ -56,4 +55,3 @@ QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE -QMAKE_LFLAGS += -lang-c++ diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/android/android_deployment_settings.prf qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/android/android_deployment_settings.prf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/android/android_deployment_settings.prf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/android/android_deployment_settings.prf 2022-11-11 15:29:17.000000000 +0800 @@ -78,8 +78,13 @@ contains(resource, ".*qmake_qmake_immediate\\.qrc$") { # They will be created for each architecture, since they could be different # we need to account for all of them - for (arch, ANDROID_ABIS): \ - rescopy += $$absolute_path("qmake_qmake_immediate.qrc", $$OUT_PWD/$$arch) + qmake_qrc_path = "qmake_qmake_immediate.qrc" + multi_android_abi { + for (arch, ANDROID_ABIS): \ + rescopy += $$absolute_path($$qmake_qrc_path, $$OUT_PWD/$$arch) + } else { + rescopy += $$absolute_path($$qmake_qrc_path, $$OUT_PWD) + } } else { contains(resource, ".*\\.qrc$"): rescopy += $$absolute_path($$resource, $$_PRO_FILE_PWD_) } diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/android/sdk.prf qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/android/sdk.prf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/android/sdk.prf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/android/sdk.prf 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,6 @@ API_VERSION_TO_USE = $$(ANDROID_API_VERSION) isEmpty(API_VERSION_TO_USE): API_VERSION_TO_USE = $$API_VERSION -isEmpty(API_VERSION_TO_USE): API_VERSION_TO_USE = android-28 +isEmpty(API_VERSION_TO_USE): API_VERSION_TO_USE = android-31 ANDROID_JAR_FILE = $$ANDROID_SDK_ROOT/platforms/$$API_VERSION_TO_USE/android.jar !exists($$ANDROID_JAR_FILE) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/create_cmake.prf qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/create_cmake.prf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/create_cmake.prf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/create_cmake.prf 2022-11-11 15:29:17.000000000 +0800 @@ -170,6 +170,9 @@ } contains(CONFIG, plugin) { + CMAKE_PLUGIN_NAME = $$PLUGIN_CLASS_NAME + + plugin_genex_check = equals(PLUGIN_EXTENDS, -) { CMAKE_PLUGIN_EXTENDS = - } else { @@ -177,8 +180,13 @@ for (p, PLUGIN_EXTENDS) { m = $$cmakeModuleName($$p) list_plugin_extends += Qt::$$m + + # CMake introduced $<IN_LIST:> in 3.12 which is too new for Qt, so manually + # unroll each module check with an STREQUAL genex + plugin_genex_check += \"$<STREQUAL:$<TARGET_PROPERTY:Qt5::$${CMAKE_PLUGIN_NAME},QT_PLUGIN_EXTENDS>,Qt::$${m}>,\" } CMAKE_PLUGIN_EXTENDS = $$join(list_plugin_extends, ";") + CMAKE_PLUGIN_EXTENDS_GENEX_CHECK = $$join(plugin_genex_check, "$$escape_expand(\\n) ") } PLUGIN_MODULE_NAME = @@ -207,7 +215,6 @@ CMAKE_MODULE_NAME = $$cmakeModuleName($$PLUGIN_MODULE_NAME) - CMAKE_PLUGIN_NAME = $$PLUGIN_CLASS_NAME CMAKE_PLUGIN_TYPE = $$PLUGIN_TYPE CMAKE_PLUGIN_TYPE_ESCAPED = $$replace(PLUGIN_TYPE, [-/], _) diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in 2022-11-11 15:29:17.000000000 +0800 @@ -86,15 +86,14 @@ \"${_user_specified_genex_versionless},\" # Add this plugin if all of the following are true: # 1) the list of explicitly included plugin types is empty - # 2) the QT_PLUGIN_EXTENDS property for the plugin is empty or equal to the current - # module name + # 2) the QT_PLUGIN_EXTENDS property for the plugin is empty or equal to one of the modules + # listed in the plugin's PLUGIN_EXTEND qmake variable # 3) the user hasn\'t explicitly excluded the plugin. + # TODO: Note that the current implementation of (2) is not entirely correct QTBUG-93501 \"$<AND:\" \"$<STREQUAL:${_plugin_type_genex},>,\" \"$<OR:\" - # FIXME: The value of CMAKE_MODULE_NAME seems to be wrong (e.g for Svg plugin - # it should be Qt::Svg instead of Qt::Gui). - \"$<STREQUAL:$<TARGET_PROPERTY:Qt5::$${CMAKE_PLUGIN_NAME},QT_PLUGIN_EXTENDS>,Qt::$${CMAKE_MODULE_NAME}>,\" + $${CMAKE_PLUGIN_EXTENDS_GENEX_CHECK} \"$<STREQUAL:$<TARGET_PROPERTY:Qt5::$${CMAKE_PLUGIN_NAME},QT_PLUGIN_EXTENDS>,>\" \">,\" \"$<NOT:$<IN_LIST:Qt5::$${CMAKE_PLUGIN_NAME},${_no_plugins_genex}>>,\" diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/default_post.prf qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/default_post.prf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/default_post.prf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/default_post.prf 2022-11-11 15:29:17.000000000 +0800 @@ -155,7 +155,8 @@ unset(cxxstd) } -c99|c11 { +c99|c11|c17|c18 { + c17|c18: cstd = C17 c11: cstd = C11 else: cstd = C99 diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/lrelease.prf qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/lrelease.prf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/lrelease.prf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/lrelease.prf 2022-11-11 15:29:17.000000000 +0800 @@ -24,7 +24,7 @@ for (translation, all_translations) { # mirrors $$LRELEASE_DIR/${QMAKE_FILE_IN_BASE}.qm above translation = $$basename(translation) - QM_FILES += $$OUT_PWD/$$LRELEASE_DIR/$$replace(translation, \\..*$, .qm) + QM_FILES += $$OUT_PWD/$$LRELEASE_DIR/$$replace(translation, \\.[^.]+$, .qm) } embed_translations { qmake_qm_files.files = $$QM_FILES diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/mac/default_post.prf qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/mac/default_post.prf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/mac/default_post.prf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/mac/default_post.prf 2022-11-11 15:29:17.000000000 +0800 @@ -7,7 +7,12 @@ contains(TEMPLATE, .*app) { !macx-xcode:if(isEmpty(BUILDS)|build_pass) { # Detect changes to the platform SDK - QMAKE_EXTRA_VARIABLES += QMAKE_MAC_SDK QMAKE_MAC_SDK_VERSION QMAKE_XCODE_DEVELOPER_PATH + QMAKE_EXTRA_VARIABLES += \ + QMAKE_MAC_SDK \ + QMAKE_MAC_SDK_VERSION \ + QMAKE_XCODE_DEVELOPER_PATH \ + _QMAKE_STASH_ \ + QMAKE_EXTRA_INCLUDES += $$shell_quote($$PWD/sdk.mk) } @@ -29,7 +34,7 @@ !sdk_no_version_check:!versionAtMost(QMAKE_MAC_SDK_MAJOR_VERSION, $$QT_MAC_SDK_VERSION_MAX) { warning("Qt has only been tested with version $$QT_MAC_SDK_VERSION_MAX"\ - "of the platform SDK, you're using $${QMAKE_MAC_SDK_MAJOR_MINOR_VERSION}.") + "of the platform SDK, you're using $${QMAKE_MAC_SDK_MAJOR_VERSION}.") warning("This is an unsupported configuration. You may experience build issues," \ "and by using") warning("the $$QMAKE_MAC_SDK_VERSION SDK you are opting in to new features" \ @@ -90,6 +95,19 @@ QMAKE_LFLAGS += $$QMAKE_CFLAGS_APPLICATION_EXTENSION } +macos { + !isEmpty(QMAKE_APPLE_DEVICE_ARCHS) { + # If the user has requested a specific set of architectures, + # build all of those by default, but limited to only those. + CONFIG -= only_active_arch + } else { + # Otherwise allow building all of the architectures available + # in Qt, but only build the active arch (unless the user has + # manually overridden this via CONFIG -= only_active_arch). + QMAKE_APPLE_DEVICE_ARCHS = $$QT_ARCHS + } +} + macx-xcode { qmake_pkginfo_typeinfo.name = QMAKE_PKGINFO_TYPEINFO !isEmpty(QMAKE_PKGINFO_TYPEINFO): \ @@ -145,15 +163,20 @@ simulator: VALID_SIMULATOR_ARCHS = $$QMAKE_APPLE_SIMULATOR_ARCHS VALID_ARCHS = $$VALID_DEVICE_ARCHS $$VALID_SIMULATOR_ARCHS - isEmpty(VALID_ARCHS): \ - error("QMAKE_APPLE_DEVICE_ARCHS or QMAKE_APPLE_SIMULATOR_ARCHS must contain at least one architecture") - single_arch: VALID_ARCHS = $$first(VALID_ARCHS) - ACTIVE_ARCHS = $(filter $(EXPORT_VALID_ARCHS), $(ARCHS)) - ARCH_ARGS = $(foreach arch, $(if $(EXPORT_ACTIVE_ARCHS), $(EXPORT_ACTIVE_ARCHS), $(EXPORT_VALID_ARCHS)), -arch $(arch)) + macos { + only_active_arch: DEFAULT_ARCHS = $$system("uname -m") + else: DEFAULT_ARCHS = $$VALID_ARCHS + } + + ARCHS = $(filter $(EXPORT_VALID_ARCHS), \ + $(if $(ARCHS), $(ARCHS), \ + $(if $(EXPORT_DEFAULT_ARCHS), $(EXPORT_DEFAULT_ARCHS), \ + $(EXPORT_VALID_ARCHS)))) + ARCH_ARGS = $(foreach arch, $(if $(EXPORT_ARCHS), $(EXPORT_ARCHS), $(EXPORT_VALID_ARCHS)), -arch $(arch)) - QMAKE_EXTRA_VARIABLES += VALID_ARCHS ACTIVE_ARCHS ARCH_ARGS + QMAKE_EXTRA_VARIABLES += VALID_ARCHS DEFAULT_ARCHS ARCHS ARCH_ARGS arch_flags = $(EXPORT_ARCH_ARGS) diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/mac/default_pre.prf qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/mac/default_pre.prf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/mac/default_pre.prf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/mac/default_pre.prf 2022-11-11 15:29:17.000000000 +0800 @@ -1,4 +1,25 @@ CONFIG = asset_catalogs rez $$CONFIG + +macos { + count(QT_ARCHS, 1, >) { + # For universal builds all the config tests are run with the first + # architecture (as reflected by QT_ARCH). We have to manually enable + # CPU features we know exist on the secondary architecture. For + # simplicity we just hard-code the base features we know exist. + # Note that this hack means we end up with QT_CPU_FEATURES.x86_64 + # containing neon, and QT_CPU_FEATURES.arm64 containing sse2 e.g. + QT_CPU_FEATURES.$$QT_ARCH += sse sse2 + CONFIG += sse sse2 + DEFINES += QT_COMPILER_SUPPORTS_SSE2 + # FIXME: For x86_64 there are a bunch more. If building a universal + # build with arm64 as the primary architecture we'll miss those. + + QT_CPU_FEATURES.$$QT_ARCH += neon + CONFIG += neon + DEFINES += QT_COMPILER_SUPPORTS_NEON + } +} + load(default_pre) isEmpty(QMAKE_XCODE_DEVELOPER_PATH) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/mac/sdk.mk qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/mac/sdk.mk --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/mac/sdk.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/mac/sdk.mk 2022-11-11 15:29:17.000000000 +0800 @@ -13,12 +13,14 @@ else ifneq ($(findstring SDK "$(EXPORT_QMAKE_MAC_SDK)" cannot be located,$(CURRENT_MAC_SDK_VERSION)),) $(info The developer dir $(EXPORT_QMAKE_XCODE_DEVELOPER_PATH) no longer contains the $(EXPORT_QMAKE_MAC_SDK_VERSION) platform SDK.) else ifneq ($(CURRENT_MAC_SDK_VERSION),) - $(info The platform SDK has been changed from version $(EXPORT_QMAKE_MAC_SDK_VERSION) to version $(CURRENT_MAC_SDK_VERSION).) + $(info The $(EXPORT_QMAKE_MAC_SDK) platform SDK has been changed from version $(EXPORT_QMAKE_MAC_SDK_VERSION) to version $(CURRENT_MAC_SDK_VERSION).) else $(info Unknown error resolving current platform SDK version.) endif - $(info This requires a fresh build. Please wipe the build directory completely,) - $(info including any .qmake.stash and .qmake.cache files generated by qmake.) + $(info This requires a fresh build of your project. Please wipe the build directory) + ifneq ($(EXPORT__QMAKE_STASH_),) + $(info including the qmake cache in $(EXPORT__QMAKE_STASH_)) + endif $(error ^) endif endif diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/qt.prf qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/qt.prf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/qt.prf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/qt.prf 2022-11-11 15:29:17.000000000 +0800 @@ -215,13 +215,32 @@ # Linking frameworks by absolute path does not work. LIBS$$var_sfx += -framework $$framework } else { - lib = $$MODULE_MODULE$$qtPlatformTargetSuffix() + candidates = $$MODULE_MODULE$$qtPlatformTargetSuffix() + darwin: candidates *= $$MODULE_MODULE win32|contains(MODULE_CONFIG, staticlib) { - lib = $$MODULE_LIBS/$$QMAKE_PREFIX_STATICLIB$${lib}.$$QMAKE_EXTENSION_STATICLIB - PRE_TARGETDEPS += $$lib + lib_prefix = $$MODULE_LIBS/$$QMAKE_PREFIX_STATICLIB + lib_suffix = $$QMAKE_EXTENSION_STATICLIB + add_lib_to_pretargetdeps = true } else { - lib = $$MODULE_LIBS/$$QMAKE_PREFIX_SHLIB$${lib}.$$QMAKE_EXTENSION_SHLIB + lib_prefix = $$MODULE_LIBS/$$QMAKE_PREFIX_SHLIB + lib_suffix = $$QMAKE_EXTENSION_SHLIB + add_lib_to_pretargetdeps = false + } + lib_missing = true + lib_fallback = + for(lib_base, candidates) { + lib = $${lib_prefix}$${lib_base}.$${lib_suffix} + isEmpty(lib_fallback): \ + lib_fallback = $$lib + exists($$lib) { + lib_missing = false + break() + } } + $$lib_missing: \ + lib = $$lib_fallback + $$add_lib_to_pretargetdeps: \ + PRE_TARGETDEPS += $$lib LIBS$$var_sfx += $$lib } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/qt_docs.prf qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/qt_docs.prf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/qt_docs.prf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/qt_docs.prf 2022-11-11 15:29:17.000000000 +0800 @@ -29,20 +29,20 @@ # On Windows, put the includes into a .inc file which QDoc will read, if the project # has too many includes. We do this to overcome a command-line limit on Windows. -WIN_INCLUDETEMP= +QDOC_WIN_INCLUDETEMP= INCLUDE_PATHS=$$INCPATH win32:count(INCLUDE_PATHS, 30, >) { - WIN_INCLUDETEMP = $$OUT_PWD/qdocincludepaths.inc - WIN_INCLUDETEMP_CONTENT = + QDOC_WIN_INCLUDETEMP = $$OUT_PWD/qdocincludepaths.inc + QDOC_WIN_INCLUDETEMP_CONTENT = for (inc, INCLUDE_PATHS): \ - WIN_INCLUDETEMP_CONTENT += -I$$inc - write_file($$absolute_path($$WIN_INCLUDETEMP, $$OUT_PWD), WIN_INCLUDETEMP_CONTENT)|error() + QDOC_WIN_INCLUDETEMP_CONTENT += -I$$inc + write_file($$absolute_path($$QDOC_WIN_INCLUDETEMP, $$OUT_PWD), QDOC_WIN_INCLUDETEMP_CONTENT)|error() } -isEmpty(WIN_INCLUDETEMP) { +isEmpty(QDOC_WIN_INCLUDETEMP) { QDOC_INCLUDE_PATHS=$(INCPATH) } else { - QDOC_INCLUDE_PATHS=@$$shell_quote($$WIN_INCLUDETEMP) + QDOC_INCLUDE_PATHS=@$$shell_quote($$QDOC_WIN_INCLUDETEMP) } macos: QDOC_INCLUDE_PATHS += $$join(QMAKE_DEFAULT_INCDIRS," -I","-I") diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/qt_helper_lib.prf qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/qt_helper_lib.prf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/qt_helper_lib.prf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/qt_helper_lib.prf 2022-11-11 15:29:17.000000000 +0800 @@ -116,5 +116,22 @@ pri_lib_replace.CONFIG = path pri_lib_replace.filename = qt_ext_$${MODULE}.pri QMAKE_INSTALL_REPLACE += pri_header_replace pri_lib_replace + if(msvc|qtConfig(debug_and_release)): { + rpl_lib_target = $$prefix$${TARGET}.$$suffix + pri_lib_release_replace.match = $$DESTDIR/$${rpl_lib_target} + pri_lib_release_replace.replace = $$qqt_dir/$${rpl_lib_target} + pri_lib_release_replace.CONFIG = path + pri_lib_release_replace.filename = qt_ext_$${MODULE}.pri + QMAKE_INSTALL_REPLACE += pri_lib_release_replace + win32: \ + rpl_lib_target = $$prefix$${TARGET}d.$$suffix + else: darwin: \ + rpl_lib_target = $$prefix$${TARGET}_debug.$$suffix + pri_lib_debug_replace.match = $$DESTDIR/$${rpl_lib_target} + pri_lib_debug_replace.replace = $$qqt_dir/$${rpl_lib_target} + pri_lib_debug_replace.CONFIG = path + pri_lib_debug_replace.filename = qt_ext_$${MODULE}.pri + QMAKE_INSTALL_REPLACE += pri_lib_debug_replace + } load(qt_installs) } diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/resources_functions.prf qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/resources_functions.prf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/resources_functions.prf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/resources_functions.prf 2022-11-11 15:29:17.000000000 +0800 @@ -35,10 +35,10 @@ } RESOURCES -= $$resource - !android|isEmpty(BUILDS)|build_pass { + isEmpty(BUILDS)|build_pass { resource_file = $$absolute_path($$RCC_DIR/qmake_$${resource}.qrc, $$OUT_PWD) RESOURCES += $$resource_file - } else { + } else: android { # Android will need a resource file for each architecture make sure it is placed # correctly for other functions that need the right paths for these files for (arch, ANDROID_ABIS) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/toolchain.prf qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/toolchain.prf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/toolchain.prf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/toolchain.prf 2022-11-11 15:29:17.000000000 +0800 @@ -182,9 +182,14 @@ # UIKit simulator platforms will see the device SDK's sysroot in # QMAKE_DEFAULT_*DIRS, because they're handled in a single build pass. darwin { - # Clang doesn't pick up the architecture from the sysroot, and will - # default to the host architecture, so we need to manually set it. - cxx_flags += -arch $$QMAKE_APPLE_DEVICE_ARCHS + uikit { + # Clang doesn't automatically pick up the architecture, just because + # we're passing the iOS sysroot below, and we will end up building the + # test for the host architecture, resulting in linker errors when + # linking against the iOS libraries. We work around this by passing + # the architecture explicitly. + cxx_flags += -arch $$first(QMAKE_APPLE_DEVICE_ARCHS) + } uikit:macx-xcode: \ cxx_flags += -isysroot $$sdk_path_device.value diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/uikit/default_post.prf qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/uikit/default_post.prf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/uikit/default_post.prf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/uikit/default_post.prf 2022-11-11 15:29:17.000000000 +0800 @@ -28,7 +28,7 @@ device_family.value = $$QMAKE_APPLE_TARGETED_DEVICE_FAMILY QMAKE_MAC_XCODE_SETTINGS += device_family - ios { + equals(TEMPLATE, app):ios { # Set up default 4-inch iPhone/iPod launch image so that our apps # support the full screen resolution of those devices. qmake_launch_image = Default-568h@2x.png diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/uikit/xcodebuild.mk qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/uikit/xcodebuild.mk --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/uikit/xcodebuild.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/uikit/xcodebuild.mk 2022-11-11 15:29:17.000000000 +0800 @@ -58,7 +58,7 @@ MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -# Test and build (device) destinations +# Test device destinations ifneq ($(filter check%,$(MAKECMDGOALS)),) ifeq ($(DEVICES),) $(info Enumerating test destinations (you may override this by setting DEVICES explicitly), please wait...) @@ -72,10 +72,10 @@ %-device: DEVICES = $(HARDWARE_DEVICES) GENERIC_DEVICE_DESTINATION := $(EXPORT_GENERIC_DEVICE_DESTINATION) -GENERIC_SIMULATOR_DESTINATION := "id=$(shell $(MAKEFILE_DIR)devices.py $(EXPORT_DEVICE_FILTER) | tail -n 1)" +GENERIC_SIMULATOR_DESTINATION := $(EXPORT_GENERIC_SIMULATOR_DESTINATION) -%-simulator: DESTINATION = $(if $(DESTINATION_ID),"id=$(DESTINATION_ID)",$(GENERIC_SIMULATOR_DESTINATION)) -%-device: DESTINATION = $(if $(DESTINATION_ID),"id=$(DESTINATION_ID)",$(GENERIC_DEVICE_DESTINATION)) +%-simulator: DESTINATION = $(if $(DESTINATION_ID),"id=$(DESTINATION_ID)","$(GENERIC_SIMULATOR_DESTINATION)") +%-device: DESTINATION = $(if $(DESTINATION_ID),"id=$(DESTINATION_ID)","$(GENERIC_DEVICE_DESTINATION)") XCODE_VERSION_MAJOR := $(shell xcodebuild -version | grep Xcode | sed -e 's/Xcode //' | sed -e 's/\..*//') @@ -83,6 +83,10 @@ XCODEBUILD_FLAGS += $(shell echo "$(MAKEFLAGS)" | sed -e 's/\([^ ]*\).*/\1/' | grep -qv 's' || echo -quiet) endif +ifeq ($(shell test $(XCODE_VERSION_MAJOR) -ge 9; echo $$?),0) + XCODEBUILD_FLAGS += -allowProvisioningUpdates +endif + # Xcodebuild DESTINATION_MESSAGE = "Running $(call tolower,$(CONFIGURATION)) $(ACTION) \ diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/uikit/xcodebuild.prf qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/uikit/xcodebuild.prf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/features/uikit/xcodebuild.prf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/features/uikit/xcodebuild.prf 2022-11-11 15:29:17.000000000 +0800 @@ -53,7 +53,13 @@ DEVICE_FILTER = --platform watchOS --minimum-deployment-target $$QMAKE_WATCHOS_DEPLOYMENT_TARGET GENERIC_DEVICE_DESTINATION = "generic/platform=watchOS" } -QMAKE_EXTRA_VARIABLES += DEVICE_SDK SIMULATOR_SDK DEVICE_FILTER GENERIC_DEVICE_DESTINATION +GENERIC_SIMULATOR_DESTINATION = "$$GENERIC_DEVICE_DESTINATION Simulator" + +QMAKE_EXTRA_VARIABLES += \ + DEVICE_SDK SIMULATOR_SDK \ + DEVICE_FILTER \ + GENERIC_DEVICE_DESTINATION \ + GENERIC_SIMULATOR_DESTINATION QMAKE_EXTRA_INCLUDES += $$shell_quote($$PWD/xcodebuild.mk) diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/macx-xcode/WorkspaceSettings.xcsettings qtbase-opensource-src-5.15.8+dfsg/mkspecs/macx-xcode/WorkspaceSettings.xcsettings --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/macx-xcode/WorkspaceSettings.xcsettings 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/macx-xcode/WorkspaceSettings.xcsettings 2022-11-11 15:29:17.000000000 +0800 @@ -2,8 +2,6 @@ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> - <key>BuildSystemType</key> - <string>Original</string> <key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key> <false/> </dict> diff -Nru qtbase-opensource-src-5.15.3+dfsg/mkspecs/wasm-emscripten/qmake.conf qtbase-opensource-src-5.15.8+dfsg/mkspecs/wasm-emscripten/qmake.conf --- qtbase-opensource-src-5.15.3+dfsg/mkspecs/wasm-emscripten/qmake.conf 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/mkspecs/wasm-emscripten/qmake.conf 2022-11-11 15:29:17.000000000 +0800 @@ -81,6 +81,8 @@ QMAKE_AR = emar cqs equals(QMAKE_HOST.os, Windows) { + QMAKE_LINK_OBJECT_MAX = 10 + QMAKE_LINK_OBJECT_SCRIPT = object_script QMAKE_AR_CMD = \ "$(file >$(OBJECTS_DIR)/$(TARGET).rsp, $(subst \\,/,$(OBJECTS)))$$escape_expand(\\n\\t)" \ "$(AR) $(DESTDIR)$(TARGET) @$(OBJECTS_DIR)/$(TARGET).rsp" diff -Nru qtbase-opensource-src-5.15.3+dfsg/qmake/doc/src/qmake-manual.qdoc qtbase-opensource-src-5.15.8+dfsg/qmake/doc/src/qmake-manual.qdoc --- qtbase-opensource-src-5.15.3+dfsg/qmake/doc/src/qmake-manual.qdoc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/qmake/doc/src/qmake-manual.qdoc 2022-11-11 15:29:17.000000000 +0800 @@ -1118,7 +1118,7 @@ \note This variable applies only to Android targets. Specifies the target Android API level for the project. By default, this - variable is set to API level 29. + variable is set to API level 30. \target ANDROID_VERSION_CODE \section1 ANDROID_VERSION_CODE @@ -1142,6 +1142,8 @@ Specifies project configuration and compiler options. The values are recognized internally by qmake and have special meaning. + \note The values are case-sensitive. + The following \c CONFIG values control compiler and linker flags: \table @@ -1195,6 +1197,11 @@ \row \li c11 \li C11 support is enabled. This option has no effect if the compiler does not support C11, or can't select the C standard. By default, the compiler default is used. + \row \li c17 \li C17, also known as C18, support is enabled. + This option has no effect if the compiler does not support C17, or + can't select the C standard. + By default, the compiler default is used. + \row \li c18 \li This is an alias for the \c{c17} value. \row \li strict_c \li Disables support for C compiler extensions. By default, they are enabled. \row \li c++11 \li C++11 support is enabled. This option has no effect if @@ -3357,7 +3364,7 @@ \li publisher \li Display name of the publisher. Defaults to \c{Default publisher display name}. \row - \li publisher_id + \li publisherid \li The publisher's distinguished name (default: \c{CN=MyCN}). \row \li target diff -Nru qtbase-opensource-src-5.15.3+dfsg/qmake/generators/mac/pbuilder_pbx.cpp qtbase-opensource-src-5.15.8+dfsg/qmake/generators/mac/pbuilder_pbx.cpp --- qtbase-opensource-src-5.15.3+dfsg/qmake/generators/mac/pbuilder_pbx.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/qmake/generators/mac/pbuilder_pbx.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -778,6 +778,8 @@ { QString mkfile = pbx_dir + Option::dir_sep + "qt_preprocess.mak"; QFile mkf(mkfile); + ProStringList outputPaths; + ProStringList inputPaths; if(mkf.open(QIODevice::WriteOnly | QIODevice::Text)) { writingUnixMakefileGenerator = true; debug_msg(1, "pbuilder: Creating file: %s", mkfile.toLatin1().constData()); @@ -827,8 +829,11 @@ ++added; const QString file_name = fileFixify(fn, FileFixifyFromOutdir); const QString tmpOut = fileFixify(tmp_out.first().toQString(), FileFixifyFromOutdir); - mkt << ' ' << escapeDependencyPath(Option::fixPathToTargetOS( + QString path = escapeDependencyPath(Option::fixPathToTargetOS( replaceExtraCompilerVariables(tmpOut, file_name, QString(), NoShell))); + mkt << ' ' << path; + inputPaths << fn; + outputPaths << path; } } } @@ -839,6 +844,14 @@ mkt.flush(); mkf.close(); } + // Remove duplicates from build steps with "combine" + outputPaths.removeDuplicates(); + + // Don't create cycles. We only have one qt_preprocess.mak which runs different compilers + // whose inputs may depend on the output of another. The "compilers" step will run all + // compilers anyway + inputPaths.removeEach(outputPaths); + mkfile = fileFixify(mkfile); QString phase_key = keyFor("QMAKE_PBX_PREPROCESS_TARGET"); // project->values("QMAKE_PBX_BUILDPHASES").append(phase_key); @@ -849,10 +862,13 @@ << "\t\t\t" << writeSettings("isa", "PBXShellScriptBuildPhase", SettingsNoQuote) << ";\n" << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";\n" << "\t\t\t" << writeSettings("name", "Qt Preprocessors") << ";\n" + << "\t\t\t" << writeSettings("inputPaths", inputPaths, SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("outputPaths", outputPaths, SettingsAsList, 4) << ";\n" << "\t\t\t" << writeSettings("shellPath", "/bin/sh") << ";\n" << "\t\t\t" << writeSettings("shellScript", "make -C " + IoUtils::shellQuoteUnix(Option::output_dir) + " -f " + IoUtils::shellQuoteUnix(mkfile)) << ";\n" << "\t\t\t" << writeSettings("showEnvVarsInLog", "0") << ";\n" + << "\t\t\t" << writeSettings("alwaysOutOfDate", "1") << ";\n" << "\t\t};\n"; } @@ -2046,4 +2062,10 @@ return ret; } +bool +ProjectBuilderMakefileGenerator::inhibitMakeDirOutPath(const ProKey &path) const +{ + return path == "OBJECTS_DIR"; +} + QT_END_NAMESPACE diff -Nru qtbase-opensource-src-5.15.3+dfsg/qmake/generators/mac/pbuilder_pbx.h qtbase-opensource-src-5.15.8+dfsg/qmake/generators/mac/pbuilder_pbx.h --- qtbase-opensource-src-5.15.3+dfsg/qmake/generators/mac/pbuilder_pbx.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/qmake/generators/mac/pbuilder_pbx.h 2022-11-11 15:29:17.000000000 +0800 @@ -68,6 +68,7 @@ protected: bool doPrecompiledHeaders() const override { return false; } bool doDepends() const override { return writingUnixMakefileGenerator && UnixMakefileGenerator::doDepends(); } + bool inhibitMakeDirOutPath(const ProKey &path) const override; }; QT_END_NAMESPACE diff -Nru qtbase-opensource-src-5.15.3+dfsg/qmake/generators/makefile.cpp qtbase-opensource-src-5.15.8+dfsg/qmake/generators/makefile.cpp --- qtbase-opensource-src-5.15.3+dfsg/qmake/generators/makefile.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/qmake/generators/makefile.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -173,6 +173,9 @@ if (noIO() || (project->first("TEMPLATE") == "subdirs")) continue; + if (inhibitMakeDirOutPath(dkey)) + continue; + QString path = project->first(dkey).toQString(); //not to be changed any further path = fileFixify(path, FileFixifyBackwards); debug_msg(3, "Fixed output_dir %s (%s) into %s", dirs[x], @@ -216,6 +219,18 @@ } } +/* + * For the given directory path, return true if MakefileGenerator::initOutPaths() should inhibit the + * creation of the directory. Overload this in subclasses. + */ +bool +MakefileGenerator::inhibitMakeDirOutPath(const ProKey &path) const +{ + Q_UNUSED(path); + return false; +} + + QMakeProject *MakefileGenerator::projectFile() const { diff -Nru qtbase-opensource-src-5.15.3+dfsg/qmake/generators/makefile.h qtbase-opensource-src-5.15.8+dfsg/qmake/generators/makefile.h --- qtbase-opensource-src-5.15.3+dfsg/qmake/generators/makefile.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/qmake/generators/makefile.h 2022-11-11 15:29:17.000000000 +0800 @@ -153,6 +153,7 @@ void verifyCompilers(); virtual void init(); void initOutPaths(); + virtual bool inhibitMakeDirOutPath(const ProKey &path) const; struct Compiler { QString variable_in; diff -Nru qtbase-opensource-src-5.15.3+dfsg/qmake/generators/unix/unixmake2.cpp qtbase-opensource-src-5.15.8+dfsg/qmake/generators/unix/unixmake2.cpp --- qtbase-opensource-src-5.15.3+dfsg/qmake/generators/unix/unixmake2.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/qmake/generators/unix/unixmake2.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -37,6 +37,9 @@ #include <qdebug.h> #include <time.h> +#include <tuple> +#include <utility> + QT_BEGIN_NAMESPACE void @@ -1415,6 +1418,25 @@ return ret; } +static std::pair<ProStringList, ProStringList> +splitFrameworksAndLibs(const ProStringList &linkArgs) +{ + std::pair<ProStringList, ProStringList> result; + bool frameworkArg = false; + for (auto arg : linkArgs) { + if (frameworkArg) { + frameworkArg = false; + result.second += arg; + } else if (arg == "-framework") { + frameworkArg = true; + result.second += arg; + } else { + result.first += arg; + } + } + return result; +} + void UnixMakefileGenerator::writeLibtoolFile() { @@ -1489,7 +1511,13 @@ ProStringList libs; for (auto var : libVars) libs += fixLibFlags(var); + ProStringList frameworks; + std::tie(libs, frameworks) = splitFrameworksAndLibs(libs); t << "dependency_libs='" << fixDependencyLibs(libs).join(' ') << "'\n\n"; + if (!frameworks.isEmpty()) { + t << "# Frameworks that this library depends upon.\n"; + t << "inherited_linker_flags='" << frameworks.join(' ') << "'\n\n"; + } t << "# Version information for " << lname << "\n"; int maj = project->first("VER_MAJ").toInt(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/qmake/generators/win32/msbuild_objectmodel.cpp qtbase-opensource-src-5.15.8+dfsg/qmake/generators/win32/msbuild_objectmodel.cpp --- qtbase-opensource-src-5.15.3+dfsg/qmake/generators/win32/msbuild_objectmodel.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/qmake/generators/win32/msbuild_objectmodel.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -144,6 +144,7 @@ const char _KeyContainer[] = "KeyContainer"; const char _KeyFile[] = "KeyFile"; const char _LanguageStandard[] = "LanguageStandard"; +const char _LanguageStandard_C[] = "LanguageStandard_C"; const char _LargeAddressAware[] = "LargeAddressAware"; const char _LinkDLL[] = "LinkDLL"; const char _LinkErrorReporting[] = "LinkErrorReporting"; @@ -1483,6 +1484,7 @@ << attrTagT(_MinimalRebuild, tool.MinimalRebuild) << attrTagT(_MultiProcessorCompilation, tool.MultiProcessorCompilation) << attrTagS(_LanguageStandard, tool.LanguageStandard) + << attrTagS(_LanguageStandard_C, tool.LanguageStandard_C) << attrTagS(_ObjectFileName, tool.ObjectFile) << attrTagT(_OmitDefaultLibName, tool.OmitDefaultLibName) << attrTagT(_OmitFramePointers, tool.OmitFramePointers) diff -Nru qtbase-opensource-src-5.15.3+dfsg/qmake/generators/win32/msvc_objectmodel.cpp qtbase-opensource-src-5.15.8+dfsg/qmake/generators/win32/msvc_objectmodel.cpp --- qtbase-opensource-src-5.15.3+dfsg/qmake/generators/win32/msvc_objectmodel.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/qmake/generators/win32/msvc_objectmodel.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -40,36 +40,42 @@ QT_BEGIN_NAMESPACE -static DotNET vsVersionFromString(const char *versionString) +DotNET vsVersionFromString(const ProString &versionString) { - struct VSVersionMapping - { - const char *str; - DotNET version; - }; - static VSVersionMapping mapping[] = { - { "7.0", NET2002 }, - { "7.1", NET2003 }, - { "8.0", NET2005 }, - { "9.0", NET2008 }, - { "10.0", NET2010 }, - { "11.0", NET2012 }, - { "12.0", NET2013 }, - { "14.0", NET2015 }, - { "15.0", NET2017 }, - { "16.0", NET2019 } - }; - DotNET result = NETUnknown; - for (const auto entry : mapping) { - if (strcmp(entry.str, versionString) == 0) - return entry.version; + int idx = versionString.indexOf(QLatin1Char('.')); + if (idx == -1) + return NETUnknown; + + QStringView versionView = versionString.toQStringView(); + int versionMajor = versionView.left(idx).toInt(); + int versionMinor = versionView.mid(idx + 1).toInt(); + + if (versionMajor == 17) + return NET2022; + if (versionMajor == 16) + return NET2019; + if (versionMajor == 15) + return NET2017; + if (versionMajor == 14) + return NET2015; + if (versionMajor == 12) + return NET2013; + if (versionMajor == 11) + return NET2012; + if (versionMajor == 10) + return NET2010; + if (versionMajor == 9) + return NET2008; + if (versionMajor == 8) + return NET2005; + if (versionMajor == 7) { + if (versionMinor == 0) + return NET2002; + if (versionMinor == 1) + return NET2003; } - return result; -} -DotNET vsVersionFromString(const ProString &versionString) -{ - return vsVersionFromString(versionString.toLatin1().constData()); + return NETUnknown; } // XML Tags --------------------------------------------------------- @@ -1147,12 +1153,39 @@ ShowIncludes = _True; break; } - if (strlen(option) > 8 && second == 't' && third == 'd') { - const QString version = option + 8; - static const QStringList knownVersions = { "14", "17", "latest" }; - if (knownVersions.contains(version)) { - LanguageStandard = "stdcpp" + version; - break; + if (strlen(option) > 7 && second == 't' && third == 'd' && fourth == ':') { + static const QRegExp rex("(c(?:\\+\\+)?)(.+)"); + if (rex.exactMatch(option + 5)) { + QString *var = nullptr; + const QStringList *knownVersions = nullptr; + QString valuePrefix; + auto lang = rex.cap(1); + auto version = rex.cap(2); + if (lang == QStringLiteral("c++")) { + // Turn /std:c++17 into <LanguageStandard>stdcpp17</LanguageStandard> + static const QStringList knownCxxVersions = { + "14", + "17", + "20", + "latest" + }; + var = &LanguageStandard; + knownVersions = &knownCxxVersions; + valuePrefix = "stdcpp"; + } else if (lang == QStringLiteral("c")) { + // Turn /std:c17 into <LanguageStandard_C>stdc17</LanguageStandard_C> + static const QStringList knownCVersions = { + "11", + "17" + }; + var = &LanguageStandard_C; + knownVersions = &knownCVersions; + valuePrefix = "stdc"; + } + if (var && knownVersions->contains(version)) { + *var = valuePrefix + version; + break; + } } } found = false; break; @@ -2405,6 +2438,7 @@ cmd_name = cmd.left(space); else cmd_name = cmd; + cmd_name = cmd_name.trimmed(); } // Fixify paths diff -Nru qtbase-opensource-src-5.15.3+dfsg/qmake/generators/win32/msvc_objectmodel.h qtbase-opensource-src-5.15.8+dfsg/qmake/generators/win32/msvc_objectmodel.h --- qtbase-opensource-src-5.15.3+dfsg/qmake/generators/win32/msvc_objectmodel.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/qmake/generators/win32/msvc_objectmodel.h 2022-11-11 15:29:17.000000000 +0800 @@ -53,7 +53,8 @@ NET2013 = 0xc0, NET2015 = 0xd0, NET2017 = 0xe0, - NET2019 + NET2019, + NET2022 }; DotNET vsVersionFromString(const ProString &versionString); @@ -527,6 +528,7 @@ inlineExpansionOption InlineFunctionExpansion; triState KeepComments; QString LanguageStandard; + QString LanguageStandard_C; triState MinimalRebuild; QString ObjectFile; triState OmitDefaultLibName; diff -Nru qtbase-opensource-src-5.15.3+dfsg/qmake/generators/win32/msvc_vcproj.cpp qtbase-opensource-src-5.15.8+dfsg/qmake/generators/win32/msvc_vcproj.cpp --- qtbase-opensource-src-5.15.3+dfsg/qmake/generators/win32/msvc_vcproj.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/qmake/generators/win32/msvc_vcproj.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -37,8 +37,11 @@ #include <qcryptographichash.h> #include <qhash.h> #include <quuid.h> +#include <qregexp.h> #include <stdlib.h> +#include <tuple> +#include <utility> //#define DEBUG_SOLUTION_GEN @@ -76,6 +79,8 @@ "\n# Visual Studio 15"; const char _slnHeader142[] = "Microsoft Visual Studio Solution File, Format Version 12.00" "\n# Visual Studio Version 16"; +const char _slnHeader143[] = "Microsoft Visual Studio Solution File, Format Version 12.00" + "\n# Visual Studio Version 17"; // The following UUID _may_ change for later servicepacks... // If so we need to search through the registry at // HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0\Projects @@ -311,6 +316,8 @@ return QStringLiteral("v141"); case NET2019: return QStringLiteral("v142"); + case NET2022: + return QStringLiteral("v143"); default: return QString(); } @@ -538,6 +545,9 @@ } switch (vcProject.Configuration.CompilerVersion) { + case NET2022: + t << _slnHeader143; + break; case NET2019: t << _slnHeader142; break; @@ -813,33 +823,62 @@ } } - // Add all input files for a custom compiler into a map for uniqueness, - // unless the compiler is configure as a combined stage, then use the first one + // Helper function to create a fake file foo.cbt for the project view. + // + // This prevents VS from complaining about a circular dependency from "foo -> foo". + // + // The .cbt file is added as "source" of the Custom Build Tool. This means, in the project + // view, this is the file the Custom Build Tool property page is attached to. + // + // This function returns a pair with + // - the fully resolved output file path + // - the file path of the .cbt file + auto addExtraCompilerSourceWithCustomBuildToolFakeFile + = [this](const QString &compilerOutput, const ProString &extraCompiler, + const QStringList &inputs) -> std::pair<QString, QString> + { + QString realOut = replaceExtraCompilerVariables(compilerOutput, inputs, {}, NoShell); + QString out = realOut + customBuildToolFilterFileSuffix; + createCustomBuildToolFakeFile(out, realOut); + out = Option::fixPathToTargetOS(out, false); + extraCompilerSources[out] += extraCompiler.toQString(); + return { realOut, out }; + }; + + // Add all input files for a custom compiler into a map for uniqueness. + // + // Use .cbt files for the following cases: + // - CONFIG += combine + // - the input has a built-in compiler (e.g. C++ source file) for (const ProString &quc : project->values("QMAKE_EXTRA_COMPILERS")) { const ProStringList &invar = project->values(ProKey(quc + ".input")); const QString compiler_out = project->first(ProKey(quc + ".output")).toQString(); - for (ProStringList::ConstIterator iit = invar.constBegin(); iit != invar.constEnd(); ++iit) { - ProStringList fileList = project->values((*iit).toKey()); - if (!fileList.isEmpty()) { - if (project->values(ProKey(quc + ".CONFIG")).indexOf("combine") != -1) - fileList.erase(fileList.begin() + 1, fileList.end()); - for (ProStringList::ConstIterator fit = fileList.constBegin(); fit != fileList.constEnd(); ++fit) { - QString file = (*fit).toQString(); - if (verifyExtraCompiler(quc, file)) { - if (!hasBuiltinCompiler(file)) { - extraCompilerSources[file] += quc.toQString(); - } else { - // Create a fake file foo.moc.cbt for the project view. - // This prevents VS from complaining about a circular - // dependency from foo.moc -> foo.moc. - QString realOut = replaceExtraCompilerVariables( - compiler_out, file, QString(), NoShell); - QString out = realOut + customBuildToolFilterFileSuffix; - createCustomBuildToolFakeFile(out, realOut); - out = Option::fixPathToTargetOS(out, false); - extraCompilerSources[out] += quc.toQString(); - extraCompilerOutputs[out] = file; - } + + QStringList inputFiles; + for (auto it = invar.begin(); it != invar.end(); ++it) + inputFiles += project->values(it->toKey()).toQStringList(); + + if (project->values(ProKey(quc + ".CONFIG")).contains("combine")) { + // Handle "CONFIG += combine" extra compilers. + QString realOut; + QString out; + std::tie(realOut, out) + = addExtraCompilerSourceWithCustomBuildToolFakeFile(compiler_out, quc, inputFiles); + if (hasBuiltinCompiler(realOut)) + extraCompilerOutputs[out] = realOut; + } else { + // Handle regular 1-to-1 extra compilers. + for (const QString &file : inputFiles) { + if (verifyExtraCompiler(quc, file)) { + if (!hasBuiltinCompiler(file)) { + extraCompilerSources[file] += quc.toQString(); + } else { + QString out; + std::tie(std::ignore, out) + = addExtraCompilerSourceWithCustomBuildToolFakeFile(compiler_out, + quc, + QStringList(file)); + extraCompilerOutputs[out] = file; } } } @@ -891,6 +930,9 @@ // Own elements ----------------------------- vcProject.Name = project->first("QMAKE_ORIG_TARGET").toQString(); switch (vcProject.Configuration.CompilerVersion) { + case NET2022: + vcProject.Version = "17.00"; + break; case NET2019: vcProject.Version = "16.00"; break; @@ -1052,6 +1094,20 @@ initPreLinkEventTools(); } +// Filter from the given QMAKE_CFLAGS the options that are relevant +// for the vcxproj-global VCCLCompilerTool. +static ProStringList relevantCFlags(const ProStringList &flags) +{ + ProStringList result; + static const QRegExp rex("^[/-]std:.*"); + for (const ProString &flag : flags) { + if (rex.exactMatch(flag.toQString())) { + result.append(flag); + } + } + return result; +} + void VcprojGenerator::initCompilerTool() { QString placement = project->first("OBJECTS_DIR").toQString(); @@ -1074,6 +1130,7 @@ conf.compiler.ForcedIncludeFiles = project->values("PRECOMPILED_HEADER").toQStringList(); } + conf.compiler.parseOptions(relevantCFlags(project->values("QMAKE_CFLAGS"))); conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS")); if (project->isActiveConfig("windows")) @@ -1570,9 +1627,10 @@ if (!outputs.isEmpty()) tmp_out = outputs.first().toQString(); if (project->values(ProKey(*it + ".CONFIG")).indexOf("combine") != -1) { - // Combined output, only one file result + // Combined output, only one file result. Use .cbt file. extraCompile.addFile(Option::fixPathToTargetOS( - replaceExtraCompilerVariables(tmp_out, QString(), QString(), NoShell), false)); + replaceExtraCompilerVariables(tmp_out + customBuildToolFilterFileSuffix, + QString(), QString(), NoShell), false)); } else if (!inputVars.isEmpty()) { // One output file per input const ProStringList &tmp_in = project->values(inputVars.first().toKey()); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/README qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/README --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/README 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/README 2022-11-11 15:29:17.000000000 +0800 @@ -1,4 +1,4 @@ - FreeType 2.10.1 + FreeType 2.10.4 =============== Homepage: https://www.freetype.org @@ -16,17 +16,20 @@ the file `docs/LICENSE.TXT' for the available licenses. The FreeType 2 API reference is located in `docs/reference/site'; - use the file `index.html' as the top entry point. Additional - documentation is available as a separate package from our sites. Go - to + use the file `index.html' as the top entry point. [Please note that + currently the search function for locally installed documentation + doesn't work due to cross-site scripting issues.] + + Additional documentation is available as a separate package from our + sites. Go to https://download.savannah.gnu.org/releases/freetype/ and download one of the following files. - freetype-doc-2.10.1.tar.xz - freetype-doc-2.10.1.tar.gz - ftdoc2101.zip + freetype-doc-2.10.4.tar.xz + freetype-doc-2.10.4.tar.gz + ftdoc2104.zip To view the documentation online, go to @@ -64,6 +67,18 @@ a terse message that only says `it doesn't work'. + Patches + ======= + + Please submit patches to the `freetype-devel@nongnu.org' mailing + list -- and thank you in advance for your work on improving + FreeType! + + Details on the process can be found here: + + https://www.freetype.org/developer.html#patches + + Enjoy! @@ -71,7 +86,7 @@ ---------------------------------------------------------------------- -Copyright (C) 2006-2019 by +Copyright (C) 2006-2020 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/builds/unix/ftconfig.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/builds/unix/ftconfig.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/builds/unix/ftconfig.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/builds/unix/ftconfig.h 2022-11-11 15:29:17.000000000 +0800 @@ -1,481 +1,63 @@ -/* ftconfig.h. Generated from ftconfig.in by configure. */ -/***************************************************************************/ -/* */ -/* ftconfig.in */ -/* */ -/* UNIX-specific configuration file (specification only). */ -/* */ -/* Copyright 1996-2004, 2006-2009, 2011, 2013, 2014 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This header file contains a number of macro definitions that are used */ - /* by the rest of the engine. Most of the macros here are automatically */ - /* determined at compile time, and you should not need to change it to */ - /* port FreeType, except to compile the library with a non-ANSI */ - /* compiler. */ - /* */ - /* Note however that if some specific modifications are needed, we */ - /* advise you to place a modified copy in your build directory. */ - /* */ - /* The build directory is usually `builds/<system>', and contains */ - /* system-specific files that are always included first when building */ - /* the library. */ - /* */ - /*************************************************************************/ +/* ftconfig.h. Generated from ftconfig.h.in by configure. */ +/**************************************************************************** + * + * ftconfig.h.in + * + * UNIX-specific configuration file (specification only). + * + * Copyright (C) 1996-2020 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This header file contains a number of macro definitions that are used by + * the rest of the engine. Most of the macros here are automatically + * determined at compile time, and you should not need to change it to port + * FreeType, except to compile the library with a non-ANSI compiler. + * + * Note however that if some specific modifications are needed, we advise + * you to place a modified copy in your build directory. + * + * The build directory is usually `builds/<system>`, and contains + * system-specific files that are always included first when building the + * library. + * + */ - -#ifndef __FTCONFIG_H__ -#define __FTCONFIG_H__ +#ifndef FTCONFIG_H_ +#define FTCONFIG_H_ #include <ft2build.h> #include FT_CONFIG_OPTIONS_H #include FT_CONFIG_STANDARD_LIBRARY_H - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ - /* */ - /* These macros can be toggled to suit a specific system. The current */ - /* ones are defaults used to compile FreeType in an ANSI C environment */ - /* (16bit compilers are also supported). Copy this file to your own */ - /* `builds/<system>' directory, and edit it to port the engine. */ - /* */ - /*************************************************************************/ - - #define HAVE_UNISTD_H 1 #define HAVE_FCNTL_H 1 -#define HAVE_STDINT_H 1 - - - /* There are systems (like the Texas Instruments 'C54x) where a `char' */ - /* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */ - /* `int' has 16 bits also for this system, sizeof(int) gives 1 which */ - /* is probably unexpected. */ - /* */ - /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */ - /* `char' type. */ - -#ifndef FT_CHAR_BIT -#define FT_CHAR_BIT CHAR_BIT -#endif - /* #undef FT_USE_AUTOCONF_SIZEOF_TYPES */ #ifdef FT_USE_AUTOCONF_SIZEOF_TYPES #define SIZEOF_INT 4 -#define SIZEOF_LONG 4 +#define SIZEOF_LONG 8 #define FT_SIZEOF_INT SIZEOF_INT #define FT_SIZEOF_LONG SIZEOF_LONG -#else /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ - - /* Following cpp computation of the bit length of int and long */ - /* is copied from default include/config/ftconfig.h. */ - /* If any improvement is required for this file, it should be */ - /* applied to the original header file for the builders that */ - /* does not use configure script. */ - - /* The size of an `int' type. */ -#if FT_UINT_MAX == 0xFFFFUL -#define FT_SIZEOF_INT (16 / FT_CHAR_BIT) -#elif FT_UINT_MAX == 0xFFFFFFFFUL -#define FT_SIZEOF_INT (32 / FT_CHAR_BIT) -#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL -#define FT_SIZEOF_INT (64 / FT_CHAR_BIT) -#else -#error "Unsupported size of `int' type!" -#endif - - /* The size of a `long' type. A five-byte `long' (as used e.g. on the */ - /* DM642) is recognized but avoided. */ -#if FT_ULONG_MAX == 0xFFFFFFFFUL -#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) -#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL -#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) -#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL -#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT) -#else -#error "Unsupported size of `long' type!" -#endif - -#endif /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ - - - /* FT_UNUSED is a macro used to indicate that a given parameter is not */ - /* used -- this is only used to get rid of unpleasant compiler warnings */ -#ifndef FT_UNUSED -#define FT_UNUSED( arg ) ( (arg) = (arg) ) -#endif - - - /*************************************************************************/ - /* */ - /* AUTOMATIC CONFIGURATION MACROS */ - /* */ - /* These macros are computed from the ones defined above. Don't touch */ - /* their definition, unless you know precisely what you are doing. No */ - /* porter should need to mess with them. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Mac support */ - /* */ - /* This is the only necessary change, so it is defined here instead */ - /* providing a new configuration file. */ - /* */ -#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) ) - /* no Carbon frameworks for 64bit 10.4.x */ - /* AvailabilityMacros.h is available since Mac OS X 10.2, */ - /* so guess the system version by maximum errno before inclusion */ -#include <errno.h> -#ifdef ECANCELED /* defined since 10.2 */ -#include "AvailabilityMacros.h" -#endif -#if defined( __LP64__ ) && \ - ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) -#undef FT_MACINTOSH -#endif - -#elif defined( __SC__ ) || defined( __MRC__ ) - /* Classic MacOS compilers */ -#include "ConditionalMacros.h" -#if TARGET_OS_MAC -#define FT_MACINTOSH 1 -#endif - -#endif - - - /* Fix compiler warning with sgi compiler */ -#if defined( __sgi ) && !defined( __GNUC__ ) -#if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 ) -#pragma set woff 3505 -#endif -#endif - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* basic_types */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Int16 */ - /* */ - /* <Description> */ - /* A typedef for a 16bit signed integer type. */ - /* */ - typedef signed short FT_Int16; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UInt16 */ - /* */ - /* <Description> */ - /* A typedef for a 16bit unsigned integer type. */ - /* */ - typedef unsigned short FT_UInt16; - - /* */ - - - /* this #if 0 ... #endif clause is for documentation purposes */ -#if 0 - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Int32 */ - /* */ - /* <Description> */ - /* A typedef for a 32bit signed integer type. The size depends on */ - /* the configuration. */ - /* */ - typedef signed XXX FT_Int32; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UInt32 */ - /* */ - /* A typedef for a 32bit unsigned integer type. The size depends on */ - /* the configuration. */ - /* */ - typedef unsigned XXX FT_UInt32; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Int64 */ - /* */ - /* A typedef for a 64bit signed integer type. The size depends on */ - /* the configuration. Only defined if there is real 64bit support; */ - /* otherwise, it gets emulated with a structure (if necessary). */ - /* */ - typedef signed XXX FT_Int64; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UInt64 */ - /* */ - /* A typedef for a 64bit unsigned integer type. The size depends on */ - /* the configuration. Only defined if there is real 64bit support; */ - /* otherwise, it gets emulated with a structure (if necessary). */ - /* */ - typedef unsigned XXX FT_UInt64; - - /* */ - -#endif - -#if FT_SIZEOF_INT == 4 - - typedef signed int FT_Int32; - typedef unsigned int FT_UInt32; - -#elif FT_SIZEOF_LONG == 4 - - typedef signed long FT_Int32; - typedef unsigned long FT_UInt32; - -#else -#error "no 32bit type found -- please check your configuration files" -#endif - - - /* look up an integer type that is at least 32 bits */ -#if FT_SIZEOF_INT >= 4 - - typedef int FT_Fast; - typedef unsigned int FT_UFast; - -#elif FT_SIZEOF_LONG >= 4 - - typedef long FT_Fast; - typedef unsigned long FT_UFast; - -#endif - - - /* determine whether we have a 64-bit int type for platforms without */ - /* Autoconf */ -#if FT_SIZEOF_LONG == 8 - - /* FT_LONG64 must be defined if a 64-bit type is available */ -#define FT_LONG64 -#define FT_INT64 long -#define FT_UINT64 unsigned long - - /*************************************************************************/ - /* */ - /* A 64-bit data type may create compilation problems if you compile */ - /* in strict ANSI mode. To avoid them, we disable other 64-bit data */ - /* types if __STDC__ is defined. You can however ignore this rule */ - /* by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ - /* */ -#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 ) - -#if defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ - - /* this compiler provides the __int64 type */ -#define FT_LONG64 -#define FT_INT64 __int64 -#define FT_UINT64 unsigned __int64 - -#elif defined( __BORLANDC__ ) /* Borland C++ */ - - /* XXXX: We should probably check the value of __BORLANDC__ in order */ - /* to test the compiler version. */ - - /* this compiler provides the __int64 type */ -#define FT_LONG64 -#define FT_INT64 __int64 -#define FT_UINT64 unsigned __int64 - -#elif defined( __WATCOMC__ ) /* Watcom C++ */ - - /* Watcom doesn't provide 64-bit data types */ - -#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ - -#define FT_LONG64 -#define FT_INT64 long long int -#define FT_UINT64 unsigned long long int - -#elif defined( __GNUC__ ) - - /* GCC provides the `long long' type */ -#define FT_LONG64 -#define FT_INT64 long long int -#define FT_UINT64 unsigned long long int - -#endif /* _MSC_VER */ - -#endif /* FT_SIZEOF_LONG == 8 */ - -#ifdef FT_LONG64 - typedef FT_INT64 FT_Int64; - typedef FT_UINT64 FT_UInt64; -#endif - - -#define FT_BEGIN_STMNT do { -#define FT_END_STMNT } while ( 0 ) -#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT - - -#ifdef FT_MAKE_OPTION_SINGLE_OBJECT - -#define FT_LOCAL( x ) static x -#define FT_LOCAL_DEF( x ) static x - -#else - -#ifdef __cplusplus -#define FT_LOCAL( x ) extern "C" x -#define FT_LOCAL_DEF( x ) extern "C" x -#else -#define FT_LOCAL( x ) extern x -#define FT_LOCAL_DEF( x ) x -#endif - -#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ - -#define FT_LOCAL_ARRAY( x ) extern const x -#define FT_LOCAL_ARRAY_DEF( x ) const x - - -#ifndef FT_BASE - -#ifdef __cplusplus -#define FT_BASE( x ) extern "C" x -#else -#define FT_BASE( x ) extern x -#endif - -#endif /* !FT_BASE */ - - -#ifndef FT_BASE_DEF - -#ifdef __cplusplus -#define FT_BASE_DEF( x ) x -#else -#define FT_BASE_DEF( x ) x -#endif - -#endif /* !FT_BASE_DEF */ - - -#ifndef FT_EXPORT - -#ifdef __cplusplus -#define FT_EXPORT( x ) extern "C" x -#else -#define FT_EXPORT( x ) extern x -#endif - -#endif /* !FT_EXPORT */ - - -#ifndef FT_EXPORT_DEF - -#ifdef __cplusplus -#define FT_EXPORT_DEF( x ) extern "C" x -#else -#define FT_EXPORT_DEF( x ) extern x -#endif - -#endif /* !FT_EXPORT_DEF */ - - -#ifndef FT_EXPORT_VAR - -#ifdef __cplusplus -#define FT_EXPORT_VAR( x ) extern "C" x -#else -#define FT_EXPORT_VAR( x ) extern x -#endif - -#endif /* !FT_EXPORT_VAR */ - - /* The following macros are needed to compile the library with a */ - /* C++ compiler and with 16bit compilers. */ - /* */ - - /* This is special. Within C++, you must specify `extern "C"' for */ - /* functions which are used via function pointers, and you also */ - /* must do that for structures which contain function pointers to */ - /* assure C linkage -- it's not possible to have (local) anonymous */ - /* functions which are accessed by (global) function pointers. */ - /* */ - /* */ - /* FT_CALLBACK_DEF is used to _define_ a callback function. */ - /* */ - /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ - /* contains pointers to callback functions. */ - /* */ - /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ - /* that contains pointers to callback functions. */ - /* */ - /* */ - /* Some 16bit compilers have to redefine these macros to insert */ - /* the infamous `_cdecl' or `__fastcall' declarations. */ - /* */ -#ifndef FT_CALLBACK_DEF -#ifdef __cplusplus -#define FT_CALLBACK_DEF( x ) extern "C" x -#else -#define FT_CALLBACK_DEF( x ) static x -#endif -#endif /* FT_CALLBACK_DEF */ - -#ifndef FT_CALLBACK_TABLE -#ifdef __cplusplus -#define FT_CALLBACK_TABLE extern "C" -#define FT_CALLBACK_TABLE_DEF extern "C" -#else -#define FT_CALLBACK_TABLE extern -#define FT_CALLBACK_TABLE_DEF /* nothing */ -#endif -#endif /* FT_CALLBACK_TABLE */ - - -FT_END_HEADER +#endif /* FT_USE_AUTOCONF_SIZEOF_TYPES */ +#include <freetype/config/integer-types.h> +#include <freetype/config/public-macros.h> +#include <freetype/config/mac-support.h> -#endif /* __FTCONFIG_H__ */ +#endif /* FTCONFIG_H_ */ /* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/builds/unix/ftsystem.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/builds/unix/ftsystem.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/builds/unix/ftsystem.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/builds/unix/ftsystem.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ /* */ /* Unix-specific FreeType low-level system interface (body). */ /* */ -/* Copyright (C) 1996-2019 by */ +/* Copyright (C) 1996-2020 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -19,11 +19,12 @@ #include <ft2build.h> /* we use our special ftconfig.h file, not the standard one */ #include <ftconfig.h> -#include FT_INTERNAL_DEBUG_H -#include FT_SYSTEM_H -#include FT_ERRORS_H -#include FT_TYPES_H -#include FT_INTERNAL_STREAM_H +//#include FT_CONFIG_CONFIG_H +#include <freetype/internal/ftdebug.h> +#include <freetype/ftsystem.h> +#include <freetype/fterrors.h> +#include <freetype/fttypes.h> +#include <freetype/internal/ftstream.h> /* memory-mapping includes and definitions */ #ifdef HAVE_UNISTD_H @@ -351,7 +352,7 @@ stream->read = 0; FT_TRACE1(( "FT_Stream_Open:" )); - FT_TRACE1(( " opened `%s' (%d bytes) successfully\n", + FT_TRACE1(( " opened `%s' (%ld bytes) successfully\n", filepathname, stream->size )); return FT_Err_Ok; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/docs/CHANGES qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/docs/CHANGES --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/docs/CHANGES 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/docs/CHANGES 2022-11-11 15:29:17.000000000 +0800 @@ -1,3 +1,104 @@ +CHANGES BETWEEN 2.10.3 and 2.10.4 + + I. IMPORTANT BUG FIXES + + - A heap buffer overflow has been found in the handling of embedded + PNG bitmaps, introduced in FreeType version 2.6. + + https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-15999 + + If you use option FT_CONFIG_OPTION_USE_PNG you should upgrade + immediately. + + +====================================================================== + +CHANGES BETWEEN 2.10.2 and 2.10.3 + + I. IMPORTANT CHANGES + + - New flag `FT_OUTLINE_OVERLAP'. If set, make the smooth rasterizer + do 4x4 oversampling to mitigate artifacts in pixels partially + covered by overlapping contours. Note that this at least + quadruples the rendering time. + + If a glyph in a TrueType font has the `OVERLAP_SIMPLE' or + `OVERLAP_COMPOUND' bit set, FreeType automatically selects this + rendering mode. + + + II. MISCELLANEOUS + + - Using the arcane method of including FreeType header files with + macros like `FT_FREETYPE_H' is no longer mandatory (but retained + as an optional feature for backward compatibility). + + - Support for building the library with Meson. Building the demo + programs with Meson will follow in a forthcoming release. + + - Minor improvements to the B/W rasterizer. + + - Auto-hinter support for Medefaidrin script. + + - Fix various memory leaks (mainly for CFF) and other issues that + might cause crashes in rare circumstances. + + - Jam support has been removed. + + - In `ftview', custom LCD filter values are now normalized and + balanced. Unorthodox filters are still available through the `-L' + command line option. + + - The GUI demo programs can now be resized. + + - Demo programs that accept command line option `-k' can now handle + function keys, too. The corresponding character codes start with + 0xF1. As an example, the POSIX shell syntax (accepted by bash, + ksh, and zsh) + + -k $'\xF3q' + + emulates the pressing of function key `F3' followed by key `q'. + + +====================================================================== + +CHANGES BETWEEN 2.10.1 and 2.10.2 + + I. IMPORTANT CHANGES + + - Support of WOFF2 fonts. This code contribution was Nikhil + Ramakrishnan's GSoC 2019 project. + + + II. MISCELLANEOUS + + - Function `FT_Get_Var_Axis_Flags' returned random data for Type 1 + MM fonts. + + - Type 1 fonts with non-integer metrics are now supported by the new + (CFF) engine introduced in FreeType 2.9. + + - Drop support for Python 2 in Freetype's API reference generator + `docwriter' (Python >= 3.5 is required for targets `make refdoc' + and `make refdoc-venv'). + + - Auto-hinter support for Hanifi Rohingya. + + - Document the `FT2_KEEP_ALIVE' debugging environment variable. + + - The Visual C++ (and Visual C) project files for Windows builds no + longer generate libraries that contain the FreeType version in its + filenames. Instead, a resource file gets used to make the + libraries contain the corresponding information. + + - The next release will remove Jam build support. + + - The `ftbench' demo program has a new test for testing the + `FT_Glyph_Stroke' functionality. + + +====================================================================== CHANGES BETWEEN 2.10.0 and 2.10.1 @@ -209,7 +310,7 @@ use the `pkg-config' interface. The `configure' script no longer installs `freetype-config' by - default. For backwards compatibility, a new configure option + default. For backward compatibility, a new configure option `--enable-freetype-config' is provided that reverts this decision. @@ -5198,7 +5299,7 @@ ------------------------------------------------------------------------ -Copyright (C) 2000-2019 by +Copyright (C) 2000-2020 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/docs/CUSTOMIZE qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/docs/CUSTOMIZE --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/docs/CUSTOMIZE 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/docs/CUSTOMIZE 2022-11-11 15:29:17.000000000 +0800 @@ -139,7 +139,7 @@ ---------------------------------------------------------------------- -Copyright (C) 2003-2019 by +Copyright (C) 2003-2020 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/docs/DEBUG qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/docs/DEBUG --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/docs/DEBUG 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/docs/DEBUG 2022-11-11 15:29:17.000000000 +0800 @@ -11,20 +11,20 @@ FT_DEBUG_LEVEL_ERROR - #define this macro if you want to compile the FT_ERROR macro calls - to print error messages during program execution. This will not - stop the program. Very useful to spot invalid fonts during + #define this macro if you want to compile the `FT_ERROR' macro + calls to print error messages during program execution. This does + not stop the program. Very useful to spot invalid fonts during development and to code workarounds for them. FT_DEBUG_LEVEL_TRACE - #define this macro if you want to compile both macros FT_ERROR and - FT_TRACE. This also includes the variants FT_TRACE0, FT_TRACE1, - FT_TRACE2, ..., FT_TRACE7. + #define this macro if you want to compile both macros `FT_ERROR' + and `FT_TRACE'. This also includes the variants `FT_TRACE0', + `FT_TRACE1', `FT_TRACE2', ..., `FT_TRACE7'. The trace macros are used to send debugging messages when an appropriate `debug level' is configured at runtime through the - FT2_DEBUG environment variable (more on this later). + `FT2_DEBUG' environment variable (more on this later). FT_DEBUG_MEMORY @@ -32,16 +32,16 @@ small but effective debugging memory manager that tracks all allocations and frees that are performed within the font engine. - When the FT2_DEBUG_MEMORY environment variable is defined at - runtime, a call to FT_Done_FreeType will dump memory statistics, - including the list of leaked memory blocks with the source - locations where these were allocated. It is always a very good - idea to define this in development builds. This works with _any_ - program linked to FreeType, but requires a big deal of memory (the - debugging memory manager never frees the blocks to the heap in - order to detect double frees). + When the `FT2_DEBUG_MEMORY' environment variable is defined at + runtime, a call to `FT_Done_FreeType' dumps memory statistics, + including the list of leaked memory blocks and optionally with the + source locations where these were allocated. It is always a very + good idea to define this in development builds. This works with + _any_ program linked to FreeType, but requires a big deal of + memory (the debugging memory manager never frees the blocks to the + heap in order to detect double frees). - When FT2_DEBUG_MEMORY isn't defined at runtime, the debugging + When `FT2_DEBUG_MEMORY' isn't defined at runtime, the debugging memory manager is ignored, and performance is unaffected. @@ -55,10 +55,10 @@ 1. FT_ERROR(( ... )) This macro is used to send debug messages that indicate relatively - serious errors (like broken font files), but will not stop the + serious errors (like broken font files) without stopping the execution of the running program. Its code is compiled only when - either FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined in - `ftoption.h'. + either `FT_DEBUG_LEVEL_ERROR' or `FT_DEBUG_LEVEL_TRACE' are + defined in `ftoption.h'. Note that you have to use a printf-like signature, but with double parentheses, like in @@ -69,53 +69,53 @@ 2. FT_ASSERT( condition ) This macro is used to check strong assertions at runtime. If its - condition isn't TRUE, the program will abort with a panic message. - Its code is compiled when either FT_DEBUG_LEVEL_ERROR or - FT_DEBUG_LEVEL_TRACE are defined. You don't need double - parentheses here. For example + condition isn't TRUE, the program aborts with a panic message. + Its code is compiled when either `FT_DEBUG_LEVEL_ERROR' or + `FT_DEBUG_LEVEL_TRACE' are defined. You don't need double + parentheses here. Example: FT_ASSERT( ptr != NULL ); 3. FT_TRACE( level, (message...) ) - The FT_TRACE macro is used to send general-purpose debugging + The `FT_TRACE' macro is used to send general-purpose debugging messages during program execution. This macro uses an *implicit* - macro named FT_COMPONENT used to name the current FreeType + macro named `FT_COMPONENT', which names the current FreeType component being run. - The developer should always define FT_COMPONENT as appropriate, + The developer should always define `FT_COMPONENT' as appropriate, for example as in #undef FT_COMPONENT #define FT_COMPONENT io - The value of the FT_COMPONENT macro is one of the component - names defined in the internal file `internal/fttrace.h'. If you - modify FreeType source and insert new FT_COMPONENT macro, you must - register it in `fttrace.h'. If you insert or remove many trace - macros, you can check the undefined or the unused trace macro by - `src/tools/chktrcmp.py'. - - Each such component is assigned a `debug level', ranging from 0 to - 7, through the use of the FT2_DEBUG environment variable - (described below) when a program linked with FreeType starts. + The value of the `FT_COMPONENT' macro is one of the component + names defined in the internal file `internal/fttrace.h'. If you + modify the FreeType source code and insert a new `FT_COMPONENT' + macro, you must register it in `fttrace.h'. If you insert or + remove many trace macros, you can test for undefined or unused + trace macros with the script `src/tools/chktrcmp.py'. + + Each such component is assigned a `debug level', ranging from + value 0 to 7, through the use of the `FT2_DEBUG' environment + variable (described below) when a program linked with FreeType + starts. - When FT_TRACE is called, its level is compared to the one of the + When `FT_TRACE' is called, its level is compared to the one of the corresponding component. Messages with trace levels *higher* than - the corresponding component level are filtered and never printed. + the corresponding component level are filtered out and never + printed. This means that trace messages with level 0 are always + printed, those with level 2 are only printed when the component + level is *at least* 2, etc. - This means that trace messages with level 0 are always printed, - those with level 2 are only printed when the component level is - *at least* 2. - - The second parameter to FT_TRACE must contain parentheses and - correspond to a printf-like call, as in + The second parameter to `FT_TRACE' must contain parentheses and + corresponds to a printf-like call, as in FT_TRACE( 2, ( "your %s is not %s\n", "foo", "bar" ) ) - The shortcut macros FT_TRACE0, FT_TRACE1, FT_TRACE2, ..., - FT_TRACE7 can be used with constant level indices, and are much + The shortcut macros `FT_TRACE0', `FT_TRACE1', `FT_TRACE2', ..., + `FT_TRACE7' can be used with constant level indices, and are much cleaner to use, as in FT_TRACE2(( "your %s is not %s\n", "foo", "bar" )); @@ -131,7 +131,7 @@ FT2_DEBUG This variable is only used when FreeType is built with - FT_DEBUG_LEVEL_TRACE defined. It contains a list of component + `FT_DEBUG_LEVEL_TRACE' defined. It contains a list of component level definitions, following this format: component1:level1 component2:level2 component3:level3 ... @@ -140,57 +140,70 @@ in `fttrace.h'. `levelX' is the corresponding level to use at runtime. - `any' is a special component name that will be interpreted as - `any/all components'. For example, the following definitions + `any' is a special component name that is interpreted as `any/all + components'. For example, the following definitions set FT2_DEBUG=any:2 memory:5 io:4 (on Windows) export FT2_DEBUG="any:2 memory:5 io:4" (on Linux with bash) both stipulate that all components should have level 2, except for - the memory and io components which will be set to trace levels 5 + the memory and io components, which are set to the trace levels 5 and 4, respectively. FT2_DEBUG_MEMORY This environment variable, when defined, tells FreeType to use a - debugging memory manager that will track leaking memory blocks as - well as other common errors like double frees. It is also capable - of reporting _where_ the leaking blocks were allocated, which + debugging memory manager that tracks leaking memory blocks as well + as other common errors like double frees. It is also capable of + reporting _where_ the leaking blocks were allocated, which considerably saves time when debugging new additions to the library. This code is only compiled when FreeType is built with the - FT_DEBUG_MEMORY macro #defined in `ftoption.h' though, it will be + `FT_DEBUG_MEMORY' macro #defined in `ftoption.h' though, it is ignored in other builds. FT2_ALLOC_TOTAL_MAX - This variable is ignored if FT2_DEBUG_MEMORY is not defined. It + This variable is ignored if `FT2_DEBUG_MEMORY' is not defined. It allows you to specify a maximum heap size for all memory allocations performed by FreeType. This is very useful to test the robustness of the font engine and programs that use it in tight memory conditions. - If it is undefined, or if its value is not strictly positive, then - no allocation bounds are checked at runtime. + If it is undefined, or if its value is not strictly positive, no + allocation bounds are checked at runtime. FT2_ALLOC_COUNT_MAX - This variable is ignored if FT2_DEBUG_MEMORY is not defined. It + This variable is ignored if `FT2_DEBUG_MEMORY' is not defined. It allows you to specify a maximum number of memory allocations performed by FreeType before returning the error - FT_Err_Out_Of_Memory. This is useful for debugging and testing + `FT_Err_Out_Of_Memory'. This is useful for debugging and testing the engine's robustness. - If it is undefined, or if its value is not strictly positive, then - no allocation bounds are checked at runtime. + If it is undefined, or if its value is not strictly positive, no + allocation bounds are checked at runtime. + + + FT2_KEEP_ALIVE + + This variable is ignored if `FT2_DEBUG_MEMORY' is not defined. + `Keep alive' means that freed blocks aren't released to the heap. + This is useful to detect double-frees or weird heap corruption, + reporting the source code location of the original allocation and + deallocation in case of a problem. It uses large amounts of + memory, however. + + If it is undefined, or if its value is not strictly positive, + freed blocks are released at runtime. ------------------------------------------------------------------------ -Copyright (C) 2002-2019 by +Copyright (C) 2002-2020 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/docs/TODO qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/docs/TODO --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/docs/TODO 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/docs/TODO 2022-11-11 15:29:17.000000000 +0800 @@ -27,7 +27,7 @@ ------------------------------------------------------------------------ -Copyright (C) 2001-2019 by +Copyright (C) 2001-2020 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/ftconfig.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/ftconfig.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/ftconfig.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/ftconfig.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * ANSI-specific configuration file (specification only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -41,533 +41,9 @@ #include FT_CONFIG_OPTIONS_H #include FT_CONFIG_STANDARD_LIBRARY_H - -FT_BEGIN_HEADER - - - /************************************************************************** - * - * PLATFORM-SPECIFIC CONFIGURATION MACROS - * - * These macros can be toggled to suit a specific system. The current ones - * are defaults used to compile FreeType in an ANSI C environment (16bit - * compilers are also supported). Copy this file to your own - * `builds/<system>` directory, and edit it to port the engine. - * - */ - - - /* There are systems (like the Texas Instruments 'C54x) where a `char` */ - /* has 16~bits. ANSI~C says that `sizeof(char)` is always~1. Since an */ - /* `int` has 16~bits also for this system, `sizeof(int)` gives~1 which */ - /* is probably unexpected. */ - /* */ - /* `CHAR_BIT` (defined in `limits.h`) gives the number of bits in a */ - /* `char` type. */ - -#ifndef FT_CHAR_BIT -#define FT_CHAR_BIT CHAR_BIT -#endif - - - /* The size of an `int` type. */ -#if FT_UINT_MAX == 0xFFFFUL -#define FT_SIZEOF_INT ( 16 / FT_CHAR_BIT ) -#elif FT_UINT_MAX == 0xFFFFFFFFUL -#define FT_SIZEOF_INT ( 32 / FT_CHAR_BIT ) -#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL -#define FT_SIZEOF_INT ( 64 / FT_CHAR_BIT ) -#else -#error "Unsupported size of `int' type!" -#endif - - /* The size of a `long` type. A five-byte `long` (as used e.g. on the */ - /* DM642) is recognized but avoided. */ -#if FT_ULONG_MAX == 0xFFFFFFFFUL -#define FT_SIZEOF_LONG ( 32 / FT_CHAR_BIT ) -#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL -#define FT_SIZEOF_LONG ( 32 / FT_CHAR_BIT ) -#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL -#define FT_SIZEOF_LONG ( 64 / FT_CHAR_BIT ) -#else -#error "Unsupported size of `long' type!" -#endif - - - /* `FT_UNUSED` indicates that a given parameter is not used -- */ - /* this is only used to get rid of unpleasant compiler warnings. */ -#ifndef FT_UNUSED -#define FT_UNUSED( arg ) ( (arg) = (arg) ) -#endif - - - /************************************************************************** - * - * AUTOMATIC CONFIGURATION MACROS - * - * These macros are computed from the ones defined above. Don't touch - * their definition, unless you know precisely what you are doing. No - * porter should need to mess with them. - * - */ - - - /************************************************************************** - * - * Mac support - * - * This is the only necessary change, so it is defined here instead - * providing a new configuration file. - */ -#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) ) - /* No Carbon frameworks for 64bit 10.4.x. */ - /* `AvailabilityMacros.h` is available since Mac OS X 10.2, */ - /* so guess the system version by maximum errno before inclusion. */ -#include <errno.h> -#ifdef ECANCELED /* defined since 10.2 */ -#include "AvailabilityMacros.h" -#endif -#if defined( __LP64__ ) && \ - ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) -#undef FT_MACINTOSH -#endif - -#elif defined( __SC__ ) || defined( __MRC__ ) - /* Classic MacOS compilers */ -#include "ConditionalMacros.h" -#if TARGET_OS_MAC -#define FT_MACINTOSH 1 -#endif - -#endif - - - /* Fix compiler warning with sgi compiler. */ -#if defined( __sgi ) && !defined( __GNUC__ ) -#if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 ) -#pragma set woff 3505 -#endif -#endif - - - /************************************************************************** - * - * @section: - * basic_types - * - */ - - - /************************************************************************** - * - * @type: - * FT_Int16 - * - * @description: - * A typedef for a 16bit signed integer type. - */ - typedef signed short FT_Int16; - - - /************************************************************************** - * - * @type: - * FT_UInt16 - * - * @description: - * A typedef for a 16bit unsigned integer type. - */ - typedef unsigned short FT_UInt16; - - /* */ - - - /* this #if 0 ... #endif clause is for documentation purposes */ -#if 0 - - /************************************************************************** - * - * @type: - * FT_Int32 - * - * @description: - * A typedef for a 32bit signed integer type. The size depends on the - * configuration. - */ - typedef signed XXX FT_Int32; - - - /************************************************************************** - * - * @type: - * FT_UInt32 - * - * A typedef for a 32bit unsigned integer type. The size depends on the - * configuration. - */ - typedef unsigned XXX FT_UInt32; - - - /************************************************************************** - * - * @type: - * FT_Int64 - * - * A typedef for a 64bit signed integer type. The size depends on the - * configuration. Only defined if there is real 64bit support; - * otherwise, it gets emulated with a structure (if necessary). - */ - typedef signed XXX FT_Int64; - - - /************************************************************************** - * - * @type: - * FT_UInt64 - * - * A typedef for a 64bit unsigned integer type. The size depends on the - * configuration. Only defined if there is real 64bit support; - * otherwise, it gets emulated with a structure (if necessary). - */ - typedef unsigned XXX FT_UInt64; - - /* */ - -#endif - -#if FT_SIZEOF_INT == ( 32 / FT_CHAR_BIT ) - - typedef signed int FT_Int32; - typedef unsigned int FT_UInt32; - -#elif FT_SIZEOF_LONG == ( 32 / FT_CHAR_BIT ) - - typedef signed long FT_Int32; - typedef unsigned long FT_UInt32; - -#else -#error "no 32bit type found -- please check your configuration files" -#endif - - - /* look up an integer type that is at least 32~bits */ -#if FT_SIZEOF_INT >= ( 32 / FT_CHAR_BIT ) - - typedef int FT_Fast; - typedef unsigned int FT_UFast; - -#elif FT_SIZEOF_LONG >= ( 32 / FT_CHAR_BIT ) - - typedef long FT_Fast; - typedef unsigned long FT_UFast; - -#endif - - - /* determine whether we have a 64-bit `int` type for platforms without */ - /* Autoconf */ -#if FT_SIZEOF_LONG == ( 64 / FT_CHAR_BIT ) - - /* `FT_LONG64` must be defined if a 64-bit type is available */ -#define FT_LONG64 -#define FT_INT64 long -#define FT_UINT64 unsigned long - - /************************************************************************** - * - * A 64-bit data type may create compilation problems if you compile in - * strict ANSI mode. To avoid them, we disable other 64-bit data types if - * `__STDC__` is defined. You can however ignore this rule by defining the - * `FT_CONFIG_OPTION_FORCE_INT64` configuration macro. - */ -#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 ) - -#if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L - -#define FT_LONG64 -#define FT_INT64 long long int -#define FT_UINT64 unsigned long long int - -#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ - - /* this compiler provides the `__int64` type */ -#define FT_LONG64 -#define FT_INT64 __int64 -#define FT_UINT64 unsigned __int64 - -#elif defined( __BORLANDC__ ) /* Borland C++ */ - - /* XXXX: We should probably check the value of `__BORLANDC__` in order */ - /* to test the compiler version. */ - - /* this compiler provides the `__int64` type */ -#define FT_LONG64 -#define FT_INT64 __int64 -#define FT_UINT64 unsigned __int64 - -#elif defined( __WATCOMC__ ) /* Watcom C++ */ - - /* Watcom doesn't provide 64-bit data types */ - -#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ - -#define FT_LONG64 -#define FT_INT64 long long int -#define FT_UINT64 unsigned long long int - -#elif defined( __GNUC__ ) - - /* GCC provides the `long long` type */ -#define FT_LONG64 -#define FT_INT64 long long int -#define FT_UINT64 unsigned long long int - -#endif /* __STDC_VERSION__ >= 199901L */ - -#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */ - -#ifdef FT_LONG64 - typedef FT_INT64 FT_Int64; - typedef FT_UINT64 FT_UInt64; -#endif - - -#ifdef _WIN64 - /* only 64bit Windows uses the LLP64 data model, i.e., */ - /* 32bit integers, 64bit pointers */ -#define FT_UINT_TO_POINTER( x ) (void*)(unsigned __int64)(x) -#else -#define FT_UINT_TO_POINTER( x ) (void*)(unsigned long)(x) -#endif - - - /************************************************************************** - * - * miscellaneous - * - */ - - -#define FT_BEGIN_STMNT do { -#define FT_END_STMNT } while ( 0 ) -#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT - - - /* `typeof` condition taken from gnulib's `intprops.h` header file */ -#if ( ( defined( __GNUC__ ) && __GNUC__ >= 2 ) || \ - ( defined( __IBMC__ ) && __IBMC__ >= 1210 && \ - defined( __IBM__TYPEOF__ ) ) || \ - ( defined( __SUNPRO_C ) && __SUNPRO_C >= 0x5110 && !__STDC__ ) ) -#define FT_TYPEOF( type ) ( __typeof__ ( type ) ) -#else -#define FT_TYPEOF( type ) /* empty */ -#endif - - - /* Use `FT_LOCAL` and `FT_LOCAL_DEF` to declare and define, */ - /* respectively, a function that gets used only within the scope of a */ - /* module. Normally, both the header and source code files for such a */ - /* function are within a single module directory. */ - /* */ - /* Intra-module arrays should be tagged with `FT_LOCAL_ARRAY` and */ - /* `FT_LOCAL_ARRAY_DEF`. */ - /* */ -#ifdef FT_MAKE_OPTION_SINGLE_OBJECT - -#define FT_LOCAL( x ) static x -#define FT_LOCAL_DEF( x ) static x - -#else - -#ifdef __cplusplus -#define FT_LOCAL( x ) extern "C" x -#define FT_LOCAL_DEF( x ) extern "C" x -#else -#define FT_LOCAL( x ) extern x -#define FT_LOCAL_DEF( x ) x -#endif - -#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ - -#define FT_LOCAL_ARRAY( x ) extern const x -#define FT_LOCAL_ARRAY_DEF( x ) const x - - - /* Use `FT_BASE` and `FT_BASE_DEF` to declare and define, respectively, */ - /* functions that are used in more than a single module. In the */ - /* current setup this implies that the declaration is in a header file */ - /* in the `include/freetype/internal` directory, and the function body */ - /* is in a file in `src/base`. */ - /* */ -#ifndef FT_BASE - -#ifdef __cplusplus -#define FT_BASE( x ) extern "C" x -#else -#define FT_BASE( x ) extern x -#endif - -#endif /* !FT_BASE */ - - -#ifndef FT_BASE_DEF - -#ifdef __cplusplus -#define FT_BASE_DEF( x ) x -#else -#define FT_BASE_DEF( x ) x -#endif - -#endif /* !FT_BASE_DEF */ - - - /* When compiling FreeType as a DLL or DSO with hidden visibility */ - /* some systems/compilers need a special attribute in front OR after */ - /* the return type of function declarations. */ - /* */ - /* Two macros are used within the FreeType source code to define */ - /* exported library functions: `FT_EXPORT` and `FT_EXPORT_DEF`. */ - /* */ - /* - `FT_EXPORT( return_type )` */ - /* */ - /* is used in a function declaration, as in */ - /* */ - /* ``` */ - /* FT_EXPORT( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ); */ - /* ``` */ - /* */ - /* - `FT_EXPORT_DEF( return_type )` */ - /* */ - /* is used in a function definition, as in */ - /* */ - /* ``` */ - /* FT_EXPORT_DEF( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ) */ - /* { */ - /* ... some code ... */ - /* return FT_Err_Ok; */ - /* } */ - /* ``` */ - /* */ - /* You can provide your own implementation of `FT_EXPORT` and */ - /* `FT_EXPORT_DEF` here if you want. */ - /* */ - /* To export a variable, use `FT_EXPORT_VAR`. */ - /* */ -#ifndef FT_EXPORT - -#ifdef FT2_BUILD_LIBRARY - -#if defined( _WIN32 ) && defined( DLL_EXPORT ) -#define FT_EXPORT( x ) __declspec( dllexport ) x -#elif defined( __GNUC__ ) && __GNUC__ >= 4 -#define FT_EXPORT( x ) __attribute__(( visibility( "default" ) )) x -#elif defined( __SUNPRO_C ) && __SUNPRO_C >= 0x550 -#define FT_EXPORT( x ) __global x -#elif defined( __cplusplus ) -#define FT_EXPORT( x ) extern "C" x -#else -#define FT_EXPORT( x ) extern x -#endif - -#else - -#if defined( _WIN32 ) && defined( DLL_IMPORT ) -#define FT_EXPORT( x ) __declspec( dllimport ) x -#elif defined( __cplusplus ) -#define FT_EXPORT( x ) extern "C" x -#else -#define FT_EXPORT( x ) extern x -#endif - -#endif - -#endif /* !FT_EXPORT */ - - -#ifndef FT_EXPORT_DEF - -#ifdef __cplusplus -#define FT_EXPORT_DEF( x ) extern "C" x -#else -#define FT_EXPORT_DEF( x ) extern x -#endif - -#endif /* !FT_EXPORT_DEF */ - - -#ifndef FT_EXPORT_VAR - -#ifdef __cplusplus -#define FT_EXPORT_VAR( x ) extern "C" x -#else -#define FT_EXPORT_VAR( x ) extern x -#endif - -#endif /* !FT_EXPORT_VAR */ - - - /* The following macros are needed to compile the library with a */ - /* C++ compiler and with 16bit compilers. */ - /* */ - - /* This is special. Within C++, you must specify `extern "C"` for */ - /* functions which are used via function pointers, and you also */ - /* must do that for structures which contain function pointers to */ - /* assure C linkage -- it's not possible to have (local) anonymous */ - /* functions which are accessed by (global) function pointers. */ - /* */ - /* */ - /* FT_CALLBACK_DEF is used to _define_ a callback function, */ - /* located in the same source code file as the structure that uses */ - /* it. */ - /* */ - /* FT_BASE_CALLBACK and FT_BASE_CALLBACK_DEF are used to declare */ - /* and define a callback function, respectively, in a similar way */ - /* as FT_BASE and FT_BASE_DEF work. */ - /* */ - /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ - /* contains pointers to callback functions. */ - /* */ - /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ - /* that contains pointers to callback functions. */ - /* */ - /* */ - /* Some 16bit compilers have to redefine these macros to insert */ - /* the infamous `_cdecl` or `__fastcall` declarations. */ - /* */ -#ifndef FT_CALLBACK_DEF -#ifdef __cplusplus -#define FT_CALLBACK_DEF( x ) extern "C" x -#else -#define FT_CALLBACK_DEF( x ) static x -#endif -#endif /* FT_CALLBACK_DEF */ - -#ifndef FT_BASE_CALLBACK -#ifdef __cplusplus -#define FT_BASE_CALLBACK( x ) extern "C" x -#define FT_BASE_CALLBACK_DEF( x ) extern "C" x -#else -#define FT_BASE_CALLBACK( x ) extern x -#define FT_BASE_CALLBACK_DEF( x ) x -#endif -#endif /* FT_BASE_CALLBACK */ - -#ifndef FT_CALLBACK_TABLE -#ifdef __cplusplus -#define FT_CALLBACK_TABLE extern "C" -#define FT_CALLBACK_TABLE_DEF extern "C" -#else -#define FT_CALLBACK_TABLE extern -#define FT_CALLBACK_TABLE_DEF /* nothing */ -#endif -#endif /* FT_CALLBACK_TABLE */ - - -FT_END_HEADER - +#include <freetype/config/integer-types.h> +#include <freetype/config/public-macros.h> +#include <freetype/config/mac-support.h> #endif /* FTCONFIG_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/ftheader.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/ftheader.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/ftheader.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/ftheader.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Build macros of the FreeType 2 library. * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -30,10 +30,12 @@ /* encapsulated in an `extern "C" { .. }` block when included from a */ /* C++ compiler. */ /* */ -#ifdef __cplusplus -#define FT_BEGIN_HEADER extern "C" { -#else -#define FT_BEGIN_HEADER /* nothing */ +#ifndef FT_BEGIN_HEADER +# ifdef __cplusplus +# define FT_BEGIN_HEADER extern "C" { +# else +# define FT_BEGIN_HEADER /* nothing */ +# endif #endif @@ -48,10 +50,12 @@ /* encapsulated in an `extern "C" { .. }` block when included from a */ /* C++ compiler. */ /* */ -#ifdef __cplusplus -#define FT_END_HEADER } -#else -#define FT_END_HEADER /* nothing */ +#ifndef FT_END_HEADER +# ifdef __cplusplus +# define FT_END_HEADER } +# else +# define FT_END_HEADER /* nothing */ +# endif #endif @@ -73,9 +77,16 @@ * Macro definitions used to `#include` specific header files. * * @description: - * The following macros are defined to the name of specific FreeType~2 - * header files. They can be used directly in `#include` statements as - * in: + * In addition to the normal scheme of including header files like + * + * ``` + * #include <freetype/freetype.h> + * #include <freetype/ftmm.h> + * #include <freetype/ftglyph.h> + * ``` + * + * it is possible to used named macros instead. They can be used + * directly in `#include` statements as in * * ``` * #include FT_FREETYPE_H @@ -83,13 +94,9 @@ * #include FT_GLYPH_H * ``` * - * There are several reasons why we are now using macros to name public - * header files. The first one is that such macros are not limited to - * the infamous 8.3~naming rule required by DOS (and - * `FT_MULTIPLE_MASTERS_H` is a lot more meaningful than `ftmm.h`). - * - * The second reason is that it allows for more flexibility in the way - * FreeType~2 is installed on a given system. + * These macros were introduced to overcome the infamous 8.3~naming rule + * required by DOS (and `FT_MULTIPLE_MASTERS_H` is a lot more meaningful + * than `ftmm.h`). * */ @@ -797,16 +804,19 @@ #define FT_CACHE_INTERNAL_IMAGE_H FT_CACHE_H #define FT_CACHE_INTERNAL_SBITS_H FT_CACHE_H - - /* - * Include internal headers definitions from `<internal/...>` only when - * building the library. - */ +/* TODO(david): Move this section below to a different header */ #ifdef FT2_BUILD_LIBRARY -#define FT_INTERNAL_INTERNAL_H <freetype/internal/internal.h> -#include FT_INTERNAL_INTERNAL_H -#endif /* FT2_BUILD_LIBRARY */ +#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ + /* We disable the warning `conditional expression is constant' here */ + /* in order to compile cleanly with the maximum level of warnings. */ + /* In particular, the warning complains about stuff like `while(0)' */ + /* which is very useful in macro definitions. There is no benefit */ + /* in having it enabled. */ +#pragma warning( disable : 4127 ) + +#endif /* _MSC_VER */ +#endif /* FT2_BUILD_LIBRARY */ #endif /* FTHEADER_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/ftmodule.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/ftmodule.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/ftmodule.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/ftmodule.h 2022-11-11 15:29:17.000000000 +0800 @@ -25,8 +25,6 @@ FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) -FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class ) -FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class ) FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) /* EOF */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/ftoption.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/ftoption.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/ftoption.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/ftoption.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * User-selectable configuration macros (specification only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -42,7 +42,7 @@ * the name of a directory that is included _before_ the FreeType include * path during compilation. * - * The default FreeType Makefiles and Jamfiles use the build directory + * The default FreeType Makefiles use the build directory * `builds/<system>` by default, but you can easily change that for your * own projects. * @@ -121,10 +121,8 @@ * mitigate color fringes inherent to this technology, you also need to * explicitly set up LCD filtering. * - * Note that this feature is covered by several Microsoft patents and - * should not be activated in any default build of the library. When this - * macro is not defined, FreeType offers alternative LCD rendering - * technology that produces excellent output without LCD filtering. + * When this macro is not defined, FreeType offers alternative LCD + * rendering technology that produces excellent output. */ /* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ @@ -294,6 +292,22 @@ /************************************************************************** * + * Brotli support. + * + * FreeType uses the Brotli library to provide support for decompressing + * WOFF2 streams. + * + * Define this macro if you want to enable this 'feature'. + * + * If you use a build system like cmake or the `configure` script, + * options set by those programs have precedence, overwriting the value + * here with the configured one. + */ +/* #define FT_CONFIG_OPTION_USE_BROTLI */ + + + /************************************************************************** + * * Glyph Postscript Names handling * * By default, FreeType 2 is compiled with the 'psnames' module. This @@ -526,7 +540,7 @@ /************************************************************************** * - * Define `TT_CONFIG_OPTION_COLOR_LAYERS` if you want to support coloured + * Define `TT_CONFIG_OPTION_COLOR_LAYERS` if you want to support colored * outlines (from the 'COLR'/'CPAL' tables) in all formats using the 'sfnt' * module (namely TrueType~& OpenType). */ @@ -871,9 +885,11 @@ * * Compile 'autofit' module with fallback Indic script support, covering * some scripts that the 'latin' submodule of the 'autofit' module doesn't - * (yet) handle. + * (yet) handle. Currently, this needs option `AF_CONFIG_OPTION_CJK`. */ +#ifdef AF_CONFIG_OPTION_CJK #define AF_CONFIG_OPTION_INDIC +#endif /************************************************************************** diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/ftstdlib.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/ftstdlib.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/ftstdlib.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/ftstdlib.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * ANSI-specific library and header configuration file (specification * only). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/integer-types.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/integer-types.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/integer-types.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/integer-types.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,245 @@ +/**************************************************************************** + * + * config/integer-types.h + * + * FreeType integer types definitions. + * + * Copyright (C) 1996-2020 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ +#ifndef FREETYPE_CONFIG_INTEGER_TYPES_H_ +#define FREETYPE_CONFIG_INTEGER_TYPES_H_ + + /* There are systems (like the Texas Instruments 'C54x) where a `char` */ + /* has 16~bits. ANSI~C says that `sizeof(char)` is always~1. Since an */ + /* `int` has 16~bits also for this system, `sizeof(int)` gives~1 which */ + /* is probably unexpected. */ + /* */ + /* `CHAR_BIT` (defined in `limits.h`) gives the number of bits in a */ + /* `char` type. */ + +#ifndef FT_CHAR_BIT +#define FT_CHAR_BIT CHAR_BIT +#endif + +#ifndef FT_SIZEOF_INT + + /* The size of an `int` type. */ +#if FT_UINT_MAX == 0xFFFFUL +#define FT_SIZEOF_INT ( 16 / FT_CHAR_BIT ) +#elif FT_UINT_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_INT ( 32 / FT_CHAR_BIT ) +#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_INT ( 64 / FT_CHAR_BIT ) +#else +#error "Unsupported size of `int' type!" +#endif + +#endif /* !defined(FT_SIZEOF_INT) */ + +#ifndef FT_SIZEOF_LONG + + /* The size of a `long` type. A five-byte `long` (as used e.g. on the */ + /* DM642) is recognized but avoided. */ +#if FT_ULONG_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_LONG ( 32 / FT_CHAR_BIT ) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL +#define FT_SIZEOF_LONG ( 32 / FT_CHAR_BIT ) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_LONG ( 64 / FT_CHAR_BIT ) +#else +#error "Unsupported size of `long' type!" +#endif + +#endif /* !defined(FT_SIZEOF_LONG) */ + + /************************************************************************** + * + * @section: + * basic_types + * + */ + + + /************************************************************************** + * + * @type: + * FT_Int16 + * + * @description: + * A typedef for a 16bit signed integer type. + */ + typedef signed short FT_Int16; + + + /************************************************************************** + * + * @type: + * FT_UInt16 + * + * @description: + * A typedef for a 16bit unsigned integer type. + */ + typedef unsigned short FT_UInt16; + + /* */ + + + /* this #if 0 ... #endif clause is for documentation purposes */ +#if 0 + + /************************************************************************** + * + * @type: + * FT_Int32 + * + * @description: + * A typedef for a 32bit signed integer type. The size depends on the + * configuration. + */ + typedef signed XXX FT_Int32; + + + /************************************************************************** + * + * @type: + * FT_UInt32 + * + * A typedef for a 32bit unsigned integer type. The size depends on the + * configuration. + */ + typedef unsigned XXX FT_UInt32; + + + /************************************************************************** + * + * @type: + * FT_Int64 + * + * A typedef for a 64bit signed integer type. The size depends on the + * configuration. Only defined if there is real 64bit support; + * otherwise, it gets emulated with a structure (if necessary). + */ + typedef signed XXX FT_Int64; + + + /************************************************************************** + * + * @type: + * FT_UInt64 + * + * A typedef for a 64bit unsigned integer type. The size depends on the + * configuration. Only defined if there is real 64bit support; + * otherwise, it gets emulated with a structure (if necessary). + */ + typedef unsigned XXX FT_UInt64; + + /* */ + +#endif + +#if FT_SIZEOF_INT == ( 32 / FT_CHAR_BIT ) + + typedef signed int FT_Int32; + typedef unsigned int FT_UInt32; + +#elif FT_SIZEOF_LONG == ( 32 / FT_CHAR_BIT ) + + typedef signed long FT_Int32; + typedef unsigned long FT_UInt32; + +#else +#error "no 32bit type found -- please check your configuration files" +#endif + + + /* look up an integer type that is at least 32~bits */ +#if FT_SIZEOF_INT >= ( 32 / FT_CHAR_BIT ) + + typedef int FT_Fast; + typedef unsigned int FT_UFast; + +#elif FT_SIZEOF_LONG >= ( 32 / FT_CHAR_BIT ) + + typedef long FT_Fast; + typedef unsigned long FT_UFast; + +#endif + + + /* determine whether we have a 64-bit `int` type for platforms without */ + /* Autoconf */ +#if FT_SIZEOF_LONG == ( 64 / FT_CHAR_BIT ) + + /* `FT_LONG64` must be defined if a 64-bit type is available */ +#define FT_LONG64 +#define FT_INT64 long +#define FT_UINT64 unsigned long + + /************************************************************************** + * + * A 64-bit data type may create compilation problems if you compile in + * strict ANSI mode. To avoid them, we disable other 64-bit data types if + * `__STDC__` is defined. You can however ignore this rule by defining the + * `FT_CONFIG_OPTION_FORCE_INT64` configuration macro. + */ +#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 ) + +#if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L + +#define FT_LONG64 +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ + + /* this compiler provides the `__int64` type */ +#define FT_LONG64 +#define FT_INT64 __int64 +#define FT_UINT64 unsigned __int64 + +#elif defined( __BORLANDC__ ) /* Borland C++ */ + + /* XXXX: We should probably check the value of `__BORLANDC__` in order */ + /* to test the compiler version. */ + + /* this compiler provides the `__int64` type */ +#define FT_LONG64 +#define FT_INT64 __int64 +#define FT_UINT64 unsigned __int64 + +#elif defined( __WATCOMC__ ) /* Watcom C++ */ + + /* Watcom doesn't provide 64-bit data types */ + +#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ + +#define FT_LONG64 +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#elif defined( __GNUC__ ) + + /* GCC provides the `long long` type */ +#define FT_LONG64 +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#endif /* __STDC_VERSION__ >= 199901L */ + +#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */ + +#ifdef FT_LONG64 + typedef FT_INT64 FT_Int64; + typedef FT_UINT64 FT_UInt64; +#endif + + +#endif /* FREETYPE_CONFIG_INTEGER_TYPES_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/mac-support.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/mac-support.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/mac-support.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/mac-support.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,49 @@ +/**************************************************************************** + * + * config/mac-support.h + * + * Mac/OS X support configuration header. + * + * Copyright (C) 1996-2020 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ +#ifndef FREETYPE_CONFIG_MAC_SUPPORT_H_ +#define FREETYPE_CONFIG_MAC_SUPPORT_H_ + + /************************************************************************** + * + * Mac support + * + * This is the only necessary change, so it is defined here instead + * providing a new configuration file. + */ +#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) ) + /* No Carbon frameworks for 64bit 10.4.x. */ + /* `AvailabilityMacros.h` is available since Mac OS X 10.2, */ + /* so guess the system version by maximum errno before inclusion. */ +#include <errno.h> +#ifdef ECANCELED /* defined since 10.2 */ +#include "AvailabilityMacros.h" +#endif +#if defined( __LP64__ ) && \ + ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) +#undef FT_MACINTOSH +#endif + +#elif defined( __SC__ ) || defined( __MRC__ ) + /* Classic MacOS compilers */ +#include "ConditionalMacros.h" +#if TARGET_OS_MAC +#define FT_MACINTOSH 1 +#endif + +#endif /* Mac support */ + +#endif /* FREETYPE_CONFIG_MAC_SUPPORT_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/public-macros.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/public-macros.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/config/public-macros.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/config/public-macros.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,120 @@ +/**************************************************************************** + * + * config/public-macros.h + * + * Define a set of compiler macros used in public FreeType headers. + * + * Copyright (C) 2020 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + /* + * The definitions in this file are used by the public FreeType headers + * and thus should be considered part of the public API. + * + * Other compiler-specific macro definitions that are not exposed by the + * FreeType API should go into + * `include/freetype/internal/compiler-macros.h` instead. + */ +#ifndef FREETYPE_CONFIG_PUBLIC_MACROS_H_ +#define FREETYPE_CONFIG_PUBLIC_MACROS_H_ + + /* + * `FT_BEGIN_HEADER` and `FT_END_HEADER` might have already been defined + * by `freetype/config/ftheader.h`, but we don't want to include this + * header here, so redefine the macros here only when needed. Their + * definition is very stable, so keeping them in sync with the ones in the + * header should not be a maintenance issue. + */ +#ifndef FT_BEGIN_HEADER +#ifdef __cplusplus +#define FT_BEGIN_HEADER extern "C" { +#else +#define FT_BEGIN_HEADER /* empty */ +#endif +#endif /* FT_BEGIN_HEADER */ + +#ifndef FT_END_HEADER +#ifdef __cplusplus +#define FT_END_HEADER } +#else +#define FT_END_HEADER /* empty */ +#endif +#endif /* FT_END_HEADER */ + + +FT_BEGIN_HEADER + + /* + * Mark a function declaration as public. This ensures it will be + * properly exported to client code. Place this before a function + * declaration. + * + * NOTE: This macro should be considered an internal implementation + * detail, and not part of the FreeType API. It is only defined here + * because it is needed by `FT_EXPORT`. + */ + + /* Visual C, mingw */ +#if defined( _WIN32 ) + +#if defined( FT2_BUILD_LIBRARY ) && defined( DLL_EXPORT ) +#define FT_PUBLIC_FUNCTION_ATTRIBUTE __declspec( dllexport ) +#elif defined( DLL_IMPORT ) +#define FT_PUBLIC_FUNCTION_ATTRIBUTE __declspec( dllimport ) +#endif + + /* gcc, clang */ +#elif ( defined( __GNUC__ ) && __GNUC__ >= 4 ) || defined( __clang__ ) +#define FT_PUBLIC_FUNCTION_ATTRIBUTE \ + __attribute__(( visibility( "default" ) )) + + /* Sun */ +#elif defined( __SUNPRO_C ) && __SUNPRO_C >= 0x550 +#define FT_PUBLIC_FUNCTION_ATTRIBUTE __global +#endif + + +#ifndef FT_PUBLIC_FUNCTION_ATTRIBUTE +#define FT_PUBLIC_FUNCTION_ATTRIBUTE /* empty */ +#endif + + + /* + * Define a public FreeType API function. This ensures it is properly + * exported or imported at build time. The macro parameter is the + * function's return type as in: + * + * FT_EXPORT( FT_Bool ) + * FT_Object_Method( FT_Object obj, + * ... ); + * + * NOTE: This requires that all `FT_EXPORT` uses are inside + * `FT_BEGIN_HEADER ... FT_END_HEADER` blocks. This guarantees that the + * functions are exported with C linkage, even when the header is included + * by a C++ source file. + */ +#define FT_EXPORT( x ) FT_PUBLIC_FUNCTION_ATTRIBUTE extern x + + /* + * `FT_UNUSED` indicates that a given parameter is not used -- this is + * only used to get rid of unpleasant compiler warnings. + * + * Technically, this was not meant to be part of the public API, but some + * third-party code depends on it. + */ +#ifndef FT_UNUSED +#define FT_UNUSED( arg ) ( (arg) = (arg) ) +#endif + + +FT_END_HEADER + +#endif /* FREETYPE_CONFIG_PUBLIC_MACROS_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/freetype.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/freetype.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/freetype.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/freetype.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType high-level API and common types (specification only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,19 +20,10 @@ #define FREETYPE_H_ -#ifndef FT_FREETYPE_H -#error "`ft2build.h' hasn't been included yet!" -#error "Please always use macros to include FreeType header files." -#error "Example:" -#error " #include <ft2build.h>" -#error " #include FT_FREETYPE_H" -#endif - - #include <ft2build.h> #include FT_CONFIG_CONFIG_H -#include FT_TYPES_H -#include FT_ERRORS_H +#include <freetype/fttypes.h> +#include <freetype/fterrors.h> FT_BEGIN_HEADER @@ -51,22 +42,15 @@ * How client applications should include FreeType header files. * * @description: - * To be as flexible as possible (and for historical reasons), FreeType - * uses a very special inclusion scheme to load header files, for example + * To be as flexible as possible (and for historical reasons), you must + * load file `ft2build.h` first before other header files, for example * * ``` * #include <ft2build.h> * - * #include FT_FREETYPE_H - * #include FT_OUTLINE_H + * #include <freetype/freetype.h> + * #include <freetype/ftoutln.h> * ``` - * - * A compiler and its preprocessor only needs an include path to find the - * file `ft2build.h`; the exact locations and names of the other FreeType - * header files are hidden by @header_file_macros, loaded by - * `ft2build.h`. The API documentation always gives the header macro - * name needed for a particular function. - * */ @@ -974,6 +958,9 @@ * Note that the bounding box might be off by (at least) one pixel for * hinted fonts. See @FT_Size_Metrics for further discussion. * + * Note that the bounding box does not vary in OpenType variable fonts + * and should only be used in relation to the default instance. + * * units_per_EM :: * The number of font units per EM square for this face. This is * typically 2048 for TrueType fonts, and 1000 for Type~1 fonts. Only @@ -1239,7 +1226,7 @@ * */ #define FT_HAS_HORIZONTAL( face ) \ - ( (face)->face_flags & FT_FACE_FLAG_HORIZONTAL ) + ( !!( (face)->face_flags & FT_FACE_FLAG_HORIZONTAL ) ) /************************************************************************** @@ -1253,7 +1240,7 @@ * */ #define FT_HAS_VERTICAL( face ) \ - ( (face)->face_flags & FT_FACE_FLAG_VERTICAL ) + ( !!( (face)->face_flags & FT_FACE_FLAG_VERTICAL ) ) /************************************************************************** @@ -1267,7 +1254,7 @@ * */ #define FT_HAS_KERNING( face ) \ - ( (face)->face_flags & FT_FACE_FLAG_KERNING ) + ( !!( (face)->face_flags & FT_FACE_FLAG_KERNING ) ) /************************************************************************** @@ -1282,7 +1269,7 @@ * */ #define FT_IS_SCALABLE( face ) \ - ( (face)->face_flags & FT_FACE_FLAG_SCALABLE ) + ( !!( (face)->face_flags & FT_FACE_FLAG_SCALABLE ) ) /************************************************************************** @@ -1301,7 +1288,7 @@ * */ #define FT_IS_SFNT( face ) \ - ( (face)->face_flags & FT_FACE_FLAG_SFNT ) + ( !!( (face)->face_flags & FT_FACE_FLAG_SFNT ) ) /************************************************************************** @@ -1316,7 +1303,7 @@ * */ #define FT_IS_FIXED_WIDTH( face ) \ - ( (face)->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) + ( !!( (face)->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) ) /************************************************************************** @@ -1331,7 +1318,7 @@ * */ #define FT_HAS_FIXED_SIZES( face ) \ - ( (face)->face_flags & FT_FACE_FLAG_FIXED_SIZES ) + ( !!( (face)->face_flags & FT_FACE_FLAG_FIXED_SIZES ) ) /************************************************************************** @@ -1357,7 +1344,7 @@ * */ #define FT_HAS_GLYPH_NAMES( face ) \ - ( (face)->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) + ( !!( (face)->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) ) /************************************************************************** @@ -1372,7 +1359,7 @@ * */ #define FT_HAS_MULTIPLE_MASTERS( face ) \ - ( (face)->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) + ( !!( (face)->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) ) /************************************************************************** @@ -1394,7 +1381,7 @@ * */ #define FT_IS_NAMED_INSTANCE( face ) \ - ( (face)->face_index & 0x7FFF0000L ) + ( !!( (face)->face_index & 0x7FFF0000L ) ) /************************************************************************** @@ -1412,7 +1399,7 @@ * */ #define FT_IS_VARIATION( face ) \ - ( (face)->face_flags & FT_FACE_FLAG_VARIATION ) + ( !!( (face)->face_flags & FT_FACE_FLAG_VARIATION ) ) /************************************************************************** @@ -1429,7 +1416,7 @@ * */ #define FT_IS_CID_KEYED( face ) \ - ( (face)->face_flags & FT_FACE_FLAG_CID_KEYED ) + ( !!( (face)->face_flags & FT_FACE_FLAG_CID_KEYED ) ) /************************************************************************** @@ -1443,7 +1430,7 @@ * */ #define FT_IS_TRICKY( face ) \ - ( (face)->face_flags & FT_FACE_FLAG_TRICKY ) + ( !!( (face)->face_flags & FT_FACE_FLAG_TRICKY ) ) /************************************************************************** @@ -1460,7 +1447,7 @@ * */ #define FT_HAS_COLOR( face ) \ - ( (face)->face_flags & FT_FACE_FLAG_COLOR ) + ( !!( (face)->face_flags & FT_FACE_FLAG_COLOR ) ) /************************************************************************** @@ -2078,7 +2065,8 @@ * The size in bytes of the file in memory. * * pathname :: - * A pointer to an 8-bit file pathname. + * A pointer to an 8-bit file pathname. The pointer is not owned by + * FreeType. * * stream :: * A handle to a source stream object. @@ -3187,6 +3175,12 @@ * A pointer to the translation vector. Use `NULL` for the null vector. * * @note: + * This function is provided as a convenience, but keep in mind that + * @FT_Matrix coefficients are only 16.16 fixed point values, which can + * limit the accuracy of the results. Using floating-point computations + * to perform the transform directly in client code instead will always + * yield better numbers. + * * The transformation is only applied to scalable image formats after the * glyph has been loaded. It means that hinting is unaltered by the * transformation and is performed on the character size given in the @@ -3245,14 +3239,6 @@ * pixels and use the @FT_PIXEL_MODE_LCD_V mode. * * @note: - * Should you define `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` in your - * `ftoption.h`, which enables patented ClearType-style rendering, the - * LCD-optimized glyph bitmaps should be filtered to reduce color fringes - * inherent to this technology. You can either set up LCD filtering with - * @FT_Library_SetLcdFilter or @FT_Face_Properties, or do the filtering - * yourself. The default FreeType LCD rendering technology does not - * require filtering. - * * The selected render mode only affects vector glyphs of a font. * Embedded bitmaps often have a different pixel mode like * @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform them @@ -4088,7 +4074,7 @@ * https://docs.microsoft.com/en-us/typography/opentype/spec/colr * * The glyph layer data for a given glyph index, if present, provides an - * alternative, multi-colour glyph representation: Instead of rendering + * alternative, multi-color glyph representation: Instead of rendering * the outline or bitmap with the given glyph index, glyphs with the * indices and colors returned by this function are rendered layer by * layer. @@ -4781,7 +4767,7 @@ */ #define FREETYPE_MAJOR 2 #define FREETYPE_MINOR 10 -#define FREETYPE_PATCH 1 +#define FREETYPE_PATCH 4 /************************************************************************** diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftadvanc.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftadvanc.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftadvanc.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftadvanc.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Quick computation of advance widths (specification only). * - * Copyright (C) 2008-2019 by + * Copyright (C) 2008-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define FTADVANC_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" @@ -96,6 +95,7 @@ * load_flags :: * A set of bit flags similar to those used when calling * @FT_Load_Glyph, used to determine what kind of advances you need. + * * @output: * padvance :: * The advance value. If scaling is performed (based on the value of diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftautoh.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftautoh.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftautoh.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftautoh.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,450 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftautoh.h */ -/* */ -/* FreeType API for controlling the auto-hinter (specification only). */ -/* */ -/* Copyright 2012-2015 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTAUTOH_H__ -#define __FTAUTOH_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /************************************************************************** - * - * @section: - * auto_hinter - * - * @title: - * The auto-hinter - * - * @abstract: - * Controlling the auto-hinting module. - * - * @description: - * While FreeType's auto-hinter doesn't expose API functions by itself, - * it is possible to control its behaviour with @FT_Property_Set and - * @FT_Property_Get. The following lists the available properties - * together with the necessary macros and structures. - * - * Note that the auto-hinter's module name is `autofitter' for - * historical reasons. - * - */ - - - /************************************************************************** - * - * @property: - * glyph-to-script-map - * - * @description: - * *Experimental* *only* - * - * The auto-hinter provides various script modules to hint glyphs. - * Examples of supported scripts are Latin or CJK. Before a glyph is - * auto-hinted, the Unicode character map of the font gets examined, and - * the script is then determined based on Unicode character ranges, see - * below. - * - * OpenType fonts, however, often provide much more glyphs than - * character codes (small caps, superscripts, ligatures, swashes, etc.), - * to be controlled by so-called `features'. Handling OpenType features - * can be quite complicated and thus needs a separate library on top of - * FreeType. - * - * The mapping between glyph indices and scripts (in the auto-hinter - * sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an - * array with `num_glyphs' elements, as found in the font's @FT_Face - * structure. The `glyph-to-script-map' property returns a pointer to - * this array, which can be modified as needed. Note that the - * modification should happen before the first glyph gets processed by - * the auto-hinter so that the global analysis of the font shapes - * actually uses the modified mapping. - * - * The following example code demonstrates how to access it (omitting - * the error handling). - * - * { - * FT_Library library; - * FT_Face face; - * FT_Prop_GlyphToScriptMap prop; - * - * - * FT_Init_FreeType( &library ); - * FT_New_Face( library, "foo.ttf", 0, &face ); - * - * prop.face = face; - * - * FT_Property_Get( library, "autofitter", - * "glyph-to-script-map", &prop ); - * - * // adjust `prop.map' as needed right here - * - * FT_Load_Glyph( face, ..., FT_LOAD_FORCE_AUTOHINT ); - * } - * - */ - - - /************************************************************************** - * - * @enum: - * FT_AUTOHINTER_SCRIPT_XXX - * - * @description: - * *Experimental* *only* - * - * A list of constants used for the @glyph-to-script-map property to - * specify the script submodule the auto-hinter should use for hinting a - * particular glyph. - * - * @values: - * FT_AUTOHINTER_SCRIPT_NONE :: - * Don't auto-hint this glyph. - * - * FT_AUTOHINTER_SCRIPT_LATIN :: - * Apply the latin auto-hinter. For the auto-hinter, `latin' is a - * very broad term, including Cyrillic and Greek also since characters - * from those scripts share the same design constraints. - * - * By default, characters from the following Unicode ranges are - * assigned to this submodule. - * - * { - * U+0020 - U+007F // Basic Latin (no control characters) - * U+00A0 - U+00FF // Latin-1 Supplement (no control characters) - * U+0100 - U+017F // Latin Extended-A - * U+0180 - U+024F // Latin Extended-B - * U+0250 - U+02AF // IPA Extensions - * U+02B0 - U+02FF // Spacing Modifier Letters - * U+0300 - U+036F // Combining Diacritical Marks - * U+0370 - U+03FF // Greek and Coptic - * U+0400 - U+04FF // Cyrillic - * U+0500 - U+052F // Cyrillic Supplement - * U+1D00 - U+1D7F // Phonetic Extensions - * U+1D80 - U+1DBF // Phonetic Extensions Supplement - * U+1DC0 - U+1DFF // Combining Diacritical Marks Supplement - * U+1E00 - U+1EFF // Latin Extended Additional - * U+1F00 - U+1FFF // Greek Extended - * U+2000 - U+206F // General Punctuation - * U+2070 - U+209F // Superscripts and Subscripts - * U+20A0 - U+20CF // Currency Symbols - * U+2150 - U+218F // Number Forms - * U+2460 - U+24FF // Enclosed Alphanumerics - * U+2C60 - U+2C7F // Latin Extended-C - * U+2DE0 - U+2DFF // Cyrillic Extended-A - * U+2E00 - U+2E7F // Supplemental Punctuation - * U+A640 - U+A69F // Cyrillic Extended-B - * U+A720 - U+A7FF // Latin Extended-D - * U+FB00 - U+FB06 // Alphab. Present. Forms (Latin Ligatures) - * U+1D400 - U+1D7FF // Mathematical Alphanumeric Symbols - * U+1F100 - U+1F1FF // Enclosed Alphanumeric Supplement - * } - * - * FT_AUTOHINTER_SCRIPT_CJK :: - * Apply the CJK auto-hinter, covering Chinese, Japanese, Korean, old - * Vietnamese, and some other scripts. - * - * By default, characters from the following Unicode ranges are - * assigned to this submodule. - * - * { - * U+1100 - U+11FF // Hangul Jamo - * U+2E80 - U+2EFF // CJK Radicals Supplement - * U+2F00 - U+2FDF // Kangxi Radicals - * U+2FF0 - U+2FFF // Ideographic Description Characters - * U+3000 - U+303F // CJK Symbols and Punctuation - * U+3040 - U+309F // Hiragana - * U+30A0 - U+30FF // Katakana - * U+3100 - U+312F // Bopomofo - * U+3130 - U+318F // Hangul Compatibility Jamo - * U+3190 - U+319F // Kanbun - * U+31A0 - U+31BF // Bopomofo Extended - * U+31C0 - U+31EF // CJK Strokes - * U+31F0 - U+31FF // Katakana Phonetic Extensions - * U+3200 - U+32FF // Enclosed CJK Letters and Months - * U+3300 - U+33FF // CJK Compatibility - * U+3400 - U+4DBF // CJK Unified Ideographs Extension A - * U+4DC0 - U+4DFF // Yijing Hexagram Symbols - * U+4E00 - U+9FFF // CJK Unified Ideographs - * U+A960 - U+A97F // Hangul Jamo Extended-A - * U+AC00 - U+D7AF // Hangul Syllables - * U+D7B0 - U+D7FF // Hangul Jamo Extended-B - * U+F900 - U+FAFF // CJK Compatibility Ideographs - * U+FE10 - U+FE1F // Vertical forms - * U+FE30 - U+FE4F // CJK Compatibility Forms - * U+FF00 - U+FFEF // Halfwidth and Fullwidth Forms - * U+1B000 - U+1B0FF // Kana Supplement - * U+1D300 - U+1D35F // Tai Xuan Hing Symbols - * U+1F200 - U+1F2FF // Enclosed Ideographic Supplement - * U+20000 - U+2A6DF // CJK Unified Ideographs Extension B - * U+2A700 - U+2B73F // CJK Unified Ideographs Extension C - * U+2B740 - U+2B81F // CJK Unified Ideographs Extension D - * U+2F800 - U+2FA1F // CJK Compatibility Ideographs Supplement - * } - * - * FT_AUTOHINTER_SCRIPT_INDIC :: - * Apply the indic auto-hinter, covering all major scripts from the - * Indian sub-continent and some other related scripts like Thai, Lao, - * or Tibetan. - * - * By default, characters from the following Unicode ranges are - * assigned to this submodule. - * - * { - * U+0900 - U+0DFF // Indic Range - * U+0F00 - U+0FFF // Tibetan - * U+1900 - U+194F // Limbu - * U+1B80 - U+1BBF // Sundanese - * U+1C80 - U+1CDF // Meetei Mayak - * U+A800 - U+A82F // Syloti Nagri - * U+11800 - U+118DF // Sharada - * } - * - * Note that currently Indic support is rudimentary only, missing blue - * zone support. - * - */ -#define FT_AUTOHINTER_SCRIPT_NONE 0 -#define FT_AUTOHINTER_SCRIPT_LATIN 1 -#define FT_AUTOHINTER_SCRIPT_CJK 2 -#define FT_AUTOHINTER_SCRIPT_INDIC 3 - - - /************************************************************************** - * - * @struct: - * FT_Prop_GlyphToScriptMap - * - * @description: - * *Experimental* *only* - * - * The data exchange structure for the @glyph-to-script-map property. - * - */ - typedef struct FT_Prop_GlyphToScriptMap_ - { - FT_Face face; - FT_UShort* map; - - } FT_Prop_GlyphToScriptMap; - - - /************************************************************************** - * - * @property: - * fallback-script - * - * @description: - * *Experimental* *only* - * - * If no auto-hinter script module can be assigned to a glyph, a - * fallback script gets assigned to it (see also the - * @glyph-to-script-map property). By default, this is - * @FT_AUTOHINTER_SCRIPT_CJK. Using the `fallback-script' property, - * this fallback value can be changed. - * - * { - * FT_Library library; - * FT_UInt fallback_script = FT_AUTOHINTER_SCRIPT_NONE; - * - * - * FT_Init_FreeType( &library ); - * - * FT_Property_Set( library, "autofitter", - * "fallback-script", &fallback_script ); - * } - * - * @note: - * This property can be used with @FT_Property_Get also. - * - * It's important to use the right timing for changing this value: The - * creation of the glyph-to-script map that eventually uses the - * fallback script value gets triggered either by setting or reading a - * face-specific property like @glyph-to-script-map, or by auto-hinting - * any glyph from that face. In particular, if you have already created - * an @FT_Face structure but not loaded any glyph (using the - * auto-hinter), a change of the fallback script will affect this face. - * - */ - - - /************************************************************************** - * - * @property: - * default-script - * - * @description: - * *Experimental* *only* - * - * If FreeType gets compiled with FT_CONFIG_OPTION_USE_HARFBUZZ to make - * the HarfBuzz library access OpenType features for getting better - * glyph coverages, this property sets the (auto-fitter) script to be - * used for the default (OpenType) script data of a font's GSUB table. - * Features for the default script are intended for all scripts not - * explicitly handled in GSUB; an example is a `dlig' feature, - * containing the combination of the characters `T', `E', and `L' to - * form a `TEL' ligature. - * - * By default, this is @FT_AUTOHINTER_SCRIPT_LATIN. Using the - * `default-script' property, this default value can be changed. - * - * { - * FT_Library library; - * FT_UInt default_script = FT_AUTOHINTER_SCRIPT_NONE; - * - * - * FT_Init_FreeType( &library ); - * - * FT_Property_Set( library, "autofitter", - * "default-script", &default_script ); - * } - * - * @note: - * This property can be used with @FT_Property_Get also. - * - * It's important to use the right timing for changing this value: The - * creation of the glyph-to-script map that eventually uses the - * default script value gets triggered either by setting or reading a - * face-specific property like @glyph-to-script-map, or by auto-hinting - * any glyph from that face. In particular, if you have already created - * an @FT_Face structure but not loaded any glyph (using the - * auto-hinter), a change of the default script will affect this face. - * - */ - - - /************************************************************************** - * - * @property: - * increase-x-height - * - * @description: - * For ppem values in the range 6~<= ppem <= `increase-x-height', round - * up the font's x~height much more often than normally. If the value - * is set to~0, which is the default, this feature is switched off. Use - * this property to improve the legibility of small font sizes if - * necessary. - * - * { - * FT_Library library; - * FT_Face face; - * FT_Prop_IncreaseXHeight prop; - * - * - * FT_Init_FreeType( &library ); - * FT_New_Face( library, "foo.ttf", 0, &face ); - * FT_Set_Char_Size( face, 10 * 64, 0, 72, 0 ); - * - * prop.face = face; - * prop.limit = 14; - * - * FT_Property_Set( library, "autofitter", - * "increase-x-height", &prop ); - * } - * - * @note: - * This property can be used with @FT_Property_Get also. - * - * Set this value right after calling @FT_Set_Char_Size, but before - * loading any glyph (using the auto-hinter). - * - */ - - - /************************************************************************** - * - * @struct: - * FT_Prop_IncreaseXHeight - * - * @description: - * The data exchange structure for the @increase-x-height property. - * - */ - typedef struct FT_Prop_IncreaseXHeight_ - { - FT_Face face; - FT_UInt limit; - - } FT_Prop_IncreaseXHeight; - - - /************************************************************************** - * - * @property: - * warping - * - * @description: - * *Experimental* *only* - * - * If FreeType gets compiled with option AF_CONFIG_OPTION_USE_WARPER to - * activate the warp hinting code in the auto-hinter, this property - * switches warping on and off. - * - * Warping only works in `light' auto-hinting mode. The idea of the - * code is to slightly scale and shift a glyph along the non-hinted - * dimension (which is usually the horizontal axis) so that as much of - * its segments are aligned (more or less) to the grid. To find out a - * glyph's optimal scaling and shifting value, various parameter - * combinations are tried and scored. - * - * By default, warping is off. The example below shows how to switch on - * warping (omitting the error handling). - * - * { - * FT_Library library; - * FT_Bool warping = 1; - * - * - * FT_Init_FreeType( &library ); - * - * FT_Property_Set( library, "autofitter", - * "warping", &warping ); - * } - * - * @note: - * This property can be used with @FT_Property_Get also. - * - * The warping code can also change advance widths. Have a look at the - * `lsb_delta' and `rsb_delta' fields in the @FT_GlyphSlotRec structure - * for details on improving inter-glyph distances while rendering. - * - * Since warping is a global property of the auto-hinter it is best to - * change its value before rendering any face. Otherwise, you should - * reload all faces that get auto-hinted in `light' hinting mode. - * - */ - - - /* */ - - -FT_END_HEADER - -#endif /* __FTAUTOH_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftbbox.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftbbox.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftbbox.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftbbox.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType exact bbox computation (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -31,8 +31,7 @@ #define FTBBOX_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftbdf.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftbdf.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftbdf.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftbdf.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for accessing BDF-specific strings (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,7 @@ #ifndef FTBDF_H_ #define FTBDF_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftbitmap.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftbitmap.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftbitmap.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftbitmap.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType utility functions for bitmaps (specification). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,8 @@ #define FTBITMAP_H_ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_COLOR_H +#include <freetype/freetype.h> +#include <freetype/ftcolor.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftbzip2.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftbzip2.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftbzip2.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftbzip2.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Bzip2-compressed stream support. * - * Copyright (C) 2010-2019 by + * Copyright (C) 2010-2020 by * Joel Klinghed. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,7 @@ #ifndef FTBZIP2_H_ #define FTBZIP2_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" @@ -43,6 +42,16 @@ * Using bzip2-compressed font files. * * @description: + * In certain builds of the library, bzip2 compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a bzip2 compressed + * stream from it and re-open the face with it. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream, + * which significantly undermines the performance. + * * This section contains the declaration of Bzip2-specific functions. * */ @@ -75,15 +84,6 @@ * **not** call `FT_Stream_Close` on the source stream. None of the * stream objects will be released to the heap. * - * The stream implementation is very basic and resets the decompression - * process each time seeking backwards is needed within the stream. - * - * In certain builds of the library, bzip2 compression recognition is - * automatically handled when calling @FT_New_Face or @FT_Open_Face. - * This means that if no font driver is capable of handling the raw - * compressed file, the library will try to open a bzip2 compressed - * stream from it and re-open the face with it. - * * This function may return `FT_Err_Unimplemented_Feature` if your build * of FreeType was not compiled with bzip2 support. */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftcache.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftcache.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftcache.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftcache.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType Cache subsystem (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define FTCACHE_H_ -#include <ft2build.h> -#include FT_GLYPH_H +#include <freetype/ftglyph.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftcffdrv.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftcffdrv.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftcffdrv.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftcffdrv.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,262 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcffdrv.h */ -/* */ -/* FreeType API for controlling the CFF driver (specification only). */ -/* */ -/* Copyright 2013-2015 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTCFFDRV_H__ -#define __FTCFFDRV_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /************************************************************************** - * - * @section: - * cff_driver - * - * @title: - * The CFF driver - * - * @abstract: - * Controlling the CFF driver module. - * - * @description: - * While FreeType's CFF driver doesn't expose API functions by itself, - * it is possible to control its behaviour with @FT_Property_Set and - * @FT_Property_Get. The list below gives the available properties - * together with the necessary macros and structures. - * - * The CFF driver's module name is `cff'. - * - * *Hinting* *and* *antialiasing* *principles* *of* *the* *new* *engine* - * - * The rasterizer is positioning horizontal features (e.g., ascender - * height & x-height, or crossbars) on the pixel grid and minimizing the - * amount of antialiasing applied to them, while placing vertical - * features (vertical stems) on the pixel grid without hinting, thus - * representing the stem position and weight accurately. Sometimes the - * vertical stems may be only partially black. In this context, - * `antialiasing' means that stems are not positioned exactly on pixel - * borders, causing a fuzzy appearance. - * - * There are two principles behind this approach. - * - * 1) No hinting in the horizontal direction: Unlike `superhinted' - * TrueType, which changes glyph widths to accommodate regular - * inter-glyph spacing, Adobe's approach is `faithful to the design' in - * representing both the glyph width and the inter-glyph spacing - * designed for the font. This makes the screen display as close as it - * can be to the result one would get with infinite resolution, while - * preserving what is considered the key characteristics of each glyph. - * Note that the distances between unhinted and grid-fitted positions at - * small sizes are comparable to kerning values and thus would be - * noticeable (and distracting) while reading if hinting were applied. - * - * One of the reasons to not hint horizontally is antialiasing for LCD - * screens: The pixel geometry of modern displays supplies three - * vertical sub-pixels as the eye moves horizontally across each visible - * pixel. On devices where we can be certain this characteristic is - * present a rasterizer can take advantage of the sub-pixels to add - * increments of weight. In Western writing systems this turns out to - * be the more critical direction anyway; the weights and spacing of - * vertical stems (see above) are central to Armenian, Cyrillic, Greek, - * and Latin type designs. Even when the rasterizer uses greyscale - * antialiasing instead of color (a necessary compromise when one - * doesn't know the screen characteristics), the unhinted vertical - * features preserve the design's weight and spacing much better than - * aliased type would. - * - * 2) Aligment in the vertical direction: Weights and spacing along the - * y~axis are less critical; what is much more important is the visual - * alignment of related features (like cap-height and x-height). The - * sense of alignment for these is enhanced by the sharpness of grid-fit - * edges, while the cruder vertical resolution (full pixels instead of - * 1/3 pixels) is less of a problem. - * - * On the technical side, horizontal alignment zones for ascender, - * x-height, and other important height values (traditionally called - * `blue zones') as defined in the font are positioned independently, - * each being rounded to the nearest pixel edge, taking care of - * overshoot suppression at small sizes, stem darkening, and scaling. - * - * Hstems (this is, hint values defined in the font to help align - * horizontal features) that fall within a blue zone are said to be - * `captured' and are aligned to that zone. Uncaptured stems are moved - * in one of four ways, top edge up or down, bottom edge up or down. - * Unless there are conflicting hstems, the smallest movement is taken - * to minimize distortion. - * - * @order: - * hinting-engine - * no-stem-darkening - * darkening-parameters - * - */ - - - /************************************************************************** - * - * @property: - * hinting-engine - * - * @description: - * Thanks to Adobe, which contributed a new hinting (and parsing) - * engine, an application can select between `freetype' and `adobe' if - * compiled with CFF_CONFIG_OPTION_OLD_ENGINE. If this configuration - * macro isn't defined, `hinting-engine' does nothing. - * - * The default engine is `freetype' if CFF_CONFIG_OPTION_OLD_ENGINE is - * defined, and `adobe' otherwise. - * - * The following example code demonstrates how to select Adobe's hinting - * engine (omitting the error handling). - * - * { - * FT_Library library; - * FT_UInt hinting_engine = FT_CFF_HINTING_ADOBE; - * - * - * FT_Init_FreeType( &library ); - * - * FT_Property_Set( library, "cff", - * "hinting-engine", &hinting_engine ); - * } - * - * @note: - * This property can be used with @FT_Property_Get also. - * - */ - - - /************************************************************************** - * - * @enum: - * FT_CFF_HINTING_XXX - * - * @description: - * A list of constants used for the @hinting-engine property to select - * the hinting engine for CFF fonts. - * - * @values: - * FT_CFF_HINTING_FREETYPE :: - * Use the old FreeType hinting engine. - * - * FT_CFF_HINTING_ADOBE :: - * Use the hinting engine contributed by Adobe. - * - */ -#define FT_CFF_HINTING_FREETYPE 0 -#define FT_CFF_HINTING_ADOBE 1 - - - /************************************************************************** - * - * @property: - * no-stem-darkening - * - * @description: - * By default, the Adobe CFF engine darkens stems at smaller sizes, - * regardless of hinting, to enhance contrast. This feature requires - * a rendering system with proper gamma correction. Setting this - * property, stem darkening gets switched off. - * - * Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set. - * - * { - * FT_Library library; - * FT_Bool no_stem_darkening = TRUE; - * - * - * FT_Init_FreeType( &library ); - * - * FT_Property_Set( library, "cff", - * "no-stem-darkening", &no_stem_darkening ); - * } - * - * @note: - * This property can be used with @FT_Property_Get also. - * - */ - - - /************************************************************************** - * - * @property: - * darkening-parameters - * - * @description: - * By default, the Adobe CFF engine darkens stems as follows (if the - * `no-stem-darkening' property isn't set): - * - * { - * stem width <= 0.5px: darkening amount = 0.4px - * stem width = 1px: darkening amount = 0.275px - * stem width = 1.667px: darkening amount = 0.275px - * stem width >= 2.333px: darkening amount = 0px - * } - * - * and piecewise linear in-between. At configuration time, these four - * control points can be set with the macro - * `CFF_CONFIG_OPTION_DARKENING_PARAMETERS'. At runtime, the control - * points can be changed using the `darkening-parameters' property, as - * the following example demonstrates. - * - * { - * FT_Library library; - * FT_Int darken_params[8] = { 500, 300, // x1, y1 - * 1000, 200, // x2, y2 - * 1500, 100, // x3, y3 - * 2000, 0 }; // x4, y4 - * - * - * FT_Init_FreeType( &library ); - * - * FT_Property_Set( library, "cff", - * "darkening-parameters", darken_params ); - * } - * - * The x~values give the stem width, and the y~values the darkening - * amount. The unit is 1000th of pixels. All coordinate values must be - * positive; the x~values must be monotonically increasing; the - * y~values must be monotonically decreasing and smaller than or - * equal to 500 (corresponding to half a pixel); the slope of each - * linear piece must be shallower than -1 (e.g., -.4). - * - * @note: - * This property can be used with @FT_Property_Get also. - * - */ - - /* */ - - -FT_END_HEADER - - -#endif /* __FTCFFDRV_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftcid.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftcid.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftcid.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftcid.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for accessing CID font information (specification). * - * Copyright (C) 2007-2019 by + * Copyright (C) 2007-2020 by * Dereg Clegg and Michael Toftdal. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,7 @@ #ifndef FTCID_H_ #define FTCID_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftcolor.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftcolor.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftcolor.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftcolor.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType's glyph color management (specification). * - * Copyright (C) 2018-2019 by + * Copyright (C) 2018-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,7 @@ #ifndef FTCOLOR_H_ #define FTCOLOR_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" @@ -125,9 +124,9 @@ * The number of palettes. * * palette_name_ids :: - * A read-only array of palette name IDs with `num_palettes` elements, - * corresponding to entries like 'dark' or 'light' in the font's 'name' - * table. + * An optional read-only array of palette name IDs with `num_palettes` + * elements, corresponding to entries like 'dark' or 'light' in the + * font's 'name' table. * * An empty name ID in the 'CPAL' table gets represented as value * 0xFFFF. @@ -135,8 +134,8 @@ * `NULL` if the font's 'CPAL' table doesn't contain appropriate data. * * palette_flags :: - * A read-only array of palette flags with `num_palettes` elements. - * Possible values are an ORed combination of + * An optional read-only array of palette flags with `num_palettes` + * elements. Possible values are an ORed combination of * @FT_PALETTE_FOR_LIGHT_BACKGROUND and * @FT_PALETTE_FOR_DARK_BACKGROUND. * @@ -147,7 +146,7 @@ * same size. * * palette_entry_name_ids :: - * A read-only array of palette entry name IDs with + * An optional read-only array of palette entry name IDs with * `num_palette_entries`. In each palette, entries with the same index * have the same function. For example, index~0 might correspond to * string 'outline' in the font's 'name' table to indicate that this @@ -163,6 +162,9 @@ * Use function @FT_Get_Sfnt_Name to map name IDs and entry name IDs to * name strings. * + * Use function @FT_Palette_Select to get the colors associated with a + * palette entry. + * * @since: * 2.10 */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftdriver.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftdriver.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftdriver.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftdriver.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for controlling driver modules (specification only). * - * Copyright (C) 2017-2019 by + * Copyright (C) 2017-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,9 +19,8 @@ #ifndef FTDRIVER_H_ #define FTDRIVER_H_ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_PARAMETER_TAGS_H +#include <freetype/freetype.h> +#include <freetype/ftparams.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" @@ -427,10 +426,6 @@ * counteracts the 'thinning out' of glyphs, making text remain readable * at smaller sizes. * - * By default, the Adobe engines for CFF, Type~1, and CID fonts darken - * stems at smaller sizes, regardless of hinting, to enhance contrast. - * Setting this property, stem darkening gets switched off. - * * For the auto-hinter, stem-darkening is experimental currently and thus * switched off by default (this is, `no-stem-darkening` is set to TRUE * by default). Total consistency with the CFF driver is not achieved diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/fterrdef.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/fterrdef.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/fterrdef.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/fterrdef.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType error codes (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/fterrors.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/fterrors.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/fterrors.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/fterrors.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType error code handling (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -89,7 +89,7 @@ * const char* err_msg; * } ft_errors[] = * - * #include FT_ERRORS_H + * #include <freetype/fterrors.h> * ``` * * An alternative to using an array is a switch statement. @@ -124,7 +124,7 @@ /* include module base error codes */ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> /*******************************************************************/ @@ -197,7 +197,7 @@ /* now include the error codes */ -#include FT_ERROR_DEFINITIONS_H +#include <freetype/fterrdef.h> #ifdef FT_ERROR_END_LIST @@ -232,11 +232,16 @@ #undef FT_ERR_PREFIX #endif - /* FT_INCLUDE_ERR_PROTOS: Control if function prototypes should be */ - /* included with `#include FT_ERRORS_H'. This is */ - /* only true where `FT_ERRORDEF` is undefined. */ - /* FT_ERR_PROTOS_DEFINED: Actual multiple-inclusion protection of */ - /* `fterrors.h`. */ + /* FT_INCLUDE_ERR_PROTOS: Control whether function prototypes should be */ + /* included with */ + /* */ + /* #include <freetype/fterrors.h> */ + /* */ + /* This is only true where `FT_ERRORDEF` is */ + /* undefined. */ + /* */ + /* FT_ERR_PROTOS_DEFINED: Actual multiple-inclusion protection of */ + /* `fterrors.h`. */ #ifdef FT_INCLUDE_ERR_PROTOS #undef FT_INCLUDE_ERR_PROTOS diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftfntfmt.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftfntfmt.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftfntfmt.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftfntfmt.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Support functions for font formats. * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,7 @@ #ifndef FTFNTFMT_H_ #define FTFNTFMT_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftgasp.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftgasp.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftgasp.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftgasp.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Access of TrueType's 'gasp' table (specification). * - * Copyright (C) 2007-2019 by + * Copyright (C) 2007-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,7 @@ #ifndef FTGASP_H_ #define FTGASP_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftglyph.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftglyph.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftglyph.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftglyph.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType convenience functions to handle glyphs (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -33,8 +33,7 @@ #define FTGLYPH_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftgxval.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftgxval.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftgxval.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftgxval.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for validating TrueTypeGX/AAT tables (specification). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * Masatake YAMATO, Redhat K.K, * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -28,8 +28,7 @@ #ifndef FTGXVAL_H_ #define FTGXVAL_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftgzip.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftgzip.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftgzip.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftgzip.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Gzip-compressed stream support. * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,7 @@ #ifndef FTGZIP_H_ #define FTGZIP_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" @@ -43,6 +42,16 @@ * Using gzip-compressed font files. * * @description: + * In certain builds of the library, gzip compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a gzipped stream from it + * and re-open the face with it. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream, + * which significantly undermines the performance. + * * This section contains the declaration of Gzip-specific functions. * */ @@ -75,15 +84,6 @@ * **not** call `FT_Stream_Close` on the source stream. None of the * stream objects will be released to the heap. * - * The stream implementation is very basic and resets the decompression - * process each time seeking backwards is needed within the stream. - * - * In certain builds of the library, gzip compression recognition is - * automatically handled when calling @FT_New_Face or @FT_Open_Face. - * This means that if no font driver is capable of handling the raw - * compressed file, the library will try to open a gzipped stream from it - * and re-open the face with it. - * * This function may return `FT_Err_Unimplemented_Feature` if your build * of FreeType was not compiled with zlib support. */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftimage.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftimage.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftimage.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftimage.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * FreeType glyph image formats and default raster interface * (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -30,7 +30,6 @@ /* STANDALONE_ is from ftgrays.c */ #ifndef STANDALONE_ -#include <ft2build.h> #endif @@ -401,6 +400,13 @@ * if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for more * information. * + * FT_OUTLINE_OVERLAP :: + * This flag indicates that this outline contains overlapping contrours + * and the anti-aliased renderer should perform oversampling to + * mitigate possible artifacts. This flag should _not_ be set for + * well designed glyphs without overlaps because it quadruples the + * rendering time. + * * FT_OUTLINE_HIGH_PRECISION :: * This flag indicates that the scan-line converter should try to * convert this outline to bitmaps with the highest possible quality. @@ -432,6 +438,7 @@ #define FT_OUTLINE_IGNORE_DROPOUTS 0x8 #define FT_OUTLINE_SMART_DROPOUTS 0x10 #define FT_OUTLINE_INCLUDE_STUBS 0x20 +#define FT_OUTLINE_OVERLAP 0x40 #define FT_OUTLINE_HIGH_PRECISION 0x100 #define FT_OUTLINE_SINGLE_PASS 0x200 @@ -1004,20 +1011,26 @@ * User-supplied data that is passed to each drawing callback. * * clip_box :: - * An optional clipping box. It is only used in direct rendering mode. - * Note that coordinates here should be expressed in _integer_ pixels - * (and not in 26.6 fixed-point units). + * An optional span clipping box expressed in _integer_ pixels + * (not in 26.6 fixed-point units). * * @note: - * An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA bit - * flag is set in the `flags` field, otherwise a monochrome bitmap is - * generated. - * - * If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags`, the raster - * will call the `gray_spans` callback to draw gray pixel spans. This - * allows direct composition over a pre-existing bitmap through - * user-provided callbacks to perform the span drawing and composition. - * Not supported by the monochrome rasterizer. + * The @FT_RASTER_FLAG_AA bit flag must be set in the `flags` to + * generate an anti-aliased glyph bitmap, otherwise a monochrome bitmap + * is generated. The `target` should have appropriate pixel mode and its + * dimensions define the clipping region. + * + * If both @FT_RASTER_FLAG_AA and @FT_RASTER_FLAG_DIRECT bit flags + * are set in `flags`, the raster calls an @FT_SpanFunc callback + * `gray_spans` with `user` data as an argument ignoring `target`. This + * allows direct composition over a pre-existing user surface to perform + * the span drawing and composition. To optionally clip the spans, set + * the @FT_RASTER_FLAG_CLIP flag and `clip_box`. The monochrome raster + * does not support the direct mode. + * + * The gray-level rasterizer always uses 256 gray levels. If you want + * fewer gray levels, you have to use @FT_RASTER_FLAG_DIRECT and reduce + * the levels in the callback function. */ typedef struct FT_Raster_Params_ { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftincrem.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftincrem.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftincrem.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftincrem.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType incremental loading (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,9 +19,8 @@ #ifndef FTINCREM_H_ #define FTINCREM_H_ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_PARAMETER_TAGS_H +#include <freetype/freetype.h> +#include <freetype/ftparams.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftlcdfil.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftlcdfil.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftlcdfil.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftlcdfil.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * FreeType API for color filtering of subpixel bitmap glyphs * (specification). * - * Copyright (C) 2006-2019 by + * Copyright (C) 2006-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,8 @@ #ifndef FTLCDFIL_H_ #define FTLCDFIL_H_ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_PARAMETER_TAGS_H +#include <freetype/freetype.h> +#include <freetype/ftparams.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" @@ -47,7 +46,7 @@ * @description: * FreeType provides two alternative subpixel rendering technologies. * Should you define `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` in your - * `ftoption.h` file, this enables patented ClearType-style rendering. + * `ftoption.h` file, this enables ClearType-style rendering. * Otherwise, Harmony LCD rendering is enabled. These technologies are * controlled differently and API described below, although always * available, performs its function when appropriate method is enabled @@ -177,7 +176,7 @@ * FT_Library_SetLcdFilter * * @description: - * This function is used to apply color filtering to LCD decimated + * This function is used to change filter applied to LCD decimated * bitmaps, like the ones used when calling @FT_Render_Glyph with * @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V. * @@ -196,15 +195,14 @@ * FreeType error code. 0~means success. * * @note: - * This feature is always disabled by default. Clients must make an - * explicit call to this function with a `filter` value other than - * @FT_LCD_FILTER_NONE in order to enable it. - * - * Due to **PATENTS** covering subpixel rendering, this function doesn't - * do anything except returning `FT_Err_Unimplemented_Feature` if the - * configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is not - * defined in your build of the library, which should correspond to all - * default builds of FreeType. + * Since 2.10.3 the LCD filtering is enabled with @FT_LCD_FILTER_DEFAULT. + * It is no longer necessary to call this function explicitly except + * to choose a different filter or disable filtering altogether with + * @FT_LCD_FILTER_NONE. + * + * This function does nothing but returns `FT_Err_Unimplemented_Feature` + * if the configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is + * not defined in your build of the library. * * @since: * 2.3.0 @@ -235,11 +233,9 @@ * FreeType error code. 0~means success. * * @note: - * Due to **PATENTS** covering subpixel rendering, this function doesn't - * do anything except returning `FT_Err_Unimplemented_Feature` if the - * configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is not - * defined in your build of the library, which should correspond to all - * default builds of FreeType. + * This function does nothing but returns `FT_Err_Unimplemented_Feature` + * if the configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is + * not defined in your build of the library. * * LCD filter weights can also be set per face using @FT_Face_Properties * with @FT_PARAM_TAG_LCD_FILTER_WEIGHTS. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftlist.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftlist.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftlist.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftlist.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Generic list support for FreeType (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -28,8 +28,7 @@ #define FTLIST_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftlzw.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftlzw.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftlzw.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftlzw.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * LZW-compressed stream support. * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,7 @@ #ifndef FTLZW_H_ #define FTLZW_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" @@ -43,6 +42,16 @@ * Using LZW-compressed font files. * * @description: + * In certain builds of the library, LZW compression recognition is + * automatically handled when calling @FT_New_Face or @FT_Open_Face. + * This means that if no font driver is capable of handling the raw + * compressed file, the library will try to open a LZW stream from it and + * re-open the face with it. + * + * The stream implementation is very basic and resets the decompression + * process each time seeking backwards is needed within the stream, + * which significantly undermines the performance. + * * This section contains the declaration of LZW-specific functions. * */ @@ -73,15 +82,6 @@ * **not** call `FT_Stream_Close` on the source stream. None of the * stream objects will be released to the heap. * - * The stream implementation is very basic and resets the decompression - * process each time seeking backwards is needed within the stream - * - * In certain builds of the library, LZW compression recognition is - * automatically handled when calling @FT_New_Face or @FT_Open_Face. - * This means that if no font driver is capable of handling the raw - * compressed file, the library will try to open a LZW stream from it and - * re-open the face with it. - * * This function may return `FT_Err_Unimplemented_Feature` if your build * of FreeType was not compiled with LZW support. */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftmac.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftmac.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftmac.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftmac.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Additional Mac-specific API. * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -29,7 +29,6 @@ #define FTMAC_H_ -#include <ft2build.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftmm.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftmm.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftmm.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftmm.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType Multiple Master font interface (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define FTMM_H_ -#include <ft2build.h> -#include FT_TYPE1_TABLES_H +#include <freetype/t1tables.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftmodapi.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftmodapi.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftmodapi.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftmodapi.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType modules public interface (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define FTMODAPI_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" @@ -65,7 +64,7 @@ * psnames * raster1 * sfnt - * smooth, smooth-lcd, smooth-lcdv + * smooth * truetype * type1 * type42 @@ -486,7 +485,7 @@ * * ``` * FREETYPE_PROPERTIES=truetype:interpreter-version=35 \ - * cff:no-stem-darkening=1 \ + * cff:no-stem-darkening=0 \ * autofitter:warping=1 * ``` * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftmoderr.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftmoderr.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftmoderr.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftmoderr.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType module error offsets (specification). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -94,7 +94,7 @@ * const char* mod_err_msg * } ft_mod_errors[] = * - * #include FT_MODULE_ERRORS_H + * #include <freetype/ftmoderr.h> * ``` * */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftotval.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftotval.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftotval.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftotval.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for validating OpenType tables (specification). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -30,8 +30,7 @@ #ifndef FTOTVAL_H_ #define FTOTVAL_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftoutln.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftoutln.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftoutln.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftoutln.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Support for the FT_Outline type used to store glyph shapes of * most scalable font formats (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,8 +21,7 @@ #define FTOUTLN_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" @@ -483,19 +482,13 @@ * FreeType error code. 0~means success. * * @note: - * This advanced function uses @FT_Raster_Params as an argument, - * allowing FreeType rasterizer to be used for direct composition, - * translucency, etc. You should know how to set up @FT_Raster_Params - * for this function to work. - * + * This advanced function uses @FT_Raster_Params as an argument. * The field `params.source` will be set to `outline` before the scan * converter is called, which means that the value you give to it is - * actually ignored. - * - * The gray-level rasterizer always uses 256 gray levels. If you want - * less gray levels, you have to provide your own span callback. See the - * @FT_RASTER_FLAG_DIRECT value of the `flags` field in the - * @FT_Raster_Params structure for more details. + * actually ignored. Either `params.target` must point to preallocated + * bitmap, or @FT_RASTER_FLAG_DIRECT must be set in `params.flags` + * allowing FreeType rasterizer to be used for direct composition, + * translucency, etc. See @FT_Raster_Params for more details. */ FT_EXPORT( FT_Error ) FT_Outline_Render( FT_Library library, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftparams.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftparams.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftparams.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftparams.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for possible FT_Parameter tags (specification only). * - * Copyright (C) 2017-2019 by + * Copyright (C) 2017-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,7 @@ #ifndef FTPARAMS_H_ #define FTPARAMS_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftpfr.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftpfr.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftpfr.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftpfr.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for accessing PFR-specific data (specification only). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,7 @@ #ifndef FTPFR_H_ #define FTPFR_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftrender.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftrender.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftrender.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftrender.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType renderer modules public interface (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,8 @@ #define FTRENDER_H_ -#include <ft2build.h> -#include FT_MODULE_H -#include FT_GLYPH_H +#include <freetype/ftmodapi.h> +#include <freetype/ftglyph.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftsizes.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftsizes.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftsizes.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftsizes.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType size objects management (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -29,8 +29,7 @@ #define FTSIZES_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftsnames.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftsnames.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftsnames.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftsnames.h 2022-11-11 15:29:17.000000000 +0800 @@ -7,7 +7,7 @@ * * This is _not_ used to retrieve glyph names! * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -23,9 +23,8 @@ #define FTSNAMES_H_ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_PARAMETER_TAGS_H +#include <freetype/freetype.h> +#include <freetype/ftparams.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftstroke.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftstroke.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftstroke.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftstroke.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType path stroker (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,9 +19,8 @@ #ifndef FTSTROKE_H_ #define FTSTROKE_H_ -#include <ft2build.h> -#include FT_OUTLINE_H -#include FT_GLYPH_H +#include <freetype/ftoutln.h> +#include <freetype/ftglyph.h> FT_BEGIN_HEADER @@ -44,7 +43,7 @@ * borders of the stroke. * * This can be useful to generate 'bordered' glyph, i.e., glyphs - * displayed with a coloured (and anti-aliased) border around their + * displayed with a colored (and anti-aliased) border around their * shape. * * @order: @@ -114,22 +113,19 @@ * FT_STROKER_LINEJOIN_MITER_FIXED :: * Used to render mitered line joins, with fixed bevels if the miter * limit is exceeded. The outer edges of the strokes for the two - * segments are extended until they meet at an angle. If the segments - * meet at too sharp an angle (such that the miter would extend from - * the intersection of the segments a distance greater than the product - * of the miter limit value and the border radius), then a bevel join - * (see above) is used instead. This prevents long spikes being - * created. `FT_STROKER_LINEJOIN_MITER_FIXED` generates a miter line - * join as used in PostScript and PDF. + * segments are extended until they meet at an angle. A bevel join + * (see above) is used if the segments meet at too sharp an angle and + * the outer edges meet beyond a distance corresponding to the meter + * limit. This prevents long spikes being created. + * `FT_STROKER_LINEJOIN_MITER_FIXED` generates a miter line join as + * used in PostScript and PDF. * * FT_STROKER_LINEJOIN_MITER_VARIABLE :: * FT_STROKER_LINEJOIN_MITER :: * Used to render mitered line joins, with variable bevels if the miter - * limit is exceeded. The intersection of the strokes is clipped at a - * line perpendicular to the bisector of the angle between the strokes, - * at the distance from the intersection of the segments equal to the - * product of the miter limit value and the border radius. This - * prevents long spikes being created. + * limit is exceeded. The intersection of the strokes is clipped + * perpendicularly to the bisector, at a distance corresponding to + * the miter limit. This prevents long spikes being created. * `FT_STROKER_LINEJOIN_MITER_VARIABLE` generates a mitered line join * as used in XPS. `FT_STROKER_LINEJOIN_MITER` is an alias for * `FT_STROKER_LINEJOIN_MITER_VARIABLE`, retained for backward @@ -296,12 +292,17 @@ * The line join style. * * miter_limit :: - * The miter limit for the `FT_STROKER_LINEJOIN_MITER_FIXED` and - * `FT_STROKER_LINEJOIN_MITER_VARIABLE` line join styles, expressed as - * 16.16 fixed-point value. + * The maximum reciprocal sine of half-angle at the miter join, + * expressed as 16.16 fixed point value. * * @note: - * The radius is expressed in the same units as the outline coordinates. + * The `radius` is expressed in the same units as the outline + * coordinates. + * + * The `miter_limit` multiplied by the `radius` gives the maximum size + * of a miter spike, at which it is clipped for + * @FT_STROKER_LINEJOIN_MITER_VARIABLE or replaced with a bevel join for + * @FT_STROKER_LINEJOIN_MITER_FIXED. * * This function calls @FT_Stroker_Rewind automatically. */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftsynth.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftsynth.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftsynth.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftsynth.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * FreeType synthesizing code for emboldening and slanting * (specification). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -45,8 +45,7 @@ #define FTSYNTH_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftsystem.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftsystem.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftsystem.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftsystem.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType low-level system interface definition (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,7 +20,6 @@ #define FTSYSTEM_H_ -#include <ft2build.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/fttrigon.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/fttrigon.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/fttrigon.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/fttrigon.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType trigonometric functions (specification). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,7 +19,7 @@ #ifndef FTTRIGON_H_ #define FTTRIGON_H_ -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftttdrv.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftttdrv.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftttdrv.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftttdrv.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,310 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftttdrv.h */ -/* */ -/* FreeType API for controlling the TrueType driver */ -/* (specification only). */ -/* */ -/* Copyright 2013-2015 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTTTDRV_H__ -#define __FTTTDRV_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /************************************************************************** - * - * @section: - * tt_driver - * - * @title: - * The TrueType driver - * - * @abstract: - * Controlling the TrueType driver module. - * - * @description: - * While FreeType's TrueType driver doesn't expose API functions by - * itself, it is possible to control its behaviour with @FT_Property_Set - * and @FT_Property_Get. The following lists the available properties - * together with the necessary macros and structures. - * - * The TrueType driver's module name is `truetype'. - * - * We start with a list of definitions, kindly provided by Greg - * Hitchcock. - * - * _Bi-Level_ _Rendering_ - * - * Monochromatic rendering, exclusively used in the early days of - * TrueType by both Apple and Microsoft. Microsoft's GDI interface - * supported hinting of the right-side bearing point, such that the - * advance width could be non-linear. Most often this was done to - * achieve some level of glyph symmetry. To enable reasonable - * performance (e.g., not having to run hinting on all glyphs just to - * get the widths) there was a bit in the head table indicating if the - * side bearing was hinted, and additional tables, `hdmx' and `LTSH', to - * cache hinting widths across multiple sizes and device aspect ratios. - * - * _Font_ _Smoothing_ - * - * Microsoft's GDI implementation of anti-aliasing. Not traditional - * anti-aliasing as the outlines were hinted before the sampling. The - * widths matched the bi-level rendering. - * - * _ClearType_ _Rendering_ - * - * Technique that uses physical subpixels to improve rendering on LCD - * (and other) displays. Because of the higher resolution, many methods - * of improving symmetry in glyphs through hinting the right-side - * bearing were no longer necessary. This lead to what GDI calls - * `natural widths' ClearType, see - * http://www.beatstamm.com/typography/RTRCh4.htm#Sec21. Since hinting - * has extra resolution, most non-linearity went away, but it is still - * possible for hints to change the advance widths in this mode. - * - * _ClearType_ _Compatible_ _Widths_ - * - * One of the earliest challenges with ClearType was allowing the - * implementation in GDI to be selected without requiring all UI and - * documents to reflow. To address this, a compatible method of - * rendering ClearType was added where the font hints are executed once - * to determine the width in bi-level rendering, and then re-run in - * ClearType, with the difference in widths being absorbed in the font - * hints for ClearType (mostly in the white space of hints); see - * http://www.beatstamm.com/typography/RTRCh4.htm#Sec20. Somewhat by - * definition, compatible width ClearType allows for non-linear widths, - * but only when the bi-level version has non-linear widths. - * - * _ClearType_ _Subpixel_ _Positioning_ - * - * One of the nice benefits of ClearType is the ability to more crisply - * display fractional widths; unfortunately, the GDI model of integer - * bitmaps did not support this. However, the WPF and Direct Write - * frameworks do support fractional widths. DWrite calls this `natural - * mode', not to be confused with GDI's `natural widths'. Subpixel - * positioning, in the current implementation of Direct Write, - * unfortunately does not support hinted advance widths, see - * http://www.beatstamm.com/typography/RTRCh4.htm#Sec22. Note that the - * TrueType interpreter fully allows the advance width to be adjusted in - * this mode, just the DWrite client will ignore those changes. - * - * _ClearType_ _Backwards_ _Compatibility_ - * - * This is a set of exceptions made in the TrueType interpreter to - * minimize hinting techniques that were problematic with the extra - * resolution of ClearType; see - * http://www.beatstamm.com/typography/RTRCh4.htm#Sec1 and - * http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx. - * This technique is not to be confused with ClearType compatible - * widths. ClearType backwards compatibility has no direct impact on - * changing advance widths, but there might be an indirect impact on - * disabling some deltas. This could be worked around in backwards - * compatibility mode. - * - * _Native_ _ClearType_ _Mode_ - * - * (Not to be confused with `natural widths'.) This mode removes all - * the exceptions in the TrueType interpreter when running with - * ClearType. Any issues on widths would still apply, though. - * - */ - - - /************************************************************************** - * - * @property: - * interpreter-version - * - * @description: - * Currently, two versions are available, representing the bytecode - * interpreter with and without subpixel hinting support, - * respectively. The default is subpixel support if - * TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined, and no subpixel - * support otherwise (since it isn't available then). - * - * If subpixel hinting is on, many TrueType bytecode instructions behave - * differently compared to B/W or grayscale rendering (except if `native - * ClearType' is selected by the font). The main idea is to render at a - * much increased horizontal resolution, then sampling down the created - * output to subpixel precision. However, many older fonts are not - * suited to this and must be specially taken care of by applying - * (hardcoded) font-specific tweaks. - * - * Details on subpixel hinting and some of the necessary tweaks can be - * found in Greg Hitchcock's whitepaper at - * `http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'. - * - * The following example code demonstrates how to activate subpixel - * hinting (omitting the error handling). - * - * { - * FT_Library library; - * FT_Face face; - * FT_UInt interpreter_version = TT_INTERPRETER_VERSION_38; - * - * - * FT_Init_FreeType( &library ); - * - * FT_Property_Set( library, "truetype", - * "interpreter-version", - * &interpreter_version ); - * } - * - * @note: - * This property can be used with @FT_Property_Get also. - * - */ - - - /************************************************************************** - * - * @enum: - * TT_INTERPRETER_VERSION_XXX - * - * @description: - * A list of constants used for the @interpreter-version property to - * select the hinting engine for Truetype fonts. - * - * The numeric value in the constant names represents the version - * number as returned by the `GETINFO' bytecode instruction. - * - * @values: - * TT_INTERPRETER_VERSION_35 :: - * Version~35 corresponds to MS rasterizer v.1.7 as used e.g. in - * Windows~98; only grayscale and B/W rasterizing is supported. - * - * TT_INTERPRETER_VERSION_38 :: - * Version~38 corresponds to MS rasterizer v.1.9; it is roughly - * equivalent to the hinting provided by DirectWrite ClearType (as - * can be found, for example, in the Internet Explorer~9 running on - * Windows~7). - * - * @note: - * This property controls the behaviour of the bytecode interpreter - * and thus how outlines get hinted. It does *not* control how glyph - * get rasterized! In particular, it does not control subpixel color - * filtering. - * - * If FreeType has not been compiled with configuration option - * FT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version~38 causes an - * `FT_Err_Unimplemented_Feature' error. - * - * Depending on the graphics framework, Microsoft uses different - * bytecode and rendering engines. As a consequence, the version - * numbers returned by a call to the `GETINFO' bytecode instruction are - * more convoluted than desired. - * - * Here are two tables that try to shed some light on the possible - * values for the MS rasterizer engine, together with the additional - * features introduced by it. - * - * { - * GETINFO framework version feature - * ------------------------------------------------------------------- - * 3 GDI (Win 3.1), v1.0 16-bit, first version - * TrueImage - * 33 GDI (Win NT 3.1), v1.5 32-bit - * HP Laserjet - * 34 GDI (Win 95) v1.6 font smoothing, - * new SCANTYPE opcode - * 35 GDI (Win 98/2000) v1.7 (UN)SCALED_COMPONENT_OFFSET - * bits in composite glyphs - * 36 MGDI (Win CE 2) v1.6+ classic ClearType - * 37 GDI (XP and later), v1.8 ClearType - * GDI+ old (before Vista) - * 38 GDI+ old (Vista, Win 7), v1.9 subpixel ClearType, - * WPF Y-direction ClearType, - * additional error checking - * 39 DWrite (before Win 8) v2.0 subpixel ClearType flags - * in GETINFO opcode, - * bug fixes - * 40 GDI+ (after Win 7), v2.1 Y-direction ClearType flag - * DWrite (Win 8) in GETINFO opcode, - * Gray ClearType - * } - * - * The `version' field gives a rough orientation only, since some - * applications provided certain features much earlier (as an example, - * Microsoft Reader used subpixel and Y-direction ClearType already in - * Windows 2000). Similarly, updates to a given framework might include - * improved hinting support. - * - * { - * version sampling rendering comment - * x y x y - * -------------------------------------------------------------- - * v1.0 normal normal B/W B/W bi-level - * v1.6 high high gray gray grayscale - * v1.8 high normal color-filter B/W (GDI) ClearType - * v1.9 high high color-filter gray Color ClearType - * v2.1 high normal gray B/W Gray ClearType - * v2.1 high high gray gray Gray ClearType - * } - * - * Color and Gray ClearType are the two available variants of - * `Y-direction ClearType', meaning grayscale rasterization along the - * Y-direction; the name used in the TrueType specification for this - * feature is `symmetric smoothing'. `Classic ClearType' is the - * original algorithm used before introducing a modified version in - * Win~XP. Another name for v1.6's grayscale rendering is `font - * smoothing', and `Color ClearType' is sometimes also called `DWrite - * ClearType'. To differentiate between today's Color ClearType and the - * earlier ClearType variant with B/W rendering along the vertical axis, - * the latter is sometimes called `GDI ClearType'. - * - * `Normal' and `high' sampling describe the (virtual) resolution to - * access the rasterized outline after the hinting process. `Normal' - * means 1 sample per grid line (i.e., B/W). In the current Microsoft - * implementation, `high' means an extra virtual resolution of 16x16 (or - * 16x1) grid lines per pixel for bytecode instructions like `MIRP'. - * After hinting, these 16 grid lines are mapped to 6x5 (or 6x1) grid - * lines for color filtering if Color ClearType is activated. - * - * Note that `Gray ClearType' is essentially the same as v1.6's - * grayscale rendering. However, the GETINFO instruction handles it - * differently: v1.6 returns bit~12 (hinting for grayscale), while v2.1 - * returns bits~13 (hinting for ClearType), 18 (symmetrical smoothing), - * and~19 (Gray ClearType). Also, this mode respects bits 2 and~3 for - * the version~1 gasp table exclusively (like Color ClearType), while - * v1.6 only respects the values of version~0 (bits 0 and~1). - * - * FreeType doesn't provide all capabilities of the most recent - * ClearType incarnation, thus we identify our subpixel support as - * version~38. - * - */ -#define TT_INTERPRETER_VERSION_35 35 -#define TT_INTERPRETER_VERSION_38 38 - - /* */ - - -FT_END_HEADER - - -#endif /* __FTTTDRV_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/fttypes.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/fttypes.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/fttypes.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/fttypes.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType simple types definitions (specification only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -22,8 +22,8 @@ #include <ft2build.h> #include FT_CONFIG_CONFIG_H -#include FT_SYSTEM_H -#include FT_IMAGE_H +#include <freetype/ftsystem.h> +#include <freetype/ftimage.h> #include <stddef.h> diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftwinfnt.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftwinfnt.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ftwinfnt.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ftwinfnt.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for accessing Windows fnt-specific data. * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,7 @@ #ifndef FTWINFNT_H_ #define FTWINFNT_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/autohint.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/autohint.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/autohint.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/autohint.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * High-level 'autohint' module-specific interface (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -70,8 +70,7 @@ */ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> FT_BEGIN_HEADER @@ -208,6 +207,9 @@ } FT_AutoHinter_InterfaceRec, *FT_AutoHinter_Interface; +#define FT_DECLARE_AUTOHINTER_INTERFACE( class_ ) \ + FT_CALLBACK_TABLE const FT_AutoHinter_InterfaceRec class_; + #define FT_DEFINE_AUTOHINTER_INTERFACE( \ class_, \ reset_face_, \ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/cffotypes.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/cffotypes.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/cffotypes.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/cffotypes.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Basic OpenType/CFF object type definitions (specification). * - * Copyright (C) 2017-2019 by + * Copyright (C) 2017-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,12 +19,11 @@ #ifndef CFFOTYPES_H_ #define CFFOTYPES_H_ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_CFF_TYPES_H -#include FT_INTERNAL_TRUETYPE_TYPES_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/cfftypes.h> +#include <freetype/internal/tttypes.h> +#include <freetype/internal/services/svpscmap.h> +#include <freetype/internal/pshints.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/cfftypes.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/cfftypes.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/cfftypes.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/cfftypes.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Basic OpenType/CFF type definitions and interface (specification * only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,13 +21,12 @@ #define CFFTYPES_H_ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_TYPE1_TABLES_H -#include FT_INTERNAL_SERVICE_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H -#include FT_INTERNAL_TYPE1_TYPES_H +#include <freetype/freetype.h> +#include <freetype/t1tables.h> +#include <freetype/internal/ftserv.h> +#include <freetype/internal/services/svpscmap.h> +#include <freetype/internal/pshints.h> +#include <freetype/internal/t1types.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/compiler-macros.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/compiler-macros.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/compiler-macros.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/compiler-macros.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,307 @@ +/**************************************************************************** + * + * internal/compiler-macros.h + * + * Compiler-specific macro definitions used internally by FreeType. + * + * Copyright (C) 2020 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + +#ifndef INTERNAL_COMPILER_MACROS_H_ +#define INTERNAL_COMPILER_MACROS_H_ + +#include <freetype/config/public-macros.h> + +FT_BEGIN_HEADER + + /* Fix compiler warning with sgi compiler. */ +#if defined( __sgi ) && !defined( __GNUC__ ) +# if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 ) +# pragma set woff 3505 +# endif +#endif + + /* Fix compiler warning with sgi compiler. */ +#if defined( __sgi ) && !defined( __GNUC__ ) +# if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 ) +# pragma set woff 3505 +# endif +#endif + + /* + * When defining a macro that expands to a non-trivial C statement, use + * FT_BEGIN_STMNT and FT_END_STMNT to enclose the macro's body. This + * ensures there are no surprises when the macro is invoked in conditional + * branches. + * + * Example: + * + * #define LOG( ... ) \ + * FT_BEGIN_STMNT \ + * if ( logging_enabled ) \ + * log( __VA_ARGS__ ); \ + * FT_END_STMNT + */ +#define FT_BEGIN_STMNT do { +#define FT_END_STMNT } while ( 0 ) + + /* + * FT_DUMMY_STMNT expands to an empty C statement. Useful for + * conditionally defined statement macros. + * + * Example: + * + * #ifdef BUILD_CONFIG_LOGGING + * #define LOG( ... ) \ + * FT_BEGIN_STMNT \ + * if ( logging_enabled ) \ + * log( __VA_ARGS__ ); \ + * FT_END_STMNT + * #else + * # define LOG( ... ) FT_DUMMY_STMNT + * #endif + */ +#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT + +#ifdef _WIN64 + /* only 64bit Windows uses the LLP64 data model, i.e., */ + /* 32-bit integers, 64-bit pointers. */ +#define FT_UINT_TO_POINTER( x ) (void *)(unsigned __int64)(x) +#else +#define FT_UINT_TO_POINTER( x ) (void *)(unsigned long)(x) +#endif + + /* + * Use `FT_TYPEOF( type )` to cast a value to `type`. This is useful to + * suppress signedness compilation warnings in macros. + * + * Example: + * + * #define PAD_( x, n ) ( (x) & ~FT_TYPEOF( x )( (n) - 1 ) ) + * + * (The `typeof` condition is taken from gnulib's `intprops.h` header + * file.) + */ +#if ( ( defined( __GNUC__ ) && __GNUC__ >= 2 ) || \ + ( defined( __IBMC__ ) && __IBMC__ >= 1210 && \ + defined( __IBM__TYPEOF__ ) ) || \ + ( defined( __SUNPRO_C ) && __SUNPRO_C >= 0x5110 && !__STDC__ ) ) +#define FT_TYPEOF( type ) ( __typeof__ ( type ) ) +#else +#define FT_TYPEOF( type ) /* empty */ +#endif + + /* + * Mark a function declaration as internal to the library. This ensures + * that it will not be exposed by default to client code, and helps + * generate smaller and faster code on ELF-based platforms. Place this + * before a function declaration. + */ + + /* Visual C, mingw */ +#if defined( _WIN32 ) +#define FT_INTERNAL_FUNCTION_ATTRIBUTE /* empty */ + + /* gcc, clang */ +#elif ( defined( __GNUC__ ) && __GNUC__ >= 4 ) || defined( __clang__ ) +#define FT_INTERNAL_FUNCTION_ATTRIBUTE \ + __attribute__(( visibility( "hidden" ) )) + + /* Sun */ +#elif defined( __SUNPRO_C ) && __SUNPRO_C >= 0x550 +#define FT_INTERNAL_FUNCTION_ATTRIBUTE __hidden + +#else +#define FT_INTERNAL_FUNCTION_ATTRIBUTE /* empty */ +#endif + + /* + * FreeType supports compilation of its C sources with a C++ compiler (in + * C++ mode); this introduces a number of subtle issues. + * + * The main one is that a C++ function declaration and its definition must + * have the same 'linkage'. Because all FreeType headers declare their + * functions with C linkage (i.e., within an `extern "C" { ... }` block + * due to the magic of FT_BEGIN_HEADER and FT_END_HEADER), their + * definition in FreeType sources should also be prefixed with `extern + * "C"` when compiled in C++ mode. + * + * The `FT_FUNCTION_DECLARATION` and `FT_FUNCTION_DEFINITION` macros are + * provided to deal with this case, as well as `FT_CALLBACK_DEF` and its + * siblings below. + */ + + /* + * `FT_FUNCTION_DECLARATION( type )` can be used to write a C function + * declaration to ensure it will have C linkage when the library is built + * with a C++ compiler. The parameter is the function's return type, so a + * declaration would look like + * + * FT_FUNCTION_DECLARATION( int ) + * foo( int x ); + * + * NOTE: This requires that all uses are inside of `FT_BEGIN_HEADER ... + * FT_END_HEADER` blocks, which guarantees that the declarations have C + * linkage when the headers are included by C++ sources. + * + * NOTE: Do not use directly. Use `FT_LOCAL`, `FT_BASE`, and `FT_EXPORT` + * instead. + */ +#define FT_FUNCTION_DECLARATION( x ) extern x + + /* + * Same as `FT_FUNCTION_DECLARATION`, but for function definitions instead. + * + * NOTE: Do not use directly. Use `FT_LOCAL_DEF`, `FT_BASE_DEF`, and + * `FT_EXPORT_DEF` instead. + */ +#ifdef __cplusplus +#define FT_FUNCTION_DEFINITION( x ) extern "C" x +#else +#define FT_FUNCTION_DEFINITION( x ) x +#endif + + /* + * Use `FT_LOCAL` and `FT_LOCAL_DEF` to declare and define, respectively, + * an internal FreeType function that is only used by the sources of a + * single `src/module/` directory. This ensures that the functions are + * turned into static ones at build time, resulting in smaller and faster + * code. + */ +#ifdef FT_MAKE_OPTION_SINGLE_OBJECT + +#define FT_LOCAL( x ) static x +#define FT_LOCAL_DEF( x ) static x + +#else + +#define FT_LOCAL( x ) FT_INTERNAL_FUNCTION_ATTRIBUTE \ + FT_FUNCTION_DECLARATION( x ) +#define FT_LOCAL_DEF( x ) FT_FUNCTION_DEFINITION( x ) + +#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ + + /* + * Use `FT_LOCAL_ARRAY` and `FT_LOCAL_ARRAY_DEF` to declare and define, + * respectively, a constant array that must be accessed from several + * sources in the same `src/module/` sub-directory, and which are internal + * to the library. + */ +#define FT_LOCAL_ARRAY( x ) FT_INTERNAL_FUNCTION_ATTRIBUTE \ + extern const x +#define FT_LOCAL_ARRAY_DEF( x ) FT_FUNCTION_DEFINITION( const x ) + + /* + * `Use FT_BASE` and `FT_BASE_DEF` to declare and define, respectively, an + * internal library function that is used by more than a single module. + */ +#define FT_BASE( x ) FT_INTERNAL_FUNCTION_ATTRIBUTE \ + FT_FUNCTION_DECLARATION( x ) +#define FT_BASE_DEF( x ) FT_FUNCTION_DEFINITION( x ) + + + /* + * NOTE: Conditionally define `FT_EXPORT_VAR` due to its definition in + * `src/smooth/ftgrays.h` to make the header more portable. + */ +#ifndef FT_EXPORT_VAR +#define FT_EXPORT_VAR( x ) FT_FUNCTION_DECLARATION( x ) +#endif + + /* When compiling FreeType as a DLL or DSO with hidden visibility, */ + /* some systems/compilers need a special attribute in front OR after */ + /* the return type of function declarations. */ + /* */ + /* Two macros are used within the FreeType source code to define */ + /* exported library functions: `FT_EXPORT` and `FT_EXPORT_DEF`. */ + /* */ + /* - `FT_EXPORT( return_type )` */ + /* */ + /* is used in a function declaration, as in */ + /* */ + /* ``` */ + /* FT_EXPORT( FT_Error ) */ + /* FT_Init_FreeType( FT_Library* alibrary ); */ + /* ``` */ + /* */ + /* - `FT_EXPORT_DEF( return_type )` */ + /* */ + /* is used in a function definition, as in */ + /* */ + /* ``` */ + /* FT_EXPORT_DEF( FT_Error ) */ + /* FT_Init_FreeType( FT_Library* alibrary ) */ + /* { */ + /* ... some code ... */ + /* return FT_Err_Ok; */ + /* } */ + /* ``` */ + /* */ + /* You can provide your own implementation of `FT_EXPORT` and */ + /* `FT_EXPORT_DEF` here if you want. */ + /* */ + /* To export a variable, use `FT_EXPORT_VAR`. */ + /* */ + + /* See `freetype/config/compiler_macros.h` for the `FT_EXPORT` definition */ +#define FT_EXPORT_DEF( x ) FT_FUNCTION_DEFINITION( x ) + + /* The following macros are needed to compile the library with a */ + /* C++ compiler and with 16bit compilers. */ + /* */ + + /* This is special. Within C++, you must specify `extern "C"` for */ + /* functions which are used via function pointers, and you also */ + /* must do that for structures which contain function pointers to */ + /* assure C linkage -- it's not possible to have (local) anonymous */ + /* functions which are accessed by (global) function pointers. */ + /* */ + /* */ + /* FT_CALLBACK_DEF is used to _define_ a callback function, */ + /* located in the same source code file as the structure that uses */ + /* it. */ + /* */ + /* FT_BASE_CALLBACK and FT_BASE_CALLBACK_DEF are used to declare */ + /* and define a callback function, respectively, in a similar way */ + /* as FT_BASE and FT_BASE_DEF work. */ + /* */ + /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ + /* contains pointers to callback functions. */ + /* */ + /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ + /* that contains pointers to callback functions. */ + /* */ + /* */ + /* Some 16bit compilers have to redefine these macros to insert */ + /* the infamous `_cdecl` or `__fastcall` declarations. */ + /* */ +#ifdef __cplusplus +#define FT_CALLBACK_DEF( x ) extern "C" x +#else +#define FT_CALLBACK_DEF( x ) static x +#endif + +#define FT_BASE_CALLBACK( x ) FT_FUNCTION_DECLARATION( x ) +#define FT_BASE_CALLBACK_DEF( x ) FT_FUNCTION_DEFINITION( x ) + +#ifndef FT_CALLBACK_TABLE +#ifdef __cplusplus +#define FT_CALLBACK_TABLE extern "C" +#define FT_CALLBACK_TABLE_DEF extern "C" +#else +#define FT_CALLBACK_TABLE extern +#define FT_CALLBACK_TABLE_DEF /* nothing */ +#endif +#endif /* FT_CALLBACK_TABLE */ + +FT_END_HEADER + +#endif /* INTERNAL_COMPILER_MACROS_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftcalc.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftcalc.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftcalc.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftcalc.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Arithmetic computations (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,9 @@ #define FTCALC_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> +#include "compiler-macros.h" FT_BEGIN_HEADER @@ -449,8 +449,7 @@ #define F2DOT14_TO_FIXED( x ) ( (FT_Long)(x) * 4 ) /* << 2 */ #define FIXED_TO_INT( x ) ( FT_RoundFix( x ) >> 16 ) -#define ROUND_F26DOT6( x ) ( x >= 0 ? ( ( (x) + 32 ) & -64 ) \ - : ( -( ( 32 - (x) ) & -64 ) ) ) +#define ROUND_F26DOT6( x ) ( ( (x) + 32 - ( x < 0 ) ) & -64 ) /* * The following macros have two purposes. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftdebug.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftdebug.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftdebug.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftdebug.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Debugging and logging component (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -27,7 +27,9 @@ #include <ft2build.h> #include FT_CONFIG_CONFIG_H -#include FT_FREETYPE_H +#include <freetype/freetype.h> + +#include "compiler-macros.h" FT_BEGIN_HEADER @@ -56,7 +58,7 @@ /* defining the enumeration */ typedef enum FT_Trace_ { -#include FT_INTERNAL_TRACE_H +#include <freetype/internal/fttrace.h> trace_count } FT_Trace; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftdriver.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftdriver.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftdriver.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftdriver.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,409 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftdriver.h */ -/* */ -/* FreeType font driver interface (specification). */ -/* */ -/* Copyright 1996-2015 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTDRIVER_H__ -#define __FTDRIVER_H__ - - -#include <ft2build.h> -#include FT_MODULE_H - - -FT_BEGIN_HEADER - - - typedef FT_Error - (*FT_Face_InitFunc)( FT_Stream stream, - FT_Face face, - FT_Int typeface_index, - FT_Int num_params, - FT_Parameter* parameters ); - - typedef void - (*FT_Face_DoneFunc)( FT_Face face ); - - - typedef FT_Error - (*FT_Size_InitFunc)( FT_Size size ); - - typedef void - (*FT_Size_DoneFunc)( FT_Size size ); - - - typedef FT_Error - (*FT_Slot_InitFunc)( FT_GlyphSlot slot ); - - typedef void - (*FT_Slot_DoneFunc)( FT_GlyphSlot slot ); - - - typedef FT_Error - (*FT_Size_RequestFunc)( FT_Size size, - FT_Size_Request req ); - - typedef FT_Error - (*FT_Size_SelectFunc)( FT_Size size, - FT_ULong size_index ); - - typedef FT_Error - (*FT_Slot_LoadFunc)( FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_Int32 load_flags ); - - - typedef FT_UInt - (*FT_CharMap_CharIndexFunc)( FT_CharMap charmap, - FT_Long charcode ); - - typedef FT_Long - (*FT_CharMap_CharNextFunc)( FT_CharMap charmap, - FT_Long charcode ); - - - typedef FT_Error - (*FT_Face_GetKerningFunc)( FT_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_Vector* kerning ); - - - typedef FT_Error - (*FT_Face_AttachFunc)( FT_Face face, - FT_Stream stream ); - - - typedef FT_Error - (*FT_Face_GetAdvancesFunc)( FT_Face face, - FT_UInt first, - FT_UInt count, - FT_Int32 flags, - FT_Fixed* advances ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Driver_ClassRec */ - /* */ - /* <Description> */ - /* The font driver class. This structure mostly contains pointers to */ - /* driver methods. */ - /* */ - /* <Fields> */ - /* root :: The parent module. */ - /* */ - /* face_object_size :: The size of a face object in bytes. */ - /* */ - /* size_object_size :: The size of a size object in bytes. */ - /* */ - /* slot_object_size :: The size of a glyph object in bytes. */ - /* */ - /* init_face :: The format-specific face constructor. */ - /* */ - /* done_face :: The format-specific face destructor. */ - /* */ - /* init_size :: The format-specific size constructor. */ - /* */ - /* done_size :: The format-specific size destructor. */ - /* */ - /* init_slot :: The format-specific slot constructor. */ - /* */ - /* done_slot :: The format-specific slot destructor. */ - /* */ - /* */ - /* load_glyph :: A function handle to load a glyph to a slot. */ - /* This field is mandatory! */ - /* */ - /* get_kerning :: A function handle to return the unscaled */ - /* kerning for a given pair of glyphs. Can be */ - /* set to 0 if the format doesn't support */ - /* kerning. */ - /* */ - /* attach_file :: This function handle is used to read */ - /* additional data for a face from another */ - /* file/stream. For example, this can be used to */ - /* add data from AFM or PFM files on a Type 1 */ - /* face, or a CIDMap on a CID-keyed face. */ - /* */ - /* get_advances :: A function handle used to return advance */ - /* widths of `count' glyphs (in font units), */ - /* starting at `first'. The `vertical' flag must */ - /* be set to get vertical advance heights. The */ - /* `advances' buffer is caller-allocated. */ - /* The idea of this function is to be able to */ - /* perform device-independent text layout without */ - /* loading a single glyph image. */ - /* */ - /* request_size :: A handle to a function used to request the new */ - /* character size. Can be set to 0 if the */ - /* scaling done in the base layer suffices. */ - /* */ - /* select_size :: A handle to a function used to select a new */ - /* fixed size. It is used only if */ - /* @FT_FACE_FLAG_FIXED_SIZES is set. Can be set */ - /* to 0 if the scaling done in the base layer */ - /* suffices. */ - /* <Note> */ - /* Most function pointers, with the exception of `load_glyph', can be */ - /* set to 0 to indicate a default behaviour. */ - /* */ - typedef struct FT_Driver_ClassRec_ - { - FT_Module_Class root; - - FT_Long face_object_size; - FT_Long size_object_size; - FT_Long slot_object_size; - - FT_Face_InitFunc init_face; - FT_Face_DoneFunc done_face; - - FT_Size_InitFunc init_size; - FT_Size_DoneFunc done_size; - - FT_Slot_InitFunc init_slot; - FT_Slot_DoneFunc done_slot; - - FT_Slot_LoadFunc load_glyph; - - FT_Face_GetKerningFunc get_kerning; - FT_Face_AttachFunc attach_file; - FT_Face_GetAdvancesFunc get_advances; - - /* since version 2.2 */ - FT_Size_RequestFunc request_size; - FT_Size_SelectFunc select_size; - - } FT_Driver_ClassRec, *FT_Driver_Class; - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_DECLARE_DRIVER */ - /* */ - /* <Description> */ - /* Used to create a forward declaration of an FT_Driver_ClassRec */ - /* struct instance. */ - /* */ - /* <Macro> */ - /* FT_DEFINE_DRIVER */ - /* */ - /* <Description> */ - /* Used to initialize an instance of FT_Driver_ClassRec struct. */ - /* */ - /* When FT_CONFIG_OPTION_PIC is defined a `create' function has to be */ - /* called with a pointer where the allocated structure is returned. */ - /* And when it is no longer needed a `destroy' function needs to be */ - /* called to release that allocation. */ - /* */ - /* `fcinit.c' (ft_create_default_module_classes) already contains a */ - /* mechanism to call these functions for the default modules */ - /* described in `ftmodule.h'. */ - /* */ - /* Notice that the created `create' and `destroy' functions call */ - /* `pic_init' and `pic_free' to allow you to manually allocate and */ - /* initialize any additional global data, like a module specific */ - /* interface, and put them in the global pic container defined in */ - /* `ftpic.h'. If you don't need them just implement the functions as */ - /* empty to resolve the link error. Also the `pic_init' and */ - /* `pic_free' functions should be declared in `pic.h', to be referred */ - /* by driver definition calling `FT_DEFINE_DRIVER' in following. */ - /* */ - /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ - /* allocated in the global scope (or the scope where the macro is */ - /* used). */ - /* */ -#ifndef FT_CONFIG_OPTION_PIC - -#define FT_DECLARE_DRIVER( class_ ) \ - FT_CALLBACK_TABLE \ - const FT_Driver_ClassRec class_; - -#define FT_DEFINE_DRIVER( \ - class_, \ - flags_, \ - size_, \ - name_, \ - version_, \ - requires_, \ - interface_, \ - init_, \ - done_, \ - get_interface_, \ - face_object_size_, \ - size_object_size_, \ - slot_object_size_, \ - init_face_, \ - done_face_, \ - init_size_, \ - done_size_, \ - init_slot_, \ - done_slot_, \ - load_glyph_, \ - get_kerning_, \ - attach_file_, \ - get_advances_, \ - request_size_, \ - select_size_ ) \ - FT_CALLBACK_TABLE_DEF \ - const FT_Driver_ClassRec class_ = \ - { \ - FT_DEFINE_ROOT_MODULE( flags_, \ - size_, \ - name_, \ - version_, \ - requires_, \ - interface_, \ - init_, \ - done_, \ - get_interface_ ) \ - \ - face_object_size_, \ - size_object_size_, \ - slot_object_size_, \ - \ - init_face_, \ - done_face_, \ - \ - init_size_, \ - done_size_, \ - \ - init_slot_, \ - done_slot_, \ - \ - load_glyph_, \ - \ - get_kerning_, \ - attach_file_, \ - get_advances_, \ - \ - request_size_, \ - select_size_ \ - }; - -#else /* FT_CONFIG_OPTION_PIC */ - -#define FT_DECLARE_DRIVER( class_ ) FT_DECLARE_MODULE( class_ ) - -#define FT_DEFINE_DRIVER( \ - class_, \ - flags_, \ - size_, \ - name_, \ - version_, \ - requires_, \ - interface_, \ - init_, \ - done_, \ - get_interface_, \ - face_object_size_, \ - size_object_size_, \ - slot_object_size_, \ - init_face_, \ - done_face_, \ - init_size_, \ - done_size_, \ - init_slot_, \ - done_slot_, \ - load_glyph_, \ - get_kerning_, \ - attach_file_, \ - get_advances_, \ - request_size_, \ - select_size_ ) \ - void \ - FT_Destroy_Class_ ## class_( FT_Library library, \ - FT_Module_Class* clazz ) \ - { \ - FT_Memory memory = library->memory; \ - FT_Driver_Class dclazz = (FT_Driver_Class)clazz; \ - \ - \ - class_ ## _pic_free( library ); \ - if ( dclazz ) \ - FT_FREE( dclazz ); \ - } \ - \ - \ - FT_Error \ - FT_Create_Class_ ## class_( FT_Library library, \ - FT_Module_Class** output_class ) \ - { \ - FT_Driver_Class clazz = NULL; \ - FT_Error error; \ - FT_Memory memory = library->memory; \ - \ - \ - if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) ) \ - return error; \ - \ - error = class_ ## _pic_init( library ); \ - if ( error ) \ - { \ - FT_FREE( clazz ); \ - return error; \ - } \ - \ - FT_DEFINE_ROOT_MODULE( flags_, \ - size_, \ - name_, \ - version_, \ - requires_, \ - interface_, \ - init_, \ - done_, \ - get_interface_ ) \ - \ - clazz->face_object_size = face_object_size_; \ - clazz->size_object_size = size_object_size_; \ - clazz->slot_object_size = slot_object_size_; \ - \ - clazz->init_face = init_face_; \ - clazz->done_face = done_face_; \ - \ - clazz->init_size = init_size_; \ - clazz->done_size = done_size_; \ - \ - clazz->init_slot = init_slot_; \ - clazz->done_slot = done_slot_; \ - \ - clazz->load_glyph = load_glyph_; \ - \ - clazz->get_kerning = get_kerning_; \ - clazz->attach_file = attach_file_; \ - clazz->get_advances = get_advances_; \ - \ - clazz->request_size = request_size_; \ - clazz->select_size = select_size_; \ - \ - *output_class = (FT_Module_Class*)clazz; \ - \ - return FT_Err_Ok; \ - } - - -#endif /* FT_CONFIG_OPTION_PIC */ - -FT_END_HEADER - -#endif /* __FTDRIVER_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftdrv.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftdrv.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftdrv.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftdrv.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType internal font driver interface (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,9 @@ #define FTDRV_H_ -#include <ft2build.h> -#include FT_MODULE_H +#include <freetype/ftmodapi.h> +#include "compiler-macros.h" FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftgloadr.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftgloadr.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftgloadr.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftgloadr.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType glyph loader (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define FTGLOADR_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> FT_BEGIN_HEADER @@ -138,8 +137,6 @@ FT_BASE( void ) FT_GlyphLoader_Add( FT_GlyphLoader loader ); - /* */ - FT_END_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/fthash.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/fthash.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/fthash.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/fthash.h 2022-11-11 15:29:17.000000000 +0800 @@ -43,8 +43,7 @@ #define FTHASH_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftmemory.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftmemory.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftmemory.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftmemory.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType memory management macros (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg * * This file is part of the FreeType project, and may only be used, @@ -22,8 +22,9 @@ #include <ft2build.h> #include FT_CONFIG_CONFIG_H -#include FT_TYPES_H +#include <freetype/fttypes.h> +#include "compiler-macros.h" FT_BEGIN_HEADER @@ -57,6 +58,14 @@ /*************************************************************************/ + /* The calculation `NULL + n' is undefined in C. Even if the resulting */ + /* pointer doesn't get dereferenced, this causes warnings with */ + /* sanitizers. */ + /* */ + /* We thus provide a macro that should be used if `base' can be NULL. */ +#define FT_OFFSET( base, count ) ( (base) ? (base) + (count) : NULL ) + + /* * C++ refuses to handle statements like p = (void*)anything, with `p' a * typed pointer. Since we don't have a `typeof' operator in standard C++, @@ -153,10 +162,10 @@ (FT_Long)(size), \ &error ) ) -#define FT_MEM_FREE( ptr ) \ - FT_BEGIN_STMNT \ - ft_mem_free( memory, (ptr) ); \ - (ptr) = NULL; \ +#define FT_MEM_FREE( ptr ) \ + FT_BEGIN_STMNT \ + FT_DEBUG_INNER( ft_mem_free( memory, (ptr) ) ); \ + (ptr) = NULL; \ FT_END_STMNT #define FT_MEM_NEW( ptr ) \ @@ -381,8 +390,6 @@ #define FT_STRCPYN( dst, src, size ) \ ft_mem_strcpyn( (char*)dst, (const char*)(src), (FT_ULong)(size) ) - /* */ - FT_END_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftobjs.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftobjs.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftobjs.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftobjs.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType private base classes (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -26,21 +26,21 @@ #ifndef FTOBJS_H_ #define FTOBJS_H_ -#include <ft2build.h> -#include FT_RENDER_H -#include FT_SIZES_H -#include FT_LCD_FILTER_H -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_GLYPH_LOADER_H -#include FT_INTERNAL_DRIVER_H -#include FT_INTERNAL_AUTOHINT_H -#include FT_INTERNAL_SERVICE_H -#include FT_INTERNAL_CALC_H +#include <freetype/ftrender.h> +#include <freetype/ftsizes.h> +#include <freetype/ftlcdfil.h> +#include <freetype/internal/ftmemory.h> +#include <freetype/internal/ftgloadr.h> +#include <freetype/internal/ftdrv.h> +#include <freetype/internal/autohint.h> +#include <freetype/internal/ftserv.h> +#include <freetype/internal/ftcalc.h> #ifdef FT_CONFIG_OPTION_INCREMENTAL -#include FT_INCREMENTAL_H +#include <freetype/ftincrem.h> #endif +#include "compiler-macros.h" FT_BEGIN_HEADER @@ -226,8 +226,8 @@ } FT_CMap_ClassRec; -#define FT_DECLARE_CMAP_CLASS( class_ ) \ - FT_CALLBACK_TABLE const FT_CMap_ClassRec class_; +#define FT_DECLARE_CMAP_CLASS( class_ ) \ + FT_CALLBACK_TABLE const FT_CMap_ClassRec class_; #define FT_DEFINE_CMAP_CLASS( \ class_, \ @@ -653,7 +653,7 @@ FT_BASE( void ) FT_Done_GlyphSlot( FT_GlyphSlot slot ); - /* */ + /* */ #define FT_REQUEST_WIDTH( req ) \ ( (req)->horiResolution \ @@ -1057,6 +1057,9 @@ * The struct will be allocated in the global scope (or the scope where * the macro is used). */ +#define FT_DECLARE_GLYPH( class_ ) \ + FT_CALLBACK_TABLE const FT_Glyph_Class class_; + #define FT_DEFINE_GLYPH( \ class_, \ size_, \ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftpic.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftpic.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftpic.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftpic.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,71 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftpic.h */ -/* */ -/* The FreeType position independent code services (declaration). */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - /*************************************************************************/ - /* */ - /* Modules that ordinarily have const global data that need address */ - /* can instead define pointers here. */ - /* */ - /*************************************************************************/ - - -#ifndef FTPIC_H_ -#define FTPIC_H_ - - -FT_BEGIN_HEADER - -#ifdef FT_CONFIG_OPTION_PIC - - typedef struct FT_PIC_Container_ - { - /* pic containers for base */ - void* base; - - /* pic containers for modules */ - void* autofit; - void* cff; - void* pshinter; - void* psnames; - void* raster; - void* sfnt; - void* smooth; - void* truetype; - - } FT_PIC_Container; - - - /* Initialize the various function tables, structs, etc. */ - /* stored in the container. */ - FT_BASE( FT_Error ) - ft_pic_container_init( FT_Library library ); - - - /* Destroy the contents of the container. */ - FT_BASE( void ) - ft_pic_container_destroy( FT_Library library ); - -#endif /* FT_CONFIG_OPTION_PIC */ - - /* */ - -FT_END_HEADER - -#endif /* FTPIC_H_ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftpsprop.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftpsprop.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftpsprop.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftpsprop.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Get and set properties of PostScript drivers (specification). * - * Copyright (C) 2017-2019 by + * Copyright (C) 2017-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define FTPSPROP_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftrfork.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftrfork.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftrfork.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftrfork.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Embedded resource forks accessor (specification). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * Masatake YAMATO and Redhat K.K. * * This file is part of the FreeType project, and may only be used, @@ -25,8 +25,7 @@ #define FTRFORK_H_ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H +#include <freetype/internal/ftobjs.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftserv.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftserv.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftserv.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftserv.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType services (specification only). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -31,6 +31,7 @@ #ifndef FTSERV_H_ #define FTSERV_H_ +#include "compiler-macros.h" FT_BEGIN_HEADER @@ -486,33 +487,6 @@ /* */ - /* - * The header files containing the services. - */ - -#define FT_SERVICE_BDF_H <freetype/internal/services/svbdf.h> -#define FT_SERVICE_CFF_TABLE_LOAD_H <freetype/internal/services/svcfftl.h> -#define FT_SERVICE_CID_H <freetype/internal/services/svcid.h> -#define FT_SERVICE_FONT_FORMAT_H <freetype/internal/services/svfntfmt.h> -#define FT_SERVICE_GLYPH_DICT_H <freetype/internal/services/svgldict.h> -#define FT_SERVICE_GX_VALIDATE_H <freetype/internal/services/svgxval.h> -#define FT_SERVICE_KERNING_H <freetype/internal/services/svkern.h> -#define FT_SERVICE_METRICS_VARIATIONS_H <freetype/internal/services/svmetric.h> -#define FT_SERVICE_MULTIPLE_MASTERS_H <freetype/internal/services/svmm.h> -#define FT_SERVICE_OPENTYPE_VALIDATE_H <freetype/internal/services/svotval.h> -#define FT_SERVICE_PFR_H <freetype/internal/services/svpfr.h> -#define FT_SERVICE_POSTSCRIPT_CMAPS_H <freetype/internal/services/svpscmap.h> -#define FT_SERVICE_POSTSCRIPT_INFO_H <freetype/internal/services/svpsinfo.h> -#define FT_SERVICE_POSTSCRIPT_NAME_H <freetype/internal/services/svpostnm.h> -#define FT_SERVICE_PROPERTIES_H <freetype/internal/services/svprop.h> -#define FT_SERVICE_SFNT_H <freetype/internal/services/svsfnt.h> -#define FT_SERVICE_TRUETYPE_ENGINE_H <freetype/internal/services/svtteng.h> -#define FT_SERVICE_TRUETYPE_GLYF_H <freetype/internal/services/svttglyf.h> -#define FT_SERVICE_TT_CMAP_H <freetype/internal/services/svttcmap.h> -#define FT_SERVICE_WINFNT_H <freetype/internal/services/svwinfnt.h> - - /* */ - FT_END_HEADER #endif /* FTSERV_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftstream.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftstream.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftstream.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftstream.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Stream handling (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,8 +21,8 @@ #include <ft2build.h> -#include FT_SYSTEM_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/ftsystem.h> +#include <freetype/internal/ftobjs.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/fttrace.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/fttrace.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/fttrace.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/fttrace.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Tracing handling (specification only). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -49,6 +49,7 @@ FT_TRACE_DEF( sfdriver ) /* SFNT font driver (sfdriver.c) */ FT_TRACE_DEF( sfobjs ) /* SFNT object handler (sfobjs.c) */ FT_TRACE_DEF( sfwoff ) /* WOFF format handler (sfwoff.c) */ +FT_TRACE_DEF( sfwoff2 ) /* WOFF2 format handler (sfwoff2.c) */ FT_TRACE_DEF( ttbdf ) /* TrueType embedded BDF (ttbdf.c) */ FT_TRACE_DEF( ttcmap ) /* charmap handler (ttcmap.c) */ FT_TRACE_DEF( ttcolr ) /* glyph layer table (ttcolr.c) */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftvalid.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftvalid.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/ftvalid.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/ftvalid.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType validation support (specification). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,9 @@ #define FTVALID_H_ #include <ft2build.h> -#include FT_CONFIG_STANDARD_LIBRARY_H /* for ft_setjmp and ft_longjmp */ +#include FT_CONFIG_STANDARD_LIBRARY_H /* for ft_jmpbuf */ +#include "compiler-macros.h" FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/internal.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/internal.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/internal.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/internal.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,67 +0,0 @@ -/**************************************************************************** - * - * internal.h - * - * Internal header files (specification only). - * - * Copyright (C) 1996-2019 by - * David Turner, Robert Wilhelm, and Werner Lemberg. - * - * This file is part of the FreeType project, and may only be used, - * modified, and distributed under the terms of the FreeType project - * license, LICENSE.TXT. By continuing to use, modify, or distribute - * this file you indicate that you have read the license and - * understand and accept it fully. - * - */ - - - /************************************************************************** - * - * This file is automatically included by `ft2build.h`. Do not include it - * manually! - * - */ - - -#define FT_INTERNAL_OBJECTS_H <freetype/internal/ftobjs.h> -#define FT_INTERNAL_STREAM_H <freetype/internal/ftstream.h> -#define FT_INTERNAL_MEMORY_H <freetype/internal/ftmemory.h> -#define FT_INTERNAL_DEBUG_H <freetype/internal/ftdebug.h> -#define FT_INTERNAL_CALC_H <freetype/internal/ftcalc.h> -#define FT_INTERNAL_HASH_H <freetype/internal/fthash.h> -#define FT_INTERNAL_DRIVER_H <freetype/internal/ftdrv.h> -#define FT_INTERNAL_TRACE_H <freetype/internal/fttrace.h> -#define FT_INTERNAL_GLYPH_LOADER_H <freetype/internal/ftgloadr.h> -#define FT_INTERNAL_SFNT_H <freetype/internal/sfnt.h> -#define FT_INTERNAL_SERVICE_H <freetype/internal/ftserv.h> -#define FT_INTERNAL_RFORK_H <freetype/internal/ftrfork.h> -#define FT_INTERNAL_VALIDATE_H <freetype/internal/ftvalid.h> - -#define FT_INTERNAL_TRUETYPE_TYPES_H <freetype/internal/tttypes.h> -#define FT_INTERNAL_TYPE1_TYPES_H <freetype/internal/t1types.h> -#define FT_INTERNAL_WOFF_TYPES_H <freetype/internal/wofftypes.h> - -#define FT_INTERNAL_POSTSCRIPT_AUX_H <freetype/internal/psaux.h> -#define FT_INTERNAL_POSTSCRIPT_HINTS_H <freetype/internal/pshints.h> -#define FT_INTERNAL_POSTSCRIPT_PROPS_H <freetype/internal/ftpsprop.h> - -#define FT_INTERNAL_AUTOHINT_H <freetype/internal/autohint.h> - -#define FT_INTERNAL_CFF_TYPES_H <freetype/internal/cfftypes.h> -#define FT_INTERNAL_CFF_OBJECTS_TYPES_H <freetype/internal/cffotypes.h> - - -#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ - - /* We disable the warning `conditional expression is constant' here */ - /* in order to compile cleanly with the maximum level of warnings. */ - /* In particular, the warning complains about stuff like `while(0)' */ - /* which is very useful in macro definitions. There is no benefit */ - /* in having it enabled. */ -#pragma warning( disable : 4127 ) - -#endif /* _MSC_VER */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/psaux.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/psaux.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/psaux.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/psaux.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Auxiliary functions and data structures related to PostScript fonts * (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,14 +21,13 @@ #define PSAUX_H_ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_TYPE1_TYPES_H -#include FT_INTERNAL_HASH_H -#include FT_INTERNAL_TRUETYPE_TYPES_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_INTERNAL_CFF_TYPES_H -#include FT_INTERNAL_CFF_OBJECTS_TYPES_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/t1types.h> +#include <freetype/internal/fthash.h> +#include <freetype/internal/tttypes.h> +#include <freetype/internal/services/svpscmap.h> +#include <freetype/internal/cfftypes.h> +#include <freetype/internal/cffotypes.h> diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/pshints.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/pshints.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/pshints.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/pshints.h 2022-11-11 15:29:17.000000000 +0800 @@ -6,7 +6,7 @@ * recorders (specification only). These are used to support native * T1/T2 hints in the 'type1', 'cid', and 'cff' font drivers. * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -22,9 +22,8 @@ #define PSHINTS_H_ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_TYPE1_TABLES_H +#include <freetype/freetype.h> +#include <freetype/t1tables.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svbdf.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svbdf.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svbdf.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svbdf.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType BDF services (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,8 @@ #ifndef SVBDF_H_ #define SVBDF_H_ -#include FT_BDF_H -#include FT_INTERNAL_SERVICE_H +#include <freetype/ftbdf.h> +#include <freetype/internal/ftserv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svcfftl.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svcfftl.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svcfftl.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svcfftl.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType CFF tables loader service (specification). * - * Copyright (C) 2017-2019 by + * Copyright (C) 2017-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,8 @@ #ifndef SVCFFTL_H_ #define SVCFFTL_H_ -#include FT_INTERNAL_SERVICE_H -#include FT_INTERNAL_CFF_TYPES_H +#include <freetype/internal/ftserv.h> +#include <freetype/internal/cfftypes.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svcid.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svcid.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svcid.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svcid.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType CID font services (specification). * - * Copyright (C) 2007-2019 by + * Copyright (C) 2007-2020 by * Derek Clegg and Michael Toftdal. * * This file is part of the FreeType project, and may only be used, @@ -19,7 +19,7 @@ #ifndef SVCID_H_ #define SVCID_H_ -#include FT_INTERNAL_SERVICE_H +#include <freetype/internal/ftserv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svfntfmt.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svfntfmt.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svfntfmt.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svfntfmt.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType font format service (specification only). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,7 +19,7 @@ #ifndef SVFNTFMT_H_ #define SVFNTFMT_H_ -#include FT_INTERNAL_SERVICE_H +#include <freetype/internal/ftserv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svgldict.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svgldict.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svgldict.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svgldict.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType glyph dictionary services (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,7 +19,7 @@ #ifndef SVGLDICT_H_ #define SVGLDICT_H_ -#include FT_INTERNAL_SERVICE_H +#include <freetype/internal/ftserv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svgxval.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svgxval.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svgxval.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svgxval.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for validating TrueTypeGX/AAT tables (specification). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -28,8 +28,8 @@ #ifndef SVGXVAL_H_ #define SVGXVAL_H_ -#include FT_GX_VALIDATE_H -#include FT_INTERNAL_VALIDATE_H +#include <freetype/ftgxval.h> +#include <freetype/internal/ftvalid.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svkern.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svkern.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svkern.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svkern.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType Kerning service (specification). * - * Copyright (C) 2006-2019 by + * Copyright (C) 2006-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,8 @@ #ifndef SVKERN_H_ #define SVKERN_H_ -#include FT_INTERNAL_SERVICE_H -#include FT_TRUETYPE_TABLES_H +#include <freetype/internal/ftserv.h> +#include <freetype/tttables.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svmetric.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svmetric.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svmetric.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svmetric.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType services for metrics variations (specification). * - * Copyright (C) 2016-2019 by + * Copyright (C) 2016-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,7 +19,7 @@ #ifndef SVMETRIC_H_ #define SVMETRIC_H_ -#include FT_INTERNAL_SERVICE_H +#include <freetype/internal/ftserv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svmm.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svmm.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svmm.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svmm.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType Multiple Masters and GX var services (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,7 +19,7 @@ #ifndef SVMM_H_ #define SVMM_H_ -#include FT_INTERNAL_SERVICE_H +#include <freetype/internal/ftserv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svotval.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svotval.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svotval.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svotval.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType OpenType validation service (specification). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,8 @@ #ifndef SVOTVAL_H_ #define SVOTVAL_H_ -#include FT_OPENTYPE_VALIDATE_H -#include FT_INTERNAL_VALIDATE_H +#include <freetype/ftotval.h> +#include <freetype/internal/ftvalid.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpfr.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpfr.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpfr.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpfr.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Internal PFR service functions (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,8 @@ #ifndef SVPFR_H_ #define SVPFR_H_ -#include FT_PFR_H -#include FT_INTERNAL_SERVICE_H +#include <freetype/ftpfr.h> +#include <freetype/internal/ftserv.h> FT_BEGIN_HEADER @@ -56,7 +56,6 @@ }; - /* */ FT_END_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpostnm.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpostnm.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpostnm.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpostnm.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType PostScript name services (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,7 +19,7 @@ #ifndef SVPOSTNM_H_ #define SVPOSTNM_H_ -#include FT_INTERNAL_SERVICE_H +#include <freetype/internal/ftserv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svprop.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svprop.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svprop.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svprop.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType property service (specification). * - * Copyright (C) 2012-2019 by + * Copyright (C) 2012-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpscmap.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpscmap.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpscmap.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpscmap.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType PostScript charmap service (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,7 +19,7 @@ #ifndef SVPSCMAP_H_ #define SVPSCMAP_H_ -#include FT_INTERNAL_OBJECTS_H +#include <freetype/internal/ftobjs.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpsinfo.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpsinfo.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpsinfo.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svpsinfo.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType PostScript info service (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,8 @@ #ifndef SVPSINFO_H_ #define SVPSINFO_H_ -#include FT_INTERNAL_SERVICE_H -#include FT_INTERNAL_TYPE1_TYPES_H +#include <freetype/internal/ftserv.h> +#include <freetype/internal/t1types.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svsfnt.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svsfnt.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svsfnt.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svsfnt.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType SFNT table loading service (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,8 @@ #ifndef SVSFNT_H_ #define SVSFNT_H_ -#include FT_INTERNAL_SERVICE_H -#include FT_TRUETYPE_TABLES_H +#include <freetype/internal/ftserv.h> +#include <freetype/tttables.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svttcmap.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svttcmap.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svttcmap.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svttcmap.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType TrueType/sfnt cmap extra information service. * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * Masatake YAMATO, Redhat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -22,8 +22,8 @@ #ifndef SVTTCMAP_H_ #define SVTTCMAP_H_ -#include FT_INTERNAL_SERVICE_H -#include FT_TRUETYPE_TABLES_H +#include <freetype/internal/ftserv.h> +#include <freetype/tttables.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svtteng.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svtteng.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svtteng.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svtteng.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType TrueType engine query service (specification). * - * Copyright (C) 2006-2019 by + * Copyright (C) 2006-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,8 @@ #ifndef SVTTENG_H_ #define SVTTENG_H_ -#include FT_INTERNAL_SERVICE_H -#include FT_MODULE_H +#include <freetype/internal/ftserv.h> +#include <freetype/ftmodapi.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svttglyf.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svttglyf.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svttglyf.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svttglyf.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType TrueType glyph service. * - * Copyright (C) 2007-2019 by + * Copyright (C) 2007-2020 by * David Turner. * * This file is part of the FreeType project, and may only be used, @@ -18,8 +18,8 @@ #ifndef SVTTGLYF_H_ #define SVTTGLYF_H_ -#include FT_INTERNAL_SERVICE_H -#include FT_TRUETYPE_TABLES_H +#include <freetype/internal/ftserv.h> +#include <freetype/tttables.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svwinfnt.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svwinfnt.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svwinfnt.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/services/svwinfnt.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType Windows FNT/FONT service (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,8 @@ #ifndef SVWINFNT_H_ #define SVWINFNT_H_ -#include FT_INTERNAL_SERVICE_H -#include FT_WINFONTS_H +#include <freetype/internal/ftserv.h> +#include <freetype/ftwinfnt.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/sfnt.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/sfnt.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/sfnt.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/sfnt.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * High-level 'sfnt' driver interface (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,10 +20,9 @@ #define SFNT_H_ -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H -#include FT_INTERNAL_TRUETYPE_TYPES_H -#include FT_INTERNAL_WOFF_TYPES_H +#include <freetype/internal/ftdrv.h> +#include <freetype/internal/tttypes.h> +#include <freetype/internal/wofftypes.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/t1types.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/t1types.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/t1types.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/t1types.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Basic Type1/Type2 type definitions and interface (specification * only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,12 +21,11 @@ #define T1TYPES_H_ -#include <ft2build.h> -#include FT_TYPE1_TABLES_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H -#include FT_INTERNAL_SERVICE_H -#include FT_INTERNAL_HASH_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H +#include <freetype/t1tables.h> +#include <freetype/internal/pshints.h> +#include <freetype/internal/ftserv.h> +#include <freetype/internal/fthash.h> +#include <freetype/internal/services/svpscmap.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/tttypes.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/tttypes.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/tttypes.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/tttypes.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Basic SFNT/TrueType type definitions and interface (specification * only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,13 +21,12 @@ #define TTTYPES_H_ -#include <ft2build.h> -#include FT_TRUETYPE_TABLES_H -#include FT_INTERNAL_OBJECTS_H -#include FT_COLOR_H +#include <freetype/tttables.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/ftcolor.h> #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include FT_MULTIPLE_MASTERS_H +#include <freetype/ftmm.h> #endif diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/wofftypes.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/wofftypes.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/internal/wofftypes.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/internal/wofftypes.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Basic WOFF/WOFF2 type definitions and interface (specification * only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,9 +21,8 @@ #define WOFFTYPES_H_ -#include <ft2build.h> -#include FT_TRUETYPE_TABLES_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/tttables.h> +#include <freetype/internal/ftobjs.h> FT_BEGIN_HEADER @@ -104,6 +103,207 @@ } WOFF_TableRec, *WOFF_Table; + /************************************************************************** + * + * @struct: + * WOFF2_TtcFontRec + * + * @description: + * Metadata for a TTC font entry in WOFF2. + * + * @fields: + * flavor :: + * TTC font flavor. + * + * num_tables :: + * Number of tables in TTC, indicating number of elements in + * `table_indices`. + * + * table_indices :: + * Array of table indices for each TTC font. + */ + typedef struct WOFF2_TtcFontRec_ + { + FT_ULong flavor; + FT_UShort num_tables; + FT_UShort* table_indices; + + } WOFF2_TtcFontRec, *WOFF2_TtcFont; + + + /************************************************************************** + * + * @struct: + * WOFF2_HeaderRec + * + * @description: + * WOFF2 file format header. + * + * @fields: + * See + * + * https://www.w3.org/TR/WOFF2/#woff20Header + * + * @note: + * We don't care about the fields `reserved`, `majorVersion` and + * `minorVersion`, so they are not included. The `totalSfntSize` field + * does not necessarily represent the actual size of the uncompressed + * SFNT font stream, so that is used as a reference value instead. + */ + typedef struct WOFF2_HeaderRec_ + { + FT_ULong signature; + FT_ULong flavor; + FT_ULong length; + FT_UShort num_tables; + FT_ULong totalSfntSize; + FT_ULong totalCompressedSize; + FT_ULong metaOffset; + FT_ULong metaLength; + FT_ULong metaOrigLength; + FT_ULong privOffset; + FT_ULong privLength; + + FT_ULong uncompressed_size; /* uncompressed brotli stream size */ + FT_ULong compressed_offset; /* compressed stream offset */ + FT_ULong header_version; /* version of original TTC Header */ + FT_UShort num_fonts; /* number of fonts in TTC */ + FT_ULong actual_sfnt_size; /* actual size of sfnt stream */ + + WOFF2_TtcFont ttc_fonts; /* metadata for fonts in a TTC */ + + } WOFF2_HeaderRec, *WOFF2_Header; + + + /************************************************************************** + * + * @struct: + * WOFF2_TableRec + * + * @description: + * This structure describes a given table of a WOFF2 font. + * + * @fields: + * See + * + * https://www.w3.org/TR/WOFF2/#table_dir_format + */ + typedef struct WOFF2_TableRec_ + { + FT_Byte FlagByte; /* table type and flags */ + FT_ULong Tag; /* table file offset */ + FT_ULong dst_length; /* uncompressed table length */ + FT_ULong TransformLength; /* transformed length */ + + FT_ULong flags; /* calculated flags */ + FT_ULong src_offset; /* compressed table offset */ + FT_ULong src_length; /* compressed table length */ + FT_ULong dst_offset; /* uncompressed table offset */ + + } WOFF2_TableRec, *WOFF2_Table; + + + /************************************************************************** + * + * @struct: + * WOFF2_InfoRec + * + * @description: + * Metadata for WOFF2 font that may be required for reconstruction of + * sfnt tables. + * + * @fields: + * header_checksum :: + * Checksum of SFNT offset table. + * + * num_glyphs :: + * Number of glyphs in the font. + * + * num_hmetrics :: + * `numberOfHMetrics` field in the 'hhea' table. + * + * x_mins :: + * `xMin` values of glyph bounding box. + * + * glyf_table :: + * A pointer to the `glyf' table record. + * + * loca_table :: + * A pointer to the `loca' table record. + * + * head_table :: + * A pointer to the `head' table record. + */ + typedef struct WOFF2_InfoRec_ + { + FT_ULong header_checksum; + FT_UShort num_glyphs; + FT_UShort num_hmetrics; + FT_Short* x_mins; + + WOFF2_Table glyf_table; + WOFF2_Table loca_table; + WOFF2_Table head_table; + + } WOFF2_InfoRec, *WOFF2_Info; + + + /************************************************************************** + * + * @struct: + * WOFF2_SubstreamRec + * + * @description: + * This structure stores information about a substream in the transformed + * 'glyf' table in a WOFF2 stream. + * + * @fields: + * start :: + * Beginning of the substream relative to uncompressed table stream. + * + * offset :: + * Offset of the substream relative to uncompressed table stream. + * + * size :: + * Size of the substream. + */ + typedef struct WOFF2_SubstreamRec_ + { + FT_ULong start; + FT_ULong offset; + FT_ULong size; + + } WOFF2_SubstreamRec, *WOFF2_Substream; + + + /************************************************************************** + * + * @struct: + * WOFF2_PointRec + * + * @description: + * This structure stores information about a point in the transformed + * 'glyf' table in a WOFF2 stream. + * + * @fields: + * x :: + * x-coordinate of point. + * + * y :: + * y-coordinate of point. + * + * on_curve :: + * Set if point is on-curve. + */ + typedef struct WOFF2_PointRec_ + { + FT_Int x; + FT_Int y; + FT_Bool on_curve; + + } WOFF2_PointRec, *WOFF2_Point; + + FT_END_HEADER #endif /* WOFFTYPES_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/t1tables.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/t1tables.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/t1tables.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/t1tables.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Basic Type 1/Type 2 tables definitions and interface (specification * only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,8 +21,7 @@ #define T1TABLES_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ttnameid.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ttnameid.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ttnameid.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ttnameid.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType name ID definitions (specification only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,7 +20,6 @@ #define TTNAMEID_H_ -#include <ft2build.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/tttables.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/tttables.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/tttables.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/tttables.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Basic SFNT/TrueType tables definitions and interface * (specification only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,8 +21,7 @@ #define TTTABLES_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/tttags.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/tttags.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/tttags.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/tttags.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Tags for TrueType and OpenType tables (specification only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define TTAGS_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" @@ -107,6 +106,7 @@ #define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' ) #define TTAG_VVAR FT_MAKE_TAG( 'V', 'V', 'A', 'R' ) #define TTAG_wOFF FT_MAKE_TAG( 'w', 'O', 'F', 'F' ) +#define TTAG_wOF2 FT_MAKE_TAG( 'w', 'O', 'F', '2' ) /* used by "Keyboard.dfont" on legacy Mac OS X */ #define TTAG_0xA5kbd FT_MAKE_TAG( 0xA5, 'k', 'b', 'd' ) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ttunpat.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ttunpat.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/freetype/ttunpat.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/freetype/ttunpat.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,60 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttunpat.h */ -/* */ -/* Definitions for the unpatented TrueType hinting system */ -/* */ -/* Copyright 2003-2015 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* Written by Graham Asher <graham.asher@btinternet.com> */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTUNPAT_H__ -#define __TTUNPAT_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************** - * - * @constant: - * FT_PARAM_TAG_UNPATENTED_HINTING - * - * @description: - * A constant used as the tag of an @FT_Parameter structure to indicate - * that unpatented methods only should be used by the TrueType bytecode - * interpreter for a typeface opened by @FT_Open_Face. - * - */ -#define FT_PARAM_TAG_UNPATENTED_HINTING FT_MAKE_TAG( 'u', 'n', 'p', 'a' ) - - /* */ - - -FT_END_HEADER - - -#endif /* __TTUNPAT_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/ft2build.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/ft2build.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/include/ft2build.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/include/ft2build.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType 2 build and setup macros. * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -18,16 +18,14 @@ /************************************************************************** * - * This is the 'entry point' for FreeType header file inclusions. It is - * the only header file which should be included directly; all other - * FreeType header files should be accessed with macro names (after - * including `ft2build.h`). + * This is the 'entry point' for FreeType header file inclusions, to be + * loaded before all other header files. * * A typical example is * * ``` * #include <ft2build.h> - * #include FT_FREETYPE_H + * #include <freetype/freetype.h> * ``` * */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/qt_attribution.json qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/qt_attribution.json --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/qt_attribution.json 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/qt_attribution.json 2022-11-11 15:29:17.000000000 +0800 @@ -7,12 +7,12 @@ "Description": "FreeType is a freely available software library to render fonts.", "Homepage": "http://www.freetype.org", - "Version": "2.10.1", + "Version": "2.10.4", "License": "Freetype Project License or GNU General Public License v2.0 only", "LicenseId": "FTL OR GPL-2.0", "LicenseFile": "LICENSE.txt", - "Copyright": "Copyright 2006-2015 by David Turner, Robert Wilhelm, and Werner Lemberg." + "Copyright": "Copyright 2006-2020 by David Turner, Robert Wilhelm, and Werner Lemberg." }, { "Id": "freetype-zlib", diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,19 +0,0 @@ -# FreeType 2 src Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) ; - -for xx in $(FT2_COMPONENTS) -{ - SubInclude FT2_TOP $(FT2_SRC_DIR) $(xx) ; -} - -# end of src Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,53 +0,0 @@ -# FreeType 2 src/autofit Jamfile -# -# Copyright (C) 2003-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP src autofit ; - -{ - local _sources ; - - # define FT2_AUTOFIT2 to enable experimental latin hinter replacement - if $(FT2_AUTOFIT2) - { - CCFLAGS += FT_OPTION_AUTOFIT2 ; - } - if $(FT2_MULTI) - { - _sources = afangles - afblue - afcjk - afdummy - afglobal - afhints - afindic - aflatin - afloader - afmodule - afpic - afranges - afshaper - afwarp - ; - - if $(FT2_AUTOFIT2) - { - _sources += aflatin2 ; - } - } - else - { - _sources = autofit ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/autofit Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afangles.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afangles.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afangles.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afangles.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Routines used to compute vector angles with limited accuracy * and very high speed. It also contains sorting routines (body). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afblue.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afblue.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afblue.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afblue.c 2022-11-11 15:29:17.000000000 +0800 @@ -7,7 +7,7 @@ * * Auto-fitter data for blue strings (body). * - * Copyright (C) 2013-2019 by + * Copyright (C) 2013-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -134,7 +134,7 @@ '\0', '\xF0', '\x90', '\x90', '\xA8', ' ', '\xF0', '\x90', '\x90', '\xAA', ' ', '\xF0', '\x90', '\x90', '\xAC', ' ', '\xF0', '\x90', '\x90', '\xBF', ' ', '\xF0', '\x90', '\x91', '\x83', /* 𐐨 𐐪 𐐬 𐐿 𐑃 */ '\0', - '\xE0', '\xA4', '\x95', ' ', '\xE0', '\xA4', '\xAE', ' ', '\xE0', '\xA4', '\x85', ' ', '\xE0', '\xA4', '\x86', ' ', '\xE0', '\xA4', '\xA5', ' ', '\xE0', '\xA4', '\xA7', ' ', '\xE0', '\xA4', '\xAD', ' ', '\xE0', '\xA4', '\xB6', /* क म अ आ थ ध भ श */ + '\xE0', '\xA4', '\x95', ' ', '\xE0', '\xA4', '\xA8', ' ', '\xE0', '\xA4', '\xAE', ' ', '\xE0', '\xA4', '\x89', ' ', '\xE0', '\xA4', '\x9B', ' ', '\xE0', '\xA4', '\x9F', ' ', '\xE0', '\xA4', '\xA0', ' ', '\xE0', '\xA4', '\xA1', /* क न म उ छ ट ठ ड */ '\0', '\xE0', '\xA4', '\x88', ' ', '\xE0', '\xA4', '\x90', ' ', '\xE0', '\xA4', '\x93', ' ', '\xE0', '\xA4', '\x94', ' ', '\xE0', '\xA4', '\xBF', ' ', '\xE0', '\xA5', '\x80', ' ', '\xE0', '\xA5', '\x8B', ' ', '\xE0', '\xA5', '\x8C', /* ई ऐ ओ औ ि ी ो ौ */ '\0', @@ -296,6 +296,20 @@ '\0', '\xE0', '\xB4', '\x9F', ' ', '\xE0', '\xB4', '\xA0', ' ', '\xE0', '\xB4', '\xA7', ' ', '\xE0', '\xB4', '\xB6', ' ', '\xE0', '\xB4', '\x98', ' ', '\xE0', '\xB4', '\x9A', ' ', '\xE0', '\xB4', '\xA5', ' ', '\xE0', '\xB4', '\xB2', /* ട ഠ ധ ശ ഘ ച ഥ ല */ '\0', + '\xF0', '\x96', '\xB9', '\x80', ' ', '\xF0', '\x96', '\xB9', '\x81', ' ', '\xF0', '\x96', '\xB9', '\x82', ' ', '\xF0', '\x96', '\xB9', '\x83', ' ', '\xF0', '\x96', '\xB9', '\x8F', ' ', '\xF0', '\x96', '\xB9', '\x9A', ' ', '\xF0', '\x96', '\xB9', '\x9F', /* 𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹟 */ + '\0', + '\xF0', '\x96', '\xB9', '\x80', ' ', '\xF0', '\x96', '\xB9', '\x81', ' ', '\xF0', '\x96', '\xB9', '\x82', ' ', '\xF0', '\x96', '\xB9', '\x83', ' ', '\xF0', '\x96', '\xB9', '\x8F', ' ', '\xF0', '\x96', '\xB9', '\x9A', ' ', '\xF0', '\x96', '\xB9', '\x92', ' ', '\xF0', '\x96', '\xB9', '\x93', /* 𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹒 𖹓 */ + '\0', + '\xF0', '\x96', '\xB9', '\xA4', ' ', '\xF0', '\x96', '\xB9', '\xAC', ' ', '\xF0', '\x96', '\xB9', '\xA7', ' ', '\xF0', '\x96', '\xB9', '\xB4', ' ', '\xF0', '\x96', '\xB9', '\xB6', ' ', '\xF0', '\x96', '\xB9', '\xBE', /* 𖹤 𖹬 𖹧 𖹴 𖹶 𖹾 */ + '\0', + '\xF0', '\x96', '\xB9', '\xA0', ' ', '\xF0', '\x96', '\xB9', '\xA1', ' ', '\xF0', '\x96', '\xB9', '\xA2', ' ', '\xF0', '\x96', '\xB9', '\xB9', ' ', '\xF0', '\x96', '\xB9', '\xB3', ' ', '\xF0', '\x96', '\xB9', '\xAE', /* 𖹠 𖹡 𖹢 𖹹 𖹳 𖹮 */ + '\0', + '\xF0', '\x96', '\xB9', '\xA0', ' ', '\xF0', '\x96', '\xB9', '\xA1', ' ', '\xF0', '\x96', '\xB9', '\xA2', ' ', '\xF0', '\x96', '\xB9', '\xB3', ' ', '\xF0', '\x96', '\xB9', '\xAD', ' ', '\xF0', '\x96', '\xB9', '\xBD', /* 𖹠 𖹡 𖹢 𖹳 𖹭 𖹽 */ + '\0', + '\xF0', '\x96', '\xB9', '\xA5', ' ', '\xF0', '\x96', '\xB9', '\xA8', ' ', '\xF0', '\x96', '\xB9', '\xA9', /* 𖹥 𖹨 𖹩 */ + '\0', + '\xF0', '\x96', '\xBA', '\x80', ' ', '\xF0', '\x96', '\xBA', '\x85', ' ', '\xF0', '\x96', '\xBA', '\x88', ' ', '\xF0', '\x96', '\xBA', '\x84', ' ', '\xF0', '\x96', '\xBA', '\x8D', /* 𖺀 𖺅 𖺈 𖺄 𖺍 */ + '\0', '\xE1', '\xA0', '\xB3', ' ', '\xE1', '\xA0', '\xB4', ' ', '\xE1', '\xA0', '\xB6', ' ', '\xE1', '\xA0', '\xBD', ' ', '\xE1', '\xA1', '\x82', ' ', '\xE1', '\xA1', '\x8A', ' ', '\xE2', '\x80', '\x8D', '\xE1', '\xA1', '\xA1', '\xE2', '\x80', '\x8D', ' ', '\xE2', '\x80', '\x8D', '\xE1', '\xA1', '\xB3', '\xE2', '\x80', '\x8D', /* ᠳ ᠴ ᠶ ᠽ ᡂ ᡊ ᡡ ᡳ */ '\0', '\xE1', '\xA1', '\x83', /* ᡃ */ @@ -340,6 +354,12 @@ '\0', '\xF0', '\x90', '\x92', '\x80', ' ', '\xF0', '\x90', '\x92', '\x82', ' ', '\xF0', '\x90', '\x92', '\x86', ' ', '\xF0', '\x90', '\x92', '\x88', ' ', '\xF0', '\x90', '\x92', '\x8A', ' ', '\xF0', '\x90', '\x92', '\x92', ' ', '\xF0', '\x90', '\x92', '\xA0', ' ', '\xF0', '\x90', '\x92', '\xA9', /* 𐒀 𐒂 𐒆 𐒈 𐒊 𐒒 𐒠 𐒩 */ '\0', + '\xF0', '\x90', '\xB4', '\x83', ' ', '\xF0', '\x90', '\xB4', '\x80', ' ', '\xF0', '\x90', '\xB4', '\x86', ' ', '\xF0', '\x90', '\xB4', '\x96', ' ', '\xF0', '\x90', '\xB4', '\x95', /* 𐴃 𐴀 𐴆 𐴖 𐴕 */ + '\0', + '\xF0', '\x90', '\xB4', '\x94', ' ', '\xF0', '\x90', '\xB4', '\x96', ' ', '\xF0', '\x90', '\xB4', '\x95', ' ', '\xF0', '\x90', '\xB4', '\x91', ' ', '\xF0', '\x90', '\xB4', '\x90', /* 𐴔 𐴖 𐴕 𐴑 𐴐 */ + '\0', + '\xD9', '\x80', /* ـ */ + '\0', '\xEA', '\xA2', '\x9C', ' ', '\xEA', '\xA2', '\x9E', ' ', '\xEA', '\xA2', '\xB3', ' ', '\xEA', '\xA2', '\x82', ' ', '\xEA', '\xA2', '\x96', ' ', '\xEA', '\xA2', '\x92', ' ', '\xEA', '\xA2', '\x9D', ' ', '\xEA', '\xA2', '\x9B', /* ꢜ ꢞ ꢳ ꢂ ꢖ ꢒ ꢝ ꢛ */ '\0', '\xEA', '\xA2', '\x82', ' ', '\xEA', '\xA2', '\xA8', ' ', '\xEA', '\xA2', '\xBA', ' ', '\xEA', '\xA2', '\xA4', ' ', '\xEA', '\xA2', '\x8E', /* ꢂ ꢨ ꢺ ꢤ ꢎ */ @@ -488,14 +508,14 @@ { AF_BLUE_STRING_CHAKMA_BOTTOM, 0 }, { AF_BLUE_STRING_CHAKMA_DESCENDER, 0 }, { AF_BLUE_STRING_MAX, 0 }, - { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, - { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM, 0 }, - { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP | - AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, - { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM, 0 }, - { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, - { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM, 0 }, - { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM, 0 }, + { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, + { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM, 0 }, + { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM, 0 }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_CARIAN_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_CARIAN_BOTTOM, 0 }, { AF_BLUE_STRING_MAX, 0 }, @@ -595,6 +615,9 @@ { AF_BLUE_STRING_HEBREW_BOTTOM, 0 }, { AF_BLUE_STRING_HEBREW_DESCENDER, 0 }, { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_KANNADA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_KANNADA_BOTTOM, 0 }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_KAYAH_LI_TOP, AF_BLUE_PROPERTY_LATIN_TOP | AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, { AF_BLUE_STRING_KAYAH_LI_BOTTOM, 0 }, @@ -613,9 +636,6 @@ AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, { AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM, 0 }, { AF_BLUE_STRING_MAX, 0 }, - { AF_BLUE_STRING_KANNADA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, - { AF_BLUE_STRING_KANNADA_BOTTOM, 0 }, - { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_LAO_TOP, AF_BLUE_PROPERTY_LATIN_TOP | AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, { AF_BLUE_STRING_LAO_BOTTOM, 0 }, @@ -653,6 +673,15 @@ { AF_BLUE_STRING_MALAYALAM_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_MALAYALAM_BOTTOM, 0 }, { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM, 0 }, + { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, + { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM, 0 }, + { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER, 0 }, + { AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_MONGOLIAN_TOP_BASE, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE, 0 }, { AF_BLUE_STRING_MAX, 0 }, @@ -687,6 +716,10 @@ { AF_BLUE_STRING_OSMANYA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_OSMANYA_BOTTOM, 0 }, { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_ROHINGYA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_ROHINGYA_BOTTOM, 0 }, + { AF_BLUE_STRING_ROHINGYA_JOIN, AF_BLUE_PROPERTY_LATIN_NEUTRAL }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_SAURASHTRA_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_SAURASHTRA_BOTTOM, 0 }, { AF_BLUE_STRING_MAX, 0 }, @@ -714,9 +747,6 @@ { AF_BLUE_STRING_TELUGU_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_TELUGU_BOTTOM, 0 }, { AF_BLUE_STRING_MAX, 0 }, - { AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP }, - { AF_BLUE_STRING_TIFINAGH, 0 }, - { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_THAI_TOP, AF_BLUE_PROPERTY_LATIN_TOP | AF_BLUE_PROPERTY_LATIN_X_HEIGHT }, { AF_BLUE_STRING_THAI_BOTTOM, 0 }, @@ -726,6 +756,9 @@ { AF_BLUE_STRING_THAI_LARGE_DESCENDER, 0 }, { AF_BLUE_STRING_THAI_DIGIT_TOP, 0 }, { AF_BLUE_STRING_MAX, 0 }, + { AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP }, + { AF_BLUE_STRING_TIFINAGH, 0 }, + { AF_BLUE_STRING_MAX, 0 }, { AF_BLUE_STRING_VAI_TOP, AF_BLUE_PROPERTY_LATIN_TOP }, { AF_BLUE_STRING_VAI_BOTTOM, 0 }, { AF_BLUE_STRING_MAX, 0 }, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afblue.cin qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afblue.cin --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afblue.cin 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afblue.cin 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter data for blue strings (body). * - * Copyright (C) 2013-2019 by + * Copyright (C) 2013-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afblue.dat qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afblue.dat --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afblue.dat 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afblue.dat 2022-11-11 15:29:17.000000000 +0800 @@ -2,7 +2,7 @@ // // Auto-fitter data for blue strings. // -// Copyright (C) 2013-2019 by +// Copyright (C) 2013-2020 by // David Turner, Robert Wilhelm, and Werner Lemberg. // // This file is part of the FreeType project, and may only be used, @@ -203,7 +203,7 @@ "𐐨 𐐪 𐐬 𐐿 𐑃" AF_BLUE_STRING_DEVANAGARI_BASE - "क म अ आ थ ध भ श" + "क न म उ छ ट ठ ड" AF_BLUE_STRING_DEVANAGARI_TOP "ई ऐ ओ औ ि ी ो ौ" // note that some fonts have extreme variation in the height of the @@ -392,6 +392,21 @@ AF_BLUE_STRING_MALAYALAM_BOTTOM "ട ഠ ധ ശ ഘ ച ഥ ല" + AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP + "𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹟" + AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM + "𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹒 𖹓" + AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP + "𖹤 𖹬 𖹧 𖹴 𖹶 𖹾" + AF_BLUE_STRING_MEDEFAIDRIN_SMALL_TOP + "𖹠 𖹡 𖹢 𖹹 𖹳 𖹮" + AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM + "𖹠 𖹡 𖹢 𖹳 𖹭 𖹽" + AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER + "𖹥 𖹨 𖹩" + AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP + "𖺀 𖺅 𖺈 𖺄 𖺍" + AF_BLUE_STRING_MONGOLIAN_TOP_BASE "ᠳ ᠴ ᠶ ᠽ ᡂ ᡊ ᡡ ᡳ" AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE @@ -443,6 +458,13 @@ AF_BLUE_STRING_OSMANYA_BOTTOM "𐒀 𐒂 𐒆 𐒈 𐒊 𐒒 𐒠 𐒩" + AF_BLUE_STRING_ROHINGYA_TOP + "𐴃 𐴀 𐴆 𐴖 𐴕" + AF_BLUE_STRING_ROHINGYA_BOTTOM + "𐴔 𐴖 𐴕 𐴑 𐴐" + AF_BLUE_STRING_ROHINGYA_JOIN + "ـ" + AF_BLUE_STRING_SAURASHTRA_TOP "ꢜ ꢞ ꢳ ꢂ ꢖ ꢒ ꢝ ꢛ" AF_BLUE_STRING_SAURASHTRA_BOTTOM @@ -734,14 +756,14 @@ { AF_BLUE_STRING_MAX, 0 } AF_BLUE_STRINGSET_CANS - { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP, AF_BLUE_PROPERTY_LATIN_TOP } - { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM, 0 } - { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP | - AF_BLUE_PROPERTY_LATIN_X_HEIGHT } - { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM, 0 } - { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP, AF_BLUE_PROPERTY_LATIN_TOP } - { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM, 0 } - { AF_BLUE_STRING_MAX, 0 } + { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM, 0 } + { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT } + { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM, 0 } + { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM, 0 } + { AF_BLUE_STRING_MAX, 0 } AF_BLUE_STRINGSET_CARI { AF_BLUE_STRING_CARIAN_TOP, AF_BLUE_PROPERTY_LATIN_TOP } @@ -874,6 +896,11 @@ { AF_BLUE_STRING_HEBREW_DESCENDER, 0 } { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_KNDA + { AF_BLUE_STRING_KANNADA_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_KANNADA_BOTTOM, 0 } + { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_KALI { AF_BLUE_STRING_KAYAH_LI_TOP, AF_BLUE_PROPERTY_LATIN_TOP | AF_BLUE_PROPERTY_LATIN_X_HEIGHT } @@ -898,11 +925,6 @@ { AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM, 0 } { AF_BLUE_STRING_MAX, 0 } - AF_BLUE_STRINGSET_KNDA - { AF_BLUE_STRING_KANNADA_TOP, AF_BLUE_PROPERTY_LATIN_TOP } - { AF_BLUE_STRING_KANNADA_BOTTOM, 0 } - { AF_BLUE_STRING_MAX, 0 } - AF_BLUE_STRINGSET_LAO { AF_BLUE_STRING_LAO_TOP, AF_BLUE_PROPERTY_LATIN_TOP | AF_BLUE_PROPERTY_LATIN_X_HEIGHT } @@ -952,6 +974,17 @@ { AF_BLUE_STRING_MALAYALAM_BOTTOM, 0 } { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_MEDF + { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM, 0 } + { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_TOP, AF_BLUE_PROPERTY_LATIN_TOP | + AF_BLUE_PROPERTY_LATIN_X_HEIGHT } + { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM, 0 } + { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER, 0 } + { AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_MONG { AF_BLUE_STRING_MONGOLIAN_TOP_BASE, AF_BLUE_PROPERTY_LATIN_TOP } { AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE, 0 } @@ -1002,6 +1035,12 @@ { AF_BLUE_STRING_OSMANYA_BOTTOM, 0 } { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_ROHG + { AF_BLUE_STRING_ROHINGYA_TOP, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_ROHINGYA_BOTTOM, 0 } + { AF_BLUE_STRING_ROHINGYA_JOIN, AF_BLUE_PROPERTY_LATIN_NEUTRAL } + { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_SAUR { AF_BLUE_STRING_SAURASHTRA_TOP, AF_BLUE_PROPERTY_LATIN_TOP } { AF_BLUE_STRING_SAURASHTRA_BOTTOM, 0 } @@ -1043,11 +1082,6 @@ { AF_BLUE_STRING_TELUGU_BOTTOM, 0 } { AF_BLUE_STRING_MAX, 0 } - AF_BLUE_STRINGSET_TFNG - { AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP } - { AF_BLUE_STRING_TIFINAGH, 0 } - { AF_BLUE_STRING_MAX, 0 } - AF_BLUE_STRINGSET_THAI { AF_BLUE_STRING_THAI_TOP, AF_BLUE_PROPERTY_LATIN_TOP | AF_BLUE_PROPERTY_LATIN_X_HEIGHT } @@ -1059,6 +1093,11 @@ { AF_BLUE_STRING_THAI_DIGIT_TOP, 0 } { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_TFNG + { AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP } + { AF_BLUE_STRING_TIFINAGH, 0 } + { AF_BLUE_STRING_MAX, 0 } + AF_BLUE_STRINGSET_VAII { AF_BLUE_STRING_VAI_TOP, AF_BLUE_PROPERTY_LATIN_TOP } { AF_BLUE_STRING_VAI_BOTTOM, 0 } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afblue.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afblue.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afblue.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afblue.h 2022-11-11 15:29:17.000000000 +0800 @@ -7,7 +7,7 @@ * * Auto-fitter data for blue strings (specification). * - * Copyright (C) 2013-2019 by + * Copyright (C) 2013-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -212,58 +212,68 @@ AF_BLUE_STRING_LISU_BOTTOM = 3506, AF_BLUE_STRING_MALAYALAM_TOP = 3538, AF_BLUE_STRING_MALAYALAM_BOTTOM = 3582, - AF_BLUE_STRING_MONGOLIAN_TOP_BASE = 3614, - AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE = 3658, - AF_BLUE_STRING_MYANMAR_TOP = 3662, - AF_BLUE_STRING_MYANMAR_BOTTOM = 3694, - AF_BLUE_STRING_MYANMAR_ASCENDER = 3726, - AF_BLUE_STRING_MYANMAR_DESCENDER = 3754, - AF_BLUE_STRING_NKO_TOP = 3786, - AF_BLUE_STRING_NKO_BOTTOM = 3810, - AF_BLUE_STRING_NKO_SMALL_TOP = 3825, - AF_BLUE_STRING_NKO_SMALL_BOTTOM = 3834, - AF_BLUE_STRING_OL_CHIKI = 3846, - AF_BLUE_STRING_OLD_TURKIC_TOP = 3870, - AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 3885, - AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 3905, - AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 3945, - AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 3975, - AF_BLUE_STRING_OSAGE_SMALL_TOP = 3990, - AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 4030, - AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 4070, - AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 4095, - AF_BLUE_STRING_OSMANYA_TOP = 4110, - AF_BLUE_STRING_OSMANYA_BOTTOM = 4150, - AF_BLUE_STRING_SAURASHTRA_TOP = 4190, - AF_BLUE_STRING_SAURASHTRA_BOTTOM = 4222, - AF_BLUE_STRING_SHAVIAN_TOP = 4242, - AF_BLUE_STRING_SHAVIAN_BOTTOM = 4252, - AF_BLUE_STRING_SHAVIAN_DESCENDER = 4277, - AF_BLUE_STRING_SHAVIAN_SMALL_TOP = 4287, - AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM = 4322, - AF_BLUE_STRING_SINHALA_TOP = 4337, - AF_BLUE_STRING_SINHALA_BOTTOM = 4369, - AF_BLUE_STRING_SINHALA_DESCENDER = 4401, - AF_BLUE_STRING_SUNDANESE_TOP = 4445, - AF_BLUE_STRING_SUNDANESE_BOTTOM = 4469, - AF_BLUE_STRING_SUNDANESE_DESCENDER = 4501, - AF_BLUE_STRING_TAI_VIET_TOP = 4509, - AF_BLUE_STRING_TAI_VIET_BOTTOM = 4529, - AF_BLUE_STRING_TAMIL_TOP = 4541, - AF_BLUE_STRING_TAMIL_BOTTOM = 4573, - AF_BLUE_STRING_TELUGU_TOP = 4605, - AF_BLUE_STRING_TELUGU_BOTTOM = 4633, - AF_BLUE_STRING_THAI_TOP = 4661, - AF_BLUE_STRING_THAI_BOTTOM = 4685, - AF_BLUE_STRING_THAI_ASCENDER = 4713, - AF_BLUE_STRING_THAI_LARGE_ASCENDER = 4725, - AF_BLUE_STRING_THAI_DESCENDER = 4737, - AF_BLUE_STRING_THAI_LARGE_DESCENDER = 4753, - AF_BLUE_STRING_THAI_DIGIT_TOP = 4761, - AF_BLUE_STRING_TIFINAGH = 4773, - AF_BLUE_STRING_VAI_TOP = 4805, - AF_BLUE_STRING_VAI_BOTTOM = 4837, - af_blue_1_1 = 4868, + AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP = 3614, + AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM = 3649, + AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP = 3689, + AF_BLUE_STRING_MEDEFAIDRIN_SMALL_TOP = 3719, + AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM = 3749, + AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER = 3779, + AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP = 3794, + AF_BLUE_STRING_MONGOLIAN_TOP_BASE = 3819, + AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE = 3863, + AF_BLUE_STRING_MYANMAR_TOP = 3867, + AF_BLUE_STRING_MYANMAR_BOTTOM = 3899, + AF_BLUE_STRING_MYANMAR_ASCENDER = 3931, + AF_BLUE_STRING_MYANMAR_DESCENDER = 3959, + AF_BLUE_STRING_NKO_TOP = 3991, + AF_BLUE_STRING_NKO_BOTTOM = 4015, + AF_BLUE_STRING_NKO_SMALL_TOP = 4030, + AF_BLUE_STRING_NKO_SMALL_BOTTOM = 4039, + AF_BLUE_STRING_OL_CHIKI = 4051, + AF_BLUE_STRING_OLD_TURKIC_TOP = 4075, + AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 4090, + AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 4110, + AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 4150, + AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 4180, + AF_BLUE_STRING_OSAGE_SMALL_TOP = 4195, + AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 4235, + AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 4275, + AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 4300, + AF_BLUE_STRING_OSMANYA_TOP = 4315, + AF_BLUE_STRING_OSMANYA_BOTTOM = 4355, + AF_BLUE_STRING_ROHINGYA_TOP = 4395, + AF_BLUE_STRING_ROHINGYA_BOTTOM = 4420, + AF_BLUE_STRING_ROHINGYA_JOIN = 4445, + AF_BLUE_STRING_SAURASHTRA_TOP = 4448, + AF_BLUE_STRING_SAURASHTRA_BOTTOM = 4480, + AF_BLUE_STRING_SHAVIAN_TOP = 4500, + AF_BLUE_STRING_SHAVIAN_BOTTOM = 4510, + AF_BLUE_STRING_SHAVIAN_DESCENDER = 4535, + AF_BLUE_STRING_SHAVIAN_SMALL_TOP = 4545, + AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM = 4580, + AF_BLUE_STRING_SINHALA_TOP = 4595, + AF_BLUE_STRING_SINHALA_BOTTOM = 4627, + AF_BLUE_STRING_SINHALA_DESCENDER = 4659, + AF_BLUE_STRING_SUNDANESE_TOP = 4703, + AF_BLUE_STRING_SUNDANESE_BOTTOM = 4727, + AF_BLUE_STRING_SUNDANESE_DESCENDER = 4759, + AF_BLUE_STRING_TAI_VIET_TOP = 4767, + AF_BLUE_STRING_TAI_VIET_BOTTOM = 4787, + AF_BLUE_STRING_TAMIL_TOP = 4799, + AF_BLUE_STRING_TAMIL_BOTTOM = 4831, + AF_BLUE_STRING_TELUGU_TOP = 4863, + AF_BLUE_STRING_TELUGU_BOTTOM = 4891, + AF_BLUE_STRING_THAI_TOP = 4919, + AF_BLUE_STRING_THAI_BOTTOM = 4943, + AF_BLUE_STRING_THAI_ASCENDER = 4971, + AF_BLUE_STRING_THAI_LARGE_ASCENDER = 4983, + AF_BLUE_STRING_THAI_DESCENDER = 4995, + AF_BLUE_STRING_THAI_LARGE_DESCENDER = 5011, + AF_BLUE_STRING_THAI_DIGIT_TOP = 5019, + AF_BLUE_STRING_TIFINAGH = 5031, + AF_BLUE_STRING_VAI_TOP = 5063, + AF_BLUE_STRING_VAI_BOTTOM = 5095, + af_blue_1_1 = 5126, #ifdef AF_CONFIG_OPTION_CJK AF_BLUE_STRING_CJK_TOP = af_blue_1_1 + 1, AF_BLUE_STRING_CJK_BOTTOM = af_blue_1_1 + 203, @@ -347,35 +357,37 @@ AF_BLUE_STRINGSET_GUJR = 112, AF_BLUE_STRINGSET_GURU = 118, AF_BLUE_STRINGSET_HEBR = 124, - AF_BLUE_STRINGSET_KALI = 128, - AF_BLUE_STRINGSET_KHMR = 134, - AF_BLUE_STRINGSET_KHMS = 140, - AF_BLUE_STRINGSET_KNDA = 143, + AF_BLUE_STRINGSET_KNDA = 128, + AF_BLUE_STRINGSET_KALI = 131, + AF_BLUE_STRINGSET_KHMR = 137, + AF_BLUE_STRINGSET_KHMS = 143, AF_BLUE_STRINGSET_LAO = 146, AF_BLUE_STRINGSET_LATN = 152, AF_BLUE_STRINGSET_LATB = 159, AF_BLUE_STRINGSET_LATP = 166, AF_BLUE_STRINGSET_LISU = 173, AF_BLUE_STRINGSET_MLYM = 176, - AF_BLUE_STRINGSET_MONG = 179, - AF_BLUE_STRINGSET_MYMR = 182, - AF_BLUE_STRINGSET_NKOO = 187, - AF_BLUE_STRINGSET_NONE = 192, - AF_BLUE_STRINGSET_OLCK = 193, - AF_BLUE_STRINGSET_ORKH = 196, - AF_BLUE_STRINGSET_OSGE = 199, - AF_BLUE_STRINGSET_OSMA = 207, - AF_BLUE_STRINGSET_SAUR = 210, - AF_BLUE_STRINGSET_SHAW = 213, - AF_BLUE_STRINGSET_SINH = 219, - AF_BLUE_STRINGSET_SUND = 223, - AF_BLUE_STRINGSET_TAML = 227, - AF_BLUE_STRINGSET_TAVT = 230, - AF_BLUE_STRINGSET_TELU = 233, - AF_BLUE_STRINGSET_TFNG = 236, - AF_BLUE_STRINGSET_THAI = 239, - AF_BLUE_STRINGSET_VAII = 247, - af_blue_2_1 = 250, + AF_BLUE_STRINGSET_MEDF = 179, + AF_BLUE_STRINGSET_MONG = 187, + AF_BLUE_STRINGSET_MYMR = 190, + AF_BLUE_STRINGSET_NKOO = 195, + AF_BLUE_STRINGSET_NONE = 200, + AF_BLUE_STRINGSET_OLCK = 201, + AF_BLUE_STRINGSET_ORKH = 204, + AF_BLUE_STRINGSET_OSGE = 207, + AF_BLUE_STRINGSET_OSMA = 215, + AF_BLUE_STRINGSET_ROHG = 218, + AF_BLUE_STRINGSET_SAUR = 222, + AF_BLUE_STRINGSET_SHAW = 225, + AF_BLUE_STRINGSET_SINH = 231, + AF_BLUE_STRINGSET_SUND = 235, + AF_BLUE_STRINGSET_TAML = 239, + AF_BLUE_STRINGSET_TAVT = 242, + AF_BLUE_STRINGSET_TELU = 245, + AF_BLUE_STRINGSET_THAI = 248, + AF_BLUE_STRINGSET_TFNG = 256, + AF_BLUE_STRINGSET_VAII = 259, + af_blue_2_1 = 262, #ifdef AF_CONFIG_OPTION_CJK AF_BLUE_STRINGSET_HANI = af_blue_2_1 + 0, af_blue_2_1_1 = af_blue_2_1 + 2, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afblue.hin qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afblue.hin --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afblue.hin 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afblue.hin 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter data for blue strings (specification). * - * Copyright (C) 2013-2019 by + * Copyright (C) 2013-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afcjk.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afcjk.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afcjk.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afcjk.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter hinting routines for CJK writing system (body). * - * Copyright (C) 2006-2019 by + * Copyright (C) 2006-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -22,9 +22,8 @@ * */ -#include <ft2build.h> -#include FT_ADVANCES_H -#include FT_INTERNAL_DEBUG_H +#include <freetype/ftadvanc.h> +#include <freetype/internal/ftdebug.h> #include "afglobal.h" #include "aflatin.h" @@ -158,7 +157,7 @@ if ( !glyph_index ) goto Exit; - FT_TRACE5(( "standard character: U+%04lX (glyph index %d)\n", + FT_TRACE5(( "standard character: U+%04lX (glyph index %ld)\n", ch, glyph_index )); error = FT_Load_Glyph( face, glyph_index, FT_LOAD_NO_SCALE ); @@ -261,9 +260,9 @@ dim == AF_DIMENSION_VERT ? "horizontal" : "vertical" )); - FT_TRACE5(( " %d (standard)", axis->standard_width )); + FT_TRACE5(( " %ld (standard)", axis->standard_width )); for ( i = 1; i < axis->width_count; i++ ) - FT_TRACE5(( " %d", axis->widths[i].org )); + FT_TRACE5(( " %ld", axis->widths[i].org )); FT_TRACE5(( "\n" )); } @@ -728,7 +727,7 @@ delta2 = FT_MulFix( delta2, scale ); - FT_TRACE5(( "delta: %d", delta1 )); + FT_TRACE5(( "delta: %ld", delta1 )); if ( delta2 < 32 ) delta2 = 0; #if 0 @@ -737,7 +736,7 @@ #endif else delta2 = FT_PIX_ROUND( delta2 ); - FT_TRACE5(( "/%d\n", delta2 )); + FT_TRACE5(( "/%ld\n", delta2 )); if ( delta1 < 0 ) delta2 = -delta2; @@ -806,7 +805,7 @@ { AF_AxisHints axis = &hints->axis[dim]; AF_Segment segments = axis->segments; - AF_Segment segment_limit = segments + axis->num_segments; + AF_Segment segment_limit = FT_OFFSET( segments, axis->num_segments ); FT_Error error; AF_Segment seg; @@ -1644,7 +1643,7 @@ stem_edge->pos = base_edge->pos + fitted_width; - FT_TRACE5(( " CJKLINK: edge %d @%d (opos=%.2f) linked to %.2f," + FT_TRACE5(( " CJKLINK: edge %ld @%d (opos=%.2f) linked to %.2f," " dist was %.2f, now %.2f\n", stem_edge - hints->axis[dim].edges, stem_edge->fpos, stem_edge->opos / 64.0, stem_edge->pos / 64.0, @@ -1866,7 +1865,7 @@ continue; #ifdef FT_DEBUG_LEVEL_TRACE - FT_TRACE5(( " CJKBLUE: edge %d @%d (opos=%.2f) snapped to %.2f," + FT_TRACE5(( " CJKBLUE: edge %ld @%d (opos=%.2f) snapped to %.2f," " was %.2f\n", edge1 - edges, edge1->fpos, edge1->opos / 64.0, blue->fit / 64.0, edge1->pos / 64.0 )); @@ -1930,7 +1929,7 @@ /* this should not happen, but it's better to be safe */ if ( edge2->blue_edge ) { - FT_TRACE5(( "ASSERTION FAILED for edge %d\n", edge2-edges )); + FT_TRACE5(( "ASSERTION FAILED for edge %ld\n", edge2-edges )); af_cjk_align_linked_edge( hints, dim, edge2, edge ); edge->flags |= AF_EDGE_DONE; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afcjk.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afcjk.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afcjk.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afcjk.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter hinting routines for CJK writing system (specification). * - * Copyright (C) 2006-2019 by + * Copyright (C) 2006-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afcover.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afcover.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afcover.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afcover.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter coverages (specification only). * - * Copyright (C) 2013-2019 by + * Copyright (C) 2013-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afdummy.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afdummy.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afdummy.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afdummy.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Auto-fitter dummy routines to be used if no hinting should be * performed (body). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afdummy.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afdummy.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afdummy.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afdummy.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Auto-fitter dummy routines to be used if no hinting should be * performed (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/aferrors.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/aferrors.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/aferrors.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/aferrors.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Autofitter error codes (specification only). * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -26,7 +26,7 @@ #ifndef AFERRORS_H_ #define AFERRORS_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -34,7 +34,7 @@ #define FT_ERR_PREFIX AF_Err_ #define FT_ERR_BASE FT_Mod_Err_Autofit -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* AFERRORS_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afglobal.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afglobal.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afglobal.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afglobal.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter routines to compute global hinting values (body). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,7 +19,7 @@ #include "afglobal.h" #include "afranges.h" #include "afshaper.h" -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> /************************************************************************** @@ -306,7 +306,7 @@ if ( !( count % 10 ) ) FT_TRACE4(( " " )); - FT_TRACE4(( " %d", idx )); + FT_TRACE4(( " %ld", idx )); count++; if ( !( count % 10 ) ) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afglobal.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afglobal.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afglobal.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afglobal.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Auto-fitter routines to compute global hinting values * (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afhints.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afhints.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afhints.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afhints.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter hinting routines (body). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -18,8 +18,8 @@ #include "afhints.h" #include "aferrors.h" -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftcalc.h> +#include <freetype/internal/ftdebug.h> /************************************************************************** diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afhints.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afhints.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afhints.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afhints.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter hinting routines (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afindic.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afindic.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afindic.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afindic.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter hinting routines for Indic writing system (body). * - * Copyright (C) 2007-2019 by + * Copyright (C) 2007-2020 by * Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afindic.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afindic.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afindic.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afindic.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Auto-fitter hinting routines for Indic writing system * (specification). * - * Copyright (C) 2007-2019 by + * Copyright (C) 2007-2020 by * Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/aflatin.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/aflatin.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/aflatin.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/aflatin.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter hinting routines for latin writing system (body). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,9 +16,8 @@ */ -#include <ft2build.h> -#include FT_ADVANCES_H -#include FT_INTERNAL_DEBUG_H +#include <freetype/ftadvanc.h> +#include <freetype/internal/ftdebug.h> #include "afglobal.h" #include "aflatin.h" @@ -155,7 +154,7 @@ goto Exit; } - FT_TRACE5(( "standard character: U+%04lX (glyph index %d)\n", + FT_TRACE5(( "standard character: U+%04lX (glyph index %ld)\n", ch, glyph_index )); error = FT_Load_Glyph( face, glyph_index, FT_LOAD_NO_SCALE ); @@ -258,9 +257,9 @@ dim == AF_DIMENSION_VERT ? "horizontal" : "vertical" )); - FT_TRACE5(( " %d (standard)", axis->standard_width )); + FT_TRACE5(( " %ld (standard)", axis->standard_width )); for ( i = 1; i < axis->width_count; i++ ) - FT_TRACE5(( " %d", axis->widths[i].org )); + FT_TRACE5(( " %ld", axis->widths[i].org )); FT_TRACE5(( "\n" )); } @@ -1032,7 +1031,7 @@ { *a = *b; FT_TRACE5(( "blue zone overlap:" - " adjusting %s %d to %ld\n", + " adjusting %s %ld to %ld\n", a_is_top ? "overshoot" : "reference", blue_sorted[i] - axis->blues, *a )); @@ -1280,7 +1279,7 @@ "af_latin_metrics_scale_dim:" " x height alignment (style `%s'):\n" " " - " vertical scaling changed from %.5f to %.5f (by %d%%)\n" + " vertical scaling changed from %.5f to %.5f (by %ld%%)\n" "\n", af_style_names[metrics->root.style_class->style], scale / 65536.0, @@ -1333,7 +1332,7 @@ width->cur = FT_MulFix( width->org, scale ); width->fit = width->cur; - FT_TRACE5(( " %d scaled to %.2f\n", + FT_TRACE5(( " %ld scaled to %.2f\n", width->org, width->cur / 64.0 )); } @@ -1474,8 +1473,8 @@ AF_LatinBlue blue = &axis->blues[nn]; - FT_TRACE5(( " reference %d: %d scaled to %.2f%s\n" - " overshoot %d: %d scaled to %.2f%s\n", + FT_TRACE5(( " reference %d: %ld scaled to %.2f%s\n" + " overshoot %d: %ld scaled to %.2f%s\n", nn, blue->ref.org, blue->ref.fit / 64.0, @@ -1910,7 +1909,7 @@ /* sense -- this is used to better detect and ignore serifs */ { AF_Segment segments = axis->segments; - AF_Segment segments_end = segments + axis->num_segments; + AF_Segment segments_end = FT_OFFSET( segments, axis->num_segments ); for ( segment = segments; segment < segments_end; segment++ ) @@ -2314,7 +2313,7 @@ */ { AF_Edge edges = axis->edges; - AF_Edge edge_limit = edges + axis->num_edges; + AF_Edge edge_limit = FT_OFFSET( edges, axis->num_edges ); AF_Edge edge; @@ -2945,7 +2944,7 @@ stem_edge->pos = base_edge->pos + fitted_width; - FT_TRACE5(( " LINK: edge %d (opos=%.2f) linked to %.2f," + FT_TRACE5(( " LINK: edge %ld (opos=%.2f) linked to %.2f," " dist was %.2f, now %.2f\n", stem_edge - hints->axis[dim].edges, stem_edge->opos / 64.0, stem_edge->pos / 64.0, dist / 64.0, fitted_width / 64.0 )); @@ -3069,12 +3068,12 @@ #ifdef FT_DEBUG_LEVEL_TRACE if ( !anchor ) - FT_TRACE5(( " BLUE_ANCHOR: edge %d (opos=%.2f) snapped to %.2f," - " was %.2f (anchor=edge %d)\n", + FT_TRACE5(( " BLUE_ANCHOR: edge %ld (opos=%.2f) snapped to %.2f," + " was %.2f (anchor=edge %ld)\n", edge1 - edges, edge1->opos / 64.0, blue->fit / 64.0, edge1->pos / 64.0, edge - edges )); else - FT_TRACE5(( " BLUE: edge %d (opos=%.2f) snapped to %.2f," + FT_TRACE5(( " BLUE: edge %ld (opos=%.2f) snapped to %.2f," " was %.2f\n", edge1 - edges, edge1->opos / 64.0, blue->fit / 64.0, edge1->pos / 64.0 )); @@ -3123,7 +3122,7 @@ /* this should not happen, but it's better to be safe */ if ( edge2->blue_edge ) { - FT_TRACE5(( " ASSERTION FAILED for edge %d\n", edge2 - edges )); + FT_TRACE5(( " ASSERTION FAILED for edge %ld\n", edge2 - edges )); af_latin_align_linked_edge( hints, dim, edge2, edge ); edge->flags |= AF_EDGE_DONE; @@ -3191,7 +3190,7 @@ anchor = edge; edge->flags |= AF_EDGE_DONE; - FT_TRACE5(( " ANCHOR: edge %d (opos=%.2f) and %d (opos=%.2f)" + FT_TRACE5(( " ANCHOR: edge %ld (opos=%.2f) and %ld (opos=%.2f)" " snapped to %.2f and %.2f\n", edge - edges, edge->opos / 64.0, edge2 - edges, edge2->opos / 64.0, @@ -3220,7 +3219,7 @@ if ( edge2->flags & AF_EDGE_DONE ) { - FT_TRACE5(( " ADJUST: edge %d (pos=%.2f) moved to %.2f\n", + FT_TRACE5(( " ADJUST: edge %ld (pos=%.2f) moved to %.2f\n", edge - edges, edge->pos / 64.0, ( edge2->pos - cur_len ) / 64.0 )); @@ -3261,7 +3260,7 @@ edge->pos = cur_pos1 - cur_len / 2; edge2->pos = cur_pos1 + cur_len / 2; - FT_TRACE5(( " STEM: edge %d (opos=%.2f) linked to %d (opos=%.2f)" + FT_TRACE5(( " STEM: edge %ld (opos=%.2f) linked to %ld (opos=%.2f)" " snapped to %.2f and %.2f\n", edge - edges, edge->opos / 64.0, edge2 - edges, edge2->opos / 64.0, @@ -3292,7 +3291,7 @@ edge->pos = ( delta1 < delta2 ) ? cur_pos1 : cur_pos2; edge2->pos = edge->pos + cur_len; - FT_TRACE5(( " STEM: edge %d (opos=%.2f) linked to %d (opos=%.2f)" + FT_TRACE5(( " STEM: edge %ld (opos=%.2f) linked to %ld (opos=%.2f)" " snapped to %.2f and %.2f\n", edge - edges, edge->opos / 64.0, edge2 - edges, edge2->opos / 64.0, @@ -3315,7 +3314,7 @@ if ( edge->link && FT_ABS( edge->link->pos - edge[-1].pos ) > 16 ) { #ifdef FT_DEBUG_LEVEL_TRACE - FT_TRACE5(( " BOUND: edge %d (pos=%.2f) moved to %.2f\n", + FT_TRACE5(( " BOUND: edge %ld (pos=%.2f) moved to %.2f\n", edge - edges, edge->pos / 64.0, edge[-1].pos / 64.0 )); @@ -3417,7 +3416,7 @@ if ( delta < 64 + 16 ) { af_latin_align_serif_edge( hints, edge->serif, edge ); - FT_TRACE5(( " SERIF: edge %d (opos=%.2f) serif to %d (opos=%.2f)" + FT_TRACE5(( " SERIF: edge %ld (opos=%.2f) serif to %ld (opos=%.2f)" " aligned to %.2f\n", edge - edges, edge->opos / 64.0, edge->serif - edges, edge->serif->opos / 64.0, @@ -3427,7 +3426,7 @@ { edge->pos = FT_PIX_ROUND( edge->opos ); anchor = edge; - FT_TRACE5(( " SERIF_ANCHOR: edge %d (opos=%.2f)" + FT_TRACE5(( " SERIF_ANCHOR: edge %ld (opos=%.2f)" " snapped to %.2f\n", edge-edges, edge->opos / 64.0, edge->pos / 64.0 )); } @@ -3455,8 +3454,8 @@ after->pos - before->pos, after->opos - before->opos ); - FT_TRACE5(( " SERIF_LINK1: edge %d (opos=%.2f) snapped to %.2f" - " from %d (opos=%.2f)\n", + FT_TRACE5(( " SERIF_LINK1: edge %ld (opos=%.2f) snapped to %.2f" + " from %ld (opos=%.2f)\n", edge - edges, edge->opos / 64.0, edge->pos / 64.0, before - edges, before->opos / 64.0 )); @@ -3465,7 +3464,7 @@ { edge->pos = anchor->pos + ( ( edge->opos - anchor->opos + 16 ) & ~31 ); - FT_TRACE5(( " SERIF_LINK2: edge %d (opos=%.2f)" + FT_TRACE5(( " SERIF_LINK2: edge %ld (opos=%.2f)" " snapped to %.2f\n", edge - edges, edge->opos / 64.0, edge->pos / 64.0 )); } @@ -3485,7 +3484,7 @@ if ( edge->link && FT_ABS( edge->link->pos - edge[-1].pos ) > 16 ) { #ifdef FT_DEBUG_LEVEL_TRACE - FT_TRACE5(( " BOUND: edge %d (pos=%.2f) moved to %.2f\n", + FT_TRACE5(( " BOUND: edge %ld (pos=%.2f) moved to %.2f\n", edge - edges, edge->pos / 64.0, edge[-1].pos / 64.0 )); @@ -3506,7 +3505,7 @@ if ( edge->link && FT_ABS( edge->link->pos - edge[-1].pos ) > 16 ) { #ifdef FT_DEBUG_LEVEL_TRACE - FT_TRACE5(( " BOUND: edge %d (pos=%.2f) moved to %.2f\n", + FT_TRACE5(( " BOUND: edge %ld (pos=%.2f) moved to %.2f\n", edge - edges, edge->pos / 64.0, edge[1].pos / 64.0 )); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/aflatin.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/aflatin.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/aflatin.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/aflatin.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Auto-fitter hinting routines for latin writing system * (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/aflatin2.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/aflatin2.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/aflatin2.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/aflatin2.c 2022-11-11 15:29:17.000000000 +0800 @@ -9,7 +9,7 @@ * * Auto-fitter hinting routines for latin writing system (body). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,7 +21,7 @@ */ -#include FT_ADVANCES_H +#include <freetype/ftadvanc.h> #ifdef FT_OPTION_AUTOFIT2 diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/aflatin2.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/aflatin2.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/aflatin2.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/aflatin2.h 2022-11-11 15:29:17.000000000 +0800 @@ -10,7 +10,7 @@ * Auto-fitter hinting routines for latin writing system * (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afloader.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afloader.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afloader.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afloader.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter glyph loading routines (body). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -22,7 +22,7 @@ #include "aferrors.h" #include "afmodule.h" -#include FT_INTERNAL_CALC_H +#include <freetype/internal/ftcalc.h> /* Initialize glyph loader. */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afloader.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afloader.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afloader.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afloader.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter glyph loading routines (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afmodule.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afmodule.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afmodule.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afmodule.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter module implementation (body). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -53,10 +53,10 @@ void* _af_debug_hints = _af_debug_hints_rec; #endif -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_DRIVER_H -#include FT_SERVICE_PROPERTIES_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/ftdriver.h> +#include <freetype/internal/services/svprop.h> /************************************************************************** @@ -149,7 +149,7 @@ if ( !af_style_classes[ss] ) { FT_TRACE0(( "af_property_set: Invalid value %d for property `%s'\n", - fallback_script, property_name )); + *fallback_script, property_name )); return FT_THROW( Invalid_Argument ); } @@ -550,8 +550,8 @@ NULL, /* reset_face */ NULL, /* get_global_hints */ NULL, /* done_global_hints */ - (FT_AutoHinter_GlyphLoadFunc)af_autofitter_load_glyph ) /* load_glyph */ - + (FT_AutoHinter_GlyphLoadFunc)af_autofitter_load_glyph /* load_glyph */ + ) FT_DEFINE_MODULE( autofit_module_class, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afmodule.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afmodule.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afmodule.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afmodule.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter module implementation (specification). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,9 +19,8 @@ #ifndef AFMODULE_H_ #define AFMODULE_H_ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_MODULE_H +#include <freetype/internal/ftobjs.h> +#include <freetype/ftmodapi.h> FT_BEGIN_HEADER @@ -47,6 +46,7 @@ } AF_ModuleRec, *AF_Module; +FT_DECLARE_AUTOHINTER_INTERFACE( af_autofitter_interface ) FT_DECLARE_MODULE( autofit_module_class ) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afpic.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afpic.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afpic.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afpic.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,152 +0,0 @@ -/***************************************************************************/ -/* */ -/* afpic.c */ -/* */ -/* The FreeType position independent code services for autofit module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_OBJECTS_H -#include "afpic.h" -#include "afglobal.h" -#include "aferrors.h" - - -#ifdef FT_CONFIG_OPTION_PIC - - /* forward declaration of PIC init functions from afmodule.c */ - FT_Error - FT_Create_Class_af_services( FT_Library library, - FT_ServiceDescRec** output_class ); - - void - FT_Destroy_Class_af_services( FT_Library library, - FT_ServiceDescRec* clazz ); - - void - FT_Init_Class_af_service_properties( FT_Service_PropertiesRec* clazz ); - - void FT_Init_Class_af_autofitter_interface( - FT_Library library, - FT_AutoHinter_InterfaceRec* clazz ); - - - /* forward declaration of PIC init functions from writing system classes */ -#undef WRITING_SYSTEM -#define WRITING_SYSTEM( ws, WS ) /* empty */ - -#include "afwrtsys.h" - - - void - autofit_module_class_pic_free( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Memory memory = library->memory; - - - if ( pic_container->autofit ) - { - AFModulePIC* container = (AFModulePIC*)pic_container->autofit; - - - if ( container->af_services ) - FT_Destroy_Class_af_services( library, - container->af_services ); - container->af_services = NULL; - - FT_FREE( container ); - pic_container->autofit = NULL; - } - } - - - FT_Error - autofit_module_class_pic_init( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_UInt ss; - FT_Error error = FT_Err_Ok; - AFModulePIC* container = NULL; - FT_Memory memory = library->memory; - - - /* allocate pointer, clear and set global container pointer */ - if ( FT_ALLOC ( container, sizeof ( *container ) ) ) - return error; - FT_MEM_SET( container, 0, sizeof ( *container ) ); - pic_container->autofit = container; - - /* initialize pointer table - */ - /* this is how the module usually expects this data */ - error = FT_Create_Class_af_services( library, - &container->af_services ); - if ( error ) - goto Exit; - - FT_Init_Class_af_service_properties( &container->af_service_properties ); - - for ( ss = 0; ss < AF_WRITING_SYSTEM_MAX; ss++ ) - container->af_writing_system_classes[ss] = - &container->af_writing_system_classes_rec[ss]; - container->af_writing_system_classes[AF_WRITING_SYSTEM_MAX] = NULL; - - for ( ss = 0; ss < AF_SCRIPT_MAX; ss++ ) - container->af_script_classes[ss] = - &container->af_script_classes_rec[ss]; - container->af_script_classes[AF_SCRIPT_MAX] = NULL; - - for ( ss = 0; ss < AF_STYLE_MAX; ss++ ) - container->af_style_classes[ss] = - &container->af_style_classes_rec[ss]; - container->af_style_classes[AF_STYLE_MAX] = NULL; - -#undef WRITING_SYSTEM -#define WRITING_SYSTEM( ws, WS ) \ - FT_Init_Class_af_ ## ws ## _writing_system_class( \ - &container->af_writing_system_classes_rec[ss++] ); - - ss = 0; -#include "afwrtsys.h" - -#undef SCRIPT -#define SCRIPT( s, S, d, h, H, sss ) \ - FT_Init_Class_af_ ## s ## _script_class( \ - &container->af_script_classes_rec[ss++] ); - - ss = 0; -#include "afscript.h" - -#undef STYLE -#define STYLE( s, S, d, ws, sc, bss, c ) \ - FT_Init_Class_af_ ## s ## _style_class( \ - &container->af_style_classes_rec[ss++] ); - - ss = 0; -#include "afstyles.h" - - FT_Init_Class_af_autofitter_interface( - library, &container->af_autofitter_interface ); - - Exit: - if ( error ) - autofit_module_class_pic_free( library ); - return error; - } - -#endif /* FT_CONFIG_OPTION_PIC */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afpic.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afpic.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afpic.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afpic.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,105 +0,0 @@ -/***************************************************************************/ -/* */ -/* afpic.h */ -/* */ -/* The FreeType position independent code services for autofit module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef AFPIC_H_ -#define AFPIC_H_ - - -#include FT_INTERNAL_PIC_H - - -#ifndef FT_CONFIG_OPTION_PIC - -#define AF_SERVICES_GET af_services -#define AF_SERVICE_PROPERTIES_GET af_service_properties - -#define AF_WRITING_SYSTEM_CLASSES_GET af_writing_system_classes -#define AF_SCRIPT_CLASSES_GET af_script_classes -#define AF_STYLE_CLASSES_GET af_style_classes -#define AF_INTERFACE_GET af_autofitter_interface - -#else /* FT_CONFIG_OPTION_PIC */ - - /* some include files required for members of AFModulePIC */ -#include FT_SERVICE_PROPERTIES_H - -#include "aftypes.h" - - -FT_BEGIN_HEADER - - typedef struct AFModulePIC_ - { - FT_ServiceDescRec* af_services; - FT_Service_PropertiesRec af_service_properties; - - AF_WritingSystemClass af_writing_system_classes - [AF_WRITING_SYSTEM_MAX + 1]; - AF_WritingSystemClassRec af_writing_system_classes_rec - [AF_WRITING_SYSTEM_MAX]; - - AF_ScriptClass af_script_classes - [AF_SCRIPT_MAX + 1]; - AF_ScriptClassRec af_script_classes_rec - [AF_SCRIPT_MAX]; - - AF_StyleClass af_style_classes - [AF_STYLE_MAX + 1]; - AF_StyleClassRec af_style_classes_rec - [AF_STYLE_MAX]; - - FT_AutoHinter_InterfaceRec af_autofitter_interface; - - } AFModulePIC; - - -#define GET_PIC( lib ) \ - ( (AFModulePIC*)( (lib)->pic_container.autofit ) ) - -#define AF_SERVICES_GET \ - ( GET_PIC( library )->af_services ) -#define AF_SERVICE_PROPERTIES_GET \ - ( GET_PIC( library )->af_service_properties ) - -#define AF_WRITING_SYSTEM_CLASSES_GET \ - ( GET_PIC( FT_FACE_LIBRARY( globals->face ) )->af_writing_system_classes ) -#define AF_SCRIPT_CLASSES_GET \ - ( GET_PIC( FT_FACE_LIBRARY( globals->face ) )->af_script_classes ) -#define AF_STYLE_CLASSES_GET \ - ( GET_PIC( FT_FACE_LIBRARY( globals->face ) )->af_style_classes ) -#define AF_INTERFACE_GET \ - ( GET_PIC( library )->af_autofitter_interface ) - - - /* see afpic.c for the implementation */ - void - autofit_module_class_pic_free( FT_Library library ); - - FT_Error - autofit_module_class_pic_init( FT_Library library ); - -FT_END_HEADER - -#endif /* FT_CONFIG_OPTION_PIC */ - - /* */ - -#endif /* AFPIC_H_ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afranges.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afranges.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afranges.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afranges.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter Unicode script ranges (body). * - * Copyright (C) 2013-2019 by + * Copyright (C) 2013-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -664,6 +664,18 @@ }; + const AF_Script_UniRangeRec af_medf_uniranges[] = + { + AF_UNIRANGE_REC( 0x16E40, 0x16E9F ), /* Medefaidrin */ + AF_UNIRANGE_REC( 0, 0 ) + }; + + const AF_Script_UniRangeRec af_medf_nonbase_uniranges[] = + { + AF_UNIRANGE_REC( 0, 0 ) + }; + + const AF_Script_UniRangeRec af_mong_uniranges[] = { AF_UNIRANGE_REC( 0x1800, 0x18AF ), /* Mongolian */ @@ -776,6 +788,18 @@ { AF_UNIRANGE_REC( 0, 0 ) }; + + + const AF_Script_UniRangeRec af_rohg_uniranges[] = + { + AF_UNIRANGE_REC( 0x10D00, 0x10D3F ), /* Hanifi Rohingya */ + AF_UNIRANGE_REC( 0, 0 ) + }; + + const AF_Script_UniRangeRec af_rohg_nonbase_uniranges[] = + { + AF_UNIRANGE_REC( 0, 0 ) + }; const AF_Script_UniRangeRec af_saur_uniranges[] = diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afranges.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afranges.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afranges.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afranges.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter Unicode script ranges (specification). * - * Copyright (C) 2013-2019 by + * Copyright (C) 2013-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afscript.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afscript.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afscript.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afscript.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter scripts (specification only). * - * Copyright (C) 2013-2019 by + * Copyright (C) 2013-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -243,6 +243,12 @@ HINTING_BOTTOM_TO_TOP, "\xE0\xB4\xA0 \xE0\xB4\xB1" ) /* ഠ റ */ + SCRIPT( medf, MEDF, + "Medefaidrin", + HB_SCRIPT_MEDEFAIDRIN, + HINTING_BOTTOM_TO_TOP, + "\xF0\x96\xB9\xA1 \xF0\x96\xB9\x9B \xF0\x96\xB9\xAF" ) /* 𖹡 𖹛 𖹯 */ + SCRIPT( mong, MONG, "Mongolian", HB_SCRIPT_MONGOLIAN, @@ -291,6 +297,12 @@ HINTING_BOTTOM_TO_TOP, "\xF0\x90\x92\x86 \xF0\x90\x92\xA0" ) /* 𐒆 𐒠 */ + SCRIPT( rohg, ROHG, + "Hanifi Rohingya", + HB_SCRIPT_HANIFI_ROHINGYA, + HINTING_BOTTOM_TO_TOP, + "\xF0\x90\xB4\xB0" ) /* 𐴰 */ + SCRIPT( saur, SAUR, "Saurashtra", HB_SCRIPT_SAURASHTRA, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afshaper.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afshaper.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afshaper.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afshaper.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * HarfBuzz interface for accessing OpenType features (body). * - * Copyright (C) 2013-2019 by + * Copyright (C) 2013-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,9 +16,8 @@ */ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_ADVANCES_H +#include <freetype/freetype.h> +#include <freetype/ftadvanc.h> #include "afglobal.h" #include "aftypes.h" #include "afshaper.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afshaper.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afshaper.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afshaper.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afshaper.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * HarfBuzz interface for accessing OpenType features (specification). * - * Copyright (C) 2013-2019 by + * Copyright (C) 2013-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define AFSHAPER_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> #ifdef FT_CONFIG_OPTION_USE_HARFBUZZ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afstyles.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afstyles.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afstyles.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afstyles.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter styles (specification only). * - * Copyright (C) 2013-2019 by + * Copyright (C) 2013-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -322,6 +322,13 @@ AF_BLUE_STRINGSET_MLYM, AF_COVERAGE_DEFAULT ) + STYLE( medf_dflt, MEDF_DFLT, + "Medefaidrin default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_MEDF, + AF_BLUE_STRINGSET_MEDF, + AF_COVERAGE_DEFAULT ) + STYLE( mong_dflt, MONG_DFLT, "Mongolian default style", AF_WRITING_SYSTEM_LATIN, @@ -378,6 +385,13 @@ AF_BLUE_STRINGSET_OSMA, AF_COVERAGE_DEFAULT ) + STYLE( rohg_dflt, ROHG_DFLT, + "Hanifi Rohingya default style", + AF_WRITING_SYSTEM_LATIN, + AF_SCRIPT_ROHG, + AF_BLUE_STRINGSET_ROHG, + AF_COVERAGE_DEFAULT ) + STYLE( saur_dflt, SAUR_DFLT, "Saurashtra default style", AF_WRITING_SYSTEM_LATIN, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/aftypes.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/aftypes.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/aftypes.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/aftypes.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter types (specification only). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -32,12 +32,11 @@ #ifndef AFTYPES_H_ #define AFTYPES_H_ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_OUTLINE_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H +#include <freetype/freetype.h> +#include <freetype/ftoutln.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdebug.h> #include "afblue.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afwarp.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afwarp.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afwarp.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afwarp.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter warping algorithm (body). * - * Copyright (C) 2006-2019 by + * Copyright (C) 2006-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afwarp.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afwarp.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afwarp.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afwarp.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter warping algorithm (specification). * - * Copyright (C) 2006-2019 by + * Copyright (C) 2006-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afwrtsys.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afwrtsys.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/afwrtsys.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/afwrtsys.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter writing systems (specification only). * - * Copyright (C) 2013-2019 by + * Copyright (C) 2013-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/autofit.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/autofit.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/autofit.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/autofit.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auto-fitter module (body). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,7 +17,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "afangles.c" #include "afblue.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/hbshim.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/hbshim.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/hbshim.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/hbshim.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,546 +0,0 @@ -/***************************************************************************/ -/* */ -/* hbshim.c */ -/* */ -/* HarfBuzz interface for accessing OpenType features (body). */ -/* */ -/* Copyright 2013-2015 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include "afglobal.h" -#include "aftypes.h" -#include "hbshim.h" - -#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_afharfbuzz - - - /* - * We use `sets' (in the HarfBuzz sense, which comes quite near to the - * usual mathematical meaning) to manage both lookups and glyph indices. - * - * 1. For each coverage, collect lookup IDs in a set. Note that an - * auto-hinter `coverage' is represented by one `feature', and a - * feature consists of an arbitrary number of (font specific) `lookup's - * that actually do the mapping job. Please check the OpenType - * specification for more details on features and lookups. - * - * 2. Create glyph ID sets from the corresponding lookup sets. - * - * 3. The glyph set corresponding to AF_COVERAGE_DEFAULT is computed - * with all lookups specific to the OpenType script activated. It - * relies on the order of AF_DEFINE_STYLE_CLASS entries so that - * special coverages (like `oldstyle figures') don't get overwritten. - * - */ - - - /* load coverage tags */ -#undef COVERAGE -#define COVERAGE( name, NAME, description, \ - tag1, tag2, tag3, tag4 ) \ - static const hb_tag_t name ## _coverage[] = \ - { \ - HB_TAG( tag1, tag2, tag3, tag4 ), \ - HB_TAG_NONE \ - }; - - -#include "afcover.h" - - - /* define mapping between coverage tags and AF_Coverage */ -#undef COVERAGE -#define COVERAGE( name, NAME, description, \ - tag1, tag2, tag3, tag4 ) \ - name ## _coverage, - - - static const hb_tag_t* coverages[] = - { -#include "afcover.h" - - NULL /* AF_COVERAGE_DEFAULT */ - }; - - - /* load HarfBuzz script tags */ -#undef SCRIPT -#define SCRIPT( s, S, d, h, sc1, sc2, sc3 ) h, - - - static const hb_script_t scripts[] = - { -#include "afscript.h" - }; - - - FT_Error - af_get_coverage( AF_FaceGlobals globals, - AF_StyleClass style_class, - FT_UShort* gstyles ) - { - hb_face_t* face; - - hb_set_t* gsub_lookups; /* GSUB lookups for a given script */ - hb_set_t* gsub_glyphs; /* glyphs covered by GSUB lookups */ - hb_set_t* gpos_lookups; /* GPOS lookups for a given script */ - hb_set_t* gpos_glyphs; /* glyphs covered by GPOS lookups */ - - hb_script_t script; - const hb_tag_t* coverage_tags; - hb_tag_t script_tags[] = { HB_TAG_NONE, - HB_TAG_NONE, - HB_TAG_NONE, - HB_TAG_NONE }; - - hb_codepoint_t idx; -#ifdef FT_DEBUG_LEVEL_TRACE - int count; -#endif - - - if ( !globals || !style_class || !gstyles ) - return FT_THROW( Invalid_Argument ); - - face = hb_font_get_face( globals->hb_font ); - - gsub_lookups = hb_set_create(); - gsub_glyphs = hb_set_create(); - gpos_lookups = hb_set_create(); - gpos_glyphs = hb_set_create(); - - coverage_tags = coverages[style_class->coverage]; - script = scripts[style_class->script]; - - /* Convert a HarfBuzz script tag into the corresponding OpenType */ - /* tag or tags -- some Indic scripts like Devanagari have an old */ - /* and a new set of features. */ - hb_ot_tags_from_script( script, - &script_tags[0], - &script_tags[1] ); - - /* `hb_ot_tags_from_script' usually returns HB_OT_TAG_DEFAULT_SCRIPT */ - /* as the second tag. We change that to HB_TAG_NONE except for the */ - /* default script. */ - if ( style_class->script == globals->module->default_script && - style_class->coverage == AF_COVERAGE_DEFAULT ) - { - if ( script_tags[0] == HB_TAG_NONE ) - script_tags[0] = HB_OT_TAG_DEFAULT_SCRIPT; - else - { - if ( script_tags[1] == HB_TAG_NONE ) - script_tags[1] = HB_OT_TAG_DEFAULT_SCRIPT; - else if ( script_tags[1] != HB_OT_TAG_DEFAULT_SCRIPT ) - script_tags[2] = HB_OT_TAG_DEFAULT_SCRIPT; - } - } - else - { - if ( script_tags[1] == HB_OT_TAG_DEFAULT_SCRIPT ) - script_tags[1] = HB_TAG_NONE; - } - - hb_ot_layout_collect_lookups( face, - HB_OT_TAG_GSUB, - script_tags, - NULL, - coverage_tags, - gsub_lookups ); - - if ( hb_set_is_empty( gsub_lookups ) ) - goto Exit; /* nothing to do */ - - hb_ot_layout_collect_lookups( face, - HB_OT_TAG_GPOS, - script_tags, - NULL, - coverage_tags, - gpos_lookups ); - - FT_TRACE4(( "GSUB lookups (style `%s'):\n" - " ", - af_style_names[style_class->style] )); - -#ifdef FT_DEBUG_LEVEL_TRACE - count = 0; -#endif - - for ( idx = HB_SET_VALUE_INVALID; hb_set_next( gsub_lookups, &idx ); ) - { -#ifdef FT_DEBUG_LEVEL_TRACE - FT_TRACE4(( " %d", idx )); - count++; -#endif - - /* get output coverage of GSUB feature */ - hb_ot_layout_lookup_collect_glyphs( face, - HB_OT_TAG_GSUB, - idx, - NULL, - NULL, - NULL, - gsub_glyphs ); - } - -#ifdef FT_DEBUG_LEVEL_TRACE - if ( !count ) - FT_TRACE4(( " (none)" )); - FT_TRACE4(( "\n\n" )); -#endif - - FT_TRACE4(( "GPOS lookups (style `%s'):\n" - " ", - af_style_names[style_class->style] )); - -#ifdef FT_DEBUG_LEVEL_TRACE - count = 0; -#endif - - for ( idx = HB_SET_VALUE_INVALID; hb_set_next( gpos_lookups, &idx ); ) - { -#ifdef FT_DEBUG_LEVEL_TRACE - FT_TRACE4(( " %d", idx )); - count++; -#endif - - /* get input coverage of GPOS feature */ - hb_ot_layout_lookup_collect_glyphs( face, - HB_OT_TAG_GPOS, - idx, - NULL, - gpos_glyphs, - NULL, - NULL ); - } - -#ifdef FT_DEBUG_LEVEL_TRACE - if ( !count ) - FT_TRACE4(( " (none)" )); - FT_TRACE4(( "\n\n" )); -#endif - - /* - * We now check whether we can construct blue zones, using glyphs - * covered by the feature only. In case there is not a single zone - * (this is, not a single character is covered), we skip this coverage. - * - */ - if ( style_class->coverage != AF_COVERAGE_DEFAULT ) - { - AF_Blue_Stringset bss = style_class->blue_stringset; - const AF_Blue_StringRec* bs = &af_blue_stringsets[bss]; - - FT_Bool found = 0; - - - for ( ; bs->string != AF_BLUE_STRING_MAX; bs++ ) - { - const char* p = &af_blue_strings[bs->string]; - - - while ( *p ) - { - hb_codepoint_t ch; - - - GET_UTF8_CHAR( ch, p ); - - for ( idx = HB_SET_VALUE_INVALID; hb_set_next( gsub_lookups, - &idx ); ) - { - hb_codepoint_t gidx = FT_Get_Char_Index( globals->face, ch ); - - - if ( hb_ot_layout_lookup_would_substitute( face, idx, - &gidx, 1, 1 ) ) - { - found = 1; - break; - } - } - } - } - - if ( !found ) - { - FT_TRACE4(( " no blue characters found; style skipped\n" )); - goto Exit; - } - } - - /* - * Various OpenType features might use the same glyphs at different - * vertical positions; for example, superscript and subscript glyphs - * could be the same. However, the auto-hinter is completely - * agnostic of OpenType features after the feature analysis has been - * completed: The engine then simply receives a glyph index and returns a - * hinted and usually rendered glyph. - * - * Consider the superscript feature of font `pala.ttf': Some of the - * glyphs are `real', this is, they have a zero vertical offset, but - * most of them are small caps glyphs shifted up to the superscript - * position (this is, the `sups' feature is present in both the GSUB and - * GPOS tables). The code for blue zones computation actually uses a - * feature's y offset so that the `real' glyphs get correct hints. But - * later on it is impossible to decide whether a glyph index belongs to, - * say, the small caps or superscript feature. - * - * For this reason, we don't assign a style to a glyph if the current - * feature covers the glyph in both the GSUB and the GPOS tables. This - * is quite a broad condition, assuming that - * - * (a) glyphs that get used in multiple features are present in a - * feature without vertical shift, - * - * and - * - * (b) a feature's GPOS data really moves the glyph vertically. - * - * Not fulfilling condition (a) makes a font larger; it would also - * reduce the number of glyphs that could be addressed directly without - * using OpenType features, so this assumption is rather strong. - * - * Condition (b) is much weaker, and there might be glyphs which get - * missed. However, the OpenType features we are going to handle are - * primarily located in GSUB, and HarfBuzz doesn't provide an API to - * directly get the necessary information from the GPOS table. A - * possible solution might be to directly parse the GPOS table to find - * out whether a glyph gets shifted vertically, but this is something I - * would like to avoid if not really necessary. - * - * Note that we don't follow this logic for the default coverage. - * Complex scripts like Devanagari have mandatory GPOS features to - * position many glyph elements, using mark-to-base or mark-to-ligature - * tables; the number of glyphs missed due to condition (b) would be far - * too large. - * - */ - if ( style_class->coverage != AF_COVERAGE_DEFAULT ) - hb_set_subtract( gsub_glyphs, gpos_glyphs ); - -#ifdef FT_DEBUG_LEVEL_TRACE - FT_TRACE4(( " glyphs without GPOS data (`*' means already assigned)" )); - count = 0; -#endif - - for ( idx = HB_SET_VALUE_INVALID; hb_set_next( gsub_glyphs, &idx ); ) - { -#ifdef FT_DEBUG_LEVEL_TRACE - if ( !( count % 10 ) ) - FT_TRACE4(( "\n" - " " )); - - FT_TRACE4(( " %d", idx )); - count++; -#endif - - /* glyph indices returned by `hb_ot_layout_lookup_collect_glyphs' */ - /* can be arbitrary: some fonts use fake indices for processing */ - /* internal to GSUB or GPOS, which is fully valid */ - if ( idx >= (hb_codepoint_t)globals->glyph_count ) - continue; - - if ( gstyles[idx] == AF_STYLE_UNASSIGNED ) - gstyles[idx] = (FT_UShort)style_class->style; -#ifdef FT_DEBUG_LEVEL_TRACE - else - FT_TRACE4(( "*" )); -#endif - } - -#ifdef FT_DEBUG_LEVEL_TRACE - if ( !count ) - FT_TRACE4(( "\n" - " (none)" )); - FT_TRACE4(( "\n\n" )); -#endif - - Exit: - hb_set_destroy( gsub_lookups ); - hb_set_destroy( gsub_glyphs ); - hb_set_destroy( gpos_lookups ); - hb_set_destroy( gpos_glyphs ); - - return FT_Err_Ok; - } - - - /* construct HarfBuzz features */ -#undef COVERAGE -#define COVERAGE( name, NAME, description, \ - tag1, tag2, tag3, tag4 ) \ - static const hb_feature_t name ## _feature[] = \ - { \ - { \ - HB_TAG( tag1, tag2, tag3, tag4 ), \ - 1, 0, (unsigned int)-1 \ - } \ - }; - - -#include "afcover.h" - - - /* define mapping between HarfBuzz features and AF_Coverage */ -#undef COVERAGE -#define COVERAGE( name, NAME, description, \ - tag1, tag2, tag3, tag4 ) \ - name ## _feature, - - - static const hb_feature_t* features[] = - { -#include "afcover.h" - - NULL /* AF_COVERAGE_DEFAULT */ - }; - - - FT_Error - af_get_char_index( AF_StyleMetrics metrics, - FT_ULong charcode, - FT_ULong *codepoint, - FT_Long *y_offset ) - { - AF_StyleClass style_class; - - const hb_feature_t* feature; - - FT_ULong in_idx, out_idx; - - - if ( !metrics ) - return FT_THROW( Invalid_Argument ); - - in_idx = FT_Get_Char_Index( metrics->globals->face, charcode ); - - style_class = metrics->style_class; - - feature = features[style_class->coverage]; - - if ( feature ) - { - FT_Int upem = (FT_Int)metrics->globals->face->units_per_EM; - - hb_font_t* font = metrics->globals->hb_font; - hb_buffer_t* buf = hb_buffer_create(); - - uint32_t c = (uint32_t)charcode; - - hb_glyph_info_t* ginfo; - hb_glyph_position_t* gpos; - unsigned int gcount; - - - /* we shape at a size of units per EM; this means font units */ - hb_font_set_scale( font, upem, upem ); - - /* XXX: is this sufficient for a single character of any script? */ - hb_buffer_set_direction( buf, HB_DIRECTION_LTR ); - hb_buffer_set_script( buf, scripts[style_class->script] ); - - /* we add one character to `buf' ... */ - hb_buffer_add_utf32( buf, &c, 1, 0, 1 ); - - /* ... and apply one feature */ - hb_shape( font, buf, feature, 1 ); - - ginfo = hb_buffer_get_glyph_infos( buf, &gcount ); - gpos = hb_buffer_get_glyph_positions( buf, &gcount ); - - out_idx = ginfo[0].codepoint; - - /* getting the same index indicates no substitution, */ - /* which means that the glyph isn't available in the feature */ - if ( in_idx == out_idx ) - { - *codepoint = 0; - *y_offset = 0; - } - else - { - *codepoint = out_idx; - *y_offset = gpos[0].y_offset; - } - - hb_buffer_destroy( buf ); - -#ifdef FT_DEBUG_LEVEL_TRACE - if ( gcount > 1 ) - FT_TRACE1(( "af_get_char_index:" - " input character mapped to multiple glyphs\n" )); -#endif - } - else - { - *codepoint = in_idx; - *y_offset = 0; - } - - return FT_Err_Ok; - } - - -#else /* !FT_CONFIG_OPTION_USE_HARFBUZZ */ - - - FT_Error - af_get_coverage( AF_FaceGlobals globals, - AF_StyleClass style_class, - FT_UShort* gstyles ) - { - FT_UNUSED( globals ); - FT_UNUSED( style_class ); - FT_UNUSED( gstyles ); - - return FT_Err_Ok; - } - - - FT_Error - af_get_char_index( AF_StyleMetrics metrics, - FT_ULong charcode, - FT_ULong *codepoint, - FT_Long *y_offset ) - { - FT_Face face; - - - if ( !metrics ) - return FT_THROW( Invalid_Argument ); - - face = metrics->globals->face; - - *codepoint = FT_Get_Char_Index( face, charcode ); - *y_offset = 0; - - return FT_Err_Ok; - } - - -#endif /* !FT_CONFIG_OPTION_USE_HARFBUZZ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/hbshim.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/hbshim.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/hbshim.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/hbshim.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,56 +0,0 @@ -/***************************************************************************/ -/* */ -/* hbshim.h */ -/* */ -/* HarfBuzz interface for accessing OpenType features (specification). */ -/* */ -/* Copyright 2013-2015 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __HBSHIM_H__ -#define __HBSHIM_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - - -#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ - -#include <hb.h> -#include <hb-ot.h> -#include <hb-ft.h> - -#endif - - -FT_BEGIN_HEADER - - FT_Error - af_get_coverage( AF_FaceGlobals globals, - AF_StyleClass style_class, - FT_UShort* gstyles ); - - FT_Error - af_get_char_index( AF_StyleMetrics metrics, - FT_ULong charcode, - FT_ULong *codepoint, - FT_Long *y_offset ); - - /* */ - -FT_END_HEADER - -#endif /* __HBSHIM_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 2003-2019 by +# Copyright (C) 2003-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/autofit/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/autofit/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 2003-2019 by +# Copyright (C) 2003-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,90 +0,0 @@ -# FreeType 2 src/base Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) base ; - - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = basepic - ftadvanc - ftcalc - ftcolor - ftdbgmem - fterrors - ftfntfmt - ftgloadr - fthash - ftlcdfil - ftobjs - ftoutln - ftpic - ftpsprop - ftrfork - ftsnames - ftstream - fttrigon - ftutil - ; - } - else - { - _sources = ftbase ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# Add the optional/replaceable files. -# -{ - local _sources = ftbbox - ftbdf - ftbitmap - ftcid - ftdebug - ftfstype - ftgasp - ftglyph - ftgxval - ftinit - ftmm - ftotval - ftpatent - ftpfr - ftstroke - ftsynth - ftsystem - fttype1 - ftwinfnt - ; - - Library $(FT2_LIB) : $(_sources).c ; -} - -# Add Macintosh-specific file to the library when necessary. -# -if $(MAC) -{ - Library $(FT2_LIB) : ftmac.c ; -} -else if $(OS) = MACOSX -{ - if $(FT2_MULTI) - { - Library $(FT2_LIB) : ftmac.c ; - } -} - -# end of src/base Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/basepic.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/basepic.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/basepic.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/basepic.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,108 +0,0 @@ -/***************************************************************************/ -/* */ -/* basepic.c */ -/* */ -/* The FreeType position independent code services for base. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_OBJECTS_H -#include "basepic.h" - - -#ifdef FT_CONFIG_OPTION_PIC - - /* forward declaration of PIC init functions from ftglyph.c */ - void - FT_Init_Class_ft_outline_glyph_class( FT_Glyph_Class* clazz ); - - void - FT_Init_Class_ft_bitmap_glyph_class( FT_Glyph_Class* clazz ); - -#ifdef FT_CONFIG_OPTION_MAC_FONTS - /* forward declaration of PIC init function from ftrfork.c */ - /* (not modularized) */ - void - FT_Init_Table_ft_raccess_guess_table( ft_raccess_guess_rec* record ); -#endif - - /* forward declaration of PIC init functions from ftinit.c */ - FT_Error - ft_create_default_module_classes( FT_Library library ); - - void - ft_destroy_default_module_classes( FT_Library library ); - - - void - ft_base_pic_free( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Memory memory = library->memory; - - - if ( pic_container->base ) - { - /* destroy default module classes */ - /* (in case FT_Add_Default_Modules was used) */ - ft_destroy_default_module_classes( library ); - - FT_FREE( pic_container->base ); - pic_container->base = NULL; - } - } - - - FT_Error - ft_base_pic_init( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Error error = FT_Err_Ok; - BasePIC* container = NULL; - FT_Memory memory = library->memory; - - - /* allocate pointer, clear and set global container pointer */ - if ( FT_ALLOC( container, sizeof ( *container ) ) ) - return error; - FT_MEM_SET( container, 0, sizeof ( *container ) ); - pic_container->base = container; - - /* initialize default modules list and pointers */ - error = ft_create_default_module_classes( library ); - if ( error ) - goto Exit; - - /* initialize pointer table - */ - /* this is how the module usually expects this data */ - FT_Init_Class_ft_outline_glyph_class( - &container->ft_outline_glyph_class ); - FT_Init_Class_ft_bitmap_glyph_class( - &container->ft_bitmap_glyph_class ); -#ifdef FT_CONFIG_OPTION_MAC_FONTS - FT_Init_Table_ft_raccess_guess_table( - (ft_raccess_guess_rec*)&container->ft_raccess_guess_table ); -#endif - - Exit: - if ( error ) - ft_base_pic_free( library ); - return error; - } - -#endif /* FT_CONFIG_OPTION_PIC */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/basepic.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/basepic.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/basepic.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/basepic.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,91 +0,0 @@ -/***************************************************************************/ -/* */ -/* basepic.h */ -/* */ -/* The FreeType position independent code services for base. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef BASEPIC_H_ -#define BASEPIC_H_ - - -#include FT_INTERNAL_PIC_H - - -#ifndef FT_CONFIG_OPTION_PIC - -#define FT_OUTLINE_GLYPH_CLASS_GET &ft_outline_glyph_class -#define FT_BITMAP_GLYPH_CLASS_GET &ft_bitmap_glyph_class -#define FT_DEFAULT_MODULES_GET ft_default_modules - -#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK -#define FT_RACCESS_GUESS_TABLE_GET ft_raccess_guess_table -#endif - -#else /* FT_CONFIG_OPTION_PIC */ - -#include FT_GLYPH_H - -#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK -#include FT_INTERNAL_RFORK_H -#endif - - -FT_BEGIN_HEADER - - typedef struct BasePIC_ - { - FT_Module_Class** default_module_classes; - FT_Glyph_Class ft_outline_glyph_class; - FT_Glyph_Class ft_bitmap_glyph_class; - -#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK - ft_raccess_guess_rec ft_raccess_guess_table[FT_RACCESS_N_RULES]; -#endif - - } BasePIC; - - -#define GET_PIC( lib ) ( (BasePIC*)( (lib)->pic_container.base ) ) - -#define FT_OUTLINE_GLYPH_CLASS_GET \ - ( &GET_PIC( library )->ft_outline_glyph_class ) -#define FT_BITMAP_GLYPH_CLASS_GET \ - ( &GET_PIC( library )->ft_bitmap_glyph_class ) -#define FT_DEFAULT_MODULES_GET \ - ( GET_PIC( library )->default_module_classes ) - -#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK -#define FT_RACCESS_GUESS_TABLE_GET \ - ( GET_PIC( library )->ft_raccess_guess_table ) -#endif - - - /* see basepic.c for the implementation */ - void - ft_base_pic_free( FT_Library library ); - - FT_Error - ft_base_pic_init( FT_Library library ); - -FT_END_HEADER - -#endif /* FT_CONFIG_OPTION_PIC */ - - /* */ - -#endif /* BASEPIC_H_ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftadvanc.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftadvanc.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftadvanc.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftadvanc.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Quick computation of advance widths (body). * - * Copyright (C) 2008-2019 by + * Copyright (C) 2008-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> -#include FT_ADVANCES_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/ftadvanc.h> +#include <freetype/internal/ftobjs.h> static FT_Error diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftapi.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftapi.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftapi.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftapi.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,121 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftapi.c */ -/* */ -/* The FreeType compatibility functions (body). */ -/* */ -/* Copyright 2002-2018 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_LIST_H -#include FT_OUTLINE_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TABLES_H -#include FT_OUTLINE_H - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** C O M P A T I B I L I T Y ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - /* backward compatibility API */ - - FT_BASE_DEF( void ) - FT_New_Memory_Stream( FT_Library library, - FT_Byte* base, - FT_ULong size, - FT_Stream stream ) - { - FT_UNUSED( library ); - - FT_Stream_OpenMemory( stream, base, size ); - } - - - FT_BASE_DEF( FT_Error ) - FT_Seek_Stream( FT_Stream stream, - FT_ULong pos ) - { - return FT_Stream_Seek( stream, pos ); - } - - - FT_BASE_DEF( FT_Error ) - FT_Skip_Stream( FT_Stream stream, - FT_Long distance ) - { - return FT_Stream_Skip( stream, distance ); - } - - - FT_BASE_DEF( FT_Error ) - FT_Read_Stream( FT_Stream stream, - FT_Byte* buffer, - FT_ULong count ) - { - return FT_Stream_Read( stream, buffer, count ); - } - - - FT_BASE_DEF( FT_Error ) - FT_Read_Stream_At( FT_Stream stream, - FT_ULong pos, - FT_Byte* buffer, - FT_ULong count ) - { - return FT_Stream_ReadAt( stream, pos, buffer, count ); - } - - - FT_BASE_DEF( FT_Error ) - FT_Extract_Frame( FT_Stream stream, - FT_ULong count, - FT_Byte** pbytes ) - { - return FT_Stream_ExtractFrame( stream, count, pbytes ); - } - - - FT_BASE_DEF( void ) - FT_Release_Frame( FT_Stream stream, - FT_Byte** pbytes ) - { - FT_Stream_ReleaseFrame( stream, pbytes ); - } - - FT_BASE_DEF( FT_Error ) - FT_Access_Frame( FT_Stream stream, - FT_ULong count ) - { - return FT_Stream_EnterFrame( stream, count ); - } - - - FT_BASE_DEF( void ) - FT_Forget_Frame( FT_Stream stream ) - { - FT_Stream_ExitFrame( stream ); - } - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftbase.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftbase.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftbase.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftbase.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Single object library component (body only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,7 +16,6 @@ */ -#include <ft2build.h> #define FT_MAKE_OPTION_SINGLE_OBJECT #include "ftadvanc.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftbase.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftbase.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftbase.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftbase.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Private functions used in the `base' module (specification). * - * Copyright (C) 2008-2019 by + * Copyright (C) 2008-2020 by * David Turner, Robert Wilhelm, Werner Lemberg, and suzuki toshiya. * * This file is part of the FreeType project, and may only be used, @@ -20,13 +20,16 @@ #define FTBASE_H_ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H +#include <freetype/internal/ftobjs.h> FT_BEGIN_HEADER + FT_DECLARE_GLYPH( ft_bitmap_glyph_class ) + FT_DECLARE_GLYPH( ft_outline_glyph_class ) + + #ifdef FT_CONFIG_OPTION_MAC_FONTS /* MacOS resource fork cannot exceed 16MB at least for Carbon code; */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftbbox.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftbbox.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftbbox.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftbbox.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType bbox computation (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used @@ -24,14 +24,13 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> -#include FT_BBOX_H -#include FT_IMAGE_H -#include FT_OUTLINE_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/ftbbox.h> +#include <freetype/ftimage.h> +#include <freetype/ftoutln.h> +#include <freetype/internal/ftcalc.h> +#include <freetype/internal/ftobjs.h> typedef struct TBBox_Rec_ @@ -294,10 +293,10 @@ if ( shift > 2 ) shift = 2; - q1 <<= shift; - q2 <<= shift; - q3 <<= shift; - q4 <<= shift; + q1 *= 1 << shift; + q2 *= 1 << shift; + q3 *= 1 << shift; + q4 *= 1 << shift; } else { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftbdf.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftbdf.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftbdf.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftbdf.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for accessing BDF-specific strings (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_BDF_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/services/svbdf.h> /* documentation is in ftbdf.h */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftbitmap.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftbitmap.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftbitmap.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftbitmap.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType utility functions for bitmaps (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,12 +16,11 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> -#include FT_BITMAP_H -#include FT_IMAGE_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/ftbitmap.h> +#include <freetype/ftimage.h> +#include <freetype/internal/ftobjs.h> /************************************************************************** @@ -909,13 +908,13 @@ #ifdef FT_DEBUG_LEVEL_TRACE FT_TRACE5(( "FT_Bitmap_Blend:\n" - " source bitmap: (%d, %d) -- (%d, %d); %d x %d\n", + " source bitmap: (%ld, %ld) -- (%ld, %ld); %d x %d\n", source_llx / 64, source_lly / 64, source_urx / 64, source_ury / 64, source_->width, source_->rows )); if ( target->width && target->rows ) - FT_TRACE5(( " target bitmap: (%d, %d) -- (%d, %d); %d x %d\n", + FT_TRACE5(( " target bitmap: (%ld, %ld) -- (%ld, %ld); %d x %d\n", target_llx / 64, target_lly / 64, target_urx / 64, target_ury / 64, target->width, target->rows )); @@ -923,7 +922,7 @@ FT_TRACE5(( " target bitmap: empty\n" )); if ( final_width && final_rows ) - FT_TRACE5(( " final bitmap: (%d, %d) -- (%d, %d); %d x %d\n", + FT_TRACE5(( " final bitmap: (%ld, %ld) -- (%ld, %ld); %d x %d\n", final_llx / 64, final_lly / 64, final_urx / 64, final_ury / 64, final_width, final_rows )); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftcalc.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftcalc.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftcalc.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftcalc.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Arithmetic computations (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -32,12 +32,11 @@ */ -#include <ft2build.h> -#include FT_GLYPH_H -#include FT_TRIGONOMETRY_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/ftglyph.h> +#include <freetype/fttrigon.h> +#include <freetype/internal/ftcalc.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftobjs.h> #ifdef FT_MULFIX_ASSEMBLER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftcid.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftcid.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftcid.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftcid.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for accessing CID font information. * - * Copyright (C) 2007-2019 by + * Copyright (C) 2007-2020 by * Derek Clegg and Michael Toftdal. * * This file is part of the FreeType project, and may only be used, @@ -16,10 +16,9 @@ */ -#include <ft2build.h> -#include FT_CID_H -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_CID_H +#include <freetype/ftcid.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/services/svcid.h> /* documentation is in ftcid.h */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftcolor.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftcolor.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftcolor.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftcolor.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType's glyph color management (body). * - * Copyright (C) 2018-2019 by + * Copyright (C) 2018-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_SFNT_H -#include FT_INTERNAL_TRUETYPE_TYPES_H -#include FT_COLOR_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/sfnt.h> +#include <freetype/internal/tttypes.h> +#include <freetype/ftcolor.h> #ifdef TT_CONFIG_OPTION_COLOR_LAYERS diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftdbgmem.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftdbgmem.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftdbgmem.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftdbgmem.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Memory debugger (body). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -18,11 +18,11 @@ #include <ft2build.h> #include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_MEMORY_H -#include FT_SYSTEM_H -#include FT_ERRORS_H -#include FT_TYPES_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftmemory.h> +#include <freetype/ftsystem.h> +#include <freetype/fterrors.h> +#include <freetype/fttypes.h> #ifdef FT_DEBUG_MEMORY @@ -621,8 +621,10 @@ if ( node->size < 0 ) ft_mem_debug_panic( - "freeing memory block at %p more than once at (%s:%ld)\n" - "block allocated at (%s:%ld) and released at (%s:%ld)", + "freeing memory block at %p more than once\n" + " at (%s:%ld)!\n" + " Block was allocated at (%s:%ld)\n" + " and released at (%s:%ld).", address, FT_FILENAME( _ft_debug_file ), _ft_debug_lineno, FT_FILENAME( node->source->file_name ), node->source->line_no, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftdebug.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftdebug.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftdebug.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftdebug.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Debugging and logging component (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -41,9 +41,8 @@ */ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_DEBUG_H +#include <freetype/freetype.h> +#include <freetype/internal/ftdebug.h> #ifdef FT_DEBUG_LEVEL_ERROR @@ -126,7 +125,7 @@ static const char* ft_trace_toggles[trace_count + 1] = { -#include FT_INTERNAL_TRACE_H +#include <freetype/internal/fttrace.h> NULL }; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/fterrors.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/fterrors.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/fterrors.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/fterrors.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for error code handling. * - * Copyright (C) 2018-2019 by + * Copyright (C) 2018-2020 by * Armin Hasitzka, David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,9 +16,8 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_ERRORS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/fterrors.h> /* documentation is in fterrors.h */ @@ -38,7 +37,7 @@ #define FT_ERRORDEF( e, v, s ) case v: return s; #define FT_ERROR_END_LIST } -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* defined( FT_CONFIG_OPTION_ERROR_STRINGS ) || ... */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftfntfmt.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftfntfmt.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftfntfmt.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftfntfmt.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType utility file for font formats (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,10 +16,9 @@ */ -#include <ft2build.h> -#include FT_FONT_FORMATS_H -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_FONT_FORMAT_H +#include <freetype/ftfntfmt.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/services/svfntfmt.h> /* documentation is in ftfntfmt.h */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftfstype.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftfstype.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftfstype.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftfstype.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType utility file to access FSType data (body). * - * Copyright (C) 2008-2019 by + * Copyright (C) 2008-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -15,11 +15,10 @@ * */ -#include <ft2build.h> -#include FT_TYPE1_TABLES_H -#include FT_TRUETYPE_TABLES_H -#include FT_INTERNAL_SERVICE_H -#include FT_SERVICE_POSTSCRIPT_INFO_H +#include <freetype/t1tables.h> +#include <freetype/tttables.h> +#include <freetype/internal/ftserv.h> +#include <freetype/internal/services/svpsinfo.h> /* documentation is in freetype.h */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftgasp.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftgasp.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftgasp.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftgasp.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Access of TrueType's `gasp' table (body). * - * Copyright (C) 2007-2019 by + * Copyright (C) 2007-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,9 +16,8 @@ */ -#include <ft2build.h> -#include FT_GASP_H -#include FT_INTERNAL_TRUETYPE_TYPES_H +#include <freetype/ftgasp.h> +#include <freetype/internal/tttypes.h> FT_EXPORT_DEF( FT_Int ) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftgloadr.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftgloadr.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftgloadr.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftgloadr.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType glyph loader (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_GLYPH_LOADER_H -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftgloadr.h> +#include <freetype/internal/ftmemory.h> +#include <freetype/internal/ftobjs.h> #undef FT_COMPONENT #define FT_COMPONENT gloader @@ -93,6 +92,7 @@ base->outline.n_points = 0; base->outline.n_contours = 0; + base->outline.flags = 0; base->num_subglyphs = 0; *current = *base; @@ -146,9 +146,9 @@ FT_Outline* current = &loader->current.outline; - current->points = base->points + base->n_points; - current->tags = base->tags + base->n_points; - current->contours = base->contours + base->n_contours; + current->points = FT_OFFSET( base->points, base->n_points ); + current->tags = FT_OFFSET( base->tags, base->n_points ); + current->contours = FT_OFFSET( base->contours, base->n_contours ); /* handle extra points table - if any */ if ( loader->use_extra ) @@ -169,6 +169,10 @@ FT_Memory memory = loader->memory; + if ( loader->max_points == 0 || + loader->base.extra_points != NULL ) + return FT_Err_Ok; + if ( !FT_NEW_ARRAY( loader->base.extra_points, 2 * loader->max_points ) ) { loader->use_extra = 1; @@ -189,7 +193,7 @@ FT_GlyphLoad current = &loader->current; - current->subglyphs = base->subglyphs + base->num_subglyphs; + current->subglyphs = FT_OFFSET( base->subglyphs, base->num_subglyphs ); } @@ -211,6 +215,10 @@ FT_UInt new_max, old_max; + error = FT_GlyphLoader_CreateExtra( loader ); + if ( error ) + return error; + /* check points & tags */ new_max = (FT_UInt)base->n_points + (FT_UInt)current->n_points + n_points; @@ -244,6 +252,10 @@ loader->max_points = new_max; } + error = FT_GlyphLoader_CreateExtra( loader ); + if ( error ) + return error; + /* check contours */ old_max = loader->max_contours; new_max = (FT_UInt)base->n_contours + (FT_UInt)current->n_contours + diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftglyph.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftglyph.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftglyph.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftglyph.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType convenience functions to handle glyphs (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -28,13 +28,14 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> -#include FT_GLYPH_H -#include FT_OUTLINE_H -#include FT_BITMAP_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/ftglyph.h> +#include <freetype/ftoutln.h> +#include <freetype/ftbitmap.h> +#include <freetype/internal/ftobjs.h> + +#include "ftbase.h" /************************************************************************** diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftgxval.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftgxval.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftgxval.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftgxval.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for validating TrueTypeGX/AAT tables (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * Masatake YAMATO, Redhat K.K, * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -25,11 +25,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_GX_VALIDATE_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/services/svgxval.h> /* documentation is in ftgxval.h */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/fthash.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/fthash.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/fthash.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/fthash.c 2022-11-11 15:29:17.000000000 +0800 @@ -39,9 +39,8 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_HASH_H -#include FT_INTERNAL_MEMORY_H +#include <freetype/internal/fthash.h> +#include <freetype/internal/ftmemory.h> #define INITIAL_HT_SIZE 241 diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftinit.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftinit.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftinit.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftinit.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType initialization layer (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -39,9 +39,9 @@ #include <ft2build.h> #include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_MODULE_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/ftmodapi.h> /************************************************************************** diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftlcdfil.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftlcdfil.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftlcdfil.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftlcdfil.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for color filtering of subpixel bitmap glyphs (body). * - * Copyright (C) 2006-2019 by + * Copyright (C) 2006-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,12 +16,11 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> -#include FT_LCD_FILTER_H -#include FT_IMAGE_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/ftlcdfil.h> +#include <freetype/ftimage.h> +#include <freetype/internal/ftobjs.h> #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftmac.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftmac.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftmac.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftmac.c 2022-11-11 15:29:17.000000000 +0800 @@ -8,7 +8,7 @@ * This file is for Mac OS X only; see builds/mac/ftoldmac.c for * classic platforms built by MPW. * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -65,10 +65,9 @@ */ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_TRUETYPE_TAGS_H -#include FT_INTERNAL_STREAM_H +#include <freetype/freetype.h> +#include <freetype/tttags.h> +#include <freetype/internal/ftstream.h> #include "ftbase.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftmm.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftmm.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftmm.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftmm.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Multiple Master font support (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,13 +16,12 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> -#include FT_MULTIPLE_MASTERS_H -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_MULTIPLE_MASTERS_H -#include FT_SERVICE_METRICS_VARIATIONS_H +#include <freetype/ftmm.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/services/svmm.h> +#include <freetype/internal/services/svmetric.h> /************************************************************************** diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftobjs.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftobjs.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftobjs.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftobjs.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType private base classes (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,32 +16,31 @@ */ -#include <ft2build.h> -#include FT_LIST_H -#include FT_OUTLINE_H -#include FT_FONT_FORMATS_H - -#include FT_INTERNAL_VALIDATE_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_RFORK_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_SFNT_H /* for SFNT_Load_Table_Func */ -#include FT_INTERNAL_POSTSCRIPT_AUX_H /* for PS_Driver */ - -#include FT_TRUETYPE_TABLES_H -#include FT_TRUETYPE_TAGS_H -#include FT_TRUETYPE_IDS_H - -#include FT_SERVICE_PROPERTIES_H -#include FT_SERVICE_SFNT_H -#include FT_SERVICE_POSTSCRIPT_NAME_H -#include FT_SERVICE_GLYPH_DICT_H -#include FT_SERVICE_TT_CMAP_H -#include FT_SERVICE_KERNING_H -#include FT_SERVICE_TRUETYPE_ENGINE_H +#include <freetype/ftlist.h> +#include <freetype/ftoutln.h> +#include <freetype/ftfntfmt.h> + +#include <freetype/internal/ftvalid.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftrfork.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/sfnt.h> /* for SFNT_Load_Table_Func */ +#include <freetype/internal/psaux.h> /* for PS_Driver */ + +#include <freetype/tttables.h> +#include <freetype/tttags.h> +#include <freetype/ttnameid.h> + +#include <freetype/internal/services/svprop.h> +#include <freetype/internal/services/svsfnt.h> +#include <freetype/internal/services/svpostnm.h> +#include <freetype/internal/services/svgldict.h> +#include <freetype/internal/services/svttcmap.h> +#include <freetype/internal/services/svkern.h> +#include <freetype/internal/services/svtteng.h> -#include FT_DRIVER_H +#include <freetype/ftdriver.h> #ifdef FT_CONFIG_OPTION_MAC_FONTS #include "ftbase.h" @@ -50,7 +49,7 @@ #ifdef FT_DEBUG_LEVEL_TRACE -#include FT_BITMAP_H +#include <freetype/ftbitmap.h> #if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ /* We disable the warning `conversion from XXX to YYY, */ @@ -1063,11 +1062,30 @@ slot->linearHoriAdvance / 65536.0 )); FT_TRACE5(( " linear y advance: %f\n", slot->linearVertAdvance / 65536.0 )); + FT_TRACE5(( "\n" )); FT_TRACE5(( " bitmap %dx%d, %s (mode %d)\n", slot->bitmap.width, slot->bitmap.rows, pixel_modes[slot->bitmap.pixel_mode], slot->bitmap.pixel_mode )); + FT_TRACE5(( "\n" )); + + { + FT_Glyph_Metrics* metrics = &slot->metrics; + + + FT_TRACE5(( " metrics:\n" )); + FT_TRACE5(( " width: %f\n", metrics->width / 64.0 )); + FT_TRACE5(( " height: %f\n", metrics->height / 64.0 )); + FT_TRACE5(( "\n" )); + FT_TRACE5(( " horiBearingX: %f\n", metrics->horiBearingX / 64.0 )); + FT_TRACE5(( " horiBearingY: %f\n", metrics->horiBearingY / 64.0 )); + FT_TRACE5(( " horiAdvance: %f\n", metrics->horiAdvance / 64.0 )); + FT_TRACE5(( "\n" )); + FT_TRACE5(( " vertBearingX: %f\n", metrics->vertBearingX / 64.0 )); + FT_TRACE5(( " vertBearingY: %f\n", metrics->vertBearingY / 64.0 )); + FT_TRACE5(( " vertAdvance: %f\n", metrics->vertAdvance / 64.0 )); + } #endif Exit: @@ -1842,15 +1860,15 @@ /* FT2 allocator takes signed long buffer length, * too large value causing overflow should be checked */ - FT_TRACE4(( " POST fragment #%d: length=0x%08x" - " total pfb_len=0x%08x\n", + FT_TRACE4(( " POST fragment #%d: length=0x%08lx" + " total pfb_len=0x%08lx\n", i, temp, pfb_len + temp + 6 )); if ( FT_MAC_RFORK_MAX_LEN < temp || FT_MAC_RFORK_MAX_LEN - temp < pfb_len + 6 ) { FT_TRACE2(( " MacOS resource length cannot exceed" - " 0x%08x\n", + " 0x%08lx\n", FT_MAC_RFORK_MAX_LEN )); error = FT_THROW( Invalid_Offset ); @@ -1861,13 +1879,13 @@ } FT_TRACE2(( " total buffer size to concatenate" - " %d POST fragments: 0x%08x\n", + " %ld POST fragments: 0x%08lx\n", resource_cnt, pfb_len + 2 )); if ( pfb_len + 2 < 6 ) { FT_TRACE2(( " too long fragment length makes" - " pfb_len confused: pfb_len=0x%08x\n", + " pfb_len confused: pfb_len=0x%08lx\n", pfb_len )); error = FT_THROW( Array_Too_Large ); @@ -1910,7 +1928,7 @@ goto Exit2; FT_TRACE3(( "POST fragment[%d]:" - " offsets=0x%08x, rlen=0x%08x, flags=0x%04x\n", + " offsets=0x%08lx, rlen=0x%08lx, flags=0x%04x\n", i, offsets[i], rlen, flags )); error = FT_ERR( Array_Too_Large ); @@ -1937,7 +1955,7 @@ else { FT_TRACE3(( " Write POST fragment #%d header (4-byte) to buffer" - " %p + 0x%08x\n", + " %p + 0x%08lx\n", i, pfb_data, pfb_lenpos )); if ( pfb_lenpos + 3 > pfb_len + 2 ) @@ -1952,7 +1970,7 @@ break; FT_TRACE3(( " Write POST fragment #%d header (6-byte) to buffer" - " %p + 0x%08x\n", + " %p + 0x%08lx\n", i, pfb_data, pfb_pos )); if ( pfb_pos + 6 > pfb_len + 2 ) @@ -1974,8 +1992,8 @@ if ( pfb_pos > pfb_len || pfb_pos + rlen > pfb_len ) goto Exit2; - FT_TRACE3(( " Load POST fragment #%d (%d byte) to buffer" - " %p + 0x%08x\n", + FT_TRACE3(( " Load POST fragment #%d (%ld byte) to buffer" + " %p + 0x%08lx\n", i, rlen, pfb_data, pfb_pos )); error = FT_Stream_Read( stream, (FT_Byte *)pfb_data + pfb_pos, rlen ); @@ -2260,7 +2278,7 @@ args2.flags = FT_OPEN_PATHNAME; args2.pathname = file_names[i] ? file_names[i] : args->pathname; - FT_TRACE3(( "Try rule %d: %s (offset=%d) ...", + FT_TRACE3(( "Try rule %d: %s (offset=%ld) ...", i, args2.pathname, offsets[i] )); error = FT_Stream_New( library, &args2, &stream2 ); @@ -2858,6 +2876,8 @@ if ( error ) { FT_FREE( node ); + if ( size ) + FT_FREE( size->internal ); FT_FREE( size ); } @@ -3213,9 +3233,9 @@ FT_Size_Metrics* metrics = &face->size->metrics; - FT_TRACE5(( " x scale: %d (%f)\n", + FT_TRACE5(( " x scale: %ld (%f)\n", metrics->x_scale, metrics->x_scale / 65536.0 )); - FT_TRACE5(( " y scale: %d (%f)\n", + FT_TRACE5(( " y scale: %ld (%f)\n", metrics->y_scale, metrics->y_scale / 65536.0 )); FT_TRACE5(( " ascender: %f\n", metrics->ascender / 64.0 )); FT_TRACE5(( " descender: %f\n", metrics->descender / 64.0 )); @@ -3288,9 +3308,9 @@ FT_Size_Metrics* metrics = &face->size->metrics; - FT_TRACE5(( " x scale: %d (%f)\n", + FT_TRACE5(( " x scale: %ld (%f)\n", metrics->x_scale, metrics->x_scale / 65536.0 )); - FT_TRACE5(( " y scale: %d (%f)\n", + FT_TRACE5(( " y scale: %ld (%f)\n", metrics->y_scale, metrics->y_scale / 65536.0 )); FT_TRACE5(( " ascender: %f\n", metrics->ascender / 64.0 )); FT_TRACE5(( " descender: %f\n", metrics->descender / 64.0 )); @@ -3450,7 +3470,7 @@ if ( akerning->x != orig_x_rounded || akerning->y != orig_y_rounded ) FT_TRACE5(( "FT_Get_Kerning: horizontal kerning" - " (%d, %d) scaled down to (%d, %d) pixels\n", + " (%ld, %ld) scaled down to (%ld, %ld) pixels\n", orig_x_rounded / 64, orig_y_rounded / 64, akerning->x / 64, akerning->y / 64 )); } @@ -3722,7 +3742,7 @@ if ( charcode > 0xFFFFFFFFUL ) { FT_TRACE1(( "FT_Get_Char_Index: too large charcode" )); - FT_TRACE1(( " 0x%x is truncated\n", charcode )); + FT_TRACE1(( " 0x%lx is truncated\n", charcode )); } result = cmap->clazz->char_index( cmap, (FT_UInt32)charcode ); @@ -3898,13 +3918,13 @@ { FT_TRACE1(( "FT_Face_GetCharVariantIndex:" " too large charcode" )); - FT_TRACE1(( " 0x%x is truncated\n", charcode )); + FT_TRACE1(( " 0x%lx is truncated\n", charcode )); } if ( variantSelector > 0xFFFFFFFFUL ) { FT_TRACE1(( "FT_Face_GetCharVariantIndex:" " too large variantSelector" )); - FT_TRACE1(( " 0x%x is truncated\n", variantSelector )); + FT_TRACE1(( " 0x%lx is truncated\n", variantSelector )); } result = vcmap->clazz->char_var_index( vcmap, ucmap, @@ -3941,13 +3961,13 @@ { FT_TRACE1(( "FT_Face_GetCharVariantIsDefault:" " too large charcode" )); - FT_TRACE1(( " 0x%x is truncated\n", charcode )); + FT_TRACE1(( " 0x%lx is truncated\n", charcode )); } if ( variantSelector > 0xFFFFFFFFUL ) { FT_TRACE1(( "FT_Face_GetCharVariantIsDefault:" " too large variantSelector" )); - FT_TRACE1(( " 0x%x is truncated\n", variantSelector )); + FT_TRACE1(( " 0x%lx is truncated\n", variantSelector )); } result = vcmap->clazz->char_var_default( vcmap, @@ -4010,7 +4030,7 @@ if ( charcode > 0xFFFFFFFFUL ) { FT_TRACE1(( "FT_Face_GetVariantsOfChar: too large charcode" )); - FT_TRACE1(( " 0x%x is truncated\n", charcode )); + FT_TRACE1(( " 0x%lx is truncated\n", charcode )); } result = vcmap->clazz->charvariant_list( vcmap, memory, @@ -4044,7 +4064,7 @@ if ( variantSelector > 0xFFFFFFFFUL ) { FT_TRACE1(( "FT_Get_Char_Index: too large variantSelector" )); - FT_TRACE1(( " 0x%x is truncated\n", variantSelector )); + FT_TRACE1(( " 0x%lx is truncated\n", variantSelector )); } result = vcmap->clazz->variantchar_list( vcmap, memory, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftotval.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftotval.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftotval.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftotval.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for validating OpenType tables (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -15,12 +15,11 @@ * */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_OPENTYPE_VALIDATE_H -#include FT_OPENTYPE_VALIDATE_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/services/svotval.h> +#include <freetype/ftotval.h> /* documentation is in ftotval.h */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftoutln.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftoutln.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftoutln.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftoutln.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType outline management (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,12 +16,11 @@ */ -#include <ft2build.h> -#include FT_OUTLINE_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_DEBUG_H -#include FT_TRIGONOMETRY_H +#include <freetype/ftoutln.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftcalc.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/fttrigon.h> /************************************************************************** @@ -275,7 +274,7 @@ first = (FT_UInt)last + 1; } - FT_TRACE5(( "FT_Outline_Decompose: Done\n", n )); + FT_TRACE5(( "FT_Outline_Decompose: Done\n" )); return FT_Err_Ok; Invalid_Outline: @@ -711,7 +710,7 @@ FT_Vector* limit; - if ( !outline || !matrix ) + if ( !outline || !matrix || !outline->points ) return; vec = outline->points; @@ -1061,6 +1060,11 @@ if ( cbox.xMin == cbox.xMax || cbox.yMin == cbox.yMax ) return FT_ORIENTATION_NONE; + /* Reject values large outlines. */ + if ( cbox.xMin < -0x1000000L || cbox.yMin < -0x1000000L || + cbox.xMax > 0x1000000L || cbox.yMax > 0x1000000L ) + return FT_ORIENTATION_NONE; + xshift = FT_MSB( (FT_UInt32)( FT_ABS( cbox.xMax ) | FT_ABS( cbox.xMin ) ) ) - 14; xshift = FT_MAX( xshift, 0 ); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftpatent.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftpatent.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftpatent.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftpatent.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * FreeType API for checking patented TrueType bytecode instructions * (body). Obsolete, retained for backward compatibility. * - * Copyright (C) 2007-2019 by + * Copyright (C) 2007-2020 by * David Turner. * * This file is part of the FreeType project, and may only be used, @@ -16,13 +16,12 @@ * */ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_TRUETYPE_TAGS_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_STREAM_H -#include FT_SERVICE_SFNT_H -#include FT_SERVICE_TRUETYPE_GLYF_H +#include <freetype/freetype.h> +#include <freetype/tttags.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/services/svsfnt.h> +#include <freetype/internal/services/svttglyf.h> /* documentation is in freetype.h */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftpfr.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftpfr.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftpfr.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftpfr.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for accessing PFR-specific data (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -15,11 +15,10 @@ * */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_PFR_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/services/svpfr.h> /* check the format */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftpic.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftpic.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftpic.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftpic.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,55 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftpic.c */ -/* */ -/* The FreeType position independent code services (body). */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_OBJECTS_H -#include "basepic.h" - -#ifdef FT_CONFIG_OPTION_PIC - - /* documentation is in ftpic.h */ - - FT_BASE_DEF( FT_Error ) - ft_pic_container_init( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Error error; - - - FT_MEM_SET( pic_container, 0, sizeof ( *pic_container ) ); - - error = ft_base_pic_init( library ); - if ( error ) - return error; - - return FT_Err_Ok; - } - - - /* Destroy the contents of the container. */ - FT_BASE_DEF( void ) - ft_pic_container_destroy( FT_Library library ) - { - ft_base_pic_free( library ); - } - -#endif /* FT_CONFIG_OPTION_PIC */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftpsprop.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftpsprop.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftpsprop.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftpsprop.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Get and set properties of PostScript drivers (body). * See `ftdriver.h' for available properties. * - * Copyright (C) 2017-2019 by + * Copyright (C) 2017-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,12 +17,11 @@ */ -#include <ft2build.h> -#include FT_DRIVER_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_POSTSCRIPT_PROPS_H +#include <freetype/ftdriver.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/psaux.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftpsprop.h> /************************************************************************** @@ -165,9 +164,9 @@ driver->hinting_engine = *hinting_engine; else error = FT_ERR( Unimplemented_Feature ); - - return error; } + + return error; } else if ( !ft_strcmp( property_name, "no-stem-darkening" ) ) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftrfork.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftrfork.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftrfork.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftrfork.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Embedded resource forks accessor (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * Masatake YAMATO and Redhat K.K. * * FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are @@ -24,10 +24,9 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_RFORK_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/ftrfork.h> #include "ftbase.h" @@ -240,7 +239,7 @@ (char)( 0xFF & ( tag_internal >> 16 ) ), (char)( 0xFF & ( tag_internal >> 8 ) ), (char)( 0xFF & ( tag_internal >> 0 ) ) )); - FT_TRACE3(( " : subcount=%d, suboffset=0x%04x\n", + FT_TRACE3(( " : subcount=%d, suboffset=0x%04lx\n", subcnt, rpos )); if ( tag_internal == tag ) @@ -286,7 +285,7 @@ ref[j].offset = temp & 0xFFFFFFL; FT_TRACE3(( " [%d]:" - " resource_id=0x%04x, offset=0x%08x\n", + " resource_id=0x%04x, offset=0x%08lx\n", j, (FT_UShort)ref[j].res_id, ref[j].offset )); } @@ -302,7 +301,7 @@ for ( j = 0; j < *count; j++ ) FT_TRACE3(( " [%d]:" - " resource_id=0x%04x, offset=0x%08x\n", + " resource_id=0x%04x, offset=0x%08lx\n", j, ref[j].res_id, ref[j].offset )); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftsnames.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftsnames.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftsnames.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftsnames.c 2022-11-11 15:29:17.000000000 +0800 @@ -7,7 +7,7 @@ * * This is _not_ used to retrieve glyph names! * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,12 +19,11 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> -#include FT_SFNT_NAMES_H -#include FT_INTERNAL_TRUETYPE_TYPES_H -#include FT_INTERNAL_STREAM_H +#include <freetype/ftsnames.h> +#include <freetype/internal/tttypes.h> +#include <freetype/internal/ftstream.h> #ifdef TT_CONFIG_OPTION_SFNT_NAMES diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftstream.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftstream.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftstream.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftstream.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * I/O stream support (body). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,9 +16,8 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftstream.h> +#include <freetype/internal/ftdebug.h> /************************************************************************** @@ -286,7 +285,7 @@ } stream->cursor = stream->base; - stream->limit = stream->cursor + count; + stream->limit = FT_OFFSET( stream->cursor, count ); stream->pos += read_bytes; } else diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftstroke.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftstroke.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftstroke.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftstroke.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType path stroker (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,13 +16,12 @@ */ -#include <ft2build.h> -#include FT_STROKER_H -#include FT_TRIGONOMETRY_H -#include FT_OUTLINE_H -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/ftstroke.h> +#include <freetype/fttrigon.h> +#include <freetype/ftoutln.h> +#include <freetype/internal/ftmemory.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftobjs.h> /* declare an extern to access `ft_outline_glyph_class' globally */ @@ -540,63 +539,52 @@ FT_Angle angle_start, FT_Angle angle_diff ) { - FT_Angle total, angle, step, rotate, next, theta; - FT_Vector a, b, a2, b2; - FT_Fixed length; + FT_Fixed coef; + FT_Vector a0, a1, a2, a3; + FT_Int i, arcs = 1; FT_Error error = FT_Err_Ok; - /* compute start point */ - FT_Vector_From_Polar( &a, radius, angle_start ); - a.x += center->x; - a.y += center->y; - - total = angle_diff; - angle = angle_start; - rotate = ( angle_diff >= 0 ) ? FT_ANGLE_PI2 : -FT_ANGLE_PI2; - - while ( total != 0 ) - { - step = total; - if ( step > FT_ARC_CUBIC_ANGLE ) - step = FT_ARC_CUBIC_ANGLE; - - else if ( step < -FT_ARC_CUBIC_ANGLE ) - step = -FT_ARC_CUBIC_ANGLE; - - next = angle + step; - theta = step; - if ( theta < 0 ) - theta = -theta; - - theta >>= 1; - - /* compute end point */ - FT_Vector_From_Polar( &b, radius, next ); - b.x += center->x; - b.y += center->y; - - /* compute first and second control points */ - length = FT_MulDiv( radius, FT_Sin( theta ) * 4, - ( 0x10000L + FT_Cos( theta ) ) * 3 ); - - FT_Vector_From_Polar( &a2, length, angle + rotate ); - a2.x += a.x; - a2.y += a.y; - - FT_Vector_From_Polar( &b2, length, next - rotate ); - b2.x += b.x; - b2.y += b.y; + /* number of cubic arcs to draw */ + while ( angle_diff > FT_ARC_CUBIC_ANGLE * arcs || + -angle_diff > FT_ARC_CUBIC_ANGLE * arcs ) + arcs++; + + /* control tangents */ + coef = FT_Tan( angle_diff / ( 4 * arcs ) ); + coef += coef / 3; + + /* compute start and first control point */ + FT_Vector_From_Polar( &a0, radius, angle_start ); + a1.x = FT_MulFix( -a0.y, coef ); + a1.y = FT_MulFix( a0.x, coef ); + + a0.x += center->x; + a0.y += center->y; + a1.x += a0.x; + a1.y += a0.y; + + for ( i = 1; i <= arcs; i++ ) + { + /* compute end and second control point */ + FT_Vector_From_Polar( &a3, radius, + angle_start + i * angle_diff / arcs ); + a2.x = FT_MulFix( a3.y, coef ); + a2.y = FT_MulFix( -a3.x, coef ); + + a3.x += center->x; + a3.y += center->y; + a2.x += a3.x; + a2.y += a3.y; /* add cubic arc */ - error = ft_stroke_border_cubicto( border, &a2, &b2, &b ); + error = ft_stroke_border_cubicto( border, &a1, &a2, &a3 ); if ( error ) break; - /* process the rest of the arc ?? */ - a = b; - total -= step; - angle = next; + /* a0 = a3; */ + a1.x = a3.x - a2.x + a3.x; + a1.y = a3.y - a2.y + a3.y; } return error; @@ -934,55 +922,40 @@ error = ft_stroker_arcto( stroker, side ); } - else if ( stroker->line_cap == FT_STROKER_LINECAP_SQUARE ) + else { - /* add a square cap */ - FT_Vector delta, delta2; - FT_Angle rotate = FT_SIDE_TO_ROTATE( side ); + /* add a square or butt cap */ + FT_Vector middle, delta; FT_Fixed radius = stroker->radius; FT_StrokeBorder border = stroker->borders + side; - FT_Vector_From_Polar( &delta2, radius, angle + rotate ); - FT_Vector_From_Polar( &delta, radius, angle ); - - delta.x += stroker->center.x + delta2.x; - delta.y += stroker->center.y + delta2.y; - - error = ft_stroke_border_lineto( border, &delta, FALSE ); - if ( error ) - goto Exit; - - FT_Vector_From_Polar( &delta2, radius, angle - rotate ); - FT_Vector_From_Polar( &delta, radius, angle ); - - delta.x += delta2.x + stroker->center.x; - delta.y += delta2.y + stroker->center.y; - - error = ft_stroke_border_lineto( border, &delta, FALSE ); - } - else if ( stroker->line_cap == FT_STROKER_LINECAP_BUTT ) - { - /* add a butt ending */ - FT_Vector delta; - FT_Angle rotate = FT_SIDE_TO_ROTATE( side ); - FT_Fixed radius = stroker->radius; - FT_StrokeBorder border = stroker->borders + side; + /* compute middle point and first angle point */ + FT_Vector_From_Polar( &middle, radius, angle ); + delta.x = side ? middle.y : -middle.y; + delta.y = side ? -middle.x : middle.x; + if ( stroker->line_cap == FT_STROKER_LINECAP_SQUARE ) + { + middle.x += stroker->center.x; + middle.y += stroker->center.y; + } + else /* FT_STROKER_LINECAP_BUTT */ + { + middle.x = stroker->center.x; + middle.y = stroker->center.y; + } - FT_Vector_From_Polar( &delta, radius, angle + rotate ); - - delta.x += stroker->center.x; - delta.y += stroker->center.y; + delta.x += middle.x; + delta.y += middle.y; error = ft_stroke_border_lineto( border, &delta, FALSE ); if ( error ) goto Exit; - FT_Vector_From_Polar( &delta, radius, angle - rotate ); - - delta.x += stroker->center.x; - delta.y += stroker->center.y; + /* compute second angle point */ + delta.x = middle.x - delta.x + middle.x; + delta.y = middle.y - delta.y + middle.y; error = ft_stroke_border_lineto( border, &delta, FALSE ); } @@ -1000,8 +973,8 @@ { FT_StrokeBorder border = stroker->borders + side; FT_Angle phi, theta, rotate; - FT_Fixed length, thcos; - FT_Vector delta; + FT_Fixed length; + FT_Vector sigma, delta; FT_Error error = FT_Err_Ok; FT_Bool intersect; /* use intersection of lines? */ @@ -1019,9 +992,12 @@ else { /* compute minimum required length of lines */ - FT_Fixed min_length = ft_pos_abs( FT_MulFix( stroker->radius, - FT_Tan( theta ) ) ); + FT_Fixed min_length; + + FT_Vector_Unit( &sigma, theta ); + min_length = + ft_pos_abs( FT_MulDiv( stroker->radius, sigma.y, sigma.x ) ); intersect = FT_BOOL( min_length && stroker->line_length >= min_length && @@ -1040,13 +1016,11 @@ else { /* compute median angle */ - phi = stroker->angle_in + theta; + phi = stroker->angle_in + theta + rotate; - thcos = FT_Cos( theta ); + length = FT_DivFix( stroker->radius, sigma.x ); - length = FT_DivFix( stroker->radius, thcos ); - - FT_Vector_From_Polar( &delta, length, phi + rotate ); + FT_Vector_From_Polar( &delta, length, phi ); delta.x += stroker->center.x; delta.y += stroker->center.y; } @@ -1073,10 +1047,10 @@ else { /* this is a mitered (pointed) or beveled (truncated) corner */ - FT_Fixed sigma = 0, radius = stroker->radius; - FT_Angle theta = 0, phi = 0; - FT_Fixed thcos = 0; - FT_Bool bevel, fixed_bevel; + FT_Fixed radius = stroker->radius; + FT_Vector sigma; + FT_Angle theta = 0, phi = 0; + FT_Bool bevel, fixed_bevel; rotate = FT_SIDE_TO_ROTATE( side ); @@ -1087,26 +1061,20 @@ fixed_bevel = FT_BOOL( stroker->line_join != FT_STROKER_LINEJOIN_MITER_VARIABLE ); + /* check miter limit first */ if ( !bevel ) { - theta = FT_Angle_Diff( stroker->angle_in, stroker->angle_out ); + theta = FT_Angle_Diff( stroker->angle_in, stroker->angle_out ) / 2; - if ( theta == FT_ANGLE_PI ) - { - theta = rotate; - phi = stroker->angle_in; - } - else - { - theta /= 2; - phi = stroker->angle_in + theta + rotate; - } + if ( theta == FT_ANGLE_PI2 ) + theta = -rotate; - thcos = FT_Cos( theta ); - sigma = FT_MulFix( stroker->miter_limit, thcos ); + phi = stroker->angle_in + theta + rotate; + + FT_Vector_From_Polar( &sigma, stroker->miter_limit, theta ); /* is miter limit exceeded? */ - if ( sigma < 0x10000L ) + if ( sigma.x < 0x10000L ) { /* don't create variable bevels for very small deviations; */ /* FT_Sin(x) = 0 for x <= 57 */ @@ -1133,36 +1101,34 @@ border->movable = FALSE; error = ft_stroke_border_lineto( border, &delta, FALSE ); } - else /* variable bevel */ + else /* variable bevel or clipped miter */ { /* the miter is truncated */ FT_Vector middle, delta; - FT_Fixed length; + FT_Fixed coef; - /* compute middle point */ + /* compute middle point and first angle point */ FT_Vector_From_Polar( &middle, FT_MulFix( radius, stroker->miter_limit ), phi ); + + coef = FT_DivFix( 0x10000L - sigma.x, sigma.y ); + delta.x = FT_MulFix( middle.y, coef ); + delta.y = FT_MulFix( -middle.x, coef ); + middle.x += stroker->center.x; middle.y += stroker->center.y; - - /* compute first angle point */ - length = FT_MulDiv( radius, 0x10000L - sigma, - ft_pos_abs( FT_Sin( theta ) ) ); - - FT_Vector_From_Polar( &delta, length, phi + rotate ); - delta.x += middle.x; - delta.y += middle.y; + delta.x += middle.x; + delta.y += middle.y; error = ft_stroke_border_lineto( border, &delta, FALSE ); if ( error ) goto Exit; /* compute second angle point */ - FT_Vector_From_Polar( &delta, length, phi - rotate ); - delta.x += middle.x; - delta.y += middle.y; + delta.x = middle.x - delta.x + middle.x; + delta.y = middle.y - delta.y + middle.y; error = ft_stroke_border_lineto( border, &delta, FALSE ); if ( error ) @@ -1189,7 +1155,7 @@ FT_Vector delta; - length = FT_DivFix( stroker->radius, thcos ); + length = FT_MulDiv( stroker->radius, stroker->miter_limit, sigma.x ); FT_Vector_From_Polar( &delta, length, phi ); delta.x += stroker->center.x; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftsynth.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftsynth.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftsynth.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftsynth.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType synthesizing code for emboldening and slanting (body). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,12 +16,11 @@ */ -#include <ft2build.h> -#include FT_SYNTHESIS_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H -#include FT_OUTLINE_H -#include FT_BITMAP_H +#include <freetype/ftsynth.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/ftoutln.h> +#include <freetype/ftbitmap.h> /************************************************************************** @@ -130,7 +129,7 @@ if ( ( ystr >> 6 ) > FT_INT_MAX || ( ystr >> 6 ) < FT_INT_MIN ) { FT_TRACE1(( "FT_GlyphSlot_Embolden:" )); - FT_TRACE1(( "too strong emboldening parameter ystr=%d\n", ystr )); + FT_TRACE1(( "too strong emboldening parameter ystr=%ld\n", ystr )); return; } error = FT_GlyphSlot_Own_Bitmap( slot ); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftsystem.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftsystem.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftsystem.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftsystem.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * ANSI-specific FreeType low-level system interface (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -27,11 +27,11 @@ #include <ft2build.h> #include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_SYSTEM_H -#include FT_ERRORS_H -#include FT_TYPES_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/ftsystem.h> +#include <freetype/fterrors.h> +#include <freetype/fttypes.h> /************************************************************************** diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/fttrigon.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/fttrigon.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/fttrigon.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/fttrigon.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType trigonometric functions (body). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -29,10 +29,9 @@ * */ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_CALC_H -#include FT_TRIGONOMETRY_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftcalc.h> +#include <freetype/fttrigon.h> /* the Cordic shrink factor 0.858785336480436 * 2^32 */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/fttype1.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/fttype1.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/fttype1.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/fttype1.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType utility file for PS names support (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_SERVICE_H -#include FT_SERVICE_POSTSCRIPT_INFO_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftserv.h> +#include <freetype/internal/services/svpsinfo.h> /* documentation is in t1tables.h */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftutil.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftutil.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftutil.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftutil.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType utility file for memory and list management (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_OBJECTS_H -#include FT_LIST_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftmemory.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/ftlist.h> /************************************************************************** diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftver.rc qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftver.rc --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftver.rc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftver.rc 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ /* */ /* FreeType VERSIONINFO resource for Windows DLLs. */ /* */ -/* Copyright (C) 2018-2019 by */ +/* Copyright (C) 2018-2020 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -18,8 +18,8 @@ #include<windows.h> -#define FT_VERSION 2,10,1,0 -#define FT_VERSION_STR "2.10.1" +#define FT_VERSION 2,10,4,0 +#define FT_VERSION_STR "2.10.4" VS_VERSION_INFO VERSIONINFO FILEVERSION FT_VERSION @@ -45,7 +45,7 @@ VALUE "FileVersion", FT_VERSION_STR VALUE "ProductName", "FreeType" VALUE "ProductVersion", FT_VERSION_STR - VALUE "LegalCopyright", "\251 2018-2019 The FreeType Project www.freetype.org. All rights reserved." + VALUE "LegalCopyright", "\251 2000-2020 The FreeType Project www.freetype.org. All rights reserved." VALUE "InternalName", "freetype" VALUE "OriginalFilename", FT_FILENAME END diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftwinfnt.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftwinfnt.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/ftwinfnt.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/ftwinfnt.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType API for accessing Windows FNT specific info (body). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_WINFONTS_H -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_WINFNT_H +#include <freetype/internal/ftdebug.h> +#include <freetype/ftwinfnt.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/services/svwinfnt.h> /* documentation is in ftwinfnt.h */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/base/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/base/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bdf/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bdf/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bdf/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bdf/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,31 +0,0 @@ -# FreeType 2 src/bdf Jamfile -# -# Copyright (C) 2002-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) bdf ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = bdfdrivr - bdflib - ; - } - else - { - _sources = bdf ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/bdf Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bdf/bdf.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bdf/bdf.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bdf/bdf.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bdf/bdf.c 2022-11-11 15:29:17.000000000 +0800 @@ -26,7 +26,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "bdflib.c" #include "bdfdrivr.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bdf/bdf.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bdf/bdf.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bdf/bdf.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bdf/bdf.h 2022-11-11 15:29:17.000000000 +0800 @@ -30,10 +30,9 @@ * Based on bdf.h,v 1.16 2000/03/16 20:08:51 mleisher */ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_HASH_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/fthash.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bdf/bdfdrivr.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bdf/bdfdrivr.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bdf/bdfdrivr.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bdf/bdfdrivr.c 2022-11-11 15:29:17.000000000 +0800 @@ -24,16 +24,15 @@ THE SOFTWARE. */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_OBJECTS_H -#include FT_BDF_H -#include FT_TRUETYPE_IDS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/ftbdf.h> +#include <freetype/ttnameid.h> -#include FT_SERVICE_BDF_H -#include FT_SERVICE_FONT_FORMAT_H +#include <freetype/internal/services/svbdf.h> +#include <freetype/internal/services/svfntfmt.h> #include "bdf.h" #include "bdfdrivr.h" @@ -184,7 +183,8 @@ Exit: if ( charcode > 0xFFFFFFFFUL ) { - FT_TRACE1(( "bdf_cmap_char_next: charcode 0x%x > 32bit API" )); + FT_TRACE1(( "bdf_cmap_char_next: charcode 0x%lx > 32bit API", + charcode )); *acharcode = 0; /* XXX: result should be changed to indicate an overflow error */ } @@ -402,10 +402,10 @@ bdf_property_t* prop = NULL; - FT_TRACE4(( " number of glyphs: allocated %d (used %d)\n", + FT_TRACE4(( " number of glyphs: allocated %ld (used %ld)\n", font->glyphs_size, font->glyphs_used )); - FT_TRACE4(( " number of unencoded glyphs: allocated %d (used %d)\n", + FT_TRACE4(( " number of unencoded glyphs: allocated %ld (used %ld)\n", font->unencoded_size, font->unencoded_used )); @@ -457,13 +457,13 @@ if ( font->font_ascent > 0x7FFF || font->font_ascent < -0x7FFF ) { font->font_ascent = font->font_ascent < 0 ? -0x7FFF : 0x7FFF; - FT_TRACE0(( "BDF_Face_Init: clamping font ascent to value %d\n", + FT_TRACE0(( "BDF_Face_Init: clamping font ascent to value %ld\n", font->font_ascent )); } if ( font->font_descent > 0x7FFF || font->font_descent < -0x7FFF ) { font->font_descent = font->font_descent < 0 ? -0x7FFF : 0x7FFF; - FT_TRACE0(( "BDF_Face_Init: clamping font descent to value %d\n", + FT_TRACE0(( "BDF_Face_Init: clamping font descent to value %ld\n", font->font_descent )); } @@ -504,7 +504,7 @@ prop->value.l < -0x504C2L ) { bsize->size = 0x7FFF; - FT_TRACE0(( "BDF_Face_Init: clamping point size to value %d\n", + FT_TRACE0(( "BDF_Face_Init: clamping point size to value %ld\n", bsize->size )); } else @@ -517,7 +517,7 @@ if ( font->point_size > 0x7FFF ) { bsize->size = 0x7FFF; - FT_TRACE0(( "BDF_Face_Init: clamping point size to value %d\n", + FT_TRACE0(( "BDF_Face_Init: clamping point size to value %ld\n", bsize->size )); } else @@ -539,7 +539,7 @@ if ( prop->value.l > 0x7FFF || prop->value.l < -0x7FFF ) { bsize->y_ppem = 0x7FFF << 6; - FT_TRACE0(( "BDF_Face_Init: clamping pixel size to value %d\n", + FT_TRACE0(( "BDF_Face_Init: clamping pixel size to value %ld\n", bsize->y_ppem )); } else @@ -615,7 +615,7 @@ for ( n = 0; n < font->glyphs_size; n++ ) { (face->en_table[n]).enc = cur[n].encoding; - FT_TRACE4(( " idx %d, val 0x%lX\n", n, cur[n].encoding )); + FT_TRACE4(( " idx %ld, val 0x%lX\n", n, cur[n].encoding )); (face->en_table[n]).glyph = (FT_UShort)n; if ( cur[n].encoding == font->default_char ) @@ -624,7 +624,7 @@ face->default_glyph = (FT_UInt)n; else FT_TRACE1(( "BDF_Face_Init:" - " idx %d is too large for this system\n", n )); + " idx %ld is too large for this system\n", n )); } } } @@ -825,7 +825,7 @@ bitmap->rows = glyph.bbx.height; bitmap->width = glyph.bbx.width; if ( glyph.bpr > FT_INT_MAX ) - FT_TRACE1(( "BDF_Glyph_Load: too large pitch %d is truncated\n", + FT_TRACE1(( "BDF_Glyph_Load: too large pitch %ld is truncated\n", glyph.bpr )); bitmap->pitch = (int)glyph.bpr; /* same as FT_Bitmap.pitch */ @@ -902,7 +902,8 @@ if ( prop->value.l > 0x7FFFFFFFL || prop->value.l < ( -1 - 0x7FFFFFFFL ) ) { FT_TRACE1(( "bdf_get_bdf_property:" - " too large integer 0x%x is truncated\n" )); + " too large integer 0x%lx is truncated\n", + prop->value.l )); } aproperty->type = BDF_PROPERTY_TYPE_INTEGER; aproperty->u.integer = (FT_Int32)prop->value.l; @@ -912,7 +913,8 @@ if ( prop->value.ul > 0xFFFFFFFFUL ) { FT_TRACE1(( "bdf_get_bdf_property:" - " too large cardinal 0x%x is truncated\n" )); + " too large cardinal 0x%lx is truncated\n", + prop->value.ul )); } aproperty->type = BDF_PROPERTY_TYPE_CARDINAL; aproperty->u.cardinal = (FT_UInt32)prop->value.ul; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bdf/bdfdrivr.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bdf/bdfdrivr.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bdf/bdfdrivr.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bdf/bdfdrivr.h 2022-11-11 15:29:17.000000000 +0800 @@ -28,8 +28,7 @@ #ifndef BDFDRIVR_H_ #define BDFDRIVR_H_ -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H +#include <freetype/internal/ftdrv.h> #include "bdf.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bdf/bdferror.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bdf/bdferror.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bdf/bdferror.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bdf/bdferror.h 2022-11-11 15:29:17.000000000 +0800 @@ -29,7 +29,7 @@ #ifndef BDFERROR_H_ #define BDFERROR_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -37,7 +37,7 @@ #define FT_ERR_PREFIX BDF_Err_ #define FT_ERR_BASE FT_Mod_Err_BDF -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* BDFERROR_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bdf/bdflib.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bdf/bdflib.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bdf/bdflib.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bdf/bdflib.c 2022-11-11 15:29:17.000000000 +0800 @@ -31,12 +31,11 @@ */ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/freetype.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/ftobjs.h> #include "bdf.h" #include "bdferror.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bzip2/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bzip2/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bzip2/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bzip2/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,18 +0,0 @@ -# FreeType 2 src/bzip2 Jamfile -# -# Copyright (C) 2010-2019 by -# Joel Klinghed -# -# based on `src/lzw/Jamfile' -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) bzip2 ; - -Library $(FT2_LIB) : ftbzip2.c ; - -# end of src/bzip2 Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bzip2/ftbzip2.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bzip2/ftbzip2.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bzip2/ftbzip2.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bzip2/ftbzip2.c 2022-11-11 15:29:17.000000000 +0800 @@ -8,7 +8,7 @@ * parse compressed PCF fonts, as found with many X11 server * distributions. * - * Copyright (C) 2010-2019 by + * Copyright (C) 2010-2020 by * Joel Klinghed. * * based on `src/gzip/ftgzip.c' @@ -22,15 +22,14 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_DEBUG_H -#include FT_BZIP2_H +#include <freetype/internal/ftmemory.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/ftbzip2.h> #include FT_CONFIG_STANDARD_LIBRARY_H -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -38,7 +37,7 @@ #define FT_ERR_PREFIX Bzip2_Err_ #define FT_ERR_BASE FT_Mod_Err_Bzip2 -#include FT_ERRORS_H +#include <freetype/fterrors.h> #ifdef FT_CONFIG_OPTION_USE_BZIP2 diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bzip2/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bzip2/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/bzip2/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/bzip2/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -2,7 +2,7 @@ # FreeType 2 BZIP2 support configuration rules # -# Copyright (C) 2010-2019 by +# Copyright (C) 2010-2020 by # Joel Klinghed. # # based on `src/lzw/rules.mk' diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,37 +0,0 @@ -# FreeType 2 src/cache Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) cache ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = ftcbasic - ftccache - ftcglyph - ftcimage - ftcmanag - ftccmap - ftcmru - ftcsbits - ; - } - else - { - _sources = ftcache ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/cache Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcache.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcache.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcache.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcache.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType Caching sub-system (body only). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,7 +17,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "ftcbasic.c" #include "ftccache.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcbasic.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcbasic.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcbasic.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcbasic.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType basic cache interface (body). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,10 +16,9 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_CACHE_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/ftcache.h> #include "ftcglyph.h" #include "ftcimage.h" #include "ftcsbits.h" @@ -111,7 +110,9 @@ if ( (FT_ULong)face->num_glyphs > FT_UINT_MAX || 0 > face->num_glyphs ) FT_TRACE1(( "ftc_basic_family_get_count:" - " too large number of glyphs in this face, truncated\n", + " the number of glyphs in this face is %ld,\n" + " " + " which is too much and thus truncated\n", face->num_glyphs )); if ( !error ) @@ -394,7 +395,7 @@ #if FT_ULONG_MAX > FT_UINT_MAX if ( load_flags > FT_UINT_MAX ) FT_TRACE1(( "FTC_ImageCache_LookupScaler:" - " higher bits in load_flags 0x%x are dropped\n", + " higher bits in load_flags 0x%lx are dropped\n", load_flags & ~((FT_ULong)FT_UINT_MAX) )); #endif @@ -594,7 +595,7 @@ #if FT_ULONG_MAX > FT_UINT_MAX if ( load_flags > FT_UINT_MAX ) FT_TRACE1(( "FTC_ImageCache_LookupScaler:" - " higher bits in load_flags 0x%x are dropped\n", + " higher bits in load_flags 0x%lx are dropped\n", load_flags & ~((FT_ULong)FT_UINT_MAX) )); #endif diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftccache.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftccache.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftccache.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftccache.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType internal cache interface (body). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,10 +16,9 @@ */ -#include <ft2build.h> #include "ftcmanag.h" -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdebug.h> #include "ftccback.h" #include "ftcerror.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftccache.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftccache.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftccache.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftccache.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType internal cache interface (specification). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,7 +19,7 @@ #ifndef FTCCACHE_H_ #define FTCCACHE_H_ - +#include <freetype/internal/compiler-macros.h> #include "ftcmru.h" FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftccback.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftccback.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftccback.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftccback.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Callback functions of the caching sub-system (specification only). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -18,14 +18,14 @@ #ifndef FTCCBACK_H_ #define FTCCBACK_H_ -#include <ft2build.h> -#include FT_CACHE_H +#include <freetype/ftcache.h> #include "ftcmru.h" #include "ftcimage.h" #include "ftcmanag.h" #include "ftcglyph.h" #include "ftcsbits.h" +FT_BEGIN_HEADER FT_LOCAL( void ) ftc_inode_free( FTC_Node inode, @@ -85,6 +85,7 @@ ftc_node_destroy( FTC_Node node, FTC_Manager manager ); +FT_END_HEADER #endif /* FTCCBACK_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftccmap.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftccmap.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftccmap.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftccmap.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType CharMap cache (body) * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,13 +16,12 @@ */ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_CACHE_H +#include <freetype/freetype.h> +#include <freetype/ftcache.h> #include "ftcmanag.h" -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftmemory.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdebug.h> #include "ftccback.h" #include "ftcerror.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcerror.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcerror.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcerror.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcerror.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Caching sub-system error codes (specification only). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -26,7 +26,7 @@ #ifndef FTCERROR_H_ #define FTCERROR_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -34,7 +34,7 @@ #define FT_ERR_PREFIX FTC_Err_ #define FT_ERR_BASE FT_Mod_Err_Cache -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* FTCERROR_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcglyph.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcglyph.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcglyph.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcglyph.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType Glyph Image (FT_Glyph) cache (body). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_CACHE_H +#include <freetype/internal/ftobjs.h> +#include <freetype/ftcache.h> #include "ftcglyph.h" -#include FT_ERRORS_H +#include <freetype/fterrors.h> #include "ftccback.h" #include "ftcerror.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcglyph.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcglyph.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcglyph.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcglyph.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType abstract glyph cache (specification). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -117,7 +117,6 @@ #define FTCGLYPH_H_ -#include <ft2build.h> #include "ftcmanag.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcimage.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcimage.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcimage.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcimage.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType Image cache (body). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_CACHE_H +#include <freetype/ftcache.h> #include "ftcimage.h" -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/internal/ftmemory.h> +#include <freetype/internal/ftobjs.h> #include "ftccback.h" #include "ftcerror.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcimage.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcimage.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcimage.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcimage.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType Generic Image cache (specification) * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -36,8 +36,7 @@ #define FTCIMAGE_H_ -#include <ft2build.h> -#include FT_CACHE_H +#include <freetype/ftcache.h> #include "ftcglyph.h" FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcmanag.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcmanag.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcmanag.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcmanag.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType Cache Manager (body). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,12 +16,11 @@ */ -#include <ft2build.h> -#include FT_CACHE_H +#include <freetype/ftcache.h> #include "ftcmanag.h" -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_SIZES_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/ftsizes.h> #include "ftccback.h" #include "ftcerror.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcmanag.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcmanag.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcmanag.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcmanag.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType Cache Manager (specification). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -63,8 +63,7 @@ #define FTCMANAG_H_ -#include <ft2build.h> -#include FT_CACHE_H +#include <freetype/ftcache.h> #include "ftcmru.h" #include "ftccache.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcmru.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcmru.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcmru.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcmru.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType MRU support (body). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_CACHE_H +#include <freetype/ftcache.h> #include "ftcmru.h" -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdebug.h> #include "ftcerror.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcmru.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcmru.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcmru.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcmru.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Simple MRU list-cache (specification). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -44,8 +44,8 @@ #define FTCMRU_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> +#include <freetype/internal/compiler-macros.h> #ifdef FREETYPE_H #error "freetype.h of FreeType 1 has been loaded!" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcsbits.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcsbits.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcsbits.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcsbits.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType sbits manager (body). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,12 +16,11 @@ */ -#include <ft2build.h> -#include FT_CACHE_H +#include <freetype/ftcache.h> #include "ftcsbits.h" -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_ERRORS_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/fterrors.h> #include "ftccback.h" #include "ftcerror.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcsbits.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcsbits.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/ftcsbits.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/ftcsbits.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * A small-bitmap cache (specification). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define FTCSBITS_H_ -#include <ft2build.h> -#include FT_CACHE_H +#include <freetype/ftcache.h> #include "ftcglyph.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cache/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cache/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 2000-2019 by +# Copyright (C) 2000-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,36 +0,0 @@ -# FreeType 2 src/cff Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) cff ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = cffcmap - cffdrivr - cffgload - cffload - cffobjs - cffparse - cffpic - ; - } - else - { - _sources = cff ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/cff Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2arrst.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2arrst.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2arrst.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2arrst.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,241 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2arrst.c */ -/* */ -/* Adobe's code for Array Stacks (body). */ -/* */ -/* Copyright 2007-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#include "cf2ft.h" -#include FT_INTERNAL_DEBUG_H - -#include "cf2glue.h" -#include "cf2arrst.h" - -#include "cf2error.h" - - - /* - * CF2_ArrStack uses an error pointer, to enable shared errors. - * Shared errors are necessary when multiple objects allow the program - * to continue after detecting errors. Only the first error should be - * recorded. - */ - - FT_LOCAL_DEF( void ) - cf2_arrstack_init( CF2_ArrStack arrstack, - FT_Memory memory, - FT_Error* error, - size_t sizeItem ) - { - FT_ASSERT( arrstack != NULL ); - - /* initialize the structure */ - arrstack->memory = memory; - arrstack->error = error; - arrstack->sizeItem = sizeItem; - arrstack->allocated = 0; - arrstack->chunk = 10; /* chunks of 10 items */ - arrstack->count = 0; - arrstack->totalSize = 0; - arrstack->ptr = NULL; - } - - - FT_LOCAL_DEF( void ) - cf2_arrstack_finalize( CF2_ArrStack arrstack ) - { - FT_Memory memory = arrstack->memory; /* for FT_FREE */ - - - FT_ASSERT( arrstack != NULL ); - - arrstack->allocated = 0; - arrstack->count = 0; - arrstack->totalSize = 0; - - /* free the data buffer */ - FT_FREE( arrstack->ptr ); - } - - - /* allocate or reallocate the buffer size; */ - /* return false on memory error */ - static FT_Bool - cf2_arrstack_setNumElements( CF2_ArrStack arrstack, - size_t numElements ) - { - FT_ASSERT( arrstack != NULL ); - - { - FT_Error error = FT_Err_Ok; /* for FT_REALLOC */ - FT_Memory memory = arrstack->memory; /* for FT_REALLOC */ - - size_t newSize = numElements * arrstack->sizeItem; - - - if ( numElements > FT_LONG_MAX / arrstack->sizeItem ) - goto exit; - - - FT_ASSERT( newSize > 0 ); /* avoid realloc with zero size */ - - if ( !FT_REALLOC( arrstack->ptr, arrstack->totalSize, newSize ) ) - { - arrstack->allocated = numElements; - arrstack->totalSize = newSize; - - if ( arrstack->count > numElements ) - { - /* we truncated the list! */ - CF2_SET_ERROR( arrstack->error, Stack_Overflow ); - arrstack->count = numElements; - return FALSE; - } - - return TRUE; /* success */ - } - } - - exit: - /* if there's not already an error, store this one */ - CF2_SET_ERROR( arrstack->error, Out_Of_Memory ); - - return FALSE; - } - - - /* set the count, ensuring allocation is sufficient */ - FT_LOCAL_DEF( void ) - cf2_arrstack_setCount( CF2_ArrStack arrstack, - size_t numElements ) - { - FT_ASSERT( arrstack != NULL ); - - if ( numElements > arrstack->allocated ) - { - /* expand the allocation first */ - if ( !cf2_arrstack_setNumElements( arrstack, numElements ) ) - return; - } - - arrstack->count = numElements; - } - - - /* clear the count */ - FT_LOCAL_DEF( void ) - cf2_arrstack_clear( CF2_ArrStack arrstack ) - { - FT_ASSERT( arrstack != NULL ); - - arrstack->count = 0; - } - - - /* current number of items */ - FT_LOCAL_DEF( size_t ) - cf2_arrstack_size( const CF2_ArrStack arrstack ) - { - FT_ASSERT( arrstack != NULL ); - - return arrstack->count; - } - - - FT_LOCAL_DEF( void* ) - cf2_arrstack_getBuffer( const CF2_ArrStack arrstack ) - { - FT_ASSERT( arrstack != NULL ); - - return arrstack->ptr; - } - - - /* return pointer to the given element */ - FT_LOCAL_DEF( void* ) - cf2_arrstack_getPointer( const CF2_ArrStack arrstack, - size_t idx ) - { - void* newPtr; - - - FT_ASSERT( arrstack != NULL ); - - if ( idx >= arrstack->count ) - { - /* overflow */ - CF2_SET_ERROR( arrstack->error, Stack_Overflow ); - idx = 0; /* choose safe default */ - } - - newPtr = (FT_Byte*)arrstack->ptr + idx * arrstack->sizeItem; - - return newPtr; - } - - - /* push (append) an element at the end of the list; */ - /* return false on memory error */ - /* TODO: should there be a length param for extra checking? */ - FT_LOCAL_DEF( void ) - cf2_arrstack_push( CF2_ArrStack arrstack, - const void* ptr ) - { - FT_ASSERT( arrstack != NULL ); - - if ( arrstack->count == arrstack->allocated ) - { - /* grow the buffer by one chunk */ - if ( !cf2_arrstack_setNumElements( - arrstack, arrstack->allocated + arrstack->chunk ) ) - { - /* on error, ignore the push */ - return; - } - } - - FT_ASSERT( ptr != NULL ); - - { - size_t offset = arrstack->count * arrstack->sizeItem; - void* newPtr = (FT_Byte*)arrstack->ptr + offset; - - - FT_MEM_COPY( newPtr, ptr, arrstack->sizeItem ); - arrstack->count += 1; - } - } - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2arrst.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2arrst.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2arrst.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2arrst.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,100 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2arrst.h */ -/* */ -/* Adobe's code for Array Stacks (specification). */ -/* */ -/* Copyright 2007-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CF2ARRST_H__ -#define __CF2ARRST_H__ - - -#include "cf2error.h" - - -FT_BEGIN_HEADER - - - /* need to define the struct here (not opaque) so it can be allocated by */ - /* clients */ - typedef struct CF2_ArrStackRec_ - { - FT_Memory memory; - FT_Error* error; - - size_t sizeItem; /* bytes per element */ - size_t allocated; /* items allocated */ - size_t chunk; /* allocation increment in items */ - size_t count; /* number of elements allocated */ - size_t totalSize; /* total bytes allocated */ - - void* ptr; /* ptr to data */ - - } CF2_ArrStackRec, *CF2_ArrStack; - - - FT_LOCAL( void ) - cf2_arrstack_init( CF2_ArrStack arrstack, - FT_Memory memory, - FT_Error* error, - size_t sizeItem ); - FT_LOCAL( void ) - cf2_arrstack_finalize( CF2_ArrStack arrstack ); - - FT_LOCAL( void ) - cf2_arrstack_setCount( CF2_ArrStack arrstack, - size_t numElements ); - FT_LOCAL( void ) - cf2_arrstack_clear( CF2_ArrStack arrstack ); - FT_LOCAL( size_t ) - cf2_arrstack_size( const CF2_ArrStack arrstack ); - - FT_LOCAL( void* ) - cf2_arrstack_getBuffer( const CF2_ArrStack arrstack ); - FT_LOCAL( void* ) - cf2_arrstack_getPointer( const CF2_ArrStack arrstack, - size_t idx ); - - FT_LOCAL( void ) - cf2_arrstack_push( CF2_ArrStack arrstack, - const void* ptr ); - - -FT_END_HEADER - - -#endif /* __CF2ARRST_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2blues.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2blues.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2blues.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2blues.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,579 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2blues.c */ -/* */ -/* Adobe's code for handling Blue Zones (body). */ -/* */ -/* Copyright 2009-2014 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#include "cf2ft.h" -#include FT_INTERNAL_DEBUG_H - -#include "cf2blues.h" -#include "cf2hints.h" -#include "cf2font.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_cf2blues - - - /* - * For blue values, the FreeType parser produces an array of integers, - * while the Adobe CFF engine produces an array of fixed. - * Define a macro to convert FreeType to fixed. - */ -#define cf2_blueToFixed( x ) cf2_intToFixed( x ) - - - FT_LOCAL_DEF( void ) - cf2_blues_init( CF2_Blues blues, - CF2_Font font ) - { - /* pointer to parsed font object */ - CFF_Decoder* decoder = font->decoder; - - CF2_Fixed zoneHeight; - CF2_Fixed maxZoneHeight = 0; - CF2_Fixed csUnitsPerPixel; - - size_t numBlueValues; - size_t numOtherBlues; - size_t numFamilyBlues; - size_t numFamilyOtherBlues; - - FT_Pos* blueValues; - FT_Pos* otherBlues; - FT_Pos* familyBlues; - FT_Pos* familyOtherBlues; - - size_t i; - CF2_Fixed emBoxBottom, emBoxTop; - -#if 0 - CF2_Int unitsPerEm = font->unitsPerEm; - - - if ( unitsPerEm == 0 ) - unitsPerEm = 1000; -#endif - - FT_ZERO( blues ); - blues->scale = font->innerTransform.d; - - cf2_getBlueMetrics( decoder, - &blues->blueScale, - &blues->blueShift, - &blues->blueFuzz ); - - cf2_getBlueValues( decoder, &numBlueValues, &blueValues ); - cf2_getOtherBlues( decoder, &numOtherBlues, &otherBlues ); - cf2_getFamilyBlues( decoder, &numFamilyBlues, &familyBlues ); - cf2_getFamilyOtherBlues( decoder, &numFamilyOtherBlues, &familyOtherBlues ); - - /* - * synthetic em box hint heuristic - * - * Apply this when ideographic dictionary (LanguageGroup 1) has no - * real alignment zones. Adobe tools generate dummy zones at -250 and - * 1100 for a 1000 unit em. Fonts with ICF-based alignment zones - * should not enable the heuristic. When the heuristic is enabled, - * the font's blue zones are ignored. - * - */ - - /* get em box from OS/2 typoAscender/Descender */ - /* TODO: FreeType does not parse these metrics. Skip them for now. */ -#if 0 - FCM_getHorizontalLineMetrics( &e, - font->font, - &ascender, - &descender, - &linegap ); - if ( ascender - descender == unitsPerEm ) - { - emBoxBottom = cf2_intToFixed( descender ); - emBoxTop = cf2_intToFixed( ascender ); - } - else -#endif - { - emBoxBottom = CF2_ICF_Bottom; - emBoxTop = CF2_ICF_Top; - } - - if ( cf2_getLanguageGroup( decoder ) == 1 && - ( numBlueValues == 0 || - ( numBlueValues == 4 && - cf2_blueToFixed( blueValues[0] ) < emBoxBottom && - cf2_blueToFixed( blueValues[1] ) < emBoxBottom && - cf2_blueToFixed( blueValues[2] ) > emBoxTop && - cf2_blueToFixed( blueValues[3] ) > emBoxTop ) ) ) - { - /* - * Construct hint edges suitable for synthetic ghost hints at top - * and bottom of em box. +-CF2_MIN_COUNTER allows for unhinted - * features above or below the last hinted edge. This also gives a - * net 1 pixel boost to the height of ideographic glyphs. - * - * Note: Adjust synthetic hints outward by epsilon (0x.0001) to - * avoid interference. E.g., some fonts have real hints at - * 880 and -120. - */ - - blues->emBoxBottomEdge.csCoord = emBoxBottom - CF2_FIXED_EPSILON; - blues->emBoxBottomEdge.dsCoord = cf2_fixedRound( - FT_MulFix( - blues->emBoxBottomEdge.csCoord, - blues->scale ) ) - - CF2_MIN_COUNTER; - blues->emBoxBottomEdge.scale = blues->scale; - blues->emBoxBottomEdge.flags = CF2_GhostBottom | - CF2_Locked | - CF2_Synthetic; - - blues->emBoxTopEdge.csCoord = emBoxTop + CF2_FIXED_EPSILON + - 2 * font->darkenY; - blues->emBoxTopEdge.dsCoord = cf2_fixedRound( - FT_MulFix( - blues->emBoxTopEdge.csCoord, - blues->scale ) ) + - CF2_MIN_COUNTER; - blues->emBoxTopEdge.scale = blues->scale; - blues->emBoxTopEdge.flags = CF2_GhostTop | - CF2_Locked | - CF2_Synthetic; - - blues->doEmBoxHints = TRUE; /* enable the heuristic */ - - return; - } - - /* copy `BlueValues' and `OtherBlues' to a combined array of top and */ - /* bottom zones */ - for ( i = 0; i < numBlueValues; i += 2 ) - { - blues->zone[blues->count].csBottomEdge = - cf2_blueToFixed( blueValues[i] ); - blues->zone[blues->count].csTopEdge = - cf2_blueToFixed( blueValues[i + 1] ); - - zoneHeight = blues->zone[blues->count].csTopEdge - - blues->zone[blues->count].csBottomEdge; - - if ( zoneHeight < 0 ) - { - FT_TRACE4(( "cf2_blues_init: ignoring negative zone height\n" )); - continue; /* reject this zone */ - } - - if ( zoneHeight > maxZoneHeight ) - { - /* take maximum before darkening adjustment */ - /* so overshoot suppression point doesn't change */ - maxZoneHeight = zoneHeight; - } - - /* adjust both edges of top zone upward by twice darkening amount */ - if ( i != 0 ) - { - blues->zone[blues->count].csTopEdge += 2 * font->darkenY; - blues->zone[blues->count].csBottomEdge += 2 * font->darkenY; - } - - /* first `BlueValue' is bottom zone; others are top */ - if ( i == 0 ) - { - blues->zone[blues->count].bottomZone = - TRUE; - blues->zone[blues->count].csFlatEdge = - blues->zone[blues->count].csTopEdge; - } - else - { - blues->zone[blues->count].bottomZone = - FALSE; - blues->zone[blues->count].csFlatEdge = - blues->zone[blues->count].csBottomEdge; - } - - blues->count += 1; - } - - for ( i = 0; i < numOtherBlues; i += 2 ) - { - blues->zone[blues->count].csBottomEdge = - cf2_blueToFixed( otherBlues[i] ); - blues->zone[blues->count].csTopEdge = - cf2_blueToFixed( otherBlues[i + 1] ); - - zoneHeight = blues->zone[blues->count].csTopEdge - - blues->zone[blues->count].csBottomEdge; - - if ( zoneHeight < 0 ) - { - FT_TRACE4(( "cf2_blues_init: ignoring negative zone height\n" )); - continue; /* reject this zone */ - } - - if ( zoneHeight > maxZoneHeight ) - { - /* take maximum before darkening adjustment */ - /* so overshoot suppression point doesn't change */ - maxZoneHeight = zoneHeight; - } - - /* Note: bottom zones are not adjusted for darkening amount */ - - /* all OtherBlues are bottom zone */ - blues->zone[blues->count].bottomZone = - TRUE; - blues->zone[blues->count].csFlatEdge = - blues->zone[blues->count].csTopEdge; - - blues->count += 1; - } - - /* Adjust for FamilyBlues */ - - /* Search for the nearest flat edge in `FamilyBlues' or */ - /* `FamilyOtherBlues'. According to the Black Book, any matching edge */ - /* must be within one device pixel */ - - csUnitsPerPixel = FT_DivFix( cf2_intToFixed( 1 ), blues->scale ); - - /* loop on all zones in this font */ - for ( i = 0; i < blues->count; i++ ) - { - size_t j; - CF2_Fixed minDiff; - CF2_Fixed flatFamilyEdge, diff; - /* value for this font */ - CF2_Fixed flatEdge = blues->zone[i].csFlatEdge; - - - if ( blues->zone[i].bottomZone ) - { - /* In a bottom zone, the top edge is the flat edge. */ - /* Search `FamilyOtherBlues' for bottom zones; look for closest */ - /* Family edge that is within the one pixel threshold. */ - - minDiff = CF2_FIXED_MAX; - - for ( j = 0; j < numFamilyOtherBlues; j += 2 ) - { - /* top edge */ - flatFamilyEdge = cf2_blueToFixed( familyOtherBlues[j + 1] ); - - diff = cf2_fixedAbs( flatEdge - flatFamilyEdge ); - - if ( diff < minDiff && diff < csUnitsPerPixel ) - { - blues->zone[i].csFlatEdge = flatFamilyEdge; - minDiff = diff; - - if ( diff == 0 ) - break; - } - } - - /* check the first member of FamilyBlues, which is a bottom zone */ - if ( numFamilyBlues >= 2 ) - { - /* top edge */ - flatFamilyEdge = cf2_blueToFixed( familyBlues[1] ); - - diff = cf2_fixedAbs( flatEdge - flatFamilyEdge ); - - if ( diff < minDiff && diff < csUnitsPerPixel ) - blues->zone[i].csFlatEdge = flatFamilyEdge; - } - } - else - { - /* In a top zone, the bottom edge is the flat edge. */ - /* Search `FamilyBlues' for top zones; skip first zone, which is a */ - /* bottom zone; look for closest Family edge that is within the */ - /* one pixel threshold */ - - minDiff = CF2_FIXED_MAX; - - for ( j = 2; j < numFamilyBlues; j += 2 ) - { - /* bottom edge */ - flatFamilyEdge = cf2_blueToFixed( familyBlues[j] ); - - /* adjust edges of top zone upward by twice darkening amount */ - flatFamilyEdge += 2 * font->darkenY; /* bottom edge */ - - diff = cf2_fixedAbs( flatEdge - flatFamilyEdge ); - - if ( diff < minDiff && diff < csUnitsPerPixel ) - { - blues->zone[i].csFlatEdge = flatFamilyEdge; - minDiff = diff; - - if ( diff == 0 ) - break; - } - } - } - } - - /* TODO: enforce separation of zones, including BlueFuzz */ - - /* Adjust BlueScale; similar to AdjustBlueScale() in coretype */ - /* `bcsetup.c'. */ - - if ( maxZoneHeight > 0 ) - { - if ( blues->blueScale > FT_DivFix( cf2_intToFixed( 1 ), - maxZoneHeight ) ) - { - /* clamp at maximum scale */ - blues->blueScale = FT_DivFix( cf2_intToFixed( 1 ), - maxZoneHeight ); - } - - /* - * TODO: Revisit the bug fix for 613448. The minimum scale - * requirement catches a number of library fonts. For - * example, with default BlueScale (.039625) and 0.4 minimum, - * the test below catches any font with maxZoneHeight < 10.1. - * There are library fonts ranging from 2 to 10 that get - * caught, including e.g., Eurostile LT Std Medium with - * maxZoneHeight of 6. - * - */ -#if 0 - if ( blueScale < .4 / maxZoneHeight ) - { - tetraphilia_assert( 0 ); - /* clamp at minimum scale, per bug 0613448 fix */ - blueScale = .4 / maxZoneHeight; - } -#endif - - } - - /* - * Suppress overshoot and boost blue zones at small sizes. Boost - * amount varies linearly from 0.5 pixel near 0 to 0 pixel at - * blueScale cutoff. - * Note: This boost amount is different from the coretype heuristic. - * - */ - - if ( blues->scale < blues->blueScale ) - { - blues->suppressOvershoot = TRUE; - - /* Change rounding threshold for `dsFlatEdge'. */ - /* Note: constant changed from 0.5 to 0.6 to avoid a problem with */ - /* 10ppem Arial */ - - blues->boost = cf2_floatToFixed( .6 ) - - FT_MulDiv( cf2_floatToFixed ( .6 ), - blues->scale, - blues->blueScale ); - if ( blues->boost > 0x7FFF ) - { - /* boost must remain less than 0.5, or baseline could go negative */ - blues->boost = 0x7FFF; - } - } - - /* boost and darkening have similar effects; don't do both */ - if ( font->stemDarkened ) - blues->boost = 0; - - /* set device space alignment for each zone; */ - /* apply boost amount before rounding flat edge */ - - for ( i = 0; i < blues->count; i++ ) - { - if ( blues->zone[i].bottomZone ) - blues->zone[i].dsFlatEdge = cf2_fixedRound( - FT_MulFix( - blues->zone[i].csFlatEdge, - blues->scale ) - - blues->boost ); - else - blues->zone[i].dsFlatEdge = cf2_fixedRound( - FT_MulFix( - blues->zone[i].csFlatEdge, - blues->scale ) + - blues->boost ); - } - } - - - /* - * Check whether `stemHint' is captured by one of the blue zones. - * - * Zero, one or both edges may be valid; only valid edges can be - * captured. For compatibility with CoolType, search top and bottom - * zones in the same pass (see `BlueLock'). If a hint is captured, - * return true and position the edge(s) in one of 3 ways: - * - * 1) If `BlueScale' suppresses overshoot, position the captured edge - * at the flat edge of the zone. - * 2) If overshoot is not suppressed and `BlueShift' requires - * overshoot, position the captured edge a minimum of 1 device pixel - * from the flat edge. - * 3) If overshoot is not suppressed or required, position the captured - * edge at the nearest device pixel. - * - */ - FT_LOCAL_DEF( FT_Bool ) - cf2_blues_capture( const CF2_Blues blues, - CF2_Hint bottomHintEdge, - CF2_Hint topHintEdge ) - { - /* TODO: validate? */ - CF2_Fixed csFuzz = blues->blueFuzz; - - /* new position of captured edge */ - CF2_Fixed dsNew; - - /* amount that hint is moved when positioned */ - CF2_Fixed dsMove = 0; - - FT_Bool captured = FALSE; - CF2_UInt i; - - - /* assert edge flags are consistent */ - FT_ASSERT( !cf2_hint_isTop( bottomHintEdge ) && - !cf2_hint_isBottom( topHintEdge ) ); - - /* TODO: search once without blue fuzz for compatibility with coretype? */ - for ( i = 0; i < blues->count; i++ ) - { - if ( blues->zone[i].bottomZone && - cf2_hint_isBottom( bottomHintEdge ) ) - { - if ( ( blues->zone[i].csBottomEdge - csFuzz ) <= - bottomHintEdge->csCoord && - bottomHintEdge->csCoord <= - ( blues->zone[i].csTopEdge + csFuzz ) ) - { - /* bottom edge captured by bottom zone */ - - if ( blues->suppressOvershoot ) - dsNew = blues->zone[i].dsFlatEdge; - - else if ( ( blues->zone[i].csTopEdge - bottomHintEdge->csCoord ) >= - blues->blueShift ) - { - /* guarantee minimum of 1 pixel overshoot */ - dsNew = FT_MIN( - cf2_fixedRound( bottomHintEdge->dsCoord ), - blues->zone[i].dsFlatEdge - cf2_intToFixed( 1 ) ); - } - - else - { - /* simply round captured edge */ - dsNew = cf2_fixedRound( bottomHintEdge->dsCoord ); - } - - dsMove = dsNew - bottomHintEdge->dsCoord; - captured = TRUE; - - break; - } - } - - if ( !blues->zone[i].bottomZone && cf2_hint_isTop( topHintEdge ) ) - { - if ( ( blues->zone[i].csBottomEdge - csFuzz ) <= - topHintEdge->csCoord && - topHintEdge->csCoord <= - ( blues->zone[i].csTopEdge + csFuzz ) ) - { - /* top edge captured by top zone */ - - if ( blues->suppressOvershoot ) - dsNew = blues->zone[i].dsFlatEdge; - - else if ( ( topHintEdge->csCoord - blues->zone[i].csBottomEdge ) >= - blues->blueShift ) - { - /* guarantee minimum of 1 pixel overshoot */ - dsNew = FT_MAX( - cf2_fixedRound( topHintEdge->dsCoord ), - blues->zone[i].dsFlatEdge + cf2_intToFixed( 1 ) ); - } - - else - { - /* simply round captured edge */ - dsNew = cf2_fixedRound( topHintEdge->dsCoord ); - } - - dsMove = dsNew - topHintEdge->dsCoord; - captured = TRUE; - - break; - } - } - } - - if ( captured ) - { - /* move both edges and flag them `locked' */ - if ( cf2_hint_isValid( bottomHintEdge ) ) - { - bottomHintEdge->dsCoord += dsMove; - cf2_hint_lock( bottomHintEdge ); - } - - if ( cf2_hint_isValid( topHintEdge ) ) - { - topHintEdge->dsCoord += dsMove; - cf2_hint_lock( topHintEdge ); - } - } - - return captured; - } - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2blues.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2blues.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2blues.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2blues.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,185 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2blues.h */ -/* */ -/* Adobe's code for handling Blue Zones (specification). */ -/* */ -/* Copyright 2009-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - - /* - * A `CF2_Blues' object stores the blue zones (horizontal alignment - * zones) of a font. These are specified in the CFF private dictionary - * by `BlueValues', `OtherBlues', `FamilyBlues', and `FamilyOtherBlues'. - * Each zone is defined by a top and bottom edge in character space. - * Further, each zone is either a top zone or a bottom zone, as recorded - * by `bottomZone'. - * - * The maximum number of `BlueValues' and `FamilyBlues' is 7 each. - * However, these are combined to produce a total of 7 zones. - * Similarly, the maximum number of `OtherBlues' and `FamilyOtherBlues' - * is 5 and these are combined to produce an additional 5 zones. - * - * Blue zones are used to `capture' hints and force them to a common - * alignment point. This alignment is recorded in device space in - * `dsFlatEdge'. Except for this value, a `CF2_Blues' object could be - * constructed independently of scaling. Construction may occur once - * the matrix is known. Other features implemented in the Capture - * method are overshoot suppression, overshoot enforcement, and Blue - * Boost. - * - * Capture is determined by `BlueValues' and `OtherBlues', but the - * alignment point may be adjusted to the scaled flat edge of - * `FamilyBlues' or `FamilyOtherBlues'. No alignment is done to the - * curved edge of a zone. - * - */ - - -#ifndef __CF2BLUES_H__ -#define __CF2BLUES_H__ - - -#include "cf2glue.h" - - -FT_BEGIN_HEADER - - - /* - * `CF2_Hint' is shared by `cf2hints.h' and - * `cf2blues.h', but `cf2blues.h' depends on - * `cf2hints.h', so define it here. Note: The typedef is in - * `cf2glue.h'. - * - */ - enum - { - CF2_GhostBottom = 0x1, /* a single bottom edge */ - CF2_GhostTop = 0x2, /* a single top edge */ - CF2_PairBottom = 0x4, /* the bottom edge of a stem hint */ - CF2_PairTop = 0x8, /* the top edge of a stem hint */ - CF2_Locked = 0x10, /* this edge has been aligned */ - /* by a blue zone */ - CF2_Synthetic = 0x20 /* this edge was synthesized */ - }; - - - /* - * Default value for OS/2 typoAscender/Descender when their difference - * is not equal to `unitsPerEm'. The default is based on -250 and 1100 - * in `CF2_Blues', assuming 1000 units per em here. - * - */ - enum - { - CF2_ICF_Top = cf2_intToFixed( 880 ), - CF2_ICF_Bottom = cf2_intToFixed( -120 ) - }; - - - /* - * Constant used for hint adjustment and for synthetic em box hint - * placement. - */ -#define CF2_MIN_COUNTER cf2_floatToFixed( 0.5 ) - - - /* shared typedef is in cf2glue.h */ - struct CF2_HintRec_ - { - CF2_UInt flags; /* attributes of the edge */ - size_t index; /* index in original stem hint array */ - /* (if not synthetic) */ - CF2_Fixed csCoord; - CF2_Fixed dsCoord; - CF2_Fixed scale; - }; - - - typedef struct CF2_BlueRec_ - { - CF2_Fixed csBottomEdge; - CF2_Fixed csTopEdge; - CF2_Fixed csFlatEdge; /* may be from either local or Family zones */ - CF2_Fixed dsFlatEdge; /* top edge of bottom zone or bottom edge */ - /* of top zone (rounded) */ - FT_Bool bottomZone; - - } CF2_BlueRec; - - - /* max total blue zones is 12 */ - enum - { - CF2_MAX_BLUES = 7, - CF2_MAX_OTHERBLUES = 5 - }; - - - typedef struct CF2_BluesRec_ - { - CF2_Fixed scale; - CF2_UInt count; - FT_Bool suppressOvershoot; - FT_Bool doEmBoxHints; - - CF2_Fixed blueScale; - CF2_Fixed blueShift; - CF2_Fixed blueFuzz; - - CF2_Fixed boost; - - CF2_HintRec emBoxTopEdge; - CF2_HintRec emBoxBottomEdge; - - CF2_BlueRec zone[CF2_MAX_BLUES + CF2_MAX_OTHERBLUES]; - - } CF2_BluesRec, *CF2_Blues; - - - FT_LOCAL( void ) - cf2_blues_init( CF2_Blues blues, - CF2_Font font ); - FT_LOCAL( FT_Bool ) - cf2_blues_capture( const CF2_Blues blues, - CF2_Hint bottomHintEdge, - CF2_Hint topHintEdge ); - - -FT_END_HEADER - - -#endif /* __CF2BLUES_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2error.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2error.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2error.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2error.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,52 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2error.c */ -/* */ -/* Adobe's code for error handling (body). */ -/* */ -/* Copyright 2006-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#include "cf2ft.h" -#include "cf2error.h" - - - FT_LOCAL_DEF( void ) - cf2_setError( FT_Error* error, - FT_Error value ) - { - if ( error && *error == 0 ) - *error = value; - } - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2error.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2error.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2error.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2error.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,119 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2error.h */ -/* */ -/* Adobe's code for error handling (specification). */ -/* */ -/* Copyright 2006-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CF2ERROR_H__ -#define __CF2ERROR_H__ - - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#undef FT_ERR_PREFIX -#define FT_ERR_PREFIX CF2_Err_ -#define FT_ERR_BASE FT_Mod_Err_CF2 - - -#include FT_ERRORS_H -#include "cf2ft.h" - - -FT_BEGIN_HEADER - - - /* - * A poor-man error facility. - * - * This code being written in vanilla C, doesn't have the luxury of a - * language-supported exception mechanism such as the one available in - * Java. Instead, we are stuck with using error codes that must be - * carefully managed and preserved. However, it is convenient for us to - * model our error mechanism on a Java-like exception mechanism. - * When we assign an error code we are thus `throwing' an error. - * - * The perservation of an error code is done by coding convention. - * Upon a function call if the error code is anything other than - * `FT_Err_Ok', which is guaranteed to be zero, we - * will return without altering that error. This will allow the - * error to propogate and be handled at the appropriate location in - * the code. - * - * This allows a style of code where the error code is initialized - * up front and a block of calls are made with the error code only - * being checked after the block. If a new error occurs, the original - * error will be preserved and a functional no-op should result in any - * subsequent function that has an initial error code not equal to - * `FT_Err_Ok'. - * - * Errors are encoded by calling the `FT_THROW' macro. For example, - * - * { - * FT_Error e; - * - * - * ... - * e = FT_THROW( Out_Of_Memory ); - * } - * - */ - - - /* Set error code to a particular value. */ - FT_LOCAL( void ) - cf2_setError( FT_Error* error, - FT_Error value ); - - - /* - * A macro that conditionally sets an error code. - * - * This macro will first check whether `error' is set; - * if not, it will set it to `e'. - * - */ -#define CF2_SET_ERROR( error, e ) \ - cf2_setError( error, FT_THROW( e ) ) - - -FT_END_HEADER - - -#endif /* __CF2ERROR_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2fixed.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2fixed.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2fixed.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2fixed.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,95 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2fixed.h */ -/* */ -/* Adobe's code for Fixed Point Mathematics (specification only). */ -/* */ -/* Copyright 2007-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CF2FIXED_H__ -#define __CF2FIXED_H__ - - -FT_BEGIN_HEADER - - - /* rasterizer integer and fixed point arithmetic must be 32-bit */ - -#define CF2_Fixed CF2_F16Dot16 - typedef FT_Int32 CF2_Frac; /* 2.30 fixed point */ - - -#define CF2_FIXED_MAX ( (CF2_Fixed)0x7FFFFFFFL ) -#define CF2_FIXED_MIN ( (CF2_Fixed)0x80000000L ) -#define CF2_FIXED_ONE 0x10000L -#define CF2_FIXED_EPSILON 0x0001 - - /* in C 89, left and right shift of negative numbers is */ - /* implementation specific behaviour in the general case */ - -#define cf2_intToFixed( i ) \ - ( (CF2_Fixed)( (FT_UInt32)(i) << 16 ) ) -#define cf2_fixedToInt( x ) \ - ( (FT_Short)( ( (FT_UInt32)(x) + 0x8000U ) >> 16 ) ) -#define cf2_fixedRound( x ) \ - ( (CF2_Fixed)( ( (FT_UInt32)(x) + 0x8000U ) & 0xFFFF0000UL ) ) -#define cf2_floatToFixed( f ) \ - ( (CF2_Fixed)( (f) * 65536.0 + 0.5 ) ) -#define cf2_fixedAbs( x ) \ - ( (x) < 0 ? -(x) : (x) ) -#define cf2_fixedFloor( x ) \ - ( (CF2_Fixed)( (FT_UInt32)(x) & 0xFFFF0000UL ) ) -#define cf2_fixedFraction( x ) \ - ( (x) - cf2_fixedFloor( x ) ) -#define cf2_fracToFixed( x ) \ - ( (x) < 0 ? -( ( -(x) + 0x2000 ) >> 14 ) \ - : ( ( (x) + 0x2000 ) >> 14 ) ) - - - /* signed numeric types */ - typedef enum CF2_NumberType_ - { - CF2_NumberFixed, /* 16.16 */ - CF2_NumberFrac, /* 2.30 */ - CF2_NumberInt /* 32.0 */ - - } CF2_NumberType; - - -FT_END_HEADER - - -#endif /* __CF2FIXED_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2font.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2font.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2font.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2font.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,512 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2font.c */ -/* */ -/* Adobe's code for font instances (body). */ -/* */ -/* Copyright 2007-2014 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_CALC_H - -#include "cf2ft.h" - -#include "cf2glue.h" -#include "cf2font.h" -#include "cf2error.h" -#include "cf2intrp.h" - - - /* Compute a stem darkening amount in character space. */ - static void - cf2_computeDarkening( CF2_Fixed emRatio, - CF2_Fixed ppem, - CF2_Fixed stemWidth, - CF2_Fixed* darkenAmount, - CF2_Fixed boldenAmount, - FT_Bool stemDarkened, - FT_Int* darkenParams ) - { - /* - * Total darkening amount is computed in 1000 unit character space - * using the modified 5 part curve as Adobe's Avalon rasterizer. - * The darkening amount is smaller for thicker stems. - * It becomes zero when the stem is thicker than 2.333 pixels. - * - * By default, we use - * - * darkenAmount = 0.4 pixels if scaledStem <= 0.5 pixels, - * darkenAmount = 0.275 pixels if 1 <= scaledStem <= 1.667 pixels, - * darkenAmount = 0 pixel if scaledStem >= 2.333 pixels, - * - * and piecewise linear in-between: - * - * - * darkening - * ^ - * | - * | (x1,y1) - * |--------+ - * | \ - * | \ - * | \ (x3,y3) - * | +----------+ - * | (x2,y2) \ - * | \ - * | \ - * | +----------------- - * | (x4,y4) - * +---------------------------------------------> stem - * thickness - * - * - * This corresponds to the following values for the - * `darkening-parameters' property: - * - * (x1, y1) = (500, 400) - * (x2, y2) = (1000, 275) - * (x3, y3) = (1667, 275) - * (x4, y4) = (2333, 0) - * - */ - - /* Internal calculations are done in units per thousand for */ - /* convenience. The x axis is scaled stem width in */ - /* thousandths of a pixel. That is, 1000 is 1 pixel. */ - /* The y axis is darkening amount in thousandths of a pixel.*/ - /* In the code, below, dividing by ppem and */ - /* adjusting for emRatio converts darkenAmount to character */ - /* space (font units). */ - CF2_Fixed stemWidthPer1000, scaledStem; - FT_Int logBase2; - - - *darkenAmount = 0; - - if ( boldenAmount == 0 && !stemDarkened ) - return; - - /* protect against range problems and divide by zero */ - if ( emRatio < cf2_floatToFixed( .01 ) ) - return; - - if ( stemDarkened ) - { - FT_Int x1 = darkenParams[0]; - FT_Int y1 = darkenParams[1]; - FT_Int x2 = darkenParams[2]; - FT_Int y2 = darkenParams[3]; - FT_Int x3 = darkenParams[4]; - FT_Int y3 = darkenParams[5]; - FT_Int x4 = darkenParams[6]; - FT_Int y4 = darkenParams[7]; - - - /* convert from true character space to 1000 unit character space; */ - /* add synthetic emboldening effect */ - - /* `stemWidthPer1000' will not overflow for a legitimate font */ - - stemWidthPer1000 = FT_MulFix( stemWidth + boldenAmount, emRatio ); - - /* `scaledStem' can easily overflow, so we must clamp its maximum */ - /* value; the test doesn't need to be precise, but must be */ - /* conservative. The clamp value (default 2333) where */ - /* `darkenAmount' is zero is well below the overflow value of */ - /* 32767. */ - /* */ - /* FT_MSB computes the integer part of the base 2 logarithm. The */ - /* number of bits for the product is 1 or 2 more than the sum of */ - /* logarithms; remembering that the 16 lowest bits of the fraction */ - /* are dropped this is correct to within a factor of almost 4. */ - /* For example, 0x80.0000 * 0x80.0000 = 0x4000.0000 is 23+23 and */ - /* is flagged as possible overflow because 0xFF.FFFF * 0xFF.FFFF = */ - /* 0xFFFF.FE00 is also 23+23. */ - - logBase2 = FT_MSB( (FT_UInt32)stemWidthPer1000 ) + - FT_MSB( (FT_UInt32)ppem ); - - if ( logBase2 >= 46 ) - /* possible overflow */ - scaledStem = cf2_intToFixed( x4 ); - else - scaledStem = FT_MulFix( stemWidthPer1000, ppem ); - - /* now apply the darkening parameters */ - - if ( scaledStem < cf2_intToFixed( x1 ) ) - *darkenAmount = FT_DivFix( cf2_intToFixed( y1 ), ppem ); - - else if ( scaledStem < cf2_intToFixed( x2 ) ) - { - FT_Int xdelta = x2 - x1; - FT_Int ydelta = y2 - y1; - FT_Int x = stemWidthPer1000 - - FT_DivFix( cf2_intToFixed( x1 ), ppem ); - - - if ( !xdelta ) - goto Try_x3; - - *darkenAmount = FT_MulDiv( x, ydelta, xdelta ) + - FT_DivFix( cf2_intToFixed( y1 ), ppem ); - } - - else if ( scaledStem < cf2_intToFixed( x3 ) ) - { - Try_x3: - { - FT_Int xdelta = x3 - x2; - FT_Int ydelta = y3 - y2; - FT_Int x = stemWidthPer1000 - - FT_DivFix( cf2_intToFixed( x2 ), ppem ); - - - if ( !xdelta ) - goto Try_x4; - - *darkenAmount = FT_MulDiv( x, ydelta, xdelta ) + - FT_DivFix( cf2_intToFixed( y2 ), ppem ); - } - } - - else if ( scaledStem < cf2_intToFixed( x4 ) ) - { - Try_x4: - { - FT_Int xdelta = x4 - x3; - FT_Int ydelta = y4 - y3; - FT_Int x = stemWidthPer1000 - - FT_DivFix( cf2_intToFixed( x3 ), ppem ); - - - if ( !xdelta ) - goto Use_y4; - - *darkenAmount = FT_MulDiv( x, ydelta, xdelta ) + - FT_DivFix( cf2_intToFixed( y3 ), ppem ); - } - } - - else - { - Use_y4: - *darkenAmount = FT_DivFix( cf2_intToFixed( y4 ), ppem ); - } - - /* use half the amount on each side and convert back to true */ - /* character space */ - *darkenAmount = FT_DivFix( *darkenAmount, 2 * emRatio ); - } - - /* add synthetic emboldening effect in character space */ - *darkenAmount += boldenAmount / 2; - } - - - /* set up values for the current FontDict and matrix */ - - /* caller's transform is adjusted for subpixel positioning */ - static void - cf2_font_setup( CF2_Font font, - const CF2_Matrix* transform ) - { - /* pointer to parsed font object */ - CFF_Decoder* decoder = font->decoder; - - FT_Bool needExtraSetup = FALSE; - - /* character space units */ - CF2_Fixed boldenX = font->syntheticEmboldeningAmountX; - CF2_Fixed boldenY = font->syntheticEmboldeningAmountY; - - CFF_SubFont subFont; - CF2_Fixed ppem; - - - /* clear previous error */ - font->error = FT_Err_Ok; - - /* if a CID fontDict has changed, we need to recompute some cached */ - /* data */ - subFont = cf2_getSubfont( decoder ); - if ( font->lastSubfont != subFont ) - { - font->lastSubfont = subFont; - needExtraSetup = TRUE; - } - - /* if ppem has changed, we need to recompute some cached data */ - /* note: because of CID font matrix concatenation, ppem and transform */ - /* do not necessarily track. */ - ppem = cf2_getPpemY( decoder ); - if ( font->ppem != ppem ) - { - font->ppem = ppem; - needExtraSetup = TRUE; - } - - /* copy hinted flag on each call */ - font->hinted = (FT_Bool)( font->renderingFlags & CF2_FlagsHinted ); - - /* determine if transform has changed; */ - /* include Fontmatrix but ignore translation */ - if ( ft_memcmp( transform, - &font->currentTransform, - 4 * sizeof ( CF2_Fixed ) ) != 0 ) - { - /* save `key' information for `cache of one' matrix data; */ - /* save client transform, without the translation */ - font->currentTransform = *transform; - font->currentTransform.tx = - font->currentTransform.ty = cf2_intToFixed( 0 ); - - /* TODO: FreeType transform is simple scalar; for now, use identity */ - /* for outer */ - font->innerTransform = *transform; - font->outerTransform.a = - font->outerTransform.d = cf2_intToFixed( 1 ); - font->outerTransform.b = - font->outerTransform.c = cf2_intToFixed( 0 ); - - needExtraSetup = TRUE; - } - - /* - * font->darkened is set to true if there is a stem darkening request or - * the font is synthetic emboldened. - * font->darkened controls whether to adjust blue zones, winding order, - * and hinting. - * - */ - if ( font->stemDarkened != ( font->renderingFlags & CF2_FlagsDarkened ) ) - { - font->stemDarkened = - (FT_Bool)( font->renderingFlags & CF2_FlagsDarkened ); - - /* blue zones depend on darkened flag */ - needExtraSetup = TRUE; - } - - /* recompute variables that are dependent on transform or FontDict or */ - /* darken flag */ - if ( needExtraSetup ) - { - /* StdVW is found in the private dictionary; */ - /* recompute darkening amounts whenever private dictionary or */ - /* transform change */ - /* Note: a rendering flag turns darkening on or off, so we want to */ - /* store the `on' amounts; */ - /* darkening amount is computed in character space */ - /* TODO: testing size-dependent darkening here; */ - /* what to do for rotations? */ - - CF2_Fixed emRatio; - CF2_Fixed stdHW; - CF2_Int unitsPerEm = font->unitsPerEm; - - - if ( unitsPerEm == 0 ) - unitsPerEm = 1000; - - ppem = FT_MAX( cf2_intToFixed( 4 ), - font->ppem ); /* use minimum ppem of 4 */ - -#if 0 - /* since vstem is measured in the x-direction, we use the `a' member */ - /* of the fontMatrix */ - emRatio = cf2_fixedFracMul( cf2_intToFixed( 1000 ), fontMatrix->a ); -#endif - - /* Freetype does not preserve the fontMatrix when parsing; use */ - /* unitsPerEm instead. */ - /* TODO: check precision of this */ - emRatio = cf2_intToFixed( 1000 ) / unitsPerEm; - font->stdVW = cf2_getStdVW( decoder ); - - if ( font->stdVW <= 0 ) - font->stdVW = FT_DivFix( cf2_intToFixed( 75 ), emRatio ); - - if ( boldenX > 0 ) - { - /* Ensure that boldenX is at least 1 pixel for synthetic bold font */ - /* (similar to what Avalon does) */ - boldenX = FT_MAX( boldenX, - FT_DivFix( cf2_intToFixed( unitsPerEm ), ppem ) ); - - /* Synthetic emboldening adds at least 1 pixel to darkenX, while */ - /* stem darkening adds at most half pixel. Since the purpose of */ - /* stem darkening (readability at small sizes) is met with */ - /* synthetic emboldening, no need to add stem darkening for a */ - /* synthetic bold font. */ - cf2_computeDarkening( emRatio, - ppem, - font->stdVW, - &font->darkenX, - boldenX, - FALSE, - font->darkenParams ); - } - else - cf2_computeDarkening( emRatio, - ppem, - font->stdVW, - &font->darkenX, - 0, - font->stemDarkened, - font->darkenParams ); - -#if 0 - /* since hstem is measured in the y-direction, we use the `d' member */ - /* of the fontMatrix */ - /* TODO: use the same units per em as above; check this */ - emRatio = cf2_fixedFracMul( cf2_intToFixed( 1000 ), fontMatrix->d ); -#endif - - /* set the default stem width, because it must be the same for all */ - /* family members; */ - /* choose a constant for StdHW that depends on font contrast */ - stdHW = cf2_getStdHW( decoder ); - - if ( stdHW > 0 && font->stdVW > 2 * stdHW ) - font->stdHW = FT_DivFix( cf2_intToFixed( 75 ), emRatio ); - else - { - /* low contrast font gets less hstem darkening */ - font->stdHW = FT_DivFix( cf2_intToFixed( 110 ), emRatio ); - } - - cf2_computeDarkening( emRatio, - ppem, - font->stdHW, - &font->darkenY, - boldenY, - font->stemDarkened, - font->darkenParams ); - - if ( font->darkenX != 0 || font->darkenY != 0 ) - font->darkened = TRUE; - else - font->darkened = FALSE; - - font->reverseWinding = FALSE; /* initial expectation is CCW */ - - /* compute blue zones for this instance */ - cf2_blues_init( &font->blues, font ); - } - } - - - /* equivalent to AdobeGetOutline */ - FT_LOCAL_DEF( FT_Error ) - cf2_getGlyphOutline( CF2_Font font, - CF2_Buffer charstring, - const CF2_Matrix* transform, - CF2_F16Dot16* glyphWidth ) - { - FT_Error lastError = FT_Err_Ok; - - FT_Vector translation; - -#if 0 - FT_Vector advancePoint; -#endif - - CF2_Fixed advWidth = 0; - FT_Bool needWinding; - - - /* Note: use both integer and fraction for outlines. This allows bbox */ - /* to come out directly. */ - - translation.x = transform->tx; - translation.y = transform->ty; - - /* set up values based on transform */ - cf2_font_setup( font, transform ); - if ( font->error ) - goto exit; /* setup encountered an error */ - - /* reset darken direction */ - font->reverseWinding = FALSE; - - /* winding order only affects darkening */ - needWinding = font->darkened; - - while ( 1 ) - { - /* reset output buffer */ - cf2_outline_reset( &font->outline ); - - /* build the outline, passing the full translation */ - cf2_interpT2CharString( font, - charstring, - (CF2_OutlineCallbacks)&font->outline, - &translation, - FALSE, - 0, - 0, - &advWidth ); - - if ( font->error ) - goto exit; - - if ( !needWinding ) - break; - - /* check winding order */ - if ( font->outline.root.windingMomentum >= 0 ) /* CFF is CCW */ - break; - - /* invert darkening and render again */ - /* TODO: this should be a parameter to getOutline-computeOffset */ - font->reverseWinding = TRUE; - - needWinding = FALSE; /* exit after next iteration */ - } - - /* finish storing client outline */ - cf2_outline_close( &font->outline ); - - exit: - /* FreeType just wants the advance width; there is no translation */ - *glyphWidth = advWidth; - - /* free resources and collect errors from objects we've used */ - cf2_setError( &font->error, lastError ); - - return font->error; - } - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2font.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2font.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2font.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2font.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,121 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2font.h */ -/* */ -/* Adobe's code for font instances (specification). */ -/* */ -/* Copyright 2007-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CF2FONT_H__ -#define __CF2FONT_H__ - - -#include "cf2ft.h" -#include "cf2blues.h" - - -FT_BEGIN_HEADER - - -#define CF2_OPERAND_STACK_SIZE 48 -#define CF2_MAX_SUBR 16 /* maximum subroutine nesting; */ - /* only 10 are allowed but there exist */ - /* fonts like `HiraKakuProN-W3.ttf' */ - /* (Hiragino Kaku Gothic ProN W3; */ - /* 8.2d6e1; 2014-12-19) that exceed */ - /* this limit */ - - - /* typedef is in `cf2glue.h' */ - struct CF2_FontRec_ - { - FT_Memory memory; - FT_Error error; /* shared error for this instance */ - - CF2_RenderingFlags renderingFlags; - - /* variables that depend on Transform: */ - /* the following have zero translation; */ - /* inner * outer = font * original */ - - CF2_Matrix currentTransform; /* original client matrix */ - CF2_Matrix innerTransform; /* for hinting; erect, scaled */ - CF2_Matrix outerTransform; /* post hinting; includes rotations */ - CF2_Fixed ppem; /* transform-dependent */ - - CF2_Int unitsPerEm; - - CF2_Fixed syntheticEmboldeningAmountX; /* character space units */ - CF2_Fixed syntheticEmboldeningAmountY; /* character space units */ - - /* FreeType related members */ - CF2_OutlineRec outline; /* freetype glyph outline functions */ - CFF_Decoder* decoder; - CFF_SubFont lastSubfont; /* FreeType parsed data; */ - /* top font or subfont */ - - /* these flags can vary from one call to the next */ - FT_Bool hinted; - FT_Bool darkened; /* true if stemDarkened or synthetic bold */ - /* i.e. darkenX != 0 || darkenY != 0 */ - FT_Bool stemDarkened; - - FT_Int darkenParams[8]; /* 1000 unit character space */ - - /* variables that depend on both FontDict and Transform */ - CF2_Fixed stdVW; /* in character space; depends on dict entry */ - CF2_Fixed stdHW; /* in character space; depends on dict entry */ - CF2_Fixed darkenX; /* character space units */ - CF2_Fixed darkenY; /* depends on transform */ - /* and private dict (StdVW) */ - FT_Bool reverseWinding; /* darken assuming */ - /* counterclockwise winding */ - - CF2_BluesRec blues; /* computed zone data */ - }; - - - FT_LOCAL( FT_Error ) - cf2_getGlyphOutline( CF2_Font font, - CF2_Buffer charstring, - const CF2_Matrix* transform, - CF2_F16Dot16* glyphWidth ); - - -FT_END_HEADER - - -#endif /* __CF2FONT_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2ft.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2ft.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2ft.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2ft.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,700 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2ft.c */ -/* */ -/* FreeType Glue Component to Adobe's Interpreter (body). */ -/* */ -/* Copyright 2013-2014 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#include "cf2ft.h" -#include FT_INTERNAL_DEBUG_H - -#include "cf2font.h" -#include "cf2error.h" - - -#define CF2_MAX_SIZE cf2_intToFixed( 2000 ) /* max ppem */ - - - /* - * This check should avoid most internal overflow cases. Clients should - * generally respond to `Glyph_Too_Big' by getting a glyph outline - * at EM size, scaling it and filling it as a graphics operation. - * - */ - static FT_Error - cf2_checkTransform( const CF2_Matrix* transform, - CF2_Int unitsPerEm ) - { - CF2_Fixed maxScale; - - - FT_ASSERT( unitsPerEm > 0 ); - - if ( transform->a <= 0 || transform->d <= 0 ) - return FT_THROW( Invalid_Size_Handle ); - - FT_ASSERT( transform->b == 0 && transform->c == 0 ); - FT_ASSERT( transform->tx == 0 && transform->ty == 0 ); - - if ( unitsPerEm > 0x7FFF ) - return FT_THROW( Glyph_Too_Big ); - - maxScale = FT_DivFix( CF2_MAX_SIZE, cf2_intToFixed( unitsPerEm ) ); - - if ( transform->a > maxScale || transform->d > maxScale ) - return FT_THROW( Glyph_Too_Big ); - - return FT_Err_Ok; - } - - - static void - cf2_setGlyphWidth( CF2_Outline outline, - CF2_Fixed width ) - { - CFF_Decoder* decoder = outline->decoder; - - - FT_ASSERT( decoder ); - - decoder->glyph_width = cf2_fixedToInt( width ); - } - - - /* Clean up font instance. */ - static void - cf2_free_instance( void* ptr ) - { - CF2_Font font = (CF2_Font)ptr; - - - if ( font ) - { - FT_Memory memory = font->memory; - - - (void)memory; - } - } - - - /********************************************/ - /* */ - /* functions for handling client outline; */ - /* FreeType uses coordinates in 26.6 format */ - /* */ - /********************************************/ - - static void - cf2_builder_moveTo( CF2_OutlineCallbacks callbacks, - const CF2_CallbackParams params ) - { - /* downcast the object pointer */ - CF2_Outline outline = (CF2_Outline)callbacks; - CFF_Builder* builder; - - (void)params; /* only used in debug mode */ - - - FT_ASSERT( outline && outline->decoder ); - FT_ASSERT( params->op == CF2_PathOpMoveTo ); - - builder = &outline->decoder->builder; - - /* note: two successive moves simply close the contour twice */ - cff_builder_close_contour( builder ); - builder->path_begun = 0; - } - - - static void - cf2_builder_lineTo( CF2_OutlineCallbacks callbacks, - const CF2_CallbackParams params ) - { - FT_Error error; - - /* downcast the object pointer */ - CF2_Outline outline = (CF2_Outline)callbacks; - CFF_Builder* builder; - - - FT_ASSERT( outline && outline->decoder ); - FT_ASSERT( params->op == CF2_PathOpLineTo ); - - builder = &outline->decoder->builder; - - if ( !builder->path_begun ) - { - /* record the move before the line; also check points and set */ - /* `path_begun' */ - error = cff_builder_start_point( builder, - params->pt0.x, - params->pt0.y ); - if ( error ) - { - if ( !*callbacks->error ) - *callbacks->error = error; - return; - } - } - - /* `cff_builder_add_point1' includes a check_points call for one point */ - error = cff_builder_add_point1( builder, - params->pt1.x, - params->pt1.y ); - if ( error ) - { - if ( !*callbacks->error ) - *callbacks->error = error; - return; - } - } - - - static void - cf2_builder_cubeTo( CF2_OutlineCallbacks callbacks, - const CF2_CallbackParams params ) - { - FT_Error error; - - /* downcast the object pointer */ - CF2_Outline outline = (CF2_Outline)callbacks; - CFF_Builder* builder; - - - FT_ASSERT( outline && outline->decoder ); - FT_ASSERT( params->op == CF2_PathOpCubeTo ); - - builder = &outline->decoder->builder; - - if ( !builder->path_begun ) - { - /* record the move before the line; also check points and set */ - /* `path_begun' */ - error = cff_builder_start_point( builder, - params->pt0.x, - params->pt0.y ); - if ( error ) - { - if ( !*callbacks->error ) - *callbacks->error = error; - return; - } - } - - /* prepare room for 3 points: 2 off-curve, 1 on-curve */ - error = cff_check_points( builder, 3 ); - if ( error ) - { - if ( !*callbacks->error ) - *callbacks->error = error; - return; - } - - cff_builder_add_point( builder, - params->pt1.x, - params->pt1.y, 0 ); - cff_builder_add_point( builder, - params->pt2.x, - params->pt2.y, 0 ); - cff_builder_add_point( builder, - params->pt3.x, - params->pt3.y, 1 ); - } - - - static void - cf2_outline_init( CF2_Outline outline, - FT_Memory memory, - FT_Error* error ) - { - FT_MEM_ZERO( outline, sizeof ( CF2_OutlineRec ) ); - - outline->root.memory = memory; - outline->root.error = error; - - outline->root.moveTo = cf2_builder_moveTo; - outline->root.lineTo = cf2_builder_lineTo; - outline->root.cubeTo = cf2_builder_cubeTo; - } - - - /* get scaling and hint flag from GlyphSlot */ - static void - cf2_getScaleAndHintFlag( CFF_Decoder* decoder, - CF2_Fixed* x_scale, - CF2_Fixed* y_scale, - FT_Bool* hinted, - FT_Bool* scaled ) - { - FT_ASSERT( decoder && decoder->builder.glyph ); - - /* note: FreeType scale includes a factor of 64 */ - *hinted = decoder->builder.glyph->hint; - *scaled = decoder->builder.glyph->scaled; - - if ( *hinted ) - { - *x_scale = ( decoder->builder.glyph->x_scale + 32 ) / 64; - *y_scale = ( decoder->builder.glyph->y_scale + 32 ) / 64; - } - else - { - /* for unhinted outlines, `cff_slot_load' does the scaling, */ - /* thus render at `unity' scale */ - - *x_scale = 0x0400; /* 1/64 as 16.16 */ - *y_scale = 0x0400; - } - } - - - /* get units per em from `FT_Face' */ - /* TODO: should handle font matrix concatenation? */ - static FT_UShort - cf2_getUnitsPerEm( CFF_Decoder* decoder ) - { - FT_ASSERT( decoder && decoder->builder.face ); - FT_ASSERT( decoder->builder.face->root.units_per_EM ); - - return decoder->builder.face->root.units_per_EM; - } - - - /* Main entry point: Render one glyph. */ - FT_LOCAL_DEF( FT_Error ) - cf2_decoder_parse_charstrings( CFF_Decoder* decoder, - FT_Byte* charstring_base, - FT_ULong charstring_len ) - { - FT_Memory memory; - FT_Error error = FT_Err_Ok; - CF2_Font font; - - - FT_ASSERT( decoder && decoder->cff ); - - memory = decoder->builder.memory; - - /* CF2 data is saved here across glyphs */ - font = (CF2_Font)decoder->cff->cf2_instance.data; - - /* on first glyph, allocate instance structure */ - if ( decoder->cff->cf2_instance.data == NULL ) - { - decoder->cff->cf2_instance.finalizer = - (FT_Generic_Finalizer)cf2_free_instance; - - if ( FT_ALLOC( decoder->cff->cf2_instance.data, - sizeof ( CF2_FontRec ) ) ) - return FT_THROW( Out_Of_Memory ); - - font = (CF2_Font)decoder->cff->cf2_instance.data; - - font->memory = memory; - - /* initialize a client outline, to be shared by each glyph rendered */ - cf2_outline_init( &font->outline, font->memory, &font->error ); - } - - /* save decoder; it is a stack variable and will be different on each */ - /* call */ - font->decoder = decoder; - font->outline.decoder = decoder; - - { - /* build parameters for Adobe engine */ - - CFF_Builder* builder = &decoder->builder; - CFF_Driver driver = (CFF_Driver)FT_FACE_DRIVER( builder->face ); - - /* local error */ - FT_Error error2 = FT_Err_Ok; - CF2_BufferRec buf; - CF2_Matrix transform; - CF2_F16Dot16 glyphWidth; - - FT_Bool hinted; - FT_Bool scaled; - - - /* FreeType has already looked up the GID; convert to */ - /* `RegionBuffer', assuming that the input has been validated */ - FT_ASSERT( charstring_base + charstring_len >= charstring_base ); - - FT_ZERO( &buf ); - buf.start = - buf.ptr = charstring_base; - buf.end = charstring_base + charstring_len; - - FT_ZERO( &transform ); - - cf2_getScaleAndHintFlag( decoder, - &transform.a, - &transform.d, - &hinted, - &scaled ); - - font->renderingFlags = 0; - if ( hinted ) - font->renderingFlags |= CF2_FlagsHinted; - if ( scaled && !driver->no_stem_darkening ) - font->renderingFlags |= CF2_FlagsDarkened; - - font->darkenParams[0] = driver->darken_params[0]; - font->darkenParams[1] = driver->darken_params[1]; - font->darkenParams[2] = driver->darken_params[2]; - font->darkenParams[3] = driver->darken_params[3]; - font->darkenParams[4] = driver->darken_params[4]; - font->darkenParams[5] = driver->darken_params[5]; - font->darkenParams[6] = driver->darken_params[6]; - font->darkenParams[7] = driver->darken_params[7]; - - /* now get an outline for this glyph; */ - /* also get units per em to validate scale */ - font->unitsPerEm = (CF2_Int)cf2_getUnitsPerEm( decoder ); - - if ( scaled ) - { - error2 = cf2_checkTransform( &transform, font->unitsPerEm ); - if ( error2 ) - return error2; - } - - error2 = cf2_getGlyphOutline( font, &buf, &transform, &glyphWidth ); - if ( error2 ) - return FT_ERR( Invalid_File_Format ); - - cf2_setGlyphWidth( &font->outline, glyphWidth ); - - return FT_Err_Ok; - } - } - - - /* get pointer to current FreeType subfont (based on current glyphID) */ - FT_LOCAL_DEF( CFF_SubFont ) - cf2_getSubfont( CFF_Decoder* decoder ) - { - FT_ASSERT( decoder && decoder->current_subfont ); - - return decoder->current_subfont; - } - - - /* get `y_ppem' from `CFF_Size' */ - FT_LOCAL_DEF( CF2_Fixed ) - cf2_getPpemY( CFF_Decoder* decoder ) - { - FT_ASSERT( decoder && - decoder->builder.face && - decoder->builder.face->root.size ); - - /* - * Note that `y_ppem' can be zero if there wasn't a call to - * `FT_Set_Char_Size' or something similar. However, this isn't a - * problem since we come to this place in the code only if - * FT_LOAD_NO_SCALE is set (the other case gets caught by - * `cf2_checkTransform'). The ppem value is needed to compute the stem - * darkening, which is disabled for getting the unscaled outline. - * - */ - return cf2_intToFixed( - decoder->builder.face->root.size->metrics.y_ppem ); - } - - - /* get standard stem widths for the current subfont; */ - /* FreeType stores these as integer font units */ - /* (note: variable names seem swapped) */ - FT_LOCAL_DEF( CF2_Fixed ) - cf2_getStdVW( CFF_Decoder* decoder ) - { - FT_ASSERT( decoder && decoder->current_subfont ); - - return cf2_intToFixed( - decoder->current_subfont->private_dict.standard_height ); - } - - - FT_LOCAL_DEF( CF2_Fixed ) - cf2_getStdHW( CFF_Decoder* decoder ) - { - FT_ASSERT( decoder && decoder->current_subfont ); - - return cf2_intToFixed( - decoder->current_subfont->private_dict.standard_width ); - } - - - /* note: FreeType stores 1000 times the actual value for `BlueScale' */ - FT_LOCAL_DEF( void ) - cf2_getBlueMetrics( CFF_Decoder* decoder, - CF2_Fixed* blueScale, - CF2_Fixed* blueShift, - CF2_Fixed* blueFuzz ) - { - FT_ASSERT( decoder && decoder->current_subfont ); - - *blueScale = FT_DivFix( - decoder->current_subfont->private_dict.blue_scale, - cf2_intToFixed( 1000 ) ); - *blueShift = cf2_intToFixed( - decoder->current_subfont->private_dict.blue_shift ); - *blueFuzz = cf2_intToFixed( - decoder->current_subfont->private_dict.blue_fuzz ); - } - - - /* get blue values counts and arrays; the FreeType parser has validated */ - /* the counts and verified that each is an even number */ - FT_LOCAL_DEF( void ) - cf2_getBlueValues( CFF_Decoder* decoder, - size_t* count, - FT_Pos* *data ) - { - FT_ASSERT( decoder && decoder->current_subfont ); - - *count = decoder->current_subfont->private_dict.num_blue_values; - *data = (FT_Pos*) - &decoder->current_subfont->private_dict.blue_values; - } - - - FT_LOCAL_DEF( void ) - cf2_getOtherBlues( CFF_Decoder* decoder, - size_t* count, - FT_Pos* *data ) - { - FT_ASSERT( decoder && decoder->current_subfont ); - - *count = decoder->current_subfont->private_dict.num_other_blues; - *data = (FT_Pos*) - &decoder->current_subfont->private_dict.other_blues; - } - - - FT_LOCAL_DEF( void ) - cf2_getFamilyBlues( CFF_Decoder* decoder, - size_t* count, - FT_Pos* *data ) - { - FT_ASSERT( decoder && decoder->current_subfont ); - - *count = decoder->current_subfont->private_dict.num_family_blues; - *data = (FT_Pos*) - &decoder->current_subfont->private_dict.family_blues; - } - - - FT_LOCAL_DEF( void ) - cf2_getFamilyOtherBlues( CFF_Decoder* decoder, - size_t* count, - FT_Pos* *data ) - { - FT_ASSERT( decoder && decoder->current_subfont ); - - *count = decoder->current_subfont->private_dict.num_family_other_blues; - *data = (FT_Pos*) - &decoder->current_subfont->private_dict.family_other_blues; - } - - - FT_LOCAL_DEF( CF2_Int ) - cf2_getLanguageGroup( CFF_Decoder* decoder ) - { - FT_ASSERT( decoder && decoder->current_subfont ); - - return decoder->current_subfont->private_dict.language_group; - } - - - /* convert unbiased subroutine index to `CF2_Buffer' and */ - /* return 0 on success */ - FT_LOCAL_DEF( CF2_Int ) - cf2_initGlobalRegionBuffer( CFF_Decoder* decoder, - CF2_UInt idx, - CF2_Buffer buf ) - { - FT_ASSERT( decoder ); - - FT_ZERO( buf ); - - idx += (CF2_UInt)decoder->globals_bias; - if ( idx >= decoder->num_globals ) - return TRUE; /* error */ - - FT_ASSERT( decoder->globals ); - - buf->start = - buf->ptr = decoder->globals[idx]; - buf->end = decoder->globals[idx + 1]; - - return FALSE; /* success */ - } - - - /* convert AdobeStandardEncoding code to CF2_Buffer; */ - /* used for seac component */ - FT_LOCAL_DEF( FT_Error ) - cf2_getSeacComponent( CFF_Decoder* decoder, - CF2_Int code, - CF2_Buffer buf ) - { - CF2_Int gid; - FT_Byte* charstring; - FT_ULong len; - FT_Error error; - - - FT_ASSERT( decoder ); - - FT_ZERO( buf ); - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - /* Incremental fonts don't necessarily have valid charsets. */ - /* They use the character code, not the glyph index, in this case. */ - if ( decoder->builder.face->root.internal->incremental_interface ) - gid = code; - else -#endif /* FT_CONFIG_OPTION_INCREMENTAL */ - { - gid = cff_lookup_glyph_by_stdcharcode( decoder->cff, code ); - if ( gid < 0 ) - return FT_THROW( Invalid_Glyph_Format ); - } - - error = cff_get_glyph_data( decoder->builder.face, - (CF2_UInt)gid, - &charstring, - &len ); - /* TODO: for now, just pass the FreeType error through */ - if ( error ) - return error; - - /* assume input has been validated */ - FT_ASSERT( charstring + len >= charstring ); - - buf->start = charstring; - buf->end = charstring + len; - buf->ptr = buf->start; - - return FT_Err_Ok; - } - - - FT_LOCAL_DEF( void ) - cf2_freeSeacComponent( CFF_Decoder* decoder, - CF2_Buffer buf ) - { - FT_ASSERT( decoder ); - - cff_free_glyph_data( decoder->builder.face, - (FT_Byte**)&buf->start, - (FT_ULong)( buf->end - buf->start ) ); - } - - - FT_LOCAL_DEF( CF2_Int ) - cf2_initLocalRegionBuffer( CFF_Decoder* decoder, - CF2_UInt idx, - CF2_Buffer buf ) - { - FT_ASSERT( decoder ); - - FT_ZERO( buf ); - - idx += (CF2_UInt)decoder->locals_bias; - if ( idx >= decoder->num_locals ) - return TRUE; /* error */ - - FT_ASSERT( decoder->locals ); - - buf->start = - buf->ptr = decoder->locals[idx]; - buf->end = decoder->locals[idx + 1]; - - return FALSE; /* success */ - } - - - FT_LOCAL_DEF( CF2_Fixed ) - cf2_getDefaultWidthX( CFF_Decoder* decoder ) - { - FT_ASSERT( decoder && decoder->current_subfont ); - - return cf2_intToFixed( - decoder->current_subfont->private_dict.default_width ); - } - - - FT_LOCAL_DEF( CF2_Fixed ) - cf2_getNominalWidthX( CFF_Decoder* decoder ) - { - FT_ASSERT( decoder && decoder->current_subfont ); - - return cf2_intToFixed( - decoder->current_subfont->private_dict.nominal_width ); - } - - - FT_LOCAL_DEF( void ) - cf2_outline_reset( CF2_Outline outline ) - { - CFF_Decoder* decoder = outline->decoder; - - - FT_ASSERT( decoder ); - - outline->root.windingMomentum = 0; - - FT_GlyphLoader_Rewind( decoder->builder.loader ); - } - - - FT_LOCAL_DEF( void ) - cf2_outline_close( CF2_Outline outline ) - { - CFF_Decoder* decoder = outline->decoder; - - - FT_ASSERT( decoder ); - - cff_builder_close_contour( &decoder->builder ); - - FT_GlyphLoader_Add( decoder->builder.loader ); - } - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2ft.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2ft.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2ft.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2ft.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,147 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2ft.h */ -/* */ -/* FreeType Glue Component to Adobe's Interpreter (specification). */ -/* */ -/* Copyright 2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CF2FT_H__ -#define __CF2FT_H__ - - -#include "cf2types.h" - - - /* TODO: disable asserts for now */ -#define CF2_NDEBUG - - -#include FT_SYSTEM_H - -#include "cf2glue.h" -#include "cffgload.h" /* for CFF_Decoder */ - - -FT_BEGIN_HEADER - - - FT_LOCAL( FT_Error ) - cf2_decoder_parse_charstrings( CFF_Decoder* decoder, - FT_Byte* charstring_base, - FT_ULong charstring_len ); - - FT_LOCAL( CFF_SubFont ) - cf2_getSubfont( CFF_Decoder* decoder ); - - - FT_LOCAL( CF2_Fixed ) - cf2_getPpemY( CFF_Decoder* decoder ); - FT_LOCAL( CF2_Fixed ) - cf2_getStdVW( CFF_Decoder* decoder ); - FT_LOCAL( CF2_Fixed ) - cf2_getStdHW( CFF_Decoder* decoder ); - - FT_LOCAL( void ) - cf2_getBlueMetrics( CFF_Decoder* decoder, - CF2_Fixed* blueScale, - CF2_Fixed* blueShift, - CF2_Fixed* blueFuzz ); - FT_LOCAL( void ) - cf2_getBlueValues( CFF_Decoder* decoder, - size_t* count, - FT_Pos* *data ); - FT_LOCAL( void ) - cf2_getOtherBlues( CFF_Decoder* decoder, - size_t* count, - FT_Pos* *data ); - FT_LOCAL( void ) - cf2_getFamilyBlues( CFF_Decoder* decoder, - size_t* count, - FT_Pos* *data ); - FT_LOCAL( void ) - cf2_getFamilyOtherBlues( CFF_Decoder* decoder, - size_t* count, - FT_Pos* *data ); - - FT_LOCAL( CF2_Int ) - cf2_getLanguageGroup( CFF_Decoder* decoder ); - - FT_LOCAL( CF2_Int ) - cf2_initGlobalRegionBuffer( CFF_Decoder* decoder, - CF2_UInt idx, - CF2_Buffer buf ); - FT_LOCAL( FT_Error ) - cf2_getSeacComponent( CFF_Decoder* decoder, - CF2_Int code, - CF2_Buffer buf ); - FT_LOCAL( void ) - cf2_freeSeacComponent( CFF_Decoder* decoder, - CF2_Buffer buf ); - FT_LOCAL( CF2_Int ) - cf2_initLocalRegionBuffer( CFF_Decoder* decoder, - CF2_UInt idx, - CF2_Buffer buf ); - - FT_LOCAL( CF2_Fixed ) - cf2_getDefaultWidthX( CFF_Decoder* decoder ); - FT_LOCAL( CF2_Fixed ) - cf2_getNominalWidthX( CFF_Decoder* decoder ); - - - /* - * FreeType client outline - * - * process output from the charstring interpreter - */ - typedef struct CF2_OutlineRec_ - { - CF2_OutlineCallbacksRec root; /* base class must be first */ - CFF_Decoder* decoder; - - } CF2_OutlineRec, *CF2_Outline; - - - FT_LOCAL( void ) - cf2_outline_reset( CF2_Outline outline ); - FT_LOCAL( void ) - cf2_outline_close( CF2_Outline outline ); - - -FT_END_HEADER - - -#endif /* __CF2FT_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2glue.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2glue.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2glue.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2glue.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,144 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2glue.h */ -/* */ -/* Adobe's code for shared stuff (specification only). */ -/* */ -/* Copyright 2007-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CF2GLUE_H__ -#define __CF2GLUE_H__ - - -/* common includes for other modules */ -#include "cf2error.h" -#include "cf2fixed.h" -#include "cf2arrst.h" -#include "cf2read.h" - - -FT_BEGIN_HEADER - - - /* rendering parameters */ - - /* apply hints to rendered glyphs */ -#define CF2_FlagsHinted 1 - /* for testing */ -#define CF2_FlagsDarkened 2 - - /* type for holding the flags */ - typedef CF2_Int CF2_RenderingFlags; - - - /* elements of a glyph outline */ - typedef enum CF2_PathOp_ - { - CF2_PathOpMoveTo = 1, /* change the current point */ - CF2_PathOpLineTo = 2, /* line */ - CF2_PathOpQuadTo = 3, /* quadratic curve */ - CF2_PathOpCubeTo = 4 /* cubic curve */ - - } CF2_PathOp; - - - /* a matrix of fixed point values */ - typedef struct CF2_Matrix_ - { - CF2_F16Dot16 a; - CF2_F16Dot16 b; - CF2_F16Dot16 c; - CF2_F16Dot16 d; - CF2_F16Dot16 tx; - CF2_F16Dot16 ty; - - } CF2_Matrix; - - - /* these typedefs are needed by more than one header file */ - /* and gcc compiler doesn't allow redefinition */ - typedef struct CF2_FontRec_ CF2_FontRec, *CF2_Font; - typedef struct CF2_HintRec_ CF2_HintRec, *CF2_Hint; - - - /* A common structure for all callback parameters. */ - /* */ - /* Some members may be unused. For example, `pt0' is not used for */ - /* `moveTo' and `pt3' is not used for `quadTo'. The initial point `pt0' */ - /* is included for each path element for generality; curve conversions */ - /* need it. The `op' parameter allows one function to handle multiple */ - /* element types. */ - - typedef struct CF2_CallbackParamsRec_ - { - FT_Vector pt0; - FT_Vector pt1; - FT_Vector pt2; - FT_Vector pt3; - - CF2_Int op; - - } CF2_CallbackParamsRec, *CF2_CallbackParams; - - - /* forward reference */ - typedef struct CF2_OutlineCallbacksRec_ CF2_OutlineCallbacksRec, - *CF2_OutlineCallbacks; - - /* callback function pointers */ - typedef void - (*CF2_Callback_Type)( CF2_OutlineCallbacks callbacks, - const CF2_CallbackParams params ); - - - struct CF2_OutlineCallbacksRec_ - { - CF2_Callback_Type moveTo; - CF2_Callback_Type lineTo; - CF2_Callback_Type quadTo; - CF2_Callback_Type cubeTo; - - CF2_Int windingMomentum; /* for winding order detection */ - - FT_Memory memory; - FT_Error* error; - }; - - -FT_END_HEADER - - -#endif /* __CF2GLUE_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2hints.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2hints.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2hints.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2hints.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,1847 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2hints.c */ -/* */ -/* Adobe's code for handling CFF hints (body). */ -/* */ -/* Copyright 2007-2014 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#include "cf2ft.h" -#include FT_INTERNAL_DEBUG_H - -#include "cf2glue.h" -#include "cf2font.h" -#include "cf2hints.h" -#include "cf2intrp.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_cf2hints - - - typedef struct CF2_HintMoveRec_ - { - size_t j; /* index of upper hint map edge */ - CF2_Fixed moveUp; /* adjustment to optimum position */ - - } CF2_HintMoveRec, *CF2_HintMove; - - - /* Compute angular momentum for winding order detection. It is called */ - /* for all lines and curves, but not necessarily in element order. */ - static CF2_Int - cf2_getWindingMomentum( CF2_Fixed x1, - CF2_Fixed y1, - CF2_Fixed x2, - CF2_Fixed y2 ) - { - /* cross product of pt1 position from origin with pt2 position from */ - /* pt1; we reduce the precision so that the result fits into 32 bits */ - - return ( x1 >> 16 ) * ( ( y2 - y1 ) >> 16 ) - - ( y1 >> 16 ) * ( ( x2 - x1 ) >> 16 ); - } - - - /* - * Construct from a StemHint; this is used as a parameter to - * `cf2_blues_capture'. - * `hintOrigin' is the character space displacement of a seac accent. - * Adjust stem hint for darkening here. - * - */ - static void - cf2_hint_init( CF2_Hint hint, - const CF2_ArrStack stemHintArray, - size_t indexStemHint, - const CF2_Font font, - CF2_Fixed hintOrigin, - CF2_Fixed scale, - FT_Bool bottom ) - { - CF2_Fixed width; - const CF2_StemHintRec* stemHint; - - - FT_ZERO( hint ); - - stemHint = (const CF2_StemHintRec*)cf2_arrstack_getPointer( - stemHintArray, - indexStemHint ); - - width = stemHint->max - stemHint->min; - - if ( width == cf2_intToFixed( -21 ) ) - { - /* ghost bottom */ - - if ( bottom ) - { - hint->csCoord = stemHint->max; - hint->flags = CF2_GhostBottom; - } - else - hint->flags = 0; - } - - else if ( width == cf2_intToFixed( -20 ) ) - { - /* ghost top */ - - if ( bottom ) - hint->flags = 0; - else - { - hint->csCoord = stemHint->min; - hint->flags = CF2_GhostTop; - } - } - - else if ( width < 0 ) - { - /* inverted pair */ - - /* - * Hints with negative widths were produced by an early version of a - * non-Adobe font tool. The Type 2 spec allows edge (ghost) hints - * with negative widths, but says - * - * All other negative widths have undefined meaning. - * - * CoolType has a silent workaround that negates the hint width; for - * permissive mode, we do the same here. - * - * Note: Such fonts cannot use ghost hints, but should otherwise work. - * Note: Some poor hints in our faux fonts can produce negative - * widths at some blends. For example, see a light weight of - * `u' in ASerifMM. - * - */ - if ( bottom ) - { - hint->csCoord = stemHint->max; - hint->flags = CF2_PairBottom; - } - else - { - hint->csCoord = stemHint->min; - hint->flags = CF2_PairTop; - } - } - - else - { - /* normal pair */ - - if ( bottom ) - { - hint->csCoord = stemHint->min; - hint->flags = CF2_PairBottom; - } - else - { - hint->csCoord = stemHint->max; - hint->flags = CF2_PairTop; - } - } - - /* Now that ghost hints have been detected, adjust this edge for */ - /* darkening. Bottoms are not changed; tops are incremented by twice */ - /* `darkenY'. */ - if ( cf2_hint_isTop( hint ) ) - hint->csCoord += 2 * font->darkenY; - - hint->csCoord += hintOrigin; - hint->scale = scale; - hint->index = indexStemHint; /* index in original stem hint array */ - - /* if original stem hint has been used, use the same position */ - if ( hint->flags != 0 && stemHint->used ) - { - if ( cf2_hint_isTop( hint ) ) - hint->dsCoord = stemHint->maxDS; - else - hint->dsCoord = stemHint->minDS; - - cf2_hint_lock( hint ); - } - else - hint->dsCoord = FT_MulFix( hint->csCoord, scale ); - } - - - /* initialize an invalid hint map element */ - static void - cf2_hint_initZero( CF2_Hint hint ) - { - FT_ZERO( hint ); - } - - - FT_LOCAL_DEF( FT_Bool ) - cf2_hint_isValid( const CF2_Hint hint ) - { - return (FT_Bool)( hint->flags != 0 ); - } - - - static FT_Bool - cf2_hint_isPair( const CF2_Hint hint ) - { - return (FT_Bool)( ( hint->flags & - ( CF2_PairBottom | CF2_PairTop ) ) != 0 ); - } - - - static FT_Bool - cf2_hint_isPairTop( const CF2_Hint hint ) - { - return (FT_Bool)( ( hint->flags & CF2_PairTop ) != 0 ); - } - - - FT_LOCAL_DEF( FT_Bool ) - cf2_hint_isTop( const CF2_Hint hint ) - { - return (FT_Bool)( ( hint->flags & - ( CF2_PairTop | CF2_GhostTop ) ) != 0 ); - } - - - FT_LOCAL_DEF( FT_Bool ) - cf2_hint_isBottom( const CF2_Hint hint ) - { - return (FT_Bool)( ( hint->flags & - ( CF2_PairBottom | CF2_GhostBottom ) ) != 0 ); - } - - - static FT_Bool - cf2_hint_isLocked( const CF2_Hint hint ) - { - return (FT_Bool)( ( hint->flags & CF2_Locked ) != 0 ); - } - - - static FT_Bool - cf2_hint_isSynthetic( const CF2_Hint hint ) - { - return (FT_Bool)( ( hint->flags & CF2_Synthetic ) != 0 ); - } - - - FT_LOCAL_DEF( void ) - cf2_hint_lock( CF2_Hint hint ) - { - hint->flags |= CF2_Locked; - } - - - FT_LOCAL_DEF( void ) - cf2_hintmap_init( CF2_HintMap hintmap, - CF2_Font font, - CF2_HintMap initialMap, - CF2_ArrStack hintMoves, - CF2_Fixed scale ) - { - FT_ZERO( hintmap ); - - /* copy parameters from font instance */ - hintmap->hinted = font->hinted; - hintmap->scale = scale; - hintmap->font = font; - hintmap->initialHintMap = initialMap; - /* will clear in `cf2_hintmap_adjustHints' */ - hintmap->hintMoves = hintMoves; - } - - - static FT_Bool - cf2_hintmap_isValid( const CF2_HintMap hintmap ) - { - return hintmap->isValid; - } - - - /* transform character space coordinate to device space using hint map */ - static CF2_Fixed - cf2_hintmap_map( CF2_HintMap hintmap, - CF2_Fixed csCoord ) - { - if ( hintmap->count == 0 || ! hintmap->hinted ) - { - /* there are no hints; use uniform scale and zero offset */ - return FT_MulFix( csCoord, hintmap->scale ); - } - else - { - /* start linear search from last hit */ - CF2_UInt i = hintmap->lastIndex; - - FT_ASSERT( hintmap->lastIndex < CF2_MAX_HINT_EDGES ); - - /* search up */ - while ( i < hintmap->count - 1 && - csCoord >= hintmap->edge[i + 1].csCoord ) - i += 1; - - /* search down */ - while ( i > 0 && csCoord < hintmap->edge[i].csCoord ) - i -= 1; - - hintmap->lastIndex = i; - - if ( i == 0 && csCoord < hintmap->edge[0].csCoord ) - { - /* special case for points below first edge: use uniform scale */ - return FT_MulFix( csCoord - hintmap->edge[0].csCoord, - hintmap->scale ) + - hintmap->edge[0].dsCoord; - } - else - { - /* - * Note: entries with duplicate csCoord are allowed. - * Use edge[i], the highest entry where csCoord >= entry[i].csCoord - */ - return FT_MulFix( csCoord - hintmap->edge[i].csCoord, - hintmap->edge[i].scale ) + - hintmap->edge[i].dsCoord; - } - } - } - - - /* - * This hinting policy moves a hint pair in device space so that one of - * its two edges is on a device pixel boundary (its fractional part is - * zero). `cf2_hintmap_insertHint' guarantees no overlap in CS - * space. Ensure here that there is no overlap in DS. - * - * In the first pass, edges are adjusted relative to adjacent hints. - * Those that are below have already been adjusted. Those that are - * above have not yet been adjusted. If a hint above blocks an - * adjustment to an optimal position, we will try again in a second - * pass. The second pass is top-down. - * - */ - - static void - cf2_hintmap_adjustHints( CF2_HintMap hintmap ) - { - size_t i, j; - - - cf2_arrstack_clear( hintmap->hintMoves ); /* working storage */ - - /* - * First pass is bottom-up (font hint order) without look-ahead. - * Locked edges are already adjusted. - * Unlocked edges begin with dsCoord from `initialHintMap'. - * Save edges that are not optimally adjusted in `hintMoves' array, - * and process them in second pass. - */ - - for ( i = 0; i < hintmap->count; i++ ) - { - FT_Bool isPair = cf2_hint_isPair( &hintmap->edge[i] ); - - - /* index of upper edge (same value for ghost hint) */ - j = isPair ? i + 1 : i; - - FT_ASSERT( j < hintmap->count ); - FT_ASSERT( cf2_hint_isValid( &hintmap->edge[i] ) ); - FT_ASSERT( cf2_hint_isValid( &hintmap->edge[j] ) ); - FT_ASSERT( cf2_hint_isLocked( &hintmap->edge[i] ) == - cf2_hint_isLocked( &hintmap->edge[j] ) ); - - if ( !cf2_hint_isLocked( &hintmap->edge[i] ) ) - { - /* hint edge is not locked, we can adjust it */ - CF2_Fixed fracDown = cf2_fixedFraction( hintmap->edge[i].dsCoord ); - CF2_Fixed fracUp = cf2_fixedFraction( hintmap->edge[j].dsCoord ); - - /* calculate all four possibilities; moves down are negative */ - CF2_Fixed downMoveDown = 0 - fracDown; - CF2_Fixed upMoveDown = 0 - fracUp; - CF2_Fixed downMoveUp = fracDown == 0 - ? 0 - : cf2_intToFixed( 1 ) - fracDown; - CF2_Fixed upMoveUp = fracUp == 0 - ? 0 - : cf2_intToFixed( 1 ) - fracUp; - - /* smallest move up */ - CF2_Fixed moveUp = FT_MIN( downMoveUp, upMoveUp ); - /* smallest move down */ - CF2_Fixed moveDown = FT_MAX( downMoveDown, upMoveDown ); - - /* final amount to move edge or edge pair */ - CF2_Fixed move; - - CF2_Fixed downMinCounter = CF2_MIN_COUNTER; - CF2_Fixed upMinCounter = CF2_MIN_COUNTER; - FT_Bool saveEdge = FALSE; - - - /* minimum counter constraint doesn't apply when adjacent edges */ - /* are synthetic */ - /* TODO: doesn't seem a big effect; for now, reduce the code */ -#if 0 - if ( i == 0 || - cf2_hint_isSynthetic( &hintmap->edge[i - 1] ) ) - downMinCounter = 0; - - if ( j >= hintmap->count - 1 || - cf2_hint_isSynthetic( &hintmap->edge[j + 1] ) ) - upMinCounter = 0; -#endif - - /* is there room to move up? */ - /* there is if we are at top of array or the next edge is at or */ - /* beyond proposed move up? */ - if ( j >= hintmap->count - 1 || - hintmap->edge[j + 1].dsCoord >= - hintmap->edge[j].dsCoord + moveUp + upMinCounter ) - { - /* there is room to move up; is there also room to move down? */ - if ( i == 0 || - hintmap->edge[i - 1].dsCoord <= - hintmap->edge[i].dsCoord + moveDown - downMinCounter ) - { - /* move smaller absolute amount */ - move = ( -moveDown < moveUp ) ? moveDown : moveUp; /* optimum */ - } - else - move = moveUp; - } - else - { - /* is there room to move down? */ - if ( i == 0 || - hintmap->edge[i - 1].dsCoord <= - hintmap->edge[i].dsCoord + moveDown - downMinCounter ) - { - move = moveDown; - /* true if non-optimum move */ - saveEdge = (FT_Bool)( moveUp < -moveDown ); - } - else - { - /* no room to move either way without overlapping or reducing */ - /* the counter too much */ - move = 0; - saveEdge = TRUE; - } - } - - /* Identify non-moves and moves down that aren't optimal, and save */ - /* them for second pass. */ - /* Do this only if there is an unlocked edge above (which could */ - /* possibly move). */ - if ( saveEdge && - j < hintmap->count - 1 && - !cf2_hint_isLocked( &hintmap->edge[j + 1] ) ) - { - CF2_HintMoveRec savedMove; - - - savedMove.j = j; - /* desired adjustment in second pass */ - savedMove.moveUp = moveUp - move; - - cf2_arrstack_push( hintmap->hintMoves, &savedMove ); - } - - /* move the edge(s) */ - hintmap->edge[i].dsCoord += move; - if ( isPair ) - hintmap->edge[j].dsCoord += move; - } - - /* assert there are no overlaps in device space */ - FT_ASSERT( i == 0 || - hintmap->edge[i - 1].dsCoord <= hintmap->edge[i].dsCoord ); - FT_ASSERT( i < j || - hintmap->edge[i].dsCoord <= hintmap->edge[j].dsCoord ); - - /* adjust the scales, avoiding divide by zero */ - if ( i > 0 ) - { - if ( hintmap->edge[i].csCoord != hintmap->edge[i - 1].csCoord ) - hintmap->edge[i - 1].scale = - FT_DivFix( - hintmap->edge[i].dsCoord - hintmap->edge[i - 1].dsCoord, - hintmap->edge[i].csCoord - hintmap->edge[i - 1].csCoord ); - } - - if ( isPair ) - { - if ( hintmap->edge[j].csCoord != hintmap->edge[j - 1].csCoord ) - hintmap->edge[j - 1].scale = - FT_DivFix( - hintmap->edge[j].dsCoord - hintmap->edge[j - 1].dsCoord, - hintmap->edge[j].csCoord - hintmap->edge[j - 1].csCoord ); - - i += 1; /* skip upper edge on next loop */ - } - } - - /* second pass tries to move non-optimal hints up, in case there is */ - /* room now */ - for ( i = cf2_arrstack_size( hintmap->hintMoves ); i > 0; i-- ) - { - CF2_HintMove hintMove = (CF2_HintMove) - cf2_arrstack_getPointer( hintmap->hintMoves, i - 1 ); - - - j = hintMove->j; - - /* this was tested before the push, above */ - FT_ASSERT( j < hintmap->count - 1 ); - - /* is there room to move up? */ - if ( hintmap->edge[j + 1].dsCoord >= - hintmap->edge[j].dsCoord + hintMove->moveUp + CF2_MIN_COUNTER ) - { - /* there is more room now, move edge up */ - hintmap->edge[j].dsCoord += hintMove->moveUp; - - if ( cf2_hint_isPair( &hintmap->edge[j] ) ) - { - FT_ASSERT( j > 0 ); - hintmap->edge[j - 1].dsCoord += hintMove->moveUp; - } - } - } - } - - - /* insert hint edges into map, sorted by csCoord */ - static void - cf2_hintmap_insertHint( CF2_HintMap hintmap, - CF2_Hint bottomHintEdge, - CF2_Hint topHintEdge ) - { - CF2_UInt indexInsert; - - /* set default values, then check for edge hints */ - FT_Bool isPair = TRUE; - CF2_Hint firstHintEdge = bottomHintEdge; - CF2_Hint secondHintEdge = topHintEdge; - - - /* one or none of the input params may be invalid when dealing with */ - /* edge hints; at least one edge must be valid */ - FT_ASSERT( cf2_hint_isValid( bottomHintEdge ) || - cf2_hint_isValid( topHintEdge ) ); - - /* determine how many and which edges to insert */ - if ( !cf2_hint_isValid( bottomHintEdge ) ) - { - /* insert only the top edge */ - firstHintEdge = topHintEdge; - isPair = FALSE; - } - else if ( !cf2_hint_isValid( topHintEdge ) ) - { - /* insert only the bottom edge */ - isPair = FALSE; - } - - /* paired edges must be in proper order */ - FT_ASSERT( !isPair || - topHintEdge->csCoord >= bottomHintEdge->csCoord ); - - /* linear search to find index value of insertion point */ - indexInsert = 0; - for ( ; indexInsert < hintmap->count; indexInsert++ ) - { - if ( hintmap->edge[indexInsert].csCoord >= firstHintEdge->csCoord ) - break; - } - - /* - * Discard any hints that overlap in character space. Most often, this - * is while building the initial map, where captured hints from all - * zones are combined. Define overlap to include hints that `touch' - * (overlap zero). Hiragino Sans/Gothic fonts have numerous hints that - * touch. Some fonts have non-ideographic glyphs that overlap our - * synthetic hints. - * - * Overlap also occurs when darkening stem hints that are close. - * - */ - if ( indexInsert < hintmap->count ) - { - /* we are inserting before an existing edge: */ - /* verify that an existing edge is not the same */ - if ( hintmap->edge[indexInsert].csCoord == firstHintEdge->csCoord ) - return; /* ignore overlapping stem hint */ - - /* verify that a new pair does not straddle the next edge */ - if ( isPair && - hintmap->edge[indexInsert].csCoord <= secondHintEdge->csCoord ) - return; /* ignore overlapping stem hint */ - - /* verify that we are not inserting between paired edges */ - if ( cf2_hint_isPairTop( &hintmap->edge[indexInsert] ) ) - return; /* ignore overlapping stem hint */ - } - - /* recompute device space locations using initial hint map */ - if ( cf2_hintmap_isValid( hintmap->initialHintMap ) && - !cf2_hint_isLocked( firstHintEdge ) ) - { - if ( isPair ) - { - /* Use hint map to position the center of stem, and nominal scale */ - /* to position the two edges. This preserves the stem width. */ - CF2_Fixed midpoint = cf2_hintmap_map( - hintmap->initialHintMap, - ( secondHintEdge->csCoord + - firstHintEdge->csCoord ) / 2 ); - CF2_Fixed halfWidth = FT_MulFix( - ( secondHintEdge->csCoord - - firstHintEdge->csCoord ) / 2, - hintmap->scale ); - - - firstHintEdge->dsCoord = midpoint - halfWidth; - secondHintEdge->dsCoord = midpoint + halfWidth; - } - else - firstHintEdge->dsCoord = cf2_hintmap_map( hintmap->initialHintMap, - firstHintEdge->csCoord ); - } - - /* - * Discard any hints that overlap in device space; this can occur - * because locked hints have been moved to align with blue zones. - * - * TODO: Although we might correct this later during adjustment, we - * don't currently have a way to delete a conflicting hint once it has - * been inserted. See v2.030 MinionPro-Regular, 12 ppem darkened, - * initial hint map for second path, glyph 945 (the perispomeni (tilde) - * in U+1F6E, Greek omega with psili and perispomeni). Darkening is - * 25. Pair 667,747 initially conflicts in design space with top edge - * 660. This is because 667 maps to 7.87, and the top edge was - * captured by a zone at 8.0. The pair is later successfully inserted - * in a zone without the top edge. In this zone it is adjusted to 8.0, - * and no longer conflicts with the top edge in design space. This - * means it can be included in yet a later zone which does have the top - * edge hint. This produces a small mismatch between the first and - * last points of this path, even though the hint masks are the same. - * The density map difference is tiny (1/256). - * - */ - - if ( indexInsert > 0 ) - { - /* we are inserting after an existing edge */ - if ( firstHintEdge->dsCoord < hintmap->edge[indexInsert - 1].dsCoord ) - return; - } - - if ( indexInsert < hintmap->count ) - { - /* we are inserting before an existing edge */ - if ( isPair ) - { - if ( secondHintEdge->dsCoord > hintmap->edge[indexInsert].dsCoord ) - return; - } - else - { - if ( firstHintEdge->dsCoord > hintmap->edge[indexInsert].dsCoord ) - return; - } - } - - /* make room to insert */ - { - CF2_UInt iSrc = hintmap->count - 1; - CF2_UInt iDst = isPair ? hintmap->count + 1 : hintmap->count; - - CF2_UInt count = hintmap->count - indexInsert; - - - if ( iDst >= CF2_MAX_HINT_EDGES ) - { - FT_TRACE4(( "cf2_hintmap_insertHint: too many hintmaps\n" )); - return; - } - - while ( count-- ) - hintmap->edge[iDst--] = hintmap->edge[iSrc--]; - - /* insert first edge */ - hintmap->edge[indexInsert] = *firstHintEdge; /* copy struct */ - hintmap->count += 1; - - if ( isPair ) - { - /* insert second edge */ - hintmap->edge[indexInsert + 1] = *secondHintEdge; /* copy struct */ - hintmap->count += 1; - } - } - - return; - } - - - /* - * Build a map from hints and mask. - * - * This function may recur one level if `hintmap->initialHintMap' is not yet - * valid. - * If `initialMap' is true, simply build initial map. - * - * Synthetic hints are used in two ways. A hint at zero is inserted, if - * needed, in the initial hint map, to prevent translations from - * propagating across the origin. If synthetic em box hints are enabled - * for ideographic dictionaries, then they are inserted in all hint - * maps, including the initial one. - * - */ - FT_LOCAL_DEF( void ) - cf2_hintmap_build( CF2_HintMap hintmap, - CF2_ArrStack hStemHintArray, - CF2_ArrStack vStemHintArray, - CF2_HintMask hintMask, - CF2_Fixed hintOrigin, - FT_Bool initialMap ) - { - FT_Byte* maskPtr; - - CF2_Font font = hintmap->font; - CF2_HintMaskRec tempHintMask; - - size_t bitCount, i; - FT_Byte maskByte; - - - /* check whether initial map is constructed */ - if ( !initialMap && !cf2_hintmap_isValid( hintmap->initialHintMap ) ) - { - /* make recursive call with initialHintMap and temporary mask; */ - /* temporary mask will get all bits set, below */ - cf2_hintmask_init( &tempHintMask, hintMask->error ); - cf2_hintmap_build( hintmap->initialHintMap, - hStemHintArray, - vStemHintArray, - &tempHintMask, - hintOrigin, - TRUE ); - } - - if ( !cf2_hintmask_isValid( hintMask ) ) - { - /* without a hint mask, assume all hints are active */ - cf2_hintmask_setAll( hintMask, - cf2_arrstack_size( hStemHintArray ) + - cf2_arrstack_size( vStemHintArray ) ); - if ( !cf2_hintmask_isValid( hintMask ) ) - return; /* too many stem hints */ - } - - /* begin by clearing the map */ - hintmap->count = 0; - hintmap->lastIndex = 0; - - /* make a copy of the hint mask so we can modify it */ - tempHintMask = *hintMask; - maskPtr = cf2_hintmask_getMaskPtr( &tempHintMask ); - - /* use the hStem hints only, which are first in the mask */ - bitCount = cf2_arrstack_size( hStemHintArray ); - - /* Defense-in-depth. Should never return here. */ - if ( bitCount > hintMask->bitCount ) - return; - - /* synthetic embox hints get highest priority */ - if ( font->blues.doEmBoxHints ) - { - CF2_HintRec dummy; - - - cf2_hint_initZero( &dummy ); /* invalid hint map element */ - - /* ghost bottom */ - cf2_hintmap_insertHint( hintmap, - &font->blues.emBoxBottomEdge, - &dummy ); - /* ghost top */ - cf2_hintmap_insertHint( hintmap, - &dummy, - &font->blues.emBoxTopEdge ); - } - - /* insert hints captured by a blue zone or already locked (higher */ - /* priority) */ - for ( i = 0, maskByte = 0x80; i < bitCount; i++ ) - { - if ( maskByte & *maskPtr ) - { - /* expand StemHint into two `CF2_Hint' elements */ - CF2_HintRec bottomHintEdge, topHintEdge; - - - cf2_hint_init( &bottomHintEdge, - hStemHintArray, - i, - font, - hintOrigin, - hintmap->scale, - TRUE /* bottom */ ); - cf2_hint_init( &topHintEdge, - hStemHintArray, - i, - font, - hintOrigin, - hintmap->scale, - FALSE /* top */ ); - - if ( cf2_hint_isLocked( &bottomHintEdge ) || - cf2_hint_isLocked( &topHintEdge ) || - cf2_blues_capture( &font->blues, - &bottomHintEdge, - &topHintEdge ) ) - { - /* insert captured hint into map */ - cf2_hintmap_insertHint( hintmap, &bottomHintEdge, &topHintEdge ); - - *maskPtr &= ~maskByte; /* turn off the bit for this hint */ - } - } - - if ( ( i & 7 ) == 7 ) - { - /* move to next mask byte */ - maskPtr++; - maskByte = 0x80; - } - else - maskByte >>= 1; - } - - /* initial hint map includes only captured hints plus maybe one at 0 */ - - /* - * TODO: There is a problem here because we are trying to build a - * single hint map containing all captured hints. It is - * possible for there to be conflicts between captured hints, - * either because of darkening or because the hints are in - * separate hint zones (we are ignoring hint zones for the - * initial map). An example of the latter is MinionPro-Regular - * v2.030 glyph 883 (Greek Capital Alpha with Psili) at 15ppem. - * A stem hint for the psili conflicts with the top edge hint - * for the base character. The stem hint gets priority because - * of its sort order. In glyph 884 (Greek Capital Alpha with - * Psili and Oxia), the top of the base character gets a stem - * hint, and the psili does not. This creates different initial - * maps for the two glyphs resulting in different renderings of - * the base character. Will probably defer this either as not - * worth the cost or as a font bug. I don't think there is any - * good reason for an accent to be captured by an alignment - * zone. -darnold 2/12/10 - */ - - if ( initialMap ) - { - /* Apply a heuristic that inserts a point for (0,0), unless it's */ - /* already covered by a mapping. This locks the baseline for glyphs */ - /* that have no baseline hints. */ - - if ( hintmap->count == 0 || - hintmap->edge[0].csCoord > 0 || - hintmap->edge[hintmap->count - 1].csCoord < 0 ) - { - /* all edges are above 0 or all edges are below 0; */ - /* construct a locked edge hint at 0 */ - - CF2_HintRec edge, invalid; - - - cf2_hint_initZero( &edge ); - - edge.flags = CF2_GhostBottom | - CF2_Locked | - CF2_Synthetic; - edge.scale = hintmap->scale; - - cf2_hint_initZero( &invalid ); - cf2_hintmap_insertHint( hintmap, &edge, &invalid ); - } - } - else - { - /* insert remaining hints */ - - maskPtr = cf2_hintmask_getMaskPtr( &tempHintMask ); - - for ( i = 0, maskByte = 0x80; i < bitCount; i++ ) - { - if ( maskByte & *maskPtr ) - { - CF2_HintRec bottomHintEdge, topHintEdge; - - - cf2_hint_init( &bottomHintEdge, - hStemHintArray, - i, - font, - hintOrigin, - hintmap->scale, - TRUE /* bottom */ ); - cf2_hint_init( &topHintEdge, - hStemHintArray, - i, - font, - hintOrigin, - hintmap->scale, - FALSE /* top */ ); - - cf2_hintmap_insertHint( hintmap, &bottomHintEdge, &topHintEdge ); - } - - if ( ( i & 7 ) == 7 ) - { - /* move to next mask byte */ - maskPtr++; - maskByte = 0x80; - } - else - maskByte >>= 1; - } - } - - /* - * Note: The following line is a convenient place to break when - * debugging hinting. Examine `hintmap->edge' for the list of - * enabled hints, then step over the call to see the effect of - * adjustment. We stop here first on the recursive call that - * creates the initial map, and then on each counter group and - * hint zone. - */ - - /* adjust positions of hint edges that are not locked to blue zones */ - cf2_hintmap_adjustHints( hintmap ); - - /* save the position of all hints that were used in this hint map; */ - /* if we use them again, we'll locate them in the same position */ - if ( !initialMap ) - { - for ( i = 0; i < hintmap->count; i++ ) - { - if ( !cf2_hint_isSynthetic( &hintmap->edge[i] ) ) - { - /* Note: include both valid and invalid edges */ - /* Note: top and bottom edges are copied back separately */ - CF2_StemHint stemhint = (CF2_StemHint) - cf2_arrstack_getPointer( hStemHintArray, - hintmap->edge[i].index ); - - - if ( cf2_hint_isTop( &hintmap->edge[i] ) ) - stemhint->maxDS = hintmap->edge[i].dsCoord; - else - stemhint->minDS = hintmap->edge[i].dsCoord; - - stemhint->used = TRUE; - } - } - } - - /* hint map is ready to use */ - hintmap->isValid = TRUE; - - /* remember this mask has been used */ - cf2_hintmask_setNew( hintMask, FALSE ); - } - - - FT_LOCAL_DEF( void ) - cf2_glyphpath_init( CF2_GlyphPath glyphpath, - CF2_Font font, - CF2_OutlineCallbacks callbacks, - CF2_Fixed scaleY, - /* CF2_Fixed hShift, */ - CF2_ArrStack hStemHintArray, - CF2_ArrStack vStemHintArray, - CF2_HintMask hintMask, - CF2_Fixed hintOriginY, - const CF2_Blues blues, - const FT_Vector* fractionalTranslation ) - { - FT_ZERO( glyphpath ); - - glyphpath->font = font; - glyphpath->callbacks = callbacks; - - cf2_arrstack_init( &glyphpath->hintMoves, - font->memory, - &font->error, - sizeof ( CF2_HintMoveRec ) ); - - cf2_hintmap_init( &glyphpath->initialHintMap, - font, - &glyphpath->initialHintMap, - &glyphpath->hintMoves, - scaleY ); - cf2_hintmap_init( &glyphpath->firstHintMap, - font, - &glyphpath->initialHintMap, - &glyphpath->hintMoves, - scaleY ); - cf2_hintmap_init( &glyphpath->hintMap, - font, - &glyphpath->initialHintMap, - &glyphpath->hintMoves, - scaleY ); - - glyphpath->scaleX = font->innerTransform.a; - glyphpath->scaleC = font->innerTransform.c; - glyphpath->scaleY = font->innerTransform.d; - - glyphpath->fractionalTranslation = *fractionalTranslation; - -#if 0 - glyphpath->hShift = hShift; /* for fauxing */ -#endif - - glyphpath->hStemHintArray = hStemHintArray; - glyphpath->vStemHintArray = vStemHintArray; - glyphpath->hintMask = hintMask; /* ptr to current mask */ - glyphpath->hintOriginY = hintOriginY; - glyphpath->blues = blues; - glyphpath->darken = font->darkened; /* TODO: should we make copies? */ - glyphpath->xOffset = font->darkenX; - glyphpath->yOffset = font->darkenY; - glyphpath->miterLimit = 2 * FT_MAX( - cf2_fixedAbs( glyphpath->xOffset ), - cf2_fixedAbs( glyphpath->yOffset ) ); - - /* .1 character space unit */ - glyphpath->snapThreshold = cf2_floatToFixed( 0.1f ); - - glyphpath->moveIsPending = TRUE; - glyphpath->pathIsOpen = FALSE; - glyphpath->pathIsClosing = FALSE; - glyphpath->elemIsQueued = FALSE; - } - - - FT_LOCAL_DEF( void ) - cf2_glyphpath_finalize( CF2_GlyphPath glyphpath ) - { - cf2_arrstack_finalize( &glyphpath->hintMoves ); - } - - - /* - * Hint point in y-direction and apply outerTransform. - * Input `current' hint map (which is actually delayed by one element). - * Input x,y point in Character Space. - * Output x,y point in Device Space, including translation. - */ - static void - cf2_glyphpath_hintPoint( CF2_GlyphPath glyphpath, - CF2_HintMap hintmap, - FT_Vector* ppt, - CF2_Fixed x, - CF2_Fixed y ) - { - FT_Vector pt; /* hinted point in upright DS */ - - - pt.x = FT_MulFix( glyphpath->scaleX, x ) + - FT_MulFix( glyphpath->scaleC, y ); - pt.y = cf2_hintmap_map( hintmap, y ); - - ppt->x = FT_MulFix( glyphpath->font->outerTransform.a, pt.x ) + - FT_MulFix( glyphpath->font->outerTransform.c, pt.y ) + - glyphpath->fractionalTranslation.x; - ppt->y = FT_MulFix( glyphpath->font->outerTransform.b, pt.x ) + - FT_MulFix( glyphpath->font->outerTransform.d, pt.y ) + - glyphpath->fractionalTranslation.y; - } - - - /* - * From two line segments, (u1,u2) and (v1,v2), compute a point of - * intersection on the corresponding lines. - * Return false if no intersection is found, or if the intersection is - * too far away from the ends of the line segments, u2 and v1. - * - */ - static FT_Bool - cf2_glyphpath_computeIntersection( CF2_GlyphPath glyphpath, - const FT_Vector* u1, - const FT_Vector* u2, - const FT_Vector* v1, - const FT_Vector* v2, - FT_Vector* intersection ) - { - /* - * Let `u' be a zero-based vector from the first segment, `v' from the - * second segment. - * Let `w 'be the zero-based vector from `u1' to `v1'. - * `perp' is the `perpendicular dot product'; see - * http://mathworld.wolfram.com/PerpDotProduct.html. - * `s' is the parameter for the parametric line for the first segment - * (`u'). - * - * See notation in - * http://softsurfer.com/Archive/algorithm_0104/algorithm_0104B.htm. - * Calculations are done in 16.16, but must handle the squaring of - * line lengths in character space. We scale all vectors by 1/32 to - * avoid overflow. This allows values up to 4095 to be squared. The - * scale factor cancels in the divide. - * - * TODO: the scale factor could be computed from UnitsPerEm. - * - */ - -#define cf2_perp( a, b ) \ - ( FT_MulFix( a.x, b.y ) - FT_MulFix( a.y, b.x ) ) - - /* round and divide by 32 */ -#define CF2_CS_SCALE( x ) \ - ( ( (x) + 0x10 ) >> 5 ) - - FT_Vector u, v, w; /* scaled vectors */ - CF2_Fixed denominator, s; - - - u.x = CF2_CS_SCALE( u2->x - u1->x ); - u.y = CF2_CS_SCALE( u2->y - u1->y ); - v.x = CF2_CS_SCALE( v2->x - v1->x ); - v.y = CF2_CS_SCALE( v2->y - v1->y ); - w.x = CF2_CS_SCALE( v1->x - u1->x ); - w.y = CF2_CS_SCALE( v1->y - u1->y ); - - denominator = cf2_perp( u, v ); - - if ( denominator == 0 ) - return FALSE; /* parallel or coincident lines */ - - s = FT_DivFix( cf2_perp( w, v ), denominator ); - - intersection->x = u1->x + FT_MulFix( s, u2->x - u1->x ); - intersection->y = u1->y + FT_MulFix( s, u2->y - u1->y ); - - /* - * Special case snapping for horizontal and vertical lines. - * This cleans up intersections and reduces problems with winding - * order detection. - * Sample case is sbc cd KozGoPr6N-Medium.otf 20 16685. - * Note: these calculations are in character space. - * - */ - - if ( u1->x == u2->x && - cf2_fixedAbs( intersection->x - u1->x ) < glyphpath->snapThreshold ) - intersection->x = u1->x; - if ( u1->y == u2->y && - cf2_fixedAbs( intersection->y - u1->y ) < glyphpath->snapThreshold ) - intersection->y = u1->y; - - if ( v1->x == v2->x && - cf2_fixedAbs( intersection->x - v1->x ) < glyphpath->snapThreshold ) - intersection->x = v1->x; - if ( v1->y == v2->y && - cf2_fixedAbs( intersection->y - v1->y ) < glyphpath->snapThreshold ) - intersection->y = v1->y; - - /* limit the intersection distance from midpoint of u2 and v1 */ - if ( cf2_fixedAbs( intersection->x - ( u2->x + v1->x ) / 2 ) > - glyphpath->miterLimit || - cf2_fixedAbs( intersection->y - ( u2->y + v1->y ) / 2 ) > - glyphpath->miterLimit ) - return FALSE; - - return TRUE; - } - - - /* - * Push the cached element (glyphpath->prevElem*) to the outline - * consumer. When a darkening offset is used, the end point of the - * cached element may be adjusted to an intersection point or we may - * synthesize a connecting line to the current element. If we are - * closing a subpath, we may also generate a connecting line to the start - * point. - * - * This is where Character Space (CS) is converted to Device Space (DS) - * using a hint map. This calculation must use a HintMap that was valid - * at the time the element was saved. For the first point in a subpath, - * that is a saved HintMap. For most elements, it just means the caller - * has delayed building a HintMap from the current HintMask. - * - * Transform each point with outerTransform and call the outline - * callbacks. This is a general 3x3 transform: - * - * x' = a*x + c*y + tx, y' = b*x + d*y + ty - * - * but it uses 4 elements from CF2_Font and the translation part - * from CF2_GlyphPath. - * - */ - static void - cf2_glyphpath_pushPrevElem( CF2_GlyphPath glyphpath, - CF2_HintMap hintmap, - FT_Vector* nextP0, - FT_Vector nextP1, - FT_Bool close ) - { - CF2_CallbackParamsRec params; - - FT_Vector* prevP0; - FT_Vector* prevP1; - - FT_Vector intersection = { 0, 0 }; - FT_Bool useIntersection = FALSE; - - - FT_ASSERT( glyphpath->prevElemOp == CF2_PathOpLineTo || - glyphpath->prevElemOp == CF2_PathOpCubeTo ); - - if ( glyphpath->prevElemOp == CF2_PathOpLineTo ) - { - prevP0 = &glyphpath->prevElemP0; - prevP1 = &glyphpath->prevElemP1; - } - else - { - prevP0 = &glyphpath->prevElemP2; - prevP1 = &glyphpath->prevElemP3; - } - - /* optimization: if previous and next elements are offset by the same */ - /* amount, then there will be no gap, and no need to compute an */ - /* intersection. */ - if ( prevP1->x != nextP0->x || prevP1->y != nextP0->y ) - { - /* previous element does not join next element: */ - /* adjust end point of previous element to the intersection */ - useIntersection = cf2_glyphpath_computeIntersection( glyphpath, - prevP0, - prevP1, - nextP0, - &nextP1, - &intersection ); - if ( useIntersection ) - { - /* modify the last point of the cached element (either line or */ - /* curve) */ - *prevP1 = intersection; - } - } - - params.pt0 = glyphpath->currentDS; - - switch( glyphpath->prevElemOp ) - { - case CF2_PathOpLineTo: - params.op = CF2_PathOpLineTo; - - /* note: pt2 and pt3 are unused */ - - if ( close ) - { - /* use first hint map if closing */ - cf2_glyphpath_hintPoint( glyphpath, - &glyphpath->firstHintMap, - ¶ms.pt1, - glyphpath->prevElemP1.x, - glyphpath->prevElemP1.y ); - } - else - { - cf2_glyphpath_hintPoint( glyphpath, - hintmap, - ¶ms.pt1, - glyphpath->prevElemP1.x, - glyphpath->prevElemP1.y ); - } - - /* output only non-zero length lines */ - if ( params.pt0.x != params.pt1.x || params.pt0.y != params.pt1.y ) - { - glyphpath->callbacks->lineTo( glyphpath->callbacks, ¶ms ); - - glyphpath->currentDS = params.pt1; - } - break; - - case CF2_PathOpCubeTo: - params.op = CF2_PathOpCubeTo; - - /* TODO: should we intersect the interior joins (p1-p2 and p2-p3)? */ - cf2_glyphpath_hintPoint( glyphpath, - hintmap, - ¶ms.pt1, - glyphpath->prevElemP1.x, - glyphpath->prevElemP1.y ); - cf2_glyphpath_hintPoint( glyphpath, - hintmap, - ¶ms.pt2, - glyphpath->prevElemP2.x, - glyphpath->prevElemP2.y ); - cf2_glyphpath_hintPoint( glyphpath, - hintmap, - ¶ms.pt3, - glyphpath->prevElemP3.x, - glyphpath->prevElemP3.y ); - - glyphpath->callbacks->cubeTo( glyphpath->callbacks, ¶ms ); - - glyphpath->currentDS = params.pt3; - - break; - } - - if ( !useIntersection || close ) - { - /* insert connecting line between end of previous element and start */ - /* of current one */ - /* note: at the end of a subpath, we might do both, so use `nextP0' */ - /* before we change it, below */ - - if ( close ) - { - /* if we are closing the subpath, then nextP0 is in the first */ - /* hint zone */ - cf2_glyphpath_hintPoint( glyphpath, - &glyphpath->firstHintMap, - ¶ms.pt1, - nextP0->x, - nextP0->y ); - } - else - { - cf2_glyphpath_hintPoint( glyphpath, - hintmap, - ¶ms.pt1, - nextP0->x, - nextP0->y ); - } - - if ( params.pt1.x != glyphpath->currentDS.x || - params.pt1.y != glyphpath->currentDS.y ) - { - /* length is nonzero */ - params.op = CF2_PathOpLineTo; - params.pt0 = glyphpath->currentDS; - - /* note: pt2 and pt3 are unused */ - glyphpath->callbacks->lineTo( glyphpath->callbacks, ¶ms ); - - glyphpath->currentDS = params.pt1; - } - } - - if ( useIntersection ) - { - /* return intersection point to caller */ - *nextP0 = intersection; - } - } - - - /* push a MoveTo element based on current point and offset of current */ - /* element */ - static void - cf2_glyphpath_pushMove( CF2_GlyphPath glyphpath, - FT_Vector start ) - { - CF2_CallbackParamsRec params; - - - params.op = CF2_PathOpMoveTo; - params.pt0 = glyphpath->currentDS; - - /* Test if move has really happened yet; it would have called */ - /* `cf2_hintmap_build' to set `isValid'. */ - if ( !cf2_hintmap_isValid( &glyphpath->hintMap ) ) - { - /* we are here iff first subpath is missing a moveto operator: */ - /* synthesize first moveTo to finish initialization of hintMap */ - cf2_glyphpath_moveTo( glyphpath, - glyphpath->start.x, - glyphpath->start.y ); - } - - cf2_glyphpath_hintPoint( glyphpath, - &glyphpath->hintMap, - ¶ms.pt1, - start.x, - start.y ); - - /* note: pt2 and pt3 are unused */ - glyphpath->callbacks->moveTo( glyphpath->callbacks, ¶ms ); - - glyphpath->currentDS = params.pt1; - glyphpath->offsetStart0 = start; - } - - - /* - * All coordinates are in character space. - * On input, (x1, y1) and (x2, y2) give line segment. - * On output, (x, y) give offset vector. - * We use a piecewise approximation to trig functions. - * - * TODO: Offset true perpendicular and proper length - * supply the y-translation for hinting here, too, - * that adds yOffset unconditionally to *y. - */ - static void - cf2_glyphpath_computeOffset( CF2_GlyphPath glyphpath, - CF2_Fixed x1, - CF2_Fixed y1, - CF2_Fixed x2, - CF2_Fixed y2, - CF2_Fixed* x, - CF2_Fixed* y ) - { - CF2_Fixed dx = x2 - x1; - CF2_Fixed dy = y2 - y1; - - - /* note: negative offsets don't work here; negate deltas to change */ - /* quadrants, below */ - if ( glyphpath->font->reverseWinding ) - { - dx = -dx; - dy = -dy; - } - - *x = *y = 0; - - if ( !glyphpath->darken ) - return; - - /* add momentum for this path element */ - glyphpath->callbacks->windingMomentum += - cf2_getWindingMomentum( x1, y1, x2, y2 ); - - /* note: allow mixed integer and fixed multiplication here */ - if ( dx >= 0 ) - { - if ( dy >= 0 ) - { - /* first quadrant, +x +y */ - - if ( dx > 2 * dy ) - { - /* +x */ - *x = 0; - *y = 0; - } - else if ( dy > 2 * dx ) - { - /* +y */ - *x = glyphpath->xOffset; - *y = glyphpath->yOffset; - } - else - { - /* +x +y */ - *x = FT_MulFix( cf2_floatToFixed( 0.7 ), - glyphpath->xOffset ); - *y = FT_MulFix( cf2_floatToFixed( 1.0 - 0.7 ), - glyphpath->yOffset ); - } - } - else - { - /* fourth quadrant, +x -y */ - - if ( dx > -2 * dy ) - { - /* +x */ - *x = 0; - *y = 0; - } - else if ( -dy > 2 * dx ) - { - /* -y */ - *x = -glyphpath->xOffset; - *y = glyphpath->yOffset; - } - else - { - /* +x -y */ - *x = FT_MulFix( cf2_floatToFixed( -0.7 ), - glyphpath->xOffset ); - *y = FT_MulFix( cf2_floatToFixed( 1.0 - 0.7 ), - glyphpath->yOffset ); - } - } - } - else - { - if ( dy >= 0 ) - { - /* second quadrant, -x +y */ - - if ( -dx > 2 * dy ) - { - /* -x */ - *x = 0; - *y = 2 * glyphpath->yOffset; - } - else if ( dy > -2 * dx ) - { - /* +y */ - *x = glyphpath->xOffset; - *y = glyphpath->yOffset; - } - else - { - /* -x +y */ - *x = FT_MulFix( cf2_floatToFixed( 0.7 ), - glyphpath->xOffset ); - *y = FT_MulFix( cf2_floatToFixed( 1.0 + 0.7 ), - glyphpath->yOffset ); - } - } - else - { - /* third quadrant, -x -y */ - - if ( -dx > -2 * dy ) - { - /* -x */ - *x = 0; - *y = 2 * glyphpath->yOffset; - } - else if ( -dy > -2 * dx ) - { - /* -y */ - *x = -glyphpath->xOffset; - *y = glyphpath->yOffset; - } - else - { - /* -x -y */ - *x = FT_MulFix( cf2_floatToFixed( -0.7 ), - glyphpath->xOffset ); - *y = FT_MulFix( cf2_floatToFixed( 1.0 + 0.7 ), - glyphpath->yOffset ); - } - } - } - } - - - /* - * The functions cf2_glyphpath_{moveTo,lineTo,curveTo,closeOpenPath} are - * called by the interpreter with Character Space (CS) coordinates. Each - * path element is placed into a queue of length one to await the - * calculation of the following element. At that time, the darkening - * offset of the following element is known and joins can be computed, - * including possible modification of this element, before mapping to - * Device Space (DS) and passing it on to the outline consumer. - * - */ - FT_LOCAL_DEF( void ) - cf2_glyphpath_moveTo( CF2_GlyphPath glyphpath, - CF2_Fixed x, - CF2_Fixed y ) - { - cf2_glyphpath_closeOpenPath( glyphpath ); - - /* save the parameters of the move for later, when we'll know how to */ - /* offset it; */ - /* also save last move point */ - glyphpath->currentCS.x = glyphpath->start.x = x; - glyphpath->currentCS.y = glyphpath->start.y = y; - - glyphpath->moveIsPending = TRUE; - - /* ensure we have a valid map with current mask */ - if ( !cf2_hintmap_isValid( &glyphpath->hintMap ) || - cf2_hintmask_isNew( glyphpath->hintMask ) ) - cf2_hintmap_build( &glyphpath->hintMap, - glyphpath->hStemHintArray, - glyphpath->vStemHintArray, - glyphpath->hintMask, - glyphpath->hintOriginY, - FALSE ); - - /* save a copy of current HintMap to use when drawing initial point */ - glyphpath->firstHintMap = glyphpath->hintMap; /* structure copy */ - } - - - FT_LOCAL_DEF( void ) - cf2_glyphpath_lineTo( CF2_GlyphPath glyphpath, - CF2_Fixed x, - CF2_Fixed y ) - { - CF2_Fixed xOffset, yOffset; - FT_Vector P0, P1; - FT_Bool newHintMap; - - /* - * New hints will be applied after cf2_glyphpath_pushPrevElem has run. - * In case this is a synthesized closing line, any new hints should be - * delayed until this path is closed (`cf2_hintmask_isNew' will be - * called again before the next line or curve). - */ - - /* true if new hint map not on close */ - newHintMap = cf2_hintmask_isNew( glyphpath->hintMask ) && - !glyphpath->pathIsClosing; - - /* - * Zero-length lines may occur in the charstring. Because we cannot - * compute darkening offsets or intersections from zero-length lines, - * it is best to remove them and avoid artifacts. However, zero-length - * lines in CS at the start of a new hint map can generate non-zero - * lines in DS due to hint substitution. We detect a change in hint - * map here and pass those zero-length lines along. - */ - - /* - * Note: Find explicitly closed paths here with a conditional - * breakpoint using - * - * !gp->pathIsClosing && gp->start.x == x && gp->start.y == y - * - */ - - if ( glyphpath->currentCS.x == x && - glyphpath->currentCS.y == y && - !newHintMap ) - /* - * Ignore zero-length lines in CS where the hint map is the same - * because the line in DS will also be zero length. - * - * Ignore zero-length lines when we synthesize a closing line because - * the close will be handled in cf2_glyphPath_pushPrevElem. - */ - return; - - cf2_glyphpath_computeOffset( glyphpath, - glyphpath->currentCS.x, - glyphpath->currentCS.y, - x, - y, - &xOffset, - &yOffset ); - - /* construct offset points */ - P0.x = glyphpath->currentCS.x + xOffset; - P0.y = glyphpath->currentCS.y + yOffset; - P1.x = x + xOffset; - P1.y = y + yOffset; - - if ( glyphpath->moveIsPending ) - { - /* emit offset 1st point as MoveTo */ - cf2_glyphpath_pushMove( glyphpath, P0 ); - - glyphpath->moveIsPending = FALSE; /* adjust state machine */ - glyphpath->pathIsOpen = TRUE; - - glyphpath->offsetStart1 = P1; /* record second point */ - } - - if ( glyphpath->elemIsQueued ) - { - FT_ASSERT( cf2_hintmap_isValid( &glyphpath->hintMap ) || - glyphpath->hintMap.count == 0 ); - - cf2_glyphpath_pushPrevElem( glyphpath, - &glyphpath->hintMap, - &P0, - P1, - FALSE ); - } - - /* queue the current element with offset points */ - glyphpath->elemIsQueued = TRUE; - glyphpath->prevElemOp = CF2_PathOpLineTo; - glyphpath->prevElemP0 = P0; - glyphpath->prevElemP1 = P1; - - /* update current map */ - if ( newHintMap ) - cf2_hintmap_build( &glyphpath->hintMap, - glyphpath->hStemHintArray, - glyphpath->vStemHintArray, - glyphpath->hintMask, - glyphpath->hintOriginY, - FALSE ); - - glyphpath->currentCS.x = x; /* pre-offset current point */ - glyphpath->currentCS.y = y; - } - - - FT_LOCAL_DEF( void ) - cf2_glyphpath_curveTo( CF2_GlyphPath glyphpath, - CF2_Fixed x1, - CF2_Fixed y1, - CF2_Fixed x2, - CF2_Fixed y2, - CF2_Fixed x3, - CF2_Fixed y3 ) - { - CF2_Fixed xOffset1, yOffset1, xOffset3, yOffset3; - FT_Vector P0, P1, P2, P3; - - - /* TODO: ignore zero length portions of curve?? */ - cf2_glyphpath_computeOffset( glyphpath, - glyphpath->currentCS.x, - glyphpath->currentCS.y, - x1, - y1, - &xOffset1, - &yOffset1 ); - cf2_glyphpath_computeOffset( glyphpath, - x2, - y2, - x3, - y3, - &xOffset3, - &yOffset3 ); - - /* add momentum from the middle segment */ - glyphpath->callbacks->windingMomentum += - cf2_getWindingMomentum( x1, y1, x2, y2 ); - - /* construct offset points */ - P0.x = glyphpath->currentCS.x + xOffset1; - P0.y = glyphpath->currentCS.y + yOffset1; - P1.x = x1 + xOffset1; - P1.y = y1 + yOffset1; - /* note: preserve angle of final segment by using offset3 at both ends */ - P2.x = x2 + xOffset3; - P2.y = y2 + yOffset3; - P3.x = x3 + xOffset3; - P3.y = y3 + yOffset3; - - if ( glyphpath->moveIsPending ) - { - /* emit offset 1st point as MoveTo */ - cf2_glyphpath_pushMove( glyphpath, P0 ); - - glyphpath->moveIsPending = FALSE; - glyphpath->pathIsOpen = TRUE; - - glyphpath->offsetStart1 = P1; /* record second point */ - } - - if ( glyphpath->elemIsQueued ) - { - FT_ASSERT( cf2_hintmap_isValid( &glyphpath->hintMap ) || - glyphpath->hintMap.count == 0 ); - - cf2_glyphpath_pushPrevElem( glyphpath, - &glyphpath->hintMap, - &P0, - P1, - FALSE ); - } - - /* queue the current element with offset points */ - glyphpath->elemIsQueued = TRUE; - glyphpath->prevElemOp = CF2_PathOpCubeTo; - glyphpath->prevElemP0 = P0; - glyphpath->prevElemP1 = P1; - glyphpath->prevElemP2 = P2; - glyphpath->prevElemP3 = P3; - - /* update current map */ - if ( cf2_hintmask_isNew( glyphpath->hintMask ) ) - cf2_hintmap_build( &glyphpath->hintMap, - glyphpath->hStemHintArray, - glyphpath->vStemHintArray, - glyphpath->hintMask, - glyphpath->hintOriginY, - FALSE ); - - glyphpath->currentCS.x = x3; /* pre-offset current point */ - glyphpath->currentCS.y = y3; - } - - - FT_LOCAL_DEF( void ) - cf2_glyphpath_closeOpenPath( CF2_GlyphPath glyphpath ) - { - if ( glyphpath->pathIsOpen ) - { - /* - * A closing line in Character Space line is always generated below - * with `cf2_glyphPath_lineTo'. It may be ignored later if it turns - * out to be zero length in Device Space. - */ - glyphpath->pathIsClosing = TRUE; - - cf2_glyphpath_lineTo( glyphpath, - glyphpath->start.x, - glyphpath->start.y ); - - /* empty the final element from the queue and close the path */ - if ( glyphpath->elemIsQueued ) - cf2_glyphpath_pushPrevElem( glyphpath, - &glyphpath->hintMap, - &glyphpath->offsetStart0, - glyphpath->offsetStart1, - TRUE ); - - /* reset state machine */ - glyphpath->moveIsPending = TRUE; - glyphpath->pathIsOpen = FALSE; - glyphpath->pathIsClosing = FALSE; - glyphpath->elemIsQueued = FALSE; - } - } - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2hints.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2hints.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2hints.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2hints.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,289 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2hints.h */ -/* */ -/* Adobe's code for handling CFF hints (body). */ -/* */ -/* Copyright 2007-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CF2HINTS_H__ -#define __CF2HINTS_H__ - - -FT_BEGIN_HEADER - - - enum - { - CF2_MAX_HINTS = 96 /* maximum # of hints */ - }; - - - /* - * A HintMask object stores a bit mask that specifies which hints in the - * charstring are active at a given time. Hints in CFF must be declared - * at the start, before any drawing operators, with horizontal hints - * preceding vertical hints. The HintMask is ordered the same way, with - * horizontal hints immediately followed by vertical hints. Clients are - * responsible for knowing how many of each type are present. - * - * The maximum total number of hints is 96, as specified by the CFF - * specification. - * - * A HintMask is built 0 or more times while interpreting a charstring, by - * the HintMask operator. There is only one HintMask, but it is built or - * rebuilt each time there is a hint substitution (HintMask operator) in - * the charstring. A default HintMask with all bits set is built if there - * has been no HintMask operator prior to the first drawing operator. - * - */ - - typedef struct CF2_HintMaskRec_ - { - FT_Error* error; - - FT_Bool isValid; - FT_Bool isNew; - - size_t bitCount; - size_t byteCount; - - FT_Byte mask[( CF2_MAX_HINTS + 7 ) / 8]; - - } CF2_HintMaskRec, *CF2_HintMask; - - - typedef struct CF2_StemHintRec_ - { - FT_Bool used; /* DS positions are valid */ - - CF2_Fixed min; /* original character space value */ - CF2_Fixed max; - - CF2_Fixed minDS; /* DS position after first use */ - CF2_Fixed maxDS; - - } CF2_StemHintRec, *CF2_StemHint; - - - /* - * A HintMap object stores a piecewise linear function for mapping - * y-coordinates from character space to device space, providing - * appropriate pixel alignment to stem edges. - * - * The map is implemented as an array of `CF2_Hint' elements, each - * representing an edge. When edges are paired, as from stem hints, the - * bottom edge must immediately precede the top edge in the array. - * Element character space AND device space positions must both increase - * monotonically in the array. `CF2_Hint' elements are also used as - * parameters to `cf2_blues_capture'. - * - * The `cf2_hintmap_build' method must be called before any drawing - * operation (beginning with a Move operator) and at each hint - * substitution (HintMask operator). - * - * The `cf2_hintmap_map' method is called to transform y-coordinates at - * each drawing operation (move, line, curve). - * - */ - - /* TODO: make this a CF2_ArrStack and add a deep copy method */ - enum - { - CF2_MAX_HINT_EDGES = CF2_MAX_HINTS * 2 - }; - - - typedef struct CF2_HintMapRec_ - { - CF2_Font font; - - /* initial map based on blue zones */ - struct CF2_HintMapRec_* initialHintMap; - - /* working storage for 2nd pass adjustHints */ - CF2_ArrStack hintMoves; - - FT_Bool isValid; - FT_Bool hinted; - - CF2_Fixed scale; - CF2_UInt count; - - /* start search from this index */ - CF2_UInt lastIndex; - - CF2_HintRec edge[CF2_MAX_HINT_EDGES]; /* 192 */ - - } CF2_HintMapRec, *CF2_HintMap; - - - FT_LOCAL( FT_Bool ) - cf2_hint_isValid( const CF2_Hint hint ); - FT_LOCAL( FT_Bool ) - cf2_hint_isTop( const CF2_Hint hint ); - FT_LOCAL( FT_Bool ) - cf2_hint_isBottom( const CF2_Hint hint ); - FT_LOCAL( void ) - cf2_hint_lock( CF2_Hint hint ); - - - FT_LOCAL( void ) - cf2_hintmap_init( CF2_HintMap hintmap, - CF2_Font font, - CF2_HintMap initialMap, - CF2_ArrStack hintMoves, - CF2_Fixed scale ); - FT_LOCAL( void ) - cf2_hintmap_build( CF2_HintMap hintmap, - CF2_ArrStack hStemHintArray, - CF2_ArrStack vStemHintArray, - CF2_HintMask hintMask, - CF2_Fixed hintOrigin, - FT_Bool initialMap ); - - - /* - * GlyphPath is a wrapper for drawing operations that scales the - * coordinates according to the render matrix and HintMap. It also tracks - * open paths to control ClosePath and to insert MoveTo for broken fonts. - * - */ - typedef struct CF2_GlyphPathRec_ - { - /* TODO: gather some of these into a hinting context */ - - CF2_Font font; /* font instance */ - CF2_OutlineCallbacks callbacks; /* outline consumer */ - - - CF2_HintMapRec hintMap; /* current hint map */ - CF2_HintMapRec firstHintMap; /* saved copy */ - CF2_HintMapRec initialHintMap; /* based on all captured hints */ - - CF2_ArrStackRec hintMoves; /* list of hint moves for 2nd pass */ - - CF2_Fixed scaleX; /* matrix a */ - CF2_Fixed scaleC; /* matrix c */ - CF2_Fixed scaleY; /* matrix d */ - - FT_Vector fractionalTranslation; /* including deviceXScale */ -#if 0 - CF2_Fixed hShift; /* character space horizontal shift */ - /* (for fauxing) */ -#endif - - FT_Bool pathIsOpen; /* true after MoveTo */ - FT_Bool pathIsClosing; /* true when synthesizing closepath line */ - FT_Bool darken; /* true if stem darkening */ - FT_Bool moveIsPending; /* true between MoveTo and offset MoveTo */ - - /* references used to call `cf2_hintmap_build', if necessary */ - CF2_ArrStack hStemHintArray; - CF2_ArrStack vStemHintArray; - CF2_HintMask hintMask; /* ptr to the current mask */ - CF2_Fixed hintOriginY; /* copy of current origin */ - const CF2_BluesRec* blues; - - CF2_Fixed xOffset; /* character space offsets */ - CF2_Fixed yOffset; - - /* character space miter limit threshold */ - CF2_Fixed miterLimit; - /* vertical/horzizontal snap distance in character space */ - CF2_Fixed snapThreshold; - - FT_Vector offsetStart0; /* first and second points of first */ - FT_Vector offsetStart1; /* element with offset applied */ - - /* current point, character space, before offset */ - FT_Vector currentCS; - /* current point, device space */ - FT_Vector currentDS; - /* start point of subpath, character space */ - FT_Vector start; - - /* the following members constitute the `queue' of one element */ - FT_Bool elemIsQueued; - CF2_Int prevElemOp; - - FT_Vector prevElemP0; - FT_Vector prevElemP1; - FT_Vector prevElemP2; - FT_Vector prevElemP3; - - } CF2_GlyphPathRec, *CF2_GlyphPath; - - - FT_LOCAL( void ) - cf2_glyphpath_init( CF2_GlyphPath glyphpath, - CF2_Font font, - CF2_OutlineCallbacks callbacks, - CF2_Fixed scaleY, - /* CF2_Fixed hShift, */ - CF2_ArrStack hStemHintArray, - CF2_ArrStack vStemHintArray, - CF2_HintMask hintMask, - CF2_Fixed hintOrigin, - const CF2_Blues blues, - const FT_Vector* fractionalTranslation ); - FT_LOCAL( void ) - cf2_glyphpath_finalize( CF2_GlyphPath glyphpath ); - - FT_LOCAL( void ) - cf2_glyphpath_moveTo( CF2_GlyphPath glyphpath, - CF2_Fixed x, - CF2_Fixed y ); - FT_LOCAL( void ) - cf2_glyphpath_lineTo( CF2_GlyphPath glyphpath, - CF2_Fixed x, - CF2_Fixed y ); - FT_LOCAL( void ) - cf2_glyphpath_curveTo( CF2_GlyphPath glyphpath, - CF2_Fixed x1, - CF2_Fixed y1, - CF2_Fixed x2, - CF2_Fixed y2, - CF2_Fixed x3, - CF2_Fixed y3 ); - FT_LOCAL( void ) - cf2_glyphpath_closeOpenPath( CF2_GlyphPath glyphpath ); - - -FT_END_HEADER - - -#endif /* __CF2HINTS_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2intrp.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2intrp.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2intrp.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2intrp.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,1571 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2intrp.c */ -/* */ -/* Adobe's CFF Interpreter (body). */ -/* */ -/* Copyright 2007-2014 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#include "cf2ft.h" -#include FT_INTERNAL_DEBUG_H - -#include "cf2glue.h" -#include "cf2font.h" -#include "cf2stack.h" -#include "cf2hints.h" -#include "cf2intrp.h" - -#include "cf2error.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_cf2interp - - - /* some operators are not implemented yet */ -#define CF2_FIXME FT_TRACE4(( "cf2_interpT2CharString:" \ - " operator not implemented yet\n" )) - - - - FT_LOCAL_DEF( void ) - cf2_hintmask_init( CF2_HintMask hintmask, - FT_Error* error ) - { - FT_ZERO( hintmask ); - - hintmask->error = error; - } - - - FT_LOCAL_DEF( FT_Bool ) - cf2_hintmask_isValid( const CF2_HintMask hintmask ) - { - return hintmask->isValid; - } - - - FT_LOCAL_DEF( FT_Bool ) - cf2_hintmask_isNew( const CF2_HintMask hintmask ) - { - return hintmask->isNew; - } - - - FT_LOCAL_DEF( void ) - cf2_hintmask_setNew( CF2_HintMask hintmask, - FT_Bool val ) - { - hintmask->isNew = val; - } - - - /* clients call `getMaskPtr' in order to iterate */ - /* through hint mask */ - - FT_LOCAL_DEF( FT_Byte* ) - cf2_hintmask_getMaskPtr( CF2_HintMask hintmask ) - { - return hintmask->mask; - } - - - static size_t - cf2_hintmask_setCounts( CF2_HintMask hintmask, - size_t bitCount ) - { - if ( bitCount > CF2_MAX_HINTS ) - { - /* total of h and v stems must be <= 96 */ - CF2_SET_ERROR( hintmask->error, Invalid_Glyph_Format ); - return 0; - } - - hintmask->bitCount = bitCount; - hintmask->byteCount = ( hintmask->bitCount + 7 ) / 8; - - hintmask->isValid = TRUE; - hintmask->isNew = TRUE; - - return bitCount; - } - - - /* consume the hintmask bytes from the charstring, advancing the src */ - /* pointer */ - static void - cf2_hintmask_read( CF2_HintMask hintmask, - CF2_Buffer charstring, - size_t bitCount ) - { - size_t i; - -#ifndef CF2_NDEBUG - /* these are the bits in the final mask byte that should be zero */ - /* Note: this variable is only used in an assert expression below */ - /* and then only if CF2_NDEBUG is not defined */ - CF2_UInt mask = ( 1 << ( -(CF2_Int)bitCount & 7 ) ) - 1; -#endif - - - /* initialize counts and isValid */ - if ( cf2_hintmask_setCounts( hintmask, bitCount ) == 0 ) - return; - - FT_ASSERT( hintmask->byteCount > 0 ); - - FT_TRACE4(( " (maskbytes:" )); - - /* set mask and advance interpreter's charstring pointer */ - for ( i = 0; i < hintmask->byteCount; i++ ) - { - hintmask->mask[i] = (FT_Byte)cf2_buf_readByte( charstring ); - FT_TRACE4(( " 0x%02X", hintmask->mask[i] )); - } - - FT_TRACE4(( ")\n" )); - - /* assert any unused bits in last byte are zero unless there's a prior */ - /* error */ - /* bitCount -> mask, 0 -> 0, 1 -> 7f, 2 -> 3f, ... 6 -> 3, 7 -> 1 */ -#ifndef CF2_NDEBUG - FT_ASSERT( ( hintmask->mask[hintmask->byteCount - 1] & mask ) == 0 || - *hintmask->error ); -#endif - } - - - FT_LOCAL_DEF( void ) - cf2_hintmask_setAll( CF2_HintMask hintmask, - size_t bitCount ) - { - size_t i; - CF2_UInt mask = ( 1 << ( -(CF2_Int)bitCount & 7 ) ) - 1; - - - /* initialize counts and isValid */ - if ( cf2_hintmask_setCounts( hintmask, bitCount ) == 0 ) - return; - - FT_ASSERT( hintmask->byteCount > 0 ); - FT_ASSERT( hintmask->byteCount < - sizeof ( hintmask->mask ) / sizeof ( hintmask->mask[0] ) ); - - /* set mask to all ones */ - for ( i = 0; i < hintmask->byteCount; i++ ) - hintmask->mask[i] = 0xFF; - - /* clear unused bits */ - /* bitCount -> mask, 0 -> 0, 1 -> 7f, 2 -> 3f, ... 6 -> 3, 7 -> 1 */ - hintmask->mask[hintmask->byteCount - 1] &= ~mask; - } - - - /* Type2 charstring opcodes */ - enum - { - cf2_cmdRESERVED_0, /* 0 */ - cf2_cmdHSTEM, /* 1 */ - cf2_cmdRESERVED_2, /* 2 */ - cf2_cmdVSTEM, /* 3 */ - cf2_cmdVMOVETO, /* 4 */ - cf2_cmdRLINETO, /* 5 */ - cf2_cmdHLINETO, /* 6 */ - cf2_cmdVLINETO, /* 7 */ - cf2_cmdRRCURVETO, /* 8 */ - cf2_cmdRESERVED_9, /* 9 */ - cf2_cmdCALLSUBR, /* 10 */ - cf2_cmdRETURN, /* 11 */ - cf2_cmdESC, /* 12 */ - cf2_cmdRESERVED_13, /* 13 */ - cf2_cmdENDCHAR, /* 14 */ - cf2_cmdRESERVED_15, /* 15 */ - cf2_cmdRESERVED_16, /* 16 */ - cf2_cmdRESERVED_17, /* 17 */ - cf2_cmdHSTEMHM, /* 18 */ - cf2_cmdHINTMASK, /* 19 */ - cf2_cmdCNTRMASK, /* 20 */ - cf2_cmdRMOVETO, /* 21 */ - cf2_cmdHMOVETO, /* 22 */ - cf2_cmdVSTEMHM, /* 23 */ - cf2_cmdRCURVELINE, /* 24 */ - cf2_cmdRLINECURVE, /* 25 */ - cf2_cmdVVCURVETO, /* 26 */ - cf2_cmdHHCURVETO, /* 27 */ - cf2_cmdEXTENDEDNMBR, /* 28 */ - cf2_cmdCALLGSUBR, /* 29 */ - cf2_cmdVHCURVETO, /* 30 */ - cf2_cmdHVCURVETO /* 31 */ - }; - - enum - { - cf2_escDOTSECTION, /* 0 */ - cf2_escRESERVED_1, /* 1 */ - cf2_escRESERVED_2, /* 2 */ - cf2_escAND, /* 3 */ - cf2_escOR, /* 4 */ - cf2_escNOT, /* 5 */ - cf2_escRESERVED_6, /* 6 */ - cf2_escRESERVED_7, /* 7 */ - cf2_escRESERVED_8, /* 8 */ - cf2_escABS, /* 9 */ - cf2_escADD, /* 10 like otherADD */ - cf2_escSUB, /* 11 like otherSUB */ - cf2_escDIV, /* 12 */ - cf2_escRESERVED_13, /* 13 */ - cf2_escNEG, /* 14 */ - cf2_escEQ, /* 15 */ - cf2_escRESERVED_16, /* 16 */ - cf2_escRESERVED_17, /* 17 */ - cf2_escDROP, /* 18 */ - cf2_escRESERVED_19, /* 19 */ - cf2_escPUT, /* 20 like otherPUT */ - cf2_escGET, /* 21 like otherGET */ - cf2_escIFELSE, /* 22 like otherIFELSE */ - cf2_escRANDOM, /* 23 like otherRANDOM */ - cf2_escMUL, /* 24 like otherMUL */ - cf2_escRESERVED_25, /* 25 */ - cf2_escSQRT, /* 26 */ - cf2_escDUP, /* 27 like otherDUP */ - cf2_escEXCH, /* 28 like otherEXCH */ - cf2_escINDEX, /* 29 */ - cf2_escROLL, /* 30 */ - cf2_escRESERVED_31, /* 31 */ - cf2_escRESERVED_32, /* 32 */ - cf2_escRESERVED_33, /* 33 */ - cf2_escHFLEX, /* 34 */ - cf2_escFLEX, /* 35 */ - cf2_escHFLEX1, /* 36 */ - cf2_escFLEX1 /* 37 */ - }; - - - /* `stemHintArray' does not change once we start drawing the outline. */ - static void - cf2_doStems( const CF2_Font font, - CF2_Stack opStack, - CF2_ArrStack stemHintArray, - CF2_Fixed* width, - FT_Bool* haveWidth, - CF2_Fixed hintOffset ) - { - CF2_UInt i; - CF2_UInt count = cf2_stack_count( opStack ); - FT_Bool hasWidthArg = (FT_Bool)( count & 1 ); - - /* variable accumulates delta values from operand stack */ - CF2_Fixed position = hintOffset; - - if ( hasWidthArg && ! *haveWidth ) - *width = cf2_stack_getReal( opStack, 0 ) + - cf2_getNominalWidthX( font->decoder ); - - if ( font->decoder->width_only ) - goto exit; - - for ( i = hasWidthArg ? 1 : 0; i < count; i += 2 ) - { - /* construct a CF2_StemHint and push it onto the list */ - CF2_StemHintRec stemhint; - - - stemhint.min = - position += cf2_stack_getReal( opStack, i ); - stemhint.max = - position += cf2_stack_getReal( opStack, i + 1 ); - - stemhint.used = FALSE; - stemhint.maxDS = - stemhint.minDS = 0; - - cf2_arrstack_push( stemHintArray, &stemhint ); /* defer error check */ - } - - cf2_stack_clear( opStack ); - - exit: - /* cf2_doStems must define a width (may be default) */ - *haveWidth = TRUE; - } - - - static void - cf2_doFlex( CF2_Stack opStack, - CF2_Fixed* curX, - CF2_Fixed* curY, - CF2_GlyphPath glyphPath, - const FT_Bool* readFromStack, - FT_Bool doConditionalLastRead ) - { - CF2_Fixed vals[14]; - CF2_UInt index; - FT_Bool isHFlex; - CF2_Int top, i, j; - - - vals[0] = *curX; - vals[1] = *curY; - index = 0; - isHFlex = readFromStack[9] == FALSE; - top = isHFlex ? 9 : 10; - - for ( i = 0; i < top; i++ ) - { - vals[i + 2] = vals[i]; - if ( readFromStack[i] ) - vals[i + 2] += cf2_stack_getReal( opStack, index++ ); - } - - if ( isHFlex ) - vals[9 + 2] = *curY; - - if ( doConditionalLastRead ) - { - FT_Bool lastIsX = (FT_Bool)( cf2_fixedAbs( vals[10] - *curX ) > - cf2_fixedAbs( vals[11] - *curY ) ); - CF2_Fixed lastVal = cf2_stack_getReal( opStack, index ); - - - if ( lastIsX ) - { - vals[12] = vals[10] + lastVal; - vals[13] = *curY; - } - else - { - vals[12] = *curX; - vals[13] = vals[11] + lastVal; - } - } - else - { - if ( readFromStack[10] ) - vals[12] = vals[10] + cf2_stack_getReal( opStack, index++ ); - else - vals[12] = *curX; - - if ( readFromStack[11] ) - vals[13] = vals[11] + cf2_stack_getReal( opStack, index ); - else - vals[13] = *curY; - } - - for ( j = 0; j < 2; j++ ) - cf2_glyphpath_curveTo( glyphPath, vals[j * 6 + 2], - vals[j * 6 + 3], - vals[j * 6 + 4], - vals[j * 6 + 5], - vals[j * 6 + 6], - vals[j * 6 + 7] ); - - cf2_stack_clear( opStack ); - - *curX = vals[12]; - *curY = vals[13]; - } - - - /* - * `error' is a shared error code used by many objects in this - * routine. Before the code continues from an error, it must check and - * record the error in `*error'. The idea is that this shared - * error code will record the first error encountered. If testing - * for an error anyway, the cost of `goto exit' is small, so we do it, - * even if continuing would be safe. In this case, `lastError' is - * set, so the testing and storing can be done in one place, at `exit'. - * - * Continuing after an error is intended for objects which do their own - * testing of `*error', e.g., array stack functions. This allows us to - * avoid an extra test after the call. - * - * Unimplemented opcodes are ignored. - * - */ - FT_LOCAL_DEF( void ) - cf2_interpT2CharString( CF2_Font font, - CF2_Buffer buf, - CF2_OutlineCallbacks callbacks, - const FT_Vector* translation, - FT_Bool doingSeac, - CF2_Fixed curX, - CF2_Fixed curY, - CF2_Fixed* width ) - { - /* lastError is used for errors that are immediately tested */ - FT_Error lastError = FT_Err_Ok; - - /* pointer to parsed font object */ - CFF_Decoder* decoder = font->decoder; - - FT_Error* error = &font->error; - FT_Memory memory = font->memory; - - CF2_Fixed scaleY = font->innerTransform.d; - CF2_Fixed nominalWidthX = cf2_getNominalWidthX( decoder ); - - /* save this for hinting seac accents */ - CF2_Fixed hintOriginY = curY; - - CF2_Stack opStack = NULL; - FT_Byte op1; /* first opcode byte */ - - /* instruction limit; 20,000,000 matches Avalon */ - FT_UInt32 instructionLimit = 20000000UL; - - CF2_ArrStackRec subrStack; - - FT_Bool haveWidth; - CF2_Buffer charstring = NULL; - - CF2_Int charstringIndex = -1; /* initialize to empty */ - - /* TODO: placeholders for hint structures */ - - /* objects used for hinting */ - CF2_ArrStackRec hStemHintArray; - CF2_ArrStackRec vStemHintArray; - - CF2_HintMaskRec hintMask; - CF2_GlyphPathRec glyphPath; - - - /* initialize the remaining objects */ - cf2_arrstack_init( &subrStack, - memory, - error, - sizeof ( CF2_BufferRec ) ); - cf2_arrstack_init( &hStemHintArray, - memory, - error, - sizeof ( CF2_StemHintRec ) ); - cf2_arrstack_init( &vStemHintArray, - memory, - error, - sizeof ( CF2_StemHintRec ) ); - - /* initialize CF2_StemHint arrays */ - cf2_hintmask_init( &hintMask, error ); - - /* initialize path map to manage drawing operations */ - - /* Note: last 4 params are used to handle `MoveToPermissive', which */ - /* may need to call `hintMap.Build' */ - /* TODO: MoveToPermissive is gone; are these still needed? */ - cf2_glyphpath_init( &glyphPath, - font, - callbacks, - scaleY, - /* hShift, */ - &hStemHintArray, - &vStemHintArray, - &hintMask, - hintOriginY, - &font->blues, - translation ); - - /* - * Initialize state for width parsing. From the CFF Spec: - * - * The first stack-clearing operator, which must be one of hstem, - * hstemhm, vstem, vstemhm, cntrmask, hintmask, hmoveto, vmoveto, - * rmoveto, or endchar, takes an additional argument - the width (as - * described earlier), which may be expressed as zero or one numeric - * argument. - * - * What we implement here uses the first validly specified width, but - * does not detect errors for specifying more than one width. - * - * If one of the above operators occurs without explicitly specifying - * a width, we assume the default width. - * - */ - haveWidth = FALSE; - *width = cf2_getDefaultWidthX( decoder ); - - /* - * Note: at this point, all pointers to resources must be NULL - * and all local objects must be initialized. - * There must be no branches to exit: above this point. - * - */ - - /* allocate an operand stack */ - opStack = cf2_stack_init( memory, error ); - if ( !opStack ) - { - lastError = FT_THROW( Out_Of_Memory ); - goto exit; - } - - /* initialize subroutine stack by placing top level charstring as */ - /* first element (max depth plus one for the charstring) */ - /* Note: Caller owns and must finalize the first charstring. */ - /* Our copy of it does not change that requirement. */ - cf2_arrstack_setCount( &subrStack, CF2_MAX_SUBR + 1 ); - - charstring = (CF2_Buffer)cf2_arrstack_getBuffer( &subrStack ); - *charstring = *buf; /* structure copy */ - - charstringIndex = 0; /* entry is valid now */ - - /* catch errors so far */ - if ( *error ) - goto exit; - - /* main interpreter loop */ - while ( 1 ) - { - if ( cf2_buf_isEnd( charstring ) ) - { - /* If we've reached the end of the charstring, simulate a */ - /* cf2_cmdRETURN or cf2_cmdENDCHAR. */ - if ( charstringIndex ) - op1 = cf2_cmdRETURN; /* end of buffer for subroutine */ - else - op1 = cf2_cmdENDCHAR; /* end of buffer for top level charstring */ - } - else - op1 = (FT_Byte)cf2_buf_readByte( charstring ); - - /* check for errors once per loop */ - if ( *error ) - goto exit; - - instructionLimit--; - if ( instructionLimit == 0 ) - { - lastError = FT_THROW( Invalid_Glyph_Format ); - goto exit; - } - - switch( op1 ) - { - case cf2_cmdRESERVED_0: - case cf2_cmdRESERVED_2: - case cf2_cmdRESERVED_9: - case cf2_cmdRESERVED_13: - case cf2_cmdRESERVED_15: - case cf2_cmdRESERVED_16: - case cf2_cmdRESERVED_17: - /* we may get here if we have a prior error */ - FT_TRACE4(( " unknown op (%d)\n", op1 )); - break; - - case cf2_cmdHSTEMHM: - case cf2_cmdHSTEM: - FT_TRACE4(( op1 == cf2_cmdHSTEMHM ? " hstemhm\n" : " hstem\n" )); - - /* never add hints after the mask is computed */ - if ( cf2_hintmask_isValid( &hintMask ) ) - { - FT_TRACE4(( "cf2_interpT2CharString:" - " invalid horizontal hint mask\n" )); - break; - } - - cf2_doStems( font, - opStack, - &hStemHintArray, - width, - &haveWidth, - 0 ); - - if ( font->decoder->width_only ) - goto exit; - - break; - - case cf2_cmdVSTEMHM: - case cf2_cmdVSTEM: - FT_TRACE4(( op1 == cf2_cmdVSTEMHM ? " vstemhm\n" : " vstem\n" )); - - /* never add hints after the mask is computed */ - if ( cf2_hintmask_isValid( &hintMask ) ) - { - FT_TRACE4(( "cf2_interpT2CharString:" - " invalid vertical hint mask\n" )); - break; - } - - cf2_doStems( font, - opStack, - &vStemHintArray, - width, - &haveWidth, - 0 ); - - if ( font->decoder->width_only ) - goto exit; - - break; - - case cf2_cmdVMOVETO: - FT_TRACE4(( " vmoveto\n" )); - - if ( cf2_stack_count( opStack ) > 1 && !haveWidth ) - *width = cf2_stack_getReal( opStack, 0 ) + nominalWidthX; - - /* width is defined or default after this */ - haveWidth = TRUE; - - if ( font->decoder->width_only ) - goto exit; - - curY += cf2_stack_popFixed( opStack ); - - cf2_glyphpath_moveTo( &glyphPath, curX, curY ); - - break; - - case cf2_cmdRLINETO: - { - CF2_UInt index; - CF2_UInt count = cf2_stack_count( opStack ); - - - FT_TRACE4(( " rlineto\n" )); - - for ( index = 0; index < count; index += 2 ) - { - curX += cf2_stack_getReal( opStack, index + 0 ); - curY += cf2_stack_getReal( opStack, index + 1 ); - - cf2_glyphpath_lineTo( &glyphPath, curX, curY ); - } - - cf2_stack_clear( opStack ); - } - continue; /* no need to clear stack again */ - - case cf2_cmdHLINETO: - case cf2_cmdVLINETO: - { - CF2_UInt index; - CF2_UInt count = cf2_stack_count( opStack ); - - FT_Bool isX = op1 == cf2_cmdHLINETO; - - - FT_TRACE4(( isX ? " hlineto\n" : " vlineto\n" )); - - for ( index = 0; index < count; index++ ) - { - CF2_Fixed v = cf2_stack_getReal( opStack, index ); - - - if ( isX ) - curX += v; - else - curY += v; - - isX = !isX; - - cf2_glyphpath_lineTo( &glyphPath, curX, curY ); - } - - cf2_stack_clear( opStack ); - } - continue; - - case cf2_cmdRCURVELINE: - case cf2_cmdRRCURVETO: - { - CF2_UInt count = cf2_stack_count( opStack ); - CF2_UInt index = 0; - - - FT_TRACE4(( op1 == cf2_cmdRCURVELINE ? " rcurveline\n" - : " rrcurveto\n" )); - - while ( index + 6 <= count ) - { - CF2_Fixed x1 = cf2_stack_getReal( opStack, index + 0 ) + curX; - CF2_Fixed y1 = cf2_stack_getReal( opStack, index + 1 ) + curY; - CF2_Fixed x2 = cf2_stack_getReal( opStack, index + 2 ) + x1; - CF2_Fixed y2 = cf2_stack_getReal( opStack, index + 3 ) + y1; - CF2_Fixed x3 = cf2_stack_getReal( opStack, index + 4 ) + x2; - CF2_Fixed y3 = cf2_stack_getReal( opStack, index + 5 ) + y2; - - - cf2_glyphpath_curveTo( &glyphPath, x1, y1, x2, y2, x3, y3 ); - - curX = x3; - curY = y3; - index += 6; - } - - if ( op1 == cf2_cmdRCURVELINE ) - { - curX += cf2_stack_getReal( opStack, index + 0 ); - curY += cf2_stack_getReal( opStack, index + 1 ); - - cf2_glyphpath_lineTo( &glyphPath, curX, curY ); - } - - cf2_stack_clear( opStack ); - } - continue; /* no need to clear stack again */ - - case cf2_cmdCALLGSUBR: - case cf2_cmdCALLSUBR: - { - CF2_UInt subrIndex; - - - FT_TRACE4(( op1 == cf2_cmdCALLGSUBR ? " callgsubr" - : " callsubr" )); - - if ( charstringIndex > CF2_MAX_SUBR ) - { - /* max subr plus one for charstring */ - lastError = FT_THROW( Invalid_Glyph_Format ); - goto exit; /* overflow of stack */ - } - - /* push our current CFF charstring region on subrStack */ - charstring = (CF2_Buffer) - cf2_arrstack_getPointer( - &subrStack, - (size_t)charstringIndex + 1 ); - - /* set up the new CFF region and pointer */ - subrIndex = (CF2_UInt)cf2_stack_popInt( opStack ); - - switch ( op1 ) - { - case cf2_cmdCALLGSUBR: - FT_TRACE4(( " (idx %d, entering level %d)\n", - subrIndex + (CF2_UInt)decoder->globals_bias, - charstringIndex + 1 )); - - if ( cf2_initGlobalRegionBuffer( decoder, - subrIndex, - charstring ) ) - { - lastError = FT_THROW( Invalid_Glyph_Format ); - goto exit; /* subroutine lookup or stream error */ - } - break; - - default: - /* cf2_cmdCALLSUBR */ - FT_TRACE4(( " (idx %d, entering level %d)\n", - subrIndex + (CF2_UInt)decoder->locals_bias, - charstringIndex + 1 )); - - if ( cf2_initLocalRegionBuffer( decoder, - subrIndex, - charstring ) ) - { - lastError = FT_THROW( Invalid_Glyph_Format ); - goto exit; /* subroutine lookup or stream error */ - } - } - - charstringIndex += 1; /* entry is valid now */ - } - continue; /* do not clear the stack */ - - case cf2_cmdRETURN: - FT_TRACE4(( " return (leaving level %d)\n", charstringIndex )); - - if ( charstringIndex < 1 ) - { - /* Note: cannot return from top charstring */ - lastError = FT_THROW( Invalid_Glyph_Format ); - goto exit; /* underflow of stack */ - } - - /* restore position in previous charstring */ - charstring = (CF2_Buffer) - cf2_arrstack_getPointer( - &subrStack, - (CF2_UInt)--charstringIndex ); - continue; /* do not clear the stack */ - - case cf2_cmdESC: - { - FT_Byte op2 = (FT_Byte)cf2_buf_readByte( charstring ); - - - switch ( op2 ) - { - case cf2_escDOTSECTION: - /* something about `flip type of locking' -- ignore it */ - FT_TRACE4(( " dotsection\n" )); - - break; - - /* TODO: should these operators be supported? */ - case cf2_escAND: /* in spec */ - FT_TRACE4(( " and\n" )); - - CF2_FIXME; - break; - - case cf2_escOR: /* in spec */ - FT_TRACE4(( " or\n" )); - - CF2_FIXME; - break; - - case cf2_escNOT: /* in spec */ - FT_TRACE4(( " not\n" )); - - CF2_FIXME; - break; - - case cf2_escABS: /* in spec */ - FT_TRACE4(( " abs\n" )); - - CF2_FIXME; - break; - - case cf2_escADD: /* in spec */ - FT_TRACE4(( " add\n" )); - - CF2_FIXME; - break; - - case cf2_escSUB: /* in spec */ - FT_TRACE4(( " sub\n" )); - - CF2_FIXME; - break; - - case cf2_escDIV: /* in spec */ - FT_TRACE4(( " div\n" )); - - CF2_FIXME; - break; - - case cf2_escNEG: /* in spec */ - FT_TRACE4(( " neg\n" )); - - CF2_FIXME; - break; - - case cf2_escEQ: /* in spec */ - FT_TRACE4(( " eq\n" )); - - CF2_FIXME; - break; - - case cf2_escDROP: /* in spec */ - FT_TRACE4(( " drop\n" )); - - CF2_FIXME; - break; - - case cf2_escPUT: /* in spec */ - FT_TRACE4(( " put\n" )); - - CF2_FIXME; - break; - - case cf2_escGET: /* in spec */ - FT_TRACE4(( " get\n" )); - - CF2_FIXME; - break; - - case cf2_escIFELSE: /* in spec */ - FT_TRACE4(( " ifelse\n" )); - - CF2_FIXME; - break; - - case cf2_escRANDOM: /* in spec */ - FT_TRACE4(( " random\n" )); - - CF2_FIXME; - break; - - case cf2_escMUL: /* in spec */ - FT_TRACE4(( " mul\n" )); - - CF2_FIXME; - break; - - case cf2_escSQRT: /* in spec */ - FT_TRACE4(( " sqrt\n" )); - - CF2_FIXME; - break; - - case cf2_escDUP: /* in spec */ - FT_TRACE4(( " dup\n" )); - - CF2_FIXME; - break; - - case cf2_escEXCH: /* in spec */ - FT_TRACE4(( " exch\n" )); - - CF2_FIXME; - break; - - case cf2_escINDEX: /* in spec */ - FT_TRACE4(( " index\n" )); - - CF2_FIXME; - break; - - case cf2_escROLL: /* in spec */ - FT_TRACE4(( " roll\n" )); - - CF2_FIXME; - break; - - case cf2_escHFLEX: - { - static const FT_Bool readFromStack[12] = - { - TRUE /* dx1 */, FALSE /* dy1 */, - TRUE /* dx2 */, TRUE /* dy2 */, - TRUE /* dx3 */, FALSE /* dy3 */, - TRUE /* dx4 */, FALSE /* dy4 */, - TRUE /* dx5 */, FALSE /* dy5 */, - TRUE /* dx6 */, FALSE /* dy6 */ - }; - - - FT_TRACE4(( " hflex\n" )); - - cf2_doFlex( opStack, - &curX, - &curY, - &glyphPath, - readFromStack, - FALSE /* doConditionalLastRead */ ); - } - continue; - - case cf2_escFLEX: - { - static const FT_Bool readFromStack[12] = - { - TRUE /* dx1 */, TRUE /* dy1 */, - TRUE /* dx2 */, TRUE /* dy2 */, - TRUE /* dx3 */, TRUE /* dy3 */, - TRUE /* dx4 */, TRUE /* dy4 */, - TRUE /* dx5 */, TRUE /* dy5 */, - TRUE /* dx6 */, TRUE /* dy6 */ - }; - - - FT_TRACE4(( " flex\n" )); - - cf2_doFlex( opStack, - &curX, - &curY, - &glyphPath, - readFromStack, - FALSE /* doConditionalLastRead */ ); - } - break; /* TODO: why is this not a continue? */ - - case cf2_escHFLEX1: - { - static const FT_Bool readFromStack[12] = - { - TRUE /* dx1 */, TRUE /* dy1 */, - TRUE /* dx2 */, TRUE /* dy2 */, - TRUE /* dx3 */, FALSE /* dy3 */, - TRUE /* dx4 */, FALSE /* dy4 */, - TRUE /* dx5 */, TRUE /* dy5 */, - TRUE /* dx6 */, FALSE /* dy6 */ - }; - - - FT_TRACE4(( " hflex1\n" )); - - cf2_doFlex( opStack, - &curX, - &curY, - &glyphPath, - readFromStack, - FALSE /* doConditionalLastRead */ ); - } - continue; - - case cf2_escFLEX1: - { - static const FT_Bool readFromStack[12] = - { - TRUE /* dx1 */, TRUE /* dy1 */, - TRUE /* dx2 */, TRUE /* dy2 */, - TRUE /* dx3 */, TRUE /* dy3 */, - TRUE /* dx4 */, TRUE /* dy4 */, - TRUE /* dx5 */, TRUE /* dy5 */, - FALSE /* dx6 */, FALSE /* dy6 */ - }; - - - FT_TRACE4(( " flex1\n" )); - - cf2_doFlex( opStack, - &curX, - &curY, - &glyphPath, - readFromStack, - TRUE /* doConditionalLastRead */ ); - } - continue; - - case cf2_escRESERVED_1: - case cf2_escRESERVED_2: - case cf2_escRESERVED_6: - case cf2_escRESERVED_7: - case cf2_escRESERVED_8: - case cf2_escRESERVED_13: - case cf2_escRESERVED_16: - case cf2_escRESERVED_17: - case cf2_escRESERVED_19: - case cf2_escRESERVED_25: - case cf2_escRESERVED_31: - case cf2_escRESERVED_32: - case cf2_escRESERVED_33: - default: - FT_TRACE4(( " unknown op (12, %d)\n", op2 )); - - }; /* end of switch statement checking `op2' */ - - } /* case cf2_cmdESC */ - break; - - case cf2_cmdENDCHAR: - FT_TRACE4(( " endchar\n" )); - - if ( cf2_stack_count( opStack ) == 1 || - cf2_stack_count( opStack ) == 5 ) - { - if ( !haveWidth ) - *width = cf2_stack_getReal( opStack, 0 ) + nominalWidthX; - } - - /* width is defined or default after this */ - haveWidth = TRUE; - - if ( font->decoder->width_only ) - goto exit; - - /* close path if still open */ - cf2_glyphpath_closeOpenPath( &glyphPath ); - - if ( cf2_stack_count( opStack ) > 1 ) - { - /* must be either 4 or 5 -- */ - /* this is a (deprecated) implied `seac' operator */ - - CF2_Int achar; - CF2_Int bchar; - CF2_BufferRec component; - CF2_Fixed dummyWidth; /* ignore component width */ - FT_Error error2; - - - if ( doingSeac ) - { - lastError = FT_THROW( Invalid_Glyph_Format ); - goto exit; /* nested seac */ - } - - achar = cf2_stack_popInt( opStack ); - bchar = cf2_stack_popInt( opStack ); - - curY = cf2_stack_popFixed( opStack ); - curX = cf2_stack_popFixed( opStack ); - - error2 = cf2_getSeacComponent( decoder, achar, &component ); - if ( error2 ) - { - lastError = error2; /* pass FreeType error through */ - goto exit; - } - cf2_interpT2CharString( font, - &component, - callbacks, - translation, - TRUE, - curX, - curY, - &dummyWidth ); - cf2_freeSeacComponent( decoder, &component ); - - error2 = cf2_getSeacComponent( decoder, bchar, &component ); - if ( error2 ) - { - lastError = error2; /* pass FreeType error through */ - goto exit; - } - cf2_interpT2CharString( font, - &component, - callbacks, - translation, - TRUE, - 0, - 0, - &dummyWidth ); - cf2_freeSeacComponent( decoder, &component ); - } - goto exit; - - case cf2_cmdCNTRMASK: - case cf2_cmdHINTMASK: - /* the final \n in the tracing message gets added in */ - /* `cf2_hintmask_read' (which also traces the mask bytes) */ - FT_TRACE4(( op1 == cf2_cmdCNTRMASK ? " cntrmask" : " hintmask" )); - - /* never add hints after the mask is computed */ - if ( cf2_stack_count( opStack ) > 1 && - cf2_hintmask_isValid( &hintMask ) ) - { - FT_TRACE4(( "cf2_interpT2CharString: invalid hint mask\n" )); - break; - } - - /* if there are arguments on the stack, there this is an */ - /* implied cf2_cmdVSTEMHM */ - cf2_doStems( font, - opStack, - &vStemHintArray, - width, - &haveWidth, - 0 ); - - if ( font->decoder->width_only ) - goto exit; - - if ( op1 == cf2_cmdHINTMASK ) - { - /* consume the hint mask bytes which follow the operator */ - cf2_hintmask_read( &hintMask, - charstring, - cf2_arrstack_size( &hStemHintArray ) + - cf2_arrstack_size( &vStemHintArray ) ); - } - else - { - /* - * Consume the counter mask bytes which follow the operator: - * Build a temporary hint map, just to place and lock those - * stems participating in the counter mask. These are most - * likely the dominant hstems, and are grouped together in a - * few counter groups, not necessarily in correspondence - * with the hint groups. This reduces the chances of - * conflicts between hstems that are initially placed in - * separate hint groups and then brought together. The - * positions are copied back to `hStemHintArray', so we can - * discard `counterMask' and `counterHintMap'. - * - */ - CF2_HintMapRec counterHintMap; - CF2_HintMaskRec counterMask; - - - cf2_hintmap_init( &counterHintMap, - font, - &glyphPath.initialHintMap, - &glyphPath.hintMoves, - scaleY ); - cf2_hintmask_init( &counterMask, error ); - - cf2_hintmask_read( &counterMask, - charstring, - cf2_arrstack_size( &hStemHintArray ) + - cf2_arrstack_size( &vStemHintArray ) ); - cf2_hintmap_build( &counterHintMap, - &hStemHintArray, - &vStemHintArray, - &counterMask, - 0, - FALSE ); - } - break; - - case cf2_cmdRMOVETO: - FT_TRACE4(( " rmoveto\n" )); - - if ( cf2_stack_count( opStack ) > 2 && !haveWidth ) - *width = cf2_stack_getReal( opStack, 0 ) + nominalWidthX; - - /* width is defined or default after this */ - haveWidth = TRUE; - - if ( font->decoder->width_only ) - goto exit; - - curY += cf2_stack_popFixed( opStack ); - curX += cf2_stack_popFixed( opStack ); - - cf2_glyphpath_moveTo( &glyphPath, curX, curY ); - - break; - - case cf2_cmdHMOVETO: - FT_TRACE4(( " hmoveto\n" )); - - if ( cf2_stack_count( opStack ) > 1 && !haveWidth ) - *width = cf2_stack_getReal( opStack, 0 ) + nominalWidthX; - - /* width is defined or default after this */ - haveWidth = TRUE; - - if ( font->decoder->width_only ) - goto exit; - - curX += cf2_stack_popFixed( opStack ); - - cf2_glyphpath_moveTo( &glyphPath, curX, curY ); - - break; - - case cf2_cmdRLINECURVE: - { - CF2_UInt count = cf2_stack_count( opStack ); - CF2_UInt index = 0; - - - FT_TRACE4(( " rlinecurve\n" )); - - while ( index + 6 < count ) - { - curX += cf2_stack_getReal( opStack, index + 0 ); - curY += cf2_stack_getReal( opStack, index + 1 ); - - cf2_glyphpath_lineTo( &glyphPath, curX, curY ); - index += 2; - } - - while ( index < count ) - { - CF2_Fixed x1 = cf2_stack_getReal( opStack, index + 0 ) + curX; - CF2_Fixed y1 = cf2_stack_getReal( opStack, index + 1 ) + curY; - CF2_Fixed x2 = cf2_stack_getReal( opStack, index + 2 ) + x1; - CF2_Fixed y2 = cf2_stack_getReal( opStack, index + 3 ) + y1; - CF2_Fixed x3 = cf2_stack_getReal( opStack, index + 4 ) + x2; - CF2_Fixed y3 = cf2_stack_getReal( opStack, index + 5 ) + y2; - - - cf2_glyphpath_curveTo( &glyphPath, x1, y1, x2, y2, x3, y3 ); - - curX = x3; - curY = y3; - index += 6; - } - - cf2_stack_clear( opStack ); - } - continue; /* no need to clear stack again */ - - case cf2_cmdVVCURVETO: - { - CF2_UInt count, count1 = cf2_stack_count( opStack ); - CF2_UInt index = 0; - - - /* if `cf2_stack_count' isn't of the form 4n or 4n+1, */ - /* we enforce it by clearing the second bit */ - /* (and sorting the stack indexing to suit) */ - count = count1 & ~2U; - index += count1 - count; - - FT_TRACE4(( " vvcurveto\n" )); - - while ( index < count ) - { - CF2_Fixed x1, y1, x2, y2, x3, y3; - - - if ( ( count - index ) & 1 ) - { - x1 = cf2_stack_getReal( opStack, index ) + curX; - - ++index; - } - else - x1 = curX; - - y1 = cf2_stack_getReal( opStack, index + 0 ) + curY; - x2 = cf2_stack_getReal( opStack, index + 1 ) + x1; - y2 = cf2_stack_getReal( opStack, index + 2 ) + y1; - x3 = x2; - y3 = cf2_stack_getReal( opStack, index + 3 ) + y2; - - cf2_glyphpath_curveTo( &glyphPath, x1, y1, x2, y2, x3, y3 ); - - curX = x3; - curY = y3; - index += 4; - } - - cf2_stack_clear( opStack ); - } - continue; /* no need to clear stack again */ - - case cf2_cmdHHCURVETO: - { - CF2_UInt count, count1 = cf2_stack_count( opStack ); - CF2_UInt index = 0; - - - /* if `cf2_stack_count' isn't of the form 4n or 4n+1, */ - /* we enforce it by clearing the second bit */ - /* (and sorting the stack indexing to suit) */ - count = count1 & ~2U; - index += count1 - count; - - FT_TRACE4(( " hhcurveto\n" )); - - while ( index < count ) - { - CF2_Fixed x1, y1, x2, y2, x3, y3; - - - if ( ( count - index ) & 1 ) - { - y1 = cf2_stack_getReal( opStack, index ) + curY; - - ++index; - } - else - y1 = curY; - - x1 = cf2_stack_getReal( opStack, index + 0 ) + curX; - x2 = cf2_stack_getReal( opStack, index + 1 ) + x1; - y2 = cf2_stack_getReal( opStack, index + 2 ) + y1; - x3 = cf2_stack_getReal( opStack, index + 3 ) + x2; - y3 = y2; - - cf2_glyphpath_curveTo( &glyphPath, x1, y1, x2, y2, x3, y3 ); - - curX = x3; - curY = y3; - index += 4; - } - - cf2_stack_clear( opStack ); - } - continue; /* no need to clear stack again */ - - case cf2_cmdVHCURVETO: - case cf2_cmdHVCURVETO: - { - CF2_UInt count, count1 = cf2_stack_count( opStack ); - CF2_UInt index = 0; - - FT_Bool alternate = op1 == cf2_cmdHVCURVETO; - - - /* if `cf2_stack_count' isn't of the form 8n, 8n+1, */ - /* 8n+4, or 8n+5, we enforce it by clearing the */ - /* second bit */ - /* (and sorting the stack indexing to suit) */ - count = count1 & ~2U; - index += count1 - count; - - FT_TRACE4(( alternate ? " hvcurveto\n" : " vhcurveto\n" )); - - while ( index < count ) - { - CF2_Fixed x1, x2, x3, y1, y2, y3; - - - if ( alternate ) - { - x1 = cf2_stack_getReal( opStack, index + 0 ) + curX; - y1 = curY; - x2 = cf2_stack_getReal( opStack, index + 1 ) + x1; - y2 = cf2_stack_getReal( opStack, index + 2 ) + y1; - y3 = cf2_stack_getReal( opStack, index + 3 ) + y2; - - if ( count - index == 5 ) - { - x3 = cf2_stack_getReal( opStack, index + 4 ) + x2; - - ++index; - } - else - x3 = x2; - - alternate = FALSE; - } - else - { - x1 = curX; - y1 = cf2_stack_getReal( opStack, index + 0 ) + curY; - x2 = cf2_stack_getReal( opStack, index + 1 ) + x1; - y2 = cf2_stack_getReal( opStack, index + 2 ) + y1; - x3 = cf2_stack_getReal( opStack, index + 3 ) + x2; - - if ( count - index == 5 ) - { - y3 = cf2_stack_getReal( opStack, index + 4 ) + y2; - - ++index; - } - else - y3 = y2; - - alternate = TRUE; - } - - cf2_glyphpath_curveTo( &glyphPath, x1, y1, x2, y2, x3, y3 ); - - curX = x3; - curY = y3; - index += 4; - } - - cf2_stack_clear( opStack ); - } - continue; /* no need to clear stack again */ - - case cf2_cmdEXTENDEDNMBR: - { - CF2_Int v; - - - v = (FT_Short)( ( cf2_buf_readByte( charstring ) << 8 ) | - cf2_buf_readByte( charstring ) ); - - FT_TRACE4(( " %d", v )); - - cf2_stack_pushInt( opStack, v ); - } - continue; - - default: - /* numbers */ - { - if ( /* op1 >= 32 && */ op1 <= 246 ) - { - CF2_Int v; - - - v = op1 - 139; - - FT_TRACE4(( " %d", v )); - - /* -107 .. 107 */ - cf2_stack_pushInt( opStack, v ); - } - - else if ( /* op1 >= 247 && */ op1 <= 250 ) - { - CF2_Int v; - - - v = op1; - v -= 247; - v *= 256; - v += cf2_buf_readByte( charstring ); - v += 108; - - FT_TRACE4(( " %d", v )); - - /* 108 .. 1131 */ - cf2_stack_pushInt( opStack, v ); - } - - else if ( /* op1 >= 251 && */ op1 <= 254 ) - { - CF2_Int v; - - - v = op1; - v -= 251; - v *= 256; - v += cf2_buf_readByte( charstring ); - v = -v - 108; - - FT_TRACE4(( " %d", v )); - - /* -1131 .. -108 */ - cf2_stack_pushInt( opStack, v ); - } - - else /* op1 == 255 */ - { - CF2_Fixed v; - - - v = (CF2_Fixed) - ( ( (FT_UInt32)cf2_buf_readByte( charstring ) << 24 ) | - ( (FT_UInt32)cf2_buf_readByte( charstring ) << 16 ) | - ( (FT_UInt32)cf2_buf_readByte( charstring ) << 8 ) | - (FT_UInt32)cf2_buf_readByte( charstring ) ); - - FT_TRACE4(( " %.2f", v / 65536.0 )); - - cf2_stack_pushFixed( opStack, v ); - } - } - continue; /* don't clear stack */ - - } /* end of switch statement checking `op1' */ - - cf2_stack_clear( opStack ); - - } /* end of main interpreter loop */ - - /* we get here if the charstring ends without cf2_cmdENDCHAR */ - FT_TRACE4(( "cf2_interpT2CharString:" - " charstring ends without ENDCHAR\n" )); - - exit: - /* check whether last error seen is also the first one */ - cf2_setError( error, lastError ); - - /* free resources from objects we've used */ - cf2_glyphpath_finalize( &glyphPath ); - cf2_arrstack_finalize( &vStemHintArray ); - cf2_arrstack_finalize( &hStemHintArray ); - cf2_arrstack_finalize( &subrStack ); - cf2_stack_free( opStack ); - - FT_TRACE4(( "\n" )); - - return; - } - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2intrp.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2intrp.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2intrp.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2intrp.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,83 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2font.h */ -/* */ -/* Adobe's CFF Interpreter (specification). */ -/* */ -/* Copyright 2007-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CF2INTRP_H__ -#define __CF2INTRP_H__ - - -#include "cf2ft.h" -#include "cf2hints.h" - - -FT_BEGIN_HEADER - - - FT_LOCAL( void ) - cf2_hintmask_init( CF2_HintMask hintmask, - FT_Error* error ); - FT_LOCAL( FT_Bool ) - cf2_hintmask_isValid( const CF2_HintMask hintmask ); - FT_LOCAL( FT_Bool ) - cf2_hintmask_isNew( const CF2_HintMask hintmask ); - FT_LOCAL( void ) - cf2_hintmask_setNew( CF2_HintMask hintmask, - FT_Bool val ); - FT_LOCAL( FT_Byte* ) - cf2_hintmask_getMaskPtr( CF2_HintMask hintmask ); - FT_LOCAL( void ) - cf2_hintmask_setAll( CF2_HintMask hintmask, - size_t bitCount ); - - FT_LOCAL( void ) - cf2_interpT2CharString( CF2_Font font, - CF2_Buffer charstring, - CF2_OutlineCallbacks callbacks, - const FT_Vector* translation, - FT_Bool doingSeac, - CF2_Fixed curX, - CF2_Fixed curY, - CF2_Fixed* width ); - - -FT_END_HEADER - - -#endif /* __CF2INTRP_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2read.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2read.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2read.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2read.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,112 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2read.c */ -/* */ -/* Adobe's code for stream handling (body). */ -/* */ -/* Copyright 2007-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#include "cf2ft.h" -#include FT_INTERNAL_DEBUG_H - -#include "cf2glue.h" - -#include "cf2error.h" - - - /* Define CF2_IO_FAIL as 1 to enable random errors and random */ - /* value errors in I/O. */ -#define CF2_IO_FAIL 0 - - -#if CF2_IO_FAIL - - /* set the .00 value to a nonzero probability */ - static int - randomError2( void ) - { - /* for region buffer ReadByte (interp) function */ - return (double)rand() / RAND_MAX < .00; - } - - /* set the .00 value to a nonzero probability */ - static CF2_Int - randomValue() - { - return (double)rand() / RAND_MAX < .00 ? rand() : 0; - } - -#endif /* CF2_IO_FAIL */ - - - /* Region Buffer */ - /* */ - /* Can be constructed from a copied buffer managed by */ - /* `FCM_getDatablock'. */ - /* Reads bytes with check for end of buffer. */ - - /* reading past the end of the buffer sets error and returns zero */ - FT_LOCAL_DEF( CF2_Int ) - cf2_buf_readByte( CF2_Buffer buf ) - { - if ( buf->ptr < buf->end ) - { -#if CF2_IO_FAIL - if ( randomError2() ) - { - CF2_SET_ERROR( buf->error, Invalid_Stream_Operation ); - return 0; - } - - return *(buf->ptr)++ + randomValue(); -#else - return *(buf->ptr)++; -#endif - } - else - { - CF2_SET_ERROR( buf->error, Invalid_Stream_Operation ); - return 0; - } - } - - - /* note: end condition can occur without error */ - FT_LOCAL_DEF( FT_Bool ) - cf2_buf_isEnd( CF2_Buffer buf ) - { - return (FT_Bool)( buf->ptr >= buf->end ); - } - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2read.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2read.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2read.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2read.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,68 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2read.h */ -/* */ -/* Adobe's code for stream handling (specification). */ -/* */ -/* Copyright 2007-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CF2READ_H__ -#define __CF2READ_H__ - - -FT_BEGIN_HEADER - - - typedef struct CF2_BufferRec_ - { - FT_Error* error; - const FT_Byte* start; - const FT_Byte* end; - const FT_Byte* ptr; - - } CF2_BufferRec, *CF2_Buffer; - - - FT_LOCAL( CF2_Int ) - cf2_buf_readByte( CF2_Buffer buf ); - FT_LOCAL( FT_Bool ) - cf2_buf_isEnd( CF2_Buffer buf ); - - -FT_END_HEADER - - -#endif /* __CF2READ_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2stack.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2stack.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2stack.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2stack.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,205 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2stack.c */ -/* */ -/* Adobe's code for emulating a CFF stack (body). */ -/* */ -/* Copyright 2007-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#include "cf2ft.h" -#include FT_INTERNAL_DEBUG_H - -#include "cf2glue.h" -#include "cf2font.h" -#include "cf2stack.h" - -#include "cf2error.h" - - - /* Allocate and initialize an instance of CF2_Stack. */ - /* Note: This function returns NULL on error (does not set */ - /* `error'). */ - FT_LOCAL_DEF( CF2_Stack ) - cf2_stack_init( FT_Memory memory, - FT_Error* e ) - { - FT_Error error = FT_Err_Ok; /* for FT_QNEW */ - - CF2_Stack stack = NULL; - - - if ( !FT_QNEW( stack ) ) - { - /* initialize the structure; FT_QNEW zeroes it */ - stack->memory = memory; - stack->error = e; - stack->top = &stack->buffer[0]; /* empty stack */ - } - - return stack; - } - - - FT_LOCAL_DEF( void ) - cf2_stack_free( CF2_Stack stack ) - { - if ( stack ) - { - FT_Memory memory = stack->memory; - - - /* free the main structure */ - FT_FREE( stack ); - } - } - - - FT_LOCAL_DEF( CF2_UInt ) - cf2_stack_count( CF2_Stack stack ) - { - return (CF2_UInt)( stack->top - &stack->buffer[0] ); - } - - - FT_LOCAL_DEF( void ) - cf2_stack_pushInt( CF2_Stack stack, - CF2_Int val ) - { - if ( stack->top == &stack->buffer[CF2_OPERAND_STACK_SIZE] ) - { - CF2_SET_ERROR( stack->error, Stack_Overflow ); - return; /* stack overflow */ - } - - stack->top->u.i = val; - stack->top->type = CF2_NumberInt; - ++stack->top; - } - - - FT_LOCAL_DEF( void ) - cf2_stack_pushFixed( CF2_Stack stack, - CF2_Fixed val ) - { - if ( stack->top == &stack->buffer[CF2_OPERAND_STACK_SIZE] ) - { - CF2_SET_ERROR( stack->error, Stack_Overflow ); - return; /* stack overflow */ - } - - stack->top->u.r = val; - stack->top->type = CF2_NumberFixed; - ++stack->top; - } - - - /* this function is only allowed to pop an integer type */ - FT_LOCAL_DEF( CF2_Int ) - cf2_stack_popInt( CF2_Stack stack ) - { - if ( stack->top == &stack->buffer[0] ) - { - CF2_SET_ERROR( stack->error, Stack_Underflow ); - return 0; /* underflow */ - } - if ( stack->top[-1].type != CF2_NumberInt ) - { - CF2_SET_ERROR( stack->error, Syntax_Error ); - return 0; /* type mismatch */ - } - - --stack->top; - - return stack->top->u.i; - } - - - /* Note: type mismatch is silently cast */ - /* TODO: check this */ - FT_LOCAL_DEF( CF2_Fixed ) - cf2_stack_popFixed( CF2_Stack stack ) - { - if ( stack->top == &stack->buffer[0] ) - { - CF2_SET_ERROR( stack->error, Stack_Underflow ); - return cf2_intToFixed( 0 ); /* underflow */ - } - - --stack->top; - - switch ( stack->top->type ) - { - case CF2_NumberInt: - return cf2_intToFixed( stack->top->u.i ); - case CF2_NumberFrac: - return cf2_fracToFixed( stack->top->u.f ); - default: - return stack->top->u.r; - } - } - - - /* Note: type mismatch is silently cast */ - /* TODO: check this */ - FT_LOCAL_DEF( CF2_Fixed ) - cf2_stack_getReal( CF2_Stack stack, - CF2_UInt idx ) - { - FT_ASSERT( cf2_stack_count( stack ) <= CF2_OPERAND_STACK_SIZE ); - - if ( idx >= cf2_stack_count( stack ) ) - { - CF2_SET_ERROR( stack->error, Stack_Overflow ); - return cf2_intToFixed( 0 ); /* bounds error */ - } - - switch ( stack->buffer[idx].type ) - { - case CF2_NumberInt: - return cf2_intToFixed( stack->buffer[idx].u.i ); - case CF2_NumberFrac: - return cf2_fracToFixed( stack->buffer[idx].u.f ); - default: - return stack->buffer[idx].u.r; - } - } - - - FT_LOCAL_DEF( void ) - cf2_stack_clear( CF2_Stack stack ) - { - stack->top = &stack->buffer[0]; - } - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2stack.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2stack.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2stack.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2stack.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,106 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2stack.h */ -/* */ -/* Adobe's code for emulating a CFF stack (specification). */ -/* */ -/* Copyright 2007-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CF2STACK_H__ -#define __CF2STACK_H__ - - -FT_BEGIN_HEADER - - - /* CFF operand stack; specified maximum of 48 or 192 values */ - typedef struct CF2_StackNumber_ - { - union - { - CF2_Fixed r; /* 16.16 fixed point */ - CF2_Frac f; /* 2.30 fixed point (for font matrix) */ - CF2_Int i; - } u; - - CF2_NumberType type; - - } CF2_StackNumber; - - - typedef struct CF2_StackRec_ - { - FT_Memory memory; - FT_Error* error; - CF2_StackNumber buffer[CF2_OPERAND_STACK_SIZE]; - CF2_StackNumber* top; - - } CF2_StackRec, *CF2_Stack; - - - FT_LOCAL( CF2_Stack ) - cf2_stack_init( FT_Memory memory, - FT_Error* error ); - FT_LOCAL( void ) - cf2_stack_free( CF2_Stack stack ); - - FT_LOCAL( CF2_UInt ) - cf2_stack_count( CF2_Stack stack ); - - FT_LOCAL( void ) - cf2_stack_pushInt( CF2_Stack stack, - CF2_Int val ); - FT_LOCAL( void ) - cf2_stack_pushFixed( CF2_Stack stack, - CF2_Fixed val ); - - FT_LOCAL( CF2_Int ) - cf2_stack_popInt( CF2_Stack stack ); - FT_LOCAL( CF2_Fixed ) - cf2_stack_popFixed( CF2_Stack stack ); - - FT_LOCAL( CF2_Fixed ) - cf2_stack_getReal( CF2_Stack stack, - CF2_UInt idx ); - - FT_LOCAL( void ) - cf2_stack_clear( CF2_Stack stack ); - - -FT_END_HEADER - - -#endif /* __CF2STACK_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2types.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2types.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cf2types.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cf2types.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,78 +0,0 @@ -/***************************************************************************/ -/* */ -/* cf2types.h */ -/* */ -/* Adobe's code for defining data types (specification only). */ -/* */ -/* Copyright 2011-2013 Adobe Systems Incorporated. */ -/* */ -/* This software, and all works of authorship, whether in source or */ -/* object code form as indicated by the copyright notice(s) included */ -/* herein (collectively, the "Work") is made available, and may only be */ -/* used, modified, and distributed under the FreeType Project License, */ -/* LICENSE.TXT. Additionally, subject to the terms and conditions of the */ -/* FreeType Project License, each contributor to the Work hereby grants */ -/* to any individual or legal entity exercising permissions granted by */ -/* the FreeType Project License and this section (hereafter, "You" or */ -/* "Your") a perpetual, worldwide, non-exclusive, no-charge, */ -/* royalty-free, irrevocable (except as stated in this section) patent */ -/* license to make, have made, use, offer to sell, sell, import, and */ -/* otherwise transfer the Work, where such license applies only to those */ -/* patent claims licensable by such contributor that are necessarily */ -/* infringed by their contribution(s) alone or by combination of their */ -/* contribution(s) with the Work to which such contribution(s) was */ -/* submitted. If You institute patent litigation against any entity */ -/* (including a cross-claim or counterclaim in a lawsuit) alleging that */ -/* the Work or a contribution incorporated within the Work constitutes */ -/* direct or contributory patent infringement, then any patent licenses */ -/* granted to You under this License for that Work shall terminate as of */ -/* the date such litigation is filed. */ -/* */ -/* By using, modifying, or distributing the Work you indicate that you */ -/* have read and understood the terms and conditions of the */ -/* FreeType Project License as well as those provided in this section, */ -/* and you accept them fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CF2TYPES_H__ -#define __CF2TYPES_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - - -FT_BEGIN_HEADER - - - /* - * The data models that we expect to support are as follows: - * - * name char short int long long-long pointer example - * ----------------------------------------------------- - * ILP32 8 16 32 32 64* 32 32-bit MacOS, x86 - * LLP64 8 16 32 32 64 64 x64 - * LP64 8 16 32 64 64 64 64-bit MacOS - * - * *) type may be supported by emulation on a 32-bit architecture - * - */ - - - /* integers at least 32 bits wide */ -#define CF2_UInt FT_UFast -#define CF2_Int FT_Fast - - - /* fixed-float numbers */ - typedef FT_Int32 CF2_F16Dot16; - - -FT_END_HEADER - - -#endif /* __CF2TYPES_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cff.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cff.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cff.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cff.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType OpenType driver component (body only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,7 +17,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "cffcmap.c" #include "cffdrivr.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffcmap.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffcmap.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffcmap.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffcmap.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CFF character mapping table (cmap) support (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,8 +16,7 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> #include "cffcmap.h" #include "cffload.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffcmap.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffcmap.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffcmap.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffcmap.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CFF character mapping table (cmap) support (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,7 +19,7 @@ #ifndef CFFCMAP_H_ #define CFFCMAP_H_ -#include FT_INTERNAL_CFF_OBJECTS_TYPES_H +#include <freetype/internal/cffotypes.h> FT_BEGIN_HEADER @@ -43,7 +43,7 @@ } CFF_CMapStdRec; - FT_DECLARE_CMAP_CLASS(cff_cmap_encoding_class_rec) + FT_DECLARE_CMAP_CLASS( cff_cmap_encoding_class_rec ) /*************************************************************************/ @@ -56,7 +56,7 @@ /* unicode (synthetic) cmaps */ - FT_DECLARE_CMAP_CLASS(cff_cmap_unicode_class_rec) + FT_DECLARE_CMAP_CLASS( cff_cmap_unicode_class_rec ) FT_END_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffdrivr.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffdrivr.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffdrivr.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffdrivr.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType font driver implementation (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,18 +16,17 @@ */ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_SFNT_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_INTERNAL_POSTSCRIPT_PROPS_H -#include FT_SERVICE_CID_H -#include FT_SERVICE_POSTSCRIPT_INFO_H -#include FT_SERVICE_POSTSCRIPT_NAME_H -#include FT_SERVICE_TT_CMAP_H -#include FT_SERVICE_CFF_TABLE_LOAD_H +#include <freetype/freetype.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/sfnt.h> +#include <freetype/internal/psaux.h> +#include <freetype/internal/ftpsprop.h> +#include <freetype/internal/services/svcid.h> +#include <freetype/internal/services/svpsinfo.h> +#include <freetype/internal/services/svpostnm.h> +#include <freetype/internal/services/svttcmap.h> +#include <freetype/internal/services/svcfftl.h> #include "cffdrivr.h" #include "cffgload.h" @@ -37,16 +36,16 @@ #include "cffobjs.h" #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include FT_SERVICE_MULTIPLE_MASTERS_H -#include FT_SERVICE_METRICS_VARIATIONS_H +#include <freetype/internal/services/svmm.h> +#include <freetype/internal/services/svmetric.h> #endif #include "cfferrs.h" -#include FT_SERVICE_FONT_FORMAT_H -#include FT_SERVICE_GLYPH_DICT_H -#include FT_SERVICE_PROPERTIES_H -#include FT_DRIVER_H +#include <freetype/internal/services/svfntfmt.h> +#include <freetype/internal/services/svgldict.h> +#include <freetype/internal/services/svprop.h> +#include <freetype/ftdriver.h> /************************************************************************** @@ -738,7 +737,7 @@ { if ( dict->cid_supplement < FT_INT_MIN || dict->cid_supplement > FT_INT_MAX ) - FT_TRACE1(( "cff_get_ros: too large supplement %d is truncated\n", + FT_TRACE1(( "cff_get_ros: too large supplement %ld is truncated\n", dict->cid_supplement )); *supplement = (FT_Int)dict->cid_supplement; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffdrivr.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffdrivr.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffdrivr.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffdrivr.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * High-level OpenType driver interface (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define CFFDRIVER_H_ -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H +#include <freetype/internal/ftdrv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cfferrs.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cfferrs.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cfferrs.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cfferrs.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CFF error codes (specification only). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -25,7 +25,7 @@ #ifndef CFFERRS_H_ #define CFFERRS_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -34,7 +34,7 @@ #define FT_ERR_BASE FT_Mod_Err_CFF -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* CFFERRS_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffgload.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffgload.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffgload.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffgload.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType Glyph Loader (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,14 +16,13 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_SFNT_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_OUTLINE_H -#include FT_DRIVER_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/sfnt.h> +#include <freetype/internal/ftcalc.h> +#include <freetype/internal/psaux.h> +#include <freetype/ftoutln.h> +#include <freetype/ftdriver.h> #include "cffload.h" #include "cffgload.h" @@ -207,8 +206,8 @@ PSAux_Service psaux = (PSAux_Service)face->psaux; const CFF_Decoder_Funcs decoder_funcs = psaux->cff_decoder_funcs; - FT_Matrix font_matrix; - FT_Vector font_offset; + FT_Matrix font_matrix; + FT_Vector font_offset; force_scaling = FALSE; @@ -364,7 +363,6 @@ top_upm = (FT_Long)cff->top_font.font_dict.units_per_em; sub_upm = (FT_Long)cff->subfonts[fd_index]->font_dict.units_per_em; - font_matrix = cff->subfonts[fd_index]->font_dict.font_matrix; font_offset = cff->subfonts[fd_index]->font_dict.font_offset; @@ -399,7 +397,6 @@ PS_Driver driver = (PS_Driver)FT_FACE_DRIVER( face ); #endif - FT_Byte* charstring; FT_ULong charstring_len; @@ -665,8 +662,12 @@ metrics->horiBearingY = cbox.yMax; if ( has_vertical_info ) + { metrics->vertBearingX = metrics->horiBearingX - metrics->horiAdvance / 2; + metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, + glyph->y_scale ); + } else { if ( load_flags & FT_LOAD_VERTICAL_LAYOUT ) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffgload.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffgload.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffgload.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffgload.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType Glyph Loader (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,8 @@ #define CFFGLOAD_H_ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_CFF_OBJECTS_TYPES_H +#include <freetype/freetype.h> +#include <freetype/internal/cffotypes.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffload.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffload.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffload.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffload.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType and CFF data/program tables loader (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,17 +16,16 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H -#include FT_TYPE1_TABLES_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftstream.h> +#include <freetype/tttags.h> +#include <freetype/t1tables.h> +#include <freetype/internal/psaux.h> #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include FT_MULTIPLE_MASTERS_H -#include FT_SERVICE_MULTIPLE_MASTERS_H +#include <freetype/ftmm.h> +#include <freetype/internal/services/svmm.h> #endif #include "cffload.h" @@ -411,7 +410,7 @@ FT_Error error = FT_Err_Ok; FT_Memory memory = idx->stream->memory; - FT_Byte** t = NULL; + FT_Byte** tbl = NULL; FT_Byte* new_bytes = NULL; FT_ULong new_size; @@ -428,11 +427,11 @@ new_size = idx->data_size + idx->count; if ( idx->count > 0 && - !FT_NEW_ARRAY( t, idx->count + 1 ) && + !FT_NEW_ARRAY( tbl, idx->count + 1 ) && ( !pool || !FT_ALLOC( new_bytes, new_size ) ) ) { FT_ULong n, cur_offset; - FT_ULong extra = 0; + FT_ULong extra = 0; FT_Byte* org_bytes = idx->bytes; @@ -443,15 +442,15 @@ if ( cur_offset != 0 ) { FT_TRACE0(( "cff_index_get_pointers:" - " invalid first offset value %d set to zero\n", + " invalid first offset value %ld set to zero\n", cur_offset )); cur_offset = 0; } if ( !pool ) - t[0] = org_bytes + cur_offset; + tbl[0] = org_bytes + cur_offset; else - t[0] = new_bytes + cur_offset; + tbl[0] = new_bytes + cur_offset; for ( n = 1; n <= idx->count; n++ ) { @@ -465,23 +464,25 @@ next_offset = idx->data_size; if ( !pool ) - t[n] = org_bytes + next_offset; + tbl[n] = org_bytes + next_offset; else { - t[n] = new_bytes + next_offset + extra; + tbl[n] = new_bytes + next_offset + extra; if ( next_offset != cur_offset ) { - FT_MEM_COPY( t[n - 1], org_bytes + cur_offset, t[n] - t[n - 1] ); - t[n][0] = '\0'; - t[n] += 1; + FT_MEM_COPY( tbl[n - 1], + org_bytes + cur_offset, + tbl[n] - tbl[n - 1] ); + tbl[n][0] = '\0'; + tbl[n] += 1; extra++; } } cur_offset = next_offset; } - *table = t; + *table = tbl; if ( pool ) *pool = new_bytes; @@ -490,6 +491,11 @@ } Exit: + if ( error && new_bytes ) + FT_FREE( new_bytes ); + if ( error && tbl ) + FT_FREE( tbl ); + return error; } @@ -553,8 +559,8 @@ idx->data_offset > stream->size - off2 + 1 ) { FT_ERROR(( "cff_index_access_element:" - " offset to next entry (%d)" - " exceeds the end of stream (%d)\n", + " offset to next entry (%ld)" + " exceeds the end of stream (%ld)\n", off2, stream->size - idx->data_offset + 1 )); off2 = stream->size - idx->data_offset + 1; } @@ -978,7 +984,7 @@ if ( glyph_sid > 0xFFFFL - nleft ) { FT_ERROR(( "cff_charset_load: invalid SID range trimmed" - " nleft=%d -> %d\n", nleft, 0xFFFFL - glyph_sid )); + " nleft=%d -> %ld\n", nleft, 0xFFFFL - glyph_sid )); nleft = ( FT_UInt )( 0xFFFFL - glyph_sid ); } @@ -1945,7 +1951,7 @@ if ( priv->blue_shift > 1000 || priv->blue_shift < 0 ) { FT_TRACE2(( "cff_load_private_dict:" - " setting unlikely BlueShift value %d to default (7)\n", + " setting unlikely BlueShift value %ld to default (7)\n", priv->blue_shift )); priv->blue_shift = 7; } @@ -1953,7 +1959,7 @@ if ( priv->blue_fuzz > 1000 || priv->blue_fuzz < 0 ) { FT_TRACE2(( "cff_load_private_dict:" - " setting unlikely BlueFuzz value %d to default (1)\n", + " setting unlikely BlueFuzz value %ld to default (1)\n", priv->blue_fuzz )); priv->blue_fuzz = 1; } @@ -2057,7 +2063,7 @@ if ( !error ) { FT_TRACE4(( " top dictionary:\n" )); - error = cff_parser_run( &parser, dict, dict + dict_len ); + error = cff_parser_run( &parser, dict, FT_OFFSET( dict, dict_len ) ); } /* clean up regardless of error */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffload.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffload.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffload.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffload.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType & CFF data/program tables loader (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,10 +20,9 @@ #define CFFLOAD_H_ -#include <ft2build.h> -#include FT_INTERNAL_CFF_TYPES_H +#include <freetype/internal/cfftypes.h> #include "cffparse.h" -#include FT_INTERNAL_CFF_OBJECTS_TYPES_H /* for CFF_Face */ +#include <freetype/internal/cffotypes.h> /* for CFF_Face */ FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffobjs.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffobjs.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffobjs.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffobjs.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType objects manager (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,32 +16,31 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_STREAM_H -#include FT_ERRORS_H -#include FT_TRUETYPE_IDS_H -#include FT_TRUETYPE_TAGS_H -#include FT_INTERNAL_SFNT_H -#include FT_DRIVER_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftcalc.h> +#include <freetype/internal/ftstream.h> +#include <freetype/fterrors.h> +#include <freetype/ttnameid.h> +#include <freetype/tttags.h> +#include <freetype/internal/sfnt.h> +#include <freetype/ftdriver.h> #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include FT_MULTIPLE_MASTERS_H -#include FT_SERVICE_MULTIPLE_MASTERS_H -#include FT_SERVICE_METRICS_VARIATIONS_H +#include <freetype/ftmm.h> +#include <freetype/internal/services/svmm.h> +#include <freetype/internal/services/svmetric.h> #endif -#include FT_INTERNAL_CFF_OBJECTS_TYPES_H +#include <freetype/internal/cffotypes.h> #include "cffobjs.h" #include "cffload.h" #include "cffcmap.h" #include "cfferrs.h" -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_SERVICE_CFF_TABLE_LOAD_H +#include <freetype/internal/psaux.h> +#include <freetype/internal/services/svcfftl.h> /************************************************************************** @@ -167,46 +166,56 @@ FT_Error error = FT_Err_Ok; PSH_Globals_Funcs funcs = cff_size_get_globals_funcs( size ); + FT_Memory memory = cffsize->face->memory; + CFF_Internal internal = NULL; + CFF_Face face = (CFF_Face)cffsize->face; + CFF_Font font = (CFF_Font)face->extra.data; - if ( funcs ) - { - CFF_Face face = (CFF_Face)cffsize->face; - CFF_Font font = (CFF_Font)face->extra.data; - CFF_Internal internal = NULL; + PS_PrivateRec priv; - PS_PrivateRec priv; - FT_Memory memory = cffsize->face->memory; + FT_UInt i; - FT_UInt i; + if ( !funcs ) + goto Exit; + + if ( FT_NEW( internal ) ) + goto Exit; + cff_make_private_dict( &font->top_font, &priv ); + error = funcs->create( cffsize->face->memory, &priv, + &internal->topfont ); + if ( error ) + goto Exit; + + for ( i = font->num_subfonts; i > 0; i-- ) + { + CFF_SubFont sub = font->subfonts[i - 1]; - if ( FT_NEW( internal ) ) - goto Exit; - cff_make_private_dict( &font->top_font, &priv ); + cff_make_private_dict( sub, &priv ); error = funcs->create( cffsize->face->memory, &priv, - &internal->topfont ); + &internal->subfonts[i - 1] ); if ( error ) goto Exit; + } - for ( i = font->num_subfonts; i > 0; i-- ) - { - CFF_SubFont sub = font->subfonts[i - 1]; + cffsize->internal->module_data = internal; + size->strike_index = 0xFFFFFFFFUL; - cff_make_private_dict( sub, &priv ); - error = funcs->create( cffsize->face->memory, &priv, - &internal->subfonts[i - 1] ); - if ( error ) - goto Exit; + Exit: + if ( error ) + { + if ( internal ) + { + for ( i = font->num_subfonts; i > 0; i-- ) + FT_FREE( internal->subfonts[i - 1] ); + FT_FREE( internal->topfont ); } - cffsize->internal->module_data = internal; + FT_FREE( internal ); } - size->strike_index = 0xFFFFFFFFUL; - - Exit: return error; } @@ -349,7 +358,8 @@ FT_LOCAL_DEF( void ) cff_slot_done( FT_GlyphSlot slot ) { - slot->internal->glyph_hints = NULL; + if ( slot->internal ) + slot->internal->glyph_hints = NULL; } @@ -940,7 +950,8 @@ style_name = cff_strcpy( memory, fullp ); /* remove the style part from the family name (if present) */ - remove_style( cffface->family_name, style_name ); + if ( style_name ) + remove_style( cffface->family_name, style_name ); } break; } @@ -1018,9 +1029,9 @@ } #ifndef FT_CONFIG_OPTION_NO_GLYPH_NAMES - /* CID-keyed CFF fonts don't have glyph names -- the SFNT loader */ - /* has unset this flag because of the 3.0 `post' table. */ - if ( dict->cid_registry == 0xFFFFU ) + /* CID-keyed CFF or CFF2 fonts don't have glyph names -- the SFNT */ + /* loader has unset this flag because of the 3.0 `post' table. */ + if ( dict->cid_registry == 0xFFFFU && !cff2 ) cffface->face_flags |= FT_FACE_FLAG_GLYPH_NAMES; #endif diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffobjs.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffobjs.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffobjs.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffobjs.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType objects manager (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,7 +20,6 @@ #define CFFOBJS_H_ -#include <ft2build.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffparse.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffparse.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffparse.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffparse.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CFF token stream parser (body) * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,13 +16,12 @@ */ -#include <ft2build.h> #include "cffparse.h" -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_LIST_H +#include <freetype/internal/ftstream.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftcalc.h> +#include <freetype/internal/psaux.h> +#include <freetype/ftlist.h> #include "cfferrs.h" #include "cffload.h" @@ -714,7 +713,7 @@ ( max_scaling - min_scaling ) > 9 ) { FT_TRACE1(( "cff_parse_font_matrix:" - " strange scaling values (minimum %d, maximum %d),\n" + " strange scaling values (minimum %ld, maximum %ld),\n" " " " using default matrix\n", min_scaling, max_scaling )); goto Unlikely; @@ -811,7 +810,7 @@ bbox->yMax = FT_RoundFix( cff_parse_fixed( parser, data ) ); error = FT_Err_Ok; - FT_TRACE4(( " [%d %d %d %d]\n", + FT_TRACE4(( " [%ld %ld %ld %ld]\n", bbox->xMin / 65536, bbox->yMin / 65536, bbox->xMax / 65536, @@ -934,11 +933,11 @@ FT_TRACE1(( "cff_parse_cid_ros: real supplement is rounded\n" )); dict->cid_supplement = cff_parse_num( parser, data ); if ( dict->cid_supplement < 0 ) - FT_TRACE1(( "cff_parse_cid_ros: negative supplement %d is found\n", + FT_TRACE1(( "cff_parse_cid_ros: negative supplement %ld is found\n", dict->cid_supplement )); error = FT_Err_Ok; - FT_TRACE4(( " %d %d %d\n", + FT_TRACE4(( " %d %d %ld\n", dict->cid_registry, dict->cid_ordering, dict->cid_supplement )); @@ -1264,11 +1263,11 @@ FT_Byte* charstring_base; FT_ULong charstring_len; - FT_Fixed* stack; - FT_ListNode node; - CFF_T2_String t2; - size_t t2_size; - FT_Byte* q; + FT_Fixed* stack; + FT_ListNode node; + CFF_T2_String t2; + FT_Fixed t2_size; + FT_Byte* q; charstring_base = ++p; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffparse.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffparse.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffparse.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffparse.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CFF token stream parser (specification) * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,8 @@ #define CFFPARSE_H_ -#include <ft2build.h> -#include FT_INTERNAL_CFF_TYPES_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/internal/cfftypes.h> +#include <freetype/internal/ftobjs.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffpic.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffpic.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffpic.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffpic.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,138 +0,0 @@ -/***************************************************************************/ -/* */ -/* cffpic.c */ -/* */ -/* The FreeType position independent code services for cff module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_OBJECTS_H -#include "cffcmap.h" -#include "cffpic.h" -#include "cfferrs.h" - - -#ifdef FT_CONFIG_OPTION_PIC - - /* forward declaration of PIC init functions from cffdrivr.c */ - FT_Error - FT_Create_Class_cff_services( FT_Library library, - FT_ServiceDescRec** output_class ); - void - FT_Destroy_Class_cff_services( FT_Library library, - FT_ServiceDescRec* clazz ); - void - FT_Init_Class_cff_service_ps_info( FT_Library library, - FT_Service_PsInfoRec* clazz ); - void - FT_Init_Class_cff_service_glyph_dict( FT_Library library, - FT_Service_GlyphDictRec* clazz ); - void - FT_Init_Class_cff_service_ps_name( FT_Library library, - FT_Service_PsFontNameRec* clazz ); - void - FT_Init_Class_cff_service_get_cmap_info( FT_Library library, - FT_Service_TTCMapsRec* clazz ); - void - FT_Init_Class_cff_service_cid_info( FT_Library library, - FT_Service_CIDRec* clazz ); - - /* forward declaration of PIC init functions from cffparse.c */ - FT_Error - FT_Create_Class_cff_field_handlers( FT_Library library, - CFF_Field_Handler** output_class ); - void - FT_Destroy_Class_cff_field_handlers( FT_Library library, - CFF_Field_Handler* clazz ); - - - void - cff_driver_class_pic_free( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Memory memory = library->memory; - - - if ( pic_container->cff ) - { - CffModulePIC* container = (CffModulePIC*)pic_container->cff; - - - if ( container->cff_services ) - FT_Destroy_Class_cff_services( library, - container->cff_services ); - container->cff_services = NULL; - if ( container->cff_field_handlers ) - FT_Destroy_Class_cff_field_handlers( - library, container->cff_field_handlers ); - container->cff_field_handlers = NULL; - FT_FREE( container ); - pic_container->cff = NULL; - } - } - - - FT_Error - cff_driver_class_pic_init( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Error error = FT_Err_Ok; - CffModulePIC* container = NULL; - FT_Memory memory = library->memory; - - - /* allocate pointer, clear and set global container pointer */ - if ( FT_ALLOC ( container, sizeof ( *container ) ) ) - return error; - FT_MEM_SET( container, 0, sizeof ( *container ) ); - pic_container->cff = container; - - /* initialize pointer table - */ - /* this is how the module usually expects this data */ - error = FT_Create_Class_cff_services( library, - &container->cff_services ); - if ( error ) - goto Exit; - - error = FT_Create_Class_cff_field_handlers( - library, &container->cff_field_handlers ); - if ( error ) - goto Exit; - - FT_Init_Class_cff_service_ps_info( - library, &container->cff_service_ps_info ); - FT_Init_Class_cff_service_glyph_dict( - library, &container->cff_service_glyph_dict ); - FT_Init_Class_cff_service_ps_name( - library, &container->cff_service_ps_name ); - FT_Init_Class_cff_service_get_cmap_info( - library, &container->cff_service_get_cmap_info ); - FT_Init_Class_cff_service_cid_info( - library, &container->cff_service_cid_info ); - FT_Init_Class_cff_cmap_encoding_class_rec( - library, &container->cff_cmap_encoding_class_rec ); - FT_Init_Class_cff_cmap_unicode_class_rec( - library, &container->cff_cmap_unicode_class_rec ); - - Exit: - if ( error ) - cff_driver_class_pic_free( library ); - return error; - } - -#endif /* FT_CONFIG_OPTION_PIC */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffpic.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffpic.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cffpic.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cffpic.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,121 +0,0 @@ -/***************************************************************************/ -/* */ -/* cffpic.h */ -/* */ -/* The FreeType position independent code services for cff module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef CFFPIC_H_ -#define CFFPIC_H_ - - -#include FT_INTERNAL_PIC_H - -#ifndef FT_CONFIG_OPTION_PIC - -#define CFF_SERVICE_PS_INFO_GET cff_service_ps_info -#define CFF_SERVICE_GLYPH_DICT_GET cff_service_glyph_dict -#define CFF_SERVICE_PS_NAME_GET cff_service_ps_name -#define CFF_SERVICE_GET_CMAP_INFO_GET cff_service_get_cmap_info -#define CFF_SERVICE_CID_INFO_GET cff_service_cid_info -#define CFF_SERVICE_PROPERTIES_GET cff_service_properties -#define CFF_SERVICES_GET cff_services -#define CFF_SERVICE_MULTI_MASTERS_GET cff_service_multi_masters -#define CFF_SERVICE_METRICS_VAR_GET cff_service_metrics_variations -#define CFF_SERVICE_CFF_LOAD_GET cff_service_cff_load -#define CFF_CMAP_ENCODING_CLASS_REC_GET cff_cmap_encoding_class_rec -#define CFF_CMAP_UNICODE_CLASS_REC_GET cff_cmap_unicode_class_rec -#define CFF_FIELD_HANDLERS_GET cff_field_handlers - -#else /* FT_CONFIG_OPTION_PIC */ - -#include FT_SERVICE_GLYPH_DICT_H -#include "cffparse.h" -#include FT_SERVICE_POSTSCRIPT_INFO_H -#include FT_SERVICE_POSTSCRIPT_NAME_H -#include FT_SERVICE_TT_CMAP_H -#include FT_SERVICE_CID_H -#include FT_SERVICE_PROPERTIES_H -#include FT_SERVICE_MULTIPLE_MASTERS_H -#include FT_SERVICE_METRICS_VARIATIONS_H - - -FT_BEGIN_HEADER - - typedef struct CffModulePIC_ - { - FT_ServiceDescRec* cff_services; - CFF_Field_Handler* cff_field_handlers; - FT_Service_PsInfoRec cff_service_ps_info; - FT_Service_GlyphDictRec cff_service_glyph_dict; - FT_Service_PsFontNameRec cff_service_ps_name; - FT_Service_TTCMapsRec cff_service_get_cmap_info; - FT_Service_CIDRec cff_service_cid_info; - FT_Service_PropertiesRec cff_service_properties; - FT_Service_MultiMastersRec cff_service_multi_masters; - FT_Service_MetricsVariationsRec cff_service_metrics_variations; - FT_Service_CFFLoadRec cff_service_cff_load; - FT_CMap_ClassRec cff_cmap_encoding_class_rec; - FT_CMap_ClassRec cff_cmap_unicode_class_rec; - - } CffModulePIC; - - -#define GET_PIC( lib ) \ - ( (CffModulePIC*)( (lib)->pic_container.cff ) ) - -#define CFF_SERVICE_PS_INFO_GET \ - ( GET_PIC( library )->cff_service_ps_info ) -#define CFF_SERVICE_GLYPH_DICT_GET \ - ( GET_PIC( library )->cff_service_glyph_dict ) -#define CFF_SERVICE_PS_NAME_GET \ - ( GET_PIC( library )->cff_service_ps_name ) -#define CFF_SERVICE_GET_CMAP_INFO_GET \ - ( GET_PIC( library )->cff_service_get_cmap_info ) -#define CFF_SERVICE_CID_INFO_GET \ - ( GET_PIC( library )->cff_service_cid_info ) -#define CFF_SERVICE_PROPERTIES_GET \ - ( GET_PIC( library )->cff_service_properties ) -#define CFF_SERVICES_GET \ - ( GET_PIC( library )->cff_services ) -#define CFF_SERVICE_MULTI_MASTERS_GET \ - ( GET_PIC( library )->cff_service_multi_masters ) -#define CFF_SERVICE_METRICS_VAR_GET \ - ( GET_PIC( library )->cff_service_metrics_variations ) -#define CFF_SERVICE_CFF_LOAD_GET \ - ( GET_PIC( library )->cff_service_cff_load ) -#define CFF_CMAP_ENCODING_CLASS_REC_GET \ - ( GET_PIC( library )->cff_cmap_encoding_class_rec ) -#define CFF_CMAP_UNICODE_CLASS_REC_GET \ - ( GET_PIC( library )->cff_cmap_unicode_class_rec ) -#define CFF_FIELD_HANDLERS_GET \ - ( GET_PIC( library )->cff_field_handlers ) - - /* see cffpic.c for the implementation */ - void - cff_driver_class_pic_free( FT_Library library ); - - FT_Error - cff_driver_class_pic_init( FT_Library library ); - -FT_END_HEADER - -#endif /* FT_CONFIG_OPTION_PIC */ - - /* */ - -#endif /* CFFPIC_H_ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cfftoken.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cfftoken.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cfftoken.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cfftoken.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CFF token definitions (specification only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cfftypes.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cfftypes.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/cfftypes.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/cfftypes.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,284 +0,0 @@ -/***************************************************************************/ -/* */ -/* cfftypes.h */ -/* */ -/* Basic OpenType/CFF type definitions and interface (specification */ -/* only). */ -/* */ -/* Copyright 1996-2015 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CFFTYPES_H__ -#define __CFFTYPES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_TYPE1_TABLES_H -#include FT_INTERNAL_SERVICE_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CFF_IndexRec */ - /* */ - /* <Description> */ - /* A structure used to model a CFF Index table. */ - /* */ - /* <Fields> */ - /* stream :: The source input stream. */ - /* */ - /* start :: The position of the first index byte in the */ - /* input stream. */ - /* */ - /* count :: The number of elements in the index. */ - /* */ - /* off_size :: The size in bytes of object offsets in index. */ - /* */ - /* data_offset :: The position of first data byte in the index's */ - /* bytes. */ - /* */ - /* data_size :: The size of the data table in this index. */ - /* */ - /* offsets :: A table of element offsets in the index. Must be */ - /* loaded explicitly. */ - /* */ - /* bytes :: If the index is loaded in memory, its bytes. */ - /* */ - typedef struct CFF_IndexRec_ - { - FT_Stream stream; - FT_ULong start; - FT_UInt count; - FT_Byte off_size; - FT_ULong data_offset; - FT_ULong data_size; - - FT_ULong* offsets; - FT_Byte* bytes; - - } CFF_IndexRec, *CFF_Index; - - - typedef struct CFF_EncodingRec_ - { - FT_UInt format; - FT_ULong offset; - - FT_UInt count; - FT_UShort sids [256]; /* avoid dynamic allocations */ - FT_UShort codes[256]; - - } CFF_EncodingRec, *CFF_Encoding; - - - typedef struct CFF_CharsetRec_ - { - - FT_UInt format; - FT_ULong offset; - - FT_UShort* sids; - FT_UShort* cids; /* the inverse mapping of `sids'; only needed */ - /* for CID-keyed fonts */ - FT_UInt max_cid; - FT_UInt num_glyphs; - - } CFF_CharsetRec, *CFF_Charset; - - - typedef struct CFF_FontRecDictRec_ - { - FT_UInt version; - FT_UInt notice; - FT_UInt copyright; - FT_UInt full_name; - FT_UInt family_name; - FT_UInt weight; - FT_Bool is_fixed_pitch; - FT_Fixed italic_angle; - FT_Fixed underline_position; - FT_Fixed underline_thickness; - FT_Int paint_type; - FT_Int charstring_type; - FT_Matrix font_matrix; - FT_Bool has_font_matrix; - FT_ULong units_per_em; /* temporarily used as scaling value also */ - FT_Vector font_offset; - FT_ULong unique_id; - FT_BBox font_bbox; - FT_Pos stroke_width; - FT_ULong charset_offset; - FT_ULong encoding_offset; - FT_ULong charstrings_offset; - FT_ULong private_offset; - FT_ULong private_size; - FT_Long synthetic_base; - FT_UInt embedded_postscript; - - /* these should only be used for the top-level font dictionary */ - FT_UInt cid_registry; - FT_UInt cid_ordering; - FT_Long cid_supplement; - - FT_Long cid_font_version; - FT_Long cid_font_revision; - FT_Long cid_font_type; - FT_ULong cid_count; - FT_ULong cid_uid_base; - FT_ULong cid_fd_array_offset; - FT_ULong cid_fd_select_offset; - FT_UInt cid_font_name; - - } CFF_FontRecDictRec, *CFF_FontRecDict; - - - typedef struct CFF_PrivateRec_ - { - FT_Byte num_blue_values; - FT_Byte num_other_blues; - FT_Byte num_family_blues; - FT_Byte num_family_other_blues; - - FT_Pos blue_values[14]; - FT_Pos other_blues[10]; - FT_Pos family_blues[14]; - FT_Pos family_other_blues[10]; - - FT_Fixed blue_scale; - FT_Pos blue_shift; - FT_Pos blue_fuzz; - FT_Pos standard_width; - FT_Pos standard_height; - - FT_Byte num_snap_widths; - FT_Byte num_snap_heights; - FT_Pos snap_widths[13]; - FT_Pos snap_heights[13]; - FT_Bool force_bold; - FT_Fixed force_bold_threshold; - FT_Int lenIV; - FT_Int language_group; - FT_Fixed expansion_factor; - FT_Long initial_random_seed; - FT_ULong local_subrs_offset; - FT_Pos default_width; - FT_Pos nominal_width; - - } CFF_PrivateRec, *CFF_Private; - - - typedef struct CFF_FDSelectRec_ - { - FT_Byte format; - FT_UInt range_count; - - /* that's the table, taken from the file `as is' */ - FT_Byte* data; - FT_UInt data_size; - - /* small cache for format 3 only */ - FT_UInt cache_first; - FT_UInt cache_count; - FT_Byte cache_fd; - - } CFF_FDSelectRec, *CFF_FDSelect; - - - /* A SubFont packs a font dict and a private dict together. They are */ - /* needed to support CID-keyed CFF fonts. */ - typedef struct CFF_SubFontRec_ - { - CFF_FontRecDictRec font_dict; - CFF_PrivateRec private_dict; - - CFF_IndexRec local_subrs_index; - FT_Byte** local_subrs; /* array of pointers into Local Subrs INDEX data */ - - } CFF_SubFontRec, *CFF_SubFont; - - -#define CFF_MAX_CID_FONTS 256 - - - typedef struct CFF_FontRec_ - { - FT_Stream stream; - FT_Memory memory; - FT_UInt num_faces; - FT_UInt num_glyphs; - - FT_Byte version_major; - FT_Byte version_minor; - FT_Byte header_size; - FT_Byte absolute_offsize; - - - CFF_IndexRec name_index; - CFF_IndexRec top_dict_index; - CFF_IndexRec global_subrs_index; - - CFF_EncodingRec encoding; - CFF_CharsetRec charset; - - CFF_IndexRec charstrings_index; - CFF_IndexRec font_dict_index; - CFF_IndexRec private_index; - CFF_IndexRec local_subrs_index; - - FT_String* font_name; - - /* array of pointers into Global Subrs INDEX data */ - FT_Byte** global_subrs; - - /* array of pointers into String INDEX data stored at string_pool */ - FT_UInt num_strings; - FT_Byte** strings; - FT_Byte* string_pool; - - CFF_SubFontRec top_font; - FT_UInt num_subfonts; - CFF_SubFont subfonts[CFF_MAX_CID_FONTS]; - - CFF_FDSelectRec fd_select; - - /* interface to PostScript hinter */ - PSHinter_Service pshinter; - - /* interface to Postscript Names service */ - FT_Service_PsCMaps psnames; - - /* since version 2.3.0 */ - PS_FontInfoRec* font_info; /* font info dictionary */ - - /* since version 2.3.6 */ - FT_String* registry; - FT_String* ordering; - - /* since version 2.4.12 */ - FT_Generic cf2_instance; - - } CFF_FontRec, *CFF_Font; - - -FT_END_HEADER - -#endif /* __CFFTYPES_H__ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cff/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cff/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,34 +0,0 @@ -# FreeType 2 src/cid Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) cid ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = cidgload - cidload - cidobjs - cidparse - cidriver - ; - } - else - { - _sources = type1cid ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/cid Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/ciderrs.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/ciderrs.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/ciderrs.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/ciderrs.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CID error codes (specification only). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -25,7 +25,7 @@ #ifndef CIDERRS_H_ #define CIDERRS_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -33,7 +33,7 @@ #define FT_ERR_PREFIX CID_Err_ #define FT_ERR_BASE FT_Mod_Err_CID -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* CIDERRS_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidgload.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidgload.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidgload.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidgload.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CID-keyed Type1 Glyph Loader (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,17 +16,16 @@ */ -#include <ft2build.h> #include "cidload.h" #include "cidgload.h" -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_OUTLINE_H -#include FT_INTERNAL_CALC_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/ftoutln.h> +#include <freetype/internal/ftcalc.h> -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_INTERNAL_CFF_TYPES_H -#include FT_DRIVER_H +#include <freetype/internal/psaux.h> +#include <freetype/internal/cfftypes.h> +#include <freetype/ftdriver.h> #include "ciderrs.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidgload.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidgload.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidgload.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidgload.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType Glyph Loader (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,7 +20,6 @@ #define CIDGLOAD_H_ -#include <ft2build.h> #include "cidobjs.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidload.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidload.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidload.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidload.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CID-keyed Type1 font loader (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,11 +17,11 @@ #include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> #include FT_CONFIG_CONFIG_H -#include FT_MULTIPLE_MASTERS_H -#include FT_INTERNAL_TYPE1_TYPES_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/ftmm.h> +#include <freetype/internal/t1types.h> +#include <freetype/internal/psaux.h> #include "cidload.h" @@ -254,7 +254,7 @@ goto Exit; } - FT_TRACE4(( " %d\n", num_dicts )); + FT_TRACE4(( " %ld\n", num_dicts )); /* * A single entry in the FDArray must (at least) contain the following @@ -275,7 +275,7 @@ if ( (FT_ULong)num_dicts > stream->size / 100 ) { FT_TRACE0(( "parse_fd_array: adjusting FDArray size" - " (from %d to %d)\n", + " (from %ld to %ld)\n", num_dicts, stream->size / 100 )); num_dicts = (FT_Long)( stream->size / 100 ); @@ -329,7 +329,7 @@ dict->expansion_factor = cid_parser_to_fixed( parser, 0 ); dict->private_dict.expansion_factor = dict->expansion_factor; - FT_TRACE4(( "%d\n", dict->expansion_factor )); + FT_TRACE4(( "%ld\n", dict->expansion_factor )); } return; @@ -715,7 +715,7 @@ if ( ft_isdigit( *p ) ) val = (FT_Byte)( *p - '0' ); else if ( *p >= 'a' && *p <= 'f' ) - val = (FT_Byte)( *p - 'a' ); + val = (FT_Byte)( *p - 'a' + 10 ); else if ( *p >= 'A' && *p <= 'F' ) val = (FT_Byte)( *p - 'A' + 10 ); else if ( *p == ' ' || @@ -804,7 +804,7 @@ face->root.stream->size - parser->data_offset ) { FT_TRACE0(( "cid_face_open: adjusting length of binary data\n" - " (from %d to %d bytes)\n", + " (from %ld to %ld bytes)\n", parser->binary_length, face->root.stream->size - parser->data_offset )); parser->binary_length = face->root.stream->size - diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidload.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidload.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidload.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidload.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CID-keyed Type1 font loader (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define CIDLOAD_H_ -#include <ft2build.h> -#include FT_INTERNAL_STREAM_H +#include <freetype/internal/ftstream.h> #include "cidparse.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidobjs.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidobjs.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidobjs.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidobjs.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CID objects manager (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,17 +16,16 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> #include "cidgload.h" #include "cidload.h" -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H -#include FT_DRIVER_H +#include <freetype/internal/services/svpscmap.h> +#include <freetype/internal/psaux.h> +#include <freetype/internal/pshints.h> +#include <freetype/ftdriver.h> #include "ciderrs.h" @@ -50,7 +49,8 @@ FT_LOCAL_DEF( void ) cid_slot_done( FT_GlyphSlot slot ) { - slot->internal->glyph_hints = NULL; + if ( slot->internal ) + slot->internal->glyph_hints = NULL; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidobjs.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidobjs.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidobjs.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidobjs.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CID objects manager (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,9 +21,9 @@ #include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H +#include <freetype/internal/ftobjs.h> #include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_TYPE1_TYPES_H +#include <freetype/internal/t1types.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidparse.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidparse.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidparse.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidparse.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CID-keyed Type1 parser (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,10 +16,9 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_STREAM_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftstream.h> #include "cidparse.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidparse.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidparse.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidparse.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidparse.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CID-keyed Type1 parser (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,10 +20,9 @@ #define CIDPARSE_H_ -#include <ft2build.h> -#include FT_INTERNAL_TYPE1_TYPES_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/internal/t1types.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/psaux.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidriver.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidriver.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidriver.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidriver.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CID driver interface (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,22 +16,21 @@ */ -#include <ft2build.h> #include "cidriver.h" #include "cidgload.h" -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_POSTSCRIPT_PROPS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftpsprop.h> #include "ciderrs.h" -#include FT_SERVICE_POSTSCRIPT_NAME_H -#include FT_SERVICE_FONT_FORMAT_H -#include FT_SERVICE_POSTSCRIPT_INFO_H -#include FT_SERVICE_CID_H -#include FT_SERVICE_PROPERTIES_H -#include FT_DRIVER_H +#include <freetype/internal/services/svpostnm.h> +#include <freetype/internal/services/svfntfmt.h> +#include <freetype/internal/services/svpsinfo.h> +#include <freetype/internal/services/svcid.h> +#include <freetype/internal/services/svprop.h> +#include <freetype/ftdriver.h> -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/internal/psaux.h> /************************************************************************** diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidriver.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidriver.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidriver.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidriver.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * High-level CID driver interface (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define CIDRIVER_H_ -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H +#include <freetype/internal/ftdrv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidtoken.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidtoken.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/cidtoken.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/cidtoken.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * CID token definitions (specification only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/type1cid.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/type1cid.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/cid/type1cid.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/cid/type1cid.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType OpenType driver component (body only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,7 +17,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "cidgload.c" #include "cidload.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,52 +0,0 @@ -# FreeType 2 src/gxvalid Jamfile -# -# Copyright (C) 2005-2019 by -# suzuki toshiya, Masatake YAMATO and Red Hat K.K. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) gxvalid ; - - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = gxvbsln - gxvcommn - gxvfeat - gxvjust - gxvkern - gxvlcar - gxvmod - gxvmort - gxvmort0 - gxvmort1 - gxvmort2 - gxvmort4 - gxvmort5 - gxvmorx - gxvmorx0 - gxvmorx1 - gxvmorx2 - gxvmorx4 - gxvmorx5 - gxvopbd - gxvprop - gxvtrak - ; - } - else - { - _sources = gxvalid ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/gxvalid Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/README qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/README --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/README 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/README 2022-11-11 15:29:17.000000000 +0800 @@ -518,7 +518,7 @@ ------------------------------------------------------------------------ -Copyright (C) 2004-2019 by +Copyright (C) 2004-2020 by suzuki toshiya, Masatake YAMATO, Red hat K.K., David Turner, Robert Wilhelm, and Werner Lemberg. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvalid.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvalid.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvalid.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvalid.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType validator for TrueTypeGX/AAT tables (body only). * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -18,7 +18,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "gxvbsln.c" #include "gxvcommn.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvalid.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvalid.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvalid.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvalid.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT table validation (specification only). * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -28,13 +28,12 @@ #ifndef GXVALID_H_ #define GXVALID_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> -#include "gxverror.h" /* must come before FT_INTERNAL_VALIDATE_H */ +#include "gxverror.h" /* must come before `ftvalid.h' */ -#include FT_INTERNAL_VALIDATE_H -#include FT_INTERNAL_STREAM_H +#include <freetype/internal/ftvalid.h> +#include <freetype/internal/ftstream.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvbsln.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvbsln.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvbsln.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvbsln.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT bsln table validation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvcommn.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvcommn.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvcommn.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvcommn.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT common tables validation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvcommn.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvcommn.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvcommn.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvcommn.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT common tables validation (specification). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -43,10 +43,9 @@ #define GXVCOMMN_H_ -#include <ft2build.h> #include "gxvalid.h" -#include FT_INTERNAL_DEBUG_H -#include FT_SFNT_NAMES_H +#include <freetype/internal/ftdebug.h> +#include <freetype/ftsnames.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxverror.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxverror.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxverror.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxverror.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT validation module error codes (specification only). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -35,7 +35,7 @@ #ifndef GXVERROR_H_ #define GXVERROR_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -43,7 +43,7 @@ #define FT_ERR_PREFIX GXV_Err_ #define FT_ERR_BASE FT_Mod_Err_GXvalid -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* GXVERROR_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvfeat.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvfeat.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvfeat.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvfeat.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT feat table validation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvfeat.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvfeat.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvfeat.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvfeat.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT feat table validation (specification). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvfgen.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvfgen.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvfgen.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvfgen.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Generate feature registry data for gxv `feat' validator. * This program is derived from gxfeatreg.c in gxlayout. * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * Masatake YAMATO and Redhat K.K. * * This file may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvjust.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvjust.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvjust.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvjust.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT just table validation (body). * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -28,7 +28,7 @@ #include "gxvalid.h" #include "gxvcommn.h" -#include FT_SFNT_NAMES_H +#include <freetype/ftsnames.h> /************************************************************************** diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvkern.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvkern.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvkern.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvkern.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT kern table validation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -28,8 +28,8 @@ #include "gxvalid.h" #include "gxvcommn.h" -#include FT_SFNT_NAMES_H -#include FT_SERVICE_GX_VALIDATE_H +#include <freetype/ftsnames.h> +#include <freetype/internal/services/svgxval.h> /************************************************************************** diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvlcar.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvlcar.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvlcar.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvlcar.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT lcar table validation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmod.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmod.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmod.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmod.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType's TrueTypeGX/AAT validation module implementation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -25,12 +25,11 @@ */ -#include <ft2build.h> -#include FT_TRUETYPE_TABLES_H -#include FT_TRUETYPE_TAGS_H -#include FT_GX_VALIDATE_H -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_GX_VALIDATE_H +#include <freetype/tttables.h> +#include <freetype/tttags.h> +#include <freetype/ftgxval.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/services/svgxval.h> #include "gxvmod.h" #include "gxvalid.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmod.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmod.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmod.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmod.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * FreeType's TrueTypeGX/AAT validation module implementation * (specification). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -29,8 +29,7 @@ #ifndef GXVMOD_H_ #define GXVMOD_H_ -#include <ft2build.h> -#include FT_MODULE_H +#include <freetype/ftmodapi.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT mort table validation (body). * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT common definition for mort table (specification). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -31,7 +31,10 @@ #include "gxvalid.h" #include "gxvcommn.h" -#include FT_SFNT_NAMES_H +#include <freetype/ftsnames.h> + + +FT_BEGIN_HEADER typedef struct GXV_mort_featureRec_ @@ -88,6 +91,8 @@ GXV_Validator gxvalid ); +FT_END_HEADER + #endif /* GXVMORT_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort0.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort0.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort0.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort0.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * TrueTypeGX/AAT mort table validation * body for type0 (Indic Script Rearrangement) subtable. * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort1.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort1.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort1.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort1.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * TrueTypeGX/AAT mort table validation * body for type1 (Contextual Substitution) subtable. * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort2.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort2.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort2.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort2.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * TrueTypeGX/AAT mort table validation * body for type2 (Ligature Substitution) subtable. * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort4.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort4.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort4.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort4.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * TrueTypeGX/AAT mort table validation * body for type4 (Non-Contextual Glyph Substitution) subtable. * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort5.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort5.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort5.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmort5.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * TrueTypeGX/AAT mort table validation * body for type5 (Contextual Glyph Insertion) subtable. * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT morx table validation (body). * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT common definition for morx table (specification). * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * @@ -33,7 +33,10 @@ #include "gxvcommn.h" #include "gxvmort.h" -#include FT_SFNT_NAMES_H +#include <freetype/ftsnames.h> + + +FT_BEGIN_HEADER FT_LOCAL( void ) @@ -62,6 +65,8 @@ GXV_Validator gxvalid ); +FT_END_HEADER + #endif /* GXVMORX_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx0.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx0.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx0.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx0.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * TrueTypeGX/AAT morx table validation * body for type0 (Indic Script Rearrangement) subtable. * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx1.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx1.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx1.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx1.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * TrueTypeGX/AAT morx table validation * body for type1 (Contextual Substitution) subtable. * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx2.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx2.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx2.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx2.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * TrueTypeGX/AAT morx table validation * body for type2 (Ligature Substitution) subtable. * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx4.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx4.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx4.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx4.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * TrueTypeGX/AAT morx table validation * body for "morx" type4 (Non-Contextual Glyph Substitution) subtable. * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx5.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx5.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx5.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvmorx5.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * TrueTypeGX/AAT morx table validation * body for type5 (Contextual Glyph Insertion) subtable. * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvopbd.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvopbd.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvopbd.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvopbd.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT opbd table validation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvprop.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvprop.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvprop.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvprop.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT prop table validation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvtrak.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvtrak.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/gxvtrak.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/gxvtrak.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueTypeGX/AAT trak table validation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * suzuki toshiya, Masatake YAMATO, Red Hat K.K., * David Turner, Robert Wilhelm, and Werner Lemberg. * diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -2,7 +2,7 @@ # FreeType 2 gxvalid module definition # -# Copyright (C) 2004-2019 by +# Copyright (C) 2004-2020 by # suzuki toshiya, Masatake YAMATO, Red Hat K.K., # David Turner, Robert Wilhelm, and Werner Lemberg. # diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gxvalid/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gxvalid/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 2004-2019 by +# Copyright (C) 2004-2020 by # suzuki toshiya, Masatake YAMATO, Red Hat K.K., # David Turner, Robert Wilhelm, and Werner Lemberg. # diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gzip/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gzip/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gzip/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gzip/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,16 +0,0 @@ -# FreeType 2 src/gzip Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) gzip ; - -Library $(FT2_LIB) : ftgzip.c ; - -# end of src/pcf Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gzip/ftgzip.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gzip/ftgzip.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gzip/ftgzip.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gzip/ftgzip.c 2022-11-11 15:29:17.000000000 +0800 @@ -8,7 +8,7 @@ * parse compressed PCF fonts, as found with many X11 server * distributions. * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,15 +20,14 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_DEBUG_H -#include FT_GZIP_H +#include <freetype/internal/ftmemory.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/ftgzip.h> #include FT_CONFIG_STANDARD_LIBRARY_H -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -36,7 +35,7 @@ #define FT_ERR_PREFIX Gzip_Err_ #define FT_ERR_BASE FT_Mod_Err_Gzip -#include FT_ERRORS_H +#include <freetype/fterrors.h> #ifdef FT_CONFIG_OPTION_USE_ZLIB @@ -746,7 +745,17 @@ stream.zfree = (free_func) ft_gzip_free; stream.opaque = memory; + /* This is a temporary fix and will be removed once the internal + * copy of zlib is updated to the newest version. The `|32' flag + * is only supported in the new versions of zlib to enable gzip + * encoded header. + */ +#ifdef FT_CONFIG_OPTION_SYSTEM_ZLIB err = inflateInit2( &stream, MAX_WBITS|32 ); +#else + err = inflateInit2( &stream, MAX_WBITS ); +#endif + if ( err != Z_OK ) return FT_THROW( Invalid_Argument ); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gzip/infutil.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gzip/infutil.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gzip/infutil.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gzip/infutil.h 2022-11-11 15:29:17.000000000 +0800 @@ -86,7 +86,7 @@ /* masks for lower bits (size given to avoid silly warnings with Visual C++) */ #ifndef NO_INFLATE_MASK -local uInt inflate_mask[17]; +local const uInt inflate_mask[17]; #endif /* copy as much as possible from the sliding window to the output area */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gzip/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gzip/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gzip/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gzip/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 2002-2019 by +# Copyright (C) 2002-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gzip/zconf.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gzip/zconf.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/gzip/zconf.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/gzip/zconf.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,284 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2002 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#ifndef _ZCONF_H -#define _ZCONF_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - */ -#ifdef Z_PREFIX -# define deflateInit_ z_deflateInit_ -# define deflate z_deflate -# define deflateEnd z_deflateEnd -# define inflateInit_ z_inflateInit_ -# define inflate z_inflate -# define inflateEnd z_inflateEnd -# define deflateInit2_ z_deflateInit2_ -# define deflateSetDictionary z_deflateSetDictionary -# define deflateCopy z_deflateCopy -# define deflateReset z_deflateReset -# define deflateParams z_deflateParams -# define inflateInit2_ z_inflateInit2_ -# define inflateSetDictionary z_inflateSetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateReset z_inflateReset -# define compress z_compress -# define compress2 z_compress2 -# define uncompress z_uncompress -# define adler32 z_adler32 -# define crc32 z_crc32 -# define get_crc_table z_get_crc_table - -# define Byte z_Byte -# define uInt z_uInt -# define uLong z_uLong -# define Bytef z_Bytef -# define charf z_charf -# define intf z_intf -# define uIntf z_uIntf -# define uLongf z_uLongf -# define voidpf z_voidpf -# define voidp z_voidp -#endif - -#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) -# define WIN32 -#endif -#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386) -# ifndef __32BIT__ -# define __32BIT__ -# endif -#endif -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif - -/* WinCE doesn't have errno.h */ -#ifdef _WIN32_WCE -# define NO_ERRNO_H -#endif - - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#if defined(MSDOS) && !defined(__32BIT__) -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32)) && !defined(STDC) -# define STDC -#endif -#if defined(__STDC__) || defined(__cplusplus) || defined(__OS2__) -# ifndef STDC -# define STDC -# endif -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const -# endif -#endif - -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__) -# define NO_DUMMY_DECL -#endif - -/* Old Borland C and LCC incorrectly complains about missing returns: */ -#if defined(__BORLANDC__) && (__BORLANDC__ < 0x500) -# define NEED_DUMMY_RETURN -#endif - -#if defined(__LCC__) -# define NEED_DUMMY_RETURN -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -#endif -#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__)) -# ifndef __32BIT__ -# define SMALL_MEDIUM -# define FAR _far -# endif -#endif - -/* Compile with -DZLIB_DLL for Windows DLL support */ -#if defined(ZLIB_DLL) -# if defined(_WINDOWS) || defined(WINDOWS) -# ifdef FAR -# undef FAR -# endif -# include <windows.h> -# define ZEXPORT(x) x WINAPI -# ifdef WIN32 -# define ZEXPORTVA(x) x WINAPIV -# else -# define ZEXPORTVA(x) x FAR _cdecl _export -# endif -# endif -# if defined (__BORLANDC__) -# if (__BORLANDC__ >= 0x0500) && defined (WIN32) -# include <windows.h> -# define ZEXPORT(x) x __declspec(dllexport) WINAPI -# define ZEXPORTRVA(x) x __declspec(dllexport) WINAPIV -# else -# if defined (_Windows) && defined (__DLL__) -# define ZEXPORT(x) x _export -# define ZEXPORTVA(x) x _export -# endif -# endif -# endif -#endif - - -#ifndef ZEXPORT -# define ZEXPORT(x) static x -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA(x) static x -#endif -#ifndef ZEXTERN -# define ZEXTERN(x) static x -#endif -#ifndef ZEXTERNDEF -# define ZEXTERNDEF(x) static x -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(MACOS) && !defined(TARGET_OS_MAC) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#ifdef HAVE_UNISTD_H -# include <sys/types.h> /* for off_t */ -# include <unistd.h> /* for SEEK_* and off_t */ -# define z_off_t off_t -#endif -#ifndef SEEK_SET -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif -#ifndef z_off_t -# define z_off_t long -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) -# pragma map(deflateInit_,"DEIN") -# pragma map(deflateInit2_,"DEIN2") -# pragma map(deflateEnd,"DEEND") -# pragma map(inflateInit_,"ININ") -# pragma map(inflateInit2_,"ININ2") -# pragma map(inflateEnd,"INEND") -# pragma map(inflateSync,"INSY") -# pragma map(inflateSetDictionary,"INSEDI") -# pragma map(inflate_blocks,"INBL") -# pragma map(inflate_blocks_new,"INBLNE") -# pragma map(inflate_blocks_free,"INBLFR") -# pragma map(inflate_blocks_reset,"INBLRE") -# pragma map(inflate_codes_free,"INCOFR") -# pragma map(inflate_codes,"INCO") -# pragma map(inflate_fast,"INFA") -# pragma map(inflate_flush,"INFLU") -# pragma map(inflate_mask,"INMA") -# pragma map(inflate_set_dictionary,"INSEDI2") -# pragma map(inflate_copyright,"INCOPY") -# pragma map(inflate_trees_bits,"INTRBI") -# pragma map(inflate_trees_dynamic,"INTRDY") -# pragma map(inflate_trees_fixed,"INTRFI") -# pragma map(inflate_trees_free,"INTRFR") -#endif - -#endif /* _ZCONF_H */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/lzw/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/lzw/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/lzw/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/lzw/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,16 +0,0 @@ -# FreeType 2 src/lzw Jamfile -# -# Copyright (C) 2004-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) lzw ; - -Library $(FT2_LIB) : ftlzw.c ; - -# end of src/lzw Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/lzw/ftlzw.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/lzw/ftlzw.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/lzw/ftlzw.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/lzw/ftlzw.c 2022-11-11 15:29:17.000000000 +0800 @@ -8,7 +8,7 @@ * be used to parse compressed PCF fonts, as found with many X11 server * distributions. * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * Albert Chin-A-Young. * * based on code in `src/gzip/ftgzip.c' @@ -21,15 +21,14 @@ * */ -#include <ft2build.h> -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_DEBUG_H -#include FT_LZW_H +#include <freetype/internal/ftmemory.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/ftlzw.h> #include FT_CONFIG_STANDARD_LIBRARY_H -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -37,7 +36,7 @@ #define FT_ERR_PREFIX LZW_Err_ #define FT_ERR_BASE FT_Mod_Err_LZW -#include FT_ERRORS_H +#include <freetype/fterrors.h> #ifdef FT_CONFIG_OPTION_USE_LZW diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/lzw/ftzopen.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/lzw/ftzopen.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/lzw/ftzopen.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/lzw/ftzopen.c 2022-11-11 15:29:17.000000000 +0800 @@ -8,7 +8,7 @@ * be used to parse compressed PCF fonts, as found with many X11 server * distributions. * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * David Turner. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,9 @@ */ #include "ftzopen.h" -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftmemory.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/ftdebug.h> static int diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/lzw/ftzopen.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/lzw/ftzopen.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/lzw/ftzopen.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/lzw/ftzopen.h 2022-11-11 15:29:17.000000000 +0800 @@ -8,7 +8,7 @@ * be used to parse compressed PCF fonts, as found with many X11 server * distributions. * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * David Turner. * * This file is part of the FreeType project, and may only be used, @@ -22,9 +22,9 @@ #ifndef FTZOPEN_H_ #define FTZOPEN_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> +FT_BEGIN_HEADER /* * This is a complete re-implementation of the LZW file reader, @@ -166,6 +166,8 @@ /* */ +FT_END_HEADER + #endif /* FTZOPEN_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/lzw/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/lzw/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/lzw/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/lzw/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 2004-2019 by +# Copyright (C) 2004-2020 by # Albert Chin-A-Young. # # based on `src/lzw/rules.mk' diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,37 +0,0 @@ -# FreeType 2 src/otvalid Jamfile -# -# Copyright (C) 2004-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) otvalid ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = otvbase - otvcommn - otvgdef - otvgpos - otvgsub - otvjstf - otvmath - otvmod - ; - } - else - { - _sources = otvalid ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/otvalid Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 2004-2019 by +# Copyright (C) 2004-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvalid.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvalid.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvalid.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvalid.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType validator for OpenType tables (body only). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,7 +17,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "otvbase.c" #include "otvcommn.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvalid.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvalid.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvalid.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvalid.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType table validation (specification only). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,13 +20,12 @@ #define OTVALID_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> -#include "otverror.h" /* must come before FT_INTERNAL_VALIDATE_H */ +#include "otverror.h" /* must come before `ftvalid.h' */ -#include FT_INTERNAL_VALIDATE_H -#include FT_INTERNAL_STREAM_H +#include <freetype/internal/ftvalid.h> +#include <freetype/internal/ftstream.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvbase.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvbase.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvbase.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvbase.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType BASE table validation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvcommn.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvcommn.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvcommn.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvcommn.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType common tables validation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -151,6 +151,9 @@ FT_UInt result = 0; + if ( !count ) + return result; + switch ( CoverageFormat ) { case 1: diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvcommn.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvcommn.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvcommn.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvcommn.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType common tables validation (specification). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,8 @@ #define OTVCOMMN_H_ -#include <ft2build.h> #include "otvalid.h" -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otverror.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otverror.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otverror.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otverror.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType validation module error codes (specification only). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -26,7 +26,7 @@ #ifndef OTVERROR_H_ #define OTVERROR_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -34,7 +34,7 @@ #define FT_ERR_PREFIX OTV_Err_ #define FT_ERR_BASE FT_Mod_Err_OTvalid -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* OTVERROR_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvgdef.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvgdef.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvgdef.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvgdef.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType GDEF table validation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvgpos.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvgpos.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvgpos.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvgpos.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType GPOS table validation (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvgpos.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvgpos.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvgpos.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvgpos.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType GPOS table validator (specification). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvgsub.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvgsub.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvgsub.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvgsub.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType GSUB table validation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvjstf.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvjstf.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvjstf.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvjstf.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType JSTF table validation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvmath.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvmath.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvmath.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvmath.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * OpenType MATH table validation (body). * - * Copyright (C) 2007-2019 by + * Copyright (C) 2007-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by George Williams. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvmod.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvmod.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvmod.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvmod.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType's OpenType validation module implementation (body). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,12 +16,11 @@ */ -#include <ft2build.h> -#include FT_TRUETYPE_TABLES_H -#include FT_TRUETYPE_TAGS_H -#include FT_OPENTYPE_VALIDATE_H -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_OPENTYPE_VALIDATE_H +#include <freetype/tttables.h> +#include <freetype/tttags.h> +#include <freetype/ftotval.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/services/svotval.h> #include "otvmod.h" #include "otvalid.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvmod.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvmod.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/otvmod.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/otvmod.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * FreeType's OpenType validation module implementation * (specification). * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,8 +21,7 @@ #define OTVMOD_H_ -#include <ft2build.h> -#include FT_MODULE_H +#include <freetype/ftmodapi.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/otvalid/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/otvalid/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 2004-2019 by +# Copyright (C) 2004-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,32 +0,0 @@ -# FreeType 2 src/pcf Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) pcf ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = pcfdrivr - pcfread - pcfutil - ; - } - else - { - _sources = pcf ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/pcf Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcf.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcf.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcf.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcf.c 2022-11-11 15:29:17.000000000 +0800 @@ -26,7 +26,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "pcfdrivr.c" #include "pcfread.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcf.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcf.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcf.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcf.h 2022-11-11 15:29:17.000000000 +0800 @@ -29,9 +29,8 @@ #define PCF_H_ -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H -#include FT_INTERNAL_STREAM_H +#include <freetype/internal/ftdrv.h> +#include <freetype/internal/ftstream.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcfdrivr.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcfdrivr.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcfdrivr.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcfdrivr.c 2022-11-11 15:29:17.000000000 +0800 @@ -25,17 +25,16 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_OBJECTS_H -#include FT_GZIP_H -#include FT_LZW_H -#include FT_BZIP2_H -#include FT_ERRORS_H -#include FT_BDF_H -#include FT_TRUETYPE_IDS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/ftgzip.h> +#include <freetype/ftlzw.h> +#include <freetype/ftbzip2.h> +#include <freetype/fterrors.h> +#include <freetype/ftbdf.h> +#include <freetype/ttnameid.h> #include "pcf.h" #include "pcfdrivr.h" @@ -47,10 +46,10 @@ #undef FT_COMPONENT #define FT_COMPONENT pcfread -#include FT_SERVICE_BDF_H -#include FT_SERVICE_FONT_FORMAT_H -#include FT_SERVICE_PROPERTIES_H -#include FT_DRIVER_H +#include <freetype/internal/services/svbdf.h> +#include <freetype/internal/services/svfntfmt.h> +#include <freetype/internal/services/svprop.h> +#include <freetype/ftdriver.h> /************************************************************************** @@ -137,7 +136,7 @@ FT_UInt32 charcode = *acharcode; FT_UShort charcodeRow; FT_UShort charcodeCol; - FT_Int result = 0; + FT_UInt result = 0; while ( charcode < (FT_UInt32)( enc->lastRow * 256 + enc->lastCol ) ) @@ -607,8 +606,9 @@ if ( prop->value.l > 0x7FFFFFFFL || prop->value.l < ( -1 - 0x7FFFFFFFL ) ) { - FT_TRACE1(( "pcf_get_bdf_property:" )); - FT_TRACE1(( " too large integer 0x%x is truncated\n" )); + FT_TRACE1(( "pcf_get_bdf_property:" + " too large integer 0x%lx is truncated\n", + prop->value.l )); } /* diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcfdrivr.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcfdrivr.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcfdrivr.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcfdrivr.h 2022-11-11 15:29:17.000000000 +0800 @@ -28,8 +28,7 @@ #ifndef PCFDRIVR_H_ #define PCFDRIVR_H_ -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H +#include <freetype/internal/ftdrv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcferror.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcferror.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcferror.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcferror.h 2022-11-11 15:29:17.000000000 +0800 @@ -25,7 +25,7 @@ #ifndef PCFERROR_H_ #define PCFERROR_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -33,7 +33,7 @@ #define FT_ERR_PREFIX PCF_Err_ #define FT_ERR_BASE FT_Mod_Err_PCF -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* PCFERROR_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcfread.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcfread.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcfread.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcfread.c 2022-11-11 15:29:17.000000000 +0800 @@ -25,11 +25,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/ftobjs.h> #include "pcf.h" #include "pcfread.h" @@ -122,7 +121,7 @@ toc->count > 9 ) { FT_TRACE0(( "pcf_read_TOC: adjusting number of tables" - " (from %d to %d)\n", + " (from %ld to %ld)\n", toc->count, FT_MIN( stream->size >> 4, 9 ) )); toc->count = FT_MIN( stream->size >> 4, 9 ); @@ -242,7 +241,7 @@ if ( tables[i].type == (FT_UInt)( 1 << j ) ) name = tableNames[j]; - FT_TRACE4(( " %d: type=%s, format=0x%X," + FT_TRACE4(( " %d: type=%s, format=0x%lX," " size=%ld (0x%lX), offset=%ld (0x%lX)\n", i, name, tables[i].format, @@ -661,7 +660,7 @@ { properties[i].value.l = props[i].value; - FT_TRACE4(( " %d\n", properties[i].value.l )); + FT_TRACE4(( " %ld\n", properties[i].value.l )); } } @@ -798,7 +797,7 @@ metrics->descent = 0; FT_TRACE0(( "pcf_get_metrics:" - " invalid metrics for glyph %d\n", i )); + " invalid metrics for glyph %ld\n", i )); } } @@ -918,11 +917,11 @@ sizebitmaps = bitmapSizes[PCF_GLYPH_PAD_INDEX( format )]; - FT_TRACE4(( " %ld-bit padding implies a size of %lu\n", + FT_TRACE4(( " %d-bit padding implies a size of %lu\n", 8 << i, bitmapSizes[i] )); } - FT_TRACE4(( " %lu bitmaps, using %ld-bit padding\n", + FT_TRACE4(( " %lu bitmaps, using %d-bit padding\n", nbitmaps, 8 << PCF_GLYPH_PAD_INDEX( format ) )); FT_TRACE4(( " bitmap size: %lu\n", sizebitmaps )); @@ -1252,13 +1251,13 @@ if ( FT_ABS( accel->fontAscent ) > 0x7FFF ) { accel->fontAscent = accel->fontAscent < 0 ? -0x7FFF : 0x7FFF; - FT_TRACE0(( "pfc_get_accel: clamping font ascent to value %d\n", + FT_TRACE0(( "pfc_get_accel: clamping font ascent to value %ld\n", accel->fontAscent )); } if ( FT_ABS( accel->fontDescent ) > 0x7FFF ) { accel->fontDescent = accel->fontDescent < 0 ? -0x7FFF : 0x7FFF; - FT_TRACE0(( "pfc_get_accel: clamping font descent to value %d\n", + FT_TRACE0(( "pfc_get_accel: clamping font descent to value %ld\n", accel->fontDescent )); } @@ -1631,7 +1630,7 @@ if ( FT_ABS( prop->value.l ) > 0x504C2L ) /* 0x7FFF * 72270/7200 */ { bsize->size = 0x7FFF; - FT_TRACE0(( "pcf_load_font: clamping point size to value %d\n", + FT_TRACE0(( "pcf_load_font: clamping point size to value %ld\n", bsize->size )); } else @@ -1650,7 +1649,7 @@ if ( FT_ABS( prop->value.l ) > 0x7FFF ) { bsize->y_ppem = 0x7FFF << 6; - FT_TRACE0(( "pcf_load_font: clamping pixel size to value %d\n", + FT_TRACE0(( "pcf_load_font: clamping pixel size to value %ld\n", bsize->y_ppem )); } else diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcfread.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcfread.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcfread.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcfread.h 2022-11-11 15:29:17.000000000 +0800 @@ -29,7 +29,6 @@ #define PCFREAD_H_ -#include <ft2build.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcfutil.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcfutil.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcfutil.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcfutil.c 2022-11-11 15:29:17.000000000 +0800 @@ -32,7 +32,6 @@ /* Modified for use with FreeType */ -#include <ft2build.h> #include "pcfutil.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcfutil.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcfutil.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pcf/pcfutil.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pcf/pcfutil.h 2022-11-11 15:29:17.000000000 +0800 @@ -31,7 +31,7 @@ #include <ft2build.h> #include FT_CONFIG_CONFIG_H - +#include <freetype/internal/compiler-macros.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,35 +0,0 @@ -# FreeType 2 src/pfr Jamfile -# -# Copyright (C) 2002-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) pfr ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = pfrcmap - pfrdrivr - pfrgload - pfrload - pfrobjs - pfrsbit - ; - } - else - { - _sources = pfr ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/pfr Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 2002-2019 by +# Copyright (C) 2002-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfr.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfr.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfr.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfr.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PFR driver component. * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,7 +17,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "pfrcmap.c" #include "pfrdrivr.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrcmap.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrcmap.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrcmap.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrcmap.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PFR cmap handling (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,8 +16,7 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> #include "pfrcmap.h" #include "pfrobjs.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrcmap.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrcmap.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrcmap.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrcmap.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PFR cmap handling (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,7 @@ #ifndef PFRCMAP_H_ #define PFRCMAP_H_ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H +#include <freetype/internal/ftobjs.h> #include "pfrtypes.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrdrivr.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrdrivr.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrdrivr.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrdrivr.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PFR driver interface (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_SERVICE_PFR_H -#include FT_SERVICE_FONT_FORMAT_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/services/svpfr.h> +#include <freetype/internal/services/svfntfmt.h> #include "pfrdrivr.h" #include "pfrobjs.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrdrivr.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrdrivr.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrdrivr.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrdrivr.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * High-level Type PFR driver interface (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define PFRDRIVR_H_ -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H +#include <freetype/internal/ftdrv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrerror.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrerror.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrerror.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrerror.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PFR error codes (specification only). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -25,7 +25,7 @@ #ifndef PFRERROR_H_ #define PFRERROR_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -33,7 +33,7 @@ #define FT_ERR_PREFIX PFR_Err_ #define FT_ERR_BASE FT_Mod_Err_PFR -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* PFRERROR_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrgload.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrgload.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrgload.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrgload.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PFR glyph loader (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,7 +19,7 @@ #include "pfrgload.h" #include "pfrsbit.h" #include "pfrload.h" /* for macro definitions */ -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> #include "pfrerror.h" @@ -451,7 +451,7 @@ case 1: /* 16-bit absolute value */ PFR_CHECK( 2 ); cur->x = PFR_NEXT_SHORT( p ); - FT_TRACE7(( " x.%d", cur->x )); + FT_TRACE7(( " x.%ld", cur->x )); break; case 2: /* 8-bit delta */ @@ -481,7 +481,7 @@ case 1: /* 16-bit absolute value */ PFR_CHECK( 2 ); cur->y = PFR_NEXT_SHORT( p ); - FT_TRACE7(( " y.%d", cur->y )); + FT_TRACE7(( " y.%ld", cur->y )); break; case 2: /* 8-bit delta */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrgload.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrgload.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrgload.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrgload.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PFR glyph loader (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrload.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrload.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrload.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrload.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PFR loader (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,8 +17,8 @@ #include "pfrload.h" -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> #include "pfrerror.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrload.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrload.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrload.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrload.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PFR loader (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,7 +20,7 @@ #define PFRLOAD_H_ #include "pfrobjs.h" -#include FT_INTERNAL_STREAM_H +#include <freetype/internal/ftstream.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrobjs.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrobjs.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrobjs.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrobjs.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PFR object methods (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,10 +21,10 @@ #include "pfrgload.h" #include "pfrcmap.h" #include "pfrsbit.h" -#include FT_OUTLINE_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H -#include FT_TRUETYPE_IDS_H +#include <freetype/ftoutln.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftcalc.h> +#include <freetype/ttnameid.h> #include "pfrerror.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrobjs.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrobjs.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrobjs.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrobjs.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PFR object methods (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrsbit.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrsbit.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrsbit.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrsbit.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PFR bitmap loader (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -18,8 +18,8 @@ #include "pfrsbit.h" #include "pfrload.h" -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> #include "pfrerror.h" @@ -745,7 +745,7 @@ ypos + (FT_Long)ysize < FT_INT_MIN ) { FT_TRACE1(( "pfr_slot_load_bitmap:" )); - FT_TRACE1(( "huge bitmap glyph %dx%d over FT_GlyphSlot\n", + FT_TRACE1(( "huge bitmap glyph %ldx%ld over FT_GlyphSlot\n", xpos, ypos )); error = FT_THROW( Invalid_Pixel_Size ); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrsbit.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrsbit.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrsbit.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrsbit.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PFR bitmap loader (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrtypes.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrtypes.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/pfrtypes.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/pfrtypes.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PFR data structures (specification only). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,8 +19,7 @@ #ifndef PFRTYPES_H_ #define PFRTYPES_H_ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H +#include <freetype/internal/ftobjs.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pfr/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pfr/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 2002-2019 by +# Copyright (C) 2002-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,45 +0,0 @@ -# FreeType 2 src/psaux Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) psaux ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = afmparse - psauxmod - psconv - psobjs - t1cmap - t1decode - cffdecode - psarrst - psblues - pserror - psfont - psft - pshints - psintrp - psread - psstack - ; - } - else - { - _sources = psaux ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/psaux Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/afmparse.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/afmparse.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/afmparse.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/afmparse.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * AFM parser (body). * - * Copyright (C) 2006-2019 by + * Copyright (C) 2006-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -15,10 +15,9 @@ * */ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/freetype.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/psaux.h> #ifndef T1_CONFIG_OPTION_NO_AFM diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/afmparse.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/afmparse.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/afmparse.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/afmparse.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * AFM parser (specification). * - * Copyright (C) 2006-2019 by + * Copyright (C) 2006-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define AFMPARSE_H_ -#include <ft2build.h> -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/internal/psaux.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/cffdecode.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/cffdecode.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/cffdecode.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/cffdecode.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PostScript CFF (Type 2) decoding routines (body). * - * Copyright (C) 2017-2019 by + * Copyright (C) 2017-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_SERVICE_H -#include FT_SERVICE_CFF_TABLE_LOAD_H +#include <freetype/freetype.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftserv.h> +#include <freetype/internal/services/svcfftl.h> #include "cffdecode.h" #include "psobjs.h" @@ -330,7 +329,7 @@ builder->left_bearing.x = 0; builder->left_bearing.y = 0; - builder->pos_x = adx - asb; + builder->pos_x = SUB_LONG( adx, asb ); builder->pos_y = ady; /* Now load `achar' on top of the base outline. */ @@ -530,6 +529,9 @@ builder->path_begun = 0; + if ( !charstring_base ) + return FT_Err_Ok; + zone->base = charstring_base; limit = zone->limit = charstring_base + charstring_len; ip = zone->cursor = zone->base; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/cffdecode.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/cffdecode.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/cffdecode.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/cffdecode.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PostScript CFF (Type 2) decoding routines (specification). * - * Copyright (C) 2017-2019 by + * Copyright (C) 2017-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define CFFDECODE_H_ -#include <ft2build.h> -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/internal/psaux.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psarrst.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psarrst.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psarrst.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psarrst.c 2022-11-11 15:29:17.000000000 +0800 @@ -37,7 +37,7 @@ #include "psft.h" -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> #include "psglue.h" #include "psarrst.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psaux.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psaux.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psaux.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psaux.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType auxiliary PostScript driver component (body only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,7 +17,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "afmparse.c" #include "psauxmod.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psauxerr.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psauxerr.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psauxerr.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psauxerr.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PS auxiliary module error codes (specification only). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -26,7 +26,7 @@ #ifndef PSAUXERR_H_ #define PSAUXERR_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -34,7 +34,7 @@ #define FT_ERR_PREFIX PSaux_Err_ #define FT_ERR_BASE FT_Mod_Err_PSaux -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* PSAUXERR_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psauxmod.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psauxmod.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psauxmod.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psauxmod.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType auxiliary PostScript module implementation (body). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,7 +16,6 @@ */ -#include <ft2build.h> #include "psauxmod.h" #include "psobjs.h" #include "t1decode.h" @@ -171,9 +170,9 @@ }; - FT_CALLBACK_TABLE_DEF - const FT_Module_Class psaux_module_class = - { + FT_DEFINE_MODULE( + psaux_module_class, + 0, sizeof ( FT_ModuleRec ), "psaux", @@ -185,7 +184,7 @@ (FT_Module_Constructor)NULL, /* module_init */ (FT_Module_Destructor) NULL, /* module_done */ (FT_Module_Requester) NULL /* get_interface */ - }; + ) /* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psauxmod.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psauxmod.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psauxmod.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psauxmod.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType auxiliary PostScript module implementation (specification). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,10 +20,9 @@ #define PSAUXMOD_H_ -#include <ft2build.h> -#include FT_MODULE_H +#include <freetype/ftmodapi.h> -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/internal/psaux.h> FT_BEGIN_HEADER @@ -35,10 +34,24 @@ FT_CALLBACK_TABLE const PS_Builder_FuncsRec ps_builder_funcs; +#ifndef T1_CONFIG_OPTION_NO_AFM + FT_CALLBACK_TABLE + const AFM_Parser_FuncsRec afm_parser_funcs; +#endif + + FT_CALLBACK_TABLE + const T1_CMap_ClassesRec t1_cmap_classes; + + FT_CALLBACK_TABLE + const CFF_Decoder_FuncsRec cff_decoder_funcs; + FT_EXPORT_VAR( const FT_Module_Class ) psaux_driver_class; + FT_DECLARE_MODULE( psaux_module_class ) + + FT_END_HEADER #endif /* PSAUXMOD_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psblues.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psblues.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psblues.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psblues.c 2022-11-11 15:29:17.000000000 +0800 @@ -37,7 +37,7 @@ #include "psft.h" -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> #include "psblues.h" #include "pshints.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psconv.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psconv.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psconv.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psconv.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Some convenience conversions (body). * - * Copyright (C) 2006-2019 by + * Copyright (C) 2006-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,9 +16,8 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/psaux.h> +#include <freetype/internal/ftdebug.h> #include "psconv.h" #include "psauxerr.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psconv.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psconv.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psconv.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psconv.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Some convenience conversions (specification). * - * Copyright (C) 2006-2019 by + * Copyright (C) 2006-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define PSCONV_H_ -#include <ft2build.h> -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/internal/psaux.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/pserror.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/pserror.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/pserror.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/pserror.h 2022-11-11 15:29:17.000000000 +0800 @@ -40,7 +40,7 @@ #define PSERROR_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -49,7 +49,8 @@ #define FT_ERR_BASE FT_Mod_Err_CF2 -#include FT_ERRORS_H +#include <freetype/fterrors.h> +#include <freetype/internal/compiler-macros.h> #include "psft.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psfont.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psfont.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psfont.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psfont.c 2022-11-11 15:29:17.000000000 +0800 @@ -36,8 +36,7 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_CALC_H +#include <freetype/internal/ftcalc.h> #include "psft.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psfont.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psfont.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psfont.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psfont.h 2022-11-11 15:29:17.000000000 +0800 @@ -40,7 +40,7 @@ #define PSFONT_H_ -#include FT_SERVICE_CFF_TABLE_LOAD_H +#include <freetype/internal/services/svcfftl.h> #include "psft.h" #include "psblues.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psft.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psft.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psft.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psft.c 2022-11-11 15:29:17.000000000 +0800 @@ -37,7 +37,7 @@ #include "psft.h" -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> #include "psfont.h" #include "pserror.h" @@ -45,11 +45,11 @@ #include "cffdecode.h" #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include FT_MULTIPLE_MASTERS_H -#include FT_SERVICE_MULTIPLE_MASTERS_H +#include <freetype/ftmm.h> +#include <freetype/internal/services/svmm.h> #endif -#include FT_SERVICE_CFF_TABLE_LOAD_H +#include <freetype/internal/services/svcfftl.h> #define CF2_MAX_SIZE cf2_intToFixed( 2000 ) /* max ppem */ @@ -313,7 +313,7 @@ FT_Error error = FT_Err_Ok; CF2_Font font; - FT_Bool is_t1 = decoder->builder.is_t1; + FT_Bool is_t1 = decoder->builder.is_t1; FT_ASSERT( decoder && @@ -385,7 +385,7 @@ FT_ZERO( &buf ); buf.start = buf.ptr = charstring_base; - buf.end = charstring_base + charstring_len; + buf.end = FT_OFFSET( charstring_base, charstring_len ); FT_ZERO( &transform ); @@ -697,7 +697,7 @@ FT_ASSERT( charstring + len >= charstring ); buf->start = charstring; - buf->end = charstring + len; + buf->end = FT_OFFSET( charstring, len ); buf->ptr = buf->start; return FT_Err_Ok; @@ -820,7 +820,7 @@ /* The CID driver stores subroutines with seed bytes. This */ /* case is taken care of when decoder->subrs_len == 0. */ if ( decoder->locals_len ) - buf->end = buf->start + decoder->locals_len[idx]; + buf->end = FT_OFFSET( buf->start, decoder->locals_len[idx] ); else { /* We are using subroutines from a CID font. We must adjust */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psft.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psft.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psft.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psft.h 2022-11-11 15:29:17.000000000 +0800 @@ -40,17 +40,17 @@ #define PSFT_H_ +#include <freetype/internal/compiler-macros.h> #include "pstypes.h" - /* TODO: disable asserts for now */ #define CF2_NDEBUG -#include FT_SYSTEM_H +#include <freetype/ftsystem.h> #include "psglue.h" -#include FT_INTERNAL_POSTSCRIPT_AUX_H /* for PS_Decoder */ +#include <freetype/internal/psaux.h> /* for PS_Decoder */ FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/pshints.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/pshints.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/pshints.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/pshints.c 2022-11-11 15:29:17.000000000 +0800 @@ -37,7 +37,7 @@ #include "psft.h" -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> #include "psglue.h" #include "psfont.h" @@ -310,7 +310,7 @@ CF2_Hint hint = &hintmap->edge[i]; - FT_TRACE6(( " %3d %7.2f %7.2f %5d %s%s%s%s\n", + FT_TRACE6(( " %3ld %7.2f %7.2f %5d %s%s%s%s\n", hint->index, hint->csCoord / 65536.0, hint->dsCoord / ( hint->scale * 1.0 ), diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psintrp.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psintrp.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psintrp.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psintrp.c 2022-11-11 15:29:17.000000000 +0800 @@ -37,8 +37,8 @@ #include "psft.h" -#include FT_INTERNAL_DEBUG_H -#include FT_SERVICE_CFF_TABLE_LOAD_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/services/svcfftl.h> #include "psglue.h" #include "psfont.h" @@ -1433,6 +1433,13 @@ lastError = error2; /* pass FreeType error through */ goto exit; } + + /* save the left bearing and width of the SEAC */ + /* glyph as they will be erased by the next load */ + + left_bearing = *decoder->builder.left_bearing; + advance = *decoder->builder.advance; + cf2_interpT2CharString( font, &component, callbacks, @@ -1443,11 +1450,14 @@ &dummyWidth ); cf2_freeT1SeacComponent( decoder, &component ); - /* save the left bearing and width of the base */ - /* character as they will be erased by the next load */ + /* If the SEAC glyph doesn't have a (H)SBW of its */ + /* own use the values from the base glyph. */ - left_bearing = *decoder->builder.left_bearing; - advance = *decoder->builder.advance; + if ( !haveWidth ) + { + left_bearing = *decoder->builder.left_bearing; + advance = *decoder->builder.advance; + } decoder->builder.left_bearing->x = 0; decoder->builder.left_bearing->y = 0; @@ -1473,8 +1483,8 @@ &dummyWidth ); cf2_freeT1SeacComponent( decoder, &component ); - /* restore the left side bearing and */ - /* advance width of the base character */ + /* restore the left side bearing and advance width */ + /* of the SEAC glyph or base character (saved above) */ *decoder->builder.left_bearing = left_bearing; *decoder->builder.advance = advance; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psobjs.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psobjs.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psobjs.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psobjs.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auxiliary functions for PostScript fonts (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H -#include FT_DRIVER_H +#include <freetype/internal/psaux.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftcalc.h> +#include <freetype/ftdriver.h> #include "psobjs.h" #include "psconv.h" @@ -214,7 +213,7 @@ } /* add the object to the base block and adjust offset */ - table->elements[idx] = table->block + table->cursor; + table->elements[idx] = FT_OFFSET( table->block, table->cursor ); table->lengths [idx] = length; FT_MEM_COPY( table->block + table->cursor, object, length ); @@ -1233,7 +1232,7 @@ bbox->xMax = FT_RoundFix( temp[2] ); bbox->yMax = FT_RoundFix( temp[3] ); - FT_TRACE4(( " [%d %d %d %d]", + FT_TRACE4(( " [%ld %ld %ld %ld]", bbox->xMin / 65536, bbox->yMin / 65536, bbox->xMax / 65536, @@ -1287,7 +1286,7 @@ bbox->xMax = FT_RoundFix( temp[i + 2 * max_objects] ); bbox->yMax = FT_RoundFix( temp[i + 3 * max_objects] ); - FT_TRACE4(( " [%d %d %d %d]", + FT_TRACE4(( " [%ld %ld %ld %ld]", bbox->xMin / 65536, bbox->yMin / 65536, bbox->xMax / 65536, @@ -2577,7 +2576,7 @@ FT_UShort seed ) { PS_Conv_EexecDecode( &buffer, - buffer + length, + FT_OFFSET( buffer, length ), buffer, length, &seed ); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psobjs.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psobjs.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psobjs.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psobjs.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Auxiliary functions for PostScript fonts (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,8 @@ #define PSOBJS_H_ -#include <ft2build.h> -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_INTERNAL_CFF_OBJECTS_TYPES_H +#include <freetype/internal/psaux.h> +#include <freetype/internal/cffotypes.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psread.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psread.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psread.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psread.c 2022-11-11 15:29:17.000000000 +0800 @@ -37,7 +37,7 @@ #include "psft.h" -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> #include "psglue.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psstack.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psstack.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psstack.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psstack.c 2022-11-11 15:29:17.000000000 +0800 @@ -37,7 +37,7 @@ #include "psft.h" -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> #include "psglue.h" #include "psfont.h" @@ -59,12 +59,12 @@ CF2_Stack stack = NULL; - if ( !FT_NEW( stack ) ) - { - /* initialize the structure; FT_NEW zeroes it */ - stack->memory = memory; - stack->error = e; - } + if ( FT_NEW( stack ) ) + return NULL; + + /* initialize the structure; FT_NEW zeroes it */ + stack->memory = memory; + stack->error = e; /* allocate the stack buffer */ if ( FT_NEW_ARRAY( stack->buffer, stackSize ) ) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psstack.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psstack.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/psstack.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/psstack.h 2022-11-11 15:29:17.000000000 +0800 @@ -39,6 +39,7 @@ #ifndef PSSTACK_H_ #define PSSTACK_H_ +#include <freetype/internal/compiler-macros.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/pstypes.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/pstypes.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/pstypes.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/pstypes.h 2022-11-11 15:29:17.000000000 +0800 @@ -39,8 +39,7 @@ #ifndef PSTYPES_H_ #define PSTYPES_H_ -#include <ft2build.h> -#include FT_FREETYPE_H +#include <freetype/freetype.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/t1cmap.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/t1cmap.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/t1cmap.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/t1cmap.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 1 character map support (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -18,7 +18,7 @@ #include "t1cmap.h" -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> #include "psauxerr.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/t1cmap.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/t1cmap.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/t1cmap.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/t1cmap.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 1 character map support (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,9 +19,8 @@ #ifndef T1CMAP_H_ #define T1CMAP_H_ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_TYPE1_TYPES_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/t1types.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/t1decode.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/t1decode.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/t1decode.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/t1decode.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PostScript Type 1 decoding routines (body). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,12 +16,11 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H -#include FT_INTERNAL_HASH_H -#include FT_OUTLINE_H +#include <freetype/internal/ftcalc.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/pshints.h> +#include <freetype/internal/fthash.h> +#include <freetype/ftoutln.h> #include "t1decode.h" #include "psobjs.h" @@ -367,6 +366,12 @@ FT_GlyphLoader_Prepare( decoder->builder.loader ); /* prepare loader */ + /* save the left bearing and width of the SEAC */ + /* glyph as they will be erased by the next load */ + + left_bearing = decoder->builder.left_bearing; + advance = decoder->builder.advance; + /* the seac operator must not be nested */ decoder->seac = TRUE; error = t1_decoder_parse_glyph( decoder, (FT_UInt)bchar_index ); @@ -374,11 +379,14 @@ if ( error ) goto Exit; - /* save the left bearing and width of the base character */ - /* as they will be erased by the next load. */ + /* If the SEAC glyph doesn't have a (H)SBW of its */ + /* own use the values from the base glyph. */ - left_bearing = decoder->builder.left_bearing; - advance = decoder->builder.advance; + if ( decoder->builder.parse_state != T1_Parse_Have_Width ) + { + left_bearing = decoder->builder.left_bearing; + advance = decoder->builder.advance; + } decoder->builder.left_bearing.x = 0; decoder->builder.left_bearing.y = 0; @@ -396,8 +404,8 @@ if ( error ) goto Exit; - /* restore the left side bearing and */ - /* advance width of the base character */ + /* restore the left side bearing and advance width */ + /* of the SEAC glyph or base character (saved above) */ decoder->builder.left_bearing = left_bearing; decoder->builder.advance = advance; @@ -650,10 +658,8 @@ if ( value > 32000 || value < -32000 ) { if ( large_int ) - { FT_ERROR(( "t1_decoder_parse_charstrings:" " no `div' after large integer\n" )); - } else large_int = TRUE; } @@ -1231,8 +1237,8 @@ FT_UNUSED( orig_y ); - /* the `metrics_only' indicates that we only want to compute */ - /* the glyph's metrics (lsb + advance width), not load the */ + /* `metrics_only' indicates that we only want to compute the */ + /* glyph's metrics (lsb + advance width) without loading the */ /* rest of it; so exit immediately */ if ( builder->metrics_only ) { @@ -1266,8 +1272,8 @@ x = ADD_LONG( builder->pos_x, top[0] ); y = ADD_LONG( builder->pos_y, top[1] ); - /* the `metrics_only' indicates that we only want to compute */ - /* the glyph's metrics (lsb + advance width), not load the */ + /* `metrics_only' indicates that we only want to compute the */ + /* glyph's metrics (lsb + advance width) without loading the */ /* rest of it; so exit immediately */ if ( builder->metrics_only ) { @@ -1690,6 +1696,7 @@ FT_Byte* ip; FT_Byte* limit; T1_Builder builder = &decoder->builder; + FT_Bool large_int; #ifdef FT_DEBUG_LEVEL_TRACE FT_Bool bol = TRUE; @@ -1707,6 +1714,8 @@ limit = zone->limit = charstring_base + charstring_len; ip = zone->cursor = zone->base; + large_int = FALSE; + /* now, execute loop */ while ( ip < limit ) { @@ -1718,7 +1727,7 @@ #ifdef FT_DEBUG_LEVEL_TRACE if ( bol ) { - FT_TRACE5(( " (%d)", decoder->top - decoder->stack )); + FT_TRACE5(( " (%ld)", decoder->top - decoder->stack )); bol = FALSE; } #endif @@ -1740,8 +1749,6 @@ case 7: case 8: case 9: - case 10: - case 11: case 14: case 15: case 21: @@ -1750,6 +1757,13 @@ case 31: goto No_Width; + case 10: + op = op_callsubr; + break; + case 11: + op = op_return; + break; + case 13: op = op_hsbw; break; @@ -1767,6 +1781,9 @@ case 7: op = op_sbw; break; + case 12: + op = op_div; + break; default: goto No_Width; @@ -1796,13 +1813,19 @@ /* anyway. */ if ( value > 32000 || value < -32000 ) { - FT_ERROR(( "t1_decoder_parse_metrics:" - " large integer found for width\n" )); - goto Syntax_Error; + if ( large_int ) + { + FT_ERROR(( "t1_decoder_parse_metrics:" + " no `div' after large integer\n" )); + goto Syntax_Error; + } + else + large_int = TRUE; } else { - value = (FT_Int32)( (FT_UInt32)value << 16 ); + if ( !large_int ) + value = (FT_Int32)( (FT_UInt32)value << 16 ); } break; @@ -1827,7 +1850,8 @@ value = -( ( ( ip[-2] - 251 ) * 256 ) + ip[-1] + 108 ); } - value = (FT_Int32)( (FT_UInt32)value << 16 ); + if ( !large_int ) + value = (FT_Int32)( (FT_UInt32)value << 16 ); } else { @@ -1837,6 +1861,13 @@ } } + if ( large_int && !( op == op_none || op == op_div ) ) + { + FT_ERROR(( "t1_decoder_parse_metrics:" + " no `div' after large integer\n" )); + goto Syntax_Error; + } + /********************************************************************** * * Push value on stack, or process operator @@ -1851,6 +1882,9 @@ } #ifdef FT_DEBUG_LEVEL_TRACE + if ( large_int ) + FT_TRACE4(( " %d", value )); + else FT_TRACE4(( " %d", value / 65536 )); #endif @@ -1869,11 +1903,21 @@ #ifdef FT_DEBUG_LEVEL_TRACE - if ( top - decoder->stack != num_args ) - FT_TRACE0(( "t1_decoder_parse_metrics:" - " too much operands on the stack" - " (seen %d, expected %d)\n", - top - decoder->stack, num_args )); + switch ( op ) + { + case op_callsubr: + case op_div: + case op_return: + break; + + default: + if ( top - decoder->stack != num_args ) + FT_TRACE0(( "t1_decoder_parse_metrics:" + " too much operands on the stack" + " (seen %ld, expected %d)\n", + top - decoder->stack, num_args )); + break; + } #endif /* FT_DEBUG_LEVEL_TRACE */ @@ -1893,8 +1937,8 @@ builder->advance.y = 0; /* we only want to compute the glyph's metrics */ - /* (lsb + advance width), not load the rest of */ - /* it; so exit immediately */ + /* (lsb + advance width) without loading the */ + /* rest of it; so exit immediately */ FT_TRACE4(( "\n" )); return FT_Err_Ok; @@ -1912,17 +1956,116 @@ builder->advance.y = top[3]; /* we only want to compute the glyph's metrics */ - /* (lsb + advance width), not load the rest of */ - /* it; so exit immediately */ + /* (lsb + advance width), without loading the */ + /* rest of it; so exit immediately */ FT_TRACE4(( "\n" )); return FT_Err_Ok; + case op_div: + FT_TRACE4(( " div" )); + + /* if `large_int' is set, we divide unscaled numbers; */ + /* otherwise, we divide numbers in 16.16 format -- */ + /* in both cases, it is the same operation */ + *top = FT_DivFix( top[0], top[1] ); + top++; + + large_int = FALSE; + break; + + case op_callsubr: + { + FT_Int idx; + + + FT_TRACE4(( " callsubr" )); + + idx = Fix2Int( top[0] ); + + if ( decoder->subrs_hash ) + { + size_t* val = ft_hash_num_lookup( idx, + decoder->subrs_hash ); + + + if ( val ) + idx = *val; + else + idx = -1; + } + + if ( idx < 0 || idx >= decoder->num_subrs ) + { + FT_ERROR(( "t1_decoder_parse_metrics:" + " invalid subrs index\n" )); + goto Syntax_Error; + } + + if ( zone - decoder->zones >= T1_MAX_SUBRS_CALLS ) + { + FT_ERROR(( "t1_decoder_parse_metrics:" + " too many nested subrs\n" )); + goto Syntax_Error; + } + + zone->cursor = ip; /* save current instruction pointer */ + + zone++; + + /* The Type 1 driver stores subroutines without the seed bytes. */ + /* The CID driver stores subroutines with seed bytes. This */ + /* case is taken care of when decoder->subrs_len == 0. */ + zone->base = decoder->subrs[idx]; + + if ( decoder->subrs_len ) + zone->limit = zone->base + decoder->subrs_len[idx]; + else + { + /* We are using subroutines from a CID font. We must adjust */ + /* for the seed bytes. */ + zone->base += ( decoder->lenIV >= 0 ? decoder->lenIV : 0 ); + zone->limit = decoder->subrs[idx + 1]; + } + + zone->cursor = zone->base; + + if ( !zone->base ) + { + FT_ERROR(( "t1_decoder_parse_metrics:" + " invoking empty subrs\n" )); + goto Syntax_Error; + } + + decoder->zone = zone; + ip = zone->base; + limit = zone->limit; + break; + } + + case op_return: + FT_TRACE4(( " return" )); + + if ( zone <= decoder->zones ) + { + FT_ERROR(( "t1_decoder_parse_metrics:" + " unexpected return\n" )); + goto Syntax_Error; + } + + zone--; + ip = zone->cursor; + limit = zone->limit; + decoder->zone = zone; + break; + default: FT_ERROR(( "t1_decoder_parse_metrics:" " unhandled opcode %d\n", op )); goto Syntax_Error; } + decoder->top = top; + } /* general operator processing */ } /* while ip < limit */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/t1decode.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/t1decode.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psaux/t1decode.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psaux/t1decode.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PostScript Type 1 decoding routines (specification). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,8 @@ #define T1DECODE_H_ -#include <ft2build.h> -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_INTERNAL_TYPE1_TYPES_H +#include <freetype/internal/psaux.h> +#include <freetype/internal/t1types.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,34 +0,0 @@ -# FreeType 2 src/pshinter Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) pshinter ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = pshalgo - pshglob - pshmod - pshpic - pshrec - ; - } - else - { - _sources = pshinter ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/pshinter Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshalgo.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshalgo.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshalgo.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshalgo.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PostScript hinting algorithm (body). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used @@ -16,10 +16,9 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftcalc.h> #include "pshalgo.h" #include "pshnterr.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshalgo.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshalgo.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshalgo.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshalgo.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PostScript hinting algorithm (specification). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshglob.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshglob.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshglob.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshglob.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * PostScript hinter global hinting management (body). * Inspired by the new auto-hinter module. * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used @@ -17,10 +17,9 @@ */ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_CALC_H +#include <freetype/freetype.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftcalc.h> #include "pshglob.h" #ifdef DEBUG_HINTER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshglob.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshglob.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshglob.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshglob.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PostScript hinter global hinting management. * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,8 @@ #define PSHGLOB_H_ -#include FT_FREETYPE_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H +#include <freetype/freetype.h> +#include <freetype/internal/pshints.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshinter.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshinter.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshinter.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshinter.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PostScript Hinting module * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,7 +17,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "pshalgo.c" #include "pshglob.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshmod.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshmod.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshmod.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshmod.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PostScript hinter module implementation (body). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,10 +16,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H +#include <freetype/internal/ftobjs.h> #include "pshrec.h" #include "pshalgo.h" +#include "pshmod.h" /* the Postscript Hinter module structure */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshmod.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshmod.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshmod.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshmod.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PostScript hinter module interface (specification). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define PSHMOD_H_ -#include <ft2build.h> -#include FT_MODULE_H +#include <freetype/ftmodapi.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshnterr.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshnterr.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshnterr.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshnterr.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PS Hinter error codes (specification only). * - * Copyright (C) 2003-2019 by + * Copyright (C) 2003-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -25,7 +25,7 @@ #ifndef PSHNTERR_H_ #define PSHNTERR_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -33,7 +33,7 @@ #define FT_ERR_PREFIX PSH_Err_ #define FT_ERR_BASE FT_Mod_Err_PShinter -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* PSHNTERR_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshpic.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshpic.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshpic.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshpic.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,76 +0,0 @@ -/***************************************************************************/ -/* */ -/* pshpic.c */ -/* */ -/* The FreeType position independent code services for pshinter module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_OBJECTS_H -#include "pshpic.h" -#include "pshnterr.h" - - -#ifdef FT_CONFIG_OPTION_PIC - - /* forward declaration of PIC init functions from pshmod.c */ - void - FT_Init_Class_pshinter_interface( FT_Library library, - PSHinter_Interface* clazz ); - - void - pshinter_module_class_pic_free( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Memory memory = library->memory; - - - if ( pic_container->pshinter ) - { - FT_FREE( pic_container->pshinter ); - pic_container->pshinter = NULL; - } - } - - - FT_Error - pshinter_module_class_pic_init( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Error error = FT_Err_Ok; - PSHinterPIC* container = NULL; - FT_Memory memory = library->memory; - - - /* allocate pointer, clear and set global container pointer */ - if ( FT_ALLOC( container, sizeof ( *container ) ) ) - return error; - FT_MEM_SET( container, 0, sizeof ( *container ) ); - pic_container->pshinter = container; - - /* add call to initialization function when you add new scripts */ - FT_Init_Class_pshinter_interface( - library, &container->pshinter_interface ); - - if ( error ) - pshinter_module_class_pic_free( library ); - - return error; - } - -#endif /* FT_CONFIG_OPTION_PIC */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshpic.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshpic.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshpic.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshpic.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,63 +0,0 @@ -/***************************************************************************/ -/* */ -/* pshpic.h */ -/* */ -/* The FreeType position independent code services for pshinter module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef PSHPIC_H_ -#define PSHPIC_H_ - - -#include FT_INTERNAL_PIC_H - - -#ifndef FT_CONFIG_OPTION_PIC - -#define PSHINTER_INTERFACE_GET pshinter_interface - -#else /* FT_CONFIG_OPTION_PIC */ - -#include FT_INTERNAL_POSTSCRIPT_HINTS_H - -FT_BEGIN_HEADER - - typedef struct PSHinterPIC_ - { - PSHinter_Interface pshinter_interface; - - } PSHinterPIC; - - -#define GET_PIC( lib ) ( (PSHinterPIC*)( (lib)->pic_container.pshinter ) ) - -#define PSHINTER_INTERFACE_GET ( GET_PIC( library )->pshinter_interface ) - - /* see pshpic.c for the implementation */ - void - pshinter_module_class_pic_free( FT_Library library ); - - FT_Error - pshinter_module_class_pic_init( FT_Library library ); - -FT_END_HEADER - -#endif /* FT_CONFIG_OPTION_PIC */ - - /* */ - -#endif /* PSHPIC_H_ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshrec.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshrec.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshrec.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshrec.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType PostScript hints recorder (body). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H +#include <freetype/freetype.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftcalc.h> #include "pshrec.h" #include "pshalgo.h" @@ -875,7 +874,7 @@ if ( error ) { FT_ERROR(( "ps_hints_stem: could not add stem" - " (%d,%d) to hints table\n", stems[0], stems[1] )); + " (%ld,%ld) to hints table\n", stems[0], stems[1] )); hints->error = error; return; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshrec.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshrec.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/pshrec.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/pshrec.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Postscript (Type1/Type2) hints recorder (specification). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -32,8 +32,7 @@ #define PSHREC_H_ -#include <ft2build.h> -#include FT_INTERNAL_POSTSCRIPT_HINTS_H +#include <freetype/internal/pshints.h> #include "pshglob.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/pshinter/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/pshinter/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 2001-2019 by +# Copyright (C) 2001-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,31 +0,0 @@ -# FreeType 2 src/psnames Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) psnames ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = psmodule - pspic - ; - } - else - { - _sources = psnames ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/psnames Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/psmodule.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/psmodule.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/psmodule.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/psmodule.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * psnames module implementation (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,10 +16,9 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/services/svpscmap.h> #include "psmodule.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/psmodule.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/psmodule.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/psmodule.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/psmodule.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * High-level psnames module interface (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define PSMODULE_H_ -#include <ft2build.h> -#include FT_MODULE_H +#include <freetype/ftmodapi.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/psnamerr.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/psnamerr.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/psnamerr.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/psnamerr.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PS names module error codes (specification only). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -26,7 +26,7 @@ #ifndef PSNAMERR_H_ #define PSNAMERR_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -34,7 +34,7 @@ #define FT_ERR_PREFIX PSnames_Err_ #define FT_ERR_BASE FT_Mod_Err_PSnames -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* PSNAMERR_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/psnames.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/psnames.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/psnames.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/psnames.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType psnames module component (body only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,7 +17,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "psmodule.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/pspic.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/pspic.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/pspic.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/pspic.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,97 +0,0 @@ -/***************************************************************************/ -/* */ -/* pspic.c */ -/* */ -/* The FreeType position independent code services for psnames module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_OBJECTS_H -#include "pspic.h" -#include "psnamerr.h" - - -#ifdef FT_CONFIG_OPTION_PIC - - /* forward declaration of PIC init functions from psmodule.c */ - FT_Error - FT_Create_Class_pscmaps_services( FT_Library library, - FT_ServiceDescRec** output_class ); - void - FT_Destroy_Class_pscmaps_services( FT_Library library, - FT_ServiceDescRec* clazz ); - - void - FT_Init_Class_pscmaps_interface( FT_Library library, - FT_Service_PsCMapsRec* clazz ); - - - void - psnames_module_class_pic_free( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Memory memory = library->memory; - - - if ( pic_container->psnames ) - { - PSModulePIC* container = (PSModulePIC*)pic_container->psnames; - - - if ( container->pscmaps_services ) - FT_Destroy_Class_pscmaps_services( library, - container->pscmaps_services ); - container->pscmaps_services = NULL; - FT_FREE( container ); - pic_container->psnames = NULL; - } - } - - - FT_Error - psnames_module_class_pic_init( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Error error = FT_Err_Ok; - PSModulePIC* container = NULL; - FT_Memory memory = library->memory; - - - /* allocate pointer, clear and set global container pointer */ - if ( FT_ALLOC( container, sizeof ( *container ) ) ) - return error; - FT_MEM_SET( container, 0, sizeof ( *container ) ); - pic_container->psnames = container; - - /* initialize pointer table - */ - /* this is how the module usually expects this data */ - error = FT_Create_Class_pscmaps_services( - library, &container->pscmaps_services ); - if ( error ) - goto Exit; - FT_Init_Class_pscmaps_interface( library, - &container->pscmaps_interface ); - - Exit: - if ( error ) - psnames_module_class_pic_free( library ); - return error; - } - - -#endif /* FT_CONFIG_OPTION_PIC */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/pspic.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/pspic.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/pspic.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/pspic.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,68 +0,0 @@ -/***************************************************************************/ -/* */ -/* pspic.h */ -/* */ -/* The FreeType position independent code services for psnames module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef PSPIC_H_ -#define PSPIC_H_ - - -#include FT_INTERNAL_PIC_H - - -#ifndef FT_CONFIG_OPTION_PIC - -#define PSCMAPS_SERVICES_GET pscmaps_services -#define PSCMAPS_INTERFACE_GET pscmaps_interface - -#else /* FT_CONFIG_OPTION_PIC */ - -#include FT_SERVICE_POSTSCRIPT_CMAPS_H - - -FT_BEGIN_HEADER - - typedef struct PSModulePIC_ - { - FT_ServiceDescRec* pscmaps_services; - FT_Service_PsCMapsRec pscmaps_interface; - - } PSModulePIC; - - -#define GET_PIC( lib ) \ - ( (PSModulePIC*)((lib)->pic_container.psnames) ) -#define PSCMAPS_SERVICES_GET ( GET_PIC( library )->pscmaps_services ) -#define PSCMAPS_INTERFACE_GET ( GET_PIC( library )->pscmaps_interface ) - - - /* see pspic.c for the implementation */ - void - psnames_module_class_pic_free( FT_Library library ); - - FT_Error - psnames_module_class_pic_init( FT_Library library ); - -FT_END_HEADER - -#endif /* FT_CONFIG_OPTION_PIC */ - - /* */ - -#endif /* PSPIC_H_ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/pstables.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/pstables.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/pstables.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/pstables.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PostScript glyph names. * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/psnames/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/psnames/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,32 +0,0 @@ -# FreeType 2 src/raster Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) raster ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = ftraster - ftrend1 - rastpic - ; - } - else - { - _sources = raster ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/raster Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/ftmisc.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/ftmisc.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/ftmisc.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/ftmisc.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Miscellaneous macros for stand-alone rasterizer (specification * only). * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/ftraster.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/ftraster.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/ftraster.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/ftraster.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType glyph rasterizer (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -62,10 +62,9 @@ #else /* !STANDALONE_ */ -#include <ft2build.h> #include "ftraster.h" -#include FT_INTERNAL_CALC_H /* for FT_MulDiv and FT_MulDiv_No_Round */ -#include FT_OUTLINE_H /* for FT_Outline_Get_CBox */ +#include <freetype/internal/ftcalc.h> /* for FT_MulDiv and FT_MulDiv_No_Round */ +#include <freetype/ftoutln.h> /* for FT_Outline_Get_CBox */ #endif /* !STANDALONE_ */ @@ -226,8 +225,8 @@ #else /* !STANDALONE_ */ -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H /* for FT_TRACE, FT_ERROR, and FT_THROW */ +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdebug.h> /* for FT_TRACE, FT_ERROR, and FT_THROW */ #include "rasterrs.h" @@ -460,6 +459,11 @@ #define IS_TOP_OVERSHOOT( x ) \ (Bool)( x - FLOOR( x ) >= ras.precision_half ) + /* Smart dropout rounding to find which pixel is closer to span ends. */ + /* To mimick Windows, symmetric cases break down indepenently of the */ + /* precision. */ +#define SMART( p, q ) FLOOR( ( (p) + (q) + ras.precision * 63 / 64 ) >> 1 ) + #if FT_RENDER_POOL_SIZE > 2048 #define FT_MAX_BLACK_POOL ( FT_RENDER_POOL_SIZE / sizeof ( Long ) ) #else @@ -674,13 +678,13 @@ if ( overshoot ) ras.cProfile->flags |= Overshoot_Bottom; - FT_TRACE6(( " new ascending profile = %p\n", ras.cProfile )); + FT_TRACE6(( " new ascending profile = %p\n", (void *)ras.cProfile )); break; case Descending_State: if ( overshoot ) ras.cProfile->flags |= Overshoot_Top; - FT_TRACE6(( " new descending profile = %p\n", ras.cProfile )); + FT_TRACE6(( " new descending profile = %p\n", (void *)ras.cProfile )); break; default: @@ -737,7 +741,7 @@ FT_TRACE6(( " ending profile %p, start = %ld, height = %ld\n", - ras.cProfile, ras.cProfile->start, h )); + (void *)ras.cProfile, ras.cProfile->start, h )); ras.cProfile->height = h; if ( overshoot ) @@ -2242,11 +2246,10 @@ /* in high-precision mode, we need 12 digits after the comma to */ /* represent multiples of 1/(1<<12) = 1/4096 */ - FT_TRACE7(( " y=%d x=[%.12f;%.12f], drop-out=%d", + FT_TRACE7(( " y=%d x=[% .12f;% .12f]", y, x1 / (double)ras.precision, - x2 / (double)ras.precision, - dropOutControl )); + x2 / (double)ras.precision )); /* Drop-out control */ @@ -2274,7 +2277,7 @@ if ( e2 >= ras.bWidth ) e2 = ras.bWidth - 1; - FT_TRACE7(( " -> x=[%d;%d]", e1, e2 )); + FT_TRACE7(( " -> x=[%ld;%ld]", e1, e2 )); c1 = (Short)( e1 >> 3 ); c2 = (Short)( e2 >> 3 ); @@ -2316,7 +2319,7 @@ Short c1, f1; - FT_TRACE7(( " y=%d x=[%.12f;%.12f]", + FT_TRACE7(( " y=%d x=[% .12f;% .12f]", y, x1 / (double)ras.precision, x2 / (double)ras.precision )); @@ -2353,8 +2356,6 @@ Int dropOutControl = left->flags & 7; - FT_TRACE7(( ", drop-out=%d", dropOutControl )); - if ( e1 == e2 + ras.precision ) { switch ( dropOutControl ) @@ -2364,7 +2365,7 @@ break; case 4: /* smart drop-outs including stubs */ - pxl = FLOOR( ( x1 + x2 - 1 ) / 2 + ras.precision_half ); + pxl = SMART( x1, x2 ); break; case 1: /* simple drop-outs excluding stubs */ @@ -2413,7 +2414,7 @@ if ( dropOutControl == 1 ) pxl = e2; else - pxl = FLOOR( ( x1 + x2 - 1 ) / 2 + ras.precision_half ); + pxl = SMART( x1, x2 ); break; default: /* modes 2, 3, 6, 7 */ @@ -2448,7 +2449,7 @@ if ( e1 >= 0 && e1 < ras.bWidth ) { - FT_TRACE7(( " -> x=%d (drop-out)", e1 )); + FT_TRACE7(( " -> x=%ld", e1 )); c1 = (Short)( e1 >> 3 ); f1 = (Short)( e1 & 7 ); @@ -2457,7 +2458,7 @@ } Exit: - FT_TRACE7(( "\n" )); + FT_TRACE7(( " dropout=%d\n", left->flags & 7 )); } @@ -2495,44 +2496,68 @@ PProfile left, PProfile right ) { + Long e1, e2; + FT_UNUSED( left ); FT_UNUSED( right ); - if ( x2 - x1 < ras.precision ) - { - Long e1, e2; + FT_TRACE7(( " x=%d y=[% .12f;% .12f]", + y, + x1 / (double)ras.precision, + x2 / (double)ras.precision )); + /* We should not need this procedure but the vertical sweep */ + /* mishandles horizontal lines through pixel centers. So we */ + /* have to check perfectly aligned span edges here. */ + /* */ + /* XXX: Can we handle horizontal lines better and drop this? */ - FT_TRACE7(( " x=%d y=[%.12f;%.12f]", - y, - x1 / (double)ras.precision, - x2 / (double)ras.precision )); + e1 = CEILING( x1 ); - e1 = CEILING( x1 ); - e2 = FLOOR ( x2 ); + if ( x1 == e1 ) + { + e1 = TRUNC( e1 ); - if ( e1 == e2 ) + if ( e1 >= 0 && (ULong)e1 < ras.target.rows ) { - e1 = TRUNC( e1 ); - - if ( e1 >= 0 && (ULong)e1 < ras.target.rows ) - { - Byte f1; - PByte bits; + Byte f1; + PByte bits; - FT_TRACE7(( " -> y=%d (drop-out)", e1 )); + bits = ras.bOrigin + ( y >> 3 ) - e1 * ras.target.pitch; + f1 = (Byte)( 0x80 >> ( y & 7 ) ); - bits = ras.bOrigin + ( y >> 3 ) - e1 * ras.target.pitch; - f1 = (Byte)( 0x80 >> ( y & 7 ) ); + FT_TRACE7(( bits[0] & f1 ? " redundant" + : " -> y=%ld edge", e1 )); - bits[0] |= f1; - } + bits[0] |= f1; } + } + + e2 = FLOOR ( x2 ); + + if ( x2 == e2 ) + { + e2 = TRUNC( e2 ); + + if ( e2 >= 0 && (ULong)e2 < ras.target.rows ) + { + Byte f1; + PByte bits; + - FT_TRACE7(( "\n" )); + bits = ras.bOrigin + ( y >> 3 ) - e2 * ras.target.pitch; + f1 = (Byte)( 0x80 >> ( y & 7 ) ); + + FT_TRACE7(( bits[0] & f1 ? " redundant" + : " -> y=%ld edge", e2 )); + + bits[0] |= f1; + } } + + FT_TRACE7(( "\n" )); } @@ -2548,7 +2573,7 @@ Byte f1; - FT_TRACE7(( " x=%d y=[%.12f;%.12f]", + FT_TRACE7(( " x=%d y=[% .12f;% .12f]", y, x1 / (double)ras.precision, x2 / (double)ras.precision )); @@ -2574,8 +2599,6 @@ Int dropOutControl = left->flags & 7; - FT_TRACE7(( ", dropout=%d", dropOutControl )); - if ( e1 == e2 + ras.precision ) { switch ( dropOutControl ) @@ -2585,7 +2608,7 @@ break; case 4: /* smart drop-outs including stubs */ - pxl = FLOOR( ( x1 + x2 - 1 ) / 2 + ras.precision_half ); + pxl = SMART( x1, x2 ); break; case 1: /* simple drop-outs excluding stubs */ @@ -2609,7 +2632,7 @@ if ( dropOutControl == 1 ) pxl = e2; else - pxl = FLOOR( ( x1 + x2 - 1 ) / 2 + ras.precision_half ); + pxl = SMART( x1, x2 ); break; default: /* modes 2, 3, 6, 7 */ @@ -2645,7 +2668,7 @@ if ( e1 >= 0 && (ULong)e1 < ras.target.rows ) { - FT_TRACE7(( " -> y=%d (drop-out)", e1 )); + FT_TRACE7(( " -> y=%ld", e1 )); bits = ras.bOrigin + ( y >> 3 ) - e1 * ras.target.pitch; f1 = (Byte)( 0x80 >> ( y & 7 ) ); @@ -2654,7 +2677,7 @@ } Exit: - FT_TRACE7(( "\n" )); + FT_TRACE7(( " dropout=%d\n", left->flags & 7 )); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/ftraster.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/ftraster.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/ftraster.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/ftraster.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType glyph rasterizer (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used @@ -22,8 +22,9 @@ #include <ft2build.h> #include FT_CONFIG_CONFIG_H -#include FT_IMAGE_H +#include <freetype/ftimage.h> +#include <freetype/internal/compiler-macros.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/ftrend1.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/ftrend1.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/ftrend1.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/ftrend1.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType glyph rasterizer interface (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,10 +16,9 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H -#include FT_OUTLINE_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/ftoutln.h> #include "ftrend1.h" #include "ftraster.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/ftrend1.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/ftrend1.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/ftrend1.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/ftrend1.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * The FreeType glyph rasterizer interface (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define FTREND1_H_ -#include <ft2build.h> -#include FT_RENDER_H +#include <freetype/ftrender.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/raster.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/raster.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/raster.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/raster.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType monochrome rasterer module component (body only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,7 +17,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "ftraster.c" #include "ftrend1.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/rasterrs.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/rasterrs.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/rasterrs.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/rasterrs.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * monochrome renderer error codes (specification only). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -26,7 +26,7 @@ #ifndef RASTERRS_H_ #define RASTERRS_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -34,7 +34,7 @@ #define FT_ERR_PREFIX Raster_Err_ #define FT_ERR_BASE FT_Mod_Err_Raster -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* RASTERRS_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/rastpic.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/rastpic.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/rastpic.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/rastpic.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,89 +0,0 @@ -/***************************************************************************/ -/* */ -/* rastpic.c */ -/* */ -/* The FreeType position independent code services for raster module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_OBJECTS_H -#include "rastpic.h" -#include "rasterrs.h" - - -#ifdef FT_CONFIG_OPTION_PIC - - /* forward declaration of PIC init functions from ftraster.c */ - void - FT_Init_Class_ft_standard_raster( FT_Raster_Funcs* funcs ); - - - void - ft_raster1_renderer_class_pic_free( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Memory memory = library->memory; - - - if ( pic_container->raster ) - { - RasterPIC* container = (RasterPIC*)pic_container->raster; - - - if ( --container->ref_count ) - return; - FT_FREE( container ); - pic_container->raster = NULL; - } - } - - - FT_Error - ft_raster1_renderer_class_pic_init( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Error error = FT_Err_Ok; - RasterPIC* container = NULL; - FT_Memory memory = library->memory; - - - /* XXX: since this function also served the no longer available */ - /* raster5 renderer it uses reference counting, which could */ - /* be removed now */ - if ( pic_container->raster ) - { - ((RasterPIC*)pic_container->raster)->ref_count++; - return error; - } - - /* allocate pointer, clear and set global container pointer */ - if ( FT_ALLOC( container, sizeof ( *container ) ) ) - return error; - FT_MEM_SET( container, 0, sizeof ( *container ) ); - pic_container->raster = container; - - container->ref_count = 1; - - /* initialize pointer table - */ - /* this is how the module usually expects this data */ - FT_Init_Class_ft_standard_raster( &container->ft_standard_raster ); - - return error; - } - -#endif /* FT_CONFIG_OPTION_PIC */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/rastpic.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/rastpic.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/rastpic.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/rastpic.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,63 +0,0 @@ -/***************************************************************************/ -/* */ -/* rastpic.h */ -/* */ -/* The FreeType position independent code services for raster module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef RASTPIC_H_ -#define RASTPIC_H_ - - -#include FT_INTERNAL_PIC_H - - -FT_BEGIN_HEADER - -#ifndef FT_CONFIG_OPTION_PIC - -#define FT_STANDARD_RASTER_GET ft_standard_raster - -#else /* FT_CONFIG_OPTION_PIC */ - - typedef struct RasterPIC_ - { - int ref_count; - FT_Raster_Funcs ft_standard_raster; - - } RasterPIC; - - -#define GET_PIC( lib ) \ - ( (RasterPIC*)( (lib)->pic_container.raster ) ) -#define FT_STANDARD_RASTER_GET ( GET_PIC( library )->ft_standard_raster ) - - - /* see rastpic.c for the implementation */ - void - ft_raster1_renderer_class_pic_free( FT_Library library ); - - FT_Error - ft_raster1_renderer_class_pic_init( FT_Library library ); - -#endif /* FT_CONFIG_OPTION_PIC */ - - /* */ - -FT_END_HEADER - -#endif /* RASTPIC_H_ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/raster/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/raster/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,42 +0,0 @@ -# FreeType 2 src/sfnt Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) sfnt ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = pngshim - sfdriver - sfntpic - sfobjs - ttbdf - ttcmap - ttcolr - ttcpal - ttkern - ttload - ttmtx - ttpost - ttsbit - ; - } - else - { - _sources = sfnt ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/sfnt Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/pngshim.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/pngshim.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/pngshim.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/pngshim.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PNG Bitmap glyph support. * - * Copyright (C) 2013-2019 by + * Copyright (C) 2013-2020 by * Google, Inc. * Written by Stuart Gill and Behdad Esfahbod. * @@ -17,10 +17,9 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/tttags.h> #include FT_CONFIG_STANDARD_LIBRARY_H @@ -61,7 +60,12 @@ /* predates clang; the `__BYTE_ORDER__' preprocessor symbol was */ /* introduced in gcc 4.6 and clang 3.2, respectively. */ /* `__builtin_shuffle' for gcc was introduced in gcc 4.7.0. */ -#if ( ( defined( __GNUC__ ) && \ + /* */ + /* Intel compilers do not currently support __builtin_shuffle; */ + + /* The Intel check must be first. */ +#if !defined( __INTEL_COMPILER ) && \ + ( ( defined( __GNUC__ ) && \ ( ( __GNUC__ >= 5 ) || \ ( ( __GNUC__ == 4 ) && ( __GNUC_MINOR__ >= 7 ) ) ) ) || \ ( defined( __clang__ ) && \ @@ -69,6 +73,7 @@ ( ( __clang_major__ == 3 ) && ( __clang_minor__ >= 2 ) ) ) ) ) && \ defined( __OPTIMIZE__ ) && \ !defined( __EMSCRIPTEN__ ) && \ + defined( __SSE__ ) && \ __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ #ifdef __clang__ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/pngshim.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/pngshim.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/pngshim.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/pngshim.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * PNG Bitmap glyph support. * - * Copyright (C) 2013-2019 by + * Copyright (C) 2013-2020 by * Google, Inc. * Written by Stuart Gill and Behdad Esfahbod. * @@ -21,7 +21,6 @@ #define PNGSHIM_H_ -#include <ft2build.h> #include "ttload.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -28,19 +28,21 @@ # SFNT driver sources (i.e., C files) # -SFNT_DRV_SRC := $(SFNT_DIR)/pngshim.c \ - $(SFNT_DIR)/sfdriver.c \ - $(SFNT_DIR)/sfobjs.c \ - $(SFNT_DIR)/sfwoff.c \ - $(SFNT_DIR)/ttbdf.c \ - $(SFNT_DIR)/ttcmap.c \ - $(SFNT_DIR)/ttcolr.c \ - $(SFNT_DIR)/ttcpal.c \ - $(SFNT_DIR)/ttkern.c \ - $(SFNT_DIR)/ttload.c \ - $(SFNT_DIR)/ttmtx.c \ - $(SFNT_DIR)/ttpost.c \ - $(SFNT_DIR)/ttsbit.c +SFNT_DRV_SRC := $(SFNT_DIR)/pngshim.c \ + $(SFNT_DIR)/sfdriver.c \ + $(SFNT_DIR)/sfobjs.c \ + $(SFNT_DIR)/sfwoff.c \ + $(SFNT_DIR)/sfwoff2.c \ + $(SFNT_DIR)/ttbdf.c \ + $(SFNT_DIR)/ttcmap.c \ + $(SFNT_DIR)/ttcolr.c \ + $(SFNT_DIR)/ttcpal.c \ + $(SFNT_DIR)/ttkern.c \ + $(SFNT_DIR)/ttload.c \ + $(SFNT_DIR)/ttmtx.c \ + $(SFNT_DIR)/ttpost.c \ + $(SFNT_DIR)/ttsbit.c \ + $(SFNT_DIR)/woff2tags.c # SFNT driver headers # diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfdriver.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfdriver.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfdriver.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfdriver.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * High-level SFNT driver interface (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_SFNT_H -#include FT_INTERNAL_OBJECTS_H -#include FT_TRUETYPE_IDS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/sfnt.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/ttnameid.h> #include "sfdriver.h" #include "ttload.h" @@ -43,21 +42,21 @@ #ifdef TT_CONFIG_OPTION_BDF #include "ttbdf.h" -#include FT_SERVICE_BDF_H +#include <freetype/internal/services/svbdf.h> #endif #include "ttcmap.h" #include "ttkern.h" #include "ttmtx.h" -#include FT_SERVICE_GLYPH_DICT_H -#include FT_SERVICE_POSTSCRIPT_NAME_H -#include FT_SERVICE_SFNT_H -#include FT_SERVICE_TT_CMAP_H +#include <freetype/internal/services/svgldict.h> +#include <freetype/internal/services/svpostnm.h> +#include <freetype/internal/services/svsfnt.h> +#include <freetype/internal/services/svttcmap.h> #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include FT_MULTIPLE_MASTERS_H -#include FT_SERVICE_MULTIPLE_MASTERS_H +#include <freetype/ftmm.h> +#include <freetype/internal/services/svmm.h> #endif @@ -195,7 +194,7 @@ else if ( (FT_ULong)face->num_glyphs < FT_UINT_MAX ) max_gid = (FT_UInt)face->num_glyphs; else - FT_TRACE0(( "Ignore glyph names for invalid GID 0x%08x - 0x%08x\n", + FT_TRACE0(( "Ignore glyph names for invalid GID 0x%08x - 0x%08lx\n", FT_UINT_MAX, face->num_glyphs )); for ( i = 0; i < max_gid; i++ ) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfdriver.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfdriver.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfdriver.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfdriver.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * High-level SFNT driver interface (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define SFDRIVER_H_ -#include <ft2build.h> -#include FT_MODULE_H +#include <freetype/ftmodapi.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sferrors.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sferrors.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sferrors.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sferrors.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * SFNT error codes (specification only). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -25,7 +25,7 @@ #ifndef SFERRORS_H_ #define SFERRORS_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -33,7 +33,7 @@ #define FT_ERR_PREFIX SFNT_Err_ #define FT_ERR_BASE FT_Mod_Err_SFNT -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* SFERRORS_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfnt.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfnt.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfnt.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfnt.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Single object library component. * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,12 +17,12 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "pngshim.c" #include "sfdriver.c" #include "sfobjs.c" #include "sfwoff.c" +#include "sfwoff2.c" #include "ttbdf.c" #include "ttcmap.c" #include "ttcolr.c" @@ -33,6 +33,7 @@ #include "ttmtx.c" #include "ttpost.c" #include "ttsbit.c" +#include "woff2tags.c" /* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfntpic.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfntpic.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfntpic.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfntpic.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,143 +0,0 @@ -/***************************************************************************/ -/* */ -/* sfntpic.c */ -/* */ -/* The FreeType position independent code services for sfnt module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_OBJECTS_H -#include "sfntpic.h" -#include "sferrors.h" - - -#ifdef FT_CONFIG_OPTION_PIC - - /* forward declaration of PIC init functions from sfdriver.c */ - FT_Error - FT_Create_Class_sfnt_services( FT_Library library, - FT_ServiceDescRec** output_class ); - void - FT_Destroy_Class_sfnt_services( FT_Library library, - FT_ServiceDescRec* clazz ); - void - FT_Init_Class_sfnt_service_bdf( FT_Service_BDFRec* clazz ); - void - FT_Init_Class_sfnt_interface( FT_Library library, - SFNT_Interface* clazz ); - void - FT_Init_Class_sfnt_service_glyph_dict( - FT_Library library, - FT_Service_GlyphDictRec* clazz ); - void - FT_Init_Class_sfnt_service_ps_name( - FT_Library library, - FT_Service_PsFontNameRec* clazz ); - void - FT_Init_Class_tt_service_get_cmap_info( - FT_Library library, - FT_Service_TTCMapsRec* clazz ); - void - FT_Init_Class_sfnt_service_sfnt_table( - FT_Service_SFNT_TableRec* clazz ); - - - /* forward declaration of PIC init functions from ttcmap.c */ - FT_Error - FT_Create_Class_tt_cmap_classes( FT_Library library, - TT_CMap_Class** output_class ); - void - FT_Destroy_Class_tt_cmap_classes( FT_Library library, - TT_CMap_Class* clazz ); - - - void - sfnt_module_class_pic_free( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Memory memory = library->memory; - - - if ( pic_container->sfnt ) - { - sfntModulePIC* container = (sfntModulePIC*)pic_container->sfnt; - - - if ( container->sfnt_services ) - FT_Destroy_Class_sfnt_services( library, - container->sfnt_services ); - container->sfnt_services = NULL; - - if ( container->tt_cmap_classes ) - FT_Destroy_Class_tt_cmap_classes( library, - container->tt_cmap_classes ); - container->tt_cmap_classes = NULL; - - FT_FREE( container ); - pic_container->sfnt = NULL; - } - } - - - FT_Error - sfnt_module_class_pic_init( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Error error = FT_Err_Ok; - sfntModulePIC* container = NULL; - FT_Memory memory = library->memory; - - - /* allocate pointer, clear and set global container pointer */ - if ( FT_ALLOC( container, sizeof ( *container ) ) ) - return error; - FT_MEM_SET( container, 0, sizeof ( *container ) ); - pic_container->sfnt = container; - - /* initialize pointer table - */ - /* this is how the module usually expects this data */ - error = FT_Create_Class_sfnt_services( library, - &container->sfnt_services ); - if ( error ) - goto Exit; - - error = FT_Create_Class_tt_cmap_classes( library, - &container->tt_cmap_classes ); - if ( error ) - goto Exit; - - FT_Init_Class_sfnt_service_glyph_dict( - library, &container->sfnt_service_glyph_dict ); - FT_Init_Class_sfnt_service_ps_name( - library, &container->sfnt_service_ps_name ); - FT_Init_Class_tt_service_get_cmap_info( - library, &container->tt_service_get_cmap_info ); - FT_Init_Class_sfnt_service_sfnt_table( - &container->sfnt_service_sfnt_table ); -#ifdef TT_CONFIG_OPTION_BDF - FT_Init_Class_sfnt_service_bdf( &container->sfnt_service_bdf ); -#endif - FT_Init_Class_sfnt_interface( library, &container->sfnt_interface ); - - Exit: - if ( error ) - sfnt_module_class_pic_free( library ); - return error; - } - -#endif /* FT_CONFIG_OPTION_PIC */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfntpic.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfntpic.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfntpic.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfntpic.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,112 +0,0 @@ -/***************************************************************************/ -/* */ -/* sfntpic.h */ -/* */ -/* The FreeType position independent code services for sfnt module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef SFNTPIC_H_ -#define SFNTPIC_H_ - - -#include FT_INTERNAL_PIC_H - - -#ifndef FT_CONFIG_OPTION_PIC - -#define SFNT_SERVICES_GET sfnt_services -#define SFNT_SERVICE_GLYPH_DICT_GET sfnt_service_glyph_dict -#define SFNT_SERVICE_PS_NAME_GET sfnt_service_ps_name -#define TT_SERVICE_CMAP_INFO_GET tt_service_get_cmap_info -#define TT_CMAP_CLASSES_GET tt_cmap_classes -#define SFNT_SERVICE_SFNT_TABLE_GET sfnt_service_sfnt_table -#define SFNT_SERVICE_BDF_GET sfnt_service_bdf -#define SFNT_INTERFACE_GET sfnt_interface - -#else /* FT_CONFIG_OPTION_PIC */ - - /* some include files required for members of sfntModulePIC */ -#include FT_SERVICE_GLYPH_DICT_H -#include FT_SERVICE_POSTSCRIPT_NAME_H -#include FT_SERVICE_SFNT_H -#include FT_SERVICE_TT_CMAP_H - -#ifdef TT_CONFIG_OPTION_BDF -#include "ttbdf.h" -#include FT_SERVICE_BDF_H -#endif - -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_SFNT_H -#include "ttcmap.h" - - -FT_BEGIN_HEADER - - typedef struct sfntModulePIC_ - { - FT_ServiceDescRec* sfnt_services; - FT_Service_GlyphDictRec sfnt_service_glyph_dict; - FT_Service_PsFontNameRec sfnt_service_ps_name; - FT_Service_TTCMapsRec tt_service_get_cmap_info; - TT_CMap_Class* tt_cmap_classes; - FT_Service_SFNT_TableRec sfnt_service_sfnt_table; -#ifdef TT_CONFIG_OPTION_BDF - FT_Service_BDFRec sfnt_service_bdf; -#endif - SFNT_Interface sfnt_interface; - - } sfntModulePIC; - - -#define GET_PIC( lib ) \ - ( (sfntModulePIC*)( (lib)->pic_container.sfnt ) ) - -#define SFNT_SERVICES_GET \ - ( GET_PIC( library )->sfnt_services ) -#define SFNT_SERVICE_GLYPH_DICT_GET \ - ( GET_PIC( library )->sfnt_service_glyph_dict ) -#define SFNT_SERVICE_PS_NAME_GET \ - ( GET_PIC( library )->sfnt_service_ps_name ) -#define TT_SERVICE_CMAP_INFO_GET \ - ( GET_PIC( library )->tt_service_get_cmap_info ) -#define TT_CMAP_CLASSES_GET \ - ( GET_PIC( library )->tt_cmap_classes ) -#define SFNT_SERVICE_SFNT_TABLE_GET \ - ( GET_PIC( library )->sfnt_service_sfnt_table ) -#define SFNT_SERVICE_BDF_GET \ - ( GET_PIC( library )->sfnt_service_bdf ) -#define SFNT_INTERFACE_GET \ - ( GET_PIC( library )->sfnt_interface ) - - - /* see sfntpic.c for the implementation */ - void - sfnt_module_class_pic_free( FT_Library library ); - - FT_Error - sfnt_module_class_pic_init( FT_Library library ); - - -FT_END_HEADER - -#endif /* FT_CONFIG_OPTION_PIC */ - - /* */ - -#endif /* SFNTPIC_H_ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfobjs.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfobjs.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfobjs.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfobjs.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * SFNT object management (base). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,22 +16,22 @@ */ -#include <ft2build.h> #include "sfobjs.h" #include "ttload.h" #include "ttcmap.h" #include "ttkern.h" #include "sfwoff.h" -#include FT_INTERNAL_SFNT_H -#include FT_INTERNAL_DEBUG_H -#include FT_TRUETYPE_IDS_H -#include FT_TRUETYPE_TAGS_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_SFNT_NAMES_H +#include "sfwoff2.h" +#include <freetype/internal/sfnt.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/ttnameid.h> +#include <freetype/tttags.h> +#include <freetype/internal/services/svpscmap.h> +#include <freetype/ftsnames.h> #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include FT_SERVICE_MULTIPLE_MASTERS_H -#include FT_SERVICE_METRICS_VARIATIONS_H +#include <freetype/internal/services/svmm.h> +#include <freetype/internal/services/svmetric.h> #endif #include "sferrors.h" @@ -341,7 +341,9 @@ /* synthesized into a TTC with one offset table. */ static FT_Error sfnt_open_font( FT_Stream stream, - TT_Face face ) + TT_Face face, + FT_Int* face_instance_index, + FT_Long* woff2_num_faces ) { FT_Memory memory = stream->memory; FT_Error error; @@ -385,6 +387,25 @@ goto retry; } + if ( tag == TTAG_wOF2 ) + { + FT_TRACE2(( "sfnt_open_font: file is a WOFF2; synthesizing SFNT\n" )); + + if ( FT_STREAM_SEEK( offset ) ) + return error; + + error = woff2_open_font( stream, + face, + face_instance_index, + woff2_num_faces ); + if ( error ) + return error; + + /* Swap out stream and retry! */ + stream = face->root.stream; + goto retry; + } + if ( tag != 0x00010000UL && tag != TTAG_ttcf && tag != TTAG_OTTO && @@ -461,9 +482,10 @@ FT_Parameter* params ) { FT_Error error; - FT_Library library = face->root.driver->root.library; + FT_Library library = face->root.driver->root.library; SFNT_Service sfnt; FT_Int face_index; + FT_Long woff2_num_faces = 0; /* for now, parameters are unused */ @@ -514,15 +536,18 @@ FT_TRACE2(( "SFNT driver\n" )); - error = sfnt_open_font( stream, face ); + error = sfnt_open_font( stream, + face, + &face_instance_index, + &woff2_num_faces ); if ( error ) return error; /* Stream may have changed in sfnt_open_font. */ stream = face->root.stream; - FT_TRACE2(( "sfnt_init_face: %08p (index %d)\n", - face, + FT_TRACE2(( "sfnt_init_face: %p (index %d)\n", + (void *)face, face_instance_index )); face_index = FT_ABS( face_instance_index ) & 0xFFFF; @@ -689,6 +714,10 @@ face->root.num_faces = face->ttc_header.count; face->root.face_index = face_instance_index; + /* `num_faces' for a WOFF2 needs to be handled separately. */ + if ( woff2_num_faces ) + face->root.num_faces = woff2_num_faces; + return error; } @@ -791,7 +820,7 @@ /* it doesn't contain outlines. */ /* */ - FT_TRACE2(( "sfnt_load_face: %08p\n\n", face )); + FT_TRACE2(( "sfnt_load_face: %p\n\n", (void *)face )); /* do we have outlines in there? */ #ifdef FT_CONFIG_OPTION_INCREMENTAL diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfobjs.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfobjs.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfobjs.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfobjs.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * SFNT object management (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,8 @@ #define SFOBJS_H_ -#include <ft2build.h> -#include FT_INTERNAL_SFNT_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/internal/sfnt.h> +#include <freetype/internal/ftobjs.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * WOFF format management (base). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,12 +16,11 @@ */ -#include <ft2build.h> #include "sfwoff.h" -#include FT_TRUETYPE_TAGS_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_GZIP_H +#include <freetype/tttags.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/ftgzip.h> /************************************************************************** @@ -371,18 +370,18 @@ sfnt + table->OrigOffset, &output_len, stream->cursor, table->CompLength ); if ( error ) - goto Exit; + goto Exit1; if ( output_len != table->OrigLength ) { FT_ERROR(( "woff_font_open: compressed table length mismatch\n" )); error = FT_THROW( Invalid_Table ); - goto Exit; + goto Exit1; } #else /* !FT_CONFIG_OPTION_USE_ZLIB */ error = FT_THROW( Unimplemented_Feature ); - goto Exit; + goto Exit1; #endif /* !FT_CONFIG_OPTION_USE_ZLIB */ } @@ -424,6 +423,10 @@ } return error; + + Exit1: + FT_FRAME_EXIT(); + goto Exit; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * WOFFF format management (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,8 @@ #define SFWOFF_H_ -#include <ft2build.h> -#include FT_INTERNAL_SFNT_H -#include FT_INTERNAL_OBJECTS_H +#include <freetype/internal/sfnt.h> +#include <freetype/internal/ftobjs.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff2.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff2.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff2.c 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff2.c 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,2337 @@ +/**************************************************************************** + * + * sfwoff2.c + * + * WOFF2 format management (base). + * + * Copyright (C) 2019-2020 by + * Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + +#include "sfwoff2.h" +#include "woff2tags.h" +#include <freetype/tttags.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> + + +#ifdef FT_CONFIG_OPTION_USE_BROTLI + +#include <brotli/decode.h> + +#endif + + + /************************************************************************** + * + * The macro FT_COMPONENT is used in trace mode. It is an implicit + * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log + * messages during execution. + */ +#undef FT_COMPONENT +#define FT_COMPONENT sfwoff2 + + +#define READ_255USHORT( var ) FT_SET_ERROR( Read255UShort( stream, &var ) ) + +#define READ_BASE128( var ) FT_SET_ERROR( ReadBase128( stream, &var ) ) + + /* `var' should be FT_ULong */ +#define ROUND4( var ) ( ( var + 3 ) & ~3UL ) + +#define WRITE_USHORT( p, v ) \ + do \ + { \ + *(p)++ = (FT_Byte)( (v) >> 8 ); \ + *(p)++ = (FT_Byte)( (v) >> 0 ); \ + \ + } while ( 0 ) + +#define WRITE_ULONG( p, v ) \ + do \ + { \ + *(p)++ = (FT_Byte)( (v) >> 24 ); \ + *(p)++ = (FT_Byte)( (v) >> 16 ); \ + *(p)++ = (FT_Byte)( (v) >> 8 ); \ + *(p)++ = (FT_Byte)( (v) >> 0 ); \ + \ + } while ( 0 ) + +#define WRITE_SHORT( p, v ) \ + do \ + { \ + *(p)++ = (FT_Byte)( (v) >> 8 ); \ + *(p)++ = (FT_Byte)( (v) >> 0 ); \ + \ + } while ( 0 ) + +#define WRITE_SFNT_BUF( buf, s ) \ + write_buf( &sfnt, sfnt_size, &dest_offset, buf, s, memory ) + +#define WRITE_SFNT_BUF_AT( offset, buf, s ) \ + write_buf( &sfnt, sfnt_size, &offset, buf, s, memory ) + +#define N_CONTOUR_STREAM 0 +#define N_POINTS_STREAM 1 +#define FLAG_STREAM 2 +#define GLYPH_STREAM 3 +#define COMPOSITE_STREAM 4 +#define BBOX_STREAM 5 +#define INSTRUCTION_STREAM 6 + + + static void + stream_close( FT_Stream stream ) + { + FT_Memory memory = stream->memory; + + + FT_FREE( stream->base ); + + stream->size = 0; + stream->base = NULL; + stream->close = NULL; + } + + + FT_CALLBACK_DEF( int ) + compare_tags( const void* a, + const void* b ) + { + WOFF2_Table table1 = *(WOFF2_Table*)a; + WOFF2_Table table2 = *(WOFF2_Table*)b; + + FT_ULong tag1 = table1->Tag; + FT_ULong tag2 = table2->Tag; + + + if ( tag1 > tag2 ) + return 1; + else if ( tag1 < tag2 ) + return -1; + else + return 0; + } + + + static FT_Error + Read255UShort( FT_Stream stream, + FT_UShort* value ) + { + const FT_Byte oneMoreByteCode1 = 255; + const FT_Byte oneMoreByteCode2 = 254; + const FT_Byte wordCode = 253; + const FT_UShort lowestUCode = 253; + + FT_Error error = FT_Err_Ok; + FT_Byte code; + FT_Byte result_byte = 0; + FT_UShort result_short = 0; + + + if ( FT_READ_BYTE( code ) ) + return error; + if ( code == wordCode ) + { + /* Read next two bytes and store `FT_UShort' value. */ + if ( FT_READ_USHORT( result_short ) ) + return error; + *value = result_short; + return FT_Err_Ok; + } + else if ( code == oneMoreByteCode1 ) + { + if ( FT_READ_BYTE( result_byte ) ) + return error; + *value = result_byte + lowestUCode; + return FT_Err_Ok; + } + else if ( code == oneMoreByteCode2 ) + { + if ( FT_READ_BYTE( result_byte ) ) + return error; + *value = result_byte + lowestUCode * 2; + return FT_Err_Ok; + } + else + { + *value = code; + return FT_Err_Ok; + } + } + + + static FT_Error + ReadBase128( FT_Stream stream, + FT_ULong* value ) + { + FT_ULong result = 0; + FT_Int i; + FT_Byte code; + FT_Error error = FT_Err_Ok; + + + for ( i = 0; i < 5; ++i ) + { + code = 0; + if ( FT_READ_BYTE( code ) ) + return error; + + /* Leading zeros are invalid. */ + if ( i == 0 && code == 0x80 ) + return FT_THROW( Invalid_Table ); + + /* If any of top seven bits are set then we're about to overflow. */ + if ( result & 0xfe000000 ) + return FT_THROW( Invalid_Table ); + + result = ( result << 7 ) | ( code & 0x7f ); + + /* Spin until most significant bit of data byte is false. */ + if ( ( code & 0x80 ) == 0 ) + { + *value = result; + return FT_Err_Ok; + } + } + + /* Make sure not to exceed the size bound. */ + return FT_THROW( Invalid_Table ); + } + + + /* Extend memory of `dst_bytes' buffer and copy data from `src'. */ + static FT_Error + write_buf( FT_Byte** dst_bytes, + FT_ULong* dst_size, + FT_ULong* offset, + FT_Byte* src, + FT_ULong size, + FT_Memory memory ) + { + FT_Error error = FT_Err_Ok; + /* We are reallocating memory for `dst', so its pointer may change. */ + FT_Byte* dst = *dst_bytes; + + + /* Check whether we are within limits. */ + if ( ( *offset + size ) > WOFF2_DEFAULT_MAX_SIZE ) + return FT_THROW( Array_Too_Large ); + + /* Reallocate `dst'. */ + if ( ( *offset + size ) > *dst_size ) + { + FT_TRACE6(( "Reallocating %lu to %lu.\n", + *dst_size, (*offset + size) )); + if ( FT_REALLOC( dst, + (FT_ULong)( *dst_size ), + (FT_ULong)( *offset + size ) ) ) + goto Exit; + + *dst_size = *offset + size; + } + + /* Copy data. */ + ft_memcpy( dst + *offset, src, size ); + + *offset += size; + /* Set pointer of `dst' to its correct value. */ + *dst_bytes = dst; + + Exit: + return error; + } + + + /* Pad buffer to closest multiple of 4. */ + static FT_Error + pad4( FT_Byte** sfnt_bytes, + FT_ULong* sfnt_size, + FT_ULong* out_offset, + FT_Memory memory ) + { + FT_Byte* sfnt = *sfnt_bytes; + FT_ULong dest_offset = *out_offset; + + FT_Byte zeroes[] = { 0, 0, 0 }; + FT_ULong pad_bytes; + + + if ( dest_offset + 3 < dest_offset ) + return FT_THROW( Invalid_Table ); + + pad_bytes = ROUND4( dest_offset ) - dest_offset; + if ( pad_bytes > 0 ) + { + if ( WRITE_SFNT_BUF( &zeroes[0], pad_bytes ) ) + return FT_THROW( Invalid_Table ); + } + + *sfnt_bytes = sfnt; + *out_offset = dest_offset; + return FT_Err_Ok; + } + + + /* Calculate table checksum of `buf'. */ + static FT_ULong + compute_ULong_sum( FT_Byte* buf, + FT_ULong size ) + { + FT_ULong checksum = 0; + FT_ULong aligned_size = size & ~3UL; + FT_ULong i; + FT_ULong v; + + + for ( i = 0; i < aligned_size; i += 4 ) + checksum += ( (FT_ULong)buf[i ] << 24 ) | + ( (FT_ULong)buf[i + 1] << 16 ) | + ( (FT_ULong)buf[i + 2] << 8 ) | + ( (FT_ULong)buf[i + 3] << 0 ); + + /* If size is not aligned to 4, treat as if it is padded with 0s. */ + if ( size != aligned_size ) + { + v = 0; + for ( i = aligned_size ; i < size; ++i ) + v |= (FT_ULong)buf[i] << ( 24 - 8 * ( i & 3 ) ); + checksum += v; + } + + return checksum; + } + + + static FT_Error + woff2_decompress( FT_Byte* dst, + FT_ULong dst_size, + const FT_Byte* src, + FT_ULong src_size ) + { +#ifdef FT_CONFIG_OPTION_USE_BROTLI + + /* this cast is only of importance on 32bit systems; */ + /* we don't validate it */ + FT_Offset uncompressed_size = (FT_Offset)dst_size; + BrotliDecoderResult result; + + + result = BrotliDecoderDecompress( src_size, + src, + &uncompressed_size, + dst ); + + if ( result != BROTLI_DECODER_RESULT_SUCCESS || + uncompressed_size != dst_size ) + { + FT_ERROR(( "woff2_decompress: Stream length mismatch.\n" )); + return FT_THROW( Invalid_Table ); + } + + FT_TRACE2(( "woff2_decompress: Brotli stream decompressed.\n" )); + return FT_Err_Ok; + +#else /* !FT_CONFIG_OPTION_USE_BROTLI */ + + FT_ERROR(( "woff2_decompress: Brotli support not available.\n" )); + return FT_THROW( Unimplemented_Feature ); + +#endif /* !FT_CONFIG_OPTION_USE_BROTLI */ + } + + + static WOFF2_Table + find_table( WOFF2_Table* tables, + FT_UShort num_tables, + FT_ULong tag ) + { + FT_Int i; + + + for ( i = 0; i < num_tables; i++ ) + { + if ( tables[i]->Tag == tag ) + return tables[i]; + } + return NULL; + } + + + /* Read `numberOfHMetrics' field from `hhea' table. */ + static FT_Error + read_num_hmetrics( FT_Stream stream, + FT_UShort* num_hmetrics ) + { + FT_Error error = FT_Err_Ok; + FT_UShort num_metrics; + + + if ( FT_STREAM_SKIP( 34 ) ) + return FT_THROW( Invalid_Table ); + + if ( FT_READ_USHORT( num_metrics ) ) + return FT_THROW( Invalid_Table ); + + *num_hmetrics = num_metrics; + + return error; + } + + + /* An auxiliary function for overflow-safe addition. */ + static FT_Int + with_sign( FT_Byte flag, + FT_Int base_val ) + { + /* Precondition: 0 <= base_val < 65536 (to avoid overflow). */ + return ( flag & 1 ) ? base_val : -base_val; + } + + + /* An auxiliary function for overflow-safe addition. */ + static FT_Int + safe_int_addition( FT_Int a, + FT_Int b, + FT_Int* result ) + { + if ( ( ( a > 0 ) && ( b > FT_INT_MAX - a ) ) || + ( ( a < 0 ) && ( b < FT_INT_MIN - a ) ) ) + return FT_THROW( Invalid_Table ); + + *result = a + b; + return FT_Err_Ok; + } + + + /* + * Decode variable-length (flag, xCoordinate, yCoordinate) triplet for a + * simple glyph. See + * + * https://www.w3.org/TR/WOFF2/#triplet_decoding + */ + static FT_Error + triplet_decode( const FT_Byte* flags_in, + const FT_Byte* in, + FT_ULong in_size, + FT_ULong n_points, + WOFF2_Point result, + FT_ULong* in_bytes_used ) + { + FT_Int x = 0; + FT_Int y = 0; + FT_Int dx; + FT_Int dy; + FT_Int b0, b1, b2; + + FT_ULong triplet_index = 0; + FT_ULong data_bytes; + + FT_UInt i; + + + if ( n_points > in_size ) + return FT_THROW( Invalid_Table ); + + for ( i = 0; i < n_points; ++i ) + { + FT_Byte flag = flags_in[i]; + FT_Bool on_curve = !( flag >> 7 ); + + + flag &= 0x7f; + if ( flag < 84 ) + data_bytes = 1; + else if ( flag < 120 ) + data_bytes = 2; + else if ( flag < 124 ) + data_bytes = 3; + else + data_bytes = 4; + + /* Overflow checks */ + if ( triplet_index + data_bytes > in_size || + triplet_index + data_bytes < triplet_index ) + return FT_THROW( Invalid_Table ); + + if ( flag < 10 ) + { + dx = 0; + dy = with_sign( flag, + ( ( flag & 14 ) << 7 ) + in[triplet_index] ); + } + else if ( flag < 20 ) + { + dx = with_sign( flag, + ( ( ( flag - 10 ) & 14 ) << 7 ) + + in[triplet_index] ); + dy = 0; + } + else if ( flag < 84 ) + { + b0 = flag - 20; + b1 = in[triplet_index]; + dx = with_sign( flag, + 1 + ( b0 & 0x30 ) + ( b1 >> 4 ) ); + dy = with_sign( flag >> 1, + 1 + ( ( b0 & 0x0c ) << 2 ) + ( b1 & 0x0f ) ); + } + else if ( flag < 120 ) + { + b0 = flag - 84; + dx = with_sign( flag, + 1 + ( ( b0 / 12 ) << 8 ) + in[triplet_index] ); + dy = with_sign( flag >> 1, + 1 + ( ( ( b0 % 12 ) >> 2 ) << 8 ) + + in[triplet_index + 1] ); + } + else if ( flag < 124 ) + { + b2 = in[triplet_index + 1]; + dx = with_sign( flag, + ( in[triplet_index] << 4 ) + ( b2 >> 4 ) ); + dy = with_sign( flag >> 1, + ( ( b2 & 0x0f ) << 8 ) + in[triplet_index + 2] ); + } + else + { + dx = with_sign( flag, + ( in[triplet_index] << 8 ) + + in[triplet_index + 1] ); + dy = with_sign( flag >> 1, + ( in[triplet_index + 2] << 8 ) + + in[triplet_index + 3] ); + } + + triplet_index += data_bytes; + + if ( safe_int_addition( x, dx, &x ) ) + return FT_THROW( Invalid_Table ); + + if ( safe_int_addition( y, dy, &y ) ) + return FT_THROW( Invalid_Table ); + + result[i].x = x; + result[i].y = y; + result[i].on_curve = on_curve; + } + + *in_bytes_used = triplet_index; + return FT_Err_Ok; + } + + + /* Store decoded points in glyph buffer. */ + static FT_Error + store_points( FT_ULong n_points, + const WOFF2_Point points, + FT_UShort n_contours, + FT_UShort instruction_len, + FT_Byte* dst, + FT_ULong dst_size, + FT_ULong* glyph_size ) + { + FT_UInt flag_offset = 10 + ( 2 * n_contours ) + 2 + instruction_len; + FT_Byte last_flag = 0xFFU; + FT_Byte repeat_count = 0; + FT_Int last_x = 0; + FT_Int last_y = 0; + FT_UInt x_bytes = 0; + FT_UInt y_bytes = 0; + FT_UInt xy_bytes; + FT_UInt i; + FT_UInt x_offset; + FT_UInt y_offset; + FT_Byte* pointer; + + + for ( i = 0; i < n_points; ++i ) + { + const WOFF2_PointRec point = points[i]; + + FT_Byte flag = point.on_curve ? GLYF_ON_CURVE : 0; + FT_Int dx = point.x - last_x; + FT_Int dy = point.y - last_y; + + + if ( dx == 0 ) + flag |= GLYF_THIS_X_IS_SAME; + else if ( dx > -256 && dx < 256 ) + { + flag |= GLYF_X_SHORT | ( dx > 0 ? GLYF_THIS_X_IS_SAME : 0 ); + x_bytes += 1; + } + else + x_bytes += 2; + + if ( dy == 0 ) + flag |= GLYF_THIS_Y_IS_SAME; + else if ( dy > -256 && dy < 256 ) + { + flag |= GLYF_Y_SHORT | ( dy > 0 ? GLYF_THIS_Y_IS_SAME : 0 ); + y_bytes += 1; + } + else + y_bytes += 2; + + if ( flag == last_flag && repeat_count != 255 ) + { + dst[flag_offset - 1] |= GLYF_REPEAT; + repeat_count++; + } + else + { + if ( repeat_count != 0 ) + { + if ( flag_offset >= dst_size ) + return FT_THROW( Invalid_Table ); + + dst[flag_offset++] = repeat_count; + } + if ( flag_offset >= dst_size ) + return FT_THROW( Invalid_Table ); + + dst[flag_offset++] = flag; + repeat_count = 0; + } + + last_x = point.x; + last_y = point.y; + last_flag = flag; + } + + if ( repeat_count != 0 ) + { + if ( flag_offset >= dst_size ) + return FT_THROW( Invalid_Table ); + + dst[flag_offset++] = repeat_count; + } + + xy_bytes = x_bytes + y_bytes; + if ( xy_bytes < x_bytes || + flag_offset + xy_bytes < flag_offset || + flag_offset + xy_bytes > dst_size ) + return FT_THROW( Invalid_Table ); + + x_offset = flag_offset; + y_offset = flag_offset + x_bytes; + last_x = 0; + last_y = 0; + + for ( i = 0; i < n_points; ++i ) + { + FT_Int dx = points[i].x - last_x; + FT_Int dy = points[i].y - last_y; + + + if ( dx == 0 ) + ; + else if ( dx > -256 && dx < 256 ) + dst[x_offset++] = (FT_Byte)FT_ABS( dx ); + else + { + pointer = dst + x_offset; + WRITE_SHORT( pointer, dx ); + x_offset += 2; + } + + last_x += dx; + + if ( dy == 0 ) + ; + else if ( dy > -256 && dy < 256 ) + dst[y_offset++] = (FT_Byte)FT_ABS( dy ); + else + { + pointer = dst + y_offset; + WRITE_SHORT( pointer, dy ); + y_offset += 2; + } + + last_y += dy; + } + + *glyph_size = y_offset; + return FT_Err_Ok; + } + + + static void + compute_bbox( FT_ULong n_points, + const WOFF2_Point points, + FT_Byte* dst, + FT_UShort* src_x_min ) + { + FT_Int x_min = 0; + FT_Int y_min = 0; + FT_Int x_max = 0; + FT_Int y_max = 0; + + FT_UInt i; + + FT_ULong offset; + FT_Byte* pointer; + + + if ( n_points > 0 ) + { + x_min = points[0].x; + y_min = points[0].y; + x_max = points[0].x; + y_max = points[0].y; + } + + for ( i = 1; i < n_points; ++i ) + { + FT_Int x = points[i].x; + FT_Int y = points[i].y; + + + x_min = FT_MIN( x, x_min ); + y_min = FT_MIN( y, y_min ); + x_max = FT_MAX( x, x_max ); + y_max = FT_MAX( y, y_max ); + } + + /* Write values to `glyf' record. */ + offset = 2; + pointer = dst + offset; + + WRITE_SHORT( pointer, x_min ); + WRITE_SHORT( pointer, y_min ); + WRITE_SHORT( pointer, x_max ); + WRITE_SHORT( pointer, y_max ); + + *src_x_min = (FT_UShort)x_min; + } + + + static FT_Error + compositeGlyph_size( FT_Stream stream, + FT_ULong offset, + FT_ULong* size, + FT_Bool* have_instructions ) + { + FT_Error error = FT_Err_Ok; + FT_ULong start_offset = offset; + FT_Bool we_have_inst = FALSE; + FT_UShort flags = FLAG_MORE_COMPONENTS; + + + if ( FT_STREAM_SEEK( start_offset ) ) + goto Exit; + while ( flags & FLAG_MORE_COMPONENTS ) + { + FT_ULong arg_size; + + + if ( FT_READ_USHORT( flags ) ) + goto Exit; + we_have_inst |= ( flags & FLAG_WE_HAVE_INSTRUCTIONS ) != 0; + /* glyph index */ + arg_size = 2; + if ( flags & FLAG_ARG_1_AND_2_ARE_WORDS ) + arg_size += 4; + else + arg_size += 2; + + if ( flags & FLAG_WE_HAVE_A_SCALE ) + arg_size += 2; + else if ( flags & FLAG_WE_HAVE_AN_X_AND_Y_SCALE ) + arg_size += 4; + else if ( flags & FLAG_WE_HAVE_A_TWO_BY_TWO ) + arg_size += 8; + + if ( FT_STREAM_SKIP( arg_size ) ) + goto Exit; + } + + *size = FT_STREAM_POS() - start_offset; + *have_instructions = we_have_inst; + + Exit: + return error; + } + + + /* Store loca values (provided by `reconstruct_glyf') to output stream. */ + static FT_Error + store_loca( FT_ULong* loca_values, + FT_ULong loca_values_size, + FT_UShort index_format, + FT_ULong* checksum, + FT_Byte** sfnt_bytes, + FT_ULong* sfnt_size, + FT_ULong* out_offset, + FT_Memory memory ) + { + FT_Error error = FT_Err_Ok; + FT_Byte* sfnt = *sfnt_bytes; + FT_ULong dest_offset = *out_offset; + + FT_Byte* loca_buf = NULL; + FT_Byte* dst = NULL; + + FT_UInt i = 0; + FT_ULong loca_buf_size; + + const FT_ULong offset_size = index_format ? 4 : 2; + + + if ( ( loca_values_size << 2 ) >> 2 != loca_values_size ) + goto Fail; + + loca_buf_size = loca_values_size * offset_size; + if ( FT_NEW_ARRAY( loca_buf, loca_buf_size ) ) + goto Fail; + + dst = loca_buf; + for ( i = 0; i < loca_values_size; i++ ) + { + FT_ULong value = loca_values[i]; + + + if ( index_format ) + WRITE_ULONG( dst, value ); + else + WRITE_USHORT( dst, ( value >> 1 ) ); + } + + *checksum = compute_ULong_sum( loca_buf, loca_buf_size ); + /* Write `loca' table to sfnt buffer. */ + if ( WRITE_SFNT_BUF( loca_buf, loca_buf_size ) ) + goto Fail; + + /* Set pointer `sfnt_bytes' to its correct value. */ + *sfnt_bytes = sfnt; + *out_offset = dest_offset; + + FT_FREE( loca_buf ); + return error; + + Fail: + if ( !error ) + error = FT_THROW( Invalid_Table ); + + FT_FREE( loca_buf ); + + return error; + } + + + static FT_Error + reconstruct_glyf( FT_Stream stream, + FT_ULong* glyf_checksum, + FT_ULong* loca_checksum, + FT_Byte** sfnt_bytes, + FT_ULong* sfnt_size, + FT_ULong* out_offset, + WOFF2_Info info, + FT_Memory memory ) + { + FT_Error error = FT_Err_Ok; + FT_Byte* sfnt = *sfnt_bytes; + + /* current position in stream */ + const FT_ULong pos = FT_STREAM_POS(); + + FT_UInt num_substreams = 7; + + FT_UShort num_glyphs; + FT_UShort index_format; + FT_ULong expected_loca_length; + FT_UInt offset; + FT_UInt i; + FT_ULong points_size; + FT_ULong bitmap_length; + FT_ULong glyph_buf_size; + FT_ULong bbox_bitmap_offset; + + const FT_ULong glyf_start = *out_offset; + FT_ULong dest_offset = *out_offset; + + WOFF2_Substream substreams = NULL; + + FT_ULong* loca_values = NULL; + FT_UShort* n_points_arr = NULL; + FT_Byte* glyph_buf = NULL; + WOFF2_Point points = NULL; + + + if ( FT_NEW_ARRAY( substreams, num_substreams ) ) + goto Fail; + + if ( FT_STREAM_SKIP( 4 ) ) + goto Fail; + if ( FT_READ_USHORT( num_glyphs ) ) + goto Fail; + if ( FT_READ_USHORT( index_format ) ) + goto Fail; + + FT_TRACE4(( "num_glyphs = %u; index_format = %u\n", + num_glyphs, index_format )); + + info->num_glyphs = num_glyphs; + + /* Calculate expected length of loca and compare. */ + /* See https://www.w3.org/TR/WOFF2/#conform-mustRejectLoca */ + /* index_format = 0 => Short version `loca'. */ + /* index_format = 1 => Long version `loca'. */ + expected_loca_length = ( index_format ? 4 : 2 ) * + ( (FT_ULong)num_glyphs + 1 ); + if ( info->loca_table->dst_length != expected_loca_length ) + goto Fail; + + offset = ( 2 + num_substreams ) * 4; + if ( offset > info->glyf_table->TransformLength ) + goto Fail; + + for ( i = 0; i < num_substreams; ++i ) + { + FT_ULong substream_size; + + + if ( FT_READ_ULONG( substream_size ) ) + goto Fail; + if ( substream_size > info->glyf_table->TransformLength - offset ) + goto Fail; + + substreams[i].start = pos + offset; + substreams[i].offset = pos + offset; + substreams[i].size = substream_size; + + FT_TRACE5(( " Substream %d: offset = %lu; size = %lu;\n", + i, substreams[i].offset, substreams[i].size )); + offset += substream_size; + } + + if ( FT_NEW_ARRAY( loca_values, num_glyphs + 1 ) ) + goto Fail; + + points_size = 0; + bbox_bitmap_offset = substreams[BBOX_STREAM].offset; + + /* Size of bboxBitmap = 4 * floor((numGlyphs + 31) / 32) */ + bitmap_length = ( ( num_glyphs + 31U ) >> 5 ) << 2; + substreams[BBOX_STREAM].offset += bitmap_length; + + glyph_buf_size = WOFF2_DEFAULT_GLYPH_BUF; + if ( FT_NEW_ARRAY( glyph_buf, glyph_buf_size ) ) + goto Fail; + + if ( FT_NEW_ARRAY( info->x_mins, num_glyphs ) ) + goto Fail; + + for ( i = 0; i < num_glyphs; ++i ) + { + FT_ULong glyph_size = 0; + FT_UShort n_contours = 0; + FT_Bool have_bbox = FALSE; + FT_Byte bbox_bitmap; + FT_ULong bbox_offset; + FT_UShort x_min = 0; + + + /* Set `have_bbox'. */ + bbox_offset = bbox_bitmap_offset + ( i >> 3 ); + if ( FT_STREAM_SEEK( bbox_offset ) || + FT_READ_BYTE( bbox_bitmap ) ) + goto Fail; + if ( bbox_bitmap & ( 0x80 >> ( i & 7 ) ) ) + have_bbox = TRUE; + + /* Read value from `nContourStream'. */ + if ( FT_STREAM_SEEK( substreams[N_CONTOUR_STREAM].offset ) || + FT_READ_USHORT( n_contours ) ) + goto Fail; + substreams[N_CONTOUR_STREAM].offset += 2; + + if ( n_contours == 0xffff ) + { + /* composite glyph */ + FT_Bool have_instructions = FALSE; + FT_UShort instruction_size = 0; + FT_ULong composite_size; + FT_ULong size_needed; + FT_Byte* pointer = NULL; + + + /* Composite glyphs must have explicit bbox. */ + if ( !have_bbox ) + goto Fail; + + if ( compositeGlyph_size( stream, + substreams[COMPOSITE_STREAM].offset, + &composite_size, + &have_instructions) ) + goto Fail; + + if ( have_instructions ) + { + if ( FT_STREAM_SEEK( substreams[GLYPH_STREAM].offset ) || + READ_255USHORT( instruction_size ) ) + goto Fail; + substreams[GLYPH_STREAM].offset = FT_STREAM_POS(); + } + + size_needed = 12 + composite_size + instruction_size; + if ( glyph_buf_size < size_needed ) + { + if ( FT_RENEW_ARRAY( glyph_buf, glyph_buf_size, size_needed ) ) + goto Fail; + glyph_buf_size = size_needed; + } + + pointer = glyph_buf + glyph_size; + WRITE_USHORT( pointer, n_contours ); + glyph_size += 2; + + /* Read x_min for current glyph. */ + if ( FT_STREAM_SEEK( substreams[BBOX_STREAM].offset ) || + FT_READ_USHORT( x_min ) ) + goto Fail; + /* No increment here because we read again. */ + + if ( FT_STREAM_SEEK( substreams[BBOX_STREAM].offset ) || + FT_STREAM_READ( glyph_buf + glyph_size, 8 ) ) + goto Fail; + + substreams[BBOX_STREAM].offset += 8; + glyph_size += 8; + + if ( FT_STREAM_SEEK( substreams[COMPOSITE_STREAM].offset ) || + FT_STREAM_READ( glyph_buf + glyph_size, composite_size ) ) + goto Fail; + + substreams[COMPOSITE_STREAM].offset += composite_size; + glyph_size += composite_size; + + if ( have_instructions ) + { + pointer = glyph_buf + glyph_size; + WRITE_USHORT( pointer, instruction_size ); + glyph_size += 2; + + if ( FT_STREAM_SEEK( substreams[INSTRUCTION_STREAM].offset ) || + FT_STREAM_READ( glyph_buf + glyph_size, instruction_size ) ) + goto Fail; + + substreams[INSTRUCTION_STREAM].offset += instruction_size; + glyph_size += instruction_size; + } + } + else if ( n_contours > 0 ) + { + /* simple glyph */ + FT_ULong total_n_points = 0; + FT_UShort n_points_contour; + FT_UInt j; + FT_ULong flag_size; + FT_ULong triplet_size; + FT_ULong triplet_bytes_used; + FT_Byte* flags_buf = NULL; + FT_Byte* triplet_buf = NULL; + FT_UShort instruction_size; + FT_ULong size_needed; + FT_Int end_point; + FT_UInt contour_ix; + + FT_Byte* pointer = NULL; + + + if ( FT_NEW_ARRAY( n_points_arr, n_contours ) ) + goto Fail; + + if ( FT_STREAM_SEEK( substreams[N_POINTS_STREAM].offset ) ) + goto Fail; + + for ( j = 0; j < n_contours; ++j ) + { + if ( READ_255USHORT( n_points_contour ) ) + goto Fail; + n_points_arr[j] = n_points_contour; + /* Prevent negative/overflow. */ + if ( total_n_points + n_points_contour < total_n_points ) + goto Fail; + total_n_points += n_points_contour; + } + substreams[N_POINTS_STREAM].offset = FT_STREAM_POS(); + + flag_size = total_n_points; + if ( flag_size > substreams[FLAG_STREAM].size ) + goto Fail; + + flags_buf = stream->base + substreams[FLAG_STREAM].offset; + triplet_buf = stream->base + substreams[GLYPH_STREAM].offset; + + if ( substreams[GLYPH_STREAM].size < + ( substreams[GLYPH_STREAM].offset - + substreams[GLYPH_STREAM].start ) ) + goto Fail; + + triplet_size = substreams[GLYPH_STREAM].size - + ( substreams[GLYPH_STREAM].offset - + substreams[GLYPH_STREAM].start ); + triplet_bytes_used = 0; + + /* Create array to store point information. */ + points_size = total_n_points; + if ( FT_NEW_ARRAY( points, points_size ) ) + goto Fail; + + if ( triplet_decode( flags_buf, + triplet_buf, + triplet_size, + total_n_points, + points, + &triplet_bytes_used ) ) + goto Fail; + + substreams[FLAG_STREAM].offset += flag_size; + substreams[GLYPH_STREAM].offset += triplet_bytes_used; + + if ( FT_STREAM_SEEK( substreams[GLYPH_STREAM].offset ) || + READ_255USHORT( instruction_size ) ) + goto Fail; + + substreams[GLYPH_STREAM].offset = FT_STREAM_POS(); + + if ( total_n_points >= ( 1 << 27 ) ) + goto Fail; + + size_needed = 12 + + ( 2 * n_contours ) + + ( 5 * total_n_points ) + + instruction_size; + if ( glyph_buf_size < size_needed ) + { + if ( FT_RENEW_ARRAY( glyph_buf, glyph_buf_size, size_needed ) ) + goto Fail; + glyph_buf_size = size_needed; + } + + pointer = glyph_buf + glyph_size; + WRITE_USHORT( pointer, n_contours ); + glyph_size += 2; + + if ( have_bbox ) + { + /* Read x_min for current glyph. */ + if ( FT_STREAM_SEEK( substreams[BBOX_STREAM].offset ) || + FT_READ_USHORT( x_min ) ) + goto Fail; + /* No increment here because we read again. */ + + if ( FT_STREAM_SEEK( substreams[BBOX_STREAM].offset ) || + FT_STREAM_READ( glyph_buf + glyph_size, 8 ) ) + goto Fail; + substreams[BBOX_STREAM].offset += 8; + } + else + compute_bbox( total_n_points, points, glyph_buf, &x_min ); + + glyph_size = CONTOUR_OFFSET_END_POINT; + + pointer = glyph_buf + glyph_size; + end_point = -1; + + for ( contour_ix = 0; contour_ix < n_contours; ++contour_ix ) + { + end_point += n_points_arr[contour_ix]; + if ( end_point >= 65536 ) + goto Fail; + + WRITE_SHORT( pointer, end_point ); + glyph_size += 2; + } + + WRITE_USHORT( pointer, instruction_size ); + glyph_size += 2; + + if ( FT_STREAM_SEEK( substreams[INSTRUCTION_STREAM].offset ) || + FT_STREAM_READ( glyph_buf + glyph_size, instruction_size ) ) + goto Fail; + + substreams[INSTRUCTION_STREAM].offset += instruction_size; + glyph_size += instruction_size; + + if ( store_points( total_n_points, + points, + n_contours, + instruction_size, + glyph_buf, + glyph_buf_size, + &glyph_size ) ) + goto Fail; + + FT_FREE( points ); + FT_FREE( n_points_arr ); + } + else + { + /* Empty glyph. */ + /* Must not have a bbox. */ + if ( have_bbox ) + { + FT_ERROR(( "Empty glyph has a bbox.\n" )); + goto Fail; + } + } + + loca_values[i] = dest_offset - glyf_start; + + if ( WRITE_SFNT_BUF( glyph_buf, glyph_size ) ) + goto Fail; + + if ( pad4( &sfnt, sfnt_size, &dest_offset, memory ) ) + goto Fail; + + *glyf_checksum += compute_ULong_sum( glyph_buf, glyph_size ); + + /* Store x_mins, may be required to reconstruct `hmtx'. */ + if ( n_contours > 0 ) + info->x_mins[i] = (FT_Short)x_min; + } + + info->glyf_table->dst_length = dest_offset - info->glyf_table->dst_offset; + info->loca_table->dst_offset = dest_offset; + + /* `loca[n]' will be equal to the length of the `glyf' table. */ + loca_values[num_glyphs] = info->glyf_table->dst_length; + + if ( store_loca( loca_values, + num_glyphs + 1, + index_format, + loca_checksum, + &sfnt, + sfnt_size, + &dest_offset, + memory ) ) + goto Fail; + + info->loca_table->dst_length = dest_offset - info->loca_table->dst_offset; + + FT_TRACE4(( " loca table info:\n" )); + FT_TRACE4(( " dst_offset = %lu\n", info->loca_table->dst_offset )); + FT_TRACE4(( " dst_length = %lu\n", info->loca_table->dst_length )); + FT_TRACE4(( " checksum = %09lx\n", *loca_checksum )); + + /* Set pointer `sfnt_bytes' to its correct value. */ + *sfnt_bytes = sfnt; + *out_offset = dest_offset; + + FT_FREE( substreams ); + FT_FREE( loca_values ); + FT_FREE( n_points_arr ); + FT_FREE( glyph_buf ); + FT_FREE( points ); + + return error; + + Fail: + if ( !error ) + error = FT_THROW( Invalid_Table ); + + /* Set pointer `sfnt_bytes' to its correct value. */ + *sfnt_bytes = sfnt; + + FT_FREE( substreams ); + FT_FREE( loca_values ); + FT_FREE( n_points_arr ); + FT_FREE( glyph_buf ); + FT_FREE( points ); + + return error; + } + + + /* Get `x_mins' for untransformed `glyf' table. */ + static FT_Error + get_x_mins( FT_Stream stream, + WOFF2_Table* tables, + FT_UShort num_tables, + WOFF2_Info info, + FT_Memory memory ) + { + FT_UShort num_glyphs; + FT_UShort index_format; + FT_ULong glyf_offset; + FT_UShort glyf_offset_short; + FT_ULong loca_offset; + FT_Int i; + FT_Error error = FT_Err_Ok; + FT_ULong offset_size; + + /* At this point of time those tables might not have been read yet. */ + const WOFF2_Table maxp_table = find_table( tables, num_tables, + TTAG_maxp ); + const WOFF2_Table head_table = find_table( tables, num_tables, + TTAG_head ); + + + if ( !maxp_table ) + { + FT_ERROR(( "`maxp' table is missing.\n" )); + return FT_THROW( Invalid_Table ); + } + + if ( !head_table ) + { + FT_ERROR(( "`head' table is missing.\n" )); + return FT_THROW( Invalid_Table ); + } + + if ( !info->loca_table ) + { + FT_ERROR(( "`loca' table is missing.\n" )); + return FT_THROW( Invalid_Table ); + } + + /* Read `numGlyphs' field from `maxp' table. */ + if ( FT_STREAM_SEEK( maxp_table->src_offset ) || FT_STREAM_SKIP( 8 ) ) + return error; + + if ( FT_READ_USHORT( num_glyphs ) ) + return error; + + info->num_glyphs = num_glyphs; + + /* Read `indexToLocFormat' field from `head' table. */ + if ( FT_STREAM_SEEK( head_table->src_offset ) || + FT_STREAM_SKIP( 50 ) ) + return error; + + if ( FT_READ_USHORT( index_format ) ) + return error; + + offset_size = index_format ? 4 : 2; + + /* Create `x_mins' array. */ + if ( FT_NEW_ARRAY( info->x_mins, num_glyphs ) ) + return error; + + loca_offset = info->loca_table->src_offset; + + for ( i = 0; i < num_glyphs; ++i ) + { + if ( FT_STREAM_SEEK( loca_offset ) ) + return error; + + loca_offset += offset_size; + + if ( index_format ) + { + if ( FT_READ_ULONG( glyf_offset ) ) + return error; + } + else + { + if ( FT_READ_USHORT( glyf_offset_short ) ) + return error; + + glyf_offset = (FT_ULong)( glyf_offset_short ); + glyf_offset = glyf_offset << 1; + } + + glyf_offset += info->glyf_table->src_offset; + + if ( FT_STREAM_SEEK( glyf_offset ) || FT_STREAM_SKIP( 2 ) ) + return error; + + if ( FT_READ_SHORT( info->x_mins[i] ) ) + return error; + } + + return error; + } + + + static FT_Error + reconstruct_hmtx( FT_Stream stream, + FT_UShort num_glyphs, + FT_UShort num_hmetrics, + FT_Short* x_mins, + FT_ULong* checksum, + FT_Byte** sfnt_bytes, + FT_ULong* sfnt_size, + FT_ULong* out_offset, + FT_Memory memory ) + { + FT_Error error = FT_Err_Ok; + FT_Byte* sfnt = *sfnt_bytes; + FT_ULong dest_offset = *out_offset; + + FT_Byte hmtx_flags; + FT_Bool has_proportional_lsbs, has_monospace_lsbs; + FT_ULong hmtx_table_size; + FT_Int i; + + FT_UShort* advance_widths = NULL; + FT_Short* lsbs = NULL; + FT_Byte* hmtx_table = NULL; + FT_Byte* dst = NULL; + + + if ( FT_READ_BYTE( hmtx_flags ) ) + goto Fail; + + has_proportional_lsbs = ( hmtx_flags & 1 ) == 0; + has_monospace_lsbs = ( hmtx_flags & 2 ) == 0; + + /* Bits 2-7 are reserved and MUST be zero. */ + if ( ( hmtx_flags & 0xFC ) != 0 ) + goto Fail; + + /* Are you REALLY transformed? */ + if ( has_proportional_lsbs && has_monospace_lsbs ) + goto Fail; + + /* Cannot have a transformed `hmtx' without `glyf'. */ + if ( ( num_hmetrics > num_glyphs ) || + ( num_hmetrics < 1 ) ) + goto Fail; + + /* Must have at least one entry. */ + if ( num_hmetrics < 1 ) + goto Fail; + + if ( FT_NEW_ARRAY( advance_widths, num_hmetrics ) || + FT_NEW_ARRAY( lsbs, num_glyphs ) ) + goto Fail; + + /* Read `advanceWidth' stream. Always present. */ + for ( i = 0; i < num_hmetrics; i++ ) + { + FT_UShort advance_width; + + + if ( FT_READ_USHORT( advance_width ) ) + goto Fail; + + advance_widths[i] = advance_width; + } + + /* lsb values for proportional glyphs. */ + for ( i = 0; i < num_hmetrics; i++ ) + { + FT_Short lsb; + + + if ( has_proportional_lsbs ) + { + if ( FT_READ_SHORT( lsb ) ) + goto Fail; + } + else + lsb = x_mins[i]; + + lsbs[i] = lsb; + } + + /* lsb values for monospaced glyphs. */ + for ( i = num_hmetrics; i < num_glyphs; i++ ) + { + FT_Short lsb; + + + if ( has_monospace_lsbs ) + { + if ( FT_READ_SHORT( lsb ) ) + goto Fail; + } + else + lsb = x_mins[i]; + + lsbs[i] = lsb; + } + + /* Build the hmtx table. */ + hmtx_table_size = 2 * num_hmetrics + 2 * num_glyphs; + if ( FT_NEW_ARRAY( hmtx_table, hmtx_table_size ) ) + goto Fail; + + dst = hmtx_table; + FT_TRACE6(( "hmtx values: \n" )); + for ( i = 0; i < num_glyphs; i++ ) + { + if ( i < num_hmetrics ) + { + WRITE_SHORT( dst, advance_widths[i] ); + FT_TRACE6(( "%d ", advance_widths[i] )); + } + + WRITE_SHORT( dst, lsbs[i] ); + FT_TRACE6(( "%d ", lsbs[i] )); + } + FT_TRACE6(( "\n" )); + + *checksum = compute_ULong_sum( hmtx_table, hmtx_table_size ); + /* Write `hmtx' table to sfnt buffer. */ + if ( WRITE_SFNT_BUF( hmtx_table, hmtx_table_size ) ) + goto Fail; + + /* Set pointer `sfnt_bytes' to its correct value. */ + *sfnt_bytes = sfnt; + *out_offset = dest_offset; + + FT_FREE( advance_widths ); + FT_FREE( lsbs ); + FT_FREE( hmtx_table ); + + return error; + + Fail: + FT_FREE( advance_widths ); + FT_FREE( lsbs ); + FT_FREE( hmtx_table ); + + if ( !error ) + error = FT_THROW( Invalid_Table ); + + return error; + } + + + static FT_Error + reconstruct_font( FT_Byte* transformed_buf, + FT_ULong transformed_buf_size, + WOFF2_Table* indices, + WOFF2_Header woff2, + WOFF2_Info info, + FT_Byte** sfnt_bytes, + FT_ULong* sfnt_size, + FT_Memory memory ) + { + /* Memory management of `transformed_buf' is handled by the caller. */ + + FT_Error error = FT_Err_Ok; + FT_Stream stream = NULL; + FT_Byte* buf_cursor = NULL; + FT_Byte* table_entry = NULL; + + /* We are reallocating memory for `sfnt', so its pointer may change. */ + FT_Byte* sfnt = *sfnt_bytes; + + FT_UShort num_tables = woff2->num_tables; + FT_ULong dest_offset = 12 + num_tables * 16UL; + + FT_ULong checksum = 0; + FT_ULong loca_checksum = 0; + FT_Int nn = 0; + FT_UShort num_hmetrics = 0; + FT_ULong font_checksum = info->header_checksum; + FT_Bool is_glyf_xform = FALSE; + + FT_ULong table_entry_offset = 12; + + + /* A few table checks before reconstruction. */ + /* `glyf' must be present with `loca'. */ + info->glyf_table = find_table( indices, num_tables, TTAG_glyf ); + info->loca_table = find_table( indices, num_tables, TTAG_loca ); + + if ( ( info->glyf_table == NULL ) ^ ( info->loca_table == NULL ) ) + { + FT_ERROR(( "One of `glyf'/`loca' tables missing.\n" )); + return FT_THROW( Invalid_Table ); + } + + /* Both `glyf' and `loca' must have same transformation. */ + if ( info->glyf_table != NULL ) + { + if ( ( info->glyf_table->flags & WOFF2_FLAGS_TRANSFORM ) != + ( info->loca_table->flags & WOFF2_FLAGS_TRANSFORM ) ) + { + FT_ERROR(( "Transformation mismatch" + " between `glyf' and `loca' table." )); + return FT_THROW( Invalid_Table ); + } + } + + /* Create buffer for table entries. */ + if ( FT_NEW_ARRAY( table_entry, 16 ) ) + goto Fail; + + /* Create a stream for the uncompressed buffer. */ + if ( FT_NEW( stream ) ) + goto Fail; + FT_Stream_OpenMemory( stream, transformed_buf, transformed_buf_size ); + + FT_ASSERT( FT_STREAM_POS() == 0 ); + + /* Reconstruct/copy tables to output stream. */ + for ( nn = 0; nn < num_tables; nn++ ) + { + WOFF2_TableRec table = *( indices[nn] ); + + + FT_TRACE3(( "Seeking to %ld with table size %ld.\n", + table.src_offset, table.src_length )); + FT_TRACE3(( "Table tag: %c%c%c%c.\n", + (FT_Char)( table.Tag >> 24 ), + (FT_Char)( table.Tag >> 16 ), + (FT_Char)( table.Tag >> 8 ), + (FT_Char)( table.Tag ) )); + + if ( FT_STREAM_SEEK( table.src_offset ) ) + goto Fail; + + if ( table.src_offset + table.src_length > transformed_buf_size ) + goto Fail; + + /* Get stream size for fields of `hmtx' table. */ + if ( table.Tag == TTAG_hhea ) + { + if ( read_num_hmetrics( stream, &num_hmetrics ) ) + goto Fail; + } + + info->num_hmetrics = num_hmetrics; + + checksum = 0; + if ( ( table.flags & WOFF2_FLAGS_TRANSFORM ) != WOFF2_FLAGS_TRANSFORM ) + { + /* Check whether `head' is at least 12 bytes. */ + if ( table.Tag == TTAG_head ) + { + if ( table.src_length < 12 ) + goto Fail; + + buf_cursor = transformed_buf + table.src_offset + 8; + /* Set checkSumAdjustment = 0 */ + WRITE_ULONG( buf_cursor, 0 ); + } + + table.dst_offset = dest_offset; + + checksum = compute_ULong_sum( transformed_buf + table.src_offset, + table.src_length ); + FT_TRACE4(( "Checksum = %09lx.\n", checksum )); + + if ( WRITE_SFNT_BUF( transformed_buf + table.src_offset, + table.src_length ) ) + goto Fail; + } + else + { + FT_TRACE3(( "This table is transformed.\n" )); + + if ( table.Tag == TTAG_glyf ) + { + is_glyf_xform = TRUE; + table.dst_offset = dest_offset; + + if ( reconstruct_glyf( stream, + &checksum, + &loca_checksum, + &sfnt, + sfnt_size, + &dest_offset, + info, + memory ) ) + goto Fail; + + FT_TRACE4(( "Checksum = %09lx.\n", checksum )); + } + + else if ( table.Tag == TTAG_loca ) + checksum = loca_checksum; + + else if ( table.Tag == TTAG_hmtx ) + { + /* If glyf is not transformed and hmtx is, handle separately. */ + if ( !is_glyf_xform ) + { + if ( get_x_mins( stream, indices, num_tables, info, memory ) ) + goto Fail; + } + + table.dst_offset = dest_offset; + + if ( reconstruct_hmtx( stream, + info->num_glyphs, + info->num_hmetrics, + info->x_mins, + &checksum, + &sfnt, + sfnt_size, + &dest_offset, + memory ) ) + goto Fail; + } + else + { + /* Unknown transform. */ + FT_ERROR(( "Unknown table transform.\n" )); + goto Fail; + } + } + + font_checksum += checksum; + + buf_cursor = &table_entry[0]; + WRITE_ULONG( buf_cursor, table.Tag ); + WRITE_ULONG( buf_cursor, checksum ); + WRITE_ULONG( buf_cursor, table.dst_offset ); + WRITE_ULONG( buf_cursor, table.dst_length ); + + WRITE_SFNT_BUF_AT( table_entry_offset, table_entry, 16 ); + + /* Update checksum. */ + font_checksum += compute_ULong_sum( table_entry, 16 ); + + if ( pad4( &sfnt, sfnt_size, &dest_offset, memory ) ) + goto Fail; + + /* Sanity check. */ + if ( (FT_ULong)( table.dst_offset + table.dst_length ) > dest_offset ) + { + FT_ERROR(( "Table was partially written.\n" )); + goto Fail; + } + } + + /* Update `head' checkSumAdjustment. */ + info->head_table = find_table( indices, num_tables, TTAG_head ); + if ( !info->head_table ) + { + FT_ERROR(( "`head' table is missing.\n" )); + goto Fail; + } + + if ( info->head_table->dst_length < 12 ) + goto Fail; + + buf_cursor = sfnt + info->head_table->dst_offset + 8; + font_checksum = 0xB1B0AFBA - font_checksum; + + WRITE_ULONG( buf_cursor, font_checksum ); + + FT_TRACE2(( "Final checksum = %09lx.\n", font_checksum )); + + woff2->actual_sfnt_size = dest_offset; + + /* Set pointer of sfnt stream to its correct value. */ + *sfnt_bytes = sfnt; + + FT_FREE( table_entry ); + FT_Stream_Close( stream ); + FT_FREE( stream ); + + return error; + + Fail: + if ( !error ) + error = FT_THROW( Invalid_Table ); + + /* Set pointer of sfnt stream to its correct value. */ + *sfnt_bytes = sfnt; + + FT_FREE( table_entry ); + FT_Stream_Close( stream ); + FT_FREE( stream ); + + return error; + } + + + /* Replace `face->root.stream' with a stream containing the extracted */ + /* SFNT of a WOFF2 font. */ + + FT_LOCAL_DEF( FT_Error ) + woff2_open_font( FT_Stream stream, + TT_Face face, + FT_Int* face_instance_index, + FT_Long* num_faces ) + { + FT_Memory memory = stream->memory; + FT_Error error = FT_Err_Ok; + FT_Int face_index; + + WOFF2_HeaderRec woff2; + WOFF2_InfoRec info = { 0, 0, 0, NULL, NULL, NULL, NULL }; + WOFF2_Table tables = NULL; + WOFF2_Table* indices = NULL; + WOFF2_Table* temp_indices = NULL; + WOFF2_Table last_table; + + FT_Int nn; + FT_ULong j; + FT_ULong flags; + FT_UShort xform_version; + FT_ULong src_offset = 0; + + FT_UInt glyf_index; + FT_UInt loca_index; + FT_UInt32 file_offset; + + FT_Byte* sfnt = NULL; + FT_Stream sfnt_stream = NULL; + FT_Byte* sfnt_header; + FT_ULong sfnt_size; + + FT_Byte* uncompressed_buf = NULL; + + static const FT_Frame_Field woff2_header_fields[] = + { +#undef FT_STRUCTURE +#define FT_STRUCTURE WOFF2_HeaderRec + + FT_FRAME_START( 48 ), + FT_FRAME_ULONG ( signature ), + FT_FRAME_ULONG ( flavor ), + FT_FRAME_ULONG ( length ), + FT_FRAME_USHORT ( num_tables ), + FT_FRAME_SKIP_BYTES( 2 ), + FT_FRAME_ULONG ( totalSfntSize ), + FT_FRAME_ULONG ( totalCompressedSize ), + FT_FRAME_SKIP_BYTES( 2 * 2 ), + FT_FRAME_ULONG ( metaOffset ), + FT_FRAME_ULONG ( metaLength ), + FT_FRAME_ULONG ( metaOrigLength ), + FT_FRAME_ULONG ( privOffset ), + FT_FRAME_ULONG ( privLength ), + FT_FRAME_END + }; + + + FT_ASSERT( stream == face->root.stream ); + FT_ASSERT( FT_STREAM_POS() == 0 ); + + face_index = FT_ABS( *face_instance_index ) & 0xFFFF; + + /* Read WOFF2 Header. */ + if ( FT_STREAM_READ_FIELDS( woff2_header_fields, &woff2 ) ) + return error; + + FT_TRACE4(( "signature -> 0x%lX\n", woff2.signature )); + FT_TRACE2(( "flavor -> 0x%08lx\n", woff2.flavor )); + FT_TRACE4(( "length -> %lu\n", woff2.length )); + FT_TRACE2(( "num_tables -> %hu\n", woff2.num_tables )); + FT_TRACE4(( "totalSfntSize -> %lu\n", woff2.totalSfntSize )); + FT_TRACE4(( "metaOffset -> %lu\n", woff2.metaOffset )); + FT_TRACE4(( "metaLength -> %lu\n", woff2.metaLength )); + FT_TRACE4(( "privOffset -> %lu\n", woff2.privOffset )); + FT_TRACE4(( "privLength -> %lu\n", woff2.privLength )); + + /* Make sure we don't recurse back here. */ + if ( woff2.flavor == TTAG_wOF2 ) + return FT_THROW( Invalid_Table ); + + /* Miscellaneous checks. */ + if ( woff2.length != stream->size || + woff2.num_tables == 0 || + 48 + woff2.num_tables * 20UL >= woff2.length || + ( woff2.metaOffset == 0 && ( woff2.metaLength != 0 || + woff2.metaOrigLength != 0 ) ) || + ( woff2.metaLength != 0 && woff2.metaOrigLength == 0 ) || + ( woff2.metaOffset >= woff2.length ) || + ( woff2.length - woff2.metaOffset < woff2.metaLength ) || + ( woff2.privOffset == 0 && woff2.privLength != 0 ) || + ( woff2.privOffset >= woff2.length ) || + ( woff2.length - woff2.privOffset < woff2.privLength ) ) + { + FT_ERROR(( "woff2_open_font: invalid WOFF2 header\n" )); + return FT_THROW( Invalid_Table ); + } + + FT_TRACE2(( "woff2_open_font: WOFF2 Header is valid.\n" )); + + woff2.ttc_fonts = NULL; + + /* Read table directory. */ + if ( FT_NEW_ARRAY( tables, woff2.num_tables ) || + FT_NEW_ARRAY( indices, woff2.num_tables ) ) + goto Exit; + + FT_TRACE2(( + "\n" + " tag flags transform origLen transformLen offset\n" + " -----------------------------------------------------------\n" )); + /* " XXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX" */ + + for ( nn = 0; nn < woff2.num_tables; nn++ ) + { + WOFF2_Table table = tables + nn; + + + if ( FT_READ_BYTE( table->FlagByte ) ) + goto Exit; + + if ( ( table->FlagByte & 0x3f ) == 0x3f ) + { + if ( FT_READ_ULONG( table->Tag ) ) + goto Exit; + } + else + { + table->Tag = woff2_known_tags( table->FlagByte & 0x3f ); + if ( !table->Tag ) + { + FT_ERROR(( "woff2_open_font: Unknown table tag." )); + error = FT_THROW( Invalid_Table ); + goto Exit; + } + } + + flags = 0; + xform_version = ( table->FlagByte >> 6 ) & 0x03; + + /* 0 means xform for glyph/loca, non-0 for others. */ + if ( table->Tag == TTAG_glyf || table->Tag == TTAG_loca ) + { + if ( xform_version == 0 ) + flags |= WOFF2_FLAGS_TRANSFORM; + } + else if ( xform_version != 0 ) + flags |= WOFF2_FLAGS_TRANSFORM; + + flags |= xform_version; + + if ( READ_BASE128( table->dst_length ) ) + goto Exit; + + table->TransformLength = table->dst_length; + + if ( ( flags & WOFF2_FLAGS_TRANSFORM ) != 0 ) + { + if ( READ_BASE128( table->TransformLength ) ) + goto Exit; + + if ( table->Tag == TTAG_loca && table->TransformLength ) + { + FT_ERROR(( "woff2_open_font: Invalid loca `transformLength'.\n" )); + error = FT_THROW( Invalid_Table ); + goto Exit; + } + } + + if ( src_offset + table->TransformLength < src_offset ) + { + FT_ERROR(( "woff2_open_font: invalid WOFF2 table directory.\n" )); + error = FT_THROW( Invalid_Table ); + goto Exit; + } + + table->src_offset = src_offset; + table->src_length = table->TransformLength; + src_offset += table->TransformLength; + table->flags = flags; + + FT_TRACE2(( " %c%c%c%c %08d %08d %08ld %08ld %08ld\n", + (FT_Char)( table->Tag >> 24 ), + (FT_Char)( table->Tag >> 16 ), + (FT_Char)( table->Tag >> 8 ), + (FT_Char)( table->Tag ), + table->FlagByte & 0x3f, + ( table->FlagByte >> 6 ) & 0x03, + table->dst_length, + table->TransformLength, + table->src_offset )); + + indices[nn] = table; + } + + /* End of last table is uncompressed size. */ + last_table = indices[woff2.num_tables - 1]; + + woff2.uncompressed_size = last_table->src_offset + + last_table->src_length; + if ( woff2.uncompressed_size < last_table->src_offset ) + { + error = FT_THROW( Invalid_Table ); + goto Exit; + } + + FT_TRACE2(( "Table directory parsed.\n" )); + + /* Check for and read collection directory. */ + woff2.num_fonts = 1; + woff2.header_version = 0; + + if ( woff2.flavor == TTAG_ttcf ) + { + FT_TRACE2(( "Font is a TTC, reading collection directory.\n" )); + + if ( FT_READ_ULONG( woff2.header_version ) ) + goto Exit; + + if ( woff2.header_version != 0x00010000 && + woff2.header_version != 0x00020000 ) + { + error = FT_THROW( Invalid_Table ); + goto Exit; + } + + if ( READ_255USHORT( woff2.num_fonts ) ) + goto Exit; + + if ( !woff2.num_fonts ) + { + error = FT_THROW( Invalid_Table ); + goto Exit; + } + + FT_TRACE4(( "Number of fonts in TTC: %d\n", woff2.num_fonts )); + + if ( FT_NEW_ARRAY( woff2.ttc_fonts, woff2.num_fonts ) ) + goto Exit; + + for ( nn = 0; nn < woff2.num_fonts; nn++ ) + { + WOFF2_TtcFont ttc_font = woff2.ttc_fonts + nn; + + + if ( READ_255USHORT( ttc_font->num_tables ) ) + goto Exit; + if ( FT_READ_ULONG( ttc_font->flavor ) ) + goto Exit; + + if ( FT_NEW_ARRAY( ttc_font->table_indices, ttc_font->num_tables ) ) + goto Exit; + + FT_TRACE5(( "Number of tables in font %d: %d\n", + nn, ttc_font->num_tables )); + +#ifdef FT_DEBUG_LEVEL_TRACE + if ( ttc_font->num_tables ) + FT_TRACE6(( " Indices: " )); +#endif + + glyf_index = 0; + loca_index = 0; + + for ( j = 0; j < ttc_font->num_tables; j++ ) + { + FT_UShort table_index; + WOFF2_Table table; + + + if ( READ_255USHORT( table_index ) ) + goto Exit; + + FT_TRACE6(( "%hu ", table_index )); + if ( table_index >= woff2.num_tables ) + { + FT_ERROR(( "woff2_open_font: invalid table index\n" )); + error = FT_THROW( Invalid_Table ); + goto Exit; + } + + ttc_font->table_indices[j] = table_index; + + table = indices[table_index]; + if ( table->Tag == TTAG_loca ) + loca_index = table_index; + if ( table->Tag == TTAG_glyf ) + glyf_index = table_index; + } + +#ifdef FT_DEBUG_LEVEL_TRACE + if ( ttc_font->num_tables ) + FT_TRACE6(( "\n" )); +#endif + + /* glyf and loca must be consecutive */ + if ( glyf_index > 0 || loca_index > 0 ) + { + if ( glyf_index > loca_index || + loca_index - glyf_index != 1 ) + { + error = FT_THROW( Invalid_Table ); + goto Exit; + } + } + } + + /* Collection directory reading complete. */ + FT_TRACE2(( "WOFF2 collection directory is valid.\n" )); + } + else + woff2.ttc_fonts = NULL; + + woff2.compressed_offset = FT_STREAM_POS(); + file_offset = ROUND4( woff2.compressed_offset + + woff2.totalCompressedSize ); + + /* Some more checks before we start reading the tables. */ + if ( file_offset > woff2.length ) + { + error = FT_THROW( Invalid_Table ); + goto Exit; + } + + if ( woff2.metaOffset ) + { + if ( file_offset != woff2.metaOffset ) + { + error = FT_THROW( Invalid_Table ); + goto Exit; + } + file_offset = ROUND4(woff2.metaOffset + woff2.metaLength); + } + + if ( woff2.privOffset ) + { + if ( file_offset != woff2.privOffset ) + { + error = FT_THROW( Invalid_Table ); + goto Exit; + } + file_offset = ROUND4(woff2.privOffset + woff2.privLength); + } + + if ( file_offset != ( ROUND4( woff2.length ) ) ) + { + error = FT_THROW( Invalid_Table ); + goto Exit; + } + + /* Validate requested face index. */ + *num_faces = woff2.num_fonts; + /* value -(N+1) requests information on index N */ + if ( *face_instance_index < 0 ) + face_index--; + + if ( face_index >= woff2.num_fonts ) + { + if ( *face_instance_index >= 0 ) + { + error = FT_THROW( Invalid_Argument ); + goto Exit; + } + else + face_index = 0; + } + + /* Only retain tables of the requested face in a TTC. */ + if ( woff2.header_version ) + { + WOFF2_TtcFont ttc_font = woff2.ttc_fonts + face_index; + + + /* Create a temporary array. */ + if ( FT_NEW_ARRAY( temp_indices, + ttc_font->num_tables ) ) + goto Exit; + + FT_TRACE4(( "Storing tables for TTC face index %d.\n", face_index )); + for ( nn = 0; nn < ttc_font->num_tables; nn++ ) + temp_indices[nn] = indices[ttc_font->table_indices[nn]]; + + /* Resize array to required size. */ + if ( FT_RENEW_ARRAY( indices, + woff2.num_tables, + ttc_font->num_tables ) ) + goto Exit; + + for ( nn = 0; nn < ttc_font->num_tables; nn++ ) + indices[nn] = temp_indices[nn]; + + FT_FREE( temp_indices ); + + /* Change header values. */ + woff2.flavor = ttc_font->flavor; + woff2.num_tables = ttc_font->num_tables; + } + + /* We need to allocate this much at the minimum. */ + sfnt_size = 12 + woff2.num_tables * 16UL; + /* This is what we normally expect. */ + /* Initially trust `totalSfntSize' and change later as required. */ + if ( woff2.totalSfntSize > sfnt_size ) + { + /* However, adjust the value to something reasonable. */ + + /* Factor 64 is heuristic. */ + if ( ( woff2.totalSfntSize >> 6 ) > woff2.length ) + sfnt_size = woff2.length << 6; + else + sfnt_size = woff2.totalSfntSize; + + /* Value 1<<26 = 67108864 is heuristic. */ + if (sfnt_size >= (1 << 26)) + sfnt_size = 1 << 26; + +#ifdef FT_DEBUG_LEVEL_TRACE + if ( sfnt_size != woff2.totalSfntSize ) + FT_TRACE4(( "adjusting estimate of uncompressed font size" + " to %lu bytes\n", + sfnt_size )); +#endif + } + + /* Write sfnt header. */ + if ( FT_ALLOC( sfnt, sfnt_size ) || + FT_NEW( sfnt_stream ) ) + goto Exit; + + sfnt_header = sfnt; + + WRITE_ULONG( sfnt_header, woff2.flavor ); + + if ( woff2.num_tables ) + { + FT_UInt searchRange, entrySelector, rangeShift, x; + + + x = woff2.num_tables; + entrySelector = 0; + while ( x ) + { + x >>= 1; + entrySelector += 1; + } + entrySelector--; + + searchRange = ( 1 << entrySelector ) * 16; + rangeShift = ( woff2.num_tables * 16 ) - searchRange; + + WRITE_USHORT( sfnt_header, woff2.num_tables ); + WRITE_USHORT( sfnt_header, searchRange ); + WRITE_USHORT( sfnt_header, entrySelector ); + WRITE_USHORT( sfnt_header, rangeShift ); + } + + info.header_checksum = compute_ULong_sum( sfnt, 12 ); + + /* Sort tables by tag. */ + ft_qsort( indices, + woff2.num_tables, + sizeof ( WOFF2_Table ), + compare_tags ); + + if ( woff2.uncompressed_size < 1 ) + { + error = FT_THROW( Invalid_Table ); + goto Exit; + } + + if ( woff2.uncompressed_size > sfnt_size ) + { + FT_ERROR(( "woff2_open_font: SFNT table lengths are too large.\n" )); + error = FT_THROW( Invalid_Table ); + goto Exit; + } + + /* Allocate memory for uncompressed table data. */ + if ( FT_ALLOC( uncompressed_buf, woff2.uncompressed_size ) || + FT_FRAME_ENTER( woff2.totalCompressedSize ) ) + goto Exit; + + /* Uncompress the stream. */ + error = woff2_decompress( uncompressed_buf, + woff2.uncompressed_size, + stream->cursor, + woff2.totalCompressedSize ); + + FT_FRAME_EXIT(); + + if ( error ) + goto Exit; + + error = reconstruct_font( uncompressed_buf, + woff2.uncompressed_size, + indices, + &woff2, + &info, + &sfnt, + &sfnt_size, + memory ); + + if ( error ) + goto Exit; + + /* Resize `sfnt' to actual size of sfnt stream. */ + if ( woff2.actual_sfnt_size < sfnt_size ) + { + FT_TRACE5(( "Trimming sfnt stream from %lu to %lu.\n", + sfnt_size, woff2.actual_sfnt_size )); + if ( FT_REALLOC( sfnt, + (FT_ULong)( sfnt_size ), + (FT_ULong)( woff2.actual_sfnt_size ) ) ) + goto Exit; + } + + /* `reconstruct_font' has done all the work. */ + /* Swap out stream and return. */ + FT_Stream_OpenMemory( sfnt_stream, sfnt, woff2.actual_sfnt_size ); + sfnt_stream->memory = stream->memory; + sfnt_stream->close = stream_close; + + FT_Stream_Free( + face->root.stream, + ( face->root.face_flags & FT_FACE_FLAG_EXTERNAL_STREAM ) != 0 ); + + face->root.stream = sfnt_stream; + face->root.face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM; + + /* Set face_index to 0 or -1. */ + if ( *face_instance_index >= 0 ) + *face_instance_index = 0; + else + *face_instance_index = -1; + + FT_TRACE2(( "woff2_open_font: SFNT synthesized.\n" )); + + Exit: + FT_FREE( tables ); + FT_FREE( indices ); + FT_FREE( uncompressed_buf ); + FT_FREE( info.x_mins ); + + if ( woff2.ttc_fonts ) + { + WOFF2_TtcFont ttc_font = woff2.ttc_fonts; + + + for ( nn = 0; nn < woff2.num_fonts; nn++ ) + { + FT_FREE( ttc_font->table_indices ); + ttc_font++; + } + + FT_FREE( woff2.ttc_fonts ); + } + + if ( error ) + { + FT_FREE( sfnt ); + if ( sfnt_stream ) + { + FT_Stream_Close( sfnt_stream ); + FT_FREE( sfnt_stream ); + } + } + + return error; + } + + +#undef READ_255USHORT +#undef READ_BASE128 +#undef ROUND4 +#undef WRITE_USHORT +#undef WRITE_ULONG +#undef WRITE_SHORT +#undef WRITE_SFNT_BUF +#undef WRITE_SFNT_BUF_AT + +#undef N_CONTOUR_STREAM +#undef N_POINTS_STREAM +#undef FLAG_STREAM +#undef GLYPH_STREAM +#undef COMPOSITE_STREAM +#undef BBOX_STREAM +#undef INSTRUCTION_STREAM + + +/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff2.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff2.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff2.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/sfwoff2.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,75 @@ +/**************************************************************************** + * + * sfwoff2.h + * + * WOFFF2 format management (specification). + * + * Copyright (C) 2019-2020 by + * Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef SFWOFF2_H_ +#define SFWOFF2_H_ + + +#include <freetype/internal/sfnt.h> +#include <freetype/internal/ftobjs.h> + + +FT_BEGIN_HEADER + + + /* Leave the first byte open to store `flag_byte'. */ +#define WOFF2_FLAGS_TRANSFORM 1 << 8 + +#define WOFF2_SFNT_HEADER_SIZE 12 +#define WOFF2_SFNT_ENTRY_SIZE 16 + + /* Suggested maximum size for output. */ +#define WOFF2_DEFAULT_MAX_SIZE 30 * 1024 * 1024 + + /* 98% of Google Fonts have no glyph above 5k bytes. */ +#define WOFF2_DEFAULT_GLYPH_BUF 5120 + + /* Composite glyph flags. */ + /* See `CompositeGlyph.java' in `sfntly' for full definitions. */ +#define FLAG_ARG_1_AND_2_ARE_WORDS 1 << 0 +#define FLAG_WE_HAVE_A_SCALE 1 << 3 +#define FLAG_MORE_COMPONENTS 1 << 5 +#define FLAG_WE_HAVE_AN_X_AND_Y_SCALE 1 << 6 +#define FLAG_WE_HAVE_A_TWO_BY_TWO 1 << 7 +#define FLAG_WE_HAVE_INSTRUCTIONS 1 << 8 + + /* Simple glyph flags */ +#define GLYF_ON_CURVE 1 << 0 +#define GLYF_X_SHORT 1 << 1 +#define GLYF_Y_SHORT 1 << 2 +#define GLYF_REPEAT 1 << 3 +#define GLYF_THIS_X_IS_SAME 1 << 4 +#define GLYF_THIS_Y_IS_SAME 1 << 5 + + /* Other constants */ +#define CONTOUR_OFFSET_END_POINT 10 + + + FT_LOCAL( FT_Error ) + woff2_open_font( FT_Stream stream, + TT_Face face, + FT_Int* face_index, + FT_Long* num_faces ); + + +FT_END_HEADER + +#endif /* SFWOFF2_H_ */ + + +/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttbdf.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttbdf.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttbdf.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttbdf.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType and OpenType embedded BDF properties (body). * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,10 +16,9 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/tttags.h> #include "ttbdf.h" #include "sferrors.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttbdf.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttbdf.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttbdf.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttbdf.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType and OpenType embedded BDF properties (specification). * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,8 @@ #define TTBDF_H_ -#include <ft2build.h> #include "ttload.h" -#include FT_BDF_H +#include <freetype/ftbdf.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttcmap.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttcmap.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttcmap.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttcmap.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType character mapping table (cmap) support (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,14 +16,13 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> -#include "sferrors.h" /* must come before FT_INTERNAL_VALIDATE_H */ +#include "sferrors.h" /* must come before `ftvalid.h' */ -#include FT_INTERNAL_VALIDATE_H -#include FT_INTERNAL_STREAM_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H +#include <freetype/internal/ftvalid.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/services/svpscmap.h> #include "ttload.h" #include "ttcmap.h" #include "ttpost.h" @@ -3752,6 +3751,7 @@ static const TT_CMap_Class tt_cmap_classes[] = { +#undef TTCMAPCITEM #define TTCMAPCITEM( a ) &a, #include "ttcmapc.h" NULL, @@ -3764,29 +3764,33 @@ FT_LOCAL_DEF( FT_Error ) tt_face_build_cmaps( TT_Face face ) { - FT_Byte* table = face->cmap_table; - FT_Byte* limit = table + face->cmap_size; + FT_Byte* const table = face->cmap_table; + FT_Byte* limit; FT_UInt volatile num_cmaps; - FT_Byte* volatile p = table; + FT_Byte* volatile p = table; FT_Library library = FT_FACE_LIBRARY( face ); FT_UNUSED( library ); - if ( !p || p + 4 > limit ) + if ( !p || face->cmap_size < 4 ) return FT_THROW( Invalid_Table ); - /* only recognize format 0 */ - if ( TT_NEXT_USHORT( p ) != 0 ) - { - FT_ERROR(( "tt_face_build_cmaps:" - " unsupported `cmap' table format = %d\n", - TT_PEEK_USHORT( p - 2 ) )); - return FT_THROW( Invalid_Table ); - } + /* Version 1.8.3 of the OpenType specification contains the following */ + /* (https://docs.microsoft.com/en-us/typography/opentype/spec/cmap): */ + /* */ + /* The 'cmap' table version number remains at 0x0000 for fonts that */ + /* make use of the newer subtable formats. */ + /* */ + /* This essentially means that a version format test is useless. */ + + /* ignore format */ + p += 2; num_cmaps = TT_NEXT_USHORT( p ); + FT_TRACE4(( "tt_face_build_cmaps: %d cmaps\n", num_cmaps )); + limit = table + face->cmap_size; for ( ; num_cmaps > 0 && p + 8 <= limit; num_cmaps-- ) { FT_CharMapRec charmap; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttcmap.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttcmap.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttcmap.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttcmap.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType character mapping table (cmap) support (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,10 +20,9 @@ #define TTCMAP_H_ -#include <ft2build.h> -#include FT_INTERNAL_TRUETYPE_TYPES_H -#include FT_INTERNAL_VALIDATE_H -#include FT_SERVICE_TT_CMAP_H +#include <freetype/internal/tttypes.h> +#include <freetype/internal/ftvalid.h> +#include <freetype/internal/services/svttcmap.h> FT_BEGIN_HEADER @@ -91,6 +90,11 @@ }; +#undef TTCMAPCITEM +#define TTCMAPCITEM( a ) FT_CALLBACK_TABLE const TT_CMap_ClassRec a; +#include "ttcmapc.h" + + typedef struct TT_ValidatorRec_ { FT_ValidatorRec validator; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttcmapc.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttcmapc.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttcmapc.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttcmapc.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TT CMAP classes definitions (specification only). * - * Copyright (C) 2009-2019 by + * Copyright (C) 2009-2020 by * Oran Agra and Mickey Gabel. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttcolr.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttcolr.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttcolr.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttcolr.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType and OpenType colored glyph layer support (body). * - * Copyright (C) 2018-2019 by + * Copyright (C) 2018-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Originally written by Shao Yu Zhang <shaozhang@fb.com>. @@ -27,11 +27,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H -#include FT_COLOR_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/tttags.h> +#include <freetype/ftcolor.h> #ifdef TT_CONFIG_OPTION_COLOR_LAYERS @@ -40,9 +39,9 @@ /* NOTE: These are the table sizes calculated through the specs. */ -#define BASE_GLYPH_SIZE 6 -#define LAYER_SIZE 4 -#define COLR_HEADER_SIZE 14 +#define BASE_GLYPH_SIZE 6U +#define LAYER_SIZE 4U +#define COLR_HEADER_SIZE 14U typedef struct BaseGlyphRecord_ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttcolr.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttcolr.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttcolr.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttcolr.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType and OpenType colored glyph layer support (specification). * - * Copyright (C) 2018-2019 by + * Copyright (C) 2018-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Originally written by Shao Yu Zhang <shaozhang@fb.com>. @@ -22,7 +22,6 @@ #define __TTCOLR_H__ -#include <ft2build.h> #include "ttload.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttcpal.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttcpal.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttcpal.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttcpal.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType and OpenType color palette support (body). * - * Copyright (C) 2018-2019 by + * Copyright (C) 2018-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Originally written by Shao Yu Zhang <shaozhang@fb.com>. @@ -27,11 +27,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H -#include FT_COLOR_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/tttags.h> +#include <freetype/ftcolor.h> #ifdef TT_CONFIG_OPTION_COLOR_LAYERS @@ -40,8 +39,8 @@ /* NOTE: These are the table sizes calculated through the specs. */ -#define CPAL_V0_HEADER_BASE_SIZE 12 -#define COLOR_SIZE 4 +#define CPAL_V0_HEADER_BASE_SIZE 12U +#define COLOR_SIZE 4U /* all data from `CPAL' not covered in FT_Palette_Data */ @@ -140,7 +139,7 @@ 3U * 4 > table_size ) goto InvalidTable; - p += face->palette_data.num_palettes * 2; + p += face->palette_data.num_palettes * 2U; type_offset = FT_NEXT_ULONG( p ); label_offset = FT_NEXT_ULONG( p ); @@ -150,7 +149,7 @@ { if ( type_offset >= table_size ) goto InvalidTable; - if ( face->palette_data.num_palettes * 2 > + if ( face->palette_data.num_palettes * 2U > table_size - type_offset ) goto InvalidTable; @@ -171,7 +170,7 @@ { if ( label_offset >= table_size ) goto InvalidTable; - if ( face->palette_data.num_palettes * 2 > + if ( face->palette_data.num_palettes * 2U > table_size - label_offset ) goto InvalidTable; @@ -192,7 +191,7 @@ { if ( entry_label_offset >= table_size ) goto InvalidTable; - if ( face->palette_data.num_palette_entries * 2 > + if ( face->palette_data.num_palette_entries * 2U > table_size - entry_label_offset ) goto InvalidTable; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttcpal.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttcpal.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttcpal.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttcpal.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType and OpenType color palette support (specification). * - * Copyright (C) 2018-2019 by + * Copyright (C) 2018-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Originally written by Shao Yu Zhang <shaozhang@fb.com>. @@ -22,7 +22,6 @@ #define __TTCPAL_H__ -#include <ft2build.h> #include "ttload.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttkern.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttkern.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttkern.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttkern.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Load the basic TrueType kerning table. This doesn't handle * kerning data within the GPOS table at the moment. * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,10 +17,9 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/tttags.h> #include "ttkern.h" #include "sferrors.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttkern.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttkern.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttkern.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttkern.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Load the basic TrueType kerning table. This doesn't handle * kerning data within the GPOS table at the moment. * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,9 +21,8 @@ #define TTKERN_H_ -#include <ft2build.h> -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_TRUETYPE_TYPES_H +#include <freetype/internal/ftstream.h> +#include <freetype/internal/tttypes.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttload.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttload.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttload.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttload.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Load the basic TrueType tables, i.e., tables that can be either in * TTF or OTF fonts (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,10 +17,9 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/tttags.h> #include "ttload.h" #include "sferrors.h" @@ -65,8 +64,8 @@ #endif - FT_TRACE4(( "tt_face_lookup_table: %08p, `%c%c%c%c' -- ", - face, + FT_TRACE4(( "tt_face_lookup_table: %p, `%c%c%c%c' -- ", + (void *)face, (FT_Char)( tag >> 24 ), (FT_Char)( tag >> 16 ), (FT_Char)( tag >> 8 ), @@ -363,7 +362,7 @@ }; - FT_TRACE2(( "tt_face_load_font_dir: %08p\n", face )); + FT_TRACE2(( "tt_face_load_font_dir: %p\n", (void *)face )); /* read the offset table */ @@ -397,7 +396,15 @@ } } else + { valid_entries = sfnt.num_tables; + if ( !valid_entries ) + { + FT_TRACE2(( "tt_face_load_font_dir: no valid tables found\n" )); + error = FT_THROW( Unknown_File_Format ); + goto Exit; + } + } face->num_tables = valid_entries; face->format_tag = sfnt.format_tag; @@ -916,7 +923,7 @@ /* load language tags */ { TT_LangTag entry = table->langTags; - TT_LangTag limit = entry + table->numLangTagRecords; + TT_LangTag limit = FT_OFFSET( entry, table->numLangTagRecords ); for ( ; entry < limit; entry++ ) @@ -1307,7 +1314,7 @@ /* we don't load the glyph names, we do that in another */ /* module (ttpost). */ - FT_TRACE3(( "FormatType: 0x%x\n", post->FormatType )); + FT_TRACE3(( "FormatType: 0x%lx\n", post->FormatType )); FT_TRACE3(( "isFixedPitch: %s\n", post->isFixedPitch ? " yes" : " no" )); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttload.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttload.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttload.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttload.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Load the basic TrueType tables, i.e., tables that can be either in * TTF or OTF fonts (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,9 +21,8 @@ #define TTLOAD_H_ -#include <ft2build.h> -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_TRUETYPE_TYPES_H +#include <freetype/internal/ftstream.h> +#include <freetype/internal/tttypes.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttmtx.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttmtx.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttmtx.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttmtx.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Load the metrics tables common to TTF and OTF fonts (body). * - * Copyright (C) 2006-2019 by + * Copyright (C) 2006-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,13 +16,12 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/tttags.h> #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include FT_SERVICE_METRICS_VARIATIONS_H +#include <freetype/internal/services/svmetric.h> #endif #include "ttmtx.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttmtx.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttmtx.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttmtx.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttmtx.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Load the metrics tables common to TTF and OTF fonts (specification). * - * Copyright (C) 2006-2019 by + * Copyright (C) 2006-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,8 @@ #define TTMTX_H_ -#include <ft2build.h> -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_TRUETYPE_TYPES_H +#include <freetype/internal/ftstream.h> +#include <freetype/internal/tttypes.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttpost.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttpost.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttpost.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttpost.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * PostScript name table processing for TrueType and OpenType fonts * (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -25,10 +25,9 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/tttags.h> #ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES @@ -54,7 +53,7 @@ #ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES -#include FT_SERVICE_POSTSCRIPT_CMAPS_H +#include <freetype/internal/services/svpscmap.h> #define MAC_NAME( x ) (FT_String*)psnames->macintosh_name( (FT_UInt)(x) ) @@ -240,7 +239,7 @@ break; else { - FT_TRACE6(( "load_format_20: %d byte left in post table\n", + FT_TRACE6(( "load_format_20: %ld byte left in post table\n", post_limit - FT_STREAM_POS() )); if ( FT_READ_BYTE( len ) ) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttpost.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttpost.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttpost.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttpost.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * PostScript name table processing for TrueType and OpenType fonts * (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -23,7 +23,7 @@ #include <ft2build.h> #include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_TRUETYPE_TYPES_H +#include <freetype/internal/tttypes.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttsbit.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttsbit.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttsbit.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttsbit.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType and OpenType embedded bitmap support (body). * - * Copyright (C) 2005-2019 by + * Copyright (C) 2005-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Copyright 2013 by Google, Inc. @@ -19,11 +19,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H -#include FT_BITMAP_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/tttags.h> +#include <freetype/ftbitmap.h> #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS @@ -348,7 +347,7 @@ FT_TRACE2(( "tt_face_load_strike_metrics:" " sanitizing invalid ascender and descender\n" " " - " values for strike %d (%dppem, %dppem)\n", + " values for strike %ld (%dppem, %dppem)\n", strike_index, metrics->x_ppem, metrics->y_ppem )); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttsbit.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttsbit.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/ttsbit.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/ttsbit.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType and OpenType embedded bitmap support (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,7 +20,6 @@ #define TTSBIT_H_ -#include <ft2build.h> #include "ttload.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/woff2tags.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/woff2tags.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/woff2tags.c 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/woff2tags.c 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,109 @@ +/**************************************************************************** + * + * woff2tags.c + * + * WOFF2 Font table tags (base). + * + * Copyright (C) 2019-2020 by + * Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#include <freetype/tttags.h> +#include "woff2tags.h" + + /* + * Return tag from index in the order given in WOFF2 specification. + * + * See + * + * https://www.w3.org/TR/WOFF2/#table_dir_format + * + * for details. + */ + FT_LOCAL_DEF( FT_ULong ) + woff2_known_tags( FT_Byte index ) + { + const FT_ULong known_tags[63] = + { + FT_MAKE_TAG('c', 'm', 'a', 'p'), /* 0 */ + FT_MAKE_TAG('h', 'e', 'a', 'd'), /* 1 */ + FT_MAKE_TAG('h', 'h', 'e', 'a'), /* 2 */ + FT_MAKE_TAG('h', 'm', 't', 'x'), /* 3 */ + FT_MAKE_TAG('m', 'a', 'x', 'p'), /* 4 */ + FT_MAKE_TAG('n', 'a', 'm', 'e'), /* 5 */ + FT_MAKE_TAG('O', 'S', '/', '2'), /* 6 */ + FT_MAKE_TAG('p', 'o', 's', 't'), /* 7 */ + FT_MAKE_TAG('c', 'v', 't', ' '), /* 8 */ + FT_MAKE_TAG('f', 'p', 'g', 'm'), /* 9 */ + FT_MAKE_TAG('g', 'l', 'y', 'f'), /* 10 */ + FT_MAKE_TAG('l', 'o', 'c', 'a'), /* 11 */ + FT_MAKE_TAG('p', 'r', 'e', 'p'), /* 12 */ + FT_MAKE_TAG('C', 'F', 'F', ' '), /* 13 */ + FT_MAKE_TAG('V', 'O', 'R', 'G'), /* 14 */ + FT_MAKE_TAG('E', 'B', 'D', 'T'), /* 15 */ + FT_MAKE_TAG('E', 'B', 'L', 'C'), /* 16 */ + FT_MAKE_TAG('g', 'a', 's', 'p'), /* 17 */ + FT_MAKE_TAG('h', 'd', 'm', 'x'), /* 18 */ + FT_MAKE_TAG('k', 'e', 'r', 'n'), /* 19 */ + FT_MAKE_TAG('L', 'T', 'S', 'H'), /* 20 */ + FT_MAKE_TAG('P', 'C', 'L', 'T'), /* 21 */ + FT_MAKE_TAG('V', 'D', 'M', 'X'), /* 22 */ + FT_MAKE_TAG('v', 'h', 'e', 'a'), /* 23 */ + FT_MAKE_TAG('v', 'm', 't', 'x'), /* 24 */ + FT_MAKE_TAG('B', 'A', 'S', 'E'), /* 25 */ + FT_MAKE_TAG('G', 'D', 'E', 'F'), /* 26 */ + FT_MAKE_TAG('G', 'P', 'O', 'S'), /* 27 */ + FT_MAKE_TAG('G', 'S', 'U', 'B'), /* 28 */ + FT_MAKE_TAG('E', 'B', 'S', 'C'), /* 29 */ + FT_MAKE_TAG('J', 'S', 'T', 'F'), /* 30 */ + FT_MAKE_TAG('M', 'A', 'T', 'H'), /* 31 */ + FT_MAKE_TAG('C', 'B', 'D', 'T'), /* 32 */ + FT_MAKE_TAG('C', 'B', 'L', 'C'), /* 33 */ + FT_MAKE_TAG('C', 'O', 'L', 'R'), /* 34 */ + FT_MAKE_TAG('C', 'P', 'A', 'L'), /* 35 */ + FT_MAKE_TAG('S', 'V', 'G', ' '), /* 36 */ + FT_MAKE_TAG('s', 'b', 'i', 'x'), /* 37 */ + FT_MAKE_TAG('a', 'c', 'n', 't'), /* 38 */ + FT_MAKE_TAG('a', 'v', 'a', 'r'), /* 39 */ + FT_MAKE_TAG('b', 'd', 'a', 't'), /* 40 */ + FT_MAKE_TAG('b', 'l', 'o', 'c'), /* 41 */ + FT_MAKE_TAG('b', 's', 'l', 'n'), /* 42 */ + FT_MAKE_TAG('c', 'v', 'a', 'r'), /* 43 */ + FT_MAKE_TAG('f', 'd', 's', 'c'), /* 44 */ + FT_MAKE_TAG('f', 'e', 'a', 't'), /* 45 */ + FT_MAKE_TAG('f', 'm', 't', 'x'), /* 46 */ + FT_MAKE_TAG('f', 'v', 'a', 'r'), /* 47 */ + FT_MAKE_TAG('g', 'v', 'a', 'r'), /* 48 */ + FT_MAKE_TAG('h', 's', 't', 'y'), /* 49 */ + FT_MAKE_TAG('j', 'u', 's', 't'), /* 50 */ + FT_MAKE_TAG('l', 'c', 'a', 'r'), /* 51 */ + FT_MAKE_TAG('m', 'o', 'r', 't'), /* 52 */ + FT_MAKE_TAG('m', 'o', 'r', 'x'), /* 53 */ + FT_MAKE_TAG('o', 'p', 'b', 'd'), /* 54 */ + FT_MAKE_TAG('p', 'r', 'o', 'p'), /* 55 */ + FT_MAKE_TAG('t', 'r', 'a', 'k'), /* 56 */ + FT_MAKE_TAG('Z', 'a', 'p', 'f'), /* 57 */ + FT_MAKE_TAG('S', 'i', 'l', 'f'), /* 58 */ + FT_MAKE_TAG('G', 'l', 'a', 't'), /* 59 */ + FT_MAKE_TAG('G', 'l', 'o', 'c'), /* 60 */ + FT_MAKE_TAG('F', 'e', 'a', 't'), /* 61 */ + FT_MAKE_TAG('S', 'i', 'l', 'l'), /* 62 */ + }; + + + if ( index > 62 ) + return 0; + + return known_tags[index]; + } + + +/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/woff2tags.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/woff2tags.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/sfnt/woff2tags.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/sfnt/woff2tags.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,39 @@ +/**************************************************************************** + * + * woff2tags.h + * + * WOFFF2 Font table tags (specification). + * + * Copyright (C) 2019-2020 by + * Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#ifndef WOFF2TAGS_H +#define WOFF2TAGS_H + + +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/compiler-macros.h> + + +FT_BEGIN_HEADER + + + FT_LOCAL( FT_ULong ) + woff2_known_tags( FT_Byte index ); + + +FT_END_HEADER + +#endif /* WOFF2TAGS_H */ + + +/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,32 +0,0 @@ -# FreeType 2 src/smooth Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) smooth ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = ftgrays - ftsmooth - ftspic - ; - } - else - { - _sources = smooth ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/smooth Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/ftgrays.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/ftgrays.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/ftgrays.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/ftgrays.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * A new `perfect' anti-aliasing renderer (body). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -278,12 +278,11 @@ #else /* !STANDALONE_ */ -#include <ft2build.h> #include "ftgrays.h" -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H -#include FT_OUTLINE_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftcalc.h> +#include <freetype/ftoutln.h> #include "ftsmerrs.h" @@ -1649,7 +1648,7 @@ if ( !ras.invalid ) gray_record_cell( RAS_VAR ); - FT_TRACE7(( "band [%d..%d]: %d cell%s\n", + FT_TRACE7(( "band [%d..%d]: %ld cell%s\n", ras.min_ey, ras.max_ey, ras.num_cells, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/ftgrays.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/ftgrays.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/ftgrays.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/ftgrays.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType smooth renderer declaration * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -28,7 +28,7 @@ #include "ftimage.h" #else #include <ft2build.h> -#include FT_IMAGE_H +#include <freetype/ftimage.h> #endif diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/ftsmerrs.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/ftsmerrs.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/ftsmerrs.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/ftsmerrs.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * smooth renderer error codes (specification only). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -26,7 +26,7 @@ #ifndef FTSMERRS_H_ #define FTSMERRS_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -34,7 +34,7 @@ #define FT_ERR_PREFIX Smooth_Err_ #define FT_ERR_BASE FT_Mod_Err_Smooth -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* FTSMERRS_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/ftsmooth.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/ftsmooth.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/ftsmooth.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/ftsmooth.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Anti-aliasing renderer interface (body). * - * Copyright (C) 2000-2019 by + * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,46 +16,15 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H -#include FT_OUTLINE_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/ftoutln.h> #include "ftsmooth.h" #include "ftgrays.h" #include "ftsmerrs.h" - /* initialize renderer -- init its raster */ - static FT_Error - ft_smooth_init( FT_Renderer render ) - { - -#ifndef FT_CONFIG_OPTION_SUBPIXEL_RENDERING - - FT_Vector* sub = render->root.library->lcd_geometry; - - - /* set up default subpixel geometry for striped RGB panels. */ - sub[0].x = -21; - sub[0].y = 0; - sub[1].x = 0; - sub[1].y = 0; - sub[2].x = 21; - sub[2].y = 0; - -#elif 0 /* or else, once ClearType patents expire */ - - FT_Library_SetLcdFilter( render->root.library, FT_LCD_FILTER_DEFAULT ); - -#endif - - render->clazz->raster_class->raster_reset( render->raster, NULL, 0 ); - - return 0; - } - - /* sets render-specific mode */ static FT_Error ft_smooth_set_mode( FT_Renderer render, @@ -107,14 +76,359 @@ FT_Outline_Get_CBox( &slot->outline, cbox ); } + typedef struct TOrigin_ + { + unsigned char* origin; /* pixmap origin at the bottom-left */ + int pitch; /* pitch to go down one row */ + + } TOrigin; + +#ifndef FT_CONFIG_OPTION_SUBPIXEL_RENDERING + + /* initialize renderer -- init its raster */ + static FT_Error + ft_smooth_init( FT_Renderer render ) + { + FT_Vector* sub = render->root.library->lcd_geometry; + + + /* set up default subpixel geometry for striped RGB panels. */ + sub[0].x = -21; + sub[0].y = 0; + sub[1].x = 0; + sub[1].y = 0; + sub[2].x = 21; + sub[2].y = 0; + + render->clazz->raster_class->raster_reset( render->raster, NULL, 0 ); + + return 0; + } + + + /* This function writes every third byte in direct rendering mode */ + static void + ft_smooth_lcd_spans( int y, + int count, + const FT_Span* spans, + TOrigin* target ) + { + unsigned char* dst_line = target->origin - y * target->pitch; + unsigned char* dst; + unsigned short w; + + + for ( ; count--; spans++ ) + for ( dst = dst_line + spans->x * 3, w = spans->len; w--; dst += 3 ) + *dst = spans->coverage; + } + + + static FT_Error + ft_smooth_raster_lcd( FT_Renderer render, + FT_Outline* outline, + FT_Bitmap* bitmap ) + { + FT_Error error = FT_Err_Ok; + FT_Vector* sub = render->root.library->lcd_geometry; + FT_Pos x, y; + + FT_Raster_Params params; + TOrigin target; + + + /* Render 3 separate coverage bitmaps, shifting the outline. */ + /* Set up direct rendering to record them on each third byte. */ + params.source = outline; + params.flags = FT_RASTER_FLAG_AA | FT_RASTER_FLAG_DIRECT; + params.gray_spans = (FT_SpanFunc)ft_smooth_lcd_spans; + params.user = ⌖ + + params.clip_box.xMin = 0; + params.clip_box.yMin = 0; + params.clip_box.xMax = bitmap->width; + params.clip_box.yMax = bitmap->rows; + + if ( bitmap->pitch < 0 ) + target.origin = bitmap->buffer; + else + target.origin = bitmap->buffer + + ( bitmap->rows - 1 ) * (unsigned int)bitmap->pitch; + + target.pitch = bitmap->pitch; + + FT_Outline_Translate( outline, + -sub[0].x, + -sub[0].y ); + error = render->raster_render( render->raster, ¶ms ); + x = sub[0].x; + y = sub[0].y; + if ( error ) + goto Exit; + + target.origin++; + FT_Outline_Translate( outline, + sub[0].x - sub[1].x, + sub[0].y - sub[1].y ); + error = render->raster_render( render->raster, ¶ms ); + x = sub[1].x; + y = sub[1].y; + if ( error ) + goto Exit; + + target.origin++; + FT_Outline_Translate( outline, + sub[1].x - sub[2].x, + sub[1].y - sub[2].y ); + error = render->raster_render( render->raster, ¶ms ); + x = sub[2].x; + y = sub[2].y; + + Exit: + FT_Outline_Translate( outline, x, y ); + + return error; + } + + + static FT_Error + ft_smooth_raster_lcdv( FT_Renderer render, + FT_Outline* outline, + FT_Bitmap* bitmap ) + { + FT_Error error = FT_Err_Ok; + int pitch = bitmap->pitch; + FT_Vector* sub = render->root.library->lcd_geometry; + FT_Pos x, y; + + FT_Raster_Params params; + + + params.target = bitmap; + params.source = outline; + params.flags = FT_RASTER_FLAG_AA; + + /* Render 3 separate coverage bitmaps, shifting the outline. */ + /* Notice that the subpixel geometry vectors are rotated. */ + /* Triple the pitch to render on each third row. */ + bitmap->pitch *= 3; + bitmap->rows /= 3; + + FT_Outline_Translate( outline, + -sub[0].y, + sub[0].x ); + error = render->raster_render( render->raster, ¶ms ); + x = sub[0].y; + y = -sub[0].x; + if ( error ) + goto Exit; + + bitmap->buffer += pitch; + FT_Outline_Translate( outline, + sub[0].y - sub[1].y, + sub[1].x - sub[0].x ); + error = render->raster_render( render->raster, ¶ms ); + x = sub[1].y; + y = -sub[1].x; + bitmap->buffer -= pitch; + if ( error ) + goto Exit; + + bitmap->buffer += 2 * pitch; + FT_Outline_Translate( outline, + sub[1].y - sub[2].y, + sub[2].x - sub[1].x ); + error = render->raster_render( render->raster, ¶ms ); + x = sub[2].y; + y = -sub[2].x; + bitmap->buffer -= 2 * pitch; + + Exit: + FT_Outline_Translate( outline, x, y ); + + bitmap->pitch /= 3; + bitmap->rows *= 3; + + return error; + } + +#else /* FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ + + /* initialize renderer -- init its raster */ + static FT_Error + ft_smooth_init( FT_Renderer render ) + { + /* set up default LCD filtering */ + FT_Library_SetLcdFilter( render->root.library, FT_LCD_FILTER_DEFAULT ); + + render->clazz->raster_class->raster_reset( render->raster, NULL, 0 ); + + return 0; + } + + + static FT_Error + ft_smooth_raster_lcd( FT_Renderer render, + FT_Outline* outline, + FT_Bitmap* bitmap ) + { + FT_Error error = FT_Err_Ok; + FT_Vector* points = outline->points; + FT_Vector* points_end = FT_OFFSET( points, outline->n_points ); + FT_Vector* vec; + + FT_Raster_Params params; + + + params.target = bitmap; + params.source = outline; + params.flags = FT_RASTER_FLAG_AA; + + /* implode outline */ + for ( vec = points; vec < points_end; vec++ ) + vec->x *= 3; + + /* render outline into the bitmap */ + error = render->raster_render( render->raster, ¶ms ); + + /* deflate outline */ + for ( vec = points; vec < points_end; vec++ ) + vec->x /= 3; + + return error; + } + + + static FT_Error + ft_smooth_raster_lcdv( FT_Renderer render, + FT_Outline* outline, + FT_Bitmap* bitmap ) + { + FT_Error error = FT_Err_Ok; + FT_Vector* points = outline->points; + FT_Vector* points_end = FT_OFFSET( points, outline->n_points ); + FT_Vector* vec; + + FT_Raster_Params params; + + + params.target = bitmap; + params.source = outline; + params.flags = FT_RASTER_FLAG_AA; + + /* implode outline */ + for ( vec = points; vec < points_end; vec++ ) + vec->y *= 3; + + /* render outline into the bitmap */ + error = render->raster_render( render->raster, ¶ms ); + + /* deflate outline */ + for ( vec = points; vec < points_end; vec++ ) + vec->y /= 3; + + return error; + } + +#endif /* FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ + +/* Oversampling scale to be used in rendering overlaps */ +#define SCALE ( 1 << 2 ) + + /* This function averages inflated spans in direct rendering mode */ + static void + ft_smooth_overlap_spans( int y, + int count, + const FT_Span* spans, + TOrigin* target ) + { + unsigned char* dst = target->origin - ( y / SCALE ) * target->pitch; + unsigned short x; + unsigned int cover, sum; + + + /* When accumulating the oversampled spans we need to assure that */ + /* fully covered pixels are equal to 255 and do not overflow. */ + /* It is important that the SCALE is a power of 2, each subpixel */ + /* cover can also reach a power of 2 after rounding, and the total */ + /* is clamped to 255 when it adds up to 256. */ + for ( ; count--; spans++ ) + { + cover = ( spans->coverage + SCALE * SCALE / 2 ) / ( SCALE * SCALE ); + for ( x = 0; x < spans->len; x++ ) + { + sum = dst[( spans->x + x ) / SCALE] + cover; + dst[( spans->x + x ) / SCALE] = (unsigned char)( sum - ( sum >> 8 ) ); + } + } + } + - /* convert a slot's glyph image into a bitmap */ static FT_Error - ft_smooth_render_generic( FT_Renderer render, - FT_GlyphSlot slot, - FT_Render_Mode mode, - const FT_Vector* origin, - FT_Render_Mode required_mode ) + ft_smooth_raster_overlap( FT_Renderer render, + FT_Outline* outline, + FT_Bitmap* bitmap ) + { + FT_Error error = FT_Err_Ok; + FT_Vector* points = outline->points; + FT_Vector* points_end = FT_OFFSET( points, outline->n_points ); + FT_Vector* vec; + + FT_Raster_Params params; + TOrigin target; + + + /* Reject outlines that are too wide for 16-bit FT_Span. */ + /* Other limits are applied upstream with the same error code. */ + if ( bitmap->width * SCALE > 0x7FFF ) + return FT_THROW( Raster_Overflow ); + + /* Set up direct rendering to average oversampled spans. */ + params.source = outline; + params.flags = FT_RASTER_FLAG_AA | FT_RASTER_FLAG_DIRECT; + params.gray_spans = (FT_SpanFunc)ft_smooth_overlap_spans; + params.user = ⌖ + + params.clip_box.xMin = 0; + params.clip_box.yMin = 0; + params.clip_box.xMax = bitmap->width * SCALE; + params.clip_box.yMax = bitmap->rows * SCALE; + + if ( bitmap->pitch < 0 ) + target.origin = bitmap->buffer; + else + target.origin = bitmap->buffer + + ( bitmap->rows - 1 ) * (unsigned int)bitmap->pitch; + + target.pitch = bitmap->pitch; + + /* inflate outline */ + for ( vec = points; vec < points_end; vec++ ) + { + vec->x *= SCALE; + vec->y *= SCALE; + } + + /* render outline into the bitmap */ + error = render->raster_render( render->raster, ¶ms ); + + /* deflate outline */ + for ( vec = points; vec < points_end; vec++ ) + { + vec->x /= SCALE; + vec->y /= SCALE; + } + + return error; + } + +#undef SCALE + + static FT_Error + ft_smooth_render( FT_Renderer render, + FT_GlyphSlot slot, + FT_Render_Mode mode, + const FT_Vector* origin ) { FT_Error error = FT_Err_Ok; FT_Outline* outline = &slot->outline; @@ -122,10 +436,6 @@ FT_Memory memory = render->root.memory; FT_Pos x_shift = 0; FT_Pos y_shift = 0; - FT_Int hmul = ( mode == FT_RENDER_MODE_LCD ); - FT_Int vmul = ( mode == FT_RENDER_MODE_LCD_V ); - - FT_Raster_Params params; /* check glyph image format */ @@ -136,7 +446,10 @@ } /* check mode */ - if ( mode != required_mode ) + if ( mode != FT_RENDER_MODE_NORMAL && + mode != FT_RENDER_MODE_LIGHT && + mode != FT_RENDER_MODE_LCD && + mode != FT_RENDER_MODE_LCD_V ) { error = FT_THROW( Cannot_Render_Glyph ); goto Exit; @@ -155,6 +468,9 @@ goto Exit; } + if ( !bitmap->rows || !bitmap->pitch ) + goto Exit; + /* allocate new one */ if ( FT_ALLOC_MULT( bitmap->buffer, bitmap->rows, bitmap->pitch ) ) goto Exit; @@ -178,188 +494,57 @@ if ( x_shift || y_shift ) FT_Outline_Translate( outline, x_shift, y_shift ); - /* set up parameters */ - params.target = bitmap; - params.source = outline; - params.flags = FT_RASTER_FLAG_AA; - -#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING - - /* implode outline if needed */ + if ( mode == FT_RENDER_MODE_NORMAL || + mode == FT_RENDER_MODE_LIGHT ) { - FT_Vector* points = outline->points; - FT_Vector* points_end = points + outline->n_points; - FT_Vector* vec; - - - if ( hmul ) - for ( vec = points; vec < points_end; vec++ ) - vec->x *= 3; - - if ( vmul ) - for ( vec = points; vec < points_end; vec++ ) - vec->y *= 3; - } - - /* render outline into the bitmap */ - error = render->raster_render( render->raster, ¶ms ); - - /* deflate outline if needed */ - { - FT_Vector* points = outline->points; - FT_Vector* points_end = points + outline->n_points; - FT_Vector* vec; - - - if ( hmul ) - for ( vec = points; vec < points_end; vec++ ) - vec->x /= 3; - - if ( vmul ) - for ( vec = points; vec < points_end; vec++ ) - vec->y /= 3; - } - - if ( error ) - goto Exit; - - /* finally apply filtering */ - if ( hmul || vmul ) - { - FT_Byte* lcd_weights; - FT_Bitmap_LcdFilterFunc lcd_filter_func; - - - /* Per-face LCD filtering takes priority if set up. */ - if ( slot->face && slot->face->internal->lcd_filter_func ) - { - lcd_weights = slot->face->internal->lcd_weights; - lcd_filter_func = slot->face->internal->lcd_filter_func; - } + if ( outline->flags & FT_OUTLINE_OVERLAP ) + error = ft_smooth_raster_overlap( render, outline, bitmap ); else { - lcd_weights = slot->library->lcd_weights; - lcd_filter_func = slot->library->lcd_filter_func; - } + FT_Raster_Params params; - if ( lcd_filter_func ) - lcd_filter_func( bitmap, lcd_weights ); - } -#else /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ + params.target = bitmap; + params.source = outline; + params.flags = FT_RASTER_FLAG_AA; - if ( hmul ) /* lcd */ + error = render->raster_render( render->raster, ¶ms ); + } + } + else { - FT_Byte* line; - FT_Byte* temp = NULL; - FT_UInt i, j; - - unsigned int height = bitmap->rows; - unsigned int width = bitmap->width; - int pitch = bitmap->pitch; - - FT_Vector* sub = slot->library->lcd_geometry; + if ( mode == FT_RENDER_MODE_LCD ) + error = ft_smooth_raster_lcd ( render, outline, bitmap ); + else if ( mode == FT_RENDER_MODE_LCD_V ) + error = ft_smooth_raster_lcdv( render, outline, bitmap ); +#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING - /* Render 3 separate monochrome bitmaps, shifting the outline. */ - width /= 3; - - FT_Outline_Translate( outline, - -sub[0].x, - -sub[0].y ); - error = render->raster_render( render->raster, ¶ms ); - if ( error ) - goto Exit; - - bitmap->buffer += width; - FT_Outline_Translate( outline, - sub[0].x - sub[1].x, - sub[0].y - sub[1].y ); - error = render->raster_render( render->raster, ¶ms ); - bitmap->buffer -= width; - if ( error ) - goto Exit; - - bitmap->buffer += 2 * width; - FT_Outline_Translate( outline, - sub[1].x - sub[2].x, - sub[1].y - sub[2].y ); - error = render->raster_render( render->raster, ¶ms ); - bitmap->buffer -= 2 * width; - if ( error ) - goto Exit; - - x_shift -= sub[2].x; - y_shift -= sub[2].y; - - /* XXX: Rearrange the bytes according to FT_PIXEL_MODE_LCD. */ - /* XXX: It is more efficient to render every third byte above. */ + /* finally apply filtering */ + { + FT_Byte* lcd_weights; + FT_Bitmap_LcdFilterFunc lcd_filter_func; - if ( FT_ALLOC( temp, (FT_ULong)pitch ) ) - goto Exit; - for ( i = 0; i < height; i++ ) - { - line = bitmap->buffer + i * (FT_ULong)pitch; - for ( j = 0; j < width; j++ ) + /* Per-face LCD filtering takes priority if set up. */ + if ( slot->face && slot->face->internal->lcd_filter_func ) { - temp[3 * j ] = line[j]; - temp[3 * j + 1] = line[j + width]; - temp[3 * j + 2] = line[j + width + width]; + lcd_weights = slot->face->internal->lcd_weights; + lcd_filter_func = slot->face->internal->lcd_filter_func; + } + else + { + lcd_weights = slot->library->lcd_weights; + lcd_filter_func = slot->library->lcd_filter_func; } - FT_MEM_COPY( line, temp, pitch ); - } - - FT_FREE( temp ); - } - else if ( vmul ) /* lcd_v */ - { - int pitch = bitmap->pitch; - - FT_Vector* sub = slot->library->lcd_geometry; + if ( lcd_filter_func ) + lcd_filter_func( bitmap, lcd_weights ); + } - /* Render 3 separate monochrome bitmaps, shifting the outline. */ - /* Notice that the subpixel geometry vectors are rotated. */ - /* Triple the pitch to render on each third row. */ - bitmap->pitch *= 3; - bitmap->rows /= 3; - - FT_Outline_Translate( outline, - -sub[0].y, - sub[0].x ); - error = render->raster_render( render->raster, ¶ms ); - if ( error ) - goto Exit; - - bitmap->buffer += pitch; - FT_Outline_Translate( outline, - sub[0].y - sub[1].y, - sub[1].x - sub[0].x ); - error = render->raster_render( render->raster, ¶ms ); - bitmap->buffer -= pitch; - if ( error ) - goto Exit; - - bitmap->buffer += 2 * pitch; - FT_Outline_Translate( outline, - sub[1].y - sub[2].y, - sub[2].x - sub[1].x ); - error = render->raster_render( render->raster, ¶ms ); - bitmap->buffer -= 2 * pitch; - if ( error ) - goto Exit; - - x_shift -= sub[2].y; - y_shift += sub[2].x; +#endif /* FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ - bitmap->pitch /= 3; - bitmap->rows *= 3; } - else /* grayscale */ - error = render->raster_render( render->raster, ¶ms ); - -#endif /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ Exit: if ( !error ) @@ -380,45 +565,6 @@ } - /* convert a slot's glyph image into a bitmap */ - static FT_Error - ft_smooth_render( FT_Renderer render, - FT_GlyphSlot slot, - FT_Render_Mode mode, - const FT_Vector* origin ) - { - if ( mode == FT_RENDER_MODE_LIGHT ) - mode = FT_RENDER_MODE_NORMAL; - - return ft_smooth_render_generic( render, slot, mode, origin, - FT_RENDER_MODE_NORMAL ); - } - - - /* convert a slot's glyph image into a horizontal LCD bitmap */ - static FT_Error - ft_smooth_render_lcd( FT_Renderer render, - FT_GlyphSlot slot, - FT_Render_Mode mode, - const FT_Vector* origin ) - { - return ft_smooth_render_generic( render, slot, mode, origin, - FT_RENDER_MODE_LCD ); - } - - - /* convert a slot's glyph image into a vertical LCD bitmap */ - static FT_Error - ft_smooth_render_lcd_v( FT_Renderer render, - FT_GlyphSlot slot, - FT_Render_Mode mode, - const FT_Vector* origin ) - { - return ft_smooth_render_generic( render, slot, mode, origin, - FT_RENDER_MODE_LCD_V ); - } - - FT_DEFINE_RENDERER( ft_smooth_renderer_class, @@ -446,58 +592,4 @@ ) - FT_DEFINE_RENDERER( - ft_smooth_lcd_renderer_class, - - FT_MODULE_RENDERER, - sizeof ( FT_RendererRec ), - - "smooth-lcd", - 0x10000L, - 0x20000L, - - NULL, /* module specific interface */ - - (FT_Module_Constructor)ft_smooth_init, /* module_init */ - (FT_Module_Destructor) NULL, /* module_done */ - (FT_Module_Requester) NULL, /* get_interface */ - - FT_GLYPH_FORMAT_OUTLINE, - - (FT_Renderer_RenderFunc) ft_smooth_render_lcd, /* render_glyph */ - (FT_Renderer_TransformFunc)ft_smooth_transform, /* transform_glyph */ - (FT_Renderer_GetCBoxFunc) ft_smooth_get_cbox, /* get_glyph_cbox */ - (FT_Renderer_SetModeFunc) ft_smooth_set_mode, /* set_mode */ - - (FT_Raster_Funcs*)&ft_grays_raster /* raster_class */ - ) - - - FT_DEFINE_RENDERER( - ft_smooth_lcdv_renderer_class, - - FT_MODULE_RENDERER, - sizeof ( FT_RendererRec ), - - "smooth-lcdv", - 0x10000L, - 0x20000L, - - NULL, /* module specific interface */ - - (FT_Module_Constructor)ft_smooth_init, /* module_init */ - (FT_Module_Destructor) NULL, /* module_done */ - (FT_Module_Requester) NULL, /* get_interface */ - - FT_GLYPH_FORMAT_OUTLINE, - - (FT_Renderer_RenderFunc) ft_smooth_render_lcd_v, /* render_glyph */ - (FT_Renderer_TransformFunc)ft_smooth_transform, /* transform_glyph */ - (FT_Renderer_GetCBoxFunc) ft_smooth_get_cbox, /* get_glyph_cbox */ - (FT_Renderer_SetModeFunc) ft_smooth_set_mode, /* set_mode */ - - (FT_Raster_Funcs*)&ft_grays_raster /* raster_class */ - ) - - /* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/ftsmooth.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/ftsmooth.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/ftsmooth.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/ftsmooth.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Anti-aliasing renderer interface (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define FTSMOOTH_H_ -#include <ft2build.h> -#include FT_RENDER_H +#include <freetype/ftrender.h> FT_BEGIN_HEADER @@ -29,10 +28,6 @@ FT_DECLARE_RENDERER( ft_smooth_renderer_class ) - FT_DECLARE_RENDERER( ft_smooth_lcd_renderer_class ) - - FT_DECLARE_RENDERER( ft_smooth_lcdv_renderer_class ) - FT_END_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/ftspic.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/ftspic.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/ftspic.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/ftspic.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,118 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftspic.c */ -/* */ -/* The FreeType position independent code services for smooth module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_OBJECTS_H -#include "ftspic.h" -#include "ftsmerrs.h" - - -#ifdef FT_CONFIG_OPTION_PIC - - /* forward declaration of PIC init functions from ftgrays.c */ - void - FT_Init_Class_ft_grays_raster( FT_Raster_Funcs* funcs ); - - - void - ft_smooth_renderer_class_pic_free( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Memory memory = library->memory; - - - if ( pic_container->smooth ) - { - SmoothPIC* container = (SmoothPIC*)pic_container->smooth; - - - if ( --container->ref_count ) - return; - - FT_FREE( container ); - pic_container->smooth = NULL; - } - } - - - FT_Error - ft_smooth_renderer_class_pic_init( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Error error = FT_Err_Ok; - SmoothPIC* container = NULL; - FT_Memory memory = library->memory; - - - /* since this function also serve smooth_lcd and smooth_lcdv renderers, - it implements reference counting */ - if ( pic_container->smooth ) - { - ((SmoothPIC*)pic_container->smooth)->ref_count++; - return error; - } - - /* allocate pointer, clear and set global container pointer */ - if ( FT_ALLOC( container, sizeof ( *container ) ) ) - return error; - FT_MEM_SET( container, 0, sizeof ( *container ) ); - pic_container->smooth = container; - - container->ref_count = 1; - - /* initialize pointer table - */ - /* this is how the module usually expects this data */ - FT_Init_Class_ft_grays_raster( &container->ft_grays_raster ); - - return error; - } - - - /* re-route these init and free functions to the above functions */ - FT_Error - ft_smooth_lcd_renderer_class_pic_init( FT_Library library ) - { - return ft_smooth_renderer_class_pic_init( library ); - } - - - void - ft_smooth_lcd_renderer_class_pic_free( FT_Library library ) - { - ft_smooth_renderer_class_pic_free( library ); - } - - - FT_Error - ft_smooth_lcdv_renderer_class_pic_init( FT_Library library ) - { - return ft_smooth_renderer_class_pic_init( library ); - } - - - void - ft_smooth_lcdv_renderer_class_pic_free( FT_Library library ) - { - ft_smooth_renderer_class_pic_free( library ); - } - -#endif /* FT_CONFIG_OPTION_PIC */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/ftspic.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/ftspic.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/ftspic.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/ftspic.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,75 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftspic.h */ -/* */ -/* The FreeType position independent code services for smooth module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef FTSPIC_H_ -#define FTSPIC_H_ - - -#include FT_INTERNAL_PIC_H - - -FT_BEGIN_HEADER - -#ifndef FT_CONFIG_OPTION_PIC - -#define FT_GRAYS_RASTER_GET ft_grays_raster - -#else /* FT_CONFIG_OPTION_PIC */ - - typedef struct SmoothPIC_ - { - int ref_count; - FT_Raster_Funcs ft_grays_raster; - - } SmoothPIC; - - -#define GET_PIC( lib ) \ - ( (SmoothPIC*)( (lib)->pic_container.smooth ) ) -#define FT_GRAYS_RASTER_GET ( GET_PIC( library )->ft_grays_raster ) - - - /* see ftspic.c for the implementation */ - void - ft_smooth_renderer_class_pic_free( FT_Library library ); - - void - ft_smooth_lcd_renderer_class_pic_free( FT_Library library ); - - void - ft_smooth_lcdv_renderer_class_pic_free( FT_Library library ); - - FT_Error - ft_smooth_renderer_class_pic_init( FT_Library library ); - - FT_Error - ft_smooth_lcd_renderer_class_pic_init( FT_Library library ); - - FT_Error - ft_smooth_lcdv_renderer_class_pic_init( FT_Library library ); - -#endif /* FT_CONFIG_OPTION_PIC */ - - /* */ - -FT_END_HEADER - -#endif /* FTSPIC_H_ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -18,10 +18,6 @@ define SMOOTH_RENDERER $(OPEN_DRIVER) FT_Renderer_Class, ft_smooth_renderer_class $(CLOSE_DRIVER) $(ECHO_DRIVER)smooth $(ECHO_DRIVER_DESC)anti-aliased bitmap renderer$(ECHO_DRIVER_DONE) -$(OPEN_DRIVER) FT_Renderer_Class, ft_smooth_lcd_renderer_class $(CLOSE_DRIVER) -$(ECHO_DRIVER)smooth $(ECHO_DRIVER_DESC)anti-aliased bitmap renderer for LCDs$(ECHO_DRIVER_DONE) -$(OPEN_DRIVER) FT_Renderer_Class, ft_smooth_lcdv_renderer_class $(CLOSE_DRIVER) -$(ECHO_DRIVER)smooth $(ECHO_DRIVER_DESC)anti-aliased bitmap renderer for vertical LCDs$(ECHO_DRIVER_DONE) endef # EOF diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/smooth.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/smooth.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/smooth/smooth.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/smooth/smooth.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType anti-aliasing rasterer module component (body only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,7 +17,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "ftgrays.c" #include "ftsmooth.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,5 +0,0 @@ -# Jamfile for src/tools -# -SubDir FT2_TOP src tools ; - -Main apinames : apinames.c ; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/afblue.pl qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/afblue.pl --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/afblue.pl 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/afblue.pl 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ # # Process a blue zone character data file. # -# Copyright (C) 2013-2019 by +# Copyright (C) 2013-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/docmaker/content.py qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/docmaker/content.py --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/docmaker/content.py 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/docmaker/content.py 1970-01-01 08:00:00.000000000 +0800 @@ -1,672 +0,0 @@ -# -# content.py -# -# Parse comment blocks to build content blocks (library file). -# -# Copyright 2002-2018 by -# David Turner. -# -# This file is part of the FreeType project, and may only be used, -# modified, and distributed under the terms of the FreeType project -# license, LICENSE.TXT. By continuing to use, modify, or distribute -# this file you indicate that you have read the license and -# understand and accept it fully. - -# -# This file contains routines to parse documentation comment blocks, -# building more structured objects out of them. -# - - -from sources import * -from utils import * - -import string, re - - -# -# Regular expressions to detect code sequences. `Code sequences' are simply -# code fragments embedded in '{' and '}', as demonstrated in the following -# example. -# -# { -# x = y + z; -# if ( zookoo == 2 ) -# { -# foobar(); -# } -# } -# -# Note that the indentation of the first opening brace and the last closing -# brace must be exactly the same. The code sequence itself should have a -# larger indentation than the surrounding braces. -# -re_code_start = re.compile( r"(\s*){\s*$" ) -re_code_end = re.compile( r"(\s*)}\s*$" ) - - -# -# A regular expression to isolate identifiers from other text. Two syntax -# forms are supported: -# -# <name> -# <name>[<id>] -# -# where both `<name>' and `<id>' consist of alphanumeric characters, `_', -# and `-'. Use `<id>' if there are multiple, valid `<name>' entries; in the -# index, `<id>' will be appended in parentheses. -# -# For example, -# -# stem_darkening[autofit] -# -# becomes `stem_darkening (autofit)' in the index. -# -re_identifier = re.compile( r""" - ((?:\w|-)+ - (?:\[(?:\w|-)+\])?) - """, re.VERBOSE ) - - -# -# We collect macro names ending in `_H' (group 1), as defined in -# `freetype/config/ftheader.h'. While outputting the object data, we use -# this info together with the object's file location (group 2) to emit the -# appropriate header file macro and its associated file name before the -# object itself. -# -# Example: -# -# #define FT_FREETYPE_H <freetype.h> -# -re_header_macro = re.compile( r'^#define\s{1,}(\w{1,}_H)\s{1,}<(.*)>' ) - - -################################################################ -## -## DOC CODE CLASS -## -## The `DocCode' class is used to store source code lines. -## -## `self.lines' contains a set of source code lines that will be dumped as -## HTML in a <PRE> tag. -## -## The object is filled line by line by the parser; it strips the leading -## `margin' space from each input line before storing it in `self.lines'. -## -class DocCode: - - def __init__( self, margin, lines ): - self.lines = [] - self.words = None - - # remove margin spaces - for l in lines: - if string.strip( l[:margin] ) == "": - l = l[margin:] - self.lines.append( l ) - - def dump( self, prefix = "", width = 60 ): - lines = self.dump_lines( 0, width ) - for l in lines: - print( prefix + l ) - - def dump_lines( self, margin = 0, width = 60 ): - result = [] - for l in self.lines: - result.append( " " * margin + l ) - return result - - - -################################################################ -## -## DOC PARA CLASS -## -## `Normal' text paragraphs are stored in the `DocPara' class. -## -## `self.words' contains the list of words that make up the paragraph. -## -class DocPara: - - def __init__( self, lines ): - self.lines = None - self.words = [] - for l in lines: - l = string.strip( l ) - self.words.extend( string.split( l ) ) - - def dump( self, prefix = "", width = 60 ): - lines = self.dump_lines( 0, width ) - for l in lines: - print( prefix + l ) - - def dump_lines( self, margin = 0, width = 60 ): - cur = "" # current line - col = 0 # current width - result = [] - - for word in self.words: - ln = len( word ) - if col > 0: - ln = ln + 1 - - if col + ln > width: - result.append( " " * margin + cur ) - cur = word - col = len( word ) - else: - if col > 0: - cur = cur + " " - cur = cur + word - col = col + ln - - if col > 0: - result.append( " " * margin + cur ) - - return result - - -################################################################ -## -## DOC FIELD CLASS -## -## The `DocField' class stores a list containing either `DocPara' or -## `DocCode' objects. Each DocField object also has an optional `name' -## that is used when the object corresponds to a field or value definition. -## -class DocField: - - def __init__( self, name, lines ): - self.name = name # can be `None' for normal paragraphs/sources - self.items = [] # list of items - - mode_none = 0 # start parsing mode - mode_code = 1 # parsing code sequences - mode_para = 3 # parsing normal paragraph - - margin = -1 # current code sequence indentation - cur_lines = [] - - # analyze the markup lines to check whether they contain paragraphs, - # code sequences, or fields definitions - # - start = 0 - mode = mode_none - - for l in lines: - # are we parsing a code sequence? - if mode == mode_code: - m = re_code_end.match( l ) - if m and len( m.group( 1 ) ) <= margin: - # that's it, we finished the code sequence - code = DocCode( 0, cur_lines ) - self.items.append( code ) - margin = -1 - cur_lines = [] - mode = mode_none - else: - # otherwise continue the code sequence - cur_lines.append( l[margin:] ) - else: - # start of code sequence? - m = re_code_start.match( l ) - if m: - # save current lines - if cur_lines: - para = DocPara( cur_lines ) - self.items.append( para ) - cur_lines = [] - - # switch to code extraction mode - margin = len( m.group( 1 ) ) - mode = mode_code - else: - if not string.split( l ) and cur_lines: - # if the line is empty, we end the current paragraph, - # if any - para = DocPara( cur_lines ) - self.items.append( para ) - cur_lines = [] - else: - # otherwise, simply add the line to the current - # paragraph - cur_lines.append( l ) - - if mode == mode_code: - # unexpected end of code sequence - code = DocCode( margin, cur_lines ) - self.items.append( code ) - elif cur_lines: - para = DocPara( cur_lines ) - self.items.append( para ) - - def dump( self, prefix = "" ): - if self.field: - print( prefix + self.field + " ::" ) - prefix = prefix + "----" - - first = 1 - for p in self.items: - if not first: - print( "" ) - p.dump( prefix ) - first = 0 - - def dump_lines( self, margin = 0, width = 60 ): - result = [] - nl = None - - for p in self.items: - if nl: - result.append( "" ) - - result.extend( p.dump_lines( margin, width ) ) - nl = 1 - - return result - - -# -# A regular expression to detect field definitions. -# -# Examples: -# -# foo :: -# foo.bar :: -# -re_field = re.compile( r""" - \s* - ( - \w* - | - \w (\w | \.)* \w - ) - \s* :: - """, re.VERBOSE ) - - -################################################################ -## -## DOC MARKUP CLASS -## -class DocMarkup: - - def __init__( self, tag, lines ): - self.tag = string.lower( tag ) - self.fields = [] - - cur_lines = [] - field = None - mode = 0 - - for l in lines: - m = re_field.match( l ) - if m: - # We detected the start of a new field definition. - - # first, save the current one - if cur_lines: - f = DocField( field, cur_lines ) - self.fields.append( f ) - cur_lines = [] - field = None - - field = m.group( 1 ) # record field name - ln = len( m.group( 0 ) ) - l = " " * ln + l[ln:] - cur_lines = [l] - else: - cur_lines.append( l ) - - if field or cur_lines: - f = DocField( field, cur_lines ) - self.fields.append( f ) - - def get_name( self ): - try: - return self.fields[0].items[0].words[0] - except: - return None - - def dump( self, margin ): - print( " " * margin + "<" + self.tag + ">" ) - for f in self.fields: - f.dump( " " ) - print( " " * margin + "</" + self.tag + ">" ) - - -################################################################ -## -## DOC CHAPTER CLASS -## -class DocChapter: - - def __init__( self, block ): - self.block = block - self.sections = [] - if block: - self.name = block.name - self.title = block.get_markup_words( "title" ) - self.order = block.get_markup_words( "sections" ) - else: - self.name = "Other" - self.title = string.split( "Miscellaneous" ) - self.order = [] - - -################################################################ -## -## DOC SECTION CLASS -## -class DocSection: - - def __init__( self, name = "Other" ): - self.name = name - self.blocks = {} - self.block_names = [] # ordered block names in section - self.defs = [] - self.abstract = "" - self.description = "" - self.order = [] - self.title = "ERROR" - self.chapter = None - - def add_def( self, block ): - self.defs.append( block ) - - def add_block( self, block ): - self.block_names.append( block.name ) - self.blocks[block.name] = block - - def process( self ): - # look up one block that contains a valid section description - for block in self.defs: - title = block.get_markup_text( "title" ) - if title: - self.title = title - self.abstract = block.get_markup_words( "abstract" ) - self.description = block.get_markup_items( "description" ) - self.order = block.get_markup_words_all( "order" ) - return - - def reorder( self ): - self.block_names = sort_order_list( self.block_names, self.order ) - - -################################################################ -## -## CONTENT PROCESSOR CLASS -## -class ContentProcessor: - - def __init__( self ): - """Initialize a block content processor.""" - self.reset() - - self.sections = {} # dictionary of documentation sections - self.section = None # current documentation section - - self.chapters = [] # list of chapters - - self.headers = {} # dictionary of header macros - - def set_section( self, section_name ): - """Set current section during parsing.""" - if not section_name in self.sections: - section = DocSection( section_name ) - self.sections[section_name] = section - self.section = section - else: - self.section = self.sections[section_name] - - def add_chapter( self, block ): - chapter = DocChapter( block ) - self.chapters.append( chapter ) - - def reset( self ): - """Reset the content processor for a new block.""" - self.markups = [] - self.markup = None - self.markup_lines = [] - - def add_markup( self ): - """Add a new markup section.""" - if self.markup and self.markup_lines: - - # get rid of last line of markup if it's empty - marks = self.markup_lines - if len( marks ) > 0 and not string.strip( marks[-1] ): - self.markup_lines = marks[:-1] - - m = DocMarkup( self.markup, self.markup_lines ) - - self.markups.append( m ) - - self.markup = None - self.markup_lines = [] - - def process_content( self, content ): - """Process a block content and return a list of DocMarkup objects - corresponding to it.""" - markup = None - markup_lines = [] - first = 1 - - margin = -1 - in_code = 0 - - for line in content: - if in_code: - m = re_code_end.match( line ) - if m and len( m.group( 1 ) ) <= margin: - in_code = 0 - margin = -1 - else: - m = re_code_start.match( line ) - if m: - in_code = 1 - margin = len( m.group( 1 ) ) - - found = None - - if not in_code: - for t in re_markup_tags: - m = t.match( line ) - if m: - found = string.lower( m.group( 1 ) ) - prefix = len( m.group( 0 ) ) - # remove markup from line - line = " " * prefix + line[prefix:] - break - - # is it the start of a new markup section ? - if found: - first = 0 - self.add_markup() # add current markup content - self.markup = found - if len( string.strip( line ) ) > 0: - self.markup_lines.append( line ) - elif first == 0: - self.markup_lines.append( line ) - - self.add_markup() - - return self.markups - - def parse_sources( self, source_processor ): - blocks = source_processor.blocks - count = len( blocks ) - - for n in range( count ): - source = blocks[n] - if source.content: - # this is a documentation comment, we need to catch - # all following normal blocks in the "follow" list - # - follow = [] - m = n + 1 - while m < count and not blocks[m].content: - follow.append( blocks[m] ) - m = m + 1 - - doc_block = DocBlock( source, follow, self ) - - def finish( self ): - # process all sections to extract their abstract, description - # and ordered list of items - # - for sec in self.sections.values(): - sec.process() - - # process chapters to check that all sections are correctly - # listed there - for chap in self.chapters: - for sec in chap.order: - if sec in self.sections: - section = self.sections[sec] - section.chapter = chap - section.reorder() - chap.sections.append( section ) - else: - sys.stderr.write( "WARNING: chapter '" + \ - chap.name + "' in " + chap.block.location() + \ - " lists unknown section '" + sec + "'\n" ) - - # check that all sections are in a chapter - # - others = [] - for sec in self.sections.values(): - if not sec.chapter: - sec.reorder() - others.append( sec ) - - # create a new special chapter for all remaining sections - # when necessary - # - if others: - chap = DocChapter( None ) - chap.sections = others - self.chapters.append( chap ) - - -################################################################ -## -## DOC BLOCK CLASS -## -class DocBlock: - - def __init__( self, source, follow, processor ): - processor.reset() - - self.source = source - self.code = [] - self.type = "ERRTYPE" - self.name = "ERRNAME" - self.section = processor.section - self.markups = processor.process_content( source.content ) - - # compute block type from first markup tag - try: - self.type = self.markups[0].tag - except: - pass - - # compute block name from first markup paragraph - try: - markup = self.markups[0] - para = markup.fields[0].items[0] - name = para.words[0] - m = re_identifier.match( name ) - if m: - name = m.group( 1 ) - self.name = name - except: - pass - - if self.type == "section": - # detect new section starts - processor.set_section( self.name ) - processor.section.add_def( self ) - elif self.type == "chapter": - # detect new chapter - processor.add_chapter( self ) - else: - processor.section.add_block( self ) - - # now, compute the source lines relevant to this documentation - # block. We keep normal comments in for obvious reasons (??) - source = [] - for b in follow: - if b.format: - break - for l in b.lines: - # collect header macro definitions - m = re_header_macro.match( l ) - if m: - processor.headers[m.group( 2 )] = m.group( 1 ); - - # we use "/* */" as a separator - if re_source_sep.match( l ): - break - source.append( l ) - - # now strip the leading and trailing empty lines from the sources - start = 0 - end = len( source ) - 1 - - while start < end and not string.strip( source[start] ): - start = start + 1 - - while start < end and not string.strip( source[end] ): - end = end - 1 - - if start == end and not string.strip( source[start] ): - self.code = [] - else: - self.code = source[start:end + 1] - - def location( self ): - return self.source.location() - - def get_markup( self, tag_name ): - """Return the DocMarkup corresponding to a given tag in a block.""" - for m in self.markups: - if m.tag == string.lower( tag_name ): - return m - return None - - def get_markup_words( self, tag_name ): - try: - m = self.get_markup( tag_name ) - return m.fields[0].items[0].words - except: - return [] - - def get_markup_words_all( self, tag_name ): - try: - m = self.get_markup( tag_name ) - words = [] - for item in m.fields[0].items: - # We honour empty lines in an `<Order>' section element by - # adding the sentinel `/empty/'. The formatter should then - # convert it to an appropriate representation in the - # `section_enter' function. - words += item.words - words.append( "/empty/" ) - return words - except: - return [] - - def get_markup_text( self, tag_name ): - result = self.get_markup_words( tag_name ) - return string.join( result ) - - def get_markup_items( self, tag_name ): - try: - m = self.get_markup( tag_name ) - return m.fields[0].items - except: - return None - -# eof diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/docmaker/docbeauty.py qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/docmaker/docbeauty.py --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/docmaker/docbeauty.py 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/docmaker/docbeauty.py 1970-01-01 08:00:00.000000000 +0800 @@ -1,111 +0,0 @@ -#!/usr/bin/env python -# -# DocBeauty (c) 2003, 2004, 2008 David Turner <david@freetype.org> -# -# This program is used to beautify the documentation comments used -# in the FreeType 2 public headers. -# - -from sources import * -from content import * -from utils import * - -import sys, os, string, getopt - - -content_processor = ContentProcessor() - - -def beautify_block( block ): - if block.content: - content_processor.reset() - - markups = content_processor.process_content( block.content ) - text = [] - first = 1 - - for markup in markups: - text.extend( markup.beautify( first ) ) - first = 0 - - # now beautify the documentation "borders" themselves - lines = [" /*************************************************************************"] - for l in text: - lines.append( " *" + l ) - lines.append( " */" ) - - block.lines = lines - - -def usage(): - print( "\nDocBeauty 0.1 Usage information\n" ) - print( " docbeauty [options] file1 [file2 ...]\n" ) - print( "using the following options:\n" ) - print( " -h : print this page" ) - print( " -b : backup original files with the 'orig' extension" ) - print( "" ) - print( " --backup : same as -b" ) - - -def main( argv ): - """main program loop""" - - global output_dir - - try: - opts, args = getopt.getopt( sys.argv[1:], \ - "hb", \ - ["help", "backup"] ) - except getopt.GetoptError: - usage() - sys.exit( 2 ) - - if args == []: - usage() - sys.exit( 1 ) - - # process options - # - output_dir = None - do_backup = None - - for opt in opts: - if opt[0] in ( "-h", "--help" ): - usage() - sys.exit( 0 ) - - if opt[0] in ( "-b", "--backup" ): - do_backup = 1 - - # create context and processor - source_processor = SourceProcessor() - - # retrieve the list of files to process - file_list = make_file_list( args ) - for filename in file_list: - source_processor.parse_file( filename ) - - for block in source_processor.blocks: - beautify_block( block ) - - new_name = filename + ".new" - ok = None - - try: - file = open( new_name, "wt" ) - for block in source_processor.blocks: - for line in block.lines: - file.write( line ) - file.write( "\n" ) - file.close() - except: - ok = 0 - - -# if called from the command line -# -if __name__ == '__main__': - main( sys.argv ) - - -# eof diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/docmaker/docmaker.py qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/docmaker/docmaker.py --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/docmaker/docmaker.py 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/docmaker/docmaker.py 1970-01-01 08:00:00.000000000 +0800 @@ -1,115 +0,0 @@ -#!/usr/bin/env python -# -# docmaker.py -# -# Convert source code markup to HTML documentation. -# -# Copyright 2002-2018 by -# David Turner. -# -# This file is part of the FreeType project, and may only be used, -# modified, and distributed under the terms of the FreeType project -# license, LICENSE.TXT. By continuing to use, modify, or distribute -# this file you indicate that you have read the license and -# understand and accept it fully. - -# -# This program is a re-write of the original DocMaker tool used to generate -# the API Reference of the FreeType font rendering engine by converting -# in-source comments into structured HTML. -# -# This new version is capable of outputting XML data as well as accepting -# more liberal formatting options. It also uses regular expression matching -# and substitution to speed up operation significantly. -# - -from sources import * -from content import * -from utils import * -from formatter import * -from tohtml import * - -import utils - -import sys, glob, getopt - - -def usage(): - print( "\nDocMaker Usage information\n" ) - print( " docmaker [options] file1 [file2 ...]\n" ) - print( "using the following options:\n" ) - print( " -h : print this page" ) - print( " -t : set project title, as in '-t \"My Project\"'" ) - print( " -o : set output directory, as in '-o mydir'" ) - print( " -p : set documentation prefix, as in '-p ft2'" ) - print( "" ) - print( " --title : same as -t, as in '--title=\"My Project\"'" ) - print( " --output : same as -o, as in '--output=mydir'" ) - print( " --prefix : same as -p, as in '--prefix=ft2'" ) - - -def main( argv ): - """Main program loop.""" - - global output_dir - - try: - opts, args = getopt.getopt( sys.argv[1:], - "ht:o:p:", - ["help", "title=", "output=", "prefix="] ) - except getopt.GetoptError: - usage() - sys.exit( 2 ) - - if args == []: - usage() - sys.exit( 1 ) - - # process options - project_title = "Project" - project_prefix = None - output_dir = None - - for opt in opts: - if opt[0] in ( "-h", "--help" ): - usage() - sys.exit( 0 ) - - if opt[0] in ( "-t", "--title" ): - project_title = opt[1] - - if opt[0] in ( "-o", "--output" ): - utils.output_dir = opt[1] - - if opt[0] in ( "-p", "--prefix" ): - project_prefix = opt[1] - - check_output() - - # create context and processor - source_processor = SourceProcessor() - content_processor = ContentProcessor() - - # retrieve the list of files to process - file_list = make_file_list( args ) - for filename in file_list: - source_processor.parse_file( filename ) - content_processor.parse_sources( source_processor ) - - # process sections - content_processor.finish() - - formatter = HtmlFormatter( content_processor, - project_title, - project_prefix ) - - formatter.toc_dump() - formatter.index_dump() - formatter.section_dump_all() - - -# if called from the command line -if __name__ == '__main__': - main( sys.argv ) - -# eof diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/docmaker/formatter.py qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/docmaker/formatter.py --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/docmaker/formatter.py 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/docmaker/formatter.py 1970-01-01 08:00:00.000000000 +0800 @@ -1,228 +0,0 @@ -# -# formatter.py -# -# Convert parsed content blocks to a structured document (library file). -# -# Copyright 2002-2018 by -# David Turner. -# -# This file is part of the FreeType project, and may only be used, -# modified, and distributed under the terms of the FreeType project -# license, LICENSE.TXT. By continuing to use, modify, or distribute -# this file you indicate that you have read the license and -# understand and accept it fully. - -# -# This is the base Formatter class. Its purpose is to convert a content -# processor's data into specific documents (i.e., table of contents, global -# index, and individual API reference indices). -# -# You need to sub-class it to output anything sensible. For example, the -# file `tohtml.py' contains the definition of the `HtmlFormatter' sub-class -# to output HTML. -# - - -from sources import * -from content import * -from utils import * - - -################################################################ -## -## FORMATTER CLASS -## -class Formatter: - - def __init__( self, processor ): - self.processor = processor - self.identifiers = {} - self.chapters = processor.chapters - self.sections = processor.sections.values() - self.block_index = [] - - # store all blocks in a dictionary - self.blocks = [] - for section in self.sections: - for block in section.blocks.values(): - self.add_identifier( block.name, block ) - - # add enumeration values to the index, since this is useful - for markup in block.markups: - if markup.tag == 'values': - for field in markup.fields: - self.add_identifier( field.name, block ) - - self.block_index = self.identifiers.keys() - self.block_index.sort( key = index_key ) - - # also add section names to dictionary (without making them appear - # in the index) - for section in self.sections: - self.add_identifier( section.name, section ) - - def add_identifier( self, name, block ): - if name in self.identifiers: - # duplicate name! - sys.stderr.write( "WARNING: duplicate definition for" - + " '" + name + "' " - + "in " + block.location() + ", " - + "previous definition in " - + self.identifiers[name].location() - + "\n" ) - else: - self.identifiers[name] = block - - # - # formatting the table of contents - # - def toc_enter( self ): - pass - - def toc_chapter_enter( self, chapter ): - pass - - def toc_section_enter( self, section ): - pass - - def toc_section_exit( self, section ): - pass - - def toc_chapter_exit( self, chapter ): - pass - - def toc_index( self, index_filename ): - pass - - def toc_exit( self ): - pass - - def toc_dump( self, toc_filename = None, index_filename = None ): - output = None - if toc_filename: - output = open_output( toc_filename ) - - self.toc_enter() - - for chap in self.processor.chapters: - - self.toc_chapter_enter( chap ) - - for section in chap.sections: - self.toc_section_enter( section ) - self.toc_section_exit( section ) - - self.toc_chapter_exit( chap ) - - self.toc_index( index_filename ) - - self.toc_exit() - - if output: - close_output( output ) - - # - # formatting the index - # - def index_enter( self ): - pass - - def index_name_enter( self, name ): - pass - - def index_name_exit( self, name ): - pass - - def index_exit( self ): - pass - - def index_dump( self, index_filename = None ): - output = None - if index_filename: - output = open_output( index_filename ) - - self.index_enter() - - for name in self.block_index: - self.index_name_enter( name ) - self.index_name_exit( name ) - - self.index_exit() - - if output: - close_output( output ) - - # - # formatting a section - # - def section_enter( self, section ): - pass - - def block_enter( self, block ): - pass - - def markup_enter( self, markup, block = None ): - pass - - def field_enter( self, field, markup = None, block = None ): - pass - - def field_exit( self, field, markup = None, block = None ): - pass - - def markup_exit( self, markup, block = None ): - pass - - def block_exit( self, block ): - pass - - def section_exit( self, section ): - pass - - def section_dump( self, section, section_filename = None ): - output = None - if section_filename: - output = open_output( section_filename ) - - self.section_enter( section ) - - for name in section.block_names: - skip_entry = 0 - try: - block = self.identifiers[name] - # `block_names' can contain field names also, - # which we filter out - for markup in block.markups: - if markup.tag == 'values': - for field in markup.fields: - if field.name == name: - skip_entry = 1 - except: - skip_entry = 1 # this happens e.g. for `/empty/' entries - - if skip_entry: - continue - - self.block_enter( block ) - - for markup in block.markups[1:]: # always ignore first markup! - self.markup_enter( markup, block ) - - for field in markup.fields: - self.field_enter( field, markup, block ) - self.field_exit( field, markup, block ) - - self.markup_exit( markup, block ) - - self.block_exit( block ) - - self.section_exit( section ) - - if output: - close_output( output ) - - def section_dump_all( self ): - for section in self.sections: - self.section_dump( section ) - -# eof diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/docmaker/sources.py qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/docmaker/sources.py --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/docmaker/sources.py 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/docmaker/sources.py 1970-01-01 08:00:00.000000000 +0800 @@ -1,410 +0,0 @@ -# -# sources.py -# -# Convert source code comments to multi-line blocks (library file). -# -# Copyright 2002-2018 by -# David Turner. -# -# This file is part of the FreeType project, and may only be used, -# modified, and distributed under the terms of the FreeType project -# license, LICENSE.TXT. By continuing to use, modify, or distribute -# this file you indicate that you have read the license and -# understand and accept it fully. - -# -# This library file contains definitions of classes needed to decompose C -# source code files into a series of multi-line `blocks'. There are two -# kinds of blocks. -# -# - Normal blocks, which contain source code or ordinary comments. -# -# - Documentation blocks, which have restricted formatting, and whose text -# always start with a documentation markup tag like `<Function>', -# `<Type>', etc. -# -# The routines to process the content of documentation blocks are contained -# in file `content.py'; the classes and methods found here only deal with -# text parsing and basic documentation block extraction. -# - - -import fileinput, re, string - - -################################################################ -## -## SOURCE BLOCK FORMAT CLASS -## -## A simple class containing compiled regular expressions to detect -## potential documentation format block comments within C source code. -## -## The `column' pattern must contain a group to `unbox' the content of -## documentation comment blocks. -## -## Later on, paragraphs are converted to long lines, which simplifies the -## regular expressions that act upon the text. -## -class SourceBlockFormat: - - def __init__( self, id, start, column, end ): - """Create a block pattern, used to recognize special documentation - blocks.""" - self.id = id - self.start = re.compile( start, re.VERBOSE ) - self.column = re.compile( column, re.VERBOSE ) - self.end = re.compile( end, re.VERBOSE ) - - -# -# Format 1 documentation comment blocks. -# -# /************************************/ (at least 2 asterisks) -# /* */ -# /* */ -# /* */ -# /************************************/ (at least 2 asterisks) -# -start = r''' - \s* # any number of whitespace - /\*{2,}/ # followed by '/' and at least two asterisks then '/' - \s*$ # probably followed by whitespace -''' - -column = r''' - \s* # any number of whitespace - /\*{1} # followed by '/' and precisely one asterisk - ([^*].*) # followed by anything (group 1) - \*{1}/ # followed by one asterisk and a '/' - \s*$ # probably followed by whitespace -''' - -re_source_block_format1 = SourceBlockFormat( 1, start, column, start ) - - -# -# Format 2 documentation comment blocks. -# -# /************************************ (at least 2 asterisks) -# * -# * (1 asterisk) -# * -# */ (1 or more asterisks) -# -start = r''' - \s* # any number of whitespace - /\*{2,} # followed by '/' and at least two asterisks - \s*$ # probably followed by whitespace -''' - -column = r''' - \s* # any number of whitespace - \*{1}(?![*/]) # followed by precisely one asterisk not followed by `/' - (.*) # then anything (group1) -''' - -end = r''' - \s* # any number of whitespace - \*+/ # followed by at least one asterisk, then '/' -''' - -re_source_block_format2 = SourceBlockFormat( 2, start, column, end ) - - -# -# The list of supported documentation block formats. We could add new ones -# quite easily. -# -re_source_block_formats = [re_source_block_format1, re_source_block_format2] - - -# -# The following regular expressions correspond to markup tags within the -# documentation comment blocks. They are equivalent despite their different -# syntax. -# -# A markup tag consists of letters or character `-', to be found in group 1. -# -# Notice that a markup tag _must_ begin a new paragraph. -# -re_markup_tag1 = re.compile( r'''\s*<((?:\w|-)*)>''' ) # <xxxx> format -re_markup_tag2 = re.compile( r'''\s*@((?:\w|-)*):''' ) # @xxxx: format - -# -# The list of supported markup tags. We could add new ones quite easily. -# -re_markup_tags = [re_markup_tag1, re_markup_tag2] - - -# -# A regular expression to detect a cross reference, after markup tags have -# been stripped off. -# -# Two syntax forms are supported: -# -# @<name> -# @<name>[<id>] -# -# where both `<name>' and `<id>' consist of alphanumeric characters, `_', -# and `-'. Use `<id>' if there are multiple, valid `<name>' entries. -# -# Example: @foo[bar] -# -re_crossref = re.compile( r""" - @ - (?P<name>(?:\w|-)+ - (?:\[(?:\w|-)+\])?) - (?P<rest>.*) - """, re.VERBOSE ) - -# -# Two regular expressions to detect italic and bold markup, respectively. -# Group 1 is the markup, group 2 the rest of the line. -# -# Note that the markup is limited to words consisting of letters, digits, -# the characters `_' and `-', or an apostrophe (but not as the first -# character). -# -re_italic = re.compile( r"_((?:\w|-)(?:\w|'|-)*)_(.*)" ) # _italic_ -re_bold = re.compile( r"\*((?:\w|-)(?:\w|'|-)*)\*(.*)" ) # *bold* - -# -# This regular expression code to identify an URL has been taken from -# -# https://mail.python.org/pipermail/tutor/2002-September/017228.html -# -# (with slight modifications). -# -urls = r'(?:https?|telnet|gopher|file|wais|ftp)' -ltrs = r'\w' -gunk = r'/#~:.?+=&%@!\-' -punc = r'.:?\-' -any = "%(ltrs)s%(gunk)s%(punc)s" % { 'ltrs' : ltrs, - 'gunk' : gunk, - 'punc' : punc } -url = r""" - ( - \b # start at word boundary - %(urls)s : # need resource and a colon - [%(any)s] +? # followed by one or more of any valid - # character, but be conservative and - # take only what you need to... - (?= # [look-ahead non-consumptive assertion] - [%(punc)s]* # either 0 or more punctuation - (?: # [non-grouping parentheses] - [^%(any)s] | $ # followed by a non-url char - # or end of the string - ) - ) - ) - """ % {'urls' : urls, - 'any' : any, - 'punc' : punc } - -re_url = re.compile( url, re.VERBOSE | re.MULTILINE ) - -# -# A regular expression that stops collection of comments for the current -# block. -# -re_source_sep = re.compile( r'\s*/\*\s*\*/' ) # /* */ - -# -# A regular expression to find possible C identifiers while outputting -# source code verbatim, covering things like `*foo' or `(bar'. Group 1 is -# the prefix, group 2 the identifier -- since we scan lines from left to -# right, sequentially splitting the source code into prefix and identifier -# is fully sufficient for our purposes. -# -re_source_crossref = re.compile( r'(\W*)(\w*)' ) - -# -# A regular expression that matches a list of reserved C source keywords. -# -re_source_keywords = re.compile( '''\\b ( typedef | - struct | - enum | - union | - const | - char | - int | - short | - long | - void | - signed | - unsigned | - \#include | - \#define | - \#undef | - \#if | - \#ifdef | - \#ifndef | - \#else | - \#endif ) \\b''', re.VERBOSE ) - - -################################################################ -## -## SOURCE BLOCK CLASS -## -## There are two important fields in a `SourceBlock' object. -## -## self.lines -## A list of text lines for the corresponding block. -## -## self.content -## For documentation comment blocks only, this is the block content -## that has been `unboxed' from its decoration. This is `None' for all -## other blocks (i.e., sources or ordinary comments with no starting -## markup tag) -## -class SourceBlock: - - def __init__( self, processor, filename, lineno, lines ): - self.processor = processor - self.filename = filename - self.lineno = lineno - self.lines = lines[:] - self.format = processor.format - self.content = [] - - if self.format == None: - return - - words = [] - - # extract comment lines - lines = [] - - for line0 in self.lines: - m = self.format.column.match( line0 ) - if m: - lines.append( m.group( 1 ) ) - - # now, look for a markup tag - for l in lines: - l = string.strip( l ) - if len( l ) > 0: - for tag in re_markup_tags: - if tag.match( l ): - self.content = lines - return - - def location( self ): - return "(" + self.filename + ":" + repr( self.lineno ) + ")" - - # debugging only -- not used in normal operations - def dump( self ): - if self.content: - print( "{{{content start---" ) - for l in self.content: - print( l ) - print( "---content end}}}" ) - return - - fmt = "" - if self.format: - fmt = repr( self.format.id ) + " " - - for line in self.lines: - print( line ) - - -################################################################ -## -## SOURCE PROCESSOR CLASS -## -## The `SourceProcessor' is in charge of reading a C source file and -## decomposing it into a series of different `SourceBlock' objects. -## -## A SourceBlock object consists of the following data. -## -## - A documentation comment block using one of the layouts above. Its -## exact format will be discussed later. -## -## - Normal sources lines, including comments. -## -## -class SourceProcessor: - - def __init__( self ): - """Initialize a source processor.""" - self.blocks = [] - self.filename = None - self.format = None - self.lines = [] - - def reset( self ): - """Reset a block processor and clean up all its blocks.""" - self.blocks = [] - self.format = None - - def parse_file( self, filename ): - """Parse a C source file and add its blocks to the processor's - list.""" - self.reset() - - self.filename = filename - - fileinput.close() - self.format = None - self.lineno = 0 - self.lines = [] - - for line in fileinput.input( filename ): - # strip trailing newlines, important on Windows machines! - if line[-1] == '\012': - line = line[0:-1] - - if self.format == None: - self.process_normal_line( line ) - else: - if self.format.end.match( line ): - # A normal block end. Add it to `lines' and create a - # new block - self.lines.append( line ) - self.add_block_lines() - elif self.format.column.match( line ): - # A normal column line. Add it to `lines'. - self.lines.append( line ) - else: - # An unexpected block end. Create a new block, but - # don't process the line. - self.add_block_lines() - - # we need to process the line again - self.process_normal_line( line ) - - # record the last lines - self.add_block_lines() - - def process_normal_line( self, line ): - """Process a normal line and check whether it is the start of a new - block.""" - for f in re_source_block_formats: - if f.start.match( line ): - self.add_block_lines() - self.format = f - self.lineno = fileinput.filelineno() - - self.lines.append( line ) - - def add_block_lines( self ): - """Add the current accumulated lines and create a new block.""" - if self.lines != []: - block = SourceBlock( self, - self.filename, - self.lineno, - self.lines ) - - self.blocks.append( block ) - self.format = None - self.lines = [] - - # debugging only, not used in normal operations - def dump( self ): - """Print all blocks in a processor.""" - for b in self.blocks: - b.dump() - -# eof diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/docmaker/tohtml.py qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/docmaker/tohtml.py --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/docmaker/tohtml.py 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/docmaker/tohtml.py 1970-01-01 08:00:00.000000000 +0800 @@ -1,725 +0,0 @@ -# -# tohtml.py -# -# A sub-class container of the `Formatter' class to produce HTML. -# -# Copyright 2002-2018 by -# David Turner. -# -# This file is part of the FreeType project, and may only be used, -# modified, and distributed under the terms of the FreeType project -# license, LICENSE.TXT. By continuing to use, modify, or distribute -# this file you indicate that you have read the license and -# understand and accept it fully. - -# The parent class is contained in file `formatter.py'. - - -from sources import * -from content import * -from formatter import * - -import time - - -# The following strings define the HTML header used by all generated pages. -html_header_1 = """\ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" -"https://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>\ -""" - -html_header_2 = """\ - API Reference</title> -<style type="text/css"> - a:link { color: #0000EF; } - a:visited { color: #51188E; } - a:hover { color: #FF0000; } - - body { font-family: Verdana, Geneva, Arial, Helvetica, serif; - color: #000000; - background: #FFFFFF; - width: 87%; - margin: auto; } - - div.section { width: 75%; - margin: auto; } - div.section hr { margin: 4ex 0 1ex 0; } - div.section h4 { background-color: #EEEEFF; - font-size: medium; - font-style: oblique; - font-weight: bold; - margin: 3ex 0 1.5ex 9%; - padding: 0.3ex 0 0.3ex 1%; } - div.section p { margin: 1.5ex 0 1.5ex 10%; } - div.section pre { margin: 3ex 0 3ex 9%; - background-color: #D6E8FF; - padding: 2ex 0 2ex 1%; } - div.section table.fields { width: 90%; - margin: 1.5ex 0 1.5ex 10%; } - div.section table.toc { width: 95%; - margin: 1.5ex 0 1.5ex 5%; } - div.timestamp { text-align: center; - font-size: 69%; - margin: 1.5ex 0 1.5ex 0; } - - h1 { text-align: center; } - h3 { font-size: medium; - margin: 4ex 0 1.5ex 0; } - - p { text-align: justify; } - - pre.colored { color: blue; } - - span.keyword { font-family: monospace; - text-align: left; - white-space: pre; - color: darkblue; } - - table.fields td.val { font-weight: bold; - text-align: right; - width: 30%; - vertical-align: baseline; - padding: 1ex 1em 1ex 0; } - table.fields td.desc { vertical-align: baseline; - padding: 1ex 0 1ex 1em; } - table.fields td.desc p:first-child { margin: 0; } - table.fields td.desc p { margin: 1.5ex 0 0 0; } - table.index { margin: 6ex auto 6ex auto; - border: 0; - border-collapse: separate; - border-spacing: 1em 0.3ex; } - table.index tr { padding: 0; } - table.index td { padding: 0; } - table.index-toc-link { width: 100%; - border: 0; - border-spacing: 0; - margin: 1ex 0 1ex 0; } - table.index-toc-link td.left { padding: 0 0.5em 0 0.5em; - font-size: 83%; - text-align: left; } - table.index-toc-link td.middle { padding: 0 0.5em 0 0.5em; - font-size: 83%; - text-align: center; } - table.index-toc-link td.right { padding: 0 0.5em 0 0.5em; - font-size: 83%; - text-align: right; } - table.synopsis { margin: 6ex auto 6ex auto; - border: 0; - border-collapse: separate; - border-spacing: 2em 0.6ex; } - table.synopsis tr { padding: 0; } - table.synopsis td { padding: 0; } - table.toc td.link { width: 30%; - text-align: right; - vertical-align: baseline; - padding: 1ex 1em 1ex 0; } - table.toc td.desc { vertical-align: baseline; - padding: 1ex 0 1ex 1em; - text-align: left; } - table.toc td.desc p:first-child { margin: 0; - text-align: left; } - table.toc td.desc p { margin: 1.5ex 0 0 0; - text-align: left; } - -</style> -</head> -<body> -""" - -html_header_3l = """ -<table class="index-toc-link"><tr><td class="left">[<a href="\ -""" - -html_header_3r = """ -<table class="index-toc-link"><tr><td class="right">[<a href="\ -""" - -html_header_4 = """\ -">Index</a>]</td><td class="right">[<a href="\ -""" - -html_header_5t = """\ -">TOC</a>]</td></tr></table> -<h1>\ -""" - -html_header_5i = """\ -">Index</a>]</td></tr></table> -<h1>\ -""" - -html_header_6 = """\ - API Reference</h1> -""" - - -# The HTML footer used by all generated pages. -html_footer = """\ -</body> -</html>\ -""" - -# The header and footer used for each section. -section_title_header1 = '<h1 id="' -section_title_header2 = '">' -section_title_footer = "</h1>" - -# The header and footer used for code segments. -code_header = '<pre class="colored">' -code_footer = '</pre>' - -# Paragraph header and footer. -para_header = "<p>" -para_footer = "</p>" - -# Block header and footer. -block_header = '<div class="section">' -block_footer_start = """\ -<hr> -<table class="index-toc-link"><tr><td class="left">[<a href="\ -""" -block_footer_middle = """\ -">Index</a>]</td>\ -<td class="middle">[<a href="#">Top</a>]</td>\ -<td class="right">[<a href="\ -""" -block_footer_end = """\ -">TOC</a>]</td></tr></table></div> -""" - -# Description header/footer. -description_header = "" -description_footer = "" - -# Marker header/inter/footer combination. -marker_header = "<h4>" -marker_inter = "</h4>" -marker_footer = "" - -# Header location header/footer. -header_location_header = "<p>" -header_location_footer = "</p>" - -# Source code extracts header/footer. -source_header = "<pre>" -source_footer = "</pre>" - -# Chapter header/inter/footer. -chapter_header = """\ -<div class="section"> -<h2>\ -""" -chapter_inter = '</h2>' -chapter_footer = '</div>' - -# Index footer. -index_footer_start = """\ -<hr> -<table class="index-toc-link"><tr><td class="right">[<a href="\ -""" -index_footer_end = """\ -">TOC</a>]</td></tr></table> -""" - -# TOC footer. -toc_footer_start = """\ -<hr> -<table class="index-toc-link"><tr><td class="left">[<a href="\ -""" -toc_footer_end = """\ -">Index</a>]</td></tr></table> -""" - - -# Source language keyword coloration and styling. -keyword_prefix = '<span class="keyword">' -keyword_suffix = '</span>' - -section_synopsis_header = '<h2>Synopsis</h2>' -section_synopsis_footer = '' - - -# Translate a single line of source to HTML. This converts `<', `>', and -# `&' into `<',`>', and `&'. -# -def html_quote( line ): - result = string.replace( line, "&", "&" ) - result = string.replace( result, "<", "<" ) - result = string.replace( result, ">", ">" ) - return result - - -################################################################ -## -## HTML FORMATTER CLASS -## -class HtmlFormatter( Formatter ): - - def __init__( self, processor, project_title, file_prefix ): - Formatter.__init__( self, processor ) - - global html_header_1 - global html_header_2 - global html_header_3l, html_header_3r - global html_header_4 - global html_header_5t, html_header_5i - global html_header_6 - global html_footer - - if file_prefix: - file_prefix = file_prefix + "-" - else: - file_prefix = "" - - self.headers = processor.headers - self.project_title = project_title - self.file_prefix = file_prefix - self.html_header = ( - html_header_1 + project_title - + html_header_2 - + html_header_3l + file_prefix + "index.html" - + html_header_4 + file_prefix + "toc.html" - + html_header_5t + project_title - + html_header_6 ) - self.html_index_header = ( - html_header_1 + project_title - + html_header_2 - + html_header_3r + file_prefix + "toc.html" - + html_header_5t + project_title - + html_header_6 ) - self.html_toc_header = ( - html_header_1 + project_title - + html_header_2 - + html_header_3l + file_prefix + "index.html" - + html_header_5i + project_title - + html_header_6 ) - self.html_footer = ( - '<div class="timestamp">generated on ' - + time.asctime( time.localtime( time.time() ) ) - + "</div>" + html_footer ) - - self.columns = 3 - - def make_section_url( self, section ): - return self.file_prefix + section.name + ".html" - - def make_block_url( self, block, name = None ): - if name == None: - name = block.name - - try: - section_url = self.make_section_url( block.section ) - except: - # we already have a section - section_url = self.make_section_url( block ) - - return section_url + "#" + name - - def make_html_word( self, word ): - """Analyze a simple word to detect cross-references and markup.""" - # handle cross-references - m = re_crossref.match( word ) - if m: - try: - name = m.group( 'name' ) - rest = m.group( 'rest' ) - block = self.identifiers[name] - url = self.make_block_url( block ) - # display `foo[bar]' as `foo' - name = re.sub( r'\[.*\]', '', name ) - # normalize url, following RFC 3986 - url = string.replace( url, "[", "(" ) - url = string.replace( url, "]", ")" ) - - try: - # for sections, display title - url = ( '‘<a href="' + url + '">' - + block.title + '</a>’' - + rest ) - except: - url = ( '<a href="' + url + '">' - + name + '</a>' - + rest ) - - return url - except: - # we detected a cross-reference to an unknown item - sys.stderr.write( "WARNING: undefined cross reference" - + " '" + name + "'.\n" ) - return '?' + name + '?' + rest - - # handle markup for italic and bold - m = re_italic.match( word ) - if m: - name = m.group( 1 ) - rest = m.group( 2 ) - return '<i>' + name + '</i>' + rest - - m = re_bold.match( word ) - if m: - name = m.group( 1 ) - rest = m.group( 2 ) - return '<b>' + name + '</b>' + rest - - return html_quote( word ) - - def make_html_para( self, words ): - """Convert words of a paragraph into tagged HTML text. Also handle - cross references.""" - line = "" - if words: - line = self.make_html_word( words[0] ) - for word in words[1:]: - line = line + " " + self.make_html_word( word ) - # handle hyperlinks - line = re_url.sub( r'<a href="\1">\1</a>', line ) - # convert `...' quotations into real left and right single quotes - line = re.sub( r"(^|\W)`(.*?)'(\W|$)", - r'\1‘\2’\3', - line ) - # convert tilde into non-breakable space - line = string.replace( line, "~", " " ) - - return para_header + line + para_footer - - def make_html_code( self, lines ): - """Convert a code sequence to HTML.""" - line = code_header + '\n' - for l in lines: - line = line + html_quote( l ).rstrip() + '\n' - - return line + code_footer - - def make_html_items( self, items ): - """Convert a field's content into HTML.""" - lines = [] - for item in items: - if item.lines: - lines.append( self.make_html_code( item.lines ) ) - else: - lines.append( self.make_html_para( item.words ) ) - - return string.join( lines, '\n' ) - - def print_html_items( self, items ): - print( self.make_html_items( items ) ) - - def print_html_field( self, field ): - if field.name: - print( '<table><tr valign="top"><td><b>' - + field.name - + "</b></td><td>" ) - - print( self.make_html_items( field.items ) ) - - if field.name: - print( "</td></tr></table>" ) - - def html_source_quote( self, line, block_name = None ): - result = "" - while line: - m = re_source_crossref.match( line ) - if m: - name = m.group( 2 ) - prefix = html_quote( m.group( 1 ) ) - length = len( m.group( 0 ) ) - - if name == block_name: - # this is the current block name, if any - result = result + prefix + '<b>' + name + '</b>' - elif re_source_keywords.match( name ): - # this is a C keyword - result = ( result + prefix - + keyword_prefix + name + keyword_suffix ) - elif name in self.identifiers: - # this is a known identifier - block = self.identifiers[name] - id = block.name - - # link to a field ID if possible - try: - for markup in block.markups: - if markup.tag == 'values': - for field in markup.fields: - if field.name: - id = name - - result = ( result + prefix - + '<a href="' - + self.make_block_url( block, id ) - + '">' + name + '</a>' ) - except: - # sections don't have `markups'; however, we don't - # want references to sections here anyway - result = result + html_quote( line[:length] ) - - else: - result = result + html_quote( line[:length] ) - - line = line[length:] - else: - result = result + html_quote( line ) - line = [] - - return result - - def print_html_field_list( self, fields ): - print( '<table class="fields">' ) - for field in fields: - print( '<tr><td class="val" id="' + field.name + '">' - + field.name - + '</td><td class="desc">' ) - self.print_html_items( field.items ) - print( "</td></tr>" ) - print( "</table>" ) - - def print_html_markup( self, markup ): - table_fields = [] - for field in markup.fields: - if field.name: - # We begin a new series of field or value definitions. We - # record them in the `table_fields' list before outputting - # all of them as a single table. - table_fields.append( field ) - else: - if table_fields: - self.print_html_field_list( table_fields ) - table_fields = [] - - self.print_html_items( field.items ) - - if table_fields: - self.print_html_field_list( table_fields ) - - # - # formatting the index - # - def index_enter( self ): - print( self.html_index_header ) - self.index_items = {} - - def index_name_enter( self, name ): - block = self.identifiers[name] - url = self.make_block_url( block ) - self.index_items[name] = url - - def index_exit( self ): - # `block_index' already contains the sorted list of index names - count = len( self.block_index ) - rows = ( count + self.columns - 1 ) // self.columns - - print( '<table class="index">' ) - for r in range( rows ): - line = "<tr>" - for c in range( self.columns ): - i = r + c * rows - if i < count: - bname = self.block_index[r + c * rows] - url = self.index_items[bname] - # display `foo[bar]' as `foo (bar)' - bname = string.replace( bname, "[", " (" ) - bname = string.replace( bname, "]", ")" ) - # normalize url, following RFC 3986 - url = string.replace( url, "[", "(" ) - url = string.replace( url, "]", ")" ) - line = ( line + '<td><a href="' + url + '">' - + bname + '</a></td>' ) - else: - line = line + '<td></td>' - line = line + "</tr>" - print( line ) - - print( "</table>" ) - - print( index_footer_start - + self.file_prefix + "toc.html" - + index_footer_end ) - - print( self.html_footer ) - - self.index_items = {} - - def index_dump( self, index_filename = None ): - if index_filename == None: - index_filename = self.file_prefix + "index.html" - - Formatter.index_dump( self, index_filename ) - - # - # formatting the table of contents - # - def toc_enter( self ): - print( self.html_toc_header ) - print( "<h1>Table of Contents</h1>" ) - - def toc_chapter_enter( self, chapter ): - print( chapter_header + string.join( chapter.title ) + chapter_inter ) - print( '<table class="toc">' ) - - def toc_section_enter( self, section ): - print( '<tr><td class="link">' - + '<a href="' + self.make_section_url( section ) + '">' - + section.title + '</a></td><td class="desc">' ) - print( self.make_html_para( section.abstract ) ) - - def toc_section_exit( self, section ): - print( "</td></tr>" ) - - def toc_chapter_exit( self, chapter ): - print( "</table>" ) - print( chapter_footer ) - - def toc_index( self, index_filename ): - print( chapter_header - + '<a href="' + index_filename + '">Global Index</a>' - + chapter_inter + chapter_footer ) - - def toc_exit( self ): - print( toc_footer_start - + self.file_prefix + "index.html" - + toc_footer_end ) - - print( self.html_footer ) - - def toc_dump( self, toc_filename = None, index_filename = None ): - if toc_filename == None: - toc_filename = self.file_prefix + "toc.html" - - if index_filename == None: - index_filename = self.file_prefix + "index.html" - - Formatter.toc_dump( self, toc_filename, index_filename ) - - # - # formatting sections - # - def section_enter( self, section ): - print( self.html_header ) - - print( section_title_header1 + section.name + section_title_header2 - + section.title - + section_title_footer ) - - maxwidth = 0 - for b in section.blocks.values(): - if len( b.name ) > maxwidth: - maxwidth = len( b.name ) - - width = 70 # XXX magic number - if maxwidth > 0: - # print section synopsis - print( section_synopsis_header ) - print( '<table class="synopsis">' ) - - columns = width // maxwidth - if columns < 1: - columns = 1 - - count = len( section.block_names ) - # don't handle last entry if it is empty - if section.block_names[-1] == "/empty/": - count -= 1 - rows = ( count + columns - 1 ) // columns - - for r in range( rows ): - line = "<tr>" - for c in range( columns ): - i = r + c * rows - line = line + '<td>' - if i < count: - name = section.block_names[i] - if name == "/empty/": - # it can happen that a complete row is empty, and - # without a proper `filler' the browser might - # collapse the row to a much smaller height (or - # even omit it completely) - line = line + " " - else: - url = name - # display `foo[bar]' as `foo' - name = re.sub( r'\[.*\]', '', name ) - # normalize url, following RFC 3986 - url = string.replace( url, "[", "(" ) - url = string.replace( url, "]", ")" ) - line = ( line + '<a href="#' + url + '">' - + name + '</a>' ) - - line = line + '</td>' - line = line + "</tr>" - print( line ) - - print( "</table>" ) - print( section_synopsis_footer ) - - print( description_header ) - print( self.make_html_items( section.description ) ) - print( description_footer ) - - def block_enter( self, block ): - print( block_header ) - - # place html anchor if needed - if block.name: - url = block.name - # display `foo[bar]' as `foo' - name = re.sub( r'\[.*\]', '', block.name ) - # normalize url, following RFC 3986 - url = string.replace( url, "[", "(" ) - url = string.replace( url, "]", ")" ) - print( '<h3 id="' + url + '">' + name + '</h3>' ) - - # dump the block C source lines now - if block.code: - header = '' - for f in self.headers.keys(): - if block.source.filename.find( f ) >= 0: - header = self.headers[f] + ' (' + f + ')' - break - -# if not header: -# sys.stderr.write( -# "WARNING: No header macro for" -# + " '" + block.source.filename + "'.\n" ) - - if header: - print( header_location_header - + 'Defined in ' + header + '.' - + header_location_footer ) - - print( source_header ) - for l in block.code: - print( self.html_source_quote( l, block.name ) ) - print( source_footer ) - - def markup_enter( self, markup, block ): - if markup.tag == "description": - print( description_header ) - else: - print( marker_header + markup.tag + marker_inter ) - - self.print_html_markup( markup ) - - def markup_exit( self, markup, block ): - if markup.tag == "description": - print( description_footer ) - else: - print( marker_footer ) - - def block_exit( self, block ): - print( block_footer_start + self.file_prefix + "index.html" - + block_footer_middle + self.file_prefix + "toc.html" - + block_footer_end ) - - def section_exit( self, section ): - print( html_footer ) - - def section_dump_all( self ): - for section in self.sections: - self.section_dump( section, - self.file_prefix + section.name + '.html' ) - -# eof diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/docmaker/utils.py qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/docmaker/utils.py --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/docmaker/utils.py 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/docmaker/utils.py 1970-01-01 08:00:00.000000000 +0800 @@ -1,127 +0,0 @@ -# -# utils.py -# -# Auxiliary functions for the `docmaker' tool (library file). -# -# Copyright 2002-2018 by -# David Turner. -# -# This file is part of the FreeType project, and may only be used, -# modified, and distributed under the terms of the FreeType project -# license, LICENSE.TXT. By continuing to use, modify, or distribute -# this file you indicate that you have read the license and -# understand and accept it fully. - - -import string, sys, os, glob, itertools - - -# current output directory -# -output_dir = None - - -# A function that generates a sorting key. We want lexicographical order -# (primary key) except that capital letters are sorted before lowercase -# ones (secondary key). -# -# The primary key is implemented by lowercasing the input. The secondary -# key is simply the original data appended, character by character. For -# example, the sort key for `FT_x' is `fFtT__xx', while the sort key for -# `ft_X' is `fftt__xX'. Since ASCII codes of uppercase letters are -# numerically smaller than the codes of lowercase letters, `fFtT__xx' gets -# sorted before `fftt__xX'. -# -def index_key( s ): - return string.join( itertools.chain( *zip( s.lower(), s ) ) ) - - -# Sort `input_list', placing the elements of `order_list' in front. -# -def sort_order_list( input_list, order_list ): - new_list = order_list[:] - for id in input_list: - if not id in order_list: - new_list.append( id ) - return new_list - - -# Divert standard output to a given project documentation file. Use -# `output_dir' to determine the filename location if necessary and save the -# old stdout handle in a tuple that is returned by this function. -# -def open_output( filename ): - global output_dir - - if output_dir and output_dir != "": - filename = output_dir + os.sep + filename - - old_stdout = sys.stdout - new_file = open( filename, "w" ) - sys.stdout = new_file - - return ( new_file, old_stdout ) - - -# Close the output that was returned by `open_output'. -# -def close_output( output ): - output[0].close() - sys.stdout = output[1] - - -# Check output directory. -# -def check_output(): - global output_dir - if output_dir: - if output_dir != "": - if not os.path.isdir( output_dir ): - sys.stderr.write( "argument" - + " '" + output_dir + "' " - + "is not a valid directory\n" ) - sys.exit( 2 ) - else: - output_dir = None - - -def file_exists( pathname ): - """Check that a given file exists.""" - result = 1 - try: - file = open( pathname, "r" ) - file.close() - except: - result = None - sys.stderr.write( pathname + " couldn't be accessed\n" ) - - return result - - -def make_file_list( args = None ): - """Build a list of input files from command-line arguments.""" - file_list = [] - # sys.stderr.write( repr( sys.argv[1 :] ) + '\n' ) - - if not args: - args = sys.argv[1:] - - for pathname in args: - if string.find( pathname, '*' ) >= 0: - newpath = glob.glob( pathname ) - newpath.sort() # sort files -- this is important because - # of the order of files - else: - newpath = [pathname] - - file_list.extend( newpath ) - - if len( file_list ) == 0: - file_list = None - else: - # now filter the file list to remove non-existing ones - file_list = filter( file_exists, file_list ) - - return file_list - -# eof diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/README qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/README --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/README 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/README 1970-01-01 08:00:00.000000000 +0800 @@ -1,81 +0,0 @@ -ftfuzzer -======== - - -ftfuzzer.cc ------------ - -This file contains a target function for FreeType fuzzing. It can be -used with libFuzzer (https://llvm.org/docs/LibFuzzer.html) or -potentially any other similar fuzzer. - -Usage: - - 1. Build `libfreetype.a' and `ftfuzzer.cc' using the most recent - clang compiler with these flags: - - # for fuzzer coverage feedback - -fsanitize-coverage=edge,8bit-counters - # for bug checking - -fsanitize=address,signed-integer-overflow,shift - - You also need the header files from the `libarchive' library - (https://www.libarchive.org/) for handling tar files (see file - `ftmutator.cc' below for more). - - 2. Link with `libFuzzer' (it contains `main') and `libarchive'. - - 3. Run the fuzzer on some test corpus. - -The exact flags and commands may vary. - - https://github.com/google/oss-fuzz/tree/master/projects/freetype2 - -There is a continuous fuzzing bot that runs ftfuzzer. - - https://oss-fuzz.com - -(You need an account to be able to see coverage reports and the like -on oss-fuzz.com.) - -Check the bot configuration for the most current settings. - - -ftmutator.cc ------------- - -FreeType has the ability to `attach' auxiliary files to a font file, -providing additional information. The main usage is to load AFM files -for PostScript Type 1 fonts. - -However, libFuzzer currently only supports mutation of a single input -file. For this reason, `ftmutator.cc' contains a custom fuzzer -mutator that uses an uncompressed tar file archive as the input. The -first file in such a tarball gets opened by FreeType as a font, all -other files are treated as input for `FT_Attach_Stream'. - -Compilation is similar to `ftfuzzer.c'. - - -runinput.cc ------------ - -To run the target function on a set of input files, this file contains -a convenience `main' function. Link it with `ftfuzzer.cc', -`libfreetype.a', and `libarchive' and run like - - ./a.out my_tests_inputs/* - ----------------------------------------------------------------------- - -Copyright 2015-2018 by -David Turner, Robert Wilhelm, and Werner Lemberg. - -This file is part of the FreeType project, and may only be used, -modified, and distributed under the terms of the FreeType project -license, LICENSE.TXT. By continuing to use, modify, or distribute -this file you indicate that you have read the license and understand -and accept it fully. - - ---- end of README --- diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/ftfuzzer.cc qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/ftfuzzer.cc --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/ftfuzzer.cc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/ftfuzzer.cc 1970-01-01 08:00:00.000000000 +0800 @@ -1,428 +0,0 @@ -// ftfuzzer.cc -// -// A fuzzing function to test FreeType with libFuzzer. -// -// Copyright 2015-2018 by -// David Turner, Robert Wilhelm, and Werner Lemberg. -// -// This file is part of the FreeType project, and may only be used, -// modified, and distributed under the terms of the FreeType project -// license, LICENSE.TXT. By continuing to use, modify, or distribute -// this file you indicate that you have read the license and -// understand and accept it fully. - - -// we use `unique_ptr', `decltype', and other gimmicks defined since C++11 -#if __cplusplus < 201103L -# error "a C++11 compiler is needed" -#endif - -#include <archive.h> -#include <archive_entry.h> - -#include <assert.h> -#include <stdint.h> - -#include <memory> -#include <vector> - - - using namespace std; - - -#include <ft2build.h> - -#include FT_FREETYPE_H -#include FT_GLYPH_H -#include FT_CACHE_H -#include FT_CACHE_CHARMAP_H -#include FT_CACHE_IMAGE_H -#include FT_CACHE_SMALL_BITMAPS_H -#include FT_SYNTHESIS_H -#include FT_ADVANCES_H -#include FT_OUTLINE_H -#include FT_BBOX_H -#include FT_MODULE_H -#include FT_DRIVER_H -#include FT_MULTIPLE_MASTERS_H - - - static FT_Library library; - static int InitResult; - - - struct FT_Global - { - FT_Global() - { - InitResult = FT_Init_FreeType( &library ); - if ( InitResult ) - return; - - // try to activate Adobe's CFF engine; it might not be the default - unsigned int cff_hinting_engine = FT_HINTING_ADOBE; - FT_Property_Set( library, - "cff", - "hinting-engine", &cff_hinting_engine ); - } - - ~FT_Global() - { - FT_Done_FreeType( library ); - } - }; - - FT_Global global_ft; - - - // We want to select n values at random (without repetition), - // with 0 < n <= N. The algorithm is taken from TAoCP, Vol. 2 - // (Algorithm S, selection sampling technique) - struct Random - { - int n; - int N; - - int t; // total number of values so far - int m; // number of selected values so far - - uint32_t r; // the current pseudo-random number - - Random( int n_, - int N_ ) - : n( n_ ), - N( N_ ) - { - t = 0; - m = 0; - - // Ideally, this should depend on the input file, - // for example, taking the sha256 as input; - // however, this is overkill for fuzzying tests. - r = 12345; - } - - int get() - { - if ( m >= n ) - return -1; - - Redo: - // We can't use `rand': different C libraries might provide - // different implementations of this function. As a replacement, - // we use a 32bit version of the `xorshift' algorithm. - r ^= r << 13; - r ^= r >> 17; - r ^= r << 5; - - double U = double( r ) / UINT32_MAX; - - if ( ( N - t ) * U >= ( n - m ) ) - { - t++; - goto Redo; - } - - t++; - m++; - - return t; - } - }; - - - static int - archive_read_entry_data( struct archive *ar, - vector<FT_Byte> *vw ) - { - int r; - const FT_Byte* buff; - size_t size; - int64_t offset; - - for (;;) - { - r = archive_read_data_block( ar, - reinterpret_cast<const void**>( &buff ), - &size, - &offset ); - if ( r == ARCHIVE_EOF ) - return ARCHIVE_OK; - if ( r != ARCHIVE_OK ) - return r; - - vw->insert( vw->end(), buff, buff + size ); - } - } - - - static vector<vector<FT_Byte>> - parse_data( const uint8_t* data, - size_t size ) - { - struct archive_entry* entry; - int r; - vector<vector<FT_Byte>> files; - - unique_ptr<struct archive, - decltype ( archive_read_free )*> a( archive_read_new(), - archive_read_free ); - - // activate reading of uncompressed tar archives - archive_read_support_format_tar( a.get() ); - - // the need for `const_cast' was removed with libarchive commit be4d4dd - if ( !( r = archive_read_open_memory( - a.get(), - const_cast<void*>(static_cast<const void*>( data ) ), - size ) ) ) - { - unique_ptr<struct archive, - decltype ( archive_read_close )*> a_open( a.get(), - archive_read_close ); - - // read files contained in archive - for (;;) - { - r = archive_read_next_header( a_open.get(), &entry ); - if ( r == ARCHIVE_EOF ) - break; - if ( r != ARCHIVE_OK ) - break; - - vector<FT_Byte> entry_data; - r = archive_read_entry_data( a.get(), &entry_data ); - if ( r != ARCHIVE_OK ) - break; - - files.push_back( move( entry_data ) ); - } - } - - if ( files.size() == 0 ) - files.emplace_back( data, data + size ); - - return files; - } - - - static void - setIntermediateAxis( FT_Face face ) - { - // only handle Multiple Masters and GX variation fonts - if ( !FT_HAS_MULTIPLE_MASTERS( face ) ) - return; - - // get variation data for current instance - FT_MM_Var* variations_ptr = nullptr; - if ( FT_Get_MM_Var( face, &variations_ptr ) ) - return; - - unique_ptr<FT_MM_Var, - decltype ( free )*> variations( variations_ptr, free ); - vector<FT_Fixed> coords( variations->num_axis ); - - // select an arbitrary instance - for ( unsigned int i = 0; i < variations->num_axis; i++ ) - coords[i] = ( variations->axis[i].minimum + - variations->axis[i].def ) / 2; - - if ( FT_Set_Var_Design_Coordinates( face, - FT_UInt( coords.size() ), - coords.data() ) ) - return; - } - - - // the interface function to the libFuzzer library - extern "C" int - LLVMFuzzerTestOneInput( const uint8_t* data, - size_t size_ ) - { - assert( !InitResult ); - - if ( size_ < 1 ) - return 0; - - const vector<vector<FT_Byte>>& files = parse_data( data, size_ ); - - FT_Face face; - FT_Int32 load_flags = FT_LOAD_DEFAULT; -#if 0 - FT_Render_Mode render_mode = FT_RENDER_MODE_NORMAL; -#endif - - // We use a conservative approach here, at the cost of calling - // `FT_New_Face' quite often. The idea is that the fuzzer should be - // able to try all faces and named instances of a font, expecting that - // some faces don't work for various reasons, e.g., a broken subfont, or - // an unsupported NFNT bitmap font in a Mac dfont resource that holds - // more than a single font. - - // get number of faces - if ( FT_New_Memory_Face( library, - files[0].data(), - (FT_Long)files[0].size(), - -1, - &face ) ) - return 0; - long num_faces = face->num_faces; - FT_Done_Face( face ); - - // loop over up to 20 arbitrarily selected faces - // from index range [0;num-faces-1] - long max_face_cnt = num_faces < 20 - ? num_faces - : 20; - - Random faces_pool( (int)max_face_cnt, (int)num_faces ); - - for ( long face_cnt = 0; - face_cnt < max_face_cnt; - face_cnt++ ) - { - long face_index = faces_pool.get() - 1; - - // get number of instances - if ( FT_New_Memory_Face( library, - files[0].data(), - (FT_Long)files[0].size(), - -( face_index + 1 ), - &face ) ) - continue; - long num_instances = face->style_flags >> 16; - FT_Done_Face( face ); - - // loop over the face without instance (index 0) - // and up to 20 arbitrarily selected instances - // from index range [1;num_instances] - long max_instance_cnt = num_instances < 20 - ? num_instances - : 20; - - Random instances_pool( (int)max_instance_cnt, (int)num_instances ); - - for ( long instance_cnt = 0; - instance_cnt <= max_instance_cnt; - instance_cnt++ ) - { - long instance_index = 0; - - if ( !instance_cnt ) - { - if ( FT_New_Memory_Face( library, - files[0].data(), - (FT_Long)files[0].size(), - face_index, - &face ) ) - continue; - } - else - { - instance_index = instances_pool.get(); - - if ( FT_New_Memory_Face( library, - files[0].data(), - (FT_Long)files[0].size(), - ( instance_index << 16 ) + face_index, - &face ) ) - continue; - } - - // if we have more than a single input file coming from an archive, - // attach them (starting with the second file) using the order given - // in the archive - for ( size_t files_index = 1; - files_index < files.size(); - files_index++ ) - { - FT_Open_Args open_args = {}; - open_args.flags = FT_OPEN_MEMORY; - open_args.memory_base = files[files_index].data(); - open_args.memory_size = (FT_Long)files[files_index].size(); - - // the last archive element will be eventually used as the - // attachment - FT_Attach_Stream( face, &open_args ); - } - - // loop over an arbitrary size for outlines - // and up to ten arbitrarily selected bitmap strike sizes - // from the range [0;num_fixed_sizes - 1] - int max_size_cnt = face->num_fixed_sizes < 10 - ? face->num_fixed_sizes - : 10; - - Random sizes_pool( max_size_cnt, face->num_fixed_sizes ); - - for ( int size_cnt = 0; - size_cnt <= max_size_cnt; - size_cnt++ ) - { - FT_Int32 flags = load_flags; - - int size_index = 0; - - if ( !size_cnt ) - { - // set up 20pt at 72dpi as an arbitrary size - if ( FT_Set_Char_Size( face, 20 * 64, 20 * 64, 72, 72 ) ) - continue; - flags |= FT_LOAD_NO_BITMAP; - } - else - { - // bitmap strikes are not active for font variations - if ( instance_index ) - continue; - - size_index = sizes_pool.get() - 1; - - if ( FT_Select_Size( face, size_index ) ) - continue; - flags |= FT_LOAD_COLOR; - } - - // test MM interface only for a face without a selected instance - // and without a selected bitmap strike - if ( !instance_index && !size_cnt ) - setIntermediateAxis( face ); - - // loop over all glyphs - for ( unsigned int glyph_index = 0; - glyph_index < (unsigned int)face->num_glyphs; - glyph_index++ ) - { - if ( FT_Load_Glyph( face, glyph_index, flags ) ) - continue; - - // Rendering is the most expensive and the least interesting part. - // - // if ( FT_Render_Glyph( face->glyph, render_mode) ) - // continue; - // FT_GlyphSlot_Embolden( face->glyph ); - -#if 0 - FT_Glyph glyph; - if ( !FT_Get_Glyph( face->glyph, &glyph ) ) - FT_Done_Glyph( glyph ); - - FT_Outline* outline = &face->glyph->outline; - FT_Matrix rot30 = { 0xDDB4, -0x8000, 0x8000, 0xDDB4 }; - - FT_Outline_Transform( outline, &rot30 ); - - FT_BBox bbox; - FT_Outline_Get_BBox( outline, &bbox ); -#endif - } - } - FT_Done_Face( face ); - } - } - - return 0; - } - - -// END diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/ftmutator.cc qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/ftmutator.cc --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/ftmutator.cc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/ftmutator.cc 1970-01-01 08:00:00.000000000 +0800 @@ -1,314 +0,0 @@ -// ftmutator.cc -// -// A custom fuzzer mutator to test for FreeType with libFuzzer. -// -// Copyright 2015-2018 by -// David Turner, Robert Wilhelm, and Werner Lemberg. -// -// This file is part of the FreeType project, and may only be used, -// modified, and distributed under the terms of the FreeType project -// license, LICENSE.TXT. By continuing to use, modify, or distribute -// this file you indicate that you have read the license and -// understand and accept it fully. - - -// Since `tar' is not a valid format for input to FreeType, treat any input -// that looks like `tar' as multiple files and mutate them separately. -// -// In the future, a variation of this may be used to guide mutation on a -// logically higher level. - - -// we use `unique_ptr', `decltype', and other gimmicks defined since C++11 -#if __cplusplus < 201103L -# error "a C++11 compiler is needed" -#endif - -#include <cstdint> -#include <cassert> -#include <cstdio> -#include <cstdlib> -#include <cstddef> -#include <cstring> -#include <iostream> - -#include <memory> -#include <vector> - -#include <archive.h> -#include <archive_entry.h> - -#include "FuzzerInterface.h" - - - using namespace std; - - - // This function should be defined by `ftfuzzer.cc'. - extern "C" int - LLVMFuzzerTestOneInput( const uint8_t* Data, - size_t Size ); - - - static void - check_result( struct archive* a, - int r ) - { - if ( r == ARCHIVE_OK ) - return; - - const char* m = archive_error_string( a ); - write( 1, m, strlen( m ) ); - exit( 1 ); - } - - - static int - archive_read_entry_data( struct archive *ar, - vector<uint8_t> *vw ) - { - int r; - const uint8_t* buff; - size_t size; - int64_t offset; - - for (;;) - { - r = archive_read_data_block( ar, - reinterpret_cast<const void**>( &buff ), - &size, - &offset ); - if ( r == ARCHIVE_EOF ) - return ARCHIVE_OK; - if ( r != ARCHIVE_OK ) - return r; - - vw->insert( vw->end(), buff, buff + size ); - } - } - - - static vector<vector<uint8_t>> - parse_data( const uint8_t* data, - size_t size ) - { - struct archive_entry* entry; - int r; - vector<vector<uint8_t>> files; - - unique_ptr<struct archive, - decltype ( archive_read_free )*> a( archive_read_new(), - archive_read_free ); - - // activate reading of uncompressed tar archives - archive_read_support_format_tar( a.get() ); - - // the need for `const_cast' was removed with libarchive commit be4d4dd - if ( !( r = archive_read_open_memory( - a.get(), - const_cast<void*>(static_cast<const void*>( data ) ), - size ) ) ) - { - unique_ptr<struct archive, - decltype ( archive_read_close )*> a_open( a.get(), - archive_read_close ); - - // read files contained in archive - for (;;) - { - r = archive_read_next_header( a_open.get(), &entry ); - if ( r == ARCHIVE_EOF ) - break; - if ( r != ARCHIVE_OK ) - break; - - vector<uint8_t> entry_data; - r = archive_read_entry_data( a.get(), &entry_data ); - if ( entry_data.size() == 0 ) - continue; - - files.push_back( move( entry_data ) ); - if ( r != ARCHIVE_OK ) - break; - } - } - - return files; - } - - - class FTFuzzer - : public fuzzer::UserSuppliedFuzzer - { - - public: - FTFuzzer( fuzzer::FuzzerRandomBase* Rand ) - : fuzzer::UserSuppliedFuzzer( Rand ) {} - - - int - TargetFunction( const uint8_t* Data, - size_t Size ) - { - return LLVMFuzzerTestOneInput( Data, Size ); - } - - - // Custom mutator. - virtual size_t - Mutate( uint8_t* Data, - size_t Size, - size_t MaxSize ) - { - vector<vector<uint8_t>> files = parse_data( Data, Size ); - - // If the file was not recognized as a tar file, treat it as non-tar. - if ( files.size() == 0 ) - return fuzzer::UserSuppliedFuzzer::Mutate( Data, Size, MaxSize ); - - // This is somewhat `white box' on tar. The tar format uses 512 byte - // blocks. One block as header for each file, two empty blocks of 0's - // at the end. File data is padded to fill its last block. - size_t used_blocks = files.size() + 2; - for ( const auto& file : files ) - used_blocks += ( file.size() + 511 ) / 512; - - size_t max_blocks = MaxSize / 512; - - // If the input is big, it will need to be downsized. If the original - // tar file was too big, it may have been clipped to fit. In this - // case it may not be possible to properly write out the data, as - // there may not be enough space for the trailing two blocks. Start - // dropping file data or files from the end. - for ( size_t i = files.size(); - i-- > 1 && used_blocks > max_blocks; ) - { - size_t blocks_to_free = used_blocks - max_blocks; - size_t blocks_currently_used_by_file_data = - ( files[i].size() + 511 ) / 512; - - if ( blocks_currently_used_by_file_data >= blocks_to_free ) - { - files[i].resize( ( blocks_currently_used_by_file_data - - blocks_to_free ) * 512 ); - used_blocks -= blocks_to_free; - continue; - } - - files.pop_back(); - used_blocks -= blocks_currently_used_by_file_data + 1; - } - - // If we get down to one file, don't use tar. - if ( files.size() == 1 ) - { - memcpy( Data, files[0].data(), files[0].size() ); - return fuzzer::UserSuppliedFuzzer::Mutate( Data, - files[0].size(), - MaxSize ); - } - - size_t free_blocks = max_blocks - used_blocks; - - // Allow each file to use up as much of the currently available space - // it can. If it uses or gives up blocks, add them or remove them - // from the pool. - for ( auto&& file : files ) - { - size_t blocks_currently_used_by_file = ( file.size() + 511 ) / 512; - size_t blocks_available = blocks_currently_used_by_file + - free_blocks; - size_t max_size = blocks_available * 512; - size_t data_size = file.size(); - - file.resize( max_size ); - file.resize( fuzzer::UserSuppliedFuzzer::Mutate( file.data(), - data_size, - max_size ) ); - - size_t blocks_now_used_by_file = ( file.size() + 511 ) / 512; - free_blocks = free_blocks + - blocks_currently_used_by_file - - blocks_now_used_by_file; - } - - unique_ptr<struct archive, - decltype ( archive_write_free )*> a( archive_write_new(), - archive_write_free ); - - check_result( a.get(), archive_write_add_filter_none( a.get() ) ); - check_result( a.get(), archive_write_set_format_ustar( a.get() ) ); - - // `used' may not be correct until after the archive is closed. - size_t used = 0xbadbeef; - check_result( a.get(), archive_write_open_memory( a.get(), - Data, - MaxSize, - &used ) ); - - { - unique_ptr<struct archive, - decltype ( archive_write_close )*> a_open( a.get(), - archive_write_close ); - - int file_index = 0; - for ( const auto& file : files ) - { - unique_ptr<struct archive_entry, - decltype ( archive_entry_free )*> - e( archive_entry_new2( a_open.get() ), - archive_entry_free ); - - char name_buffer[100]; - snprintf( name_buffer, 100, "file%d", file_index++ ); - - archive_entry_set_pathname( e.get(), name_buffer ); - archive_entry_set_size( e.get(), file.size() ); - archive_entry_set_filetype( e.get(), AE_IFREG ); - archive_entry_set_perm( e.get(), 0644 ); - - check_result( a_open.get(), - archive_write_header( a_open.get(), e.get() ) ); - archive_write_data( a_open.get(), file.data(), file.size() ); - check_result( a_open.get(), - archive_write_finish_entry( a_open.get() ) ); - } - } - - return used; - } - - - // Cross `Data1' and `Data2', write up to `MaxOutSize' bytes into `Out', - // return the number of bytes written, which should be positive. - virtual size_t - CrossOver( const uint8_t* Data1, - size_t Size1, - const uint8_t* Data2, - size_t Size2, - uint8_t* Out, - size_t MaxOutSize ) - { - return fuzzer::UserSuppliedFuzzer::CrossOver( Data1, - Size1, - Data2, - Size2, - Out, - MaxOutSize ); - } - - }; // end of FTFuzzer class - - - int - main( int argc, - char* *argv ) - { - fuzzer::FuzzerRandomLibc Rand( 0 ); - FTFuzzer F( &Rand ); - - fuzzer::FuzzerDriver( argc, argv, F ); - } - - -// END diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/rasterfuzzer.cc qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/rasterfuzzer.cc --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/rasterfuzzer.cc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/rasterfuzzer.cc 1970-01-01 08:00:00.000000000 +0800 @@ -1,129 +0,0 @@ -// rasterfuzzer.cc -// -// A fuzzing function to test FreeType's rasterizers with libFuzzer. -// -// Copyright 2016-2018 by -// David Turner, Robert Wilhelm, and Werner Lemberg. -// -// This file is part of the FreeType project, and may only be used, -// modified, and distributed under the terms of the FreeType project -// license, LICENSE.TXT. By continuing to use, modify, or distribute -// this file you indicate that you have read the license and -// understand and accept it fully. - - -#include <stdint.h> - -#include <vector> - - - using namespace std; - - -#include <ft2build.h> - -#include FT_FREETYPE_H -#include FT_IMAGE_H -#include FT_OUTLINE_H - - - static FT_Library library; - static int InitResult; - - - struct FT_Global { - FT_Global() { - InitResult = FT_Init_FreeType( &library ); - } - ~FT_Global() { - FT_Done_FreeType( library ); - } - }; - - FT_Global global_ft; - - - extern "C" int - LLVMFuzzerTestOneInput( const uint8_t* data, - size_t size_ ) - { - unsigned char pixels[4]; - - FT_Bitmap bitmap_mono = { - 1, // rows - 1, // width - 4, // pitch - pixels, // buffer - 2, // num_grays - FT_PIXEL_MODE_MONO, // pixel_mode - 0, // palette_mode - NULL // palette - }; - - FT_Bitmap bitmap_gray = { - 1, // rows - 1, // width - 4, // pitch - pixels, // buffer - 256, // num_grays - FT_PIXEL_MODE_GRAY, // pixel_mode - 0, // palette_mode - NULL // palette - }; - - const size_t vsize = sizeof ( FT_Vector ); - const size_t tsize = sizeof ( char ); - - // we use the input data for both points and tags - short n_points = short( size_ / ( vsize + tsize ) ); - if ( n_points <= 2 ) - return 0; - - FT_Vector* points = reinterpret_cast<FT_Vector*>( - const_cast<uint8_t*>( - data ) ); - char* tags = reinterpret_cast<char*>( - const_cast<uint8_t*>( - data + size_t( n_points ) * vsize ) ); - - // to reduce the number of invalid outlines that are immediately - // rejected in `FT_Outline_Render', limit values to 2^18 pixels - // (i.e., 2^24 bits) - for ( short i = 0; i < n_points; i++ ) - { - if ( points[i].x == LONG_MIN ) - points[i].x = 0; - else if ( points[i].x < 0 ) - points[i].x = -( -points[i].x & 0xFFFFFF ) - 1; - else - points[i].x = ( points[i].x & 0xFFFFFF ) + 1; - - if ( points[i].y == LONG_MIN ) - points[i].y = 0; - else if ( points[i].y < 0 ) - points[i].y = -( -points[i].y & 0xFFFFFF ) - 1; - else - points[i].y = ( points[i].y & 0xFFFFFF ) + 1; - } - - short contours[1]; - contours[0] = n_points - 1; - - FT_Outline outline = - { - 1, // n_contours - n_points, // n_points - points, // points - tags, // tags - contours, // contours - FT_OUTLINE_NONE // flags - }; - - FT_Outline_Get_Bitmap( library, &outline, &bitmap_mono ); - FT_Outline_Get_Bitmap( library, &outline, &bitmap_gray ); - - return 0; - } - - -// END diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/runinput.cc qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/runinput.cc --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/runinput.cc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/ftfuzzer/runinput.cc 1970-01-01 08:00:00.000000000 +0800 @@ -1,58 +0,0 @@ -// runinput.cc -// -// A `main' function for fuzzers like `ftfuzzer.cc'. -// -// Copyright 2015-2018 by -// David Turner, Robert Wilhelm, and Werner Lemberg. -// -// This file is part of the FreeType project, and may only be used, -// modified, and distributed under the terms of the FreeType project -// license, LICENSE.TXT. By continuing to use, modify, or distribute -// this file you indicate that you have read the license and -// understand and accept it fully. - - -#include <assert.h> -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <stdint.h> - - - extern "C" void - LLVMFuzzerTestOneInput( const uint8_t* data, - size_t size ); - - - unsigned char a[1 << 24]; - - - int - main( int argc, - char* *argv ) - { - assert( argc >= 2 ); - - for ( int i = 1; i < argc; i++ ) - { - fprintf( stderr, "%s\n", argv[i] ); - - FILE* f = fopen( argv[i], "r" ); - assert( f ); - - size_t n = fread( a, 1, sizeof ( a ), f ); - fclose( f ); - if ( !n ) - continue; - - unsigned char* b = (unsigned char*)malloc( n ); - memcpy( b, a, n ); - - LLVMFuzzerTestOneInput( b, n ); - - free( b ); - } - } - - -// END diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/ftrandom/Makefile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/ftrandom/Makefile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/ftrandom/Makefile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/ftrandom/Makefile 1970-01-01 08:00:00.000000000 +0800 @@ -1,45 +0,0 @@ -# TOP_DIR and OBJ_DIR should be set by the user to the right directories, -# if necessary. - -TOP_DIR ?= ../../.. -OBJ_DIR ?= $(TOP_DIR)/objs - - -# The setup below is for gcc on a Unix-like platform, -# where FreeType has been set up to create a static library -# (which is the default). - -VPATH = $(OBJ_DIR) \ - $(OBJ_DIR)/.libs - -SRC_DIR = $(TOP_DIR)/src/tools/ftrandom - -CC = gcc -WFLAGS = -Wmissing-prototypes \ - -Wunused \ - -Wimplicit \ - -Wreturn-type \ - -Wparentheses \ - -pedantic \ - -Wformat \ - -Wchar-subscripts \ - -Wsequence-point -CFLAGS = $(WFLAGS) \ - -g -INCLUDES = -I $(TOP_DIR)/include -LDFLAGS = -LIBS = -lm \ - -lz \ - -lpng \ - -lbz2 \ - -lharfbuzz - -all: $(OBJ_DIR)/ftrandom - -$(OBJ_DIR)/ftrandom.o: $(SRC_DIR)/ftrandom.c - $(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $< - -$(OBJ_DIR)/ftrandom: $(OBJ_DIR)/ftrandom.o libfreetype.a - $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) - -# EOF diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/ftrandom/ftrandom.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/ftrandom/ftrandom.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/ftrandom/ftrandom.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/ftrandom/ftrandom.c 2022-11-11 15:29:17.000000000 +0800 @@ -45,8 +45,8 @@ #include <time.h> #include <ft2build.h> -#include FT_FREETYPE_H -#include FT_OUTLINE_H +#include <freetype/freetype.h> +#include <freetype/ftoutln.h> #define true 1 #define false 0 diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/glnames.py qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/glnames.py --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/glnames.py 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/glnames.py 2022-11-11 15:29:17.000000000 +0800 @@ -6,7 +6,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/make_distribution_archives.py qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/make_distribution_archives.py --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/make_distribution_archives.py 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/make_distribution_archives.py 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,208 @@ +#!/usr/bin/env python3 +"""Generate distribution archives for a given FreeType 2 release.""" + +from __future__ import print_function + +import argparse +import atexit +import os +import shutil +import subprocess +import sys +import tempfile + +_TOP_DIR = os.path.abspath(os.path.join(__file__, "..", "..", "..")) +_SCRIPT_DIR = os.path.dirname(os.path.join(_TOP_DIR, "builds", "meson", "")) + + +def get_cmd_output(cmd, cwd=None): + """Run a command and return its output as a string.""" + if cwd is not None: + out = subprocess.check_output(cmd, cwd=cwd) + else: + out = subprocess.check_output(cmd) + return out.decode("utf-8").rstrip() + + +def is_git_dir_clean(git_dir): + """Return True iff |git_dir| is a git directory in clean state.""" + out = get_cmd_output(["git", "status", "--porcelain"], cwd=git_dir) + return len(out) == 0 + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + + parser.add_argument( + "--source_dir", default=_TOP_DIR, help="Source directory path." + ) + + parser.add_argument( + "--version", + help=( + "Specify alternate FreeType version (it is otherwise extracted" + " from current sources by default)." + ), + ) + + parser.add_argument( + "--gnu-config-dir", + help=( + "Path of input directory containing recent `config.guess` and" + " `config.sub` files from GNU config." + ), + ) + + parser.add_argument( + "--build-dir", + help="Specify build directory. Only used for debugging this script.", + ) + + parser.add_argument( + "--ignore-clean-check", + action="store_true", + help=( + "Do not check for a clean source git repository. Only used for" + " debugging this script." + ), + ) + + parser.add_argument( + "output_dir", help="Output directory for generated archives." + ) + + args = parser.parse_args() + + git_dir = args.source_dir if args.source_dir else _TOP_DIR + if not args.ignore_clean_check and not is_git_dir_clean(git_dir): + sys.stderr.write( + "ERROR: Your git repository is not in a clean state: %s\n" + % git_dir + ) + return 1 + + if args.version: + version = args.version + else: + # Extract FreeType version from sources. + version = get_cmd_output( + [ + sys.executable, + os.path.join(_SCRIPT_DIR, "extract_freetype_version.py"), + os.path.join(_TOP_DIR, "include", "freetype", "freetype.h"), + ] + ) + + # Determine the build directory. This will be a temporary file that is + # cleaned up on script exit by default, unless --build-dir=DIR is used, + # in which case we only create and empty the directory, but never remove + # its content on exit. + if args.build_dir: + build_dir = args.build_dir + if not os.path.exists(build_dir): + os.makedirs(build_dir) + else: + # Remove anything from the build directory, if any. + for item in os.listdir(build_dir): + file_path = os.path.join(build_dir, item) + if os.path.isdir(file_path): + shutil.rmtree(file_path) + else: + os.unlink(file_path) + else: + # Create a temporary directory, and ensure it is removed on exit. + build_dir = tempfile.mkdtemp(prefix="freetype-dist-") + + def clean_build_dir(): + shutil.rmtree(build_dir) + + atexit.register(clean_build_dir) + + # Copy all source files known to git into $BUILD_DIR/freetype-$VERSION + # with the exception of .gitignore and .mailmap files. + source_files = [ + f + for f in get_cmd_output(["git", "ls-files"], cwd=git_dir).split("\n") + if os.path.basename(f) not in (".gitignore", ".mailmap") + ] + + freetype_dir = "freetype-" + version + tmp_src_dir = os.path.join(build_dir, freetype_dir) + os.makedirs(tmp_src_dir) + + for src in source_files: + dst = os.path.join(tmp_src_dir, src) + dst_dir = os.path.dirname(dst) + if not os.path.exists(dst_dir): + os.makedirs(dst_dir) + shutil.copy(os.path.join(git_dir, src), dst) + + # Run autogen.sh in directory. + subprocess.check_call(["/bin/sh", "autogen.sh"], cwd=tmp_src_dir) + shutil.rmtree( + os.path.join(tmp_src_dir, "builds", "unix", "autom4te.cache") + ) + + # Copy config.guess and config.sub if possible! + if args.gnu_config_dir: + for f in ("config.guess", "config.sub"): + shutil.copy( + os.path.join(args.gnu_config_dir, f), + os.path.join(tmp_src_dir, "builds", "unix", f), + ) + + # Generate reference documentation under docs/ + subprocess.check_call( + [ + sys.executable, + os.path.join(_SCRIPT_DIR, "generate_reference_docs.py"), + "--input-dir", + tmp_src_dir, + "--version", + version, + "--output-dir", + os.path.join(tmp_src_dir, "docs"), + ] + ) + + shutil.rmtree(os.path.join(tmp_src_dir, "docs", "markdown")) + os.unlink(os.path.join(tmp_src_dir, "docs", "mkdocs.yml")) + + # Generate our archives + freetype_tar = freetype_dir + ".tar" + + subprocess.check_call( + ["tar", "-H", "ustar", "-chf", freetype_tar, freetype_dir], + cwd=build_dir, + ) + + subprocess.check_call( + ["gzip", "-9", "--keep", freetype_tar], cwd=build_dir + ) + + subprocess.check_call(["xz", "--keep", freetype_tar], cwd=build_dir) + + ftwinversion = "ft" + "".join(version.split(".")) + subprocess.check_call( + ["zip", "-qlr9", ftwinversion + ".zip", freetype_dir], cwd=build_dir + ) + + # Copy file to output directory now. + if not os.path.exists(args.output_dir): + os.makedirs(args.output_dir) + + for f in ( + freetype_tar + ".gz", + freetype_tar + ".xz", + ftwinversion + ".zip", + ): + shutil.copy( + os.path.join(build_dir, f), os.path.join(args.output_dir, f) + ) + + # Done! + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/test_afm.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/test_afm.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/test_afm.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/test_afm.c 2022-11-11 15:29:17.000000000 +0800 @@ -2,10 +2,9 @@ * gcc -DFT2_BUILD_LIBRARY -I../../include -o test_afm test_afm.c \ * -L../../objs/.libs -lfreetype -lz -static */ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/freetype.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/psaux.h> void dump_fontinfo( AFM_FontInfo fi ) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/test_bbox.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/test_bbox.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/test_bbox.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/test_bbox.c 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,5 @@ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_BBOX_H +#include <freetype/freetype.h> +#include <freetype/ftbbox.h> #include <time.h> /* for clock() */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/test_trig.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/test_trig.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/test_trig.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/test_trig.c 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,5 @@ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_TRIGONOMETRY_H +#include <freetype/freetype.h> +#include <freetype/fttrigon.h> #include <math.h> #include <stdio.h> diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/update-copyright-year qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/update-copyright-year --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/tools/update-copyright-year 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/tools/update-copyright-year 2022-11-11 15:29:17.000000000 +0800 @@ -2,7 +2,7 @@ & eval 'exec perl -wS -i "$0" $argv:q' if 0; -# Copyright (C) 2015-2019 by +# Copyright (C) 2015-2020 by # Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,37 +0,0 @@ -# FreeType 2 src/truetype Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) truetype ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = ttdriver - ttgload - ttgxvar - ttinterp - ttobjs - ttpic - ttpload - ttsubpix - ; - } - else - { - _sources = truetype ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/truetype Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/truetype.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/truetype.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/truetype.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/truetype.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType TrueType driver component (body only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,7 +17,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "ttdriver.c" /* driver interface */ #include "ttgload.c" /* glyph loader */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttdriver.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttdriver.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttdriver.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttdriver.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType font driver implementation (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,22 +16,21 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_SFNT_H -#include FT_SERVICE_FONT_FORMAT_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/sfnt.h> +#include <freetype/internal/services/svfntfmt.h> #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include FT_MULTIPLE_MASTERS_H -#include FT_SERVICE_MULTIPLE_MASTERS_H -#include FT_SERVICE_METRICS_VARIATIONS_H +#include <freetype/ftmm.h> +#include <freetype/internal/services/svmm.h> +#include <freetype/internal/services/svmetric.h> #endif -#include FT_SERVICE_TRUETYPE_ENGINE_H -#include FT_SERVICE_TRUETYPE_GLYF_H -#include FT_SERVICE_PROPERTIES_H -#include FT_DRIVER_H +#include <freetype/internal/services/svtteng.h> +#include <freetype/internal/services/svttglyf.h> +#include <freetype/internal/services/svprop.h> +#include <freetype/ftdriver.h> #include "ttdriver.h" #include "ttgload.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttdriver.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttdriver.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttdriver.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttdriver.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * High-level TrueType driver interface (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define TTDRIVER_H_ -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H +#include <freetype/internal/ftdrv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/tterrors.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/tterrors.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/tterrors.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/tterrors.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType error codes (specification only). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -26,7 +26,7 @@ #ifndef TTERRORS_H_ #define TTERRORS_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -34,7 +34,7 @@ #define FT_ERR_PREFIX TT_Err_ #define FT_ERR_BASE FT_Mod_Err_TrueType -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* TTERRORS_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttgload.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttgload.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttgload.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttgload.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType Glyph Loader (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,15 +17,15 @@ #include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> #include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_SFNT_H -#include FT_TRUETYPE_TAGS_H -#include FT_OUTLINE_H -#include FT_DRIVER_H -#include FT_LIST_H +#include <freetype/internal/ftcalc.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/sfnt.h> +#include <freetype/tttags.h> +#include <freetype/ftoutln.h> +#include <freetype/ftdriver.h> +#include <freetype/ftlist.h> #include "ttgload.h" #include "ttpload.h" @@ -60,7 +60,7 @@ #define SAME_X 0x10 #define Y_POSITIVE 0x20 /* two meanings depending on Y_SHORT_VECTOR */ #define SAME_Y 0x20 -#define OVERLAP_SIMPLE 0x40 /* we ignore this value */ +#define OVERLAP_SIMPLE 0x40 /* retained as FT_OUTLINE_OVERLAP */ /************************************************************************** @@ -77,7 +77,7 @@ #define WE_HAVE_A_2X2 0x0080 #define WE_HAVE_INSTR 0x0100 #define USE_MY_METRICS 0x0200 -#define OVERLAP_COMPOUND 0x0400 /* we ignore this value */ +#define OVERLAP_COMPOUND 0x0400 /* retained as FT_OUTLINE_OVERLAP */ #define SCALED_COMPONENT_OFFSET 0x0800 #define UNSCALED_COMPONENT_OFFSET 0x1000 @@ -137,6 +137,11 @@ face->horizontal.Descender ); } +#ifdef FT_DEBUG_LEVEL_TRACE + if ( !face->vertical_info ) + FT_TRACE5(( " [vertical metrics missing, computing values]\n" )); +#endif + FT_TRACE5(( " advance height (font units): %d\n", *ah )); FT_TRACE5(( " top side bearing (font units): %d\n", *tsb )); } @@ -333,9 +338,9 @@ loader->bbox.yMax = FT_NEXT_SHORT( p ); FT_TRACE5(( " # of contours: %d\n", loader->n_contours )); - FT_TRACE5(( " xMin: %4d xMax: %4d\n", loader->bbox.xMin, + FT_TRACE5(( " xMin: %4ld xMax: %4ld\n", loader->bbox.xMin, loader->bbox.xMax )); - FT_TRACE5(( " yMin: %4d yMax: %4d\n", loader->bbox.yMin, + FT_TRACE5(( " yMin: %4ld yMax: %4ld\n", loader->bbox.yMin, loader->bbox.yMax )); loader->cursor = p; @@ -489,6 +494,10 @@ } } + /* retain the overlap flag */ + if ( n_points && outline->tags[0] & OVERLAP_SIMPLE ) + gloader->base.outline.flags |= FT_OUTLINE_OVERLAP; + /* reading the X coordinates */ vec = outline->points; @@ -1102,9 +1111,16 @@ } #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - /* if we have a HVAR table, `pp1' and/or `pp2' are already adjusted */ - if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) || - !IS_HINTED( loader->load_flags ) ) + /* if we have a HVAR table, `pp1' and/or `pp2' */ + /* are already adjusted but unscaled */ + if ( ( loader->face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) && + IS_HINTED( loader->load_flags ) ) + { + loader->pp1.x = FT_MulFix( loader->pp1.x, x_scale ); + loader->pp2.x = FT_MulFix( loader->pp2.x, x_scale ); + /* pp1.y and pp2.y are always zero */ + } + else #endif { loader->pp1 = outline->points[n_points - 4]; @@ -1112,9 +1128,17 @@ } #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - /* if we have a VVAR table, `pp3' and/or `pp4' are already adjusted */ - if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) || - !IS_HINTED( loader->load_flags ) ) + /* if we have a VVAR table, `pp3' and/or `pp4' */ + /* are already adjusted but unscaled */ + if ( ( loader->face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) && + IS_HINTED( loader->load_flags ) ) + { + loader->pp3.x = FT_MulFix( loader->pp3.x, x_scale ); + loader->pp3.y = FT_MulFix( loader->pp3.y, y_scale ); + loader->pp4.x = FT_MulFix( loader->pp4.x, x_scale ); + loader->pp4.y = FT_MulFix( loader->pp4.y, y_scale ); + } + else #endif { loader->pp3 = outline->points[n_points - 2]; @@ -2168,6 +2192,11 @@ goto Exit; } } + + /* retain the overlap flag */ + if ( gloader->base.num_subglyphs && + gloader->base.subglyphs[0].flags & OVERLAP_COMPOUND ) + gloader->base.outline.flags |= FT_OUTLINE_OVERLAP; } /***********************************************************************/ @@ -2287,13 +2316,14 @@ if ( face->vertical_info && face->vertical.number_Of_VMetrics > 0 ) { - top = (FT_Short)FT_DivFix( loader->pp3.y - bbox.yMax, + top = (FT_Short)FT_DivFix( SUB_LONG( loader->pp3.y, bbox.yMax ), y_scale ); if ( loader->pp3.y <= loader->pp4.y ) advance = 0; else - advance = (FT_UShort)FT_DivFix( loader->pp3.y - loader->pp4.y, + advance = (FT_UShort)FT_DivFix( SUB_LONG( loader->pp3.y, + loader->pp4.y ), y_scale ); } else @@ -2965,8 +2995,6 @@ error = compute_glyph_metrics( &loader, glyph_index ); } - tt_loader_done( &loader ); - /* Set the `high precision' bit flag. */ /* This is _critical_ to get correct output for monochrome */ /* TrueType glyphs at all sizes using the bytecode interpreter. */ @@ -2975,6 +3003,15 @@ size->metrics->y_ppem < 24 ) glyph->outline.flags |= FT_OUTLINE_HIGH_PRECISION; + FT_TRACE1(( " subglyphs = %u, contours = %hd, points = %hd," + " flags = 0x%.3x\n", + loader.gloader->base.num_subglyphs, + glyph->outline.n_contours, + glyph->outline.n_points, + glyph->outline.flags )); + + tt_loader_done( &loader ); + Exit: #ifdef FT_DEBUG_LEVEL_TRACE if ( error ) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttgload.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttgload.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttgload.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttgload.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType Glyph Loader (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,7 +20,6 @@ #define TTGLOAD_H_ -#include <ft2build.h> #include "ttobjs.h" #ifdef TT_USE_BYTECODE_INTERPRETER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttgxvar.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttgxvar.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttgxvar.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttgxvar.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType GX Font Variation loader * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, Werner Lemberg, and George Williams. * * This file is part of the FreeType project, and may only be used, @@ -40,14 +40,14 @@ #include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> #include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_SFNT_H -#include FT_TRUETYPE_TAGS_H -#include FT_TRUETYPE_IDS_H -#include FT_MULTIPLE_MASTERS_H -#include FT_LIST_H +#include <freetype/internal/ftstream.h> +#include <freetype/internal/sfnt.h> +#include <freetype/tttags.h> +#include <freetype/ttnameid.h> +#include <freetype/ftmm.h> +#include <freetype/ftlist.h> #include "ttpload.h" #include "ttgxvar.h" @@ -1470,6 +1470,7 @@ FT_ULong table_len; FT_ULong gvar_start; FT_ULong offsetToData; + FT_ULong offsets_len; GX_GVar_Head gvar_head; static const FT_Frame_Field gvar_fields[] = @@ -1530,9 +1531,13 @@ goto Exit; } - /* rough sanity check: offsets can be either 2 or 4 bytes */ - if ( (FT_ULong)gvar_head.glyphCount * - ( ( gvar_head.flags & 1 ) ? 4 : 2 ) > table_len ) + /* offsets can be either 2 or 4 bytes */ + /* (one more offset than glyphs, to mark size of last) */ + offsets_len = ( gvar_head.glyphCount + 1 ) * + ( ( gvar_head.flags & 1 ) ? 4L : 2L ); + + /* rough sanity check */ + if (offsets_len > table_len ) { FT_TRACE1(( "ft_var_load_gvar: invalid number of glyphs\n" )); error = FT_THROW( Invalid_Table ); @@ -1541,81 +1546,102 @@ FT_TRACE2(( "loaded\n" )); - blend->gvar_size = table_len; - blend->tuplecount = gvar_head.globalCoordCount; - blend->gv_glyphcnt = gvar_head.glyphCount; - offsetToData = gvar_start + gvar_head.offsetToData; + blend->gvar_size = table_len; + offsetToData = gvar_start + gvar_head.offsetToData; FT_TRACE5(( "gvar: there %s %d shared coordinate%s:\n", - blend->tuplecount == 1 ? "is" : "are", - blend->tuplecount, - blend->tuplecount == 1 ? "" : "s" )); + gvar_head.globalCoordCount == 1 ? "is" : "are", + gvar_head.globalCoordCount, + gvar_head.globalCoordCount == 1 ? "" : "s" )); - if ( FT_NEW_ARRAY( blend->glyphoffsets, blend->gv_glyphcnt + 1 ) ) + if ( FT_FRAME_ENTER( offsets_len ) ) goto Exit; + /* offsets (one more offset than glyphs, to mark size of last) */ + if ( FT_NEW_ARRAY( blend->glyphoffsets, gvar_head.glyphCount + 1 ) ) + goto Fail2; + if ( gvar_head.flags & 1 ) { - FT_ULong limit = gvar_start + table_len; + FT_ULong limit = gvar_start + table_len; + FT_ULong max_offset = 0; - /* long offsets (one more offset than glyphs, to mark size of last) */ - if ( FT_FRAME_ENTER( ( blend->gv_glyphcnt + 1 ) * 4L ) ) - goto Exit; - - for ( i = 0; i <= blend->gv_glyphcnt; i++ ) + for ( i = 0; i <= gvar_head.glyphCount; i++ ) { blend->glyphoffsets[i] = offsetToData + FT_GET_ULONG(); - /* use `>', not `>=' */ - if ( blend->glyphoffsets[i] > limit ) + + if ( max_offset <= blend->glyphoffsets[i] ) + max_offset = blend->glyphoffsets[i]; + else { FT_TRACE2(( "ft_var_load_gvar:" - " invalid glyph variation data offset for index %d\n", + " glyph variation data offset %d not monotonic\n", i )); - error = FT_THROW( Invalid_Table ); - break; + blend->glyphoffsets[i] = max_offset; + } + + /* use `<', not `<=' */ + if ( limit < blend->glyphoffsets[i] ) + { + FT_TRACE2(( "ft_var_load_gvar:" + " glyph variation data offset %d out of range\n", + i )); + blend->glyphoffsets[i] = limit; } } } else { - FT_ULong limit = gvar_start + table_len; - + FT_ULong limit = gvar_start + table_len; + FT_ULong max_offset = 0; - /* short offsets (one more offset than glyphs, to mark size of last) */ - if ( FT_FRAME_ENTER( ( blend->gv_glyphcnt + 1 ) * 2L ) ) - goto Exit; - for ( i = 0; i <= blend->gv_glyphcnt; i++ ) + for ( i = 0; i <= gvar_head.glyphCount; i++ ) { blend->glyphoffsets[i] = offsetToData + FT_GET_USHORT() * 2; - /* use `>', not `>=' */ - if ( blend->glyphoffsets[i] > limit ) + + if ( max_offset <= blend->glyphoffsets[i] ) + max_offset = blend->glyphoffsets[i]; + else { FT_TRACE2(( "ft_var_load_gvar:" - " invalid glyph variation data offset for index %d\n", + " glyph variation data offset %d not monotonic\n", i )); - error = FT_THROW( Invalid_Table ); - break; + blend->glyphoffsets[i] = max_offset; + } + + /* use `<', not `<=' */ + if ( limit < blend->glyphoffsets[i] ) + { + FT_TRACE2(( "ft_var_load_gvar:" + " glyph variation data offset %d out of range\n", + i )); + blend->glyphoffsets[i] = limit; } } } + blend->gv_glyphcnt = gvar_head.glyphCount; + FT_FRAME_EXIT(); - if ( error ) - goto Exit; - if ( blend->tuplecount != 0 ) + if ( gvar_head.globalCoordCount != 0 ) { - if ( FT_NEW_ARRAY( blend->tuplecoords, - gvar_head.axisCount * blend->tuplecount ) ) - goto Exit; + if ( FT_STREAM_SEEK( gvar_start + gvar_head.offsetToCoord ) || + FT_FRAME_ENTER( gvar_head.globalCoordCount * + gvar_head.axisCount * 2L ) ) + { + FT_TRACE2(( "ft_var_load_gvar:" + " glyph variation shared tuples missing\n" )); + goto Fail; + } - if ( FT_STREAM_SEEK( gvar_start + gvar_head.offsetToCoord ) || - FT_FRAME_ENTER( blend->tuplecount * gvar_head.axisCount * 2L ) ) - goto Exit; + if ( FT_NEW_ARRAY( blend->tuplecoords, + gvar_head.axisCount * gvar_head.globalCoordCount ) ) + goto Fail2; - for ( i = 0; i < blend->tuplecount; i++ ) + for ( i = 0; i < gvar_head.globalCoordCount; i++ ) { FT_TRACE5(( " [ " )); for ( j = 0; j < (FT_UInt)gvar_head.axisCount; j++ ) @@ -1628,6 +1654,8 @@ FT_TRACE5(( "]\n" )); } + blend->tuplecount = gvar_head.globalCoordCount; + FT_TRACE5(( "\n" )); FT_FRAME_EXIT(); @@ -1635,6 +1663,14 @@ Exit: return error; + + Fail2: + FT_FRAME_EXIT(); + + Fail: + FT_FREE( blend->glyphoffsets ); + blend->gv_glyphcnt = 0; + goto Exit; } @@ -1693,7 +1729,7 @@ if ( tuple_coords[i] == 0 ) { - FT_TRACE6(( " tuple coordinate is zero, ignore\n", i )); + FT_TRACE6(( " tuple coordinate is zero, ignore\n" )); continue; } @@ -2127,7 +2163,7 @@ /* `fvar' table validity check in `sfnt_init_face' */ /* the various `*_size' variables, which we also use as */ - /* offsets into the `mmlen' array, must be multiples of the */ + /* offsets into the `mmvar' array, must be multiples of the */ /* pointer size (except the last one); without such an */ /* alignment there might be runtime errors due to */ /* misaligned addresses */ @@ -3037,7 +3073,7 @@ TT_Set_Named_Instance( TT_Face face, FT_UInt instance_index ) { - FT_Error error = FT_ERR( Invalid_Argument ); + FT_Error error; GX_Blend blend; FT_MM_Var* mmvar; @@ -3057,7 +3093,10 @@ /* `instance_index' starts with value 1, thus `>' */ if ( instance_index > num_instances ) + { + error = FT_ERR( Invalid_Argument ); goto Exit; + } if ( instance_index > 0 ) { @@ -3766,7 +3805,7 @@ blend->glyphoffsets[glyph_index + 1] ) { FT_TRACE2(( "TT_Vary_Apply_Glyph_Deltas:" - " no variation data for this glyph\n" )); + " no variation data for glyph %d\n", glyph_index )); return FT_Err_Ok; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttgxvar.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttgxvar.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttgxvar.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttgxvar.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType GX Font Variation loader (specification) * - * Copyright (C) 2004-2019 by + * Copyright (C) 2004-2020 by * David Turner, Robert Wilhelm, Werner Lemberg and George Williams. * * This file is part of the FreeType project, and may only be used, @@ -20,7 +20,6 @@ #define TTGXVAR_H_ -#include <ft2build.h> #include "ttobjs.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttinterp.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttinterp.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttinterp.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttinterp.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType bytecode interpreter (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,13 +20,12 @@ /* issues; many thanks! */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H -#include FT_TRIGONOMETRY_H -#include FT_SYSTEM_H -#include FT_DRIVER_H -#include FT_MULTIPLE_MASTERS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftcalc.h> +#include <freetype/fttrigon.h> +#include <freetype/ftsystem.h> +#include <freetype/ftdriver.h> +#include <freetype/ftmm.h> #include "ttinterp.h" #include "tterrors.h" @@ -294,7 +293,7 @@ FT_Error error; - FT_TRACE1(( "Init_Context: new object at 0x%08p\n", exec )); + FT_TRACE1(( "Init_Context: new object at %p\n", (void *)exec )); exec->memory = memory; exec->callSize = 32; @@ -319,7 +318,7 @@ return FT_Err_Ok; Fail_Memory: - FT_ERROR(( "Init_Context: not enough memory for %p\n", exec )); + FT_ERROR(( "Init_Context: not enough memory for %p\n", (void *)exec )); TT_Done_Context( exec ); return error; @@ -1956,8 +1955,8 @@ * distance :: * The distance (not) to round. * - * compensation :: - * The engine compensation. + * color :: + * The engine compensation color. * * @Return: * The compensated distance. @@ -1965,12 +1964,11 @@ static FT_F26Dot6 Round_None( TT_ExecContext exc, FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + FT_Int color ) { + FT_F26Dot6 compensation = exc->tt_metrics.compensations[color]; FT_F26Dot6 val; - FT_UNUSED( exc ); - if ( distance >= 0 ) { @@ -2000,8 +1998,8 @@ * distance :: * The distance to round. * - * compensation :: - * The engine compensation. + * color :: + * The engine compensation color. * * @Return: * Rounded distance. @@ -2009,12 +2007,11 @@ static FT_F26Dot6 Round_To_Grid( TT_ExecContext exc, FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + FT_Int color ) { + FT_F26Dot6 compensation = exc->tt_metrics.compensations[color]; FT_F26Dot6 val; - FT_UNUSED( exc ); - if ( distance >= 0 ) { @@ -2046,8 +2043,8 @@ * distance :: * The distance to round. * - * compensation :: - * The engine compensation. + * color :: + * The engine compensation color. * * @Return: * Rounded distance. @@ -2055,12 +2052,11 @@ static FT_F26Dot6 Round_To_Half_Grid( TT_ExecContext exc, FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + FT_Int color ) { + FT_F26Dot6 compensation = exc->tt_metrics.compensations[color]; FT_F26Dot6 val; - FT_UNUSED( exc ); - if ( distance >= 0 ) { @@ -2094,8 +2090,8 @@ * distance :: * The distance to round. * - * compensation :: - * The engine compensation. + * color :: + * The engine compensation color. * * @Return: * Rounded distance. @@ -2103,12 +2099,11 @@ static FT_F26Dot6 Round_Down_To_Grid( TT_ExecContext exc, FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + FT_Int color ) { + FT_F26Dot6 compensation = exc->tt_metrics.compensations[color]; FT_F26Dot6 val; - FT_UNUSED( exc ); - if ( distance >= 0 ) { @@ -2139,8 +2134,8 @@ * distance :: * The distance to round. * - * compensation :: - * The engine compensation. + * color :: + * The engine compensation color. * * @Return: * Rounded distance. @@ -2148,12 +2143,11 @@ static FT_F26Dot6 Round_Up_To_Grid( TT_ExecContext exc, FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + FT_Int color ) { + FT_F26Dot6 compensation = exc->tt_metrics.compensations[color]; FT_F26Dot6 val; - FT_UNUSED( exc ); - if ( distance >= 0 ) { @@ -2185,8 +2179,8 @@ * distance :: * The distance to round. * - * compensation :: - * The engine compensation. + * color :: + * The engine compensation color. * * @Return: * Rounded distance. @@ -2194,12 +2188,11 @@ static FT_F26Dot6 Round_To_Double_Grid( TT_ExecContext exc, FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + FT_Int color ) { + FT_F26Dot6 compensation = exc->tt_metrics.compensations[color]; FT_F26Dot6 val; - FT_UNUSED( exc ); - if ( distance >= 0 ) { @@ -2231,8 +2224,8 @@ * distance :: * The distance to round. * - * compensation :: - * The engine compensation. + * color :: + * The engine compensation color. * * @Return: * Rounded distance. @@ -2246,8 +2239,9 @@ static FT_F26Dot6 Round_Super( TT_ExecContext exc, FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + FT_Int color ) { + FT_F26Dot6 compensation = exc->tt_metrics.compensations[color]; FT_F26Dot6 val; @@ -2286,8 +2280,8 @@ * distance :: * The distance to round. * - * compensation :: - * The engine compensation. + * color :: + * The engine compensation color. * * @Return: * Rounded distance. @@ -2299,8 +2293,9 @@ static FT_F26Dot6 Round_Super_45( TT_ExecContext exc, FT_F26Dot6 distance, - FT_F26Dot6 compensation ) + FT_Int color ) { + FT_F26Dot6 compensation = exc->tt_metrics.compensations[color]; FT_F26Dot6 val; @@ -2899,7 +2894,7 @@ Ins_ODD( TT_ExecContext exc, FT_Long* args ) { - args[0] = ( ( exc->func_round( exc, args[0], 0 ) & 127 ) == 64 ); + args[0] = ( ( exc->func_round( exc, args[0], 3 ) & 127 ) == 64 ); } @@ -2913,7 +2908,7 @@ Ins_EVEN( TT_ExecContext exc, FT_Long* args ) { - args[0] = ( ( exc->func_round( exc, args[0], 0 ) & 127 ) == 0 ); + args[0] = ( ( exc->func_round( exc, args[0], 3 ) & 127 ) == 0 ); } @@ -3243,10 +3238,7 @@ Ins_ROUND( TT_ExecContext exc, FT_Long* args ) { - args[0] = exc->func_round( - exc, - args[0], - exc->tt_metrics.compensations[exc->opcode - 0x68] ); + args[0] = exc->func_round( exc, args[0], exc->opcode & 3 ); } @@ -3260,10 +3252,7 @@ Ins_NROUND( TT_ExecContext exc, FT_Long* args ) { - args[0] = Round_None( - exc, - args[0], - exc->tt_metrics.compensations[exc->opcode - 0x6C] ); + args[0] = Round_None( exc, args[0], exc->opcode & 3 ); } @@ -3718,7 +3707,7 @@ /* We will then parse the current table. */ rec = exc->FDefs; - limit = rec + exc->numFDefs; + limit = FT_OFFSET( rec, exc->numFDefs ); n = (FT_ULong)args[0]; for ( ; rec < limit; rec++ ) @@ -3965,6 +3954,9 @@ if ( BOUNDSL( F, exc->maxFunc + 1 ) ) goto Fail; + if ( !exc->FDefs ) + goto Fail; + /* Except for some old Apple fonts, all functions in a TrueType */ /* font are defined in increasing order, starting from 0. This */ /* means that we normally have */ @@ -4062,7 +4054,7 @@ /* */ /* If this isn't true, we need to look up the function table. */ - def = exc->FDefs + F; + def = FT_OFFSET( exc->FDefs, F ); if ( exc->maxFunc + 1 != exc->numFDefs || def->opc != F ) { /* look up the FDefs table */ @@ -4070,7 +4062,7 @@ def = exc->FDefs; - limit = def + exc->numFDefs; + limit = FT_OFFSET( def, exc->numFDefs ); while ( def < limit && def->opc != F ) def++; @@ -4150,7 +4142,7 @@ /* First of all, look for the same function in our table */ def = exc->IDefs; - limit = def + exc->numIDefs; + limit = FT_OFFSET( def, exc->numIDefs ); for ( ; def < limit; def++ ) if ( def->opc == (FT_ULong)args[0] ) @@ -5730,9 +5722,6 @@ { FT_F26Dot6 dx, dy; FT_UShort point; -#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - FT_Int B1, B2; -#endif #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL FT_Bool in_twilight = FT_BOOL( exc->GS.gep0 == 0 || exc->GS.gep1 == 0 || @@ -5767,8 +5756,12 @@ } else #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - if ( SUBPIXEL_HINTING_INFINALITY ) + if ( SUBPIXEL_HINTING_INFINALITY && + exc->ignore_x_mode ) { + FT_Int B1, B2; + + /* If not using ignore_x_mode rendering, allow ZP2 move. */ /* If inline deltas aren't allowed, skip ZP2 move. */ /* If using ignore_x_mode rendering, allow ZP2 point move if: */ @@ -5777,72 +5770,57 @@ /* - the glyph is specifically set to allow SHPIX moves */ /* - the move is on a previously Y-touched point */ - if ( exc->ignore_x_mode ) + /* save point for later comparison */ + B1 = exc->zp2.cur[point].y; + + if ( exc->face->sph_compatibility_mode ) { - /* save point for later comparison */ - if ( exc->GS.freeVector.y != 0 ) - B1 = exc->zp2.cur[point].y; - else - B1 = exc->zp2.cur[point].x; + if ( exc->sph_tweak_flags & SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES ) + dy = FT_PIX_ROUND( B1 + dy ) - B1; - if ( !exc->face->sph_compatibility_mode && - exc->GS.freeVector.y != 0 ) - { - Move_Zp2_Point( exc, point, dx, dy, TRUE ); + /* skip post-iup deltas */ + if ( exc->iup_called && + ( ( exc->sph_in_func_flags & SPH_FDEF_INLINE_DELTA_1 ) || + ( exc->sph_in_func_flags & SPH_FDEF_INLINE_DELTA_2 ) ) ) + goto Skip; + + if ( !( exc->sph_tweak_flags & SPH_TWEAK_ALWAYS_SKIP_DELTAP ) && + ( ( exc->is_composite && exc->GS.freeVector.y != 0 ) || + ( exc->zp2.tags[point] & FT_CURVE_TAG_TOUCH_Y ) || + ( exc->sph_tweak_flags & SPH_TWEAK_DO_SHPIX ) ) ) + Move_Zp2_Point( exc, point, 0, dy, TRUE ); - /* save new point */ - if ( exc->GS.freeVector.y != 0 ) - { - B2 = exc->zp2.cur[point].y; - - /* reverse any disallowed moves */ - if ( ( exc->sph_tweak_flags & SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES ) && - ( B1 & 63 ) != 0 && - ( B2 & 63 ) != 0 && - B1 != B2 ) - Move_Zp2_Point( exc, - point, - NEG_LONG( dx ), - NEG_LONG( dy ), - TRUE ); - } - } - else if ( exc->face->sph_compatibility_mode ) + /* save new point */ + if ( exc->GS.freeVector.y != 0 ) { - if ( exc->sph_tweak_flags & SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES ) - { - dx = FT_PIX_ROUND( B1 + dx ) - B1; - dy = FT_PIX_ROUND( B1 + dy ) - B1; - } + B2 = exc->zp2.cur[point].y; - /* skip post-iup deltas */ - if ( exc->iup_called && - ( ( exc->sph_in_func_flags & SPH_FDEF_INLINE_DELTA_1 ) || - ( exc->sph_in_func_flags & SPH_FDEF_INLINE_DELTA_2 ) ) ) - goto Skip; - - if ( !( exc->sph_tweak_flags & SPH_TWEAK_ALWAYS_SKIP_DELTAP ) && - ( ( exc->is_composite && exc->GS.freeVector.y != 0 ) || - ( exc->zp2.tags[point] & FT_CURVE_TAG_TOUCH_Y ) || - ( exc->sph_tweak_flags & SPH_TWEAK_DO_SHPIX ) ) ) - Move_Zp2_Point( exc, point, 0, dy, TRUE ); + /* reverse any disallowed moves */ + if ( ( B1 & 63 ) == 0 && + ( B2 & 63 ) != 0 && + B1 != B2 ) + Move_Zp2_Point( exc, point, 0, NEG_LONG( dy ), TRUE ); + } + } + else if ( exc->GS.freeVector.y != 0 ) + { + Move_Zp2_Point( exc, point, dx, dy, TRUE ); - /* save new point */ - if ( exc->GS.freeVector.y != 0 ) - { - B2 = exc->zp2.cur[point].y; + /* save new point */ + B2 = exc->zp2.cur[point].y; - /* reverse any disallowed moves */ - if ( ( B1 & 63 ) == 0 && - ( B2 & 63 ) != 0 && - B1 != B2 ) - Move_Zp2_Point( exc, point, 0, NEG_LONG( dy ), TRUE ); - } - } - else if ( exc->sph_in_func_flags & SPH_FDEF_TYPEMAN_DIAGENDCTRL ) - Move_Zp2_Point( exc, point, dx, dy, TRUE ); + /* reverse any disallowed moves */ + if ( ( exc->sph_tweak_flags & SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES ) && + ( B1 & 63 ) != 0 && + ( B2 & 63 ) != 0 && + B1 != B2 ) + Move_Zp2_Point( exc, + point, + NEG_LONG( dx ), + NEG_LONG( dy ), + TRUE ); } - else + else if ( exc->sph_in_func_flags & SPH_FDEF_TYPEMAN_DIAGENDCTRL ) Move_Zp2_Point( exc, point, dx, dy, TRUE ); } else @@ -5890,21 +5868,7 @@ { FT_UShort point = 0; FT_F26Dot6 distance; -#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - FT_F26Dot6 control_value_cutin = 0; - FT_F26Dot6 delta; - - if ( SUBPIXEL_HINTING_INFINALITY ) - { - control_value_cutin = exc->GS.control_value_cutin; - - if ( exc->ignore_x_mode && - exc->GS.freeVector.x != 0 && - !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) ) - control_value_cutin = 0; - } -#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ point = (FT_UShort)args[0]; @@ -5928,16 +5892,25 @@ distance = PROJECT( exc->zp1.cur + point, exc->zp0.cur + exc->GS.rp0 ); #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - delta = SUB_LONG( distance, args[1] ); - if ( delta < 0 ) - delta = NEG_LONG( delta ); - /* subpixel hinting - make MSIRP respect CVT cut-in; */ - if ( SUBPIXEL_HINTING_INFINALITY && - exc->ignore_x_mode && - exc->GS.freeVector.x != 0 && - delta >= control_value_cutin ) - distance = args[1]; + if ( SUBPIXEL_HINTING_INFINALITY && + exc->ignore_x_mode && + exc->GS.freeVector.x != 0 ) + { + FT_F26Dot6 control_value_cutin = exc->GS.control_value_cutin; + FT_F26Dot6 delta; + + + if ( !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) ) + control_value_cutin = 0; + + delta = SUB_LONG( distance, args[1] ); + if ( delta < 0 ) + delta = NEG_LONG( delta ); + + if ( delta >= control_value_cutin ) + distance = args[1]; + } #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ exc->func_move( exc, @@ -5984,18 +5957,10 @@ if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && exc->GS.freeVector.x != 0 ) - distance = SUB_LONG( - Round_None( exc, - cur_dist, - exc->tt_metrics.compensations[0] ), - cur_dist ); + distance = SUB_LONG( Round_None( exc, cur_dist, 3 ), cur_dist ); else #endif - distance = SUB_LONG( - exc->func_round( exc, - cur_dist, - exc->tt_metrics.compensations[0] ), - cur_dist ); + distance = SUB_LONG( exc->func_round( exc, cur_dist, 3 ), cur_dist ); } else distance = 0; @@ -6021,21 +5986,10 @@ FT_UShort point; FT_F26Dot6 distance; FT_F26Dot6 org_dist; - FT_F26Dot6 control_value_cutin; - control_value_cutin = exc->GS.control_value_cutin; - cvtEntry = (FT_ULong)args[1]; - point = (FT_UShort)args[0]; - -#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - if ( SUBPIXEL_HINTING_INFINALITY && - exc->ignore_x_mode && - exc->GS.freeVector.x != 0 && - exc->GS.freeVector.y == 0 && - !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) ) - control_value_cutin = 0; -#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ + cvtEntry = (FT_ULong)args[1]; + point = (FT_UShort)args[0]; if ( BOUNDS( point, exc->zp0.n_points ) || BOUNDSL( cvtEntry, exc->cvtSize ) ) @@ -6079,7 +6033,7 @@ exc->zp0.org[point].x = TT_MulFix14( distance, exc->GS.freeVector.x ); exc->zp0.org[point].y = TT_MulFix14( distance, - exc->GS.freeVector.y ), + exc->GS.freeVector.y ); exc->zp0.cur[point] = exc->zp0.org[point]; } #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY @@ -6095,9 +6049,19 @@ if ( ( exc->opcode & 1 ) != 0 ) /* rounding and control cut-in flag */ { + FT_F26Dot6 control_value_cutin = exc->GS.control_value_cutin; FT_F26Dot6 delta; +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && + exc->ignore_x_mode && + exc->GS.freeVector.x != 0 && + exc->GS.freeVector.y == 0 && + !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) ) + control_value_cutin = 0; +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ + delta = SUB_LONG( distance, org_dist ); if ( delta < 0 ) delta = NEG_LONG( delta ); @@ -6109,14 +6073,10 @@ if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && exc->GS.freeVector.x != 0 ) - distance = Round_None( exc, - distance, - exc->tt_metrics.compensations[0] ); + distance = Round_None( exc, distance, 3 ); else #endif - distance = exc->func_round( exc, - distance, - exc->tt_metrics.compensations[0] ); + distance = exc->func_round( exc, distance, 3 ); } exc->func_move( exc, &exc->zp0, point, SUB_LONG( distance, org_dist ) ); @@ -6138,18 +6098,8 @@ FT_Long* args ) { FT_UShort point = 0; - FT_F26Dot6 org_dist, distance, minimum_distance; - + FT_F26Dot6 org_dist, distance; - minimum_distance = exc->GS.minimum_distance; - -#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - if ( SUBPIXEL_HINTING_INFINALITY && - exc->ignore_x_mode && - exc->GS.freeVector.x != 0 && - !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) ) - minimum_distance = 0; -#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ point = (FT_UShort)args[0]; @@ -6223,27 +6173,29 @@ if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && exc->GS.freeVector.x != 0 ) - distance = Round_None( - exc, - org_dist, - exc->tt_metrics.compensations[exc->opcode & 3] ); + distance = Round_None( exc, org_dist, exc->opcode & 3 ); else #endif - distance = exc->func_round( - exc, - org_dist, - exc->tt_metrics.compensations[exc->opcode & 3] ); + distance = exc->func_round( exc, org_dist, exc->opcode & 3 ); } else - distance = Round_None( - exc, - org_dist, - exc->tt_metrics.compensations[exc->opcode & 3] ); + distance = Round_None( exc, org_dist, exc->opcode & 3 ); /* minimum distance flag */ if ( ( exc->opcode & 8 ) != 0 ) { + FT_F26Dot6 minimum_distance = exc->GS.minimum_distance; + + +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && + exc->ignore_x_mode && + exc->GS.freeVector.x != 0 && + !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) ) + minimum_distance = 0; +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ + if ( org_dist >= 0 ) { if ( distance < minimum_distance ) @@ -6287,30 +6239,13 @@ FT_F26Dot6 cvt_dist, distance, cur_dist, - org_dist, - control_value_cutin, - minimum_distance; -#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - FT_Int B1 = 0; /* pacify compiler */ - FT_Int B2 = 0; - FT_Bool reverse_move = FALSE; -#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ + org_dist; FT_F26Dot6 delta; - minimum_distance = exc->GS.minimum_distance; - control_value_cutin = exc->GS.control_value_cutin; - point = (FT_UShort)args[0]; - cvtEntry = (FT_ULong)( ADD_LONG( args[1], 1 ) ); - -#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - if ( SUBPIXEL_HINTING_INFINALITY && - exc->ignore_x_mode && - exc->GS.freeVector.x != 0 && - !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) ) - control_value_cutin = minimum_distance = 0; -#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ + point = (FT_UShort)args[0]; + cvtEntry = (FT_ULong)( ADD_LONG( args[1], 1 ) ); /* XXX: UNDOCUMENTED! cvt[-1] = 0 always */ @@ -6346,12 +6281,14 @@ /* twilight points (confirmed by Greg Hitchcock) */ if ( exc->GS.gep1 == 0 ) { - exc->zp1.org[point].x = exc->zp0.org[exc->GS.rp0].x + - TT_MulFix14( cvt_dist, - exc->GS.freeVector.x ); - exc->zp1.org[point].y = exc->zp0.org[exc->GS.rp0].y + - TT_MulFix14( cvt_dist, - exc->GS.freeVector.y ); + exc->zp1.org[point].x = ADD_LONG( + exc->zp0.org[exc->GS.rp0].x, + TT_MulFix14( cvt_dist, + exc->GS.freeVector.x ) ); + exc->zp1.org[point].y = ADD_LONG( + exc->zp0.org[exc->GS.rp0].y, + TT_MulFix14( cvt_dist, + exc->GS.freeVector.y ) ); exc->zp1.cur[point] = exc->zp1.org[point]; } @@ -6366,19 +6303,6 @@ cvt_dist = NEG_LONG( cvt_dist ); } -#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - if ( SUBPIXEL_HINTING_INFINALITY && - exc->ignore_x_mode && - exc->GS.freeVector.y != 0 && - ( exc->sph_tweak_flags & SPH_TWEAK_TIMES_NEW_ROMAN_HACK ) ) - { - if ( cur_dist < -64 ) - cvt_dist -= 16; - else if ( cur_dist > 64 && cur_dist < 84 ) - cvt_dist += 32; - } -#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ - /* control value cut-in and round */ if ( ( exc->opcode & 4 ) != 0 ) @@ -6388,6 +6312,9 @@ if ( exc->GS.gep0 == exc->GS.gep1 ) { + FT_F26Dot6 control_value_cutin = exc->GS.control_value_cutin; + + /* XXX: According to Greg Hitchcock, the following wording is */ /* the right one: */ /* */ @@ -6408,10 +6335,7 @@ cvt_dist = org_dist; } - distance = exc->func_round( - exc, - cvt_dist, - exc->tt_metrics.compensations[exc->opcode & 3] ); + distance = exc->func_round( exc, cvt_dist, exc->opcode & 3 ); } else { @@ -6422,6 +6346,22 @@ exc->ignore_x_mode && exc->GS.gep0 == exc->GS.gep1 ) { + FT_F26Dot6 control_value_cutin = exc->GS.control_value_cutin; + + + if ( exc->GS.freeVector.x != 0 && + !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) ) + control_value_cutin = 0; + + if ( exc->GS.freeVector.y != 0 && + ( exc->sph_tweak_flags & SPH_TWEAK_TIMES_NEW_ROMAN_HACK ) ) + { + if ( cur_dist < -64 ) + cvt_dist -= 16; + else if ( cur_dist > 64 && cur_dist < 84 ) + cvt_dist += 32; + } + delta = SUB_LONG( cvt_dist, org_dist ); if ( delta < 0 ) delta = NEG_LONG( delta ); @@ -6431,16 +6371,24 @@ } #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ - distance = Round_None( - exc, - cvt_dist, - exc->tt_metrics.compensations[exc->opcode & 3] ); + distance = Round_None( exc, cvt_dist, exc->opcode & 3 ); } /* minimum distance test */ if ( ( exc->opcode & 8 ) != 0 ) { + FT_F26Dot6 minimum_distance = exc->GS.minimum_distance; + + +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY + if ( SUBPIXEL_HINTING_INFINALITY && + exc->ignore_x_mode && + exc->GS.freeVector.x != 0 && + !( exc->sph_tweak_flags & SPH_TWEAK_NORMAL_ROUND ) ) + minimum_distance = 0; +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ + if ( org_dist >= 0 ) { if ( distance < minimum_distance ) @@ -6454,60 +6402,51 @@ } #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - if ( SUBPIXEL_HINTING_INFINALITY ) + if ( SUBPIXEL_HINTING_INFINALITY && + exc->ignore_x_mode && + exc->GS.freeVector.y != 0 ) { + FT_Int B1, B2; + + B1 = exc->zp1.cur[point].y; /* Round moves if necessary */ - if ( exc->ignore_x_mode && - exc->GS.freeVector.y != 0 && - ( exc->sph_tweak_flags & SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES ) ) + if ( exc->sph_tweak_flags & SPH_TWEAK_ROUND_NONPIXEL_Y_MOVES ) distance = FT_PIX_ROUND( B1 + distance - cur_dist ) - B1 + cur_dist; - if ( exc->ignore_x_mode && - exc->GS.freeVector.y != 0 && - ( exc->opcode & 16 ) == 0 && + if ( ( exc->opcode & 16 ) == 0 && ( exc->opcode & 8 ) == 0 && ( exc->sph_tweak_flags & SPH_TWEAK_COURIER_NEW_2_HACK ) ) distance += 64; - } -#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ - exc->func_move( exc, - &exc->zp1, - point, - SUB_LONG( distance, cur_dist ) ); + exc->func_move( exc, + &exc->zp1, + point, + SUB_LONG( distance, cur_dist ) ); -#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - if ( SUBPIXEL_HINTING_INFINALITY ) - { B2 = exc->zp1.cur[point].y; /* Reverse move if necessary */ - if ( exc->ignore_x_mode ) - { - if ( exc->face->sph_compatibility_mode && - exc->GS.freeVector.y != 0 && + if ( ( exc->face->sph_compatibility_mode && ( B1 & 63 ) == 0 && - ( B2 & 63 ) != 0 ) - reverse_move = TRUE; - - if ( ( exc->sph_tweak_flags & SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES ) && - exc->GS.freeVector.y != 0 && - ( B2 & 63 ) != 0 && - ( B1 & 63 ) != 0 ) - reverse_move = TRUE; - } - - if ( reverse_move ) + ( B2 & 63 ) != 0 ) || + ( ( exc->sph_tweak_flags & SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES ) && + ( B1 & 63 ) != 0 && + ( B2 & 63 ) != 0 ) ) exc->func_move( exc, &exc->zp1, point, SUB_LONG( cur_dist, distance ) ); } - + else #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ + exc->func_move( exc, + &exc->zp1, + point, + SUB_LONG( distance, cur_dist ) ); + Fail: exc->GS.rp1 = exc->GS.rp0; @@ -7180,10 +7119,9 @@ FT_UShort A; FT_ULong C, P; FT_Long B; -#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY - FT_UShort B1, B2; +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY if ( SUBPIXEL_HINTING_INFINALITY && exc->ignore_x_mode && exc->iup_called && @@ -7264,6 +7202,9 @@ /* rules, always skipping deltas in subpixel direction. */ else if ( exc->ignore_x_mode && exc->GS.freeVector.y != 0 ) { + FT_UShort B1, B2; + + /* save the y value of the point now; compare after move */ B1 = (FT_UShort)exc->zp0.cur[A].y; @@ -7715,7 +7656,7 @@ Ins_UNKNOWN( TT_ExecContext exc ) { TT_DefRecord* def = exc->IDefs; - TT_DefRecord* limit = def + exc->numIDefs; + TT_DefRecord* limit = FT_OFFSET( def, exc->numIDefs ); for ( ; def < limit; def++ ) @@ -7841,7 +7782,7 @@ num_twilight_points = 0xFFFFU; FT_TRACE5(( "TT_RunIns: Resetting number of twilight points\n" - " from %d to the more reasonable value %d\n", + " from %d to the more reasonable value %ld\n", exc->twilight.n_points, num_twilight_points )); exc->twilight.n_points = (FT_UShort)num_twilight_points; @@ -7867,7 +7808,7 @@ FT_MAX( 50, exc->cvtSize / 10 ); else - exc->loopcall_counter_max = 300 + 8 * exc->cvtSize; + exc->loopcall_counter_max = 300 + 22 * exc->cvtSize; /* as a protection against an unreasonable number of CVT entries */ /* we assume at most 100 control values per glyph for the counter */ @@ -7876,11 +7817,11 @@ exc->loopcall_counter_max = 100 * (FT_ULong)exc->face->root.num_glyphs; FT_TRACE5(( "TT_RunIns: Limiting total number of loops in LOOPCALL" - " to %d\n", exc->loopcall_counter_max )); + " to %ld\n", exc->loopcall_counter_max )); exc->neg_jump_counter_max = exc->loopcall_counter_max; FT_TRACE5(( "TT_RunIns: Limiting total number of backward jumps" - " to %d\n", exc->neg_jump_counter_max )); + " to %ld\n", exc->neg_jump_counter_max )); /* set PPEM and CVT functions */ exc->tt_metrics.ratio = 0; @@ -7917,14 +7858,14 @@ /* if tracing level is 7, show current code position */ /* and the first few stack elements also */ FT_TRACE6(( " " )); - FT_TRACE7(( "%06d ", exc->IP )); + FT_TRACE7(( "%06ld ", exc->IP )); FT_TRACE6(( "%s", opcode_name[exc->opcode] + 2 )); FT_TRACE7(( "%*s", *opcode_name[exc->opcode] == 'A' ? 2 : 12 - ( *opcode_name[exc->opcode] - '0' ), "#" )); for ( n = 1; n <= cnt; n++ ) - FT_TRACE7(( " %d", exc->stack[exc->top - n] )); + FT_TRACE7(( " %ld", exc->stack[exc->top - n] )); FT_TRACE6(( "\n" )); } #endif /* FT_DEBUG_LEVEL_TRACE */ @@ -8567,7 +8508,7 @@ case FT_ERR( Invalid_Opcode ): { TT_DefRecord* def = exc->IDefs; - TT_DefRecord* limit = def + exc->numIDefs; + TT_DefRecord* limit = FT_OFFSET( def, exc->numIDefs ); for ( ; def < limit; def++ ) @@ -8642,7 +8583,7 @@ } while ( !exc->instruction_trap ); LNo_Error_: - FT_TRACE4(( " %d instruction%s executed\n", + FT_TRACE4(( " %ld instruction%s executed\n", ins_counter, ins_counter == 1 ? "" : "s" )); return FT_Err_Ok; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttinterp.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttinterp.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttinterp.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttinterp.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType bytecode interpreter (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,7 +19,6 @@ #ifndef TTINTERP_H_ #define TTINTERP_H_ -#include <ft2build.h> #include "ttobjs.h" @@ -52,7 +51,7 @@ typedef FT_F26Dot6 (*TT_Round_Func)( TT_ExecContext exc, FT_F26Dot6 distance, - FT_F26Dot6 compensation ); + FT_Int color ); /* Point displacement along the freedom vector routine */ typedef void diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttobjs.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttobjs.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttobjs.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttobjs.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Objects manager (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,12 +16,11 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H -#include FT_INTERNAL_SFNT_H -#include FT_DRIVER_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/tttags.h> +#include <freetype/internal/sfnt.h> +#include <freetype/ftdriver.h> #include "ttgload.h" #include "ttpload.h" @@ -1116,10 +1115,10 @@ /* The Apple specification says that the compensation for */ /* `gray' is always zero. FreeType doesn't do any */ /* compensation at all. */ - tt_metrics->compensations[0] = 0; /* gray */ - tt_metrics->compensations[1] = 0; /* black */ - tt_metrics->compensations[2] = 0; /* white */ - tt_metrics->compensations[3] = 0; /* the same as gray */ + tt_metrics->compensations[0] = 0; /* gray */ + tt_metrics->compensations[1] = 0; /* black */ + tt_metrics->compensations[2] = 0; /* white */ + tt_metrics->compensations[3] = 0; /* zero */ } /* allocate function defs, instruction defs, cvt, and storage area */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttobjs.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttobjs.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttobjs.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttobjs.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Objects manager (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,8 @@ #define TTOBJS_H_ -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_TRUETYPE_TYPES_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/tttypes.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttpic.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttpic.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttpic.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttpic.c 1970-01-01 08:00:00.000000000 +0800 @@ -1,101 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttpic.c */ -/* */ -/* The FreeType position independent code services for truetype module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_OBJECTS_H -#include "ttpic.h" -#include "tterrors.h" - - -#ifdef FT_CONFIG_OPTION_PIC - - /* forward declaration of PIC init functions from ttdriver.c */ - FT_Error - FT_Create_Class_tt_services( FT_Library library, - FT_ServiceDescRec** output_class ); - void - FT_Destroy_Class_tt_services( FT_Library library, - FT_ServiceDescRec* clazz ); - void - FT_Init_Class_tt_service_gx_multi_masters( - FT_Service_MultiMastersRec* sv_mm ); - void - FT_Init_Class_tt_service_truetype_glyf( - FT_Service_TTGlyfRec* sv_ttglyf ); - - - void - tt_driver_class_pic_free( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Memory memory = library->memory; - - - if ( pic_container->truetype ) - { - TTModulePIC* container = (TTModulePIC*)pic_container->truetype; - - - if ( container->tt_services ) - FT_Destroy_Class_tt_services( library, container->tt_services ); - container->tt_services = NULL; - FT_FREE( container ); - pic_container->truetype = NULL; - } - } - - - FT_Error - tt_driver_class_pic_init( FT_Library library ) - { - FT_PIC_Container* pic_container = &library->pic_container; - FT_Error error = FT_Err_Ok; - TTModulePIC* container = NULL; - FT_Memory memory = library->memory; - - - /* allocate pointer, clear and set global container pointer */ - if ( FT_ALLOC( container, sizeof ( *container ) ) ) - return error; - FT_MEM_SET( container, 0, sizeof ( *container ) ); - pic_container->truetype = container; - - /* initialize pointer table - this is how the module usually */ - /* expects this data */ - error = FT_Create_Class_tt_services( library, - &container->tt_services ); - if ( error ) - goto Exit; -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - FT_Init_Class_tt_service_gx_multi_masters( - &container->tt_service_gx_multi_masters ); -#endif - FT_Init_Class_tt_service_truetype_glyf( - &container->tt_service_truetype_glyf ); - - Exit: - if ( error ) - tt_driver_class_pic_free( library ); - return error; - } - -#endif /* FT_CONFIG_OPTION_PIC */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttpic.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttpic.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttpic.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttpic.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,88 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttpic.h */ -/* */ -/* The FreeType position independent code services for truetype module. */ -/* */ -/* Copyright 2009-2018 by */ -/* Oran Agra and Mickey Gabel. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef TTPIC_H_ -#define TTPIC_H_ - - -#include FT_INTERNAL_PIC_H - - -#ifndef FT_CONFIG_OPTION_PIC - -#define TT_SERVICES_GET tt_services -#define TT_SERVICE_GX_MULTI_MASTERS_GET tt_service_gx_multi_masters -#define TT_SERVICE_METRICS_VARIATIONS_GET tt_service_metrics_variations -#define TT_SERVICE_TRUETYPE_GLYF_GET tt_service_truetype_glyf -#define TT_SERVICE_PROPERTIES_GET tt_service_properties - -#else /* FT_CONFIG_OPTION_PIC */ - -#include FT_MULTIPLE_MASTERS_H -#include FT_SERVICE_MULTIPLE_MASTERS_H -#include FT_SERVICE_METRICS_VARIATIONS_H -#include FT_SERVICE_TRUETYPE_GLYF_H -#include FT_SERVICE_PROPERTIES_H - - -FT_BEGIN_HEADER - - typedef struct TTModulePIC_ - { - FT_ServiceDescRec* tt_services; -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - FT_Service_MultiMastersRec tt_service_gx_multi_masters; - FT_Service_MetricsVariationsRec tt_service_metrics_variations; -#endif - FT_Service_TTGlyfRec tt_service_truetype_glyf; - FT_Service_PropertiesRec tt_service_properties; - - } TTModulePIC; - - -#define GET_PIC( lib ) \ - ( (TTModulePIC*)((lib)->pic_container.truetype) ) -#define TT_SERVICES_GET \ - ( GET_PIC( library )->tt_services ) -#define TT_SERVICE_METRICS_VARIATIONS_GET \ - ( GET_PIC( library )->tt_service_metrics_variations ) -#define TT_SERVICE_GX_MULTI_MASTERS_GET \ - ( GET_PIC( library )->tt_service_gx_multi_masters ) -#define TT_SERVICE_TRUETYPE_GLYF_GET \ - ( GET_PIC( library )->tt_service_truetype_glyf ) -#define TT_SERVICE_PROPERTIES_GET \ - ( GET_PIC( library )->tt_service_properties ) - - - /* see ttpic.c for the implementation */ - void - tt_driver_class_pic_free( FT_Library library ); - - FT_Error - tt_driver_class_pic_init( FT_Library library ); - -FT_END_HEADER - -#endif /* FT_CONFIG_OPTION_PIC */ - - /* */ - -#endif /* TTPIC_H_ */ - - -/* END */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttpload.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttpload.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttpload.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttpload.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType-specific tables loader (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftstream.h> +#include <freetype/tttags.h> #include "ttpload.h" @@ -124,7 +123,7 @@ if ( face->num_locations != (FT_ULong)face->root.num_glyphs + 1 ) { - FT_TRACE2(( "glyph count mismatch! loca: %d, maxp: %d\n", + FT_TRACE2(( "glyph count mismatch! loca: %ld, maxp: %ld\n", face->num_locations - 1, face->root.num_glyphs )); /* we only handle the case where `maxp' gives a larger value */ @@ -165,7 +164,7 @@ face->num_locations = (FT_ULong)face->root.num_glyphs + 1; table_len = new_loca_len; - FT_TRACE2(( "adjusting num_locations to %d\n", + FT_TRACE2(( "adjusting num_locations to %ld\n", face->num_locations )); } else @@ -173,7 +172,7 @@ face->root.num_glyphs = face->num_locations ? (FT_Long)face->num_locations - 1 : 0; - FT_TRACE2(( "adjusting num_glyphs to %d\n", + FT_TRACE2(( "adjusting num_glyphs to %ld\n", face->root.num_glyphs )); } } @@ -238,7 +237,7 @@ if ( pos1 > face->glyf_len ) { FT_TRACE1(( "tt_face_get_location:" - " too large offset (0x%08lx) found for glyph index %ld,\n" + " too large offset (0x%08lx) found for glyph index %d,\n" " " " exceeding the end of `glyf' table (0x%08lx)\n", pos1, gindex, face->glyf_len )); @@ -252,7 +251,7 @@ if ( gindex == face->num_locations - 2 ) { FT_TRACE1(( "tt_face_get_location:" - " too large size (%ld bytes) found for glyph index %ld,\n" + " too large size (%ld bytes) found for glyph index %d,\n" " " " truncating at the end of `glyf' table to %ld bytes\n", pos2 - pos1, gindex, face->glyf_len - pos1 )); @@ -261,7 +260,7 @@ else { FT_TRACE1(( "tt_face_get_location:" - " too large offset (0x%08lx) found for glyph index %ld,\n" + " too large offset (0x%08lx) found for glyph index %d,\n" " " " exceeding the end of `glyf' table (0x%08lx)\n", pos2, gindex + 1, face->glyf_len )); @@ -429,7 +428,7 @@ if ( FT_FRAME_EXTRACT( table_len, face->font_program ) ) goto Exit; - FT_TRACE2(( "loaded, %12d bytes\n", face->font_program_size )); + FT_TRACE2(( "loaded, %12ld bytes\n", face->font_program_size )); } Exit: @@ -492,7 +491,7 @@ if ( FT_FRAME_EXTRACT( table_len, face->cvt_program ) ) goto Exit; - FT_TRACE2(( "loaded, %12d bytes\n", face->cvt_program_size )); + FT_TRACE2(( "loaded, %12ld bytes\n", face->cvt_program_size )); } Exit: @@ -633,7 +632,7 @@ FT_UInt nn; FT_Byte* result = NULL; FT_ULong record_size = face->hdmx_record_size; - FT_Byte* record = face->hdmx_table + 8; + FT_Byte* record = FT_OFFSET( face->hdmx_table, 8 ); for ( nn = 0; nn < face->hdmx_record_count; nn++ ) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttpload.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttpload.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttpload.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttpload.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType-specific tables loader (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define TTPLOAD_H_ -#include <ft2build.h> -#include FT_INTERNAL_TRUETYPE_TYPES_H +#include <freetype/internal/tttypes.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttsubpix.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttsubpix.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttsubpix.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttsubpix.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType Subpixel Hinting. * - * Copyright (C) 2010-2019 by + * Copyright (C) 2010-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -15,14 +15,13 @@ * */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_SFNT_H -#include FT_TRUETYPE_TAGS_H -#include FT_OUTLINE_H -#include FT_DRIVER_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftcalc.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/sfnt.h> +#include <freetype/tttags.h> +#include <freetype/ftoutln.h> +#include <freetype/ftdriver.h> #include "ttsubpix.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttsubpix.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttsubpix.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/truetype/ttsubpix.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/truetype/ttsubpix.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * TrueType Subpixel Hinting. * - * Copyright (C) 2010-2019 by + * Copyright (C) 2010-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,7 +19,6 @@ #ifndef TTSUBPIX_H_ #define TTSUBPIX_H_ -#include <ft2build.h> #include "ttobjs.h" #include "ttinterp.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,35 +0,0 @@ -# FreeType 2 src/type1 Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) type1 ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = t1afm - t1driver - t1gload - t1load - t1objs - t1parse - ; - } - else - { - _sources = type1 ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/type1 Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1afm.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1afm.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1afm.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1afm.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * AFM support for Type 1 fonts (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,11 +16,10 @@ */ -#include <ft2build.h> #include "t1afm.h" -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/psaux.h> #include "t1errors.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1afm.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1afm.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1afm.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1afm.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * AFM support for Type 1 fonts (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -19,9 +19,8 @@ #ifndef T1AFM_H_ #define T1AFM_H_ -#include <ft2build.h> #include "t1objs.h" -#include FT_INTERNAL_TYPE1_TYPES_H +#include <freetype/internal/t1types.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1driver.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1driver.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1driver.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1driver.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 1 driver interface (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,7 +16,6 @@ */ -#include <ft2build.h> #include "t1driver.h" #include "t1gload.h" #include "t1load.h" @@ -27,20 +26,20 @@ #include "t1afm.h" #endif -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_HASH_H -#include FT_INTERNAL_POSTSCRIPT_PROPS_H -#include FT_DRIVER_H - -#include FT_SERVICE_MULTIPLE_MASTERS_H -#include FT_SERVICE_GLYPH_DICT_H -#include FT_SERVICE_FONT_FORMAT_H -#include FT_SERVICE_POSTSCRIPT_NAME_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_SERVICE_POSTSCRIPT_INFO_H -#include FT_SERVICE_PROPERTIES_H -#include FT_SERVICE_KERNING_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/fthash.h> +#include <freetype/internal/ftpsprop.h> +#include <freetype/ftdriver.h> + +#include <freetype/internal/services/svmm.h> +#include <freetype/internal/services/svgldict.h> +#include <freetype/internal/services/svfntfmt.h> +#include <freetype/internal/services/svpostnm.h> +#include <freetype/internal/services/svpscmap.h> +#include <freetype/internal/services/svpsinfo.h> +#include <freetype/internal/services/svprop.h> +#include <freetype/internal/services/svkern.h> /************************************************************************** diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1driver.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1driver.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1driver.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1driver.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * High-level Type 1 driver interface (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define T1DRIVER_H_ -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H +#include <freetype/internal/ftdrv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1errors.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1errors.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1errors.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1errors.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 1 error codes (specification only). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -25,7 +25,7 @@ #ifndef T1ERRORS_H_ #define T1ERRORS_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -33,7 +33,7 @@ #define FT_ERR_PREFIX T1_Err_ #define FT_ERR_BASE FT_Mod_Err_Type1 -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* T1ERRORS_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1gload.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1gload.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1gload.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1gload.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 1 Glyph Loader (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,15 +16,14 @@ */ -#include <ft2build.h> #include "t1gload.h" -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_OUTLINE_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_INTERNAL_CFF_TYPES_H -#include FT_DRIVER_H +#include <freetype/internal/ftcalc.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/ftoutln.h> +#include <freetype/internal/psaux.h> +#include <freetype/internal/cfftypes.h> +#include <freetype/ftdriver.h> #include "t1errors.h" @@ -334,7 +333,7 @@ else advances[nn] = 0; - FT_TRACE5(( " idx %d: advance width %d font unit%s\n", + FT_TRACE5(( " idx %d: advance width %ld font unit%s\n", first + nn, advances[nn], advances[nn] == 1 ? "" : "s" )); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1gload.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1gload.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1gload.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1gload.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 1 Glyph Loader (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,7 +20,6 @@ #define T1GLOAD_H_ -#include <ft2build.h> #include "t1objs.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1load.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1load.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1load.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1load.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 1 font loader (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -61,12 +61,12 @@ #include <ft2build.h> -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> #include FT_CONFIG_CONFIG_H -#include FT_MULTIPLE_MASTERS_H -#include FT_INTERNAL_TYPE1_TYPES_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_HASH_H +#include <freetype/ftmm.h> +#include <freetype/internal/t1types.h> +#include <freetype/internal/ftcalc.h> +#include <freetype/internal/fthash.h> #include "t1load.h" #include "t1errors.h" @@ -309,31 +309,55 @@ FT_UInt i; FT_Fixed axiscoords[T1_MAX_MM_AXIS]; PS_Blend blend = face->blend; + FT_UShort* axis_flags; + + FT_Offset mmvar_size; + FT_Offset axis_flags_size; + FT_Offset axis_size; error = T1_Get_Multi_Master( face, &mmaster ); if ( error ) goto Exit; - if ( FT_ALLOC( mmvar, - sizeof ( FT_MM_Var ) + - mmaster.num_axis * sizeof ( FT_Var_Axis ) ) ) + + /* the various `*_size' variables, which we also use as */ + /* offsets into the `mmvar' array, must be multiples of the */ + /* pointer size (except the last one); without such an */ + /* alignment there might be runtime errors due to */ + /* misaligned addresses */ +#undef ALIGN_SIZE +#define ALIGN_SIZE( n ) \ + ( ( (n) + sizeof (void*) - 1 ) & ~( sizeof (void*) - 1 ) ) + + mmvar_size = ALIGN_SIZE( sizeof ( FT_MM_Var ) ); + axis_flags_size = ALIGN_SIZE( mmaster.num_axis * + sizeof ( FT_UShort ) ); + axis_size = mmaster.num_axis * sizeof ( FT_Var_Axis ); + + if ( FT_ALLOC( mmvar, mmvar_size + + axis_flags_size + + axis_size ) ) goto Exit; mmvar->num_axis = mmaster.num_axis; mmvar->num_designs = mmaster.num_designs; mmvar->num_namedstyles = 0; /* Not supported */ - mmvar->axis = (FT_Var_Axis*)&mmvar[1]; - /* Point to axes after MM_Var struct */ - mmvar->namedstyle = NULL; + + /* while axis flags are meaningless here, we have to provide the array */ + /* to make `FT_Get_Var_Axis_Flags' work: the function expects that the */ + /* values directly follow the data of `FT_MM_Var' */ + axis_flags = (FT_UShort*)( (char*)mmvar + mmvar_size ); + for ( i = 0; i < mmaster.num_axis; i++ ) + axis_flags[i] = 0; + + mmvar->axis = (FT_Var_Axis*)( (char*)axis_flags + axis_flags_size ); + mmvar->namedstyle = NULL; for ( i = 0; i < mmaster.num_axis; i++ ) { mmvar->axis[i].name = mmaster.axis[i].name; mmvar->axis[i].minimum = INT_TO_FIXED( mmaster.axis[i].minimum ); mmvar->axis[i].maximum = INT_TO_FIXED( mmaster.axis[i].maximum ); - mmvar->axis[i].def = ( mmvar->axis[i].minimum + - mmvar->axis[i].maximum ) / 2; - /* Does not apply. But this value is in range */ mmvar->axis[i].strid = ~0U; /* Does not apply */ mmvar->axis[i].tag = ~0U; /* Does not apply */ @@ -1039,7 +1063,7 @@ map->design_points[p] = T1_ToInt( parser ); map->blend_points [p] = T1_ToFixed( parser, 0 ); - FT_TRACE4(( " [%d %f]", + FT_TRACE4(( " [%ld %f]", map->design_points[p], (double)map->blend_points[p] / 65536 )); } @@ -1731,7 +1755,7 @@ */ FT_TRACE0(( "parse_subrs: adjusting number of subroutines" - " (from %d to %d)\n", + " (from %d to %ld)\n", num_subrs, ( parser->root.limit - parser->root.cursor ) >> 3 )); num_subrs = ( parser->root.limit - parser->root.cursor ) >> 3; @@ -1902,7 +1926,7 @@ if ( num_glyphs > ( limit - cur ) >> 3 ) { FT_TRACE0(( "parse_charstrings: adjusting number of glyphs" - " (from %d to %d)\n", + " (from %d to %ld)\n", num_glyphs, ( limit - cur ) >> 3 )); num_glyphs = ( limit - cur ) >> 3; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1load.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1load.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1load.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1load.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 1 font loader (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,10 +20,9 @@ #define T1LOAD_H_ -#include <ft2build.h> -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_MULTIPLE_MASTERS_H +#include <freetype/internal/ftstream.h> +#include <freetype/internal/psaux.h> +#include <freetype/ftmm.h> #include "t1parse.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1objs.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1objs.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1objs.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1objs.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 1 objects manager (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -16,12 +16,11 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_IDS_H -#include FT_DRIVER_H +#include <freetype/internal/ftcalc.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/ttnameid.h> +#include <freetype/ftdriver.h> #include "t1gload.h" #include "t1load.h" @@ -32,8 +31,8 @@ #include "t1afm.h" #endif -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/internal/services/svpscmap.h> +#include <freetype/internal/psaux.h> /************************************************************************** @@ -347,8 +346,8 @@ if ( error ) goto Exit; - FT_TRACE2(( "T1_Face_Init: %08p (index %d)\n", - face, + FT_TRACE2(( "T1_Face_Init: %p (index %d)\n", + (void *)face, face_index )); /* if we just wanted to check the format, leave successfully now */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1objs.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1objs.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1objs.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1objs.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 1 objects manager (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -21,9 +21,9 @@ #include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H +#include <freetype/internal/ftobjs.h> #include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_TYPE1_TYPES_H +#include <freetype/internal/t1types.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1parse.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1parse.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1parse.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1parse.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 1 parser (body). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -33,10 +33,9 @@ */ -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/psaux.h> #include "t1parse.h" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1parse.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1parse.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1parse.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1parse.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 1 parser (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -20,9 +20,8 @@ #define T1PARSE_H_ -#include <ft2build.h> -#include FT_INTERNAL_TYPE1_TYPES_H -#include FT_INTERNAL_STREAM_H +#include <freetype/internal/t1types.h> +#include <freetype/internal/ftstream.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1tokens.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1tokens.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/t1tokens.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/t1tokens.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 1 tokenizer (specification). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/type1.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/type1.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type1/type1.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type1/type1.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType Type 1 driver component (body only). * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,7 +17,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "t1afm.c" #include "t1driver.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,32 +0,0 @@ -# FreeType 2 src/type42 Jamfile -# -# Copyright (C) 2002-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) type42 ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = t42drivr - t42objs - t42parse - ; - } - else - { - _sources = type42 ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/type42 Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 2002-2019 by +# Copyright (C) 2002-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 2002-2019 by +# Copyright (C) 2002-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42drivr.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42drivr.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42drivr.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42drivr.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * High-level Type 42 driver interface (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * Roberto Alameda. * * This file is part of the FreeType project, and may only be used, @@ -39,12 +39,12 @@ #include "t42drivr.h" #include "t42objs.h" #include "t42error.h" -#include FT_INTERNAL_DEBUG_H +#include <freetype/internal/ftdebug.h> -#include FT_SERVICE_FONT_FORMAT_H -#include FT_SERVICE_GLYPH_DICT_H -#include FT_SERVICE_POSTSCRIPT_NAME_H -#include FT_SERVICE_POSTSCRIPT_INFO_H +#include <freetype/internal/services/svfntfmt.h> +#include <freetype/internal/services/svgldict.h> +#include <freetype/internal/services/svpostnm.h> +#include <freetype/internal/services/svpsinfo.h> #undef FT_COMPONENT #define FT_COMPONENT t42 diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42drivr.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42drivr.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42drivr.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42drivr.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * High-level Type 42 driver interface (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * Roberto Alameda. * * This file is part of the FreeType project, and may only be used, @@ -20,8 +20,7 @@ #define T42DRIVR_H_ -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H +#include <freetype/internal/ftdrv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42error.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42error.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42error.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42error.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 42 error codes (specification only). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -25,7 +25,7 @@ #ifndef T42ERROR_H_ #define T42ERROR_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -33,7 +33,7 @@ #define FT_ERR_PREFIX T42_Err_ #define FT_ERR_BASE FT_Mod_Err_Type42 -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* T42ERROR_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42objs.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42objs.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42objs.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42objs.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 42 objects manager (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * Roberto Alameda. * * This file is part of the FreeType project, and may only be used, @@ -19,9 +19,9 @@ #include "t42objs.h" #include "t42parse.h" #include "t42error.h" -#include FT_INTERNAL_DEBUG_H -#include FT_LIST_H -#include FT_TRUETYPE_IDS_H +#include <freetype/internal/ftdebug.h> +#include <freetype/ftlist.h> +#include <freetype/ttnameid.h> #undef FT_COMPONENT diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42objs.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42objs.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42objs.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42objs.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 42 objects manager (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * Roberto Alameda. * * This file is part of the FreeType project, and may only be used, @@ -19,15 +19,14 @@ #ifndef T42OBJS_H_ #define T42OBJS_H_ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_TYPE1_TABLES_H -#include FT_INTERNAL_TYPE1_TYPES_H +#include <freetype/freetype.h> +#include <freetype/t1tables.h> +#include <freetype/internal/t1types.h> #include "t42types.h" -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DRIVER_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H +#include <freetype/internal/ftobjs.h> +#include <freetype/internal/ftdrv.h> +#include <freetype/internal/services/svpscmap.h> +#include <freetype/internal/pshints.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42parse.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42parse.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42parse.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42parse.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 42 font parser (body). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * Roberto Alameda. * * This file is part of the FreeType project, and may only be used, @@ -18,9 +18,9 @@ #include "t42parse.h" #include "t42error.h" -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/psaux.h> /************************************************************************** @@ -826,7 +826,7 @@ if ( loader->num_glyphs > ( limit - parser->root.cursor ) >> 2 ) { FT_TRACE0(( "t42_parse_charstrings: adjusting number of glyphs" - " (from %d to %d)\n", + " (from %d to %ld)\n", loader->num_glyphs, ( limit - parser->root.cursor ) >> 2 )); loader->num_glyphs = ( limit - parser->root.cursor ) >> 2; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42parse.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42parse.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42parse.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42parse.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 42 font parser (specification). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * Roberto Alameda. * * This file is part of the FreeType project, and may only be used, @@ -21,7 +21,7 @@ #include "t42objs.h" -#include FT_INTERNAL_POSTSCRIPT_AUX_H +#include <freetype/internal/psaux.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42types.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42types.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/t42types.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/t42types.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Type 42 font data types (specification only). * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * Roberto Alameda. * * This file is part of the FreeType project, and may only be used, @@ -20,11 +20,10 @@ #define T42TYPES_H_ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_TYPE1_TABLES_H -#include FT_INTERNAL_TYPE1_TYPES_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H +#include <freetype/freetype.h> +#include <freetype/t1tables.h> +#include <freetype/internal/t1types.h> +#include <freetype/internal/pshints.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/type42.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/type42.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/type42/type42.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/type42/type42.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType Type 42 driver component. * - * Copyright (C) 2002-2019 by + * Copyright (C) 2002-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -17,7 +17,6 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> #include "t42drivr.c" #include "t42objs.c" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/winfonts/Jamfile qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/winfonts/Jamfile --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/winfonts/Jamfile 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/winfonts/Jamfile 1970-01-01 08:00:00.000000000 +0800 @@ -1,16 +0,0 @@ -# FreeType 2 src/winfonts Jamfile -# -# Copyright (C) 2001-2019 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -SubDir FT2_TOP $(FT2_SRC_DIR) winfonts ; - -Library $(FT2_LIB) : winfnt.c ; - -# end of src/winfonts Jamfile diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/winfonts/fnterrs.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/winfonts/fnterrs.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/winfonts/fnterrs.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/winfonts/fnterrs.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * Win FNT/FON error codes (specification only). * - * Copyright (C) 2001-2019 by + * Copyright (C) 2001-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -26,7 +26,7 @@ #ifndef FNTERRS_H_ #define FNTERRS_H_ -#include FT_MODULE_ERRORS_H +#include <freetype/ftmoderr.h> #undef FTERRORS_H_ @@ -34,7 +34,7 @@ #define FT_ERR_PREFIX FNT_Err_ #define FT_ERR_BASE FT_Mod_Err_Winfonts -#include FT_ERRORS_H +#include <freetype/fterrors.h> #endif /* FNTERRS_H_ */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/winfonts/module.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/winfonts/module.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/winfonts/module.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/winfonts/module.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/winfonts/rules.mk qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/winfonts/rules.mk --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/winfonts/rules.mk 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/winfonts/rules.mk 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,7 @@ # -# Copyright (C) 1996-2019 by +# Copyright (C) 1996-2020 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/winfonts/winfnt.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/winfonts/winfnt.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/winfonts/winfnt.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/winfonts/winfnt.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType font driver for Windows FNT/FON files * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * Copyright 2003 Huw D M Davies for Codeweavers * Copyright 2007 Dmitry Timoshkov for Codeweavers @@ -18,17 +18,16 @@ */ -#include <ft2build.h> -#include FT_WINFONTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_OBJECTS_H -#include FT_TRUETYPE_IDS_H +#include <freetype/ftwinfnt.h> +#include <freetype/internal/ftdebug.h> +#include <freetype/internal/ftstream.h> +#include <freetype/internal/ftobjs.h> +#include <freetype/ttnameid.h> #include "winfnt.h" #include "fnterrs.h" -#include FT_SERVICE_WINFNT_H -#include FT_SERVICE_FONT_FORMAT_H +#include <freetype/internal/services/svwinfnt.h> +#include <freetype/internal/services/svfntfmt.h> /************************************************************************** * @@ -331,7 +330,7 @@ { FT_TRACE2(( "invalid alignment shift count for resource data\n" )); error = FT_THROW( Invalid_File_Format ); - goto Exit; + goto Exit1; } @@ -597,6 +596,10 @@ Exit: return error; + + Exit1: + FT_FRAME_EXIT(); + goto Exit; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/winfonts/winfnt.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/winfonts/winfnt.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/freetype/src/winfonts/winfnt.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/freetype/src/winfonts/winfnt.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * * FreeType font driver for Windows FNT/FON files * - * Copyright (C) 1996-2019 by + * Copyright (C) 1996-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * Copyright 2007 Dmitry Timoshkov for Codeweavers * @@ -21,9 +21,8 @@ #define WINFNT_H_ -#include <ft2build.h> -#include FT_WINFONTS_H -#include FT_INTERNAL_DRIVER_H +#include <freetype/ftwinfnt.h> +#include <freetype/internal/ftdrv.h> FT_BEGIN_HEADER diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/gradle/LICENSE qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/gradle/LICENSE --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/gradle/LICENSE 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/gradle/LICENSE 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,420 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + +============================================================================== +Licenses for included components: + +------------------------------------------------------------------------------ +Eclipse Public License 1.0 +https://opensource.org/licenses/EPL-1.0 + +junit:junit +org.sonatype.aether:aether-api +org.sonatype.aether:aether-connector-wagon +org.sonatype.aether:aether-impl +org.sonatype.aether:aether-spi +org.sonatype.aether:aether-util + +------------------------------------------------------------------------------ +3-Clause BSD +https://opensource.org/licenses/BSD-3-Clause + +com.google.code.findbugs:jsr305 + +org.hamcrest:hamcrest-core +BSD License + +Copyright (c) 2000-2015 www.hamcrest.org +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of +conditions and the following disclaimer. Redistributions in binary form must reproduce +the above copyright notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the distribution. + +Neither the name of Hamcrest nor the names of its contributors may be used to endorse +or promote products derived from this software without specific prior written +permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY +WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +com.esotericsoftware.kryo:kryo +com.esotericsoftware.minlog:minlog +Copyright (c) 2008-2018, Nathan Sweet All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the name of Esoteric Software nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +org.ow2.asm:asm +org.ow2.asm:asm-analysis +org.ow2.asm:asm-commons +org.ow2.asm:asm-tree +org.ow2.asm:asm-util +ASM: a very small and fast Java bytecode manipulation framework + Copyright (c) 2000-2011 INRIA, France Telecom + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +MIT + +com.googlecode.plist:dd-plist +dd-plist - An open source library to parse and generate property lists +Copyright (C) 2016 Daniel Dreibrodt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +org.bouncycastle:bcpg-jdk15on +org.bouncycastle:bcprov-jdk15on +Copyright (c) 2000 - 2019 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +org.slf4j:jcl-over-slf4j +org.slf4j:jul-to-slf4j +org.slf4j:log4j-over-slf4j +org.slf4j:slf4j-api + Copyright (c) 2004-2017 QOS.ch + All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +------------------------------------------------------------------------------ +CDDL +https://opensource.org/licenses/CDDL-1.0 + +com.sun.xml.bind:jaxb-impl + +------------------------------------------------------------------------------ +LGPL 2.1 +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html + +org.samba.jcifs:jcifs + +org.jetbrains.intellij.deps:trove4j + +------------------------------------------------------------------------------ +License for the GNU Trove library included by the Kotlin embeddable compiler +------------------------------------------------------------------------------ +The source code for GNU Trove is licensed under the Lesser GNU Public License (LGPL). + + Copyright (c) 2001, Eric D. Friedman All Rights Reserved. This library is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without + even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +Two classes (HashFunctions and PrimeFinder) included in Trove are licensed under the following terms: + + Copyright (c) 1999 CERN - European Organization for Nuclear Research. Permission to use, copy, modify, distribute and sell this software + and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and + that both that copyright notice and this permission notice appear in supporting documentation. CERN makes no representations about the + suitability of this software for any purpose. It is provided "as is" without expressed or implied warranty. + +The source code of modified GNU Trove library is available at + https://github.com/JetBrains/intellij-deps-trove4j (with trove4j_changes.txt describing the changes) + +------------------------------------------------------------------------------ +Eclipse Distribution License 1.0 +https://www.eclipse.org/org/documents/edl-v10.php + +org.eclipse.jgit:org.eclipse.jgit + +------------------------------------------------------------------------------ +BSD-style + +com.jcraft:jsch +com.jcraft:jzlib + +Copyright (c) 2000-2011 ymnk, JCraft,Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the distribution. + + 3. The names of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, +INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +Eclipse Public License 2.0 +https://www.eclipse.org/legal/epl-2.0/ + +org.junit.platform:junit-platform-launcher + +------------------------------------------------------------------------------ +Mozilla Public License 2.0 +https://www.mozilla.org/en-US/MPL/2.0/ + +org.mozilla:rhino diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/gradle/LICENSE-GRADLEW.txt qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/gradle/LICENSE-GRADLEW.txt --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/gradle/LICENSE-GRADLEW.txt 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/gradle/LICENSE-GRADLEW.txt 1970-01-01 08:00:00.000000000 +0800 @@ -1,965 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - -============================================================================== -Gradle Subcomponents: - ------------------------------------------------------------------------------- -License for the slf4j package ------------------------------------------------------------------------------- -SLF4J License - -Copyright (c) 2004-2007 QOS.ch -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -These terms are identical to those of the MIT License, also called the X License or the X11 License, -which is a simple, permissive non-copyleft free software license. It is deemed compatible with virtually -all types of licenses, commercial or otherwise. In particular, the Free Software Foundation has declared it -compatible with GNU GPL. It is also known to be approved by the Apache Software Foundation as compatible -with Apache Software License. - - ------------------------------------------------------------------------------- -License for the JUnit package ------------------------------------------------------------------------------- -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and -documentation distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are -distributed by that particular Contributor. A Contribution 'originates' from a -Contributor if it was added to the Program by such Contributor itself or anyone -acting on such Contributor's behalf. Contributions do not include additions to -the Program which: (i) are separate modules of software distributed in -conjunction with the Program under their own license agreement, and (ii) are not -derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents " mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - -a) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free copyright license to -reproduce, prepare derivative works of, publicly display, publicly perform, -distribute and sublicense the Contribution of such Contributor, if any, and such -derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed -Patents to make, use, sell, offer to sell, import and otherwise transfer the -Contribution of such Contributor, if any, in source code and object code form. -This patent license shall apply to the combination of the Contribution and the -Program if, at the time the Contribution is added by the Contributor, such -addition of the Contribution causes such combination to be covered by the -Licensed Patents. The patent license shall not apply to any other combinations -which include the Contribution. No hardware per se is licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses -to its Contributions set forth herein, no assurances are provided by any -Contributor that the Program does not infringe the patent or other intellectual -property rights of any other entity. Each Contributor disclaims any liability to -Recipient for claims brought by any other entity based on infringement of -intellectual property rights or otherwise. As a condition to exercising the -rights and licenses granted hereunder, each Recipient hereby assumes sole -responsibility to secure any other intellectual property rights needed, if any. -For example, if a third party patent license is required to allow Recipient to -distribute the Program, it is Recipient's responsibility to acquire that license -before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient -copyright rights in its Contribution, if any, to grant the copyright license set -forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under its -own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties and -conditions, express and implied, including warranties or conditions of title and -non-infringement, and implied warranties or conditions of merchantability and -fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for -damages, including direct, indirect, special, incidental and consequential -damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered -by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such -Contributor, and informs licensees how to obtain it in a reasonable manner on or -through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within the -Program. - -Each Contributor must identify itself as the originator of its Contribution, if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, if -a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, damages -and costs (collectively "Losses") arising from claims, lawsuits and other legal -actions brought by a third party against the Indemnified Contributor to the -extent caused by the acts or omissions of such Commercial Contributor in -connection with its distribution of the Program in a commercial product -offering. The obligations in this section do not apply to any claims or Losses -relating to any actual or alleged intellectual property infringement. In order -to qualify, an Indemnified Contributor must: a) promptly notify the Commercial -Contributor in writing of such claim, and b) allow the Commercial Contributor to -control, and cooperate with the Commercial Contributor in, the defense and any -related settlement negotiations. The Indemnified Contributor may participate in -any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If that -Commercial Contributor then makes performance claims, or offers warranties -related to Product X, those performance claims and warranties are such -Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a court -requires any other Contributor to pay any damages as a result, the Commercial -Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using and -distributing the Program and assumes all risks associated with its exercise of -rights under this Agreement, including but not limited to the risks and costs of -program errors, compliance with applicable laws, damage to or loss of data, -programs or equipment, and unavailability or interruption of operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST -PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS -GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under applicable -law, it shall not affect the validity or enforceability of the remainder of the -terms of this Agreement, and without further action by the parties hereto, such -provision shall be reformed to the minimum extent necessary to make such -provision valid and enforceable. - -If Recipient institutes patent litigation against a Contributor with respect to -a patent applicable to software (including a cross-claim or counterclaim in a -lawsuit), then any patent licenses granted by that Contributor to such Recipient -under this Agreement shall terminate as of the date such litigation is filed. In -addition, if Recipient institutes patent litigation against any entity -(including a cross-claim or counterclaim in a lawsuit) alleging that the Program -itself (excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted under -Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue and -survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to time. -No one other than the Agreement Steward has the right to modify this Agreement. -IBM is the initial Agreement Steward. IBM may assign the responsibility to serve -as the Agreement Steward to a suitable separate entity. Each new version of the -Agreement will be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the Agreement -under which it was received. In addition, after a new version of the Agreement -is published, Contributor may elect to distribute the Program (including its -Contributions) under the new version. Except as expressly stated in Sections -2(a) and 2(b) above, Recipient receives no rights or licenses to the -intellectual property of any Contributor under this Agreement, whether -expressly, by implication, estoppel or otherwise. All rights in the Program not -expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. - ------------------------------------------------------------------------------- -License for the JCIFS package ------------------------------------------------------------------------------- -JCIFS License - - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - <one line to give the library's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - <signature of Ty Coon>, 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/gradle/gradle/wrapper/gradle-wrapper.properties qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/gradle/gradle/wrapper/gradle-wrapper.properties --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/gradle/gradle/wrapper/gradle-wrapper.properties 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/gradle/gradle/wrapper/gradle-wrapper.properties 2022-11-11 15:29:17.000000000 +0800 @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/gradle/gradle.properties qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/gradle/gradle.properties --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/gradle/gradle.properties 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/gradle/gradle.properties 2022-11-11 15:29:17.000000000 +0800 @@ -3,7 +3,10 @@ # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx2048m +org.gradle.jvmargs=-Xmx2500m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# Enable building projects in parallel +org.gradle.parallel=true # Gradle caching allows reusing the build artifacts from a previous # build with the same inputs. However, over time, the cache size will diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/gradle/gradlew qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/gradle/gradlew --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/gradle/gradlew 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/gradle/gradlew 2022-11-11 15:29:17.000000000 +0800 @@ -1,78 +1,129 @@ -#!/usr/bin/env sh +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +DEFAULT_JVM_OPTS='-Dfile.encoding=UTF-8 "-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,7 +132,7 @@ location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -89,84 +140,95 @@ fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/gradle/gradlew.bat qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/gradle/gradlew.bat --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/gradle/gradlew.bat 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/gradle/gradlew.bat 2022-11-11 15:29:17.000000000 +0800 @@ -1,84 +1,89 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS=-Dfile.encoding=UTF-8 "-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/gradle/qt_attribution.json qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/gradle/qt_attribution.json --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/gradle/qt_attribution.json 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/gradle/qt_attribution.json 2022-11-11 15:29:17.000000000 +0800 @@ -4,12 +4,11 @@ "QDocModule": "qtcore", "QtParts": ["tools"], "Homepage": "https://gradle.org", - "Version": "3.4.1", - "DownloadLocation": "https://github.com/gradle/gradle/releases/tag/v3.4.1", + "Version": "7.2.0", + "DownloadLocation": "https://github.com/gradle/gradle/releases/tag/v7.2.0", "QtUsage": "Needed to create Android packages", - "License": "Apache License 2.0", "LicenseId": "Apache-2.0", - "LicenseFile": "LICENSE-GRADLEW.txt", - "Copyright": "Copyright (C) 2017 Gradle Inc." + "LicenseFile": "LICENSE", + "Copyright": "Copyright (C) 2021 Gradle Inc." } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro 2022-11-11 15:29:17.000000000 +0800 @@ -169,7 +169,7 @@ DEFINES += HAVE_CORETEXT SOURCES += \ - $$PWD/src/hb-coretext.cc + $$PWD/src/hb-coretext.mm HEADERS += \ $$PWD/src/hb-coretext.h diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/harfbuzz-ng/src/hb-coretext.cc qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/harfbuzz-ng/src/hb-coretext.cc --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/harfbuzz-ng/src/hb-coretext.cc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/harfbuzz-ng/src/hb-coretext.cc 1970-01-01 08:00:00.000000000 +0800 @@ -1,1399 +0,0 @@ -/* - * Copyright © 2012,2013 Mozilla Foundation. - * Copyright © 2012,2013 Google, Inc. - * - * This is part of HarfBuzz, a text shaping library. - * - * Permission is hereby granted, without written agreement and without - * license or royalty fees, to use, copy, modify, and distribute this - * software and its documentation for any purpose, provided that the - * above copyright notice and the following two paragraphs appear in - * all copies of this software. - * - * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR - * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN - * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS - * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO - * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. - * - * Mozilla Author(s): Jonathan Kew - * Google Author(s): Behdad Esfahbod - */ - -#define HB_SHAPER coretext - -#include "hb-private.hh" -#include "hb-debug.hh" -#include "hb-shaper-impl-private.hh" - -#include "hb-coretext.h" -#include <math.h> - - -typedef bool (*qt_get_font_table_func_t) (void *user_data, unsigned int tag, unsigned char *buffer, unsigned int *length); - -struct FontEngineFaceData { - void *user_data; - qt_get_font_table_func_t get_font_table; -}; - -struct CoreTextFontEngineData { - CTFontRef ctFont; - CGFontRef cgFont; -}; - - -/* https://developer.apple.com/documentation/coretext/1508745-ctfontcreatewithgraphicsfont */ -#define HB_CORETEXT_DEFAULT_FONT_SIZE 12.f - -static void -release_table_data (void *user_data) -{ - CFDataRef cf_data = reinterpret_cast<CFDataRef> (user_data); - CFRelease(cf_data); -} - -static hb_blob_t * -reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data) -{ - CGFontRef cg_font = reinterpret_cast<CGFontRef> (user_data); - CFDataRef cf_data = CGFontCopyTableForTag (cg_font, tag); - if (unlikely (!cf_data)) - return nullptr; - - const char *data = reinterpret_cast<const char*> (CFDataGetBytePtr (cf_data)); - const size_t length = CFDataGetLength (cf_data); - if (!data || !length) - return nullptr; - - return hb_blob_create (data, length, HB_MEMORY_MODE_READONLY, - reinterpret_cast<void *> (const_cast<__CFData *> (cf_data)), - release_table_data); -} - -static void -_hb_cg_font_release (void *data) -{ - CGFontRelease ((CGFontRef) data); -} - - -HB_SHAPER_DATA_ENSURE_DEFINE(coretext, face) -HB_SHAPER_DATA_ENSURE_DEFINE_WITH_CONDITION(coretext, font, - fabs (CTFontGetSize ((CTFontRef) data) - font->ptem) <= .5 -) - -static CTFontDescriptorRef -get_last_resort_font_desc (void) -{ - // TODO Handle allocation failures? - CTFontDescriptorRef last_resort = CTFontDescriptorCreateWithNameAndSize (CFSTR("LastResort"), 0); - CFArrayRef cascade_list = CFArrayCreate (kCFAllocatorDefault, - (const void **) &last_resort, - 1, - &kCFTypeArrayCallBacks); - CFRelease (last_resort); - CFDictionaryRef attributes = CFDictionaryCreate (kCFAllocatorDefault, - (const void **) &kCTFontCascadeListAttribute, - (const void **) &cascade_list, - 1, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); - CFRelease (cascade_list); - - CTFontDescriptorRef font_desc = CTFontDescriptorCreateWithAttributes (attributes); - CFRelease (attributes); - return font_desc; -} - -static void -release_data (void *info, const void *data, size_t size) -{ - assert (hb_blob_get_length ((hb_blob_t *) info) == size && - hb_blob_get_data ((hb_blob_t *) info, nullptr) == data); - - hb_blob_destroy ((hb_blob_t *) info); -} - -static CGFontRef -create_cg_font (hb_face_t *face) -{ - CGFontRef cg_font = nullptr; - if (face->destroy == _hb_cg_font_release) - { - cg_font = CGFontRetain ((CGFontRef) face->user_data); - } - else - { -#if 0 - hb_blob_t *blob = hb_face_reference_blob (face); - unsigned int blob_length; - const char *blob_data = hb_blob_get_data (blob, &blob_length); - if (unlikely (!blob_length)) - DEBUG_MSG (CORETEXT, face, "Face has empty blob"); - - CGDataProviderRef provider = CGDataProviderCreateWithData (blob, blob_data, blob_length, &release_data); - if (likely (provider)) - { - cg_font = CGFontCreateWithDataProvider (provider); - if (unlikely (!cg_font)) - DEBUG_MSG (CORETEXT, face, "Face CGFontCreateWithDataProvider() failed"); - CGDataProviderRelease (provider); - } -#else - FontEngineFaceData *fontEngineFaceData = (FontEngineFaceData *) face->user_data; - CoreTextFontEngineData *coreTextFontEngineData = (CoreTextFontEngineData *) fontEngineFaceData->user_data; - cg_font = CGFontRetain (coreTextFontEngineData->cgFont); -#endif - } - return cg_font; -} - -static CTFontRef -create_ct_font (CGFontRef cg_font, CGFloat font_size) -{ - CTFontRef ct_font = nullptr; - - /* CoreText does not enable trak table usage / tracking when creating a CTFont - * using CTFontCreateWithGraphicsFont. The only way of enabling tracking seems - * to be through the CTFontCreateUIFontForLanguage call. */ - CFStringRef cg_postscript_name = CGFontCopyPostScriptName (cg_font); - if (CFStringHasPrefix (cg_postscript_name, CFSTR (".SFNSText")) || - CFStringHasPrefix (cg_postscript_name, CFSTR (".SFNSDisplay"))) - { - CTFontUIFontType font_type = kCTFontUIFontSystem; - if (CFStringHasSuffix (cg_postscript_name, CFSTR ("-Bold"))) - font_type = kCTFontUIFontEmphasizedSystem; - - ct_font = CTFontCreateUIFontForLanguage (font_type, font_size, nullptr); - CFStringRef ct_result_name = CTFontCopyPostScriptName(ct_font); - if (CFStringCompare (ct_result_name, cg_postscript_name, 0) != kCFCompareEqualTo) - { - CFRelease(ct_font); - ct_font = nullptr; - } - CFRelease (ct_result_name); - } - CFRelease (cg_postscript_name); - - if (!ct_font) - ct_font = CTFontCreateWithGraphicsFont (cg_font, font_size, nullptr, nullptr); - - if (unlikely (!ct_font)) { - DEBUG_MSG (CORETEXT, cg_font, "Font CTFontCreateWithGraphicsFont() failed"); - return nullptr; - } - - /* crbug.com/576941 and crbug.com/625902 and the investigation in the latter - * bug indicate that the cascade list reconfiguration occasionally causes - * crashes in CoreText on OS X 10.9, thus let's skip this step on older - * operating system versions. Except for the emoji font, where _not_ - * reconfiguring the cascade list causes CoreText crashes. For details, see - * crbug.com/549610 */ - // 0x00070000 stands for "kCTVersionNumber10_10", see CoreText.h - if (&CTGetCoreTextVersion != nullptr && CTGetCoreTextVersion() < 0x00070000) { - CFStringRef fontName = CTFontCopyPostScriptName (ct_font); - bool isEmojiFont = CFStringCompare (fontName, CFSTR("AppleColorEmoji"), 0) == kCFCompareEqualTo; - CFRelease (fontName); - if (!isEmojiFont) - return ct_font; - } - - CFURLRef original_url = (CFURLRef)CTFontCopyAttribute(ct_font, kCTFontURLAttribute); - - /* Create font copy with cascade list that has LastResort first; this speeds up CoreText - * font fallback which we don't need anyway. */ - { - CTFontDescriptorRef last_resort_font_desc = get_last_resort_font_desc (); - CTFontRef new_ct_font = CTFontCreateCopyWithAttributes (ct_font, 0.0, nullptr, last_resort_font_desc); - CFRelease (last_resort_font_desc); - if (new_ct_font) - { - /* The CTFontCreateCopyWithAttributes call fails to stay on the same font - * when reconfiguring the cascade list and may switch to a different font - * when there are fonts that go by the same name, since the descriptor is - * just name and size. - * - * Avoid reconfiguring the cascade lists if the new font is outside the - * system locations that we cannot access from the sandboxed renderer - * process in Blink. This can be detected by the new file URL location - * that the newly found font points to. */ - CFURLRef new_url = (CFURLRef) CTFontCopyAttribute (new_ct_font, kCTFontURLAttribute); - // Keep reconfigured font if URL cannot be retrieved (seems to be the case - // on Mac OS 10.12 Sierra), speculative fix for crbug.com/625606 - if (!original_url || !new_url || CFEqual (original_url, new_url)) { - CFRelease (ct_font); - ct_font = new_ct_font; - } else { - CFRelease (new_ct_font); - DEBUG_MSG (CORETEXT, ct_font, "Discarding reconfigured CTFont, location changed."); - } - if (new_url) - CFRelease (new_url); - } - else - DEBUG_MSG (CORETEXT, ct_font, "Font copy with empty cascade list failed"); - } - - if (original_url) - CFRelease (original_url); - return ct_font; -} - -hb_coretext_shaper_face_data_t * -_hb_coretext_shaper_face_data_create (hb_face_t *face) -{ - CGFontRef cg_font = create_cg_font (face); - - if (unlikely (!cg_font)) - { - DEBUG_MSG (CORETEXT, face, "CGFont creation failed.."); - return nullptr; - } - - return (hb_coretext_shaper_face_data_t *) cg_font; -} - -void -_hb_coretext_shaper_face_data_destroy (hb_coretext_shaper_face_data_t *data) -{ - CFRelease ((CGFontRef) data); -} - -hb_face_t * -hb_coretext_face_create (CGFontRef cg_font) -{ - return hb_face_create_for_tables (reference_table, CGFontRetain (cg_font), _hb_cg_font_release); -} - -/* - * Since: 0.9.10 - */ -CGFontRef -hb_coretext_face_get_cg_font (hb_face_t *face) -{ - if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return nullptr; - return (CGFontRef) HB_SHAPER_DATA_GET (face); -} - - -hb_coretext_shaper_font_data_t * -_hb_coretext_shaper_font_data_create (hb_font_t *font) -{ - hb_face_t *face = font->face; - if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return nullptr; - CGFontRef cg_font = (CGFontRef) HB_SHAPER_DATA_GET (face); - - CGFloat font_size = font->ptem <= 0.f ? HB_CORETEXT_DEFAULT_FONT_SIZE : font->ptem; - CTFontRef ct_font = create_ct_font (cg_font, font_size); - - if (unlikely (!ct_font)) - { - DEBUG_MSG (CORETEXT, font, "CGFont creation failed.."); - return nullptr; - } - - return (hb_coretext_shaper_font_data_t *) ct_font; -} - -void -_hb_coretext_shaper_font_data_destroy (hb_coretext_shaper_font_data_t *data) -{ - CFRelease ((CTFontRef) data); -} - -/* - * Since: 1.7.2 - */ -hb_font_t * -hb_coretext_font_create (CTFontRef ct_font) -{ - CGFontRef cg_font = CTFontCopyGraphicsFont (ct_font, 0); - hb_face_t *face = hb_coretext_face_create (cg_font); - CFRelease (cg_font); - hb_font_t *font = hb_font_create (face); - hb_face_destroy (face); - - if (unlikely (hb_object_is_inert (font))) - return font; - - hb_font_set_ptem (font, CTFontGetSize (ct_font)); - - /* Let there be dragons here... */ - HB_SHAPER_DATA_GET (font) = (hb_coretext_shaper_font_data_t *) CFRetain (ct_font); - - return font; -} - -CTFontRef -hb_coretext_font_get_ct_font (hb_font_t *font) -{ - if (unlikely (!hb_coretext_shaper_font_data_ensure (font))) return nullptr; - return (CTFontRef) HB_SHAPER_DATA_GET (font); -} - - - -/* - * shaper shape_plan data - */ - -struct hb_coretext_shaper_shape_plan_data_t {}; - -hb_coretext_shaper_shape_plan_data_t * -_hb_coretext_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan HB_UNUSED, - const hb_feature_t *user_features HB_UNUSED, - unsigned int num_user_features HB_UNUSED, - const int *coords HB_UNUSED, - unsigned int num_coords HB_UNUSED) -{ - return (hb_coretext_shaper_shape_plan_data_t *) HB_SHAPER_DATA_SUCCEEDED; -} - -void -_hb_coretext_shaper_shape_plan_data_destroy (hb_coretext_shaper_shape_plan_data_t *data HB_UNUSED) -{ -} - - -/* - * shaper - */ - -struct feature_record_t { - unsigned int feature; - unsigned int setting; -}; - -struct active_feature_t { - feature_record_t rec; - unsigned int order; - - static int cmp (const void *pa, const void *pb) { - const active_feature_t *a = (const active_feature_t *) pa; - const active_feature_t *b = (const active_feature_t *) pb; - return a->rec.feature < b->rec.feature ? -1 : a->rec.feature > b->rec.feature ? 1 : - a->order < b->order ? -1 : a->order > b->order ? 1 : - a->rec.setting < b->rec.setting ? -1 : a->rec.setting > b->rec.setting ? 1 : - 0; - } - bool operator== (const active_feature_t *f) { - return cmp (this, f) == 0; - } -}; - -struct feature_event_t { - unsigned int index; - bool start; - active_feature_t feature; - - static int cmp (const void *pa, const void *pb) { - const feature_event_t *a = (const feature_event_t *) pa; - const feature_event_t *b = (const feature_event_t *) pb; - return a->index < b->index ? -1 : a->index > b->index ? 1 : - a->start < b->start ? -1 : a->start > b->start ? 1 : - active_feature_t::cmp (&a->feature, &b->feature); - } -}; - -struct range_record_t { - CTFontRef font; - unsigned int index_first; /* == start */ - unsigned int index_last; /* == end - 1 */ -}; - - -/* The following enum members are added in OS X 10.8. */ -#define kAltHalfWidthTextSelector 6 -#define kAltProportionalTextSelector 5 -#define kAlternateHorizKanaOffSelector 1 -#define kAlternateHorizKanaOnSelector 0 -#define kAlternateKanaType 34 -#define kAlternateVertKanaOffSelector 3 -#define kAlternateVertKanaOnSelector 2 -#define kCaseSensitiveLayoutOffSelector 1 -#define kCaseSensitiveLayoutOnSelector 0 -#define kCaseSensitiveLayoutType 33 -#define kCaseSensitiveSpacingOffSelector 3 -#define kCaseSensitiveSpacingOnSelector 2 -#define kContextualAlternatesOffSelector 1 -#define kContextualAlternatesOnSelector 0 -#define kContextualAlternatesType 36 -#define kContextualLigaturesOffSelector 19 -#define kContextualLigaturesOnSelector 18 -#define kContextualSwashAlternatesOffSelector 5 -#define kContextualSwashAlternatesOnSelector 4 -#define kDefaultLowerCaseSelector 0 -#define kDefaultUpperCaseSelector 0 -#define kHistoricalLigaturesOffSelector 21 -#define kHistoricalLigaturesOnSelector 20 -#define kHojoCharactersSelector 12 -#define kJIS2004CharactersSelector 11 -#define kLowerCasePetiteCapsSelector 2 -#define kLowerCaseSmallCapsSelector 1 -#define kLowerCaseType 37 -#define kMathematicalGreekOffSelector 11 -#define kMathematicalGreekOnSelector 10 -#define kNLCCharactersSelector 13 -#define kQuarterWidthTextSelector 4 -#define kScientificInferiorsSelector 4 -#define kStylisticAltEightOffSelector 17 -#define kStylisticAltEightOnSelector 16 -#define kStylisticAltEighteenOffSelector 37 -#define kStylisticAltEighteenOnSelector 36 -#define kStylisticAltElevenOffSelector 23 -#define kStylisticAltElevenOnSelector 22 -#define kStylisticAltFifteenOffSelector 31 -#define kStylisticAltFifteenOnSelector 30 -#define kStylisticAltFiveOffSelector 11 -#define kStylisticAltFiveOnSelector 10 -#define kStylisticAltFourOffSelector 9 -#define kStylisticAltFourOnSelector 8 -#define kStylisticAltFourteenOffSelector 29 -#define kStylisticAltFourteenOnSelector 28 -#define kStylisticAltNineOffSelector 19 -#define kStylisticAltNineOnSelector 18 -#define kStylisticAltNineteenOffSelector 39 -#define kStylisticAltNineteenOnSelector 38 -#define kStylisticAltOneOffSelector 3 -#define kStylisticAltOneOnSelector 2 -#define kStylisticAltSevenOffSelector 15 -#define kStylisticAltSevenOnSelector 14 -#define kStylisticAltSeventeenOffSelector 35 -#define kStylisticAltSeventeenOnSelector 34 -#define kStylisticAltSixOffSelector 13 -#define kStylisticAltSixOnSelector 12 -#define kStylisticAltSixteenOffSelector 33 -#define kStylisticAltSixteenOnSelector 32 -#define kStylisticAltTenOffSelector 21 -#define kStylisticAltTenOnSelector 20 -#define kStylisticAltThirteenOffSelector 27 -#define kStylisticAltThirteenOnSelector 26 -#define kStylisticAltThreeOffSelector 7 -#define kStylisticAltThreeOnSelector 6 -#define kStylisticAltTwelveOffSelector 25 -#define kStylisticAltTwelveOnSelector 24 -#define kStylisticAltTwentyOffSelector 41 -#define kStylisticAltTwentyOnSelector 40 -#define kStylisticAltTwoOffSelector 5 -#define kStylisticAltTwoOnSelector 4 -#define kStylisticAlternativesType 35 -#define kSwashAlternatesOffSelector 3 -#define kSwashAlternatesOnSelector 2 -#define kThirdWidthTextSelector 3 -#define kTraditionalNamesCharactersSelector 14 -#define kUpperCasePetiteCapsSelector 2 -#define kUpperCaseSmallCapsSelector 1 -#define kUpperCaseType 38 - -/* Table data courtesy of Apple. */ -static const struct feature_mapping_t { - FourCharCode otFeatureTag; - uint16_t aatFeatureType; - uint16_t selectorToEnable; - uint16_t selectorToDisable; -} feature_mappings[] = { - { 'c2pc', kUpperCaseType, kUpperCasePetiteCapsSelector, kDefaultUpperCaseSelector }, - { 'c2sc', kUpperCaseType, kUpperCaseSmallCapsSelector, kDefaultUpperCaseSelector }, - { 'calt', kContextualAlternatesType, kContextualAlternatesOnSelector, kContextualAlternatesOffSelector }, - { 'case', kCaseSensitiveLayoutType, kCaseSensitiveLayoutOnSelector, kCaseSensitiveLayoutOffSelector }, - { 'clig', kLigaturesType, kContextualLigaturesOnSelector, kContextualLigaturesOffSelector }, - { 'cpsp', kCaseSensitiveLayoutType, kCaseSensitiveSpacingOnSelector, kCaseSensitiveSpacingOffSelector }, - { 'cswh', kContextualAlternatesType, kContextualSwashAlternatesOnSelector, kContextualSwashAlternatesOffSelector }, - { 'dlig', kLigaturesType, kRareLigaturesOnSelector, kRareLigaturesOffSelector }, - { 'expt', kCharacterShapeType, kExpertCharactersSelector, 16 }, - { 'frac', kFractionsType, kDiagonalFractionsSelector, kNoFractionsSelector }, - { 'fwid', kTextSpacingType, kMonospacedTextSelector, 7 }, - { 'halt', kTextSpacingType, kAltHalfWidthTextSelector, 7 }, - { 'hist', kLigaturesType, kHistoricalLigaturesOnSelector, kHistoricalLigaturesOffSelector }, - { 'hkna', kAlternateKanaType, kAlternateHorizKanaOnSelector, kAlternateHorizKanaOffSelector, }, - { 'hlig', kLigaturesType, kHistoricalLigaturesOnSelector, kHistoricalLigaturesOffSelector }, - { 'hngl', kTransliterationType, kHanjaToHangulSelector, kNoTransliterationSelector }, - { 'hojo', kCharacterShapeType, kHojoCharactersSelector, 16 }, - { 'hwid', kTextSpacingType, kHalfWidthTextSelector, 7 }, - { 'ital', kItalicCJKRomanType, kCJKItalicRomanOnSelector, kCJKItalicRomanOffSelector }, - { 'jp04', kCharacterShapeType, kJIS2004CharactersSelector, 16 }, - { 'jp78', kCharacterShapeType, kJIS1978CharactersSelector, 16 }, - { 'jp83', kCharacterShapeType, kJIS1983CharactersSelector, 16 }, - { 'jp90', kCharacterShapeType, kJIS1990CharactersSelector, 16 }, - { 'liga', kLigaturesType, kCommonLigaturesOnSelector, kCommonLigaturesOffSelector }, - { 'lnum', kNumberCaseType, kUpperCaseNumbersSelector, 2 }, - { 'mgrk', kMathematicalExtrasType, kMathematicalGreekOnSelector, kMathematicalGreekOffSelector }, - { 'nlck', kCharacterShapeType, kNLCCharactersSelector, 16 }, - { 'onum', kNumberCaseType, kLowerCaseNumbersSelector, 2 }, - { 'ordn', kVerticalPositionType, kOrdinalsSelector, kNormalPositionSelector }, - { 'palt', kTextSpacingType, kAltProportionalTextSelector, 7 }, - { 'pcap', kLowerCaseType, kLowerCasePetiteCapsSelector, kDefaultLowerCaseSelector }, - { 'pkna', kTextSpacingType, kProportionalTextSelector, 7 }, - { 'pnum', kNumberSpacingType, kProportionalNumbersSelector, 4 }, - { 'pwid', kTextSpacingType, kProportionalTextSelector, 7 }, - { 'qwid', kTextSpacingType, kQuarterWidthTextSelector, 7 }, - { 'ruby', kRubyKanaType, kRubyKanaOnSelector, kRubyKanaOffSelector }, - { 'sinf', kVerticalPositionType, kScientificInferiorsSelector, kNormalPositionSelector }, - { 'smcp', kLowerCaseType, kLowerCaseSmallCapsSelector, kDefaultLowerCaseSelector }, - { 'smpl', kCharacterShapeType, kSimplifiedCharactersSelector, 16 }, - { 'ss01', kStylisticAlternativesType, kStylisticAltOneOnSelector, kStylisticAltOneOffSelector }, - { 'ss02', kStylisticAlternativesType, kStylisticAltTwoOnSelector, kStylisticAltTwoOffSelector }, - { 'ss03', kStylisticAlternativesType, kStylisticAltThreeOnSelector, kStylisticAltThreeOffSelector }, - { 'ss04', kStylisticAlternativesType, kStylisticAltFourOnSelector, kStylisticAltFourOffSelector }, - { 'ss05', kStylisticAlternativesType, kStylisticAltFiveOnSelector, kStylisticAltFiveOffSelector }, - { 'ss06', kStylisticAlternativesType, kStylisticAltSixOnSelector, kStylisticAltSixOffSelector }, - { 'ss07', kStylisticAlternativesType, kStylisticAltSevenOnSelector, kStylisticAltSevenOffSelector }, - { 'ss08', kStylisticAlternativesType, kStylisticAltEightOnSelector, kStylisticAltEightOffSelector }, - { 'ss09', kStylisticAlternativesType, kStylisticAltNineOnSelector, kStylisticAltNineOffSelector }, - { 'ss10', kStylisticAlternativesType, kStylisticAltTenOnSelector, kStylisticAltTenOffSelector }, - { 'ss11', kStylisticAlternativesType, kStylisticAltElevenOnSelector, kStylisticAltElevenOffSelector }, - { 'ss12', kStylisticAlternativesType, kStylisticAltTwelveOnSelector, kStylisticAltTwelveOffSelector }, - { 'ss13', kStylisticAlternativesType, kStylisticAltThirteenOnSelector, kStylisticAltThirteenOffSelector }, - { 'ss14', kStylisticAlternativesType, kStylisticAltFourteenOnSelector, kStylisticAltFourteenOffSelector }, - { 'ss15', kStylisticAlternativesType, kStylisticAltFifteenOnSelector, kStylisticAltFifteenOffSelector }, - { 'ss16', kStylisticAlternativesType, kStylisticAltSixteenOnSelector, kStylisticAltSixteenOffSelector }, - { 'ss17', kStylisticAlternativesType, kStylisticAltSeventeenOnSelector, kStylisticAltSeventeenOffSelector }, - { 'ss18', kStylisticAlternativesType, kStylisticAltEighteenOnSelector, kStylisticAltEighteenOffSelector }, - { 'ss19', kStylisticAlternativesType, kStylisticAltNineteenOnSelector, kStylisticAltNineteenOffSelector }, - { 'ss20', kStylisticAlternativesType, kStylisticAltTwentyOnSelector, kStylisticAltTwentyOffSelector }, - { 'subs', kVerticalPositionType, kInferiorsSelector, kNormalPositionSelector }, - { 'sups', kVerticalPositionType, kSuperiorsSelector, kNormalPositionSelector }, - { 'swsh', kContextualAlternatesType, kSwashAlternatesOnSelector, kSwashAlternatesOffSelector }, - { 'titl', kStyleOptionsType, kTitlingCapsSelector, kNoStyleOptionsSelector }, - { 'tnam', kCharacterShapeType, kTraditionalNamesCharactersSelector, 16 }, - { 'tnum', kNumberSpacingType, kMonospacedNumbersSelector, 4 }, - { 'trad', kCharacterShapeType, kTraditionalCharactersSelector, 16 }, - { 'twid', kTextSpacingType, kThirdWidthTextSelector, 7 }, - { 'unic', kLetterCaseType, 14, 15 }, - { 'valt', kTextSpacingType, kAltProportionalTextSelector, 7 }, - { 'vert', kVerticalSubstitutionType, kSubstituteVerticalFormsOnSelector, kSubstituteVerticalFormsOffSelector }, - { 'vhal', kTextSpacingType, kAltHalfWidthTextSelector, 7 }, - { 'vkna', kAlternateKanaType, kAlternateVertKanaOnSelector, kAlternateVertKanaOffSelector }, - { 'vpal', kTextSpacingType, kAltProportionalTextSelector, 7 }, - { 'vrt2', kVerticalSubstitutionType, kSubstituteVerticalFormsOnSelector, kSubstituteVerticalFormsOffSelector }, - { 'zero', kTypographicExtrasType, kSlashedZeroOnSelector, kSlashedZeroOffSelector }, -}; - -static int -_hb_feature_mapping_cmp (const void *key_, const void *entry_) -{ - unsigned int key = * (unsigned int *) key_; - const feature_mapping_t * entry = (const feature_mapping_t *) entry_; - return key < entry->otFeatureTag ? -1 : - key > entry->otFeatureTag ? 1 : - 0; -} - -hb_bool_t -_hb_coretext_shape (hb_shape_plan_t *shape_plan, - hb_font_t *font, - hb_buffer_t *buffer, - const hb_feature_t *features, - unsigned int num_features) -{ - hb_face_t *face = font->face; - CGFontRef cg_font = (CGFontRef) HB_SHAPER_DATA_GET (face); - CTFontRef ct_font = (CTFontRef) HB_SHAPER_DATA_GET (font); - - CGFloat ct_font_size = CTFontGetSize (ct_font); - CGFloat x_mult = (CGFloat) font->x_scale / ct_font_size; - CGFloat y_mult = (CGFloat) font->y_scale / ct_font_size; - - /* Attach marks to their bases, to match the 'ot' shaper. - * Adapted from hb-ot-shape:hb_form_clusters(). - * Note that this only makes us be closer to the 'ot' shaper, - * but by no means the same. For example, if there's - * B1 M1 B2 M2, and B1-B2 form a ligature, M2's cluster will - * continue pointing to B2 even though B2 was merged into B1's - * cluster... */ - if (buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES) - { - hb_unicode_funcs_t *unicode = buffer->unicode; - unsigned int count = buffer->len; - hb_glyph_info_t *info = buffer->info; - for (unsigned int i = 1; i < count; i++) - if (HB_UNICODE_GENERAL_CATEGORY_IS_MARK (unicode->general_category (info[i].codepoint))) - buffer->merge_clusters (i - 1, i + 1); - } - - hb_auto_array_t<feature_record_t> feature_records; - hb_auto_array_t<range_record_t> range_records; - - /* - * Set up features. - * (copied + modified from code from hb-uniscribe.cc) - */ - if (num_features) - { - /* Sort features by start/end events. */ - hb_auto_array_t<feature_event_t> feature_events; - for (unsigned int i = 0; i < num_features; i++) - { - const feature_mapping_t * mapping = (const feature_mapping_t *) bsearch (&features[i].tag, - feature_mappings, - ARRAY_LENGTH (feature_mappings), - sizeof (feature_mappings[0]), - _hb_feature_mapping_cmp); - if (!mapping) - continue; - - active_feature_t feature; - feature.rec.feature = mapping->aatFeatureType; - feature.rec.setting = features[i].value ? mapping->selectorToEnable : mapping->selectorToDisable; - feature.order = i; - - feature_event_t *event; - - event = feature_events.push (); - if (unlikely (!event)) - goto fail_features; - event->index = features[i].start; - event->start = true; - event->feature = feature; - - event = feature_events.push (); - if (unlikely (!event)) - goto fail_features; - event->index = features[i].end; - event->start = false; - event->feature = feature; - } - feature_events.qsort (); - /* Add a strategic final event. */ - { - active_feature_t feature; - feature.rec.feature = HB_TAG_NONE; - feature.rec.setting = 0; - feature.order = num_features + 1; - - feature_event_t *event = feature_events.push (); - if (unlikely (!event)) - goto fail_features; - event->index = 0; /* This value does magic. */ - event->start = false; - event->feature = feature; - } - - /* Scan events and save features for each range. */ - hb_auto_array_t<active_feature_t> active_features; - unsigned int last_index = 0; - for (unsigned int i = 0; i < feature_events.len; i++) - { - feature_event_t *event = &feature_events[i]; - - if (event->index != last_index) - { - /* Save a snapshot of active features and the range. */ - range_record_t *range = range_records.push (); - if (unlikely (!range)) - goto fail_features; - - if (active_features.len) - { - CFMutableArrayRef features_array = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks); - - /* TODO sort and resolve conflicting features? */ - /* active_features.qsort (); */ - for (unsigned int j = 0; j < active_features.len; j++) - { - CFStringRef keys[] = { - kCTFontFeatureTypeIdentifierKey, - kCTFontFeatureSelectorIdentifierKey - }; - CFNumberRef values[] = { - CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &active_features[j].rec.feature), - CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &active_features[j].rec.setting) - }; - static_assert ((ARRAY_LENGTH_CONST (keys) == ARRAY_LENGTH_CONST (values)), ""); - CFDictionaryRef dict = CFDictionaryCreate (kCFAllocatorDefault, - (const void **) keys, - (const void **) values, - ARRAY_LENGTH (keys), - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); - for (unsigned int i = 0; i < ARRAY_LENGTH (values); i++) - CFRelease (values[i]); - - CFArrayAppendValue (features_array, dict); - CFRelease (dict); - - } - - CFDictionaryRef attributes = CFDictionaryCreate (kCFAllocatorDefault, - (const void **) &kCTFontFeatureSettingsAttribute, - (const void **) &features_array, - 1, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); - CFRelease (features_array); - - CTFontDescriptorRef font_desc = CTFontDescriptorCreateWithAttributes (attributes); - CFRelease (attributes); - - range->font = CTFontCreateCopyWithAttributes (ct_font, 0.0, nullptr, font_desc); - CFRelease (font_desc); - } - else - { - range->font = nullptr; - } - - range->index_first = last_index; - range->index_last = event->index - 1; - - last_index = event->index; - } - - if (event->start) { - active_feature_t *feature = active_features.push (); - if (unlikely (!feature)) - goto fail_features; - *feature = event->feature; - } else { - active_feature_t *feature = active_features.find (&event->feature); - if (feature) - active_features.remove (feature - active_features.array); - } - } - } - else - { - fail_features: - num_features = 0; - } - - unsigned int scratch_size; - hb_buffer_t::scratch_buffer_t *scratch = buffer->get_scratch_buffer (&scratch_size); - -#define ALLOCATE_ARRAY(Type, name, len, on_no_room) \ - Type *name = (Type *) scratch; \ - { \ - unsigned int _consumed = DIV_CEIL ((len) * sizeof (Type), sizeof (*scratch)); \ - if (unlikely (_consumed > scratch_size)) \ - { \ - on_no_room; \ - assert (0); \ - } \ - scratch += _consumed; \ - scratch_size -= _consumed; \ - } - - ALLOCATE_ARRAY (UniChar, pchars, buffer->len * 2, /*nothing*/); - unsigned int chars_len = 0; - for (unsigned int i = 0; i < buffer->len; i++) { - hb_codepoint_t c = buffer->info[i].codepoint; - if (likely (c <= 0xFFFFu)) - pchars[chars_len++] = c; - else if (unlikely (c > 0x10FFFFu)) - pchars[chars_len++] = 0xFFFDu; - else { - pchars[chars_len++] = 0xD800u + ((c - 0x10000u) >> 10); - pchars[chars_len++] = 0xDC00u + ((c - 0x10000u) & ((1u << 10) - 1)); - } - } - - ALLOCATE_ARRAY (unsigned int, log_clusters, chars_len, /*nothing*/); - chars_len = 0; - for (unsigned int i = 0; i < buffer->len; i++) - { - hb_codepoint_t c = buffer->info[i].codepoint; - unsigned int cluster = buffer->info[i].cluster; - log_clusters[chars_len++] = cluster; - if (hb_in_range (c, 0x10000u, 0x10FFFFu)) - log_clusters[chars_len++] = cluster; /* Surrogates. */ - } - -#define FAIL(...) \ - HB_STMT_START { \ - DEBUG_MSG (CORETEXT, nullptr, __VA_ARGS__); \ - ret = false; \ - goto fail; \ - } HB_STMT_END; - - bool ret = true; - CFStringRef string_ref = nullptr; - CTLineRef line = nullptr; - - if (0) - { -resize_and_retry: - DEBUG_MSG (CORETEXT, buffer, "Buffer resize"); - /* string_ref uses the scratch-buffer for backing store, and line references - * string_ref (via attr_string). We must release those before resizing buffer. */ - assert (string_ref); - assert (line); - CFRelease (string_ref); - CFRelease (line); - string_ref = nullptr; - line = nullptr; - - /* Get previous start-of-scratch-area, that we use later for readjusting - * our existing scratch arrays. */ - unsigned int old_scratch_used; - hb_buffer_t::scratch_buffer_t *old_scratch; - old_scratch = buffer->get_scratch_buffer (&old_scratch_used); - old_scratch_used = scratch - old_scratch; - - if (unlikely (!buffer->ensure (buffer->allocated * 2))) - FAIL ("Buffer resize failed"); - - /* Adjust scratch, pchars, and log_cluster arrays. This is ugly, but really the - * cleanest way to do without completely restructuring the rest of this shaper. */ - scratch = buffer->get_scratch_buffer (&scratch_size); - pchars = reinterpret_cast<UniChar *> (((char *) scratch + ((char *) pchars - (char *) old_scratch))); - log_clusters = reinterpret_cast<unsigned int *> (((char *) scratch + ((char *) log_clusters - (char *) old_scratch))); - scratch += old_scratch_used; - scratch_size -= old_scratch_used; - } - { - string_ref = CFStringCreateWithCharactersNoCopy (nullptr, - pchars, chars_len, - kCFAllocatorNull); - if (unlikely (!string_ref)) - FAIL ("CFStringCreateWithCharactersNoCopy failed"); - - /* Create an attributed string, populate it, and create a line from it, then release attributed string. */ - { - CFMutableAttributedStringRef attr_string = CFAttributedStringCreateMutable (kCFAllocatorDefault, - chars_len); - if (unlikely (!attr_string)) - FAIL ("CFAttributedStringCreateMutable failed"); - CFAttributedStringReplaceString (attr_string, CFRangeMake (0, 0), string_ref); - if (HB_DIRECTION_IS_VERTICAL (buffer->props.direction)) - { - CFAttributedStringSetAttribute (attr_string, CFRangeMake (0, chars_len), - kCTVerticalFormsAttributeName, kCFBooleanTrue); - } - - if (buffer->props.language) - { -/* What's the iOS equivalent of this check? - * The symbols was introduced in iOS 7.0. - * At any rate, our fallback is safe and works fine. */ -#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090 -# define kCTLanguageAttributeName CFSTR ("NSLanguage") -#endif - CFStringRef lang = CFStringCreateWithCStringNoCopy (kCFAllocatorDefault, - hb_language_to_string (buffer->props.language), - kCFStringEncodingUTF8, - kCFAllocatorNull); - if (unlikely (!lang)) - FAIL ("CFStringCreateWithCStringNoCopy failed"); - CFAttributedStringSetAttribute (attr_string, CFRangeMake (0, chars_len), - kCTLanguageAttributeName, lang); - CFRelease (lang); - } - CFAttributedStringSetAttribute (attr_string, CFRangeMake (0, chars_len), - kCTFontAttributeName, ct_font); - - if (num_features && range_records.len) - { - unsigned int start = 0; - range_record_t *last_range = &range_records[0]; - for (unsigned int k = 0; k < chars_len; k++) - { - range_record_t *range = last_range; - while (log_clusters[k] < range->index_first) - range--; - while (log_clusters[k] > range->index_last) - range++; - if (range != last_range) - { - if (last_range->font) - CFAttributedStringSetAttribute (attr_string, CFRangeMake (start, k - start), - kCTFontAttributeName, last_range->font); - - start = k; - } - - last_range = range; - } - if (start != chars_len && last_range->font) - CFAttributedStringSetAttribute (attr_string, CFRangeMake (start, chars_len - start), - kCTFontAttributeName, last_range->font); - } - /* Enable/disable kern if requested. - * - * Note: once kern is disabled, reenabling it doesn't currently seem to work in CoreText. - */ - if (num_features) - { - unsigned int zeroint = 0; - CFNumberRef zero = CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &zeroint); - for (unsigned int i = 0; i < num_features; i++) - { - const hb_feature_t &feature = features[i]; - if (feature.tag == HB_TAG('k','e','r','n') && - feature.start < chars_len && feature.start < feature.end) - { - CFRange feature_range = CFRangeMake (feature.start, - MIN (feature.end, chars_len) - feature.start); - if (feature.value) - CFAttributedStringRemoveAttribute (attr_string, feature_range, kCTKernAttributeName); - else - CFAttributedStringSetAttribute (attr_string, feature_range, kCTKernAttributeName, zero); - } - } - CFRelease (zero); - } - - int level = HB_DIRECTION_IS_FORWARD (buffer->props.direction) ? 0 : 1; - CFNumberRef level_number = CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &level); - CFDictionaryRef options = CFDictionaryCreate (kCFAllocatorDefault, - (const void **) &kCTTypesetterOptionForcedEmbeddingLevel, - (const void **) &level_number, - 1, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); - CFRelease (level_number); - if (unlikely (!options)) - FAIL ("CFDictionaryCreate failed"); - - CTTypesetterRef typesetter = CTTypesetterCreateWithAttributedStringAndOptions (attr_string, options); - CFRelease (options); - CFRelease (attr_string); - if (unlikely (!typesetter)) - FAIL ("CTTypesetterCreateWithAttributedStringAndOptions failed"); - - line = CTTypesetterCreateLine (typesetter, CFRangeMake(0, 0)); - CFRelease (typesetter); - if (unlikely (!line)) - FAIL ("CTTypesetterCreateLine failed"); - } - - CFArrayRef glyph_runs = CTLineGetGlyphRuns (line); - unsigned int num_runs = CFArrayGetCount (glyph_runs); - DEBUG_MSG (CORETEXT, nullptr, "Num runs: %d", num_runs); - - buffer->len = 0; - uint32_t status_and = ~0, status_or = 0; - double advances_so_far = 0; - /* For right-to-left runs, CoreText returns the glyphs positioned such that - * any trailing whitespace is to the left of (0,0). Adjust coordinate system - * to fix for that. Test with any RTL string with trailing spaces. - * https://code.google.com/p/chromium/issues/detail?id=469028 - */ - if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction)) - { - advances_so_far -= CTLineGetTrailingWhitespaceWidth (line); - if (HB_DIRECTION_IS_VERTICAL (buffer->props.direction)) - advances_so_far = -advances_so_far; - } - - const CFRange range_all = CFRangeMake (0, 0); - - for (unsigned int i = 0; i < num_runs; i++) - { - CTRunRef run = static_cast<CTRunRef>(CFArrayGetValueAtIndex (glyph_runs, i)); - CTRunStatus run_status = CTRunGetStatus (run); - status_or |= run_status; - status_and &= run_status; - DEBUG_MSG (CORETEXT, run, "CTRunStatus: %x", run_status); - double run_advance = CTRunGetTypographicBounds (run, range_all, nullptr, nullptr, nullptr); - if (HB_DIRECTION_IS_VERTICAL (buffer->props.direction)) - run_advance = -run_advance; - DEBUG_MSG (CORETEXT, run, "Run advance: %g", run_advance); - - /* CoreText does automatic font fallback (AKA "cascading") for characters - * not supported by the requested font, and provides no way to turn it off, - * so we must detect if the returned run uses a font other than the requested - * one and fill in the buffer with .notdef glyphs instead of random glyph - * indices from a different font. - */ - CFDictionaryRef attributes = CTRunGetAttributes (run); - CTFontRef run_ct_font = static_cast<CTFontRef>(CFDictionaryGetValue (attributes, kCTFontAttributeName)); - if (!CFEqual (run_ct_font, ct_font)) - { - /* The run doesn't use our main font instance. We have to figure out - * whether font fallback happened, or this is just CoreText giving us - * another CTFont using the same underlying CGFont. CoreText seems - * to do that in a variety of situations, one of which being vertical - * text, but also perhaps for caching reasons. - * - * First, see if it uses any of our subfonts created to set font features... - * - * Next, compare the CGFont to the one we used to create our fonts. - * Even this doesn't work all the time. - * - * Finally, we compare PS names, which I don't think are unique... - * - * Looks like if we really want to be sure here we have to modify the - * font to change the name table, similar to what we do in the uniscribe - * backend. - * - * However, even that wouldn't work if we were passed in the CGFont to - * construct a hb_face to begin with. - * - * See: http://github.com/harfbuzz/harfbuzz/pull/36 - * - * Also see: https://bugs.chromium.org/p/chromium/issues/detail?id=597098 - */ - bool matched = false; - for (unsigned int i = 0; i < range_records.len; i++) - if (range_records[i].font && CFEqual (run_ct_font, range_records[i].font)) - { - matched = true; - break; - } - if (!matched) - { - CGFontRef run_cg_font = CTFontCopyGraphicsFont (run_ct_font, 0); - if (run_cg_font) - { - matched = CFEqual (run_cg_font, cg_font); - CFRelease (run_cg_font); - } - } - if (!matched) - { - CFStringRef font_ps_name = CTFontCopyName (ct_font, kCTFontPostScriptNameKey); - CFStringRef run_ps_name = CTFontCopyName (run_ct_font, kCTFontPostScriptNameKey); - CFComparisonResult result = CFStringCompare (run_ps_name, font_ps_name, 0); - CFRelease (run_ps_name); - CFRelease (font_ps_name); - if (result == kCFCompareEqualTo) - matched = true; - } - if (!matched) - { - CFRange range = CTRunGetStringRange (run); - DEBUG_MSG (CORETEXT, run, "Run used fallback font: %ld..%ld", - range.location, range.location + range.length); - if (!buffer->ensure_inplace (buffer->len + range.length)) - goto resize_and_retry; - hb_glyph_info_t *info = buffer->info + buffer->len; - - hb_codepoint_t notdef = 0; - hb_direction_t dir = buffer->props.direction; - hb_position_t x_advance, y_advance, x_offset, y_offset; - hb_font_get_glyph_advance_for_direction (font, notdef, dir, &x_advance, &y_advance); - hb_font_get_glyph_origin_for_direction (font, notdef, dir, &x_offset, &y_offset); - hb_position_t advance = x_advance + y_advance; - x_offset = -x_offset; - y_offset = -y_offset; - - unsigned int old_len = buffer->len; - for (CFIndex j = range.location; j < range.location + range.length; j++) - { - UniChar ch = CFStringGetCharacterAtIndex (string_ref, j); - if (hb_in_range<UniChar> (ch, 0xDC00u, 0xDFFFu) && range.location < j) - { - ch = CFStringGetCharacterAtIndex (string_ref, j - 1); - if (hb_in_range<UniChar> (ch, 0xD800u, 0xDBFFu)) - /* This is the second of a surrogate pair. Don't need .notdef - * for this one. */ - continue; - } - if (buffer->unicode->is_default_ignorable (ch)) - continue; - - info->codepoint = notdef; - info->cluster = log_clusters[j]; - - info->mask = advance; - info->var1.i32 = x_offset; - info->var2.i32 = y_offset; - - info++; - buffer->len++; - } - if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction)) - buffer->reverse_range (old_len, buffer->len); - advances_so_far += run_advance; - continue; - } - } - - unsigned int num_glyphs = CTRunGetGlyphCount (run); - if (num_glyphs == 0) - continue; - - if (!buffer->ensure_inplace (buffer->len + num_glyphs)) - goto resize_and_retry; - - hb_glyph_info_t *run_info = buffer->info + buffer->len; - - /* Testing used to indicate that CTRunGetGlyphsPtr, etc (almost?) always - * succeed, and so copying data to our own buffer will be rare. Reports - * have it that this changed in OS X 10.10 Yosemite, and nullptr is returned - * frequently. At any rate, we can test that codepath by setting USE_PTR - * to false. */ - -#define USE_PTR true - -#define SCRATCH_SAVE() \ - unsigned int scratch_size_saved = scratch_size; \ - hb_buffer_t::scratch_buffer_t *scratch_saved = scratch - -#define SCRATCH_RESTORE() \ - scratch_size = scratch_size_saved; \ - scratch = scratch_saved; - - { /* Setup glyphs */ - SCRATCH_SAVE(); - const CGGlyph* glyphs = USE_PTR ? CTRunGetGlyphsPtr (run) : nullptr; - if (!glyphs) { - ALLOCATE_ARRAY (CGGlyph, glyph_buf, num_glyphs, goto resize_and_retry); - CTRunGetGlyphs (run, range_all, glyph_buf); - glyphs = glyph_buf; - } - const CFIndex* string_indices = USE_PTR ? CTRunGetStringIndicesPtr (run) : nullptr; - if (!string_indices) { - ALLOCATE_ARRAY (CFIndex, index_buf, num_glyphs, goto resize_and_retry); - CTRunGetStringIndices (run, range_all, index_buf); - string_indices = index_buf; - } - hb_glyph_info_t *info = run_info; - for (unsigned int j = 0; j < num_glyphs; j++) - { - info->codepoint = glyphs[j]; - info->cluster = log_clusters[string_indices[j]]; - info++; - } - SCRATCH_RESTORE(); - } - { - /* Setup positions. - * Note that CoreText does not return advances for glyphs. As such, - * for all but last glyph, we use the delta position to next glyph as - * advance (in the advance direction only), and for last glyph we set - * whatever is needed to make the whole run's advance add up. */ - SCRATCH_SAVE(); - const CGPoint* positions = USE_PTR ? CTRunGetPositionsPtr (run) : nullptr; - if (!positions) { - ALLOCATE_ARRAY (CGPoint, position_buf, num_glyphs, goto resize_and_retry); - CTRunGetPositions (run, range_all, position_buf); - positions = position_buf; - } - hb_glyph_info_t *info = run_info; - if (HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction)) - { - hb_position_t x_offset = (positions[0].x - advances_so_far) * x_mult; - for (unsigned int j = 0; j < num_glyphs; j++) - { - double advance; - if (likely (j + 1 < num_glyphs)) - advance = positions[j + 1].x - positions[j].x; - else /* last glyph */ - advance = run_advance - (positions[j].x - positions[0].x); - info->mask = advance * x_mult; - info->var1.i32 = x_offset; - info->var2.i32 = positions[j].y * y_mult; - info++; - } - } - else - { - hb_position_t y_offset = (positions[0].y - advances_so_far) * y_mult; - for (unsigned int j = 0; j < num_glyphs; j++) - { - double advance; - if (likely (j + 1 < num_glyphs)) - advance = positions[j + 1].y - positions[j].y; - else /* last glyph */ - advance = run_advance - (positions[j].y - positions[0].y); - info->mask = advance * y_mult; - info->var1.i32 = positions[j].x * x_mult; - info->var2.i32 = y_offset; - info++; - } - } - SCRATCH_RESTORE(); - advances_so_far += run_advance; - } -#undef SCRATCH_RESTORE -#undef SCRATCH_SAVE -#undef USE_PTR -#undef ALLOCATE_ARRAY - - buffer->len += num_glyphs; - } - - /* Mac OS 10.6 doesn't have kCTTypesetterOptionForcedEmbeddingLevel, - * or if it does, it doesn't resepct it. So we get runs with wrong - * directions. As such, disable the assert... It wouldn't crash, but - * cursoring will be off... - * - * http://crbug.com/419769 - */ - if (0) - { - /* Make sure all runs had the expected direction. */ - bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction); - assert (bool (status_and & kCTRunStatusRightToLeft) == backward); - assert (bool (status_or & kCTRunStatusRightToLeft) == backward); - } - - buffer->clear_positions (); - - unsigned int count = buffer->len; - hb_glyph_info_t *info = buffer->info; - hb_glyph_position_t *pos = buffer->pos; - if (HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction)) - for (unsigned int i = 0; i < count; i++) - { - pos->x_advance = info->mask; - pos->x_offset = info->var1.i32; - pos->y_offset = info->var2.i32; - - info->mask = HB_GLYPH_FLAG_UNSAFE_TO_BREAK; - - info++, pos++; - } - else - for (unsigned int i = 0; i < count; i++) - { - pos->y_advance = info->mask; - pos->x_offset = info->var1.i32; - pos->y_offset = info->var2.i32; - - info->mask = HB_GLYPH_FLAG_UNSAFE_TO_BREAK; - - info++, pos++; - } - - /* Fix up clusters so that we never return out-of-order indices; - * if core text has reordered glyphs, we'll merge them to the - * beginning of the reordered cluster. CoreText is nice enough - * to tell us whenever it has produced nonmonotonic results... - * Note that we assume the input clusters were nonmonotonic to - * begin with. - * - * This does *not* mean we'll form the same clusters as Uniscribe - * or the native OT backend, only that the cluster indices will be - * monotonic in the output buffer. */ - if (count > 1 && (status_or & kCTRunStatusNonMonotonic)) - { - hb_glyph_info_t *info = buffer->info; - if (HB_DIRECTION_IS_FORWARD (buffer->props.direction)) - { - unsigned int cluster = info[count - 1].cluster; - for (unsigned int i = count - 1; i > 0; i--) - { - cluster = MIN (cluster, info[i - 1].cluster); - info[i - 1].cluster = cluster; - } - } - else - { - unsigned int cluster = info[0].cluster; - for (unsigned int i = 1; i < count; i++) - { - cluster = MIN (cluster, info[i].cluster); - info[i].cluster = cluster; - } - } - } - } - - buffer->unsafe_to_break_all (); - -#undef FAIL - -fail: - if (string_ref) - CFRelease (string_ref); - if (line) - CFRelease (line); - - for (unsigned int i = 0; i < range_records.len; i++) - if (range_records[i].font) - CFRelease (range_records[i].font); - - return ret; -} - - -/* - * AAT shaper - */ - -HB_SHAPER_DATA_ENSURE_DEFINE(coretext_aat, face) -HB_SHAPER_DATA_ENSURE_DEFINE(coretext_aat, font) - -/* - * shaper face data - */ - -struct hb_coretext_aat_shaper_face_data_t {}; - -hb_coretext_aat_shaper_face_data_t * -_hb_coretext_aat_shaper_face_data_create (hb_face_t *face) -{ - static const hb_tag_t tags[] = {HB_CORETEXT_TAG_MORX, HB_CORETEXT_TAG_MORT, HB_CORETEXT_TAG_KERX, HB_CORETEXT_TAG_TRAK}; - - for (unsigned int i = 0; i < ARRAY_LENGTH (tags); i++) - { - hb_blob_t *blob = face->reference_table (tags[i]); - if (hb_blob_get_length (blob)) - { - hb_blob_destroy (blob); - return hb_coretext_shaper_face_data_ensure (face) ? (hb_coretext_aat_shaper_face_data_t *) HB_SHAPER_DATA_SUCCEEDED : nullptr; - } - hb_blob_destroy (blob); - } - - return nullptr; -} - -void -_hb_coretext_aat_shaper_face_data_destroy (hb_coretext_aat_shaper_face_data_t *data HB_UNUSED) -{ -} - - -/* - * shaper font data - */ - -struct hb_coretext_aat_shaper_font_data_t {}; - -hb_coretext_aat_shaper_font_data_t * -_hb_coretext_aat_shaper_font_data_create (hb_font_t *font) -{ - return hb_coretext_shaper_font_data_ensure (font) ? (hb_coretext_aat_shaper_font_data_t *) HB_SHAPER_DATA_SUCCEEDED : nullptr; -} - -void -_hb_coretext_aat_shaper_font_data_destroy (hb_coretext_aat_shaper_font_data_t *data HB_UNUSED) -{ -} - - -/* - * shaper shape_plan data - */ - -struct hb_coretext_aat_shaper_shape_plan_data_t {}; - -hb_coretext_aat_shaper_shape_plan_data_t * -_hb_coretext_aat_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan HB_UNUSED, - const hb_feature_t *user_features HB_UNUSED, - unsigned int num_user_features HB_UNUSED, - const int *coords HB_UNUSED, - unsigned int num_coords HB_UNUSED) -{ - return (hb_coretext_aat_shaper_shape_plan_data_t *) HB_SHAPER_DATA_SUCCEEDED; -} - -void -_hb_coretext_aat_shaper_shape_plan_data_destroy (hb_coretext_aat_shaper_shape_plan_data_t *data HB_UNUSED) -{ -} - - -/* - * shaper - */ - -hb_bool_t -_hb_coretext_aat_shape (hb_shape_plan_t *shape_plan, - hb_font_t *font, - hb_buffer_t *buffer, - const hb_feature_t *features, - unsigned int num_features) -{ - return _hb_coretext_shape (shape_plan, font, buffer, features, num_features); -} diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/harfbuzz-ng/src/hb-coretext.mm qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/harfbuzz-ng/src/hb-coretext.mm --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/harfbuzz-ng/src/hb-coretext.mm 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/harfbuzz-ng/src/hb-coretext.mm 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,1414 @@ +/* + * Copyright © 2012,2013 Mozilla Foundation. + * Copyright © 2012,2013 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Mozilla Author(s): Jonathan Kew + * Google Author(s): Behdad Esfahbod + */ + +#define HB_SHAPER coretext + +#include "hb-private.hh" +#include "hb-debug.hh" +#include "hb-shaper-impl-private.hh" + +#include "hb-coretext.h" +#include <math.h> + +#include <Foundation/Foundation.h> + +typedef bool (*qt_get_font_table_func_t) (void *user_data, unsigned int tag, unsigned char *buffer, unsigned int *length); + +struct FontEngineFaceData { + void *user_data; + qt_get_font_table_func_t get_font_table; +}; + +struct CoreTextFontEngineData { + CTFontRef ctFont; + CGFontRef cgFont; +}; + + +/* https://developer.apple.com/documentation/coretext/1508745-ctfontcreatewithgraphicsfont */ +#define HB_CORETEXT_DEFAULT_FONT_SIZE 12.f + +static void +release_table_data (void *user_data) +{ + CFDataRef cf_data = reinterpret_cast<CFDataRef> (user_data); + CFRelease(cf_data); +} + +static hb_blob_t * +reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data) +{ + CGFontRef cg_font = reinterpret_cast<CGFontRef> (user_data); + CFDataRef cf_data = CGFontCopyTableForTag (cg_font, tag); + if (unlikely (!cf_data)) + return nullptr; + + const char *data = reinterpret_cast<const char*> (CFDataGetBytePtr (cf_data)); + const size_t length = CFDataGetLength (cf_data); + if (!data || !length) + return nullptr; + + return hb_blob_create (data, length, HB_MEMORY_MODE_READONLY, + reinterpret_cast<void *> (const_cast<__CFData *> (cf_data)), + release_table_data); +} + +static void +_hb_cg_font_release (void *data) +{ + CGFontRelease ((CGFontRef) data); +} + + +HB_SHAPER_DATA_ENSURE_DEFINE(coretext, face) +HB_SHAPER_DATA_ENSURE_DEFINE_WITH_CONDITION(coretext, font, + fabs (CTFontGetSize ((CTFontRef) data) - font->ptem) <= .5 +) + +static CTFontDescriptorRef +get_last_resort_font_desc (void) +{ + // TODO Handle allocation failures? + CTFontDescriptorRef last_resort = CTFontDescriptorCreateWithNameAndSize (CFSTR("LastResort"), 0); + CFArrayRef cascade_list = CFArrayCreate (kCFAllocatorDefault, + (const void **) &last_resort, + 1, + &kCFTypeArrayCallBacks); + CFRelease (last_resort); + CFDictionaryRef attributes = CFDictionaryCreate (kCFAllocatorDefault, + (const void **) &kCTFontCascadeListAttribute, + (const void **) &cascade_list, + 1, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks); + CFRelease (cascade_list); + + CTFontDescriptorRef font_desc = CTFontDescriptorCreateWithAttributes (attributes); + CFRelease (attributes); + return font_desc; +} + +static void +release_data (void *info, const void *data, size_t size) +{ + assert (hb_blob_get_length ((hb_blob_t *) info) == size && + hb_blob_get_data ((hb_blob_t *) info, nullptr) == data); + + hb_blob_destroy ((hb_blob_t *) info); +} + +static CGFontRef +create_cg_font (hb_face_t *face) +{ + CGFontRef cg_font = nullptr; + if (face->destroy == _hb_cg_font_release) + { + cg_font = CGFontRetain ((CGFontRef) face->user_data); + } + else + { +#if 0 + hb_blob_t *blob = hb_face_reference_blob (face); + unsigned int blob_length; + const char *blob_data = hb_blob_get_data (blob, &blob_length); + if (unlikely (!blob_length)) + DEBUG_MSG (CORETEXT, face, "Face has empty blob"); + + CGDataProviderRef provider = CGDataProviderCreateWithData (blob, blob_data, blob_length, &release_data); + if (likely (provider)) + { + cg_font = CGFontCreateWithDataProvider (provider); + if (unlikely (!cg_font)) + DEBUG_MSG (CORETEXT, face, "Face CGFontCreateWithDataProvider() failed"); + CGDataProviderRelease (provider); + } +#else + FontEngineFaceData *fontEngineFaceData = (FontEngineFaceData *) face->user_data; + CoreTextFontEngineData *coreTextFontEngineData = (CoreTextFontEngineData *) fontEngineFaceData->user_data; + cg_font = CGFontRetain (coreTextFontEngineData->cgFont); +#endif + } + return cg_font; +} + +static CTFontRef +create_ct_font (CGFontRef cg_font, CGFloat font_size) +{ + CTFontRef ct_font = nullptr; + + /* CoreText does not enable trak table usage / tracking when creating a CTFont + * using CTFontCreateWithGraphicsFont. The only way of enabling tracking seems + * to be through the CTFontCreateUIFontForLanguage call. */ + CFStringRef cg_postscript_name = CGFontCopyPostScriptName (cg_font); + if (CFStringHasPrefix (cg_postscript_name, CFSTR (".SFNSText")) || + CFStringHasPrefix (cg_postscript_name, CFSTR (".SFNSDisplay"))) + { + CTFontUIFontType font_type = kCTFontUIFontSystem; + if (CFStringHasSuffix (cg_postscript_name, CFSTR ("-Bold"))) + font_type = kCTFontUIFontEmphasizedSystem; + + ct_font = CTFontCreateUIFontForLanguage (font_type, font_size, nullptr); + CFStringRef ct_result_name = CTFontCopyPostScriptName(ct_font); + if (CFStringCompare (ct_result_name, cg_postscript_name, 0) != kCFCompareEqualTo) + { + CFRelease(ct_font); + ct_font = nullptr; + } + CFRelease (ct_result_name); + } + CFRelease (cg_postscript_name); + + if (!ct_font) + ct_font = CTFontCreateWithGraphicsFont (cg_font, font_size, nullptr, nullptr); + + if (unlikely (!ct_font)) { + DEBUG_MSG (CORETEXT, cg_font, "Font CTFontCreateWithGraphicsFont() failed"); + return nullptr; + } + + /* crbug.com/576941 and crbug.com/625902 and the investigation in the latter + * bug indicate that the cascade list reconfiguration occasionally causes + * crashes in CoreText on OS X 10.9, thus let's skip this step on older + * operating system versions. Except for the emoji font, where _not_ + * reconfiguring the cascade list causes CoreText crashes. For details, see + * crbug.com/549610 */ + // 0x00070000 stands for "kCTVersionNumber10_10", see CoreText.h + if (&CTGetCoreTextVersion != nullptr && CTGetCoreTextVersion() < 0x00070000) { + CFStringRef fontName = CTFontCopyPostScriptName (ct_font); + bool isEmojiFont = CFStringCompare (fontName, CFSTR("AppleColorEmoji"), 0) == kCFCompareEqualTo; + CFRelease (fontName); + if (!isEmojiFont) + return ct_font; + } + + CFURLRef original_url = (CFURLRef)CTFontCopyAttribute(ct_font, kCTFontURLAttribute); + + /* Create font copy with cascade list that has LastResort first; this speeds up CoreText + * font fallback which we don't need anyway. */ + { + CTFontDescriptorRef last_resort_font_desc = get_last_resort_font_desc (); + CTFontRef new_ct_font = CTFontCreateCopyWithAttributes (ct_font, 0.0, nullptr, last_resort_font_desc); + CFRelease (last_resort_font_desc); + if (new_ct_font) + { + /* The CTFontCreateCopyWithAttributes call fails to stay on the same font + * when reconfiguring the cascade list and may switch to a different font + * when there are fonts that go by the same name, since the descriptor is + * just name and size. + * + * Avoid reconfiguring the cascade lists if the new font is outside the + * system locations that we cannot access from the sandboxed renderer + * process in Blink. This can be detected by the new file URL location + * that the newly found font points to. */ + CFURLRef new_url = (CFURLRef) CTFontCopyAttribute (new_ct_font, kCTFontURLAttribute); + // Keep reconfigured font if URL cannot be retrieved (seems to be the case + // on Mac OS 10.12 Sierra), speculative fix for crbug.com/625606 + if (!original_url || !new_url || CFEqual (original_url, new_url)) { + CFRelease (ct_font); + ct_font = new_ct_font; + } else { + CFRelease (new_ct_font); + DEBUG_MSG (CORETEXT, ct_font, "Discarding reconfigured CTFont, location changed."); + } + if (new_url) + CFRelease (new_url); + } + else + DEBUG_MSG (CORETEXT, ct_font, "Font copy with empty cascade list failed"); + } + + if (original_url) + CFRelease (original_url); + return ct_font; +} + +hb_coretext_shaper_face_data_t * +_hb_coretext_shaper_face_data_create (hb_face_t *face) +{ + CGFontRef cg_font = create_cg_font (face); + + if (unlikely (!cg_font)) + { + DEBUG_MSG (CORETEXT, face, "CGFont creation failed.."); + return nullptr; + } + + return (hb_coretext_shaper_face_data_t *) cg_font; +} + +void +_hb_coretext_shaper_face_data_destroy (hb_coretext_shaper_face_data_t *data) +{ + CFRelease ((CGFontRef) data); +} + +hb_face_t * +hb_coretext_face_create (CGFontRef cg_font) +{ + return hb_face_create_for_tables (reference_table, CGFontRetain (cg_font), _hb_cg_font_release); +} + +/* + * Since: 0.9.10 + */ +CGFontRef +hb_coretext_face_get_cg_font (hb_face_t *face) +{ + if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return nullptr; + return (CGFontRef) HB_SHAPER_DATA_GET (face); +} + + +hb_coretext_shaper_font_data_t * +_hb_coretext_shaper_font_data_create (hb_font_t *font) +{ + hb_face_t *face = font->face; + if (unlikely (!hb_coretext_shaper_face_data_ensure (face))) return nullptr; + CGFontRef cg_font = (CGFontRef) HB_SHAPER_DATA_GET (face); + + CGFloat font_size = font->ptem <= 0.f ? HB_CORETEXT_DEFAULT_FONT_SIZE : font->ptem; + CTFontRef ct_font = create_ct_font (cg_font, font_size); + + if (unlikely (!ct_font)) + { + DEBUG_MSG (CORETEXT, font, "CGFont creation failed.."); + return nullptr; + } + + return (hb_coretext_shaper_font_data_t *) ct_font; +} + +void +_hb_coretext_shaper_font_data_destroy (hb_coretext_shaper_font_data_t *data) +{ + CFRelease ((CTFontRef) data); +} + +/* + * Since: 1.7.2 + */ +hb_font_t * +hb_coretext_font_create (CTFontRef ct_font) +{ + CGFontRef cg_font = CTFontCopyGraphicsFont (ct_font, 0); + hb_face_t *face = hb_coretext_face_create (cg_font); + CFRelease (cg_font); + hb_font_t *font = hb_font_create (face); + hb_face_destroy (face); + + if (unlikely (hb_object_is_inert (font))) + return font; + + hb_font_set_ptem (font, CTFontGetSize (ct_font)); + + /* Let there be dragons here... */ + HB_SHAPER_DATA_GET (font) = (hb_coretext_shaper_font_data_t *) CFRetain (ct_font); + + return font; +} + +CTFontRef +hb_coretext_font_get_ct_font (hb_font_t *font) +{ + if (unlikely (!hb_coretext_shaper_font_data_ensure (font))) return nullptr; + return (CTFontRef) HB_SHAPER_DATA_GET (font); +} + + + +/* + * shaper shape_plan data + */ + +struct hb_coretext_shaper_shape_plan_data_t {}; + +hb_coretext_shaper_shape_plan_data_t * +_hb_coretext_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan HB_UNUSED, + const hb_feature_t *user_features HB_UNUSED, + unsigned int num_user_features HB_UNUSED, + const int *coords HB_UNUSED, + unsigned int num_coords HB_UNUSED) +{ + return (hb_coretext_shaper_shape_plan_data_t *) HB_SHAPER_DATA_SUCCEEDED; +} + +void +_hb_coretext_shaper_shape_plan_data_destroy (hb_coretext_shaper_shape_plan_data_t *data HB_UNUSED) +{ +} + + +/* + * shaper + */ + +struct feature_record_t { + unsigned int feature; + unsigned int setting; +}; + +struct active_feature_t { + feature_record_t rec; + unsigned int order; + + static int cmp (const void *pa, const void *pb) { + const active_feature_t *a = (const active_feature_t *) pa; + const active_feature_t *b = (const active_feature_t *) pb; + return a->rec.feature < b->rec.feature ? -1 : a->rec.feature > b->rec.feature ? 1 : + a->order < b->order ? -1 : a->order > b->order ? 1 : + a->rec.setting < b->rec.setting ? -1 : a->rec.setting > b->rec.setting ? 1 : + 0; + } + bool operator== (const active_feature_t *f) { + return cmp (this, f) == 0; + } +}; + +struct feature_event_t { + unsigned int index; + bool start; + active_feature_t feature; + + static int cmp (const void *pa, const void *pb) { + const feature_event_t *a = (const feature_event_t *) pa; + const feature_event_t *b = (const feature_event_t *) pb; + return a->index < b->index ? -1 : a->index > b->index ? 1 : + a->start < b->start ? -1 : a->start > b->start ? 1 : + active_feature_t::cmp (&a->feature, &b->feature); + } +}; + +struct range_record_t { + CTFontRef font; + unsigned int index_first; /* == start */ + unsigned int index_last; /* == end - 1 */ +}; + + +/* The following enum members are added in OS X 10.8. */ +#define kAltHalfWidthTextSelector 6 +#define kAltProportionalTextSelector 5 +#define kAlternateHorizKanaOffSelector 1 +#define kAlternateHorizKanaOnSelector 0 +#define kAlternateKanaType 34 +#define kAlternateVertKanaOffSelector 3 +#define kAlternateVertKanaOnSelector 2 +#define kCaseSensitiveLayoutOffSelector 1 +#define kCaseSensitiveLayoutOnSelector 0 +#define kCaseSensitiveLayoutType 33 +#define kCaseSensitiveSpacingOffSelector 3 +#define kCaseSensitiveSpacingOnSelector 2 +#define kContextualAlternatesOffSelector 1 +#define kContextualAlternatesOnSelector 0 +#define kContextualAlternatesType 36 +#define kContextualLigaturesOffSelector 19 +#define kContextualLigaturesOnSelector 18 +#define kContextualSwashAlternatesOffSelector 5 +#define kContextualSwashAlternatesOnSelector 4 +#define kDefaultLowerCaseSelector 0 +#define kDefaultUpperCaseSelector 0 +#define kHistoricalLigaturesOffSelector 21 +#define kHistoricalLigaturesOnSelector 20 +#define kHojoCharactersSelector 12 +#define kJIS2004CharactersSelector 11 +#define kLowerCasePetiteCapsSelector 2 +#define kLowerCaseSmallCapsSelector 1 +#define kLowerCaseType 37 +#define kMathematicalGreekOffSelector 11 +#define kMathematicalGreekOnSelector 10 +#define kNLCCharactersSelector 13 +#define kQuarterWidthTextSelector 4 +#define kScientificInferiorsSelector 4 +#define kStylisticAltEightOffSelector 17 +#define kStylisticAltEightOnSelector 16 +#define kStylisticAltEighteenOffSelector 37 +#define kStylisticAltEighteenOnSelector 36 +#define kStylisticAltElevenOffSelector 23 +#define kStylisticAltElevenOnSelector 22 +#define kStylisticAltFifteenOffSelector 31 +#define kStylisticAltFifteenOnSelector 30 +#define kStylisticAltFiveOffSelector 11 +#define kStylisticAltFiveOnSelector 10 +#define kStylisticAltFourOffSelector 9 +#define kStylisticAltFourOnSelector 8 +#define kStylisticAltFourteenOffSelector 29 +#define kStylisticAltFourteenOnSelector 28 +#define kStylisticAltNineOffSelector 19 +#define kStylisticAltNineOnSelector 18 +#define kStylisticAltNineteenOffSelector 39 +#define kStylisticAltNineteenOnSelector 38 +#define kStylisticAltOneOffSelector 3 +#define kStylisticAltOneOnSelector 2 +#define kStylisticAltSevenOffSelector 15 +#define kStylisticAltSevenOnSelector 14 +#define kStylisticAltSeventeenOffSelector 35 +#define kStylisticAltSeventeenOnSelector 34 +#define kStylisticAltSixOffSelector 13 +#define kStylisticAltSixOnSelector 12 +#define kStylisticAltSixteenOffSelector 33 +#define kStylisticAltSixteenOnSelector 32 +#define kStylisticAltTenOffSelector 21 +#define kStylisticAltTenOnSelector 20 +#define kStylisticAltThirteenOffSelector 27 +#define kStylisticAltThirteenOnSelector 26 +#define kStylisticAltThreeOffSelector 7 +#define kStylisticAltThreeOnSelector 6 +#define kStylisticAltTwelveOffSelector 25 +#define kStylisticAltTwelveOnSelector 24 +#define kStylisticAltTwentyOffSelector 41 +#define kStylisticAltTwentyOnSelector 40 +#define kStylisticAltTwoOffSelector 5 +#define kStylisticAltTwoOnSelector 4 +#define kStylisticAlternativesType 35 +#define kSwashAlternatesOffSelector 3 +#define kSwashAlternatesOnSelector 2 +#define kThirdWidthTextSelector 3 +#define kTraditionalNamesCharactersSelector 14 +#define kUpperCasePetiteCapsSelector 2 +#define kUpperCaseSmallCapsSelector 1 +#define kUpperCaseType 38 + +/* Table data courtesy of Apple. */ +static const struct feature_mapping_t { + FourCharCode otFeatureTag; + uint16_t aatFeatureType; + uint16_t selectorToEnable; + uint16_t selectorToDisable; +} feature_mappings[] = { + { 'c2pc', kUpperCaseType, kUpperCasePetiteCapsSelector, kDefaultUpperCaseSelector }, + { 'c2sc', kUpperCaseType, kUpperCaseSmallCapsSelector, kDefaultUpperCaseSelector }, + { 'calt', kContextualAlternatesType, kContextualAlternatesOnSelector, kContextualAlternatesOffSelector }, + { 'case', kCaseSensitiveLayoutType, kCaseSensitiveLayoutOnSelector, kCaseSensitiveLayoutOffSelector }, + { 'clig', kLigaturesType, kContextualLigaturesOnSelector, kContextualLigaturesOffSelector }, + { 'cpsp', kCaseSensitiveLayoutType, kCaseSensitiveSpacingOnSelector, kCaseSensitiveSpacingOffSelector }, + { 'cswh', kContextualAlternatesType, kContextualSwashAlternatesOnSelector, kContextualSwashAlternatesOffSelector }, + { 'dlig', kLigaturesType, kRareLigaturesOnSelector, kRareLigaturesOffSelector }, + { 'expt', kCharacterShapeType, kExpertCharactersSelector, 16 }, + { 'frac', kFractionsType, kDiagonalFractionsSelector, kNoFractionsSelector }, + { 'fwid', kTextSpacingType, kMonospacedTextSelector, 7 }, + { 'halt', kTextSpacingType, kAltHalfWidthTextSelector, 7 }, + { 'hist', kLigaturesType, kHistoricalLigaturesOnSelector, kHistoricalLigaturesOffSelector }, + { 'hkna', kAlternateKanaType, kAlternateHorizKanaOnSelector, kAlternateHorizKanaOffSelector, }, + { 'hlig', kLigaturesType, kHistoricalLigaturesOnSelector, kHistoricalLigaturesOffSelector }, + { 'hngl', kTransliterationType, kHanjaToHangulSelector, kNoTransliterationSelector }, + { 'hojo', kCharacterShapeType, kHojoCharactersSelector, 16 }, + { 'hwid', kTextSpacingType, kHalfWidthTextSelector, 7 }, + { 'ital', kItalicCJKRomanType, kCJKItalicRomanOnSelector, kCJKItalicRomanOffSelector }, + { 'jp04', kCharacterShapeType, kJIS2004CharactersSelector, 16 }, + { 'jp78', kCharacterShapeType, kJIS1978CharactersSelector, 16 }, + { 'jp83', kCharacterShapeType, kJIS1983CharactersSelector, 16 }, + { 'jp90', kCharacterShapeType, kJIS1990CharactersSelector, 16 }, + { 'liga', kLigaturesType, kCommonLigaturesOnSelector, kCommonLigaturesOffSelector }, + { 'lnum', kNumberCaseType, kUpperCaseNumbersSelector, 2 }, + { 'mgrk', kMathematicalExtrasType, kMathematicalGreekOnSelector, kMathematicalGreekOffSelector }, + { 'nlck', kCharacterShapeType, kNLCCharactersSelector, 16 }, + { 'onum', kNumberCaseType, kLowerCaseNumbersSelector, 2 }, + { 'ordn', kVerticalPositionType, kOrdinalsSelector, kNormalPositionSelector }, + { 'palt', kTextSpacingType, kAltProportionalTextSelector, 7 }, + { 'pcap', kLowerCaseType, kLowerCasePetiteCapsSelector, kDefaultLowerCaseSelector }, + { 'pkna', kTextSpacingType, kProportionalTextSelector, 7 }, + { 'pnum', kNumberSpacingType, kProportionalNumbersSelector, 4 }, + { 'pwid', kTextSpacingType, kProportionalTextSelector, 7 }, + { 'qwid', kTextSpacingType, kQuarterWidthTextSelector, 7 }, + { 'ruby', kRubyKanaType, kRubyKanaOnSelector, kRubyKanaOffSelector }, + { 'sinf', kVerticalPositionType, kScientificInferiorsSelector, kNormalPositionSelector }, + { 'smcp', kLowerCaseType, kLowerCaseSmallCapsSelector, kDefaultLowerCaseSelector }, + { 'smpl', kCharacterShapeType, kSimplifiedCharactersSelector, 16 }, + { 'ss01', kStylisticAlternativesType, kStylisticAltOneOnSelector, kStylisticAltOneOffSelector }, + { 'ss02', kStylisticAlternativesType, kStylisticAltTwoOnSelector, kStylisticAltTwoOffSelector }, + { 'ss03', kStylisticAlternativesType, kStylisticAltThreeOnSelector, kStylisticAltThreeOffSelector }, + { 'ss04', kStylisticAlternativesType, kStylisticAltFourOnSelector, kStylisticAltFourOffSelector }, + { 'ss05', kStylisticAlternativesType, kStylisticAltFiveOnSelector, kStylisticAltFiveOffSelector }, + { 'ss06', kStylisticAlternativesType, kStylisticAltSixOnSelector, kStylisticAltSixOffSelector }, + { 'ss07', kStylisticAlternativesType, kStylisticAltSevenOnSelector, kStylisticAltSevenOffSelector }, + { 'ss08', kStylisticAlternativesType, kStylisticAltEightOnSelector, kStylisticAltEightOffSelector }, + { 'ss09', kStylisticAlternativesType, kStylisticAltNineOnSelector, kStylisticAltNineOffSelector }, + { 'ss10', kStylisticAlternativesType, kStylisticAltTenOnSelector, kStylisticAltTenOffSelector }, + { 'ss11', kStylisticAlternativesType, kStylisticAltElevenOnSelector, kStylisticAltElevenOffSelector }, + { 'ss12', kStylisticAlternativesType, kStylisticAltTwelveOnSelector, kStylisticAltTwelveOffSelector }, + { 'ss13', kStylisticAlternativesType, kStylisticAltThirteenOnSelector, kStylisticAltThirteenOffSelector }, + { 'ss14', kStylisticAlternativesType, kStylisticAltFourteenOnSelector, kStylisticAltFourteenOffSelector }, + { 'ss15', kStylisticAlternativesType, kStylisticAltFifteenOnSelector, kStylisticAltFifteenOffSelector }, + { 'ss16', kStylisticAlternativesType, kStylisticAltSixteenOnSelector, kStylisticAltSixteenOffSelector }, + { 'ss17', kStylisticAlternativesType, kStylisticAltSeventeenOnSelector, kStylisticAltSeventeenOffSelector }, + { 'ss18', kStylisticAlternativesType, kStylisticAltEighteenOnSelector, kStylisticAltEighteenOffSelector }, + { 'ss19', kStylisticAlternativesType, kStylisticAltNineteenOnSelector, kStylisticAltNineteenOffSelector }, + { 'ss20', kStylisticAlternativesType, kStylisticAltTwentyOnSelector, kStylisticAltTwentyOffSelector }, + { 'subs', kVerticalPositionType, kInferiorsSelector, kNormalPositionSelector }, + { 'sups', kVerticalPositionType, kSuperiorsSelector, kNormalPositionSelector }, + { 'swsh', kContextualAlternatesType, kSwashAlternatesOnSelector, kSwashAlternatesOffSelector }, + { 'titl', kStyleOptionsType, kTitlingCapsSelector, kNoStyleOptionsSelector }, + { 'tnam', kCharacterShapeType, kTraditionalNamesCharactersSelector, 16 }, + { 'tnum', kNumberSpacingType, kMonospacedNumbersSelector, 4 }, + { 'trad', kCharacterShapeType, kTraditionalCharactersSelector, 16 }, + { 'twid', kTextSpacingType, kThirdWidthTextSelector, 7 }, + { 'unic', kLetterCaseType, 14, 15 }, + { 'valt', kTextSpacingType, kAltProportionalTextSelector, 7 }, + { 'vert', kVerticalSubstitutionType, kSubstituteVerticalFormsOnSelector, kSubstituteVerticalFormsOffSelector }, + { 'vhal', kTextSpacingType, kAltHalfWidthTextSelector, 7 }, + { 'vkna', kAlternateKanaType, kAlternateVertKanaOnSelector, kAlternateVertKanaOffSelector }, + { 'vpal', kTextSpacingType, kAltProportionalTextSelector, 7 }, + { 'vrt2', kVerticalSubstitutionType, kSubstituteVerticalFormsOnSelector, kSubstituteVerticalFormsOffSelector }, + { 'zero', kTypographicExtrasType, kSlashedZeroOnSelector, kSlashedZeroOffSelector }, +}; + +static int +_hb_feature_mapping_cmp (const void *key_, const void *entry_) +{ + unsigned int key = * (unsigned int *) key_; + const feature_mapping_t * entry = (const feature_mapping_t *) entry_; + return key < entry->otFeatureTag ? -1 : + key > entry->otFeatureTag ? 1 : + 0; +} + +hb_bool_t +_hb_coretext_shape (hb_shape_plan_t *shape_plan, + hb_font_t *font, + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features) +{ + hb_face_t *face = font->face; + CGFontRef cg_font = (CGFontRef) HB_SHAPER_DATA_GET (face); + CTFontRef ct_font = (CTFontRef) HB_SHAPER_DATA_GET (font); + + CGFloat ct_font_size = CTFontGetSize (ct_font); + CGFloat x_mult = (CGFloat) font->x_scale / ct_font_size; + CGFloat y_mult = (CGFloat) font->y_scale / ct_font_size; + + /* Attach marks to their bases, to match the 'ot' shaper. + * Adapted from hb-ot-shape:hb_form_clusters(). + * Note that this only makes us be closer to the 'ot' shaper, + * but by no means the same. For example, if there's + * B1 M1 B2 M2, and B1-B2 form a ligature, M2's cluster will + * continue pointing to B2 even though B2 was merged into B1's + * cluster... */ + if (buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES) + { + hb_unicode_funcs_t *unicode = buffer->unicode; + unsigned int count = buffer->len; + hb_glyph_info_t *info = buffer->info; + for (unsigned int i = 1; i < count; i++) + if (HB_UNICODE_GENERAL_CATEGORY_IS_MARK (unicode->general_category (info[i].codepoint))) + buffer->merge_clusters (i - 1, i + 1); + } + + hb_auto_array_t<feature_record_t> feature_records; + hb_auto_array_t<range_record_t> range_records; + + /* + * Set up features. + * (copied + modified from code from hb-uniscribe.cc) + */ + if (num_features) + { + /* Sort features by start/end events. */ + hb_auto_array_t<feature_event_t> feature_events; + for (unsigned int i = 0; i < num_features; i++) + { + const feature_mapping_t * mapping = (const feature_mapping_t *) bsearch (&features[i].tag, + feature_mappings, + ARRAY_LENGTH (feature_mappings), + sizeof (feature_mappings[0]), + _hb_feature_mapping_cmp); + if (!mapping) + continue; + + active_feature_t feature; + feature.rec.feature = mapping->aatFeatureType; + feature.rec.setting = features[i].value ? mapping->selectorToEnable : mapping->selectorToDisable; + feature.order = i; + + feature_event_t *event; + + event = feature_events.push (); + if (unlikely (!event)) + goto fail_features; + event->index = features[i].start; + event->start = true; + event->feature = feature; + + event = feature_events.push (); + if (unlikely (!event)) + goto fail_features; + event->index = features[i].end; + event->start = false; + event->feature = feature; + } + feature_events.qsort (); + /* Add a strategic final event. */ + { + active_feature_t feature; + feature.rec.feature = HB_TAG_NONE; + feature.rec.setting = 0; + feature.order = num_features + 1; + + feature_event_t *event = feature_events.push (); + if (unlikely (!event)) + goto fail_features; + event->index = 0; /* This value does magic. */ + event->start = false; + event->feature = feature; + } + + /* Scan events and save features for each range. */ + hb_auto_array_t<active_feature_t> active_features; + unsigned int last_index = 0; + for (unsigned int i = 0; i < feature_events.len; i++) + { + feature_event_t *event = &feature_events[i]; + + if (event->index != last_index) + { + /* Save a snapshot of active features and the range. */ + range_record_t *range = range_records.push (); + if (unlikely (!range)) + goto fail_features; + + if (active_features.len) + { + CFMutableArrayRef features_array = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks); + + /* TODO sort and resolve conflicting features? */ + /* active_features.qsort (); */ + for (unsigned int j = 0; j < active_features.len; j++) + { + CFStringRef keys[] = { + kCTFontFeatureTypeIdentifierKey, + kCTFontFeatureSelectorIdentifierKey + }; + CFNumberRef values[] = { + CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &active_features[j].rec.feature), + CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &active_features[j].rec.setting) + }; + static_assert ((ARRAY_LENGTH_CONST (keys) == ARRAY_LENGTH_CONST (values)), ""); + CFDictionaryRef dict = CFDictionaryCreate (kCFAllocatorDefault, + (const void **) keys, + (const void **) values, + ARRAY_LENGTH (keys), + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks); + for (unsigned int i = 0; i < ARRAY_LENGTH (values); i++) + CFRelease (values[i]); + + CFArrayAppendValue (features_array, dict); + CFRelease (dict); + + } + + CFDictionaryRef attributes = CFDictionaryCreate (kCFAllocatorDefault, + (const void **) &kCTFontFeatureSettingsAttribute, + (const void **) &features_array, + 1, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks); + CFRelease (features_array); + + CTFontDescriptorRef font_desc = CTFontDescriptorCreateWithAttributes (attributes); + CFRelease (attributes); + + range->font = CTFontCreateCopyWithAttributes (ct_font, 0.0, nullptr, font_desc); + CFRelease (font_desc); + } + else + { + range->font = nullptr; + } + + range->index_first = last_index; + range->index_last = event->index - 1; + + last_index = event->index; + } + + if (event->start) { + active_feature_t *feature = active_features.push (); + if (unlikely (!feature)) + goto fail_features; + *feature = event->feature; + } else { + active_feature_t *feature = active_features.find (&event->feature); + if (feature) + active_features.remove (feature - active_features.array); + } + } + } + else + { + fail_features: + num_features = 0; + } + + unsigned int scratch_size; + hb_buffer_t::scratch_buffer_t *scratch = buffer->get_scratch_buffer (&scratch_size); + +#define ALLOCATE_ARRAY(Type, name, len, on_no_room) \ + Type *name = (Type *) scratch; \ + { \ + unsigned int _consumed = DIV_CEIL ((len) * sizeof (Type), sizeof (*scratch)); \ + if (unlikely (_consumed > scratch_size)) \ + { \ + on_no_room; \ + assert (0); \ + } \ + scratch += _consumed; \ + scratch_size -= _consumed; \ + } + + ALLOCATE_ARRAY (UniChar, pchars, buffer->len * 2, /*nothing*/); + unsigned int chars_len = 0; + for (unsigned int i = 0; i < buffer->len; i++) { + hb_codepoint_t c = buffer->info[i].codepoint; + if (likely (c <= 0xFFFFu)) + pchars[chars_len++] = c; + else if (unlikely (c > 0x10FFFFu)) + pchars[chars_len++] = 0xFFFDu; + else { + pchars[chars_len++] = 0xD800u + ((c - 0x10000u) >> 10); + pchars[chars_len++] = 0xDC00u + ((c - 0x10000u) & ((1u << 10) - 1)); + } + } + + ALLOCATE_ARRAY (unsigned int, log_clusters, chars_len, /*nothing*/); + chars_len = 0; + for (unsigned int i = 0; i < buffer->len; i++) + { + hb_codepoint_t c = buffer->info[i].codepoint; + unsigned int cluster = buffer->info[i].cluster; + log_clusters[chars_len++] = cluster; + if (hb_in_range (c, 0x10000u, 0x10FFFFu)) + log_clusters[chars_len++] = cluster; /* Surrogates. */ + } + +#define FAIL(...) \ + HB_STMT_START { \ + DEBUG_MSG (CORETEXT, nullptr, __VA_ARGS__); \ + ret = false; \ + goto fail; \ + } HB_STMT_END; + + bool ret = true; + CFStringRef string_ref = nullptr; + CTLineRef line = nullptr; + + if (0) + { +resize_and_retry: + DEBUG_MSG (CORETEXT, buffer, "Buffer resize"); + /* string_ref uses the scratch-buffer for backing store, and line references + * string_ref (via attr_string). We must release those before resizing buffer. */ + assert (string_ref); + assert (line); + CFRelease (string_ref); + CFRelease (line); + string_ref = nullptr; + line = nullptr; + + /* Get previous start-of-scratch-area, that we use later for readjusting + * our existing scratch arrays. */ + unsigned int old_scratch_used; + hb_buffer_t::scratch_buffer_t *old_scratch; + old_scratch = buffer->get_scratch_buffer (&old_scratch_used); + old_scratch_used = scratch - old_scratch; + + if (unlikely (!buffer->ensure (buffer->allocated * 2))) + FAIL ("Buffer resize failed"); + + /* Adjust scratch, pchars, and log_cluster arrays. This is ugly, but really the + * cleanest way to do without completely restructuring the rest of this shaper. */ + scratch = buffer->get_scratch_buffer (&scratch_size); + pchars = reinterpret_cast<UniChar *> (((char *) scratch + ((char *) pchars - (char *) old_scratch))); + log_clusters = reinterpret_cast<unsigned int *> (((char *) scratch + ((char *) log_clusters - (char *) old_scratch))); + scratch += old_scratch_used; + scratch_size -= old_scratch_used; + } + { + string_ref = CFStringCreateWithCharactersNoCopy (nullptr, + pchars, chars_len, + kCFAllocatorNull); + if (unlikely (!string_ref)) + FAIL ("CFStringCreateWithCharactersNoCopy failed"); + + /* Create an attributed string, populate it, and create a line from it, then release attributed string. */ + { + CFMutableAttributedStringRef attr_string = CFAttributedStringCreateMutable (kCFAllocatorDefault, + chars_len); + if (unlikely (!attr_string)) + FAIL ("CFAttributedStringCreateMutable failed"); + CFAttributedStringReplaceString (attr_string, CFRangeMake (0, 0), string_ref); + if (HB_DIRECTION_IS_VERTICAL (buffer->props.direction)) + { + CFAttributedStringSetAttribute (attr_string, CFRangeMake (0, chars_len), + kCTVerticalFormsAttributeName, kCFBooleanTrue); + } + + if (buffer->props.language) + { +/* What's the iOS equivalent of this check? + * The symbols was introduced in iOS 7.0. + * At any rate, our fallback is safe and works fine. */ +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090 +# define kCTLanguageAttributeName CFSTR ("NSLanguage") +#endif + CFStringRef lang = CFStringCreateWithCStringNoCopy (kCFAllocatorDefault, + hb_language_to_string (buffer->props.language), + kCFStringEncodingUTF8, + kCFAllocatorNull); + if (unlikely (!lang)) + FAIL ("CFStringCreateWithCStringNoCopy failed"); + CFAttributedStringSetAttribute (attr_string, CFRangeMake (0, chars_len), + kCTLanguageAttributeName, lang); + CFRelease (lang); + } + CFAttributedStringSetAttribute (attr_string, CFRangeMake (0, chars_len), + kCTFontAttributeName, ct_font); + + if (num_features && range_records.len) + { + unsigned int start = 0; + range_record_t *last_range = &range_records[0]; + for (unsigned int k = 0; k < chars_len; k++) + { + range_record_t *range = last_range; + while (log_clusters[k] < range->index_first) + range--; + while (log_clusters[k] > range->index_last) + range++; + if (range != last_range) + { + if (last_range->font) + CFAttributedStringSetAttribute (attr_string, CFRangeMake (start, k - start), + kCTFontAttributeName, last_range->font); + + start = k; + } + + last_range = range; + } + if (start != chars_len && last_range->font) + CFAttributedStringSetAttribute (attr_string, CFRangeMake (start, chars_len - start), + kCTFontAttributeName, last_range->font); + } + /* Enable/disable kern if requested. + * + * Note: once kern is disabled, reenabling it doesn't currently seem to work in CoreText. + */ + if (num_features) + { + unsigned int zeroint = 0; + CFNumberRef zero = CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &zeroint); + for (unsigned int i = 0; i < num_features; i++) + { + const hb_feature_t &feature = features[i]; + if (feature.tag == HB_TAG('k','e','r','n') && + feature.start < chars_len && feature.start < feature.end) + { + CFRange feature_range = CFRangeMake (feature.start, + MIN (feature.end, chars_len) - feature.start); + if (feature.value) + CFAttributedStringRemoveAttribute (attr_string, feature_range, kCTKernAttributeName); + else + CFAttributedStringSetAttribute (attr_string, feature_range, kCTKernAttributeName, zero); + } + } + CFRelease (zero); + } + + int level = HB_DIRECTION_IS_FORWARD (buffer->props.direction) ? 0 : 1; + CFNumberRef level_number = CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &level); + CFDictionaryRef options = CFDictionaryCreate (kCFAllocatorDefault, + (const void **) &kCTTypesetterOptionForcedEmbeddingLevel, + (const void **) &level_number, + 1, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks); + CFRelease (level_number); + if (unlikely (!options)) + FAIL ("CFDictionaryCreate failed"); + + CTTypesetterRef typesetter = CTTypesetterCreateWithAttributedStringAndOptions (attr_string, options); + CFRelease (options); + CFRelease (attr_string); + if (unlikely (!typesetter)) + FAIL ("CTTypesetterCreateWithAttributedStringAndOptions failed"); + + line = CTTypesetterCreateLine (typesetter, CFRangeMake(0, 0)); + CFRelease (typesetter); + if (unlikely (!line)) + FAIL ("CTTypesetterCreateLine failed"); + } + + CFArrayRef glyph_runs = CTLineGetGlyphRuns (line); + unsigned int num_runs = CFArrayGetCount (glyph_runs); + DEBUG_MSG (CORETEXT, nullptr, "Num runs: %d", num_runs); + + buffer->len = 0; + uint32_t status_and = ~0, status_or = 0; + double advances_so_far = 0; + /* For right-to-left runs, CoreText returns the glyphs positioned such that + * any trailing whitespace is to the left of (0,0). Adjust coordinate system + * to fix for that. Test with any RTL string with trailing spaces. + * https://code.google.com/p/chromium/issues/detail?id=469028 + */ + if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction)) + { + advances_so_far -= CTLineGetTrailingWhitespaceWidth (line); + if (HB_DIRECTION_IS_VERTICAL (buffer->props.direction)) + advances_so_far = -advances_so_far; + } + + const CFRange range_all = CFRangeMake (0, 0); + + for (unsigned int i = 0; i < num_runs; i++) + { + CTRunRef run = static_cast<CTRunRef>(CFArrayGetValueAtIndex (glyph_runs, i)); + CTRunStatus run_status = CTRunGetStatus (run); + status_or |= run_status; + status_and &= run_status; + DEBUG_MSG (CORETEXT, run, "CTRunStatus: %x", run_status); + double run_advance = CTRunGetTypographicBounds (run, range_all, nullptr, nullptr, nullptr); + if (HB_DIRECTION_IS_VERTICAL (buffer->props.direction)) + run_advance = -run_advance; + DEBUG_MSG (CORETEXT, run, "Run advance: %g", run_advance); + + /* CoreText does automatic font fallback (AKA "cascading") for characters + * not supported by the requested font, and provides no way to turn it off, + * so we must detect if the returned run uses a font other than the requested + * one and fill in the buffer with .notdef glyphs instead of random glyph + * indices from a different font. + */ + CFDictionaryRef attributes = CTRunGetAttributes (run); + CTFontRef run_ct_font = static_cast<CTFontRef>(CFDictionaryGetValue (attributes, kCTFontAttributeName)); + if (!CFEqual (run_ct_font, ct_font)) + { + /* The run doesn't use our main font instance. We have to figure out + * whether font fallback happened, or this is just CoreText giving us + * another CTFont using the same underlying CGFont. CoreText seems + * to do that in a variety of situations, one of which being vertical + * text, but also perhaps for caching reasons. + * + * First, see if it uses any of our subfonts created to set font features... + * + * Next, compare the CGFont to the one we used to create our fonts. + * Even this doesn't work all the time. + * + * Finally, we compare PS names, which I don't think are unique... + * + * Looks like if we really want to be sure here we have to modify the + * font to change the name table, similar to what we do in the uniscribe + * backend. + * + * However, even that wouldn't work if we were passed in the CGFont to + * construct a hb_face to begin with. + * + * See: http://github.com/harfbuzz/harfbuzz/pull/36 + * + * Also see: https://bugs.chromium.org/p/chromium/issues/detail?id=597098 + */ + bool matched = false; + for (unsigned int i = 0; i < range_records.len; i++) + if (range_records[i].font && CFEqual (run_ct_font, range_records[i].font)) + { + matched = true; + break; + } + if (!matched) + { + CGFontRef run_cg_font = CTFontCopyGraphicsFont (run_ct_font, 0); + if (run_cg_font) + { + matched = CFEqual (run_cg_font, cg_font); + CFRelease (run_cg_font); + } + } + if (!matched) + { + CFStringRef font_ps_name = CTFontCopyName (ct_font, kCTFontPostScriptNameKey); + CFStringRef run_ps_name = CTFontCopyName (run_ct_font, kCTFontPostScriptNameKey); + CFComparisonResult result = CFStringCompare (run_ps_name, font_ps_name, 0); + CFRelease (run_ps_name); + CFRelease (font_ps_name); + if (result == kCFCompareEqualTo) + matched = true; + } + if (!matched) + { + CFRange range = CTRunGetStringRange (run); + DEBUG_MSG (CORETEXT, run, "Run used fallback font: %ld..%ld", + range.location, range.location + range.length); + if (!buffer->ensure_inplace (buffer->len + range.length)) + goto resize_and_retry; + hb_glyph_info_t *info = buffer->info + buffer->len; + + hb_codepoint_t notdef = 0; + hb_direction_t dir = buffer->props.direction; + hb_position_t x_advance, y_advance, x_offset, y_offset; + hb_font_get_glyph_advance_for_direction (font, notdef, dir, &x_advance, &y_advance); + hb_font_get_glyph_origin_for_direction (font, notdef, dir, &x_offset, &y_offset); + hb_position_t advance = x_advance + y_advance; + x_offset = -x_offset; + y_offset = -y_offset; + + unsigned int old_len = buffer->len; + for (CFIndex j = range.location; j < range.location + range.length; j++) + { + UniChar ch = CFStringGetCharacterAtIndex (string_ref, j); + if (hb_in_range<UniChar> (ch, 0xDC00u, 0xDFFFu) && range.location < j) + { + ch = CFStringGetCharacterAtIndex (string_ref, j - 1); + if (hb_in_range<UniChar> (ch, 0xD800u, 0xDBFFu)) + /* This is the second of a surrogate pair. Don't need .notdef + * for this one. */ + continue; + } + if (buffer->unicode->is_default_ignorable (ch)) + continue; + + info->codepoint = notdef; + info->cluster = log_clusters[j]; + + info->mask = advance; + info->var1.i32 = x_offset; + info->var2.i32 = y_offset; + + info++; + buffer->len++; + } + if (HB_DIRECTION_IS_BACKWARD (buffer->props.direction)) + buffer->reverse_range (old_len, buffer->len); + advances_so_far += run_advance; + continue; + } + } + + unsigned int num_glyphs = CTRunGetGlyphCount (run); + if (num_glyphs == 0) + continue; + + if (!buffer->ensure_inplace (buffer->len + num_glyphs)) + goto resize_and_retry; + + hb_glyph_info_t *run_info = buffer->info + buffer->len; + + /* Testing used to indicate that CTRunGetGlyphsPtr, etc (almost?) always + * succeed, and so copying data to our own buffer will be rare. Reports + * have it that this changed in OS X 10.10 Yosemite, and nullptr is returned + * frequently. At any rate, we can test that codepath by setting USE_PTR + * to false. */ + +#define USE_PTR true + +#define SCRATCH_SAVE() \ + unsigned int scratch_size_saved = scratch_size; \ + hb_buffer_t::scratch_buffer_t *scratch_saved = scratch + +#define SCRATCH_RESTORE() \ + scratch_size = scratch_size_saved; \ + scratch = scratch_saved; + + { /* Setup glyphs */ + SCRATCH_SAVE(); + const CGGlyph* glyphs = USE_PTR ? CTRunGetGlyphsPtr (run) : nullptr; + if (!glyphs) { + ALLOCATE_ARRAY (CGGlyph, glyph_buf, num_glyphs, goto resize_and_retry); + CTRunGetGlyphs (run, range_all, glyph_buf); + glyphs = glyph_buf; + } + const CFIndex* string_indices = USE_PTR ? CTRunGetStringIndicesPtr (run) : nullptr; + if (!string_indices) { + ALLOCATE_ARRAY (CFIndex, index_buf, num_glyphs, goto resize_and_retry); + CTRunGetStringIndices (run, range_all, index_buf); + string_indices = index_buf; + } + hb_glyph_info_t *info = run_info; + for (unsigned int j = 0; j < num_glyphs; j++) + { + info->codepoint = glyphs[j]; + info->cluster = log_clusters[string_indices[j]]; + info++; + } + SCRATCH_RESTORE(); + } + { + /* Setup positions. + * Note that CoreText does not return advances for glyphs. As such, + * for all but last glyph, we use the delta position to next glyph as + * advance (in the advance direction only), and for last glyph we set + * whatever is needed to make the whole run's advance add up. */ + SCRATCH_SAVE(); + const CGPoint* positions = USE_PTR ? CTRunGetPositionsPtr (run) : nullptr; + if (!positions) { + ALLOCATE_ARRAY (CGPoint, position_buf, num_glyphs, goto resize_and_retry); + CTRunGetPositions (run, range_all, position_buf); + positions = position_buf; + } + hb_glyph_info_t *info = run_info; + if (HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction)) + { + hb_position_t x_offset = (positions[0].x - advances_so_far) * x_mult; + for (unsigned int j = 0; j < num_glyphs; j++) + { + double advance; + if (likely (j + 1 < num_glyphs)) + advance = positions[j + 1].x - positions[j].x; + else /* last glyph */ + advance = run_advance - (positions[j].x - positions[0].x); + info->mask = advance * x_mult; + info->var1.i32 = x_offset; + info->var2.i32 = positions[j].y * y_mult; + info++; + } + } + else + { + hb_position_t y_offset = (positions[0].y - advances_so_far) * y_mult; + for (unsigned int j = 0; j < num_glyphs; j++) + { + double advance; + if (likely (j + 1 < num_glyphs)) + advance = positions[j + 1].y - positions[j].y; + else /* last glyph */ + advance = run_advance - (positions[j].y - positions[0].y); + info->mask = advance * y_mult; + info->var1.i32 = positions[j].x * x_mult; + info->var2.i32 = y_offset; + info++; + } + } + SCRATCH_RESTORE(); + advances_so_far += run_advance; + } +#undef SCRATCH_RESTORE +#undef SCRATCH_SAVE +#undef USE_PTR +#undef ALLOCATE_ARRAY + + buffer->len += num_glyphs; + } + + /* Mac OS 10.6 doesn't have kCTTypesetterOptionForcedEmbeddingLevel, + * or if it does, it doesn't resepct it. So we get runs with wrong + * directions. As such, disable the assert... It wouldn't crash, but + * cursoring will be off... + * + * http://crbug.com/419769 + */ + if (0) + { + /* Make sure all runs had the expected direction. */ + bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction); + assert (bool (status_and & kCTRunStatusRightToLeft) == backward); + assert (bool (status_or & kCTRunStatusRightToLeft) == backward); + } + + buffer->clear_positions (); + + unsigned int count = buffer->len; + hb_glyph_info_t *info = buffer->info; + hb_glyph_position_t *pos = buffer->pos; + if (HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction)) + for (unsigned int i = 0; i < count; i++) + { + pos->x_advance = info->mask; + pos->x_offset = info->var1.i32; + pos->y_offset = info->var2.i32; + + info->mask = HB_GLYPH_FLAG_UNSAFE_TO_BREAK; + + info++, pos++; + } + else + for (unsigned int i = 0; i < count; i++) + { + pos->y_advance = info->mask; + pos->x_offset = info->var1.i32; + pos->y_offset = info->var2.i32; + + info->mask = HB_GLYPH_FLAG_UNSAFE_TO_BREAK; + + info++, pos++; + } + + /* Fix up clusters so that we never return out-of-order indices; + * if core text has reordered glyphs, we'll merge them to the + * beginning of the reordered cluster. CoreText is nice enough + * to tell us whenever it has produced nonmonotonic results... + * Note that we assume the input clusters were nonmonotonic to + * begin with. + * + * This does *not* mean we'll form the same clusters as Uniscribe + * or the native OT backend, only that the cluster indices will be + * monotonic in the output buffer. */ + if (count > 1 && (status_or & kCTRunStatusNonMonotonic)) + { + hb_glyph_info_t *info = buffer->info; + if (HB_DIRECTION_IS_FORWARD (buffer->props.direction)) + { + unsigned int cluster = info[count - 1].cluster; + for (unsigned int i = count - 1; i > 0; i--) + { + cluster = MIN (cluster, info[i - 1].cluster); + info[i - 1].cluster = cluster; + } + } + else + { + unsigned int cluster = info[0].cluster; + for (unsigned int i = 1; i < count; i++) + { + cluster = MIN (cluster, info[i].cluster); + info[i].cluster = cluster; + } + } + } + } + + buffer->unsafe_to_break_all (); + +#undef FAIL + +fail: + if (string_ref) + CFRelease (string_ref); + if (line) + CFRelease (line); + + for (unsigned int i = 0; i < range_records.len; i++) + if (range_records[i].font) + CFRelease (range_records[i].font); + + return ret; +} + + +/* + * AAT shaper + */ + +HB_SHAPER_DATA_ENSURE_DEFINE(coretext_aat, face) +HB_SHAPER_DATA_ENSURE_DEFINE(coretext_aat, font) + +/* + * shaper face data + */ + +struct hb_coretext_aat_shaper_face_data_t {}; + +hb_coretext_aat_shaper_face_data_t * +_hb_coretext_aat_shaper_face_data_create (hb_face_t *face) +{ + static const hb_tag_t tags[] = {HB_CORETEXT_TAG_MORX, HB_CORETEXT_TAG_MORT, HB_CORETEXT_TAG_KERX, HB_CORETEXT_TAG_TRAK}; + + // Disable macOS 11 / iOS 14 specific hotfix for Qt on older versions, since it caused a + // regression. (Note: This code should not been upstreamed and is only applicable to Qt 5.15.x). + NSInteger majorVersion = NSProcessInfo.processInfo.operatingSystemVersion.majorVersion; + NSInteger hotfixMinimumVersion; +#if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE + hotfixMinimumVersion = 14; +#else + hotfixMinimumVersion = 11; +#endif + + unsigned int arrayLength = ARRAY_LENGTH (tags); + if (majorVersion < hotfixMinimumVersion) + arrayLength--; + + for (unsigned int i = 0; i < arrayLength; i++) + { + hb_blob_t *blob = face->reference_table (tags[i]); + if (hb_blob_get_length (blob)) + { + hb_blob_destroy (blob); + return hb_coretext_shaper_face_data_ensure (face) ? (hb_coretext_aat_shaper_face_data_t *) HB_SHAPER_DATA_SUCCEEDED : nullptr; + } + hb_blob_destroy (blob); + } + + return nullptr; +} + +void +_hb_coretext_aat_shaper_face_data_destroy (hb_coretext_aat_shaper_face_data_t *data HB_UNUSED) +{ +} + + +/* + * shaper font data + */ + +struct hb_coretext_aat_shaper_font_data_t {}; + +hb_coretext_aat_shaper_font_data_t * +_hb_coretext_aat_shaper_font_data_create (hb_font_t *font) +{ + return hb_coretext_shaper_font_data_ensure (font) ? (hb_coretext_aat_shaper_font_data_t *) HB_SHAPER_DATA_SUCCEEDED : nullptr; +} + +void +_hb_coretext_aat_shaper_font_data_destroy (hb_coretext_aat_shaper_font_data_t *data HB_UNUSED) +{ +} + + +/* + * shaper shape_plan data + */ + +struct hb_coretext_aat_shaper_shape_plan_data_t {}; + +hb_coretext_aat_shaper_shape_plan_data_t * +_hb_coretext_aat_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan HB_UNUSED, + const hb_feature_t *user_features HB_UNUSED, + unsigned int num_user_features HB_UNUSED, + const int *coords HB_UNUSED, + unsigned int num_coords HB_UNUSED) +{ + return (hb_coretext_aat_shaper_shape_plan_data_t *) HB_SHAPER_DATA_SUCCEEDED; +} + +void +_hb_coretext_aat_shaper_shape_plan_data_destroy (hb_coretext_aat_shaper_shape_plan_data_t *data HB_UNUSED) +{ +} + + +/* + * shaper + */ + +hb_bool_t +_hb_coretext_aat_shape (hb_shape_plan_t *shape_plan, + hb_font_t *font, + hb_buffer_t *buffer, + const hb_feature_t *features, + unsigned int num_features) +{ + return _hb_coretext_shape (shape_plan, font, buffer, features, num_features); +} diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/LICENSE qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/LICENSE --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/LICENSE 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/LICENSE 2022-11-11 15:29:17.000000000 +0800 @@ -91,7 +91,7 @@ The Modified (3-clause) BSD License =================================== -Copyright (C)2009-2020 D. R. Commander. All Rights Reserved. +Copyright (C)2009-2021 D. R. Commander. All Rights Reserved.<br> Copyright (C)2015 Viktor Szathmáry. All Rights Reserved. Redistribution and use in source and binary forms, with or without diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/ijg-license.txt qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/ijg-license.txt --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/ijg-license.txt 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/ijg-license.txt 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,34 @@ +The authors make NO WARRANTY or representation, either express or implied, +with respect to this software, its quality, accuracy, merchantability, or +fitness for a particular purpose. This software is provided "AS IS", and you, +its user, assume the entire risk as to its quality and accuracy. + +This software is copyright (C) 1991-2020, Thomas G. Lane, Guido Vollbeding. +All Rights Reserved except as specified below. + +Permission is hereby granted to use, copy, modify, and distribute this +software (or portions thereof) for any purpose, without fee, subject to these +conditions: +(1) If any part of the source code for this software is distributed, then this +README file must be included, with this copyright and no-warranty notice +unaltered; and any additions, deletions, or changes to the original files +must be clearly indicated in accompanying documentation. +(2) If only executable code is distributed, then the accompanying +documentation must state that "this software is based in part on the work of +the Independent JPEG Group". +(3) Permission for use of this software is granted only if the user accepts +full responsibility for any undesirable consequences; the authors accept +NO LIABILITY for damages of any kind. + +These conditions apply to any software derived from or based on the IJG code, +not just to the unmodified library. If you use our work, you ought to +acknowledge us. + +Permission is NOT granted for the use of any IJG author's name or company name +in advertising or publicity relating to this software or products derived from +it. This software may be referred to only as "the Independent JPEG Group's +software". + +We specifically permit and encourage the use of this software as the basis of +commercial products, provided that all warranty or liability claims are +assumed by the product vendor. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/import_from_libjpeg_tarball.sh qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/import_from_libjpeg_tarball.sh --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/import_from_libjpeg_tarball.sh 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/import_from_libjpeg_tarball.sh 2022-11-11 15:29:17.000000000 +0800 @@ -126,6 +126,7 @@ jdmaster.c jdmaster.h jdmerge.c + jdmerge.h jdmrgext.c jdmrg565.c jdpostct.c @@ -164,4 +165,4 @@ copy_file "$i" "src/$i" done -echo Done. $TARGET_DIR/jconfig.h and jconfigint.h may need manual updating. +echo Done. $TARGET_DIR/src/jconfig.h and jconfigint.h may need manual updating. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/jconfigint.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/jconfigint.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/jconfigint.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/jconfigint.h 1970-01-01 08:00:00.000000000 +0800 @@ -1,17 +0,0 @@ -// Definitions for building in Qt source, ref. src/jconfigint.h.in - -#include <stdint.h> - -#define BUILD "" - -#define INLINE inline - -#define PACKAGE_NAME "libjpeg-turbo" - -#define VERSION "2.0.5" - -#if SIZE_MAX == 0xffffffff -#define SIZEOF_SIZE_T 4 -#elif SIZE_MAX == 0xffffffffffffffff -#define SIZEOF_SIZE_T 8 -#endif diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/libjpeg.pro qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/libjpeg.pro --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/libjpeg.pro 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/libjpeg.pro 2022-11-11 15:29:17.000000000 +0800 @@ -9,10 +9,10 @@ MODULE_INCLUDEPATH = $$PWD/src MODULE_EXT_HEADERS = $$PWD/src/jpeglib.h \ $$PWD/src/jerror.h \ - $$PWD/src/jconfig.h \ - $$PWD/src/jmorecfg.h + $$PWD/src/jconfig.h \ + $$PWD/src/jmorecfg.h -INCLUDEPATH += $$PWD $$PWD/src +INCLUDEPATH += $$PWD/src load(qt_helper_lib) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/qt_attribution.json qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/qt_attribution.json --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/qt_attribution.json 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/qt_attribution.json 2022-11-11 15:29:17.000000000 +0800 @@ -6,19 +6,20 @@ "Description": "The Independent JPEG Group's JPEG software", "Homepage": "http://libjpeg-turbo.virtualgl.org/", - "Version": "2.0.5", - "License": "Independent JPEG Group License", - "LicenseId": "IJG", - "LicenseFile": "LICENSE", - "Copyright": "Copyright (C) 2009-2020 D. R. Commander -Copyright (C) 2011-2016 Siarhei Siamashka + "Version": "2.1.1", + "License": "Independent JPEG Group License and BSD 3-Clause \"New\" or \"Revised\" License and zlib License", + "LicenseId": "IJG AND BSD-3-Clause AND Zlib", + "LicenseFiles": [ "LICENSE", "ijg-license.txt", "zlib-license.txt"], + "Copyright": "Copyright (C) 2009-2021 D. R. Commander +Copyright (C) 2015, 2020 Google, Inc. +Copyright (C) 2019 Arm Limited Copyright (C) 2015-2016, 2018 Matthieu Darbois +Copyright (C) 2011-2016 Siarhei Siamashka Copyright (C) 2015 Intel Corporation -Copyright (C) 2015 Google, Inc. +Copyright (C) 2013-2014 Linaro Limited Copyright (C) 2013-2014 MIPS Technologies, Inc. -Copyright (C) 2013 Linaro Limited +Copyright (C) 2009, 2012 Pierre Ossman for Cendio AB Copyright (C) 2009-2011 Nokia Corporation and/or its subsidiary(-ies) -Copyright (C) 2009 Pierre Ossman for Cendio AB Copyright (C) 1999-2006 MIYASAKA Masaru -Copyright (C) 1991-2016 Thomas G. Lane, Guido Vollbeding" +Copyright (C) 1991-2017 Thomas G. Lane, Guido Vollbeding" } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/ChangeLog.md qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/ChangeLog.md --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/ChangeLog.md 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/ChangeLog.md 2022-11-11 15:29:17.000000000 +0800 @@ -1,3 +1,262 @@ +2.1.1 +===== + +### Significant changes relative to 2.1.0 + +1. Fixed a regression introduced in 2.1.0 that caused build failures with +non-GCC-compatible compilers for Un*x/Arm platforms. + +2. Fixed a regression introduced by 2.1 beta1[13] that prevented the Arm 32-bit +(AArch32) Neon SIMD extensions from building unless the C compiler flags +included `-mfloat-abi=softfp` or `-mfloat-abi=hard`. + +3. Fixed an issue in the AArch32 Neon SIMD Huffman encoder whereby reliance on +undefined C compiler behavior led to crashes ("SIGBUS: illegal alignment") on +Android systems when running AArch32/Thumb builds of libjpeg-turbo built with +recent versions of Clang. + +4. Added a command-line argument (`-copy icc`) to jpegtran that causes it to +copy only the ICC profile markers from the source file and discard any other +metadata. + +5. libjpeg-turbo should now build and run on CHERI-enabled architectures, which +use capability pointers that are larger than the size of `size_t`. + +6. Fixed a regression introduced by 2.1 beta1[5] that caused a segfault in the +64-bit SSE2 Huffman encoder when attempting to losslessly transform a +specially-crafted malformed JPEG image. + + +2.1.0 +===== + +### Significant changes relative to 2.1 beta1 + +1. Fixed a regression introduced by 2.1 beta1[6(b)] whereby attempting to +decompress certain progressive JPEG images with one or more component planes of +width 8 or less caused a buffer overrun. + +2. Fixed a regression introduced by 2.1 beta1[6(b)] whereby attempting to +decompress a specially-crafted malformed progressive JPEG image caused the +block smoothing algorithm to read from uninitialized memory. + +3. Fixed an issue in the Arm Neon SIMD Huffman encoders that caused the +encoders to generate incorrect results when using the Clang compiler with +Visual Studio. + +4. Fixed a floating point exception (CVE-2021-20205) that occurred when +attempting to compress a specially-crafted malformed GIF image with a specified +image width of 0 using cjpeg. + +5. Fixed a regression introduced by 2.0 beta1[15] whereby attempting to +generate a progressive JPEG image on an SSE2-capable CPU using a scan script +containing one or more scans with lengths divisible by 32 and non-zero +successive approximation low bit positions would, under certain circumstances, +result in an error ("Missing Huffman code table entry") and an invalid JPEG +image. + +6. Introduced a new flag (`TJFLAG_LIMITSCANS` in the TurboJPEG C API and +`TJ.FLAG_LIMIT_SCANS` in the TurboJPEG Java API) and a corresponding TJBench +command-line argument (`-limitscans`) that causes the TurboJPEG decompression +and transform functions/operations to return/throw an error if a progressive +JPEG image contains an unreasonably large number of scans. This allows +applications that use the TurboJPEG API to guard against an exploit of the +progressive JPEG format described in the report +["Two Issues with the JPEG Standard"](https://libjpeg-turbo.org/pmwiki/uploads/About/TwoIssueswiththeJPEGStandard.pdf). + +7. The PPM reader now throws an error, rather than segfaulting (due to a buffer +overrun) or generating incorrect pixels, if an application attempts to use the +`tjLoadImage()` function to load a 16-bit binary PPM file (a binary PPM file +with a maximum value greater than 255) into a grayscale image buffer or to load +a 16-bit binary PGM file into an RGB image buffer. + +8. Fixed an issue in the PPM reader that caused incorrect pixels to be +generated when using the `tjLoadImage()` function to load a 16-bit binary PPM +file into an extended RGB image buffer. + +9. Fixed an issue whereby, if a JPEG buffer was automatically re-allocated by +one of the TurboJPEG compression or transform functions and an error +subsequently occurred during compression or transformation, the JPEG buffer +pointer passed by the application was not updated when the function returned. + + +2.0.90 (2.1 beta1) +================== + +### Significant changes relative to 2.0.6: + +1. The build system, x86-64 SIMD extensions, and accelerated Huffman codec now +support the x32 ABI on Linux, which allows for using x86-64 instructions with +32-bit pointers. The x32 ABI is generally enabled by adding `-mx32` to the +compiler flags. + + Caveats: + - CMake 3.9.0 or later is required in order for the build system to +automatically detect an x32 build. + - Java does not support the x32 ABI, and thus the TurboJPEG Java API will +automatically be disabled with x32 builds. + +2. Added Loongson MMI SIMD implementations of the RGB-to-grayscale, 4:2:2 fancy +chroma upsampling, 4:2:2 and 4:2:0 merged chroma upsampling/color conversion, +and fast integer DCT/IDCT algorithms. Relative to libjpeg-turbo 2.0.x, this +speeds up: + + - the compression of RGB source images into grayscale JPEG images by +approximately 20% + - the decompression of 4:2:2 JPEG images by approximately 40-60% when +using fancy upsampling + - the decompression of 4:2:2 and 4:2:0 JPEG images by approximately +15-20% when using merged upsampling + - the compression of RGB source images by approximately 30-45% when using +the fast integer DCT + - the decompression of JPEG images into RGB destination images by +approximately 2x when using the fast integer IDCT + + The overall decompression speedup for RGB images is now approximately +2.3-3.7x (compared to 2-3.5x with libjpeg-turbo 2.0.x.) + +3. 32-bit (Armv7 or Armv7s) iOS builds of libjpeg-turbo are no longer +supported, and the libjpeg-turbo build system can no longer be used to package +such builds. 32-bit iOS apps cannot run in iOS 11 and later, and the App Store +no longer allows them. + +4. 32-bit (i386) OS X/macOS builds of libjpeg-turbo are no longer supported, +and the libjpeg-turbo build system can no longer be used to package such +builds. 32-bit Mac applications cannot run in macOS 10.15 "Catalina" and +later, and the App Store no longer allows them. + +5. The SSE2 (x86 SIMD) and C Huffman encoding algorithms have been +significantly optimized, resulting in a measured average overall compression +speedup of 12-28% for 64-bit code and 22-52% for 32-bit code on various Intel +and AMD CPUs, as well as a measured average overall compression speedup of +0-23% on platforms that do not have a SIMD-accelerated Huffman encoding +implementation. + +6. The block smoothing algorithm that is applied by default when decompressing +progressive Huffman-encoded JPEG images has been improved in the following +ways: + + - The algorithm is now more fault-tolerant. Previously, if a particular +scan was incomplete, then the smoothing parameters for the incomplete scan +would be applied to the entire output image, including the parts of the image +that were generated by the prior (complete) scan. Visually, this had the +effect of removing block smoothing from lower-frequency scans if they were +followed by an incomplete higher-frequency scan. libjpeg-turbo now applies +block smoothing parameters to each iMCU row based on which scan generated the +pixels in that row, rather than always using the block smoothing parameters for +the most recent scan. + - When applying block smoothing to DC scans, a Gaussian-like kernel with a +5x5 window is used to reduce the "blocky" appearance. + +7. Added SIMD acceleration for progressive Huffman encoding on Arm platforms. +This speeds up the compression of full-color progressive JPEGs by about 30-40% +on average (relative to libjpeg-turbo 2.0.x) when using modern Arm CPUs. + +8. Added configure-time and run-time auto-detection of Loongson MMI SIMD +instructions, so that the Loongson MMI SIMD extensions can be included in any +MIPS64 libjpeg-turbo build. + +9. Added fault tolerance features to djpeg and jpegtran, mainly to demonstrate +methods by which applications can guard against the exploits of the JPEG format +described in the report +["Two Issues with the JPEG Standard"](https://libjpeg-turbo.org/pmwiki/uploads/About/TwoIssueswiththeJPEGStandard.pdf). + + - Both programs now accept a `-maxscans` argument, which can be used to +limit the number of allowable scans in the input file. + - Both programs now accept a `-strict` argument, which can be used to +treat all warnings as fatal. + +10. CMake package config files are now included for both the libjpeg and +TurboJPEG API libraries. This facilitates using libjpeg-turbo with CMake's +`find_package()` function. For example: + + find_package(libjpeg-turbo CONFIG REQUIRED) + + add_executable(libjpeg_program libjpeg_program.c) + target_link_libraries(libjpeg_program PUBLIC libjpeg-turbo::jpeg) + + add_executable(libjpeg_program_static libjpeg_program.c) + target_link_libraries(libjpeg_program_static PUBLIC + libjpeg-turbo::jpeg-static) + + add_executable(turbojpeg_program turbojpeg_program.c) + target_link_libraries(turbojpeg_program PUBLIC + libjpeg-turbo::turbojpeg) + + add_executable(turbojpeg_program_static turbojpeg_program.c) + target_link_libraries(turbojpeg_program_static PUBLIC + libjpeg-turbo::turbojpeg-static) + +11. Since the Unisys LZW patent has long expired, cjpeg and djpeg can now +read/write both LZW-compressed and uncompressed GIF files (feature ported from +jpeg-6a and jpeg-9d.) + +12. jpegtran now includes the `-wipe` and `-drop` options from jpeg-9a and +jpeg-9d, as well as the ability to expand the image size using the `-crop` +option. Refer to jpegtran.1 or usage.txt for more details. + +13. Added a complete intrinsics implementation of the Arm Neon SIMD extensions, +thus providing SIMD acceleration on Arm platforms for all of the algorithms +that are SIMD-accelerated on x86 platforms. This new implementation is +significantly faster in some cases than the old GAS implementation-- +depending on the algorithms used, the type of CPU core, and the compiler. GCC, +as of this writing, does not provide a full or optimal set of Neon intrinsics, +so for performance reasons, the default when building libjpeg-turbo with GCC is +to continue using the GAS implementation of the following algorithms: + + - 32-bit RGB-to-YCbCr color conversion + - 32-bit fast and accurate inverse DCT + - 64-bit RGB-to-YCbCr and YCbCr-to-RGB color conversion + - 64-bit accurate forward and inverse DCT + - 64-bit Huffman encoding + + A new CMake variable (`NEON_INTRINSICS`) can be used to override this +default. + + Since the new intrinsics implementation includes SIMD acceleration +for merged upsampling/color conversion, 1.5.1[5] is no longer necessary and has +been reverted. + +14. The Arm Neon SIMD extensions can now be built using Visual Studio. + +15. The build system can now be used to generate a universal x86-64 + Armv8 +libjpeg-turbo SDK package for both iOS and macOS. + + +2.0.6 +===== + +### Significant changes relative to 2.0.5: + +1. Fixed "using JNI after critical get" errors that occurred on Android +platforms when using any of the YUV encoding/compression/decompression/decoding +methods in the TurboJPEG Java API. + +2. Fixed or worked around multiple issues with `jpeg_skip_scanlines()`: + + - Fixed segfaults or "Corrupt JPEG data: premature end of data segment" +errors in `jpeg_skip_scanlines()` that occurred when decompressing 4:2:2 or +4:2:0 JPEG images using merged (non-fancy) upsampling/color conversion (that +is, when setting `cinfo.do_fancy_upsampling` to `FALSE`.) 2.0.0[6] was a +similar fix, but it did not cover all cases. + - `jpeg_skip_scanlines()` now throws an error if two-pass color +quantization is enabled. Two-pass color quantization never worked properly +with `jpeg_skip_scanlines()`, and the issues could not readily be fixed. + - Fixed an issue whereby `jpeg_skip_scanlines()` always returned 0 when +skipping past the end of an image. + +3. The Arm 64-bit (Armv8) Neon SIMD extensions can now be built using MinGW +toolchains targetting Arm64 (AArch64) Windows binaries. + +4. Fixed unexpected visual artifacts that occurred when using +`jpeg_crop_scanline()` and interblock smoothing while decompressing only the DC +scan of a progressive JPEG image. + +5. Fixed an issue whereby libjpeg-turbo would not build if 12-bit-per-component +JPEG support (`WITH_12BIT`) was enabled along with libjpeg v7 or libjpeg v8 +API/ABI emulation (`WITH_JPEG7` or `WITH_JPEG8`.) + + 2.0.5 ===== @@ -54,17 +313,17 @@ decompress some such images using `tjDecompressToYUV2()` or `tjDecompressToYUVPlanes()`. -5. Fixed an issue, detected by ASan, whereby attempting to losslessly transform -a specially-crafted malformed JPEG image containing an extremely-high-frequency -coefficient block (junk image data that could never be generated by a -legitimate JPEG compressor) could cause the Huffman encoder's local buffer to -be overrun. (Refer to 1.4.0[9] and 1.4beta1[15].) Given that the buffer -overrun was fully contained within the stack and did not cause a segfault or -other user-visible errant behavior, and given that the lossless transformer -(unlike the decompressor) is not generally exposed to arbitrary data exploits, -this issue did not likely pose a security risk. +5. Fixed an issue (CVE-2020-17541), detected by ASan, whereby attempting to +losslessly transform a specially-crafted malformed JPEG image containing an +extremely-high-frequency coefficient block (junk image data that could never be +generated by a legitimate JPEG compressor) could cause the Huffman encoder's +local buffer to be overrun. (Refer to 1.4.0[9] and 1.4beta1[15].) Given that +the buffer overrun was fully contained within the stack and did not cause a +segfault or other user-visible errant behavior, and given that the lossless +transformer (unlike the decompressor) is not generally exposed to arbitrary +data exploits, this issue did not likely pose a security risk. -6. The ARM 64-bit (ARMv8) NEON SIMD assembly code now stores constants in a +6. The Arm 64-bit (Armv8) Neon SIMD assembly code now stores constants in a separate read-only data section rather than in the text section, to support execute-only memory layouts. @@ -246,7 +505,7 @@ 1. Added AVX2 SIMD implementations of the colorspace conversion, chroma downsampling and upsampling, integer quantization and sample conversion, and -slow integer DCT/IDCT algorithms. When using the slow integer DCT/IDCT +accurate integer DCT/IDCT algorithms. When using the accurate integer DCT/IDCT algorithms on AVX2-equipped CPUs, the compression of RGB images is approximately 13-36% (avg. 22%) faster (relative to libjpeg-turbo 1.5.x) with 64-bit code and 11-21% (avg. 17%) faster with 32-bit code, and the @@ -350,16 +609,16 @@ now produces bitwise-identical results to the unmerged algorithms. 12. The SIMD function symbols for x86[-64]/ELF, MIPS/ELF, macOS/x86[-64] (if -libjpeg-turbo is built with YASM), and iOS/ARM[64] builds are now private. +libjpeg-turbo is built with YASM), and iOS/Arm[64] builds are now private. This prevents those symbols from being exposed in applications or shared libraries that link statically with libjpeg-turbo. 13. Added Loongson MMI SIMD implementations of the RGB-to-YCbCr and YCbCr-to-RGB colorspace conversion, 4:2:0 chroma downsampling, 4:2:0 fancy -chroma upsampling, integer quantization, and slow integer DCT/IDCT algorithms. -When using the slow integer DCT/IDCT, this speeds up the compression of RGB -images by approximately 70-100% and the decompression of RGB images by -approximately 2-3.5x. +chroma upsampling, integer quantization, and accurate integer DCT/IDCT +algorithms. When using the accurate integer DCT/IDCT, this speeds up the +compression of RGB images by approximately 70-100% and the decompression of RGB +images by approximately 2-3.5x. 14. Fixed a build error when building with older MinGW releases (regression caused by 1.5.1[7].) @@ -409,9 +668,9 @@ `jpeg_consume_input()` would return `JPEG_SUSPENDED` rather than `JPEG_REACHED_EOI`. -9. `jpeg_crop_scanlines()` now works correctly when decompressing grayscale -JPEG images that were compressed with a sampling factor other than 1 (for -instance, with `cjpeg -grayscale -sample 2x2`). +9. `jpeg_crop_scanline()` now works correctly when decompressing grayscale JPEG +images that were compressed with a sampling factor other than 1 (for instance, +with `cjpeg -grayscale -sample 2x2`). 1.5.2 @@ -435,7 +694,7 @@ 5. Fixed build and runtime errors on Windows that occurred when building libjpeg-turbo with libjpeg v7 API/ABI emulation and the in-memory source/destination managers. Due to an oversight, the `jpeg_skip_scanlines()` -and `jpeg_crop_scanlines()` functions were not being included in jpeg7.dll when +and `jpeg_crop_scanline()` functions were not being included in jpeg7.dll when libjpeg-turbo was built with `-DWITH_JPEG7=1` and `-DWITH_MEMSRCDST=1`. 6. Fixed "Bogus virtual array access" error that occurred when using the @@ -691,8 +950,8 @@ disabled by setting the `JSIMD_NOHUFFENC` environment variable to `1`. 13. Added ARM 64-bit (ARMv8) NEON SIMD implementations of the commonly-used -compression algorithms (including the slow integer forward DCT and h2v2 & h2v1 -downsampling algorithms, which are not accelerated in the 32-bit NEON +compression algorithms (including the accurate integer forward DCT and h2v2 & +h2v1 downsampling algorithms, which are not accelerated in the 32-bit NEON implementation.) This speeds up the compression of full-color JPEGs by about 75% on average on a Cavium ThunderX processor and by about 2-2.5x on average on Cortex-A53 and Cortex-A57 cores. @@ -823,8 +1082,8 @@ 7. Fixed an extremely rare bug in the Huffman encoder that caused 64-bit builds of libjpeg-turbo to incorrectly encode a few specific test images when -quality=98, an optimized Huffman table, and the slow integer forward DCT were -used. +quality=98, an optimized Huffman table, and the accurate integer forward DCT +were used. 8. The Windows (CMake) build system now supports building only static or only shared libraries. This is accomplished by adding either `-DENABLE_STATIC=0` or @@ -983,8 +1242,8 @@ The accuracy of this implementation now matches the accuracy of the SSE/SSE2 implementation. Note, however, that the floating point DCT/IDCT algorithms are mainly a legacy feature. They generally do not produce significantly better -accuracy than the slow integer DCT/IDCT algorithms, and they are quite a bit -slower. +accuracy than the accurate integer DCT/IDCT algorithms, and they are quite a +bit slower. 8. Added a new output colorspace (`JCS_RGB565`) to the libjpeg API that allows for decompressing JPEG images into RGB565 (16-bit) pixels. If dithering is not @@ -1394,8 +1653,8 @@ 2. Despite the above, the fast integer forward DCT still degrades somewhat for JPEG qualities greater than 95, so the TurboJPEG wrapper will now automatically -use the slow integer forward DCT when generating JPEG images of quality 96 or -greater. This reduces compression performance by as much as 15% for these +use the accurate integer forward DCT when generating JPEG images of quality 96 +or greater. This reduces compression performance by as much as 15% for these high-quality images but is necessary to ensure that the images are perceptually lossless. It also ensures that the library can avoid the performance pitfall created by [1]. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/README.ijg qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/README.ijg --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/README.ijg 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/README.ijg 2022-11-11 15:29:17.000000000 +0800 @@ -128,7 +128,7 @@ fitness for a particular purpose. This software is provided "AS IS", and you, its user, assume the entire risk as to its quality and accuracy. -This software is copyright (C) 1991-2016, Thomas G. Lane, Guido Vollbeding. +This software is copyright (C) 1991-2020, Thomas G. Lane, Guido Vollbeding. All Rights Reserved except as specified below. Permission is hereby granted to use, copy, modify, and distribute this @@ -159,19 +159,6 @@ assumed by the product vendor. -The IJG distribution formerly included code to read and write GIF files. -To avoid entanglement with the Unisys LZW patent (now expired), GIF reading -support has been removed altogether, and the GIF writer has been simplified -to produce "uncompressed GIFs". This technique does not use the LZW -algorithm; the resulting GIF files are larger than usual, but are readable -by all standard GIF decoders. - -We are required to state that - "The Graphics Interchange Format(c) is the Copyright property of - CompuServe Incorporated. GIF(sm) is a Service Mark property of - CompuServe Incorporated." - - REFERENCES ========== @@ -223,12 +210,12 @@ A PDF file of the older JFIF 1.02 specification is available at http://www.w3.org/Graphics/JPEG/jfif3.pdf. -The TIFF 6.0 file format specification can be obtained by FTP from -ftp://ftp.sgi.com/graphics/tiff/TIFF6.ps.gz. The JPEG incorporation scheme -found in the TIFF 6.0 spec of 3-June-92 has a number of serious problems. -IJG does not recommend use of the TIFF 6.0 design (TIFF Compression tag 6). -Instead, we recommend the JPEG design proposed by TIFF Technical Note #2 -(Compression tag 7). Copies of this Note can be obtained from +The TIFF 6.0 file format specification can be obtained from +http://mirrors.ctan.org/graphics/tiff/TIFF6.ps.gz. The JPEG incorporation +scheme found in the TIFF 6.0 spec of 3-June-92 has a number of serious +problems. IJG does not recommend use of the TIFF 6.0 design (TIFF Compression +tag 6). Instead, we recommend the JPEG design proposed by TIFF Technical Note +#2 (Compression tag 7). Copies of this Note can be obtained from http://www.ijg.org/files/. It is expected that the next revision of the TIFF spec will replace the 6.0 JPEG design with the Note's design. Although IJG's own code does not support TIFF/JPEG, the free libtiff library @@ -243,14 +230,8 @@ directory "files". The JPEG FAQ (Frequently Asked Questions) article is a source of some -general information about JPEG. -It is available on the World Wide Web at http://www.faqs.org/faqs/jpeg-faq/ -and other news.answers archive sites, including the official news.answers -archive at rtfm.mit.edu: ftp://rtfm.mit.edu/pub/usenet/news.answers/jpeg-faq/. -If you don't have Web or FTP access, send e-mail to mail-server@rtfm.mit.edu -with body - send usenet/news.answers/jpeg-faq/part1 - send usenet/news.answers/jpeg-faq/part2 +general information about JPEG. It is available at +http://www.faqs.org/faqs/jpeg-faq. FILE FORMAT COMPATIBILITY diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/README.md qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/README.md --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/README.md 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/README.md 2022-11-11 15:29:17.000000000 +0800 @@ -2,8 +2,8 @@ ========== libjpeg-turbo is a JPEG image codec that uses SIMD instructions to accelerate -baseline JPEG compression and decompression on x86, x86-64, ARM, PowerPC, and -MIPS systems, as well as progressive JPEG compression on x86 and x86-64 +baseline JPEG compression and decompression on x86, x86-64, Arm, PowerPC, and +MIPS systems, as well as progressive JPEG compression on x86, x86-64, and Arm systems. On such systems, libjpeg-turbo is generally 2-6x as fast as libjpeg, all else being equal. On other types of systems, libjpeg-turbo can still outperform libjpeg by a significant amount, by virtue of its highly-optimized @@ -179,8 +179,8 @@ NOTE: As of this writing, extensive research has been conducted into the usefulness of DCT scaling as a means of data reduction and SmartScale as a -means of quality improvement. The reader is invited to peruse the research at -<http://www.libjpeg-turbo.org/About/SmartScale> and draw his/her own conclusions, +means of quality improvement. Readers are invited to peruse the research at +<http://www.libjpeg-turbo.org/About/SmartScale> and draw their own conclusions, but it is the general belief of our project that these features have not demonstrated sufficient usefulness to justify inclusion in libjpeg-turbo. @@ -287,12 +287,13 @@ (and slightly faster) floating point IDCT algorithm introduced in libjpeg v8a as opposed to the algorithm used in libjpeg v6b. It should be noted, however, that this algorithm basically brings the accuracy of the floating - point IDCT in line with the accuracy of the slow integer IDCT. The floating - point DCT/IDCT algorithms are mainly a legacy feature, and they do not - produce significantly more accuracy than the slow integer algorithms (to put - numbers on this, the typical difference in PNSR between the two algorithms - is less than 0.10 dB, whereas changing the quality level by 1 in the upper - range of the quality scale is typically more like a 1.0 dB difference.) + point IDCT in line with the accuracy of the accurate integer IDCT. The + floating point DCT/IDCT algorithms are mainly a legacy feature, and they do + not produce significantly more accuracy than the accurate integer algorithms + (to put numbers on this, the typical difference in PNSR between the two + algorithms is less than 0.10 dB, whereas changing the quality level by 1 in + the upper range of the quality scale is typically more like a 1.0 dB + difference.) - If the floating point algorithms in libjpeg-turbo are not implemented using SIMD instructions on a particular platform, then the accuracy of the @@ -340,7 +341,7 @@ correct results whenever the fast integer forward DCT is used along with a JPEG quality of 98-100. Thus, libjpeg-turbo must use the non-SIMD quantization function in those cases. This causes performance to drop by as much as 40%. -It is therefore strongly advised that you use the slow integer forward DCT +It is therefore strongly advised that you use the accurate integer forward DCT whenever encoding images with a JPEG quality of 98 or higher. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/change.log qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/change.log --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/change.log 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/change.log 2022-11-11 15:29:17.000000000 +0800 @@ -6,6 +6,25 @@ CHANGE LOG for Independent JPEG Group's JPEG software +Version 9d 12-Jan-2020 +----------------------- + +Restore GIF read and write support from libjpeg version 6a. +Thank to Wolfgang Werner (W.W.) Heinz for suggestion. + +Add jpegtran -drop option; add options to the crop extension and wipe +to fill the extra area with content from the source image region, +instead of gray out. + + +Version 9c 14-Jan-2018 +----------------------- + +jpegtran: add an option to the -wipe switch to fill the region +with the average of adjacent blocks, instead of gray out. +Thank to Caitlyn Feddock and Maddie Ziegler for inspiration. + + Version 9b 17-Jan-2016 ----------------------- @@ -13,6 +32,13 @@ Thank to Michele Martone for suggestion. +Version 9a 19-Jan-2014 +----------------------- + +Add jpegtran -wipe option and extension for -crop. +Thank to Andrew Senior, David Clunie, and Josef Schmid for suggestion. + + Version 9 13-Jan-2013 ---------------------- @@ -138,11 +164,6 @@ Huffman tables are checked for validity much more carefully than before. -To avoid the Unisys LZW patent, djpeg's GIF output capability has been -changed to produce "uncompressed GIFs", and cjpeg's GIF input capability -has been removed altogether. We're not happy about it either, but there -seems to be no good alternative. - The configure script now supports building libjpeg as a shared library on many flavors of Unix (all the ones that GNU libtool knows how to build shared libraries for). Use "./configure --enable-shared" to diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jccolext.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jccolext.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jccolext.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jccolext.c 2022-11-11 15:29:17.000000000 +0800 @@ -48,9 +48,9 @@ outptr2 = output_buf[2][output_row]; output_row++; for (col = 0; col < num_cols; col++) { - r = GETJSAMPLE(inptr[RGB_RED]); - g = GETJSAMPLE(inptr[RGB_GREEN]); - b = GETJSAMPLE(inptr[RGB_BLUE]); + r = inptr[RGB_RED]; + g = inptr[RGB_GREEN]; + b = inptr[RGB_BLUE]; inptr += RGB_PIXELSIZE; /* If the inputs are 0..MAXJSAMPLE, the outputs of these equations * must be too; we do not need an explicit range-limiting operation. @@ -100,9 +100,9 @@ outptr = output_buf[0][output_row]; output_row++; for (col = 0; col < num_cols; col++) { - r = GETJSAMPLE(inptr[RGB_RED]); - g = GETJSAMPLE(inptr[RGB_GREEN]); - b = GETJSAMPLE(inptr[RGB_BLUE]); + r = inptr[RGB_RED]; + g = inptr[RGB_GREEN]; + b = inptr[RGB_BLUE]; inptr += RGB_PIXELSIZE; /* Y */ outptr[col] = (JSAMPLE)((ctab[r + R_Y_OFF] + ctab[g + G_Y_OFF] + @@ -135,9 +135,9 @@ outptr2 = output_buf[2][output_row]; output_row++; for (col = 0; col < num_cols; col++) { - outptr0[col] = GETJSAMPLE(inptr[RGB_RED]); - outptr1[col] = GETJSAMPLE(inptr[RGB_GREEN]); - outptr2[col] = GETJSAMPLE(inptr[RGB_BLUE]); + outptr0[col] = inptr[RGB_RED]; + outptr1[col] = inptr[RGB_GREEN]; + outptr2[col] = inptr[RGB_BLUE]; inptr += RGB_PIXELSIZE; } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jccolor.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jccolor.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jccolor.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jccolor.c 2022-11-11 15:29:17.000000000 +0800 @@ -392,11 +392,11 @@ outptr3 = output_buf[3][output_row]; output_row++; for (col = 0; col < num_cols; col++) { - r = MAXJSAMPLE - GETJSAMPLE(inptr[0]); - g = MAXJSAMPLE - GETJSAMPLE(inptr[1]); - b = MAXJSAMPLE - GETJSAMPLE(inptr[2]); + r = MAXJSAMPLE - inptr[0]; + g = MAXJSAMPLE - inptr[1]; + b = MAXJSAMPLE - inptr[2]; /* K passes through as-is */ - outptr3[col] = inptr[3]; /* don't need GETJSAMPLE here */ + outptr3[col] = inptr[3]; inptr += 4; /* If the inputs are 0..MAXJSAMPLE, the outputs of these equations * must be too; we do not need an explicit range-limiting operation. @@ -438,7 +438,7 @@ outptr = output_buf[0][output_row]; output_row++; for (col = 0; col < num_cols; col++) { - outptr[col] = inptr[0]; /* don't need GETJSAMPLE() here */ + outptr[col] = inptr[0]; inptr += instride; } } @@ -497,7 +497,7 @@ inptr = *input_buf; outptr = output_buf[ci][output_row]; for (col = 0; col < num_cols; col++) { - outptr[col] = inptr[ci]; /* don't need GETJSAMPLE() here */ + outptr[col] = inptr[ci]; inptr += nc; } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jcdctmgr.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jcdctmgr.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jcdctmgr.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jcdctmgr.c 2022-11-11 15:29:17.000000000 +0800 @@ -381,19 +381,19 @@ elemptr = sample_data[elemr] + start_col; #if DCTSIZE == 8 /* unroll the inner loop */ - *workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE; - *workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE; - *workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE; - *workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE; - *workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE; - *workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE; - *workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE; - *workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE; + *workspaceptr++ = (*elemptr++) - CENTERJSAMPLE; + *workspaceptr++ = (*elemptr++) - CENTERJSAMPLE; + *workspaceptr++ = (*elemptr++) - CENTERJSAMPLE; + *workspaceptr++ = (*elemptr++) - CENTERJSAMPLE; + *workspaceptr++ = (*elemptr++) - CENTERJSAMPLE; + *workspaceptr++ = (*elemptr++) - CENTERJSAMPLE; + *workspaceptr++ = (*elemptr++) - CENTERJSAMPLE; + *workspaceptr++ = (*elemptr++) - CENTERJSAMPLE; #else { register int elemc; for (elemc = DCTSIZE; elemc > 0; elemc--) - *workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE; + *workspaceptr++ = (*elemptr++) - CENTERJSAMPLE; } #endif } @@ -533,20 +533,19 @@ for (elemr = 0; elemr < DCTSIZE; elemr++) { elemptr = sample_data[elemr] + start_col; #if DCTSIZE == 8 /* unroll the inner loop */ - *workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE); - *workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE); - *workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE); - *workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE); - *workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE); - *workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE); - *workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE); - *workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE); + *workspaceptr++ = (FAST_FLOAT)((*elemptr++) - CENTERJSAMPLE); + *workspaceptr++ = (FAST_FLOAT)((*elemptr++) - CENTERJSAMPLE); + *workspaceptr++ = (FAST_FLOAT)((*elemptr++) - CENTERJSAMPLE); + *workspaceptr++ = (FAST_FLOAT)((*elemptr++) - CENTERJSAMPLE); + *workspaceptr++ = (FAST_FLOAT)((*elemptr++) - CENTERJSAMPLE); + *workspaceptr++ = (FAST_FLOAT)((*elemptr++) - CENTERJSAMPLE); + *workspaceptr++ = (FAST_FLOAT)((*elemptr++) - CENTERJSAMPLE); + *workspaceptr++ = (FAST_FLOAT)((*elemptr++) - CENTERJSAMPLE); #else { register int elemc; for (elemc = DCTSIZE; elemc > 0; elemc--) - *workspaceptr++ = (FAST_FLOAT) - (GETJSAMPLE(*elemptr++) - CENTERJSAMPLE); + *workspaceptr++ = (FAST_FLOAT)((*elemptr++) - CENTERJSAMPLE); } #endif } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jchuff.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jchuff.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jchuff.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jchuff.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,8 +4,10 @@ * This file was part of the Independent JPEG Group's software: * Copyright (C) 1991-1997, Thomas G. Lane. * libjpeg-turbo Modifications: - * Copyright (C) 2009-2011, 2014-2016, 2018-2019, D. R. Commander. + * Copyright (C) 2009-2011, 2014-2016, 2018-2021, D. R. Commander. * Copyright (C) 2015, Matthieu Darbois. + * Copyright (C) 2018, Matthias Räncker. + * Copyright (C) 2020, Arm Limited. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -34,23 +36,28 @@ * memory footprint by 64k, which is important for some mobile applications * that create many isolated instances of libjpeg-turbo (web browsers, for * instance.) This may improve performance on some mobile platforms as well. - * This feature is enabled by default only on ARM processors, because some x86 + * This feature is enabled by default only on Arm processors, because some x86 * chips have a slow implementation of bsr, and the use of clz/bsr cannot be * shown to have a significant performance impact even on the x86 chips that - * have a fast implementation of it. When building for ARMv6, you can + * have a fast implementation of it. When building for Armv6, you can * explicitly disable the use of clz/bsr by adding -mthumb to the compiler * flags (this defines __thumb__). */ /* NOTE: Both GCC and Clang define __GNUC__ */ -#if defined(__GNUC__) && (defined(__arm__) || defined(__aarch64__)) +#if (defined(__GNUC__) && (defined(__arm__) || defined(__aarch64__))) || \ + defined(_M_ARM) || defined(_M_ARM64) #if !defined(__thumb__) || defined(__thumb2__) #define USE_CLZ_INTRINSIC #endif #endif #ifdef USE_CLZ_INTRINSIC +#if defined(_MSC_VER) && !defined(__clang__) +#define JPEG_NBITS_NONZERO(x) (32 - _CountLeadingZeros(x)) +#else #define JPEG_NBITS_NONZERO(x) (32 - __builtin_clz(x)) +#endif #define JPEG_NBITS(x) (x ? JPEG_NBITS_NONZERO(x) : 0) #else #include "jpeg_nbits_table.h" @@ -65,31 +72,42 @@ * but must not be updated permanently until we complete the MCU. */ -typedef struct { - size_t put_buffer; /* current bit-accumulation buffer */ - int put_bits; /* # of bits now in it */ - int last_dc_val[MAX_COMPS_IN_SCAN]; /* last DC coef for each component */ -} savable_state; +#if defined(__x86_64__) && defined(__ILP32__) +typedef unsigned long long bit_buf_type; +#else +typedef size_t bit_buf_type; +#endif -/* This macro is to work around compilers with missing or broken - * structure assignment. You'll need to fix this code if you have - * such a compiler and you change MAX_COMPS_IN_SCAN. +/* NOTE: The more optimal Huffman encoding algorithm is only used by the + * intrinsics implementation of the Arm Neon SIMD extensions, which is why we + * retain the old Huffman encoder behavior when using the GAS implementation. */ - -#ifndef NO_STRUCT_ASSIGN -#define ASSIGN_STATE(dest, src) ((dest) = (src)) +#if defined(WITH_SIMD) && !(defined(__arm__) || defined(__aarch64__) || \ + defined(_M_ARM) || defined(_M_ARM64)) +typedef unsigned long long simd_bit_buf_type; #else -#if MAX_COMPS_IN_SCAN == 4 -#define ASSIGN_STATE(dest, src) \ - ((dest).put_buffer = (src).put_buffer, \ - (dest).put_bits = (src).put_bits, \ - (dest).last_dc_val[0] = (src).last_dc_val[0], \ - (dest).last_dc_val[1] = (src).last_dc_val[1], \ - (dest).last_dc_val[2] = (src).last_dc_val[2], \ - (dest).last_dc_val[3] = (src).last_dc_val[3]) +typedef bit_buf_type simd_bit_buf_type; #endif + +#if (defined(SIZEOF_SIZE_T) && SIZEOF_SIZE_T == 8) || defined(_WIN64) || \ + (defined(__x86_64__) && defined(__ILP32__)) +#define BIT_BUF_SIZE 64 +#elif (defined(SIZEOF_SIZE_T) && SIZEOF_SIZE_T == 4) || defined(_WIN32) +#define BIT_BUF_SIZE 32 +#else +#error Cannot determine word size #endif +#define SIMD_BIT_BUF_SIZE (sizeof(simd_bit_buf_type) * 8) +typedef struct { + union { + bit_buf_type c; + simd_bit_buf_type simd; + } put_buffer; /* current bit accumulation buffer */ + int free_bits; /* # of bits available in it */ + /* (Neon GAS: # of bits now in it) */ + int last_dc_val[MAX_COMPS_IN_SCAN]; /* last DC coef for each component */ +} savable_state; typedef struct { struct jpeg_entropy_encoder pub; /* public fields */ @@ -123,6 +141,7 @@ size_t free_in_buffer; /* # of byte spaces remaining in buffer */ savable_state cur; /* Current bit buffer & DC state */ j_compress_ptr cinfo; /* dump_buffer needs access to this */ + int simd; } working_state; @@ -201,8 +220,17 @@ } /* Initialize bit buffer to empty */ - entropy->saved.put_buffer = 0; - entropy->saved.put_bits = 0; + if (entropy->simd) { + entropy->saved.put_buffer.simd = 0; +#if defined(__aarch64__) && !defined(NEON_INTRINSICS) + entropy->saved.free_bits = 0; +#else + entropy->saved.free_bits = SIMD_BIT_BUF_SIZE; +#endif + } else { + entropy->saved.put_buffer.c = 0; + entropy->saved.free_bits = BIT_BUF_SIZE; + } /* Initialize restart stuff */ entropy->restarts_to_go = cinfo->restart_interval; @@ -287,6 +315,7 @@ * this lets us detect duplicate VAL entries here, and later * allows emit_bits to detect any attempt to emit such symbols. */ + MEMZERO(dtbl->ehufco, sizeof(dtbl->ehufco)); MEMZERO(dtbl->ehufsi, sizeof(dtbl->ehufsi)); /* This is also a convenient place to check for out-of-range @@ -334,94 +363,94 @@ /* Outputting bits to the file */ -/* These macros perform the same task as the emit_bits() function in the - * original libjpeg code. In addition to reducing overhead by explicitly - * inlining the code, additional performance is achieved by taking into - * account the size of the bit buffer and waiting until it is almost full - * before emptying it. This mostly benefits 64-bit platforms, since 6 - * bytes can be stored in a 64-bit bit buffer before it has to be emptied. - */ - -#define EMIT_BYTE() { \ - JOCTET c; \ - put_bits -= 8; \ - c = (JOCTET)GETJOCTET(put_buffer >> put_bits); \ - *buffer++ = c; \ - if (c == 0xFF) /* need to stuff a zero byte? */ \ - *buffer++ = 0; \ -} - -#define PUT_BITS(code, size) { \ - put_bits += size; \ - put_buffer = (put_buffer << size) | code; \ -} - -#if SIZEOF_SIZE_T != 8 && !defined(_WIN64) - -#define CHECKBUF15() { \ - if (put_bits > 15) { \ - EMIT_BYTE() \ - EMIT_BYTE() \ +/* Output byte b and, speculatively, an additional 0 byte. 0xFF must be + * encoded as 0xFF 0x00, so the output buffer pointer is advanced by 2 if the + * byte is 0xFF. Otherwise, the output buffer pointer is advanced by 1, and + * the speculative 0 byte will be overwritten by the next byte. + */ +#define EMIT_BYTE(b) { \ + buffer[0] = (JOCTET)(b); \ + buffer[1] = 0; \ + buffer -= -2 + ((JOCTET)(b) < 0xFF); \ +} + +/* Output the entire bit buffer. If there are no 0xFF bytes in it, then write + * directly to the output buffer. Otherwise, use the EMIT_BYTE() macro to + * encode 0xFF as 0xFF 0x00. + */ +#if BIT_BUF_SIZE == 64 + +#define FLUSH() { \ + if (put_buffer & 0x8080808080808080 & ~(put_buffer + 0x0101010101010101)) { \ + EMIT_BYTE(put_buffer >> 56) \ + EMIT_BYTE(put_buffer >> 48) \ + EMIT_BYTE(put_buffer >> 40) \ + EMIT_BYTE(put_buffer >> 32) \ + EMIT_BYTE(put_buffer >> 24) \ + EMIT_BYTE(put_buffer >> 16) \ + EMIT_BYTE(put_buffer >> 8) \ + EMIT_BYTE(put_buffer ) \ + } else { \ + buffer[0] = (JOCTET)(put_buffer >> 56); \ + buffer[1] = (JOCTET)(put_buffer >> 48); \ + buffer[2] = (JOCTET)(put_buffer >> 40); \ + buffer[3] = (JOCTET)(put_buffer >> 32); \ + buffer[4] = (JOCTET)(put_buffer >> 24); \ + buffer[5] = (JOCTET)(put_buffer >> 16); \ + buffer[6] = (JOCTET)(put_buffer >> 8); \ + buffer[7] = (JOCTET)(put_buffer); \ + buffer += 8; \ } \ } -#endif - -#define CHECKBUF31() { \ - if (put_bits > 31) { \ - EMIT_BYTE() \ - EMIT_BYTE() \ - EMIT_BYTE() \ - EMIT_BYTE() \ - } \ -} +#else -#define CHECKBUF47() { \ - if (put_bits > 47) { \ - EMIT_BYTE() \ - EMIT_BYTE() \ - EMIT_BYTE() \ - EMIT_BYTE() \ - EMIT_BYTE() \ - EMIT_BYTE() \ +#define FLUSH() { \ + if (put_buffer & 0x80808080 & ~(put_buffer + 0x01010101)) { \ + EMIT_BYTE(put_buffer >> 24) \ + EMIT_BYTE(put_buffer >> 16) \ + EMIT_BYTE(put_buffer >> 8) \ + EMIT_BYTE(put_buffer ) \ + } else { \ + buffer[0] = (JOCTET)(put_buffer >> 24); \ + buffer[1] = (JOCTET)(put_buffer >> 16); \ + buffer[2] = (JOCTET)(put_buffer >> 8); \ + buffer[3] = (JOCTET)(put_buffer); \ + buffer += 4; \ } \ } -#if !defined(_WIN32) && !defined(SIZEOF_SIZE_T) -#error Cannot determine word size #endif -#if SIZEOF_SIZE_T == 8 || defined(_WIN64) - -#define EMIT_BITS(code, size) { \ - CHECKBUF47() \ - PUT_BITS(code, size) \ -} - -#define EMIT_CODE(code, size) { \ - temp2 &= (((JLONG)1) << nbits) - 1; \ - CHECKBUF31() \ - PUT_BITS(code, size) \ - PUT_BITS(temp2, nbits) \ +/* Fill the bit buffer to capacity with the leading bits from code, then output + * the bit buffer and put the remaining bits from code into the bit buffer. + */ +#define PUT_AND_FLUSH(code, size) { \ + put_buffer = (put_buffer << (size + free_bits)) | (code >> -free_bits); \ + FLUSH() \ + free_bits += BIT_BUF_SIZE; \ + put_buffer = code; \ } -#else - -#define EMIT_BITS(code, size) { \ - PUT_BITS(code, size) \ - CHECKBUF15() \ +/* Insert code into the bit buffer and output the bit buffer if needed. + * NOTE: We can't flush with free_bits == 0, since the left shift in + * PUT_AND_FLUSH() would have undefined behavior. + */ +#define PUT_BITS(code, size) { \ + free_bits -= size; \ + if (free_bits < 0) \ + PUT_AND_FLUSH(code, size) \ + else \ + put_buffer = (put_buffer << size) | code; \ } -#define EMIT_CODE(code, size) { \ - temp2 &= (((JLONG)1) << nbits) - 1; \ - PUT_BITS(code, size) \ - CHECKBUF15() \ - PUT_BITS(temp2, nbits) \ - CHECKBUF15() \ +#define PUT_CODE(code, size) { \ + temp &= (((JLONG)1) << nbits) - 1; \ + temp |= code << nbits; \ + nbits += size; \ + PUT_BITS(temp, nbits) \ } -#endif - /* Although it is exceedingly rare, it is possible for a Huffman-encoded * coefficient block to be larger than the 128-byte unencoded block. For each @@ -444,6 +473,7 @@ #define STORE_BUFFER() { \ if (localbuf) { \ + size_t bytes, bytestocopy; \ bytes = buffer - _buffer; \ buffer = _buffer; \ while (bytes > 0) { \ @@ -466,20 +496,46 @@ LOCAL(boolean) flush_bits(working_state *state) { - JOCTET _buffer[BUFSIZE], *buffer; - size_t put_buffer; int put_bits; - size_t bytes, bytestocopy; int localbuf = 0; + JOCTET _buffer[BUFSIZE], *buffer, temp; + simd_bit_buf_type put_buffer; int put_bits; + int localbuf = 0; + + if (state->simd) { +#if defined(__aarch64__) && !defined(NEON_INTRINSICS) + put_bits = state->cur.free_bits; +#else + put_bits = SIMD_BIT_BUF_SIZE - state->cur.free_bits; +#endif + put_buffer = state->cur.put_buffer.simd; + } else { + put_bits = BIT_BUF_SIZE - state->cur.free_bits; + put_buffer = state->cur.put_buffer.c; + } - put_buffer = state->cur.put_buffer; - put_bits = state->cur.put_bits; LOAD_BUFFER() - /* fill any partial byte with ones */ - PUT_BITS(0x7F, 7) - while (put_bits >= 8) EMIT_BYTE() + while (put_bits >= 8) { + put_bits -= 8; + temp = (JOCTET)(put_buffer >> put_bits); + EMIT_BYTE(temp) + } + if (put_bits) { + /* fill partial byte with ones */ + temp = (JOCTET)((put_buffer << (8 - put_bits)) | (0xFF >> put_bits)); + EMIT_BYTE(temp) + } - state->cur.put_buffer = 0; /* and reset bit-buffer to empty */ - state->cur.put_bits = 0; + if (state->simd) { /* and reset bit buffer to empty */ + state->cur.put_buffer.simd = 0; +#if defined(__aarch64__) && !defined(NEON_INTRINSICS) + state->cur.free_bits = 0; +#else + state->cur.free_bits = SIMD_BIT_BUF_SIZE; +#endif + } else { + state->cur.put_buffer.c = 0; + state->cur.free_bits = BIT_BUF_SIZE; + } STORE_BUFFER() return TRUE; @@ -493,7 +549,7 @@ c_derived_tbl *dctbl, c_derived_tbl *actbl) { JOCTET _buffer[BUFSIZE], *buffer; - size_t bytes, bytestocopy; int localbuf = 0; + int localbuf = 0; LOAD_BUFFER() @@ -509,53 +565,41 @@ encode_one_block(working_state *state, JCOEFPTR block, int last_dc_val, c_derived_tbl *dctbl, c_derived_tbl *actbl) { - int temp, temp2, temp3; - int nbits; - int r, code, size; + int temp, nbits, free_bits; + bit_buf_type put_buffer; JOCTET _buffer[BUFSIZE], *buffer; - size_t put_buffer; int put_bits; - int code_0xf0 = actbl->ehufco[0xf0], size_0xf0 = actbl->ehufsi[0xf0]; - size_t bytes, bytestocopy; int localbuf = 0; + int localbuf = 0; - put_buffer = state->cur.put_buffer; - put_bits = state->cur.put_bits; + free_bits = state->cur.free_bits; + put_buffer = state->cur.put_buffer.c; LOAD_BUFFER() /* Encode the DC coefficient difference per section F.1.2.1 */ - temp = temp2 = block[0] - last_dc_val; + temp = block[0] - last_dc_val; /* This is a well-known technique for obtaining the absolute value without a * branch. It is derived from an assembly language technique presented in * "How to Optimize for the Pentium Processors", Copyright (c) 1996, 1997 by - * Agner Fog. + * Agner Fog. This code assumes we are on a two's complement machine. */ - temp3 = temp >> (CHAR_BIT * sizeof(int) - 1); - temp ^= temp3; - temp -= temp3; - - /* For a negative input, want temp2 = bitwise complement of abs(input) */ - /* This code assumes we are on a two's complement machine */ - temp2 += temp3; + nbits = temp >> (CHAR_BIT * sizeof(int) - 1); + temp += nbits; + nbits ^= temp; /* Find the number of bits needed for the magnitude of the coefficient */ - nbits = JPEG_NBITS(temp); + nbits = JPEG_NBITS(nbits); - /* Emit the Huffman-coded symbol for the number of bits */ - code = dctbl->ehufco[nbits]; - size = dctbl->ehufsi[nbits]; - EMIT_BITS(code, size) - - /* Mask off any extra bits in code */ - temp2 &= (((JLONG)1) << nbits) - 1; - - /* Emit that number of bits of the value, if positive, */ - /* or the complement of its magnitude, if negative. */ - EMIT_BITS(temp2, nbits) + /* Emit the Huffman-coded symbol for the number of bits. + * Emit that number of bits of the value, if positive, + * or the complement of its magnitude, if negative. + */ + PUT_CODE(dctbl->ehufco[nbits], dctbl->ehufsi[nbits]) /* Encode the AC coefficients per section F.1.2.2 */ - r = 0; /* r = run length of zeros */ + { + int r = 0; /* r = run length of zeros */ /* Manually unroll the k loop to eliminate the counter variable. This * improves performance greatly on systems with a limited number of @@ -563,51 +607,46 @@ */ #define kloop(jpeg_natural_order_of_k) { \ if ((temp = block[jpeg_natural_order_of_k]) == 0) { \ - r++; \ + r += 16; \ } else { \ - temp2 = temp; \ /* Branch-less absolute value, bitwise complement, etc., same as above */ \ - temp3 = temp >> (CHAR_BIT * sizeof(int) - 1); \ - temp ^= temp3; \ - temp -= temp3; \ - temp2 += temp3; \ - nbits = JPEG_NBITS_NONZERO(temp); \ + nbits = temp >> (CHAR_BIT * sizeof(int) - 1); \ + temp += nbits; \ + nbits ^= temp; \ + nbits = JPEG_NBITS_NONZERO(nbits); \ /* if run length > 15, must emit special run-length-16 codes (0xF0) */ \ - while (r > 15) { \ - EMIT_BITS(code_0xf0, size_0xf0) \ - r -= 16; \ + while (r >= 16 * 16) { \ + r -= 16 * 16; \ + PUT_BITS(actbl->ehufco[0xf0], actbl->ehufsi[0xf0]) \ } \ /* Emit Huffman symbol for run length / number of bits */ \ - temp3 = (r << 4) + nbits; \ - code = actbl->ehufco[temp3]; \ - size = actbl->ehufsi[temp3]; \ - EMIT_CODE(code, size) \ + r += nbits; \ + PUT_CODE(actbl->ehufco[r], actbl->ehufsi[r]) \ r = 0; \ } \ } - /* One iteration for each value in jpeg_natural_order[] */ - kloop(1); kloop(8); kloop(16); kloop(9); kloop(2); kloop(3); - kloop(10); kloop(17); kloop(24); kloop(32); kloop(25); kloop(18); - kloop(11); kloop(4); kloop(5); kloop(12); kloop(19); kloop(26); - kloop(33); kloop(40); kloop(48); kloop(41); kloop(34); kloop(27); - kloop(20); kloop(13); kloop(6); kloop(7); kloop(14); kloop(21); - kloop(28); kloop(35); kloop(42); kloop(49); kloop(56); kloop(57); - kloop(50); kloop(43); kloop(36); kloop(29); kloop(22); kloop(15); - kloop(23); kloop(30); kloop(37); kloop(44); kloop(51); kloop(58); - kloop(59); kloop(52); kloop(45); kloop(38); kloop(31); kloop(39); - kloop(46); kloop(53); kloop(60); kloop(61); kloop(54); kloop(47); - kloop(55); kloop(62); kloop(63); - - /* If the last coef(s) were zero, emit an end-of-block code */ - if (r > 0) { - code = actbl->ehufco[0]; - size = actbl->ehufsi[0]; - EMIT_BITS(code, size) + /* One iteration for each value in jpeg_natural_order[] */ + kloop(1); kloop(8); kloop(16); kloop(9); kloop(2); kloop(3); + kloop(10); kloop(17); kloop(24); kloop(32); kloop(25); kloop(18); + kloop(11); kloop(4); kloop(5); kloop(12); kloop(19); kloop(26); + kloop(33); kloop(40); kloop(48); kloop(41); kloop(34); kloop(27); + kloop(20); kloop(13); kloop(6); kloop(7); kloop(14); kloop(21); + kloop(28); kloop(35); kloop(42); kloop(49); kloop(56); kloop(57); + kloop(50); kloop(43); kloop(36); kloop(29); kloop(22); kloop(15); + kloop(23); kloop(30); kloop(37); kloop(44); kloop(51); kloop(58); + kloop(59); kloop(52); kloop(45); kloop(38); kloop(31); kloop(39); + kloop(46); kloop(53); kloop(60); kloop(61); kloop(54); kloop(47); + kloop(55); kloop(62); kloop(63); + + /* If the last coef(s) were zero, emit an end-of-block code */ + if (r > 0) { + PUT_BITS(actbl->ehufco[0], actbl->ehufsi[0]) + } } - state->cur.put_buffer = put_buffer; - state->cur.put_bits = put_bits; + state->cur.put_buffer.c = put_buffer; + state->cur.free_bits = free_bits; STORE_BUFFER() return TRUE; @@ -654,8 +693,9 @@ /* Load up working state */ state.next_output_byte = cinfo->dest->next_output_byte; state.free_in_buffer = cinfo->dest->free_in_buffer; - ASSIGN_STATE(state.cur, entropy->saved); + state.cur = entropy->saved; state.cinfo = cinfo; + state.simd = entropy->simd; /* Emit restart marker if needed */ if (cinfo->restart_interval) { @@ -694,7 +734,7 @@ /* Completed MCU, so update state */ cinfo->dest->next_output_byte = state.next_output_byte; cinfo->dest->free_in_buffer = state.free_in_buffer; - ASSIGN_STATE(entropy->saved, state.cur); + entropy->saved = state.cur; /* Update restart-interval state too */ if (cinfo->restart_interval) { @@ -723,8 +763,9 @@ /* Load up working state ... flush_bits needs it */ state.next_output_byte = cinfo->dest->next_output_byte; state.free_in_buffer = cinfo->dest->free_in_buffer; - ASSIGN_STATE(state.cur, entropy->saved); + state.cur = entropy->saved; state.cinfo = cinfo; + state.simd = entropy->simd; /* Flush out the last data */ if (!flush_bits(&state)) @@ -733,7 +774,7 @@ /* Update state */ cinfo->dest->next_output_byte = state.next_output_byte; cinfo->dest->free_in_buffer = state.free_in_buffer; - ASSIGN_STATE(entropy->saved, state.cur); + entropy->saved = state.cur; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jcinit.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jcinit.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jcinit.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jcinit.c 2022-11-11 15:29:17.000000000 +0800 @@ -1,8 +1,10 @@ /* * jcinit.c * + * This file was part of the Independent JPEG Group's software: * Copyright (C) 1991-1997, Thomas G. Lane. - * This file is part of the Independent JPEG Group's software. + * libjpeg-turbo Modifications: + * Copyright (C) 2020, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -19,6 +21,7 @@ #define JPEG_INTERNALS #include "jinclude.h" #include "jpeglib.h" +#include "jpegcomp.h" /* diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jcmaster.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jcmaster.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jcmaster.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jcmaster.c 2022-11-11 15:29:17.000000000 +0800 @@ -493,7 +493,7 @@ master->pass_type = output_pass; master->pass_number++; #endif - /*FALLTHROUGH*/ + FALLTHROUGH /*FALLTHROUGH*/ case output_pass: /* Do a data-output pass. */ /* We need not repeat per-scan setup if prior optimization pass did it. */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jconfig.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jconfig.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jconfig.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jconfig.h 2022-11-11 15:29:17.000000000 +0800 @@ -2,9 +2,9 @@ #define JPEG_LIB_VERSION 80 -#define LIBJPEG_TURBO_VERSION 2.0.5 +#define LIBJPEG_TURBO_VERSION 2.1.1 -#define LIBJPEG_TURBO_VERSION_NUMBER 2000005 +#define LIBJPEG_TURBO_VERSION_NUMBER 2001001 #define C_ARITH_CODING_SUPPORTED 1 diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jconfig.h.in qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jconfig.h.in --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jconfig.h.in 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jconfig.h.in 2022-11-11 15:29:17.000000000 +0800 @@ -61,11 +61,6 @@ unsigned. */ #cmakedefine RIGHT_SHIFT_IS_UNSIGNED 1 -/* Define to 1 if type `char' is unsigned and you are not using gcc. */ -#ifndef __CHAR_UNSIGNED__ - #cmakedefine __CHAR_UNSIGNED__ 1 -#endif - /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jconfigint.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jconfigint.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jconfigint.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jconfigint.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,19 @@ +// Definitions for building in Qt source, ref. src/jconfigint.h.in + +#include <stdint.h> + +#define BUILD "" + +#define INLINE inline + +#define PACKAGE_NAME "libjpeg-turbo" + +#define VERSION "2.1.1" + +#if SIZE_MAX == 0xffffffff +#define SIZEOF_SIZE_T 4 +#elif SIZE_MAX == 0xffffffffffffffff +#define SIZEOF_SIZE_T 8 +#endif + +#define FALLTHROUGH diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jconfigint.h.in qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jconfigint.h.in --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jconfigint.h.in 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jconfigint.h.in 2022-11-11 15:29:17.000000000 +0800 @@ -32,3 +32,13 @@ #define HAVE_BITSCANFORWARD #endif #endif + +#if defined(__has_attribute) +#if __has_attribute(fallthrough) +#define FALLTHROUGH __attribute__((fallthrough)); +#else +#define FALLTHROUGH +#endif +#else +#define FALLTHROUGH +#endif diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jcphuff.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jcphuff.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jcphuff.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jcphuff.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,8 +4,10 @@ * This file was part of the Independent JPEG Group's software: * Copyright (C) 1995-1997, Thomas G. Lane. * libjpeg-turbo Modifications: - * Copyright (C) 2011, 2015, 2018, D. R. Commander. + * Copyright (C) 2011, 2015, 2018, 2021, D. R. Commander. * Copyright (C) 2016, 2018, Matthieu Darbois. + * Copyright (C) 2020, Arm Limited. + * Copyright (C) 2021, Alex Richardson. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -43,23 +45,28 @@ * memory footprint by 64k, which is important for some mobile applications * that create many isolated instances of libjpeg-turbo (web browsers, for * instance.) This may improve performance on some mobile platforms as well. - * This feature is enabled by default only on ARM processors, because some x86 + * This feature is enabled by default only on Arm processors, because some x86 * chips have a slow implementation of bsr, and the use of clz/bsr cannot be * shown to have a significant performance impact even on the x86 chips that - * have a fast implementation of it. When building for ARMv6, you can + * have a fast implementation of it. When building for Armv6, you can * explicitly disable the use of clz/bsr by adding -mthumb to the compiler * flags (this defines __thumb__). */ /* NOTE: Both GCC and Clang define __GNUC__ */ -#if defined(__GNUC__) && (defined(__arm__) || defined(__aarch64__)) +#if (defined(__GNUC__) && (defined(__arm__) || defined(__aarch64__))) || \ + defined(_M_ARM) || defined(_M_ARM64) #if !defined(__thumb__) || defined(__thumb2__) #define USE_CLZ_INTRINSIC #endif #endif #ifdef USE_CLZ_INTRINSIC +#if defined(_MSC_VER) && !defined(__clang__) +#define JPEG_NBITS_NONZERO(x) (32 - _CountLeadingZeros(x)) +#else #define JPEG_NBITS_NONZERO(x) (32 - __builtin_clz(x)) +#endif #define JPEG_NBITS(x) (x ? JPEG_NBITS_NONZERO(x) : 0) #else #include "jpeg_nbits_table.h" @@ -169,24 +176,26 @@ METHODDEF(int) count_zeroes(size_t *x) { - int result; #if defined(HAVE_BUILTIN_CTZL) + int result; result = __builtin_ctzl(*x); *x >>= result; #elif defined(HAVE_BITSCANFORWARD64) + unsigned long result; _BitScanForward64(&result, *x); *x >>= result; #elif defined(HAVE_BITSCANFORWARD) + unsigned long result; _BitScanForward(&result, *x); *x >>= result; #else - result = 0; + int result = 0; while ((*x & 1) == 0) { ++result; *x >>= 1; } #endif - return result; + return (int)result; } @@ -672,7 +681,7 @@ emit_restart(entropy, entropy->next_restart_num); #ifdef WITH_SIMD - cvalue = values = (JCOEF *)PAD((size_t)values_unaligned, 16); + cvalue = values = (JCOEF *)PAD((JUINTPTR)values_unaligned, 16); #else /* Not using SIMD, so alignment is not needed */ cvalue = values = values_unaligned; @@ -860,7 +869,7 @@ #define ENCODE_COEFS_AC_REFINE(label) { \ while (zerobits) { \ - int idx = count_zeroes(&zerobits); \ + idx = count_zeroes(&zerobits); \ r += idx; \ cabsvalue += idx; \ signbits >>= idx; \ @@ -917,7 +926,7 @@ encode_mcu_AC_refine(j_compress_ptr cinfo, JBLOCKROW *MCU_data) { phuff_entropy_ptr entropy = (phuff_entropy_ptr)cinfo->entropy; - register int temp, r; + register int temp, r, idx; char *BR_buffer; unsigned int BR; int Sl = cinfo->Se - cinfo->Ss + 1; @@ -937,7 +946,7 @@ emit_restart(entropy, entropy->next_restart_num); #ifdef WITH_SIMD - cabsvalue = absvalues = (JCOEF *)PAD((size_t)absvalues_unaligned, 16); + cabsvalue = absvalues = (JCOEF *)PAD((JUINTPTR)absvalues_unaligned, 16); #else /* Not using SIMD, so alignment is not needed */ cabsvalue = absvalues = absvalues_unaligned; @@ -968,7 +977,7 @@ if (zerobits) { int diff = ((absvalues + DCTSIZE2 / 2) - cabsvalue); - int idx = count_zeroes(&zerobits); + idx = count_zeroes(&zerobits); signbits >>= idx; idx += diff; r += idx; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jcsample.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jcsample.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jcsample.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jcsample.c 2022-11-11 15:29:17.000000000 +0800 @@ -6,7 +6,7 @@ * libjpeg-turbo Modifications: * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB * Copyright (C) 2014, MIPS Technologies, Inc., California. - * Copyright (C) 2015, D. R. Commander. + * Copyright (C) 2015, 2019, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -103,7 +103,7 @@ if (numcols > 0) { for (row = 0; row < num_rows; row++) { ptr = image_data[row] + input_cols; - pixval = ptr[-1]; /* don't need GETJSAMPLE() here */ + pixval = ptr[-1]; for (count = numcols; count > 0; count--) *ptr++ = pixval; } @@ -174,7 +174,7 @@ for (v = 0; v < v_expand; v++) { inptr = input_data[inrow + v] + outcol_h; for (h = 0; h < h_expand; h++) { - outvalue += (JLONG)GETJSAMPLE(*inptr++); + outvalue += (JLONG)(*inptr++); } } *outptr++ = (JSAMPLE)((outvalue + numpix2) / numpix); @@ -237,8 +237,7 @@ inptr = input_data[outrow]; bias = 0; /* bias = 0,1,0,1,... for successive samples */ for (outcol = 0; outcol < output_cols; outcol++) { - *outptr++ = - (JSAMPLE)((GETJSAMPLE(*inptr) + GETJSAMPLE(inptr[1]) + bias) >> 1); + *outptr++ = (JSAMPLE)((inptr[0] + inptr[1] + bias) >> 1); bias ^= 1; /* 0=>1, 1=>0 */ inptr += 2; } @@ -277,8 +276,7 @@ bias = 1; /* bias = 1,2,1,2,... for successive samples */ for (outcol = 0; outcol < output_cols; outcol++) { *outptr++ = - (JSAMPLE)((GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[1]) + - GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[1]) + bias) >> 2); + (JSAMPLE)((inptr0[0] + inptr0[1] + inptr1[0] + inptr1[1] + bias) >> 2); bias ^= 3; /* 1=>2, 2=>1 */ inptr0 += 2; inptr1 += 2; } @@ -337,33 +335,25 @@ below_ptr = input_data[inrow + 2]; /* Special case for first column: pretend column -1 is same as column 0 */ - membersum = GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[1]) + - GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[1]); - neighsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(above_ptr[1]) + - GETJSAMPLE(*below_ptr) + GETJSAMPLE(below_ptr[1]) + - GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[2]) + - GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[2]); + membersum = inptr0[0] + inptr0[1] + inptr1[0] + inptr1[1]; + neighsum = above_ptr[0] + above_ptr[1] + below_ptr[0] + below_ptr[1] + + inptr0[0] + inptr0[2] + inptr1[0] + inptr1[2]; neighsum += neighsum; - neighsum += GETJSAMPLE(*above_ptr) + GETJSAMPLE(above_ptr[2]) + - GETJSAMPLE(*below_ptr) + GETJSAMPLE(below_ptr[2]); + neighsum += above_ptr[0] + above_ptr[2] + below_ptr[0] + below_ptr[2]; membersum = membersum * memberscale + neighsum * neighscale; *outptr++ = (JSAMPLE)((membersum + 32768) >> 16); inptr0 += 2; inptr1 += 2; above_ptr += 2; below_ptr += 2; for (colctr = output_cols - 2; colctr > 0; colctr--) { /* sum of pixels directly mapped to this output element */ - membersum = GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[1]) + - GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[1]); + membersum = inptr0[0] + inptr0[1] + inptr1[0] + inptr1[1]; /* sum of edge-neighbor pixels */ - neighsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(above_ptr[1]) + - GETJSAMPLE(*below_ptr) + GETJSAMPLE(below_ptr[1]) + - GETJSAMPLE(inptr0[-1]) + GETJSAMPLE(inptr0[2]) + - GETJSAMPLE(inptr1[-1]) + GETJSAMPLE(inptr1[2]); + neighsum = above_ptr[0] + above_ptr[1] + below_ptr[0] + below_ptr[1] + + inptr0[-1] + inptr0[2] + inptr1[-1] + inptr1[2]; /* The edge-neighbors count twice as much as corner-neighbors */ neighsum += neighsum; /* Add in the corner-neighbors */ - neighsum += GETJSAMPLE(above_ptr[-1]) + GETJSAMPLE(above_ptr[2]) + - GETJSAMPLE(below_ptr[-1]) + GETJSAMPLE(below_ptr[2]); + neighsum += above_ptr[-1] + above_ptr[2] + below_ptr[-1] + below_ptr[2]; /* form final output scaled up by 2^16 */ membersum = membersum * memberscale + neighsum * neighscale; /* round, descale and output it */ @@ -372,15 +362,11 @@ } /* Special case for last column */ - membersum = GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[1]) + - GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[1]); - neighsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(above_ptr[1]) + - GETJSAMPLE(*below_ptr) + GETJSAMPLE(below_ptr[1]) + - GETJSAMPLE(inptr0[-1]) + GETJSAMPLE(inptr0[1]) + - GETJSAMPLE(inptr1[-1]) + GETJSAMPLE(inptr1[1]); + membersum = inptr0[0] + inptr0[1] + inptr1[0] + inptr1[1]; + neighsum = above_ptr[0] + above_ptr[1] + below_ptr[0] + below_ptr[1] + + inptr0[-1] + inptr0[1] + inptr1[-1] + inptr1[1]; neighsum += neighsum; - neighsum += GETJSAMPLE(above_ptr[-1]) + GETJSAMPLE(above_ptr[1]) + - GETJSAMPLE(below_ptr[-1]) + GETJSAMPLE(below_ptr[1]); + neighsum += above_ptr[-1] + above_ptr[1] + below_ptr[-1] + below_ptr[1]; membersum = membersum * memberscale + neighsum * neighscale; *outptr = (JSAMPLE)((membersum + 32768) >> 16); @@ -429,21 +415,18 @@ below_ptr = input_data[outrow + 1]; /* Special case for first column */ - colsum = GETJSAMPLE(*above_ptr++) + GETJSAMPLE(*below_ptr++) + - GETJSAMPLE(*inptr); - membersum = GETJSAMPLE(*inptr++); - nextcolsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(*below_ptr) + - GETJSAMPLE(*inptr); + colsum = (*above_ptr++) + (*below_ptr++) + inptr[0]; + membersum = *inptr++; + nextcolsum = above_ptr[0] + below_ptr[0] + inptr[0]; neighsum = colsum + (colsum - membersum) + nextcolsum; membersum = membersum * memberscale + neighsum * neighscale; *outptr++ = (JSAMPLE)((membersum + 32768) >> 16); lastcolsum = colsum; colsum = nextcolsum; for (colctr = output_cols - 2; colctr > 0; colctr--) { - membersum = GETJSAMPLE(*inptr++); + membersum = *inptr++; above_ptr++; below_ptr++; - nextcolsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(*below_ptr) + - GETJSAMPLE(*inptr); + nextcolsum = above_ptr[0] + below_ptr[0] + inptr[0]; neighsum = lastcolsum + (colsum - membersum) + nextcolsum; membersum = membersum * memberscale + neighsum * neighscale; *outptr++ = (JSAMPLE)((membersum + 32768) >> 16); @@ -451,7 +434,7 @@ } /* Special case for last column */ - membersum = GETJSAMPLE(*inptr); + membersum = *inptr; neighsum = lastcolsum + (colsum - membersum) + colsum; membersum = membersum * memberscale + neighsum * neighscale; *outptr = (JSAMPLE)((membersum + 32768) >> 16); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jctrans.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jctrans.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jctrans.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jctrans.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,8 +4,8 @@ * This file was part of the Independent JPEG Group's software: * Copyright (C) 1995-1998, Thomas G. Lane. * Modified 2000-2009 by Guido Vollbeding. - * It was modified by The libjpeg-turbo Project to include only code relevant - * to libjpeg-turbo. + * libjpeg-turbo Modifications: + * Copyright (C) 2020, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -17,6 +17,7 @@ #define JPEG_INTERNALS #include "jinclude.h" #include "jpeglib.h" +#include "jpegcomp.h" /* Forward declarations */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdapimin.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdapimin.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdapimin.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdapimin.c 2022-11-11 15:29:17.000000000 +0800 @@ -23,6 +23,7 @@ #include "jinclude.h" #include "jpeglib.h" #include "jdmaster.h" +#include "jconfigint.h" /* @@ -308,7 +309,7 @@ /* Initialize application's data source module */ (*cinfo->src->init_source) (cinfo); cinfo->global_state = DSTATE_INHEADER; - /*FALLTHROUGH*/ + FALLTHROUGH /*FALLTHROUGH*/ case DSTATE_INHEADER: retcode = (*cinfo->inputctl->consume_input) (cinfo); if (retcode == JPEG_REACHED_SOS) { /* Found SOS, prepare to decompress */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdapistd.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdapistd.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdapistd.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdapistd.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * This file was part of the Independent JPEG Group's software: * Copyright (C) 1994-1996, Thomas G. Lane. * libjpeg-turbo Modifications: - * Copyright (C) 2010, 2015-2018, D. R. Commander. + * Copyright (C) 2010, 2015-2020, D. R. Commander. * Copyright (C) 2015, Google, Inc. * For conditions of distribution and use, see the accompanying README.ijg * file. @@ -21,6 +21,8 @@ #include "jinclude.h" #include "jdmainct.h" #include "jdcoefct.h" +#include "jdmaster.h" +#include "jdmerge.h" #include "jdsample.h" #include "jmemsys.h" @@ -316,6 +318,10 @@ read_and_discard_scanlines(j_decompress_ptr cinfo, JDIMENSION num_lines) { JDIMENSION n; + my_master_ptr master = (my_master_ptr)cinfo->master; + JSAMPLE dummy_sample[1] = { 0 }; + JSAMPROW dummy_row = dummy_sample; + JSAMPARRAY scanlines = NULL; void (*color_convert) (j_decompress_ptr cinfo, JSAMPIMAGE input_buf, JDIMENSION input_row, JSAMPARRAY output_buf, int num_rows) = NULL; @@ -325,6 +331,10 @@ if (cinfo->cconvert && cinfo->cconvert->color_convert) { color_convert = cinfo->cconvert->color_convert; cinfo->cconvert->color_convert = noop_convert; + /* This just prevents UBSan from complaining about adding 0 to a NULL + * pointer. The pointer isn't actually used. + */ + scanlines = &dummy_row; } if (cinfo->cquantize && cinfo->cquantize->color_quantize) { @@ -332,8 +342,13 @@ cinfo->cquantize->color_quantize = noop_quantize; } + if (master->using_merged_upsample && cinfo->max_v_samp_factor == 2) { + my_merged_upsample_ptr upsample = (my_merged_upsample_ptr)cinfo->upsample; + scanlines = &upsample->spare_row; + } + for (n = 0; n < num_lines; n++) - jpeg_read_scanlines(cinfo, NULL, 1); + jpeg_read_scanlines(cinfo, scanlines, 1); if (color_convert) cinfo->cconvert->color_convert = color_convert; @@ -353,6 +368,12 @@ { JDIMENSION rows_left; my_main_ptr main_ptr = (my_main_ptr)cinfo->main; + my_master_ptr master = (my_master_ptr)cinfo->master; + + if (master->using_merged_upsample && cinfo->max_v_samp_factor == 2) { + read_and_discard_scanlines(cinfo, rows); + return; + } /* Increment the counter to the next row group after the skipped rows. */ main_ptr->rowgroup_ctr += rows / cinfo->max_v_samp_factor; @@ -382,21 +403,27 @@ { my_main_ptr main_ptr = (my_main_ptr)cinfo->main; my_coef_ptr coef = (my_coef_ptr)cinfo->coef; + my_master_ptr master = (my_master_ptr)cinfo->master; my_upsample_ptr upsample = (my_upsample_ptr)cinfo->upsample; JDIMENSION i, x; int y; JDIMENSION lines_per_iMCU_row, lines_left_in_iMCU_row, lines_after_iMCU_row; JDIMENSION lines_to_skip, lines_to_read; + /* Two-pass color quantization is not supported. */ + if (cinfo->quantize_colors && cinfo->two_pass_quantize) + ERREXIT(cinfo, JERR_NOTIMPL); + if (cinfo->global_state != DSTATE_SCANNING) ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state); /* Do not skip past the bottom of the image. */ if (cinfo->output_scanline + num_lines >= cinfo->output_height) { + num_lines = cinfo->output_height - cinfo->output_scanline; cinfo->output_scanline = cinfo->output_height; (*cinfo->inputctl->finish_input_pass) (cinfo); cinfo->inputctl->eoi_reached = TRUE; - return cinfo->output_height - cinfo->output_scanline; + return num_lines; } if (num_lines == 0) @@ -445,8 +472,10 @@ main_ptr->buffer_full = FALSE; main_ptr->rowgroup_ctr = 0; main_ptr->context_state = CTX_PREPARE_FOR_IMCU; - upsample->next_row_out = cinfo->max_v_samp_factor; - upsample->rows_to_go = cinfo->output_height - cinfo->output_scanline; + if (!master->using_merged_upsample) { + upsample->next_row_out = cinfo->max_v_samp_factor; + upsample->rows_to_go = cinfo->output_height - cinfo->output_scanline; + } } /* Skipping is much simpler when context rows are not required. */ @@ -458,8 +487,10 @@ cinfo->output_scanline += lines_left_in_iMCU_row; main_ptr->buffer_full = FALSE; main_ptr->rowgroup_ctr = 0; - upsample->next_row_out = cinfo->max_v_samp_factor; - upsample->rows_to_go = cinfo->output_height - cinfo->output_scanline; + if (!master->using_merged_upsample) { + upsample->next_row_out = cinfo->max_v_samp_factor; + upsample->rows_to_go = cinfo->output_height - cinfo->output_scanline; + } } } @@ -494,7 +525,8 @@ cinfo->output_iMCU_row += lines_to_skip / lines_per_iMCU_row; increment_simple_rowgroup_ctr(cinfo, lines_to_read); } - upsample->rows_to_go = cinfo->output_height - cinfo->output_scanline; + if (!master->using_merged_upsample) + upsample->rows_to_go = cinfo->output_height - cinfo->output_scanline; return num_lines; } @@ -506,6 +538,8 @@ * decoded coefficients. This is ~5% faster for large subsets, but * it's tough to tell a difference for smaller images. */ + if (!cinfo->entropy->insufficient_data) + cinfo->master->last_good_iMCU_row = cinfo->input_iMCU_row; (*cinfo->entropy->decode_mcu) (cinfo, NULL); } } @@ -535,7 +569,8 @@ * bit odd, since "rows_to_go" seems to be redundantly keeping track of * output_scanline. */ - upsample->rows_to_go = cinfo->output_height - cinfo->output_scanline; + if (!master->using_merged_upsample) + upsample->rows_to_go = cinfo->output_height - cinfo->output_scanline; /* Always skip the requested number of lines. */ return num_lines; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdarith.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdarith.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdarith.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdarith.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * This file was part of the Independent JPEG Group's software: * Developed 1997-2015 by Guido Vollbeding. * libjpeg-turbo Modifications: - * Copyright (C) 2015-2018, D. R. Commander. + * Copyright (C) 2015-2020, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -80,7 +80,7 @@ if (!(*src->fill_input_buffer) (cinfo)) ERREXIT(cinfo, JERR_CANT_SUSPEND); src->bytes_in_buffer--; - return GETJOCTET(*src->next_input_byte++); + return *src->next_input_byte++; } @@ -665,8 +665,16 @@ for (ci = 0; ci < cinfo->comps_in_scan; ci++) { int coefi, cindex = cinfo->cur_comp_info[ci]->component_index; int *coef_bit_ptr = &cinfo->coef_bits[cindex][0]; + int *prev_coef_bit_ptr = + &cinfo->coef_bits[cindex + cinfo->num_components][0]; if (cinfo->Ss && coef_bit_ptr[0] < 0) /* AC without prior DC scan */ WARNMS2(cinfo, JWRN_BOGUS_PROGRESSION, cindex, 0); + for (coefi = MIN(cinfo->Ss, 1); coefi <= MAX(cinfo->Se, 9); coefi++) { + if (cinfo->input_scan_number > 1) + prev_coef_bit_ptr[coefi] = coef_bit_ptr[coefi]; + else + prev_coef_bit_ptr[coefi] = 0; + } for (coefi = cinfo->Ss; coefi <= cinfo->Se; coefi++) { int expected = (coef_bit_ptr[coefi] < 0) ? 0 : coef_bit_ptr[coefi]; if (cinfo->Ah != expected) @@ -727,6 +735,7 @@ entropy->c = 0; entropy->a = 0; entropy->ct = -16; /* force reading 2 initial bytes to fill C */ + entropy->pub.insufficient_data = FALSE; /* Initialize restart counter */ entropy->restarts_to_go = cinfo->restart_interval; @@ -763,7 +772,7 @@ int *coef_bit_ptr, ci; cinfo->coef_bits = (int (*)[DCTSIZE2]) (*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE, - cinfo->num_components * DCTSIZE2 * + cinfo->num_components * 2 * DCTSIZE2 * sizeof(int)); coef_bit_ptr = &cinfo->coef_bits[0][0]; for (ci = 0; ci < cinfo->num_components; ci++) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdcoefct.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdcoefct.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdcoefct.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdcoefct.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,8 +5,8 @@ * Copyright (C) 1994-1997, Thomas G. Lane. * libjpeg-turbo Modifications: * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB - * Copyright (C) 2010, 2015-2016, D. R. Commander. - * Copyright (C) 2015, Google, Inc. + * Copyright (C) 2010, 2015-2016, 2019-2020, D. R. Commander. + * Copyright (C) 2015, 2020, Google, Inc. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -102,6 +102,8 @@ /* Try to fetch an MCU. Entropy decoder expects buffer to be zeroed. */ jzero_far((void *)coef->MCU_buffer[0], (size_t)(cinfo->blocks_in_MCU * sizeof(JBLOCK))); + if (!cinfo->entropy->insufficient_data) + cinfo->master->last_good_iMCU_row = cinfo->input_iMCU_row; if (!(*cinfo->entropy->decode_mcu) (cinfo, coef->MCU_buffer)) { /* Suspension forced; update state counters and exit */ coef->MCU_vert_offset = yoffset; @@ -227,6 +229,8 @@ } } } + if (!cinfo->entropy->insufficient_data) + cinfo->master->last_good_iMCU_row = cinfo->input_iMCU_row; /* Try to fetch the MCU. */ if (!(*cinfo->entropy->decode_mcu) (cinfo, coef->MCU_buffer)) { /* Suspension forced; update state counters and exit */ @@ -326,19 +330,22 @@ #ifdef BLOCK_SMOOTHING_SUPPORTED /* - * This code applies interblock smoothing as described by section K.8 - * of the JPEG standard: the first 5 AC coefficients are estimated from - * the DC values of a DCT block and its 8 neighboring blocks. + * This code applies interblock smoothing; the first 9 AC coefficients are + * estimated from the DC values of a DCT block and its 24 neighboring blocks. * We apply smoothing only for progressive JPEG decoding, and only if * the coefficients it can estimate are not yet known to full precision. */ -/* Natural-order array positions of the first 5 zigzag-order coefficients */ +/* Natural-order array positions of the first 9 zigzag-order coefficients */ #define Q01_POS 1 #define Q10_POS 8 #define Q20_POS 16 #define Q11_POS 9 #define Q02_POS 2 +#define Q03_POS 3 +#define Q12_POS 10 +#define Q21_POS 17 +#define Q30_POS 24 /* * Determine whether block smoothing is applicable and safe. @@ -356,8 +363,8 @@ int ci, coefi; jpeg_component_info *compptr; JQUANT_TBL *qtable; - int *coef_bits; - int *coef_bits_latch; + int *coef_bits, *prev_coef_bits; + int *coef_bits_latch, *prev_coef_bits_latch; if (!cinfo->progressive_mode || cinfo->coef_bits == NULL) return FALSE; @@ -366,34 +373,47 @@ if (coef->coef_bits_latch == NULL) coef->coef_bits_latch = (int *) (*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE, - cinfo->num_components * + cinfo->num_components * 2 * (SAVED_COEFS * sizeof(int))); coef_bits_latch = coef->coef_bits_latch; + prev_coef_bits_latch = + &coef->coef_bits_latch[cinfo->num_components * SAVED_COEFS]; for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components; ci++, compptr++) { /* All components' quantization values must already be latched. */ if ((qtable = compptr->quant_table) == NULL) return FALSE; - /* Verify DC & first 5 AC quantizers are nonzero to avoid zero-divide. */ + /* Verify DC & first 9 AC quantizers are nonzero to avoid zero-divide. */ if (qtable->quantval[0] == 0 || qtable->quantval[Q01_POS] == 0 || qtable->quantval[Q10_POS] == 0 || qtable->quantval[Q20_POS] == 0 || qtable->quantval[Q11_POS] == 0 || - qtable->quantval[Q02_POS] == 0) + qtable->quantval[Q02_POS] == 0 || + qtable->quantval[Q03_POS] == 0 || + qtable->quantval[Q12_POS] == 0 || + qtable->quantval[Q21_POS] == 0 || + qtable->quantval[Q30_POS] == 0) return FALSE; /* DC values must be at least partly known for all components. */ coef_bits = cinfo->coef_bits[ci]; + prev_coef_bits = cinfo->coef_bits[ci + cinfo->num_components]; if (coef_bits[0] < 0) return FALSE; + coef_bits_latch[0] = coef_bits[0]; /* Block smoothing is helpful if some AC coefficients remain inaccurate. */ - for (coefi = 1; coefi <= 5; coefi++) { + for (coefi = 1; coefi < SAVED_COEFS; coefi++) { + if (cinfo->input_scan_number > 1) + prev_coef_bits_latch[coefi] = prev_coef_bits[coefi]; + else + prev_coef_bits_latch[coefi] = -1; coef_bits_latch[coefi] = coef_bits[coefi]; if (coef_bits[coefi] != 0) smoothing_useful = TRUE; } coef_bits_latch += SAVED_COEFS; + prev_coef_bits_latch += SAVED_COEFS; } return smoothing_useful; @@ -412,17 +432,20 @@ JDIMENSION block_num, last_block_column; int ci, block_row, block_rows, access_rows; JBLOCKARRAY buffer; - JBLOCKROW buffer_ptr, prev_block_row, next_block_row; + JBLOCKROW buffer_ptr, prev_prev_block_row, prev_block_row; + JBLOCKROW next_block_row, next_next_block_row; JSAMPARRAY output_ptr; JDIMENSION output_col; jpeg_component_info *compptr; inverse_DCT_method_ptr inverse_DCT; - boolean first_row, last_row; + boolean change_dc; JCOEF *workspace; int *coef_bits; JQUANT_TBL *quanttbl; - JLONG Q00, Q01, Q02, Q10, Q11, Q20, num; - int DC1, DC2, DC3, DC4, DC5, DC6, DC7, DC8, DC9; + JLONG Q00, Q01, Q02, Q03 = 0, Q10, Q11, Q12 = 0, Q20, Q21 = 0, Q30 = 0, num; + int DC01, DC02, DC03, DC04, DC05, DC06, DC07, DC08, DC09, DC10, DC11, DC12, + DC13, DC14, DC15, DC16, DC17, DC18, DC19, DC20, DC21, DC22, DC23, DC24, + DC25; int Al, pred; /* Keep a local variable to avoid looking it up more than once */ @@ -434,10 +457,10 @@ if (cinfo->input_scan_number == cinfo->output_scan_number) { /* If input is working on current scan, we ordinarily want it to * have completed the current row. But if input scan is DC, - * we want it to keep one row ahead so that next block row's DC + * we want it to keep two rows ahead so that next two block rows' DC * values are up to date. */ - JDIMENSION delta = (cinfo->Ss == 0) ? 1 : 0; + JDIMENSION delta = (cinfo->Ss == 0) ? 2 : 0; if (cinfo->input_iMCU_row > cinfo->output_iMCU_row + delta) break; } @@ -452,34 +475,53 @@ if (!compptr->component_needed) continue; /* Count non-dummy DCT block rows in this iMCU row. */ - if (cinfo->output_iMCU_row < last_iMCU_row) { + if (cinfo->output_iMCU_row < last_iMCU_row - 1) { + block_rows = compptr->v_samp_factor; + access_rows = block_rows * 3; /* this and next two iMCU rows */ + } else if (cinfo->output_iMCU_row < last_iMCU_row) { block_rows = compptr->v_samp_factor; access_rows = block_rows * 2; /* this and next iMCU row */ - last_row = FALSE; } else { /* NB: can't use last_row_height here; it is input-side-dependent! */ block_rows = (int)(compptr->height_in_blocks % compptr->v_samp_factor); if (block_rows == 0) block_rows = compptr->v_samp_factor; access_rows = block_rows; /* this iMCU row only */ - last_row = TRUE; } /* Align the virtual buffer for this component. */ - if (cinfo->output_iMCU_row > 0) { - access_rows += compptr->v_samp_factor; /* prior iMCU row too */ + if (cinfo->output_iMCU_row > 1) { + access_rows += 2 * compptr->v_samp_factor; /* prior two iMCU rows too */ + buffer = (*cinfo->mem->access_virt_barray) + ((j_common_ptr)cinfo, coef->whole_image[ci], + (cinfo->output_iMCU_row - 2) * compptr->v_samp_factor, + (JDIMENSION)access_rows, FALSE); + buffer += 2 * compptr->v_samp_factor; /* point to current iMCU row */ + } else if (cinfo->output_iMCU_row > 0) { buffer = (*cinfo->mem->access_virt_barray) ((j_common_ptr)cinfo, coef->whole_image[ci], (cinfo->output_iMCU_row - 1) * compptr->v_samp_factor, (JDIMENSION)access_rows, FALSE); buffer += compptr->v_samp_factor; /* point to current iMCU row */ - first_row = FALSE; } else { buffer = (*cinfo->mem->access_virt_barray) ((j_common_ptr)cinfo, coef->whole_image[ci], (JDIMENSION)0, (JDIMENSION)access_rows, FALSE); - first_row = TRUE; } - /* Fetch component-dependent info */ - coef_bits = coef->coef_bits_latch + (ci * SAVED_COEFS); + /* Fetch component-dependent info. + * If the current scan is incomplete, then we use the component-dependent + * info from the previous scan. + */ + if (cinfo->output_iMCU_row > cinfo->master->last_good_iMCU_row) + coef_bits = + coef->coef_bits_latch + ((ci + cinfo->num_components) * SAVED_COEFS); + else + coef_bits = coef->coef_bits_latch + (ci * SAVED_COEFS); + + /* We only do DC interpolation if no AC coefficient data is available. */ + change_dc = + coef_bits[1] == -1 && coef_bits[2] == -1 && coef_bits[3] == -1 && + coef_bits[4] == -1 && coef_bits[5] == -1 && coef_bits[6] == -1 && + coef_bits[7] == -1 && coef_bits[8] == -1 && coef_bits[9] == -1; + quanttbl = compptr->quant_table; Q00 = quanttbl->quantval[0]; Q01 = quanttbl->quantval[Q01_POS]; @@ -487,25 +529,51 @@ Q20 = quanttbl->quantval[Q20_POS]; Q11 = quanttbl->quantval[Q11_POS]; Q02 = quanttbl->quantval[Q02_POS]; + if (change_dc) { + Q03 = quanttbl->quantval[Q03_POS]; + Q12 = quanttbl->quantval[Q12_POS]; + Q21 = quanttbl->quantval[Q21_POS]; + Q30 = quanttbl->quantval[Q30_POS]; + } inverse_DCT = cinfo->idct->inverse_DCT[ci]; output_ptr = output_buf[ci]; /* Loop over all DCT blocks to be processed. */ for (block_row = 0; block_row < block_rows; block_row++) { buffer_ptr = buffer[block_row] + cinfo->master->first_MCU_col[ci]; - if (first_row && block_row == 0) + + if (block_row > 0 || cinfo->output_iMCU_row > 0) + prev_block_row = + buffer[block_row - 1] + cinfo->master->first_MCU_col[ci]; + else prev_block_row = buffer_ptr; + + if (block_row > 1 || cinfo->output_iMCU_row > 1) + prev_prev_block_row = + buffer[block_row - 2] + cinfo->master->first_MCU_col[ci]; + else + prev_prev_block_row = prev_block_row; + + if (block_row < block_rows - 1 || cinfo->output_iMCU_row < last_iMCU_row) + next_block_row = + buffer[block_row + 1] + cinfo->master->first_MCU_col[ci]; else - prev_block_row = buffer[block_row - 1]; - if (last_row && block_row == block_rows - 1) next_block_row = buffer_ptr; + + if (block_row < block_rows - 2 || + cinfo->output_iMCU_row < last_iMCU_row - 1) + next_next_block_row = + buffer[block_row + 2] + cinfo->master->first_MCU_col[ci]; else - next_block_row = buffer[block_row + 1]; + next_next_block_row = next_block_row; + /* We fetch the surrounding DC values using a sliding-register approach. - * Initialize all nine here so as to do the right thing on narrow pics. + * Initialize all 25 here so as to do the right thing on narrow pics. */ - DC1 = DC2 = DC3 = (int)prev_block_row[0][0]; - DC4 = DC5 = DC6 = (int)buffer_ptr[0][0]; - DC7 = DC8 = DC9 = (int)next_block_row[0][0]; + DC01 = DC02 = DC03 = DC04 = DC05 = (int)prev_prev_block_row[0][0]; + DC06 = DC07 = DC08 = DC09 = DC10 = (int)prev_block_row[0][0]; + DC11 = DC12 = DC13 = DC14 = DC15 = (int)buffer_ptr[0][0]; + DC16 = DC17 = DC18 = DC19 = DC20 = (int)next_block_row[0][0]; + DC21 = DC22 = DC23 = DC24 = DC25 = (int)next_next_block_row[0][0]; output_col = 0; last_block_column = compptr->width_in_blocks - 1; for (block_num = cinfo->master->first_MCU_col[ci]; @@ -513,18 +581,39 @@ /* Fetch current DCT block into workspace so we can modify it. */ jcopy_block_row(buffer_ptr, (JBLOCKROW)workspace, (JDIMENSION)1); /* Update DC values */ - if (block_num < last_block_column) { - DC3 = (int)prev_block_row[1][0]; - DC6 = (int)buffer_ptr[1][0]; - DC9 = (int)next_block_row[1][0]; + if (block_num == cinfo->master->first_MCU_col[ci] && + block_num < last_block_column) { + DC04 = (int)prev_prev_block_row[1][0]; + DC09 = (int)prev_block_row[1][0]; + DC14 = (int)buffer_ptr[1][0]; + DC19 = (int)next_block_row[1][0]; + DC24 = (int)next_next_block_row[1][0]; } - /* Compute coefficient estimates per K.8. - * An estimate is applied only if coefficient is still zero, - * and is not known to be fully accurate. + if (block_num + 1 < last_block_column) { + DC05 = (int)prev_prev_block_row[2][0]; + DC10 = (int)prev_block_row[2][0]; + DC15 = (int)buffer_ptr[2][0]; + DC20 = (int)next_block_row[2][0]; + DC25 = (int)next_next_block_row[2][0]; + } + /* If DC interpolation is enabled, compute coefficient estimates using + * a Gaussian-like kernel, keeping the averages of the DC values. + * + * If DC interpolation is disabled, compute coefficient estimates using + * an algorithm similar to the one described in Section K.8 of the JPEG + * standard, except applied to a 5x5 window rather than a 3x3 window. + * + * An estimate is applied only if the coefficient is still zero and is + * not known to be fully accurate. */ /* AC01 */ if ((Al = coef_bits[1]) != 0 && workspace[1] == 0) { - num = 36 * Q00 * (DC4 - DC6); + num = Q00 * (change_dc ? + (-DC01 - DC02 + DC04 + DC05 - 3 * DC06 + 13 * DC07 - + 13 * DC09 + 3 * DC10 - 3 * DC11 + 38 * DC12 - 38 * DC14 + + 3 * DC15 - 3 * DC16 + 13 * DC17 - 13 * DC19 + 3 * DC20 - + DC21 - DC22 + DC24 + DC25) : + (-7 * DC11 + 50 * DC12 - 50 * DC14 + 7 * DC15)); if (num >= 0) { pred = (int)(((Q01 << 7) + num) / (Q01 << 8)); if (Al > 0 && pred >= (1 << Al)) @@ -539,7 +628,12 @@ } /* AC10 */ if ((Al = coef_bits[2]) != 0 && workspace[8] == 0) { - num = 36 * Q00 * (DC2 - DC8); + num = Q00 * (change_dc ? + (-DC01 - 3 * DC02 - 3 * DC03 - 3 * DC04 - DC05 - DC06 + + 13 * DC07 + 38 * DC08 + 13 * DC09 - DC10 + DC16 - + 13 * DC17 - 38 * DC18 - 13 * DC19 + DC20 + DC21 + + 3 * DC22 + 3 * DC23 + 3 * DC24 + DC25) : + (-7 * DC03 + 50 * DC08 - 50 * DC18 + 7 * DC23)); if (num >= 0) { pred = (int)(((Q10 << 7) + num) / (Q10 << 8)); if (Al > 0 && pred >= (1 << Al)) @@ -554,7 +648,10 @@ } /* AC20 */ if ((Al = coef_bits[3]) != 0 && workspace[16] == 0) { - num = 9 * Q00 * (DC2 + DC8 - 2 * DC5); + num = Q00 * (change_dc ? + (DC03 + 2 * DC07 + 7 * DC08 + 2 * DC09 - 5 * DC12 - 14 * DC13 - + 5 * DC14 + 2 * DC17 + 7 * DC18 + 2 * DC19 + DC23) : + (-DC03 + 13 * DC08 - 24 * DC13 + 13 * DC18 - DC23)); if (num >= 0) { pred = (int)(((Q20 << 7) + num) / (Q20 << 8)); if (Al > 0 && pred >= (1 << Al)) @@ -569,7 +666,11 @@ } /* AC11 */ if ((Al = coef_bits[4]) != 0 && workspace[9] == 0) { - num = 5 * Q00 * (DC1 - DC3 - DC7 + DC9); + num = Q00 * (change_dc ? + (-DC01 + DC05 + 9 * DC07 - 9 * DC09 - 9 * DC17 + + 9 * DC19 + DC21 - DC25) : + (DC10 + DC16 - 10 * DC17 + 10 * DC19 - DC02 - DC20 + DC22 - + DC24 + DC04 - DC06 + 10 * DC07 - 10 * DC09)); if (num >= 0) { pred = (int)(((Q11 << 7) + num) / (Q11 << 8)); if (Al > 0 && pred >= (1 << Al)) @@ -584,7 +685,10 @@ } /* AC02 */ if ((Al = coef_bits[5]) != 0 && workspace[2] == 0) { - num = 9 * Q00 * (DC4 + DC6 - 2 * DC5); + num = Q00 * (change_dc ? + (2 * DC07 - 5 * DC08 + 2 * DC09 + DC11 + 7 * DC12 - 14 * DC13 + + 7 * DC14 + DC15 + 2 * DC17 - 5 * DC18 + 2 * DC19) : + (-DC11 + 13 * DC12 - 24 * DC13 + 13 * DC14 - DC15)); if (num >= 0) { pred = (int)(((Q02 << 7) + num) / (Q02 << 8)); if (Al > 0 && pred >= (1 << Al)) @@ -597,14 +701,96 @@ } workspace[2] = (JCOEF)pred; } + if (change_dc) { + /* AC03 */ + if ((Al = coef_bits[6]) != 0 && workspace[3] == 0) { + num = Q00 * (DC07 - DC09 + 2 * DC12 - 2 * DC14 + DC17 - DC19); + if (num >= 0) { + pred = (int)(((Q03 << 7) + num) / (Q03 << 8)); + if (Al > 0 && pred >= (1 << Al)) + pred = (1 << Al) - 1; + } else { + pred = (int)(((Q03 << 7) - num) / (Q03 << 8)); + if (Al > 0 && pred >= (1 << Al)) + pred = (1 << Al) - 1; + pred = -pred; + } + workspace[3] = (JCOEF)pred; + } + /* AC12 */ + if ((Al = coef_bits[7]) != 0 && workspace[10] == 0) { + num = Q00 * (DC07 - 3 * DC08 + DC09 - DC17 + 3 * DC18 - DC19); + if (num >= 0) { + pred = (int)(((Q12 << 7) + num) / (Q12 << 8)); + if (Al > 0 && pred >= (1 << Al)) + pred = (1 << Al) - 1; + } else { + pred = (int)(((Q12 << 7) - num) / (Q12 << 8)); + if (Al > 0 && pred >= (1 << Al)) + pred = (1 << Al) - 1; + pred = -pred; + } + workspace[10] = (JCOEF)pred; + } + /* AC21 */ + if ((Al = coef_bits[8]) != 0 && workspace[17] == 0) { + num = Q00 * (DC07 - DC09 - 3 * DC12 + 3 * DC14 + DC17 - DC19); + if (num >= 0) { + pred = (int)(((Q21 << 7) + num) / (Q21 << 8)); + if (Al > 0 && pred >= (1 << Al)) + pred = (1 << Al) - 1; + } else { + pred = (int)(((Q21 << 7) - num) / (Q21 << 8)); + if (Al > 0 && pred >= (1 << Al)) + pred = (1 << Al) - 1; + pred = -pred; + } + workspace[17] = (JCOEF)pred; + } + /* AC30 */ + if ((Al = coef_bits[9]) != 0 && workspace[24] == 0) { + num = Q00 * (DC07 + 2 * DC08 + DC09 - DC17 - 2 * DC18 - DC19); + if (num >= 0) { + pred = (int)(((Q30 << 7) + num) / (Q30 << 8)); + if (Al > 0 && pred >= (1 << Al)) + pred = (1 << Al) - 1; + } else { + pred = (int)(((Q30 << 7) - num) / (Q30 << 8)); + if (Al > 0 && pred >= (1 << Al)) + pred = (1 << Al) - 1; + pred = -pred; + } + workspace[24] = (JCOEF)pred; + } + /* coef_bits[0] is non-negative. Otherwise this function would not + * be called. + */ + num = Q00 * + (-2 * DC01 - 6 * DC02 - 8 * DC03 - 6 * DC04 - 2 * DC05 - + 6 * DC06 + 6 * DC07 + 42 * DC08 + 6 * DC09 - 6 * DC10 - + 8 * DC11 + 42 * DC12 + 152 * DC13 + 42 * DC14 - 8 * DC15 - + 6 * DC16 + 6 * DC17 + 42 * DC18 + 6 * DC19 - 6 * DC20 - + 2 * DC21 - 6 * DC22 - 8 * DC23 - 6 * DC24 - 2 * DC25); + if (num >= 0) { + pred = (int)(((Q00 << 7) + num) / (Q00 << 8)); + } else { + pred = (int)(((Q00 << 7) - num) / (Q00 << 8)); + pred = -pred; + } + workspace[0] = (JCOEF)pred; + } /* change_dc */ + /* OK, do the IDCT */ (*inverse_DCT) (cinfo, compptr, (JCOEFPTR)workspace, output_ptr, output_col); /* Advance for next column */ - DC1 = DC2; DC2 = DC3; - DC4 = DC5; DC5 = DC6; - DC7 = DC8; DC8 = DC9; - buffer_ptr++, prev_block_row++, next_block_row++; + DC01 = DC02; DC02 = DC03; DC03 = DC04; DC04 = DC05; + DC06 = DC07; DC07 = DC08; DC08 = DC09; DC09 = DC10; + DC11 = DC12; DC12 = DC13; DC13 = DC14; DC14 = DC15; + DC16 = DC17; DC17 = DC18; DC18 = DC19; DC19 = DC20; + DC21 = DC22; DC22 = DC23; DC23 = DC24; DC24 = DC25; + buffer_ptr++, prev_block_row++, next_block_row++, + prev_prev_block_row++, next_next_block_row++; output_col += compptr->_DCT_scaled_size; } output_ptr += compptr->_DCT_scaled_size; @@ -653,7 +839,7 @@ #ifdef BLOCK_SMOOTHING_SUPPORTED /* If block smoothing could be used, need a bigger window */ if (cinfo->progressive_mode) - access_rows *= 3; + access_rows *= 5; #endif coef->whole_image[ci] = (*cinfo->mem->request_virt_barray) ((j_common_ptr)cinfo, JPOOL_IMAGE, TRUE, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdcoefct.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdcoefct.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdcoefct.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdcoefct.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,6 +5,7 @@ * Copyright (C) 1994-1997, Thomas G. Lane. * libjpeg-turbo Modifications: * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB + * Copyright (C) 2020, Google, Inc. * For conditions of distribution and use, see the accompanying README.ijg * file. */ @@ -51,7 +52,7 @@ #ifdef BLOCK_SMOOTHING_SUPPORTED /* When doing block smoothing, we latch coefficient Al values here */ int *coef_bits_latch; -#define SAVED_COEFS 6 /* we save coef_bits[0..5] */ +#define SAVED_COEFS 10 /* we save coef_bits[0..9] */ #endif } my_coef_controller; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdcol565.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdcol565.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdcol565.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdcol565.c 2022-11-11 15:29:17.000000000 +0800 @@ -45,9 +45,9 @@ outptr = *output_buf++; if (PACK_NEED_ALIGNMENT(outptr)) { - y = GETJSAMPLE(*inptr0++); - cb = GETJSAMPLE(*inptr1++); - cr = GETJSAMPLE(*inptr2++); + y = *inptr0++; + cb = *inptr1++; + cr = *inptr2++; r = range_limit[y + Crrtab[cr]]; g = range_limit[y + ((int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS))]; @@ -58,18 +58,18 @@ num_cols--; } for (col = 0; col < (num_cols >> 1); col++) { - y = GETJSAMPLE(*inptr0++); - cb = GETJSAMPLE(*inptr1++); - cr = GETJSAMPLE(*inptr2++); + y = *inptr0++; + cb = *inptr1++; + cr = *inptr2++; r = range_limit[y + Crrtab[cr]]; g = range_limit[y + ((int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS))]; b = range_limit[y + Cbbtab[cb]]; rgb = PACK_SHORT_565(r, g, b); - y = GETJSAMPLE(*inptr0++); - cb = GETJSAMPLE(*inptr1++); - cr = GETJSAMPLE(*inptr2++); + y = *inptr0++; + cb = *inptr1++; + cr = *inptr2++; r = range_limit[y + Crrtab[cr]]; g = range_limit[y + ((int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS))]; @@ -80,9 +80,9 @@ outptr += 4; } if (num_cols & 1) { - y = GETJSAMPLE(*inptr0); - cb = GETJSAMPLE(*inptr1); - cr = GETJSAMPLE(*inptr2); + y = *inptr0; + cb = *inptr1; + cr = *inptr2; r = range_limit[y + Crrtab[cr]]; g = range_limit[y + ((int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS))]; @@ -125,9 +125,9 @@ input_row++; outptr = *output_buf++; if (PACK_NEED_ALIGNMENT(outptr)) { - y = GETJSAMPLE(*inptr0++); - cb = GETJSAMPLE(*inptr1++); - cr = GETJSAMPLE(*inptr2++); + y = *inptr0++; + cb = *inptr1++; + cr = *inptr2++; r = range_limit[DITHER_565_R(y + Crrtab[cr], d0)]; g = range_limit[DITHER_565_G(y + ((int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], @@ -139,9 +139,9 @@ num_cols--; } for (col = 0; col < (num_cols >> 1); col++) { - y = GETJSAMPLE(*inptr0++); - cb = GETJSAMPLE(*inptr1++); - cr = GETJSAMPLE(*inptr2++); + y = *inptr0++; + cb = *inptr1++; + cr = *inptr2++; r = range_limit[DITHER_565_R(y + Crrtab[cr], d0)]; g = range_limit[DITHER_565_G(y + ((int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], @@ -150,9 +150,9 @@ d0 = DITHER_ROTATE(d0); rgb = PACK_SHORT_565(r, g, b); - y = GETJSAMPLE(*inptr0++); - cb = GETJSAMPLE(*inptr1++); - cr = GETJSAMPLE(*inptr2++); + y = *inptr0++; + cb = *inptr1++; + cr = *inptr2++; r = range_limit[DITHER_565_R(y + Crrtab[cr], d0)]; g = range_limit[DITHER_565_G(y + ((int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], @@ -165,9 +165,9 @@ outptr += 4; } if (num_cols & 1) { - y = GETJSAMPLE(*inptr0); - cb = GETJSAMPLE(*inptr1); - cr = GETJSAMPLE(*inptr2); + y = *inptr0; + cb = *inptr1; + cr = *inptr2; r = range_limit[DITHER_565_R(y + Crrtab[cr], d0)]; g = range_limit[DITHER_565_G(y + ((int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], @@ -202,32 +202,32 @@ input_row++; outptr = *output_buf++; if (PACK_NEED_ALIGNMENT(outptr)) { - r = GETJSAMPLE(*inptr0++); - g = GETJSAMPLE(*inptr1++); - b = GETJSAMPLE(*inptr2++); + r = *inptr0++; + g = *inptr1++; + b = *inptr2++; rgb = PACK_SHORT_565(r, g, b); *(INT16 *)outptr = (INT16)rgb; outptr += 2; num_cols--; } for (col = 0; col < (num_cols >> 1); col++) { - r = GETJSAMPLE(*inptr0++); - g = GETJSAMPLE(*inptr1++); - b = GETJSAMPLE(*inptr2++); + r = *inptr0++; + g = *inptr1++; + b = *inptr2++; rgb = PACK_SHORT_565(r, g, b); - r = GETJSAMPLE(*inptr0++); - g = GETJSAMPLE(*inptr1++); - b = GETJSAMPLE(*inptr2++); + r = *inptr0++; + g = *inptr1++; + b = *inptr2++; rgb = PACK_TWO_PIXELS(rgb, PACK_SHORT_565(r, g, b)); WRITE_TWO_ALIGNED_PIXELS(outptr, rgb); outptr += 4; } if (num_cols & 1) { - r = GETJSAMPLE(*inptr0); - g = GETJSAMPLE(*inptr1); - b = GETJSAMPLE(*inptr2); + r = *inptr0; + g = *inptr1; + b = *inptr2; rgb = PACK_SHORT_565(r, g, b); *(INT16 *)outptr = (INT16)rgb; } @@ -259,24 +259,24 @@ input_row++; outptr = *output_buf++; if (PACK_NEED_ALIGNMENT(outptr)) { - r = range_limit[DITHER_565_R(GETJSAMPLE(*inptr0++), d0)]; - g = range_limit[DITHER_565_G(GETJSAMPLE(*inptr1++), d0)]; - b = range_limit[DITHER_565_B(GETJSAMPLE(*inptr2++), d0)]; + r = range_limit[DITHER_565_R(*inptr0++, d0)]; + g = range_limit[DITHER_565_G(*inptr1++, d0)]; + b = range_limit[DITHER_565_B(*inptr2++, d0)]; rgb = PACK_SHORT_565(r, g, b); *(INT16 *)outptr = (INT16)rgb; outptr += 2; num_cols--; } for (col = 0; col < (num_cols >> 1); col++) { - r = range_limit[DITHER_565_R(GETJSAMPLE(*inptr0++), d0)]; - g = range_limit[DITHER_565_G(GETJSAMPLE(*inptr1++), d0)]; - b = range_limit[DITHER_565_B(GETJSAMPLE(*inptr2++), d0)]; + r = range_limit[DITHER_565_R(*inptr0++, d0)]; + g = range_limit[DITHER_565_G(*inptr1++, d0)]; + b = range_limit[DITHER_565_B(*inptr2++, d0)]; d0 = DITHER_ROTATE(d0); rgb = PACK_SHORT_565(r, g, b); - r = range_limit[DITHER_565_R(GETJSAMPLE(*inptr0++), d0)]; - g = range_limit[DITHER_565_G(GETJSAMPLE(*inptr1++), d0)]; - b = range_limit[DITHER_565_B(GETJSAMPLE(*inptr2++), d0)]; + r = range_limit[DITHER_565_R(*inptr0++, d0)]; + g = range_limit[DITHER_565_G(*inptr1++, d0)]; + b = range_limit[DITHER_565_B(*inptr2++, d0)]; d0 = DITHER_ROTATE(d0); rgb = PACK_TWO_PIXELS(rgb, PACK_SHORT_565(r, g, b)); @@ -284,9 +284,9 @@ outptr += 4; } if (num_cols & 1) { - r = range_limit[DITHER_565_R(GETJSAMPLE(*inptr0), d0)]; - g = range_limit[DITHER_565_G(GETJSAMPLE(*inptr1), d0)]; - b = range_limit[DITHER_565_B(GETJSAMPLE(*inptr2), d0)]; + r = range_limit[DITHER_565_R(*inptr0, d0)]; + g = range_limit[DITHER_565_G(*inptr1, d0)]; + b = range_limit[DITHER_565_B(*inptr2, d0)]; rgb = PACK_SHORT_565(r, g, b); *(INT16 *)outptr = (INT16)rgb; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdcolext.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdcolext.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdcolext.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdcolext.c 2022-11-11 15:29:17.000000000 +0800 @@ -53,9 +53,9 @@ input_row++; outptr = *output_buf++; for (col = 0; col < num_cols; col++) { - y = GETJSAMPLE(inptr0[col]); - cb = GETJSAMPLE(inptr1[col]); - cr = GETJSAMPLE(inptr2[col]); + y = inptr0[col]; + cb = inptr1[col]; + cr = inptr2[col]; /* Range-limiting is essential due to noise introduced by DCT losses. */ outptr[RGB_RED] = range_limit[y + Crrtab[cr]]; outptr[RGB_GREEN] = range_limit[y + @@ -93,7 +93,6 @@ inptr = input_buf[0][input_row++]; outptr = *output_buf++; for (col = 0; col < num_cols; col++) { - /* We can dispense with GETJSAMPLE() here */ outptr[RGB_RED] = outptr[RGB_GREEN] = outptr[RGB_BLUE] = inptr[col]; /* Set unused byte to 0xFF so it can be interpreted as an opaque */ /* alpha channel value */ @@ -128,7 +127,6 @@ input_row++; outptr = *output_buf++; for (col = 0; col < num_cols; col++) { - /* We can dispense with GETJSAMPLE() here */ outptr[RGB_RED] = inptr0[col]; outptr[RGB_GREEN] = inptr1[col]; outptr[RGB_BLUE] = inptr2[col]; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdcolor.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdcolor.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdcolor.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdcolor.c 2022-11-11 15:29:17.000000000 +0800 @@ -341,9 +341,9 @@ input_row++; outptr = *output_buf++; for (col = 0; col < num_cols; col++) { - r = GETJSAMPLE(inptr0[col]); - g = GETJSAMPLE(inptr1[col]); - b = GETJSAMPLE(inptr2[col]); + r = inptr0[col]; + g = inptr1[col]; + b = inptr2[col]; /* Y */ outptr[col] = (JSAMPLE)((ctab[r + R_Y_OFF] + ctab[g + G_Y_OFF] + ctab[b + B_Y_OFF]) >> SCALEBITS); @@ -550,9 +550,9 @@ input_row++; outptr = *output_buf++; for (col = 0; col < num_cols; col++) { - y = GETJSAMPLE(inptr0[col]); - cb = GETJSAMPLE(inptr1[col]); - cr = GETJSAMPLE(inptr2[col]); + y = inptr0[col]; + cb = inptr1[col]; + cr = inptr2[col]; /* Range-limiting is essential due to noise introduced by DCT losses. */ outptr[0] = range_limit[MAXJSAMPLE - (y + Crrtab[cr])]; /* red */ outptr[1] = range_limit[MAXJSAMPLE - (y + /* green */ @@ -560,7 +560,7 @@ SCALEBITS)))]; outptr[2] = range_limit[MAXJSAMPLE - (y + Cbbtab[cb])]; /* blue */ /* K passes through unchanged */ - outptr[3] = inptr3[col]; /* don't need GETJSAMPLE here */ + outptr[3] = inptr3[col]; outptr += 4; } } @@ -571,11 +571,10 @@ * RGB565 conversion */ -#define PACK_SHORT_565_LE(r, g, b) ((((r) << 8) & 0xF800) | \ - (((g) << 3) & 0x7E0) | ((b) >> 3)) -#define PACK_SHORT_565_BE(r, g, b) (((r) & 0xF8) | ((g) >> 5) | \ - (((g) << 11) & 0xE000) | \ - (((b) << 5) & 0x1F00)) +#define PACK_SHORT_565_LE(r, g, b) \ + ((((r) << 8) & 0xF800) | (((g) << 3) & 0x7E0) | ((b) >> 3)) +#define PACK_SHORT_565_BE(r, g, b) \ + (((r) & 0xF8) | ((g) >> 5) | (((g) << 11) & 0xE000) | (((b) << 5) & 0x1F00)) #define PACK_TWO_PIXELS_LE(l, r) ((r << 16) | l) #define PACK_TWO_PIXELS_BE(l, r) ((l << 16) | r) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdhuff.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdhuff.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdhuff.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdhuff.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,6 +5,7 @@ * Copyright (C) 1991-1997, Thomas G. Lane. * libjpeg-turbo Modifications: * Copyright (C) 2009-2011, 2016, 2018-2019, D. R. Commander. + * Copyright (C) 2018, Matthias Räncker. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -39,24 +40,6 @@ int last_dc_val[MAX_COMPS_IN_SCAN]; /* last DC coef for each component */ } savable_state; -/* This macro is to work around compilers with missing or broken - * structure assignment. You'll need to fix this code if you have - * such a compiler and you change MAX_COMPS_IN_SCAN. - */ - -#ifndef NO_STRUCT_ASSIGN -#define ASSIGN_STATE(dest, src) ((dest) = (src)) -#else -#if MAX_COMPS_IN_SCAN == 4 -#define ASSIGN_STATE(dest, src) \ - ((dest).last_dc_val[0] = (src).last_dc_val[0], \ - (dest).last_dc_val[1] = (src).last_dc_val[1], \ - (dest).last_dc_val[2] = (src).last_dc_val[2], \ - (dest).last_dc_val[3] = (src).last_dc_val[3]) -#endif -#endif - - typedef struct { struct jpeg_entropy_decoder pub; /* public fields */ @@ -325,7 +308,7 @@ bytes_in_buffer = cinfo->src->bytes_in_buffer; } bytes_in_buffer--; - c = GETJOCTET(*next_input_byte++); + c = *next_input_byte++; /* If it's 0xFF, check and discard stuffed zero byte */ if (c == 0xFF) { @@ -342,7 +325,7 @@ bytes_in_buffer = cinfo->src->bytes_in_buffer; } bytes_in_buffer--; - c = GETJOCTET(*next_input_byte++); + c = *next_input_byte++; } while (c == 0xFF); if (c == 0) { @@ -405,8 +388,8 @@ #define GET_BYTE { \ register int c0, c1; \ - c0 = GETJOCTET(*buffer++); \ - c1 = GETJOCTET(*buffer); \ + c0 = *buffer++; \ + c1 = *buffer; \ /* Pre-execute most common case */ \ get_buffer = (get_buffer << 8) | c0; \ bits_left += 8; \ @@ -423,7 +406,7 @@ } \ } -#if SIZEOF_SIZE_T == 8 || defined(_WIN64) +#if SIZEOF_SIZE_T == 8 || defined(_WIN64) || (defined(__x86_64__) && defined(__ILP32__)) /* Pre-fetch 48 bytes, because the holding register is 64-bit */ #define FILL_BIT_BUFFER_FAST \ @@ -557,6 +540,12 @@ } +#if defined(__has_feature) +#if __has_feature(undefined_behavior_sanitizer) +__attribute__((no_sanitize("signed-integer-overflow"), + no_sanitize("unsigned-integer-overflow"))) +#endif +#endif LOCAL(boolean) decode_mcu_slow(j_decompress_ptr cinfo, JBLOCKROW *MCU_data) { @@ -568,7 +557,7 @@ /* Load up working state */ BITREAD_LOAD_STATE(cinfo, entropy->bitstate); - ASSIGN_STATE(state, entropy->saved); + state = entropy->saved; for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) { JBLOCKROW block = MCU_data ? MCU_data[blkn] : NULL; @@ -589,11 +578,15 @@ if (entropy->dc_needed[blkn]) { /* Convert DC difference to actual value, update last_dc_val */ int ci = cinfo->MCU_membership[blkn]; - /* This is really just - * s += state.last_dc_val[ci]; - * It is written this way in order to shut up UBSan. + /* Certain malformed JPEG images produce repeated DC coefficient + * differences of 2047 or -2047, which causes state.last_dc_val[ci] to + * grow until it overflows or underflows a 32-bit signed integer. This + * behavior is, to the best of our understanding, innocuous, and it is + * unclear how to work around it without potentially affecting + * performance. Thus, we (hopefully temporarily) suppress UBSan integer + * overflow errors for this function and decode_mcu_fast(). */ - s = (int)((unsigned int)s + (unsigned int)state.last_dc_val[ci]); + s += state.last_dc_val[ci]; state.last_dc_val[ci] = s; if (block) { /* Output the DC coefficient (assumes jpeg_natural_order[0] = 0) */ @@ -653,11 +646,17 @@ /* Completed MCU, so update state */ BITREAD_SAVE_STATE(cinfo, entropy->bitstate); - ASSIGN_STATE(entropy->saved, state); + entropy->saved = state; return TRUE; } +#if defined(__has_feature) +#if __has_feature(undefined_behavior_sanitizer) +__attribute__((no_sanitize("signed-integer-overflow"), + no_sanitize("unsigned-integer-overflow"))) +#endif +#endif LOCAL(boolean) decode_mcu_fast(j_decompress_ptr cinfo, JBLOCKROW *MCU_data) { @@ -671,7 +670,7 @@ /* Load up working state */ BITREAD_LOAD_STATE(cinfo, entropy->bitstate); buffer = (JOCTET *)br_state.next_input_byte; - ASSIGN_STATE(state, entropy->saved); + state = entropy->saved; for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) { JBLOCKROW block = MCU_data ? MCU_data[blkn] : NULL; @@ -688,7 +687,10 @@ if (entropy->dc_needed[blkn]) { int ci = cinfo->MCU_membership[blkn]; - s = (int)((unsigned int)s + (unsigned int)state.last_dc_val[ci]); + /* Refer to the comment in decode_mcu_slow() regarding the supression of + * a UBSan integer overflow error in this line of code. + */ + s += state.last_dc_val[ci]; state.last_dc_val[ci] = s; if (block) (*block)[0] = (JCOEF)s; @@ -740,7 +742,7 @@ br_state.bytes_in_buffer -= (buffer - br_state.next_input_byte); br_state.next_input_byte = buffer; BITREAD_SAVE_STATE(cinfo, entropy->bitstate); - ASSIGN_STATE(entropy->saved, state); + entropy->saved = state; return TRUE; } @@ -795,7 +797,8 @@ } /* Account for restart interval (no-op if not using restarts) */ - entropy->restarts_to_go--; + if (cinfo->restart_interval) + entropy->restarts_to_go--; return TRUE; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdhuff.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdhuff.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdhuff.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdhuff.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,8 @@ * This file was part of the Independent JPEG Group's software: * Copyright (C) 1991-1997, Thomas G. Lane. * libjpeg-turbo Modifications: - * Copyright (C) 2010-2011, 2015-2016, D. R. Commander. + * Copyright (C) 2010-2011, 2015-2016, 2021, D. R. Commander. + * Copyright (C) 2018, Matthias Räncker. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -78,6 +79,11 @@ typedef size_t bit_buf_type; /* type of bit-extraction buffer */ #define BIT_BUF_SIZE 64 /* size of buffer in bits */ +#elif defined(__x86_64__) && defined(__ILP32__) + +typedef unsigned long long bit_buf_type; /* type of bit-extraction buffer */ +#define BIT_BUF_SIZE 64 /* size of buffer in bits */ + #else typedef unsigned long bit_buf_type; /* type of bit-extraction buffer */ @@ -228,7 +234,10 @@ s |= GET_BITS(1); \ nb++; \ } \ - s = htbl->pub->huffval[(int)(s + htbl->valoffset[nb]) & 0xFF]; \ + if (nb > 16) \ + s = 0; \ + else \ + s = htbl->pub->huffval[(int)(s + htbl->valoffset[nb]) & 0xFF]; \ } /* Out-of-line case for Huffman code fetching */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdmainct.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdmainct.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdmainct.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdmainct.c 2022-11-11 15:29:17.000000000 +0800 @@ -18,6 +18,7 @@ #include "jinclude.h" #include "jdmainct.h" +#include "jconfigint.h" /* @@ -360,7 +361,7 @@ main_ptr->context_state = CTX_PREPARE_FOR_IMCU; if (*out_row_ctr >= out_rows_avail) return; /* Postprocessor exactly filled output buf */ - /*FALLTHROUGH*/ + FALLTHROUGH /*FALLTHROUGH*/ case CTX_PREPARE_FOR_IMCU: /* Prepare to process first M-1 row groups of this iMCU row */ main_ptr->rowgroup_ctr = 0; @@ -371,7 +372,7 @@ if (main_ptr->iMCU_row_ctr == cinfo->total_iMCU_rows) set_bottom_pointers(cinfo); main_ptr->context_state = CTX_PROCESS_IMCU; - /*FALLTHROUGH*/ + FALLTHROUGH /*FALLTHROUGH*/ case CTX_PROCESS_IMCU: /* Call postprocessor using previously set pointers */ (*cinfo->post->post_process_data) (cinfo, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdmarker.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdmarker.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdmarker.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdmarker.c 2022-11-11 15:29:17.000000000 +0800 @@ -151,7 +151,7 @@ #define INPUT_BYTE(cinfo, V, action) \ MAKESTMT( MAKE_BYTE_AVAIL(cinfo, action); \ bytes_in_buffer--; \ - V = GETJOCTET(*next_input_byte++); ) + V = *next_input_byte++; ) /* As above, but read two bytes interpreted as an unsigned 16-bit integer. * V should be declared unsigned int or perhaps JLONG. @@ -159,10 +159,10 @@ #define INPUT_2BYTES(cinfo, V, action) \ MAKESTMT( MAKE_BYTE_AVAIL(cinfo, action); \ bytes_in_buffer--; \ - V = ((unsigned int)GETJOCTET(*next_input_byte++)) << 8; \ + V = ((unsigned int)(*next_input_byte++)) << 8; \ MAKE_BYTE_AVAIL(cinfo, action); \ bytes_in_buffer--; \ - V += GETJOCTET(*next_input_byte++); ) + V += *next_input_byte++; ) /* @@ -608,18 +608,18 @@ JLONG totallen = (JLONG)datalen + remaining; if (datalen >= APP0_DATA_LEN && - GETJOCTET(data[0]) == 0x4A && - GETJOCTET(data[1]) == 0x46 && - GETJOCTET(data[2]) == 0x49 && - GETJOCTET(data[3]) == 0x46 && - GETJOCTET(data[4]) == 0) { + data[0] == 0x4A && + data[1] == 0x46 && + data[2] == 0x49 && + data[3] == 0x46 && + data[4] == 0) { /* Found JFIF APP0 marker: save info */ cinfo->saw_JFIF_marker = TRUE; - cinfo->JFIF_major_version = GETJOCTET(data[5]); - cinfo->JFIF_minor_version = GETJOCTET(data[6]); - cinfo->density_unit = GETJOCTET(data[7]); - cinfo->X_density = (GETJOCTET(data[8]) << 8) + GETJOCTET(data[9]); - cinfo->Y_density = (GETJOCTET(data[10]) << 8) + GETJOCTET(data[11]); + cinfo->JFIF_major_version = data[5]; + cinfo->JFIF_minor_version = data[6]; + cinfo->density_unit = data[7]; + cinfo->X_density = (data[8] << 8) + data[9]; + cinfo->Y_density = (data[10] << 8) + data[11]; /* Check version. * Major version must be 1, anything else signals an incompatible change. * (We used to treat this as an error, but now it's a nonfatal warning, @@ -634,24 +634,22 @@ cinfo->JFIF_major_version, cinfo->JFIF_minor_version, cinfo->X_density, cinfo->Y_density, cinfo->density_unit); /* Validate thumbnail dimensions and issue appropriate messages */ - if (GETJOCTET(data[12]) | GETJOCTET(data[13])) - TRACEMS2(cinfo, 1, JTRC_JFIF_THUMBNAIL, - GETJOCTET(data[12]), GETJOCTET(data[13])); + if (data[12] | data[13]) + TRACEMS2(cinfo, 1, JTRC_JFIF_THUMBNAIL, data[12], data[13]); totallen -= APP0_DATA_LEN; - if (totallen != - ((JLONG)GETJOCTET(data[12]) * (JLONG)GETJOCTET(data[13]) * (JLONG)3)) + if (totallen != ((JLONG)data[12] * (JLONG)data[13] * (JLONG)3)) TRACEMS1(cinfo, 1, JTRC_JFIF_BADTHUMBNAILSIZE, (int)totallen); } else if (datalen >= 6 && - GETJOCTET(data[0]) == 0x4A && - GETJOCTET(data[1]) == 0x46 && - GETJOCTET(data[2]) == 0x58 && - GETJOCTET(data[3]) == 0x58 && - GETJOCTET(data[4]) == 0) { + data[0] == 0x4A && + data[1] == 0x46 && + data[2] == 0x58 && + data[3] == 0x58 && + data[4] == 0) { /* Found JFIF "JFXX" extension APP0 marker */ /* The library doesn't actually do anything with these, * but we try to produce a helpful trace message. */ - switch (GETJOCTET(data[5])) { + switch (data[5]) { case 0x10: TRACEMS1(cinfo, 1, JTRC_THUMB_JPEG, (int)totallen); break; @@ -662,8 +660,7 @@ TRACEMS1(cinfo, 1, JTRC_THUMB_RGB, (int)totallen); break; default: - TRACEMS2(cinfo, 1, JTRC_JFIF_EXTENSION, - GETJOCTET(data[5]), (int)totallen); + TRACEMS2(cinfo, 1, JTRC_JFIF_EXTENSION, data[5], (int)totallen); break; } } else { @@ -684,16 +681,16 @@ unsigned int version, flags0, flags1, transform; if (datalen >= APP14_DATA_LEN && - GETJOCTET(data[0]) == 0x41 && - GETJOCTET(data[1]) == 0x64 && - GETJOCTET(data[2]) == 0x6F && - GETJOCTET(data[3]) == 0x62 && - GETJOCTET(data[4]) == 0x65) { + data[0] == 0x41 && + data[1] == 0x64 && + data[2] == 0x6F && + data[3] == 0x62 && + data[4] == 0x65) { /* Found Adobe APP14 marker */ - version = (GETJOCTET(data[5]) << 8) + GETJOCTET(data[6]); - flags0 = (GETJOCTET(data[7]) << 8) + GETJOCTET(data[8]); - flags1 = (GETJOCTET(data[9]) << 8) + GETJOCTET(data[10]); - transform = GETJOCTET(data[11]); + version = (data[5] << 8) + data[6]; + flags0 = (data[7] << 8) + data[8]; + flags1 = (data[9] << 8) + data[10]; + transform = data[11]; TRACEMS4(cinfo, 1, JTRC_ADOBE, version, flags0, flags1, transform); cinfo->saw_Adobe_marker = TRUE; cinfo->Adobe_transform = (UINT8)transform; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdmaster.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdmaster.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdmaster.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdmaster.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Copyright (C) 1991-1997, Thomas G. Lane. * Modified 2002-2009 by Guido Vollbeding. * libjpeg-turbo Modifications: - * Copyright (C) 2009-2011, 2016, D. R. Commander. + * Copyright (C) 2009-2011, 2016, 2019, D. R. Commander. * Copyright (C) 2013, Linaro Limited. * Copyright (C) 2015, Google, Inc. * For conditions of distribution and use, see the accompanying README.ijg @@ -22,7 +22,6 @@ #include "jpeglib.h" #include "jpegcomp.h" #include "jdmaster.h" -#include "jsimd.h" /* @@ -70,17 +69,6 @@ cinfo->comp_info[1]._DCT_scaled_size != cinfo->_min_DCT_scaled_size || cinfo->comp_info[2]._DCT_scaled_size != cinfo->_min_DCT_scaled_size) return FALSE; -#ifdef WITH_SIMD - /* If YCbCr-to-RGB color conversion is SIMD-accelerated but merged upsampling - isn't, then disabling merged upsampling is likely to be faster when - decompressing YCbCr JPEG images. */ - if (!jsimd_can_h2v2_merged_upsample() && !jsimd_can_h2v1_merged_upsample() && - jsimd_can_ycc_rgb() && cinfo->jpeg_color_space == JCS_YCbCr && - (cinfo->out_color_space == JCS_RGB || - (cinfo->out_color_space >= JCS_EXT_RGB && - cinfo->out_color_space <= JCS_EXT_ARGB))) - return FALSE; -#endif /* ??? also need to test for upsample-time rescaling, when & if supported */ return TRUE; /* by golly, it'll work... */ #else @@ -580,6 +568,7 @@ */ cinfo->master->first_iMCU_col = 0; cinfo->master->last_iMCU_col = cinfo->MCUs_per_row - 1; + cinfo->master->last_good_iMCU_row = 0; #ifdef D_MULTISCAN_FILES_SUPPORTED /* If jpeg_start_decompress will read the whole file, initialize diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdmerge.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdmerge.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdmerge.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdmerge.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Copyright (C) 1994-1996, Thomas G. Lane. * libjpeg-turbo Modifications: * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB - * Copyright (C) 2009, 2011, 2014-2015, D. R. Commander. + * Copyright (C) 2009, 2011, 2014-2015, 2020, D. R. Commander. * Copyright (C) 2013, Linaro Limited. * For conditions of distribution and use, see the accompanying README.ijg * file. @@ -40,41 +40,13 @@ #define JPEG_INTERNALS #include "jinclude.h" #include "jpeglib.h" +#include "jdmerge.h" #include "jsimd.h" #include "jconfigint.h" #ifdef UPSAMPLE_MERGING_SUPPORTED -/* Private subobject */ - -typedef struct { - struct jpeg_upsampler pub; /* public fields */ - - /* Pointer to routine to do actual upsampling/conversion of one row group */ - void (*upmethod) (j_decompress_ptr cinfo, JSAMPIMAGE input_buf, - JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf); - - /* Private state for YCC->RGB conversion */ - int *Cr_r_tab; /* => table for Cr to R conversion */ - int *Cb_b_tab; /* => table for Cb to B conversion */ - JLONG *Cr_g_tab; /* => table for Cr to G conversion */ - JLONG *Cb_g_tab; /* => table for Cb to G conversion */ - - /* For 2:1 vertical sampling, we produce two output rows at a time. - * We need a "spare" row buffer to hold the second output row if the - * application provides just a one-row buffer; we also use the spare - * to discard the dummy last row if the image height is odd. - */ - JSAMPROW spare_row; - boolean spare_full; /* T if spare buffer is occupied */ - - JDIMENSION out_row_width; /* samples per output row */ - JDIMENSION rows_to_go; /* counts rows remaining in image */ -} my_upsampler; - -typedef my_upsampler *my_upsample_ptr; - #define SCALEBITS 16 /* speediest right-shift on some machines */ #define ONE_HALF ((JLONG)1 << (SCALEBITS - 1)) #define FIX(x) ((JLONG)((x) * (1L << SCALEBITS) + 0.5)) @@ -189,7 +161,7 @@ LOCAL(void) build_ycc_rgb_table(j_decompress_ptr cinfo) { - my_upsample_ptr upsample = (my_upsample_ptr)cinfo->upsample; + my_merged_upsample_ptr upsample = (my_merged_upsample_ptr)cinfo->upsample; int i; JLONG x; SHIFT_TEMPS @@ -232,7 +204,7 @@ METHODDEF(void) start_pass_merged_upsample(j_decompress_ptr cinfo) { - my_upsample_ptr upsample = (my_upsample_ptr)cinfo->upsample; + my_merged_upsample_ptr upsample = (my_merged_upsample_ptr)cinfo->upsample; /* Mark the spare buffer empty */ upsample->spare_full = FALSE; @@ -254,7 +226,7 @@ JDIMENSION *out_row_ctr, JDIMENSION out_rows_avail) /* 2:1 vertical sampling case: may need a spare row. */ { - my_upsample_ptr upsample = (my_upsample_ptr)cinfo->upsample; + my_merged_upsample_ptr upsample = (my_merged_upsample_ptr)cinfo->upsample; JSAMPROW work_ptrs[2]; JDIMENSION num_rows; /* number of rows returned to caller */ @@ -305,7 +277,7 @@ JDIMENSION *out_row_ctr, JDIMENSION out_rows_avail) /* 1:1 vertical sampling case: much easier, never need a spare row. */ { - my_upsample_ptr upsample = (my_upsample_ptr)cinfo->upsample; + my_merged_upsample_ptr upsample = (my_merged_upsample_ptr)cinfo->upsample; /* Just do the upsampling. */ (*upsample->upmethod) (cinfo, input_buf, *in_row_group_ctr, @@ -420,11 +392,10 @@ * RGB565 conversion */ -#define PACK_SHORT_565_LE(r, g, b) ((((r) << 8) & 0xF800) | \ - (((g) << 3) & 0x7E0) | ((b) >> 3)) -#define PACK_SHORT_565_BE(r, g, b) (((r) & 0xF8) | ((g) >> 5) | \ - (((g) << 11) & 0xE000) | \ - (((b) << 5) & 0x1F00)) +#define PACK_SHORT_565_LE(r, g, b) \ + ((((r) << 8) & 0xF800) | (((g) << 3) & 0x7E0) | ((b) >> 3)) +#define PACK_SHORT_565_BE(r, g, b) \ + (((r) & 0xF8) | ((g) >> 5) | (((g) << 11) & 0xE000) | (((b) << 5) & 0x1F00)) #define PACK_TWO_PIXELS_LE(l, r) ((r << 16) | l) #define PACK_TWO_PIXELS_BE(l, r) ((l << 16) | r) @@ -566,11 +537,11 @@ GLOBAL(void) jinit_merged_upsampler(j_decompress_ptr cinfo) { - my_upsample_ptr upsample; + my_merged_upsample_ptr upsample; - upsample = (my_upsample_ptr) + upsample = (my_merged_upsample_ptr) (*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE, - sizeof(my_upsampler)); + sizeof(my_merged_upsampler)); cinfo->upsample = (struct jpeg_upsampler *)upsample; upsample->pub.start_pass = start_pass_merged_upsample; upsample->pub.need_context_rows = FALSE; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdmerge.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdmerge.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdmerge.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdmerge.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,47 @@ +/* + * jdmerge.h + * + * This file was part of the Independent JPEG Group's software: + * Copyright (C) 1994-1996, Thomas G. Lane. + * libjpeg-turbo Modifications: + * Copyright (C) 2020, D. R. Commander. + * For conditions of distribution and use, see the accompanying README.ijg + * file. + */ + +#define JPEG_INTERNALS +#include "jpeglib.h" + +#ifdef UPSAMPLE_MERGING_SUPPORTED + + +/* Private subobject */ + +typedef struct { + struct jpeg_upsampler pub; /* public fields */ + + /* Pointer to routine to do actual upsampling/conversion of one row group */ + void (*upmethod) (j_decompress_ptr cinfo, JSAMPIMAGE input_buf, + JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf); + + /* Private state for YCC->RGB conversion */ + int *Cr_r_tab; /* => table for Cr to R conversion */ + int *Cb_b_tab; /* => table for Cb to B conversion */ + JLONG *Cr_g_tab; /* => table for Cr to G conversion */ + JLONG *Cb_g_tab; /* => table for Cb to G conversion */ + + /* For 2:1 vertical sampling, we produce two output rows at a time. + * We need a "spare" row buffer to hold the second output row if the + * application provides just a one-row buffer; we also use the spare + * to discard the dummy last row if the image height is odd. + */ + JSAMPROW spare_row; + boolean spare_full; /* T if spare buffer is occupied */ + + JDIMENSION out_row_width; /* samples per output row */ + JDIMENSION rows_to_go; /* counts rows remaining in image */ +} my_merged_upsampler; + +typedef my_merged_upsampler *my_merged_upsample_ptr; + +#endif /* UPSAMPLE_MERGING_SUPPORTED */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdmrg565.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdmrg565.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdmrg565.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdmrg565.c 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Copyright (C) 1994-1996, Thomas G. Lane. * libjpeg-turbo Modifications: * Copyright (C) 2013, Linaro Limited. - * Copyright (C) 2014-2015, 2018, D. R. Commander. + * Copyright (C) 2014-2015, 2018, 2020, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -19,7 +19,7 @@ JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf) { - my_upsample_ptr upsample = (my_upsample_ptr)cinfo->upsample; + my_merged_upsample_ptr upsample = (my_merged_upsample_ptr)cinfo->upsample; register int y, cred, cgreen, cblue; int cb, cr; register JSAMPROW outptr; @@ -43,20 +43,20 @@ /* Loop for each pair of output pixels */ for (col = cinfo->output_width >> 1; col > 0; col--) { /* Do the chroma part of the calculation */ - cb = GETJSAMPLE(*inptr1++); - cr = GETJSAMPLE(*inptr2++); + cb = *inptr1++; + cr = *inptr2++; cred = Crrtab[cr]; cgreen = (int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS); cblue = Cbbtab[cb]; /* Fetch 2 Y values and emit 2 pixels */ - y = GETJSAMPLE(*inptr0++); + y = *inptr0++; r = range_limit[y + cred]; g = range_limit[y + cgreen]; b = range_limit[y + cblue]; rgb = PACK_SHORT_565(r, g, b); - y = GETJSAMPLE(*inptr0++); + y = *inptr0++; r = range_limit[y + cred]; g = range_limit[y + cgreen]; b = range_limit[y + cblue]; @@ -68,12 +68,12 @@ /* If image width is odd, do the last output column separately */ if (cinfo->output_width & 1) { - cb = GETJSAMPLE(*inptr1); - cr = GETJSAMPLE(*inptr2); + cb = *inptr1; + cr = *inptr2; cred = Crrtab[cr]; cgreen = (int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS); cblue = Cbbtab[cb]; - y = GETJSAMPLE(*inptr0); + y = *inptr0; r = range_limit[y + cred]; g = range_limit[y + cgreen]; b = range_limit[y + cblue]; @@ -90,7 +90,7 @@ JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf) { - my_upsample_ptr upsample = (my_upsample_ptr)cinfo->upsample; + my_merged_upsample_ptr upsample = (my_merged_upsample_ptr)cinfo->upsample; register int y, cred, cgreen, cblue; int cb, cr; register JSAMPROW outptr; @@ -115,21 +115,21 @@ /* Loop for each pair of output pixels */ for (col = cinfo->output_width >> 1; col > 0; col--) { /* Do the chroma part of the calculation */ - cb = GETJSAMPLE(*inptr1++); - cr = GETJSAMPLE(*inptr2++); + cb = *inptr1++; + cr = *inptr2++; cred = Crrtab[cr]; cgreen = (int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS); cblue = Cbbtab[cb]; /* Fetch 2 Y values and emit 2 pixels */ - y = GETJSAMPLE(*inptr0++); + y = *inptr0++; r = range_limit[DITHER_565_R(y + cred, d0)]; g = range_limit[DITHER_565_G(y + cgreen, d0)]; b = range_limit[DITHER_565_B(y + cblue, d0)]; d0 = DITHER_ROTATE(d0); rgb = PACK_SHORT_565(r, g, b); - y = GETJSAMPLE(*inptr0++); + y = *inptr0++; r = range_limit[DITHER_565_R(y + cred, d0)]; g = range_limit[DITHER_565_G(y + cgreen, d0)]; b = range_limit[DITHER_565_B(y + cblue, d0)]; @@ -142,12 +142,12 @@ /* If image width is odd, do the last output column separately */ if (cinfo->output_width & 1) { - cb = GETJSAMPLE(*inptr1); - cr = GETJSAMPLE(*inptr2); + cb = *inptr1; + cr = *inptr2; cred = Crrtab[cr]; cgreen = (int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS); cblue = Cbbtab[cb]; - y = GETJSAMPLE(*inptr0); + y = *inptr0; r = range_limit[DITHER_565_R(y + cred, d0)]; g = range_limit[DITHER_565_G(y + cgreen, d0)]; b = range_limit[DITHER_565_B(y + cblue, d0)]; @@ -163,7 +163,7 @@ JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf) { - my_upsample_ptr upsample = (my_upsample_ptr)cinfo->upsample; + my_merged_upsample_ptr upsample = (my_merged_upsample_ptr)cinfo->upsample; register int y, cred, cgreen, cblue; int cb, cr; register JSAMPROW outptr0, outptr1; @@ -189,20 +189,20 @@ /* Loop for each group of output pixels */ for (col = cinfo->output_width >> 1; col > 0; col--) { /* Do the chroma part of the calculation */ - cb = GETJSAMPLE(*inptr1++); - cr = GETJSAMPLE(*inptr2++); + cb = *inptr1++; + cr = *inptr2++; cred = Crrtab[cr]; cgreen = (int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS); cblue = Cbbtab[cb]; /* Fetch 4 Y values and emit 4 pixels */ - y = GETJSAMPLE(*inptr00++); + y = *inptr00++; r = range_limit[y + cred]; g = range_limit[y + cgreen]; b = range_limit[y + cblue]; rgb = PACK_SHORT_565(r, g, b); - y = GETJSAMPLE(*inptr00++); + y = *inptr00++; r = range_limit[y + cred]; g = range_limit[y + cgreen]; b = range_limit[y + cblue]; @@ -211,13 +211,13 @@ WRITE_TWO_PIXELS(outptr0, rgb); outptr0 += 4; - y = GETJSAMPLE(*inptr01++); + y = *inptr01++; r = range_limit[y + cred]; g = range_limit[y + cgreen]; b = range_limit[y + cblue]; rgb = PACK_SHORT_565(r, g, b); - y = GETJSAMPLE(*inptr01++); + y = *inptr01++; r = range_limit[y + cred]; g = range_limit[y + cgreen]; b = range_limit[y + cblue]; @@ -229,20 +229,20 @@ /* If image width is odd, do the last output column separately */ if (cinfo->output_width & 1) { - cb = GETJSAMPLE(*inptr1); - cr = GETJSAMPLE(*inptr2); + cb = *inptr1; + cr = *inptr2; cred = Crrtab[cr]; cgreen = (int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS); cblue = Cbbtab[cb]; - y = GETJSAMPLE(*inptr00); + y = *inptr00; r = range_limit[y + cred]; g = range_limit[y + cgreen]; b = range_limit[y + cblue]; rgb = PACK_SHORT_565(r, g, b); *(INT16 *)outptr0 = (INT16)rgb; - y = GETJSAMPLE(*inptr01); + y = *inptr01; r = range_limit[y + cred]; g = range_limit[y + cgreen]; b = range_limit[y + cblue]; @@ -259,7 +259,7 @@ JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf) { - my_upsample_ptr upsample = (my_upsample_ptr)cinfo->upsample; + my_merged_upsample_ptr upsample = (my_merged_upsample_ptr)cinfo->upsample; register int y, cred, cgreen, cblue; int cb, cr; register JSAMPROW outptr0, outptr1; @@ -287,21 +287,21 @@ /* Loop for each group of output pixels */ for (col = cinfo->output_width >> 1; col > 0; col--) { /* Do the chroma part of the calculation */ - cb = GETJSAMPLE(*inptr1++); - cr = GETJSAMPLE(*inptr2++); + cb = *inptr1++; + cr = *inptr2++; cred = Crrtab[cr]; cgreen = (int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS); cblue = Cbbtab[cb]; /* Fetch 4 Y values and emit 4 pixels */ - y = GETJSAMPLE(*inptr00++); + y = *inptr00++; r = range_limit[DITHER_565_R(y + cred, d0)]; g = range_limit[DITHER_565_G(y + cgreen, d0)]; b = range_limit[DITHER_565_B(y + cblue, d0)]; d0 = DITHER_ROTATE(d0); rgb = PACK_SHORT_565(r, g, b); - y = GETJSAMPLE(*inptr00++); + y = *inptr00++; r = range_limit[DITHER_565_R(y + cred, d0)]; g = range_limit[DITHER_565_G(y + cgreen, d0)]; b = range_limit[DITHER_565_B(y + cblue, d0)]; @@ -311,14 +311,14 @@ WRITE_TWO_PIXELS(outptr0, rgb); outptr0 += 4; - y = GETJSAMPLE(*inptr01++); + y = *inptr01++; r = range_limit[DITHER_565_R(y + cred, d1)]; g = range_limit[DITHER_565_G(y + cgreen, d1)]; b = range_limit[DITHER_565_B(y + cblue, d1)]; d1 = DITHER_ROTATE(d1); rgb = PACK_SHORT_565(r, g, b); - y = GETJSAMPLE(*inptr01++); + y = *inptr01++; r = range_limit[DITHER_565_R(y + cred, d1)]; g = range_limit[DITHER_565_G(y + cgreen, d1)]; b = range_limit[DITHER_565_B(y + cblue, d1)]; @@ -331,20 +331,20 @@ /* If image width is odd, do the last output column separately */ if (cinfo->output_width & 1) { - cb = GETJSAMPLE(*inptr1); - cr = GETJSAMPLE(*inptr2); + cb = *inptr1; + cr = *inptr2; cred = Crrtab[cr]; cgreen = (int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS); cblue = Cbbtab[cb]; - y = GETJSAMPLE(*inptr00); + y = *inptr00; r = range_limit[DITHER_565_R(y + cred, d0)]; g = range_limit[DITHER_565_G(y + cgreen, d0)]; b = range_limit[DITHER_565_B(y + cblue, d0)]; rgb = PACK_SHORT_565(r, g, b); *(INT16 *)outptr0 = (INT16)rgb; - y = GETJSAMPLE(*inptr01); + y = *inptr01; r = range_limit[DITHER_565_R(y + cred, d1)]; g = range_limit[DITHER_565_G(y + cgreen, d1)]; b = range_limit[DITHER_565_B(y + cblue, d1)]; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdmrgext.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdmrgext.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdmrgext.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdmrgext.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * This file was part of the Independent JPEG Group's software: * Copyright (C) 1994-1996, Thomas G. Lane. * libjpeg-turbo Modifications: - * Copyright (C) 2011, 2015, D. R. Commander. + * Copyright (C) 2011, 2015, 2020, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -25,7 +25,7 @@ JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf) { - my_upsample_ptr upsample = (my_upsample_ptr)cinfo->upsample; + my_merged_upsample_ptr upsample = (my_merged_upsample_ptr)cinfo->upsample; register int y, cred, cgreen, cblue; int cb, cr; register JSAMPROW outptr; @@ -46,13 +46,13 @@ /* Loop for each pair of output pixels */ for (col = cinfo->output_width >> 1; col > 0; col--) { /* Do the chroma part of the calculation */ - cb = GETJSAMPLE(*inptr1++); - cr = GETJSAMPLE(*inptr2++); + cb = *inptr1++; + cr = *inptr2++; cred = Crrtab[cr]; cgreen = (int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS); cblue = Cbbtab[cb]; /* Fetch 2 Y values and emit 2 pixels */ - y = GETJSAMPLE(*inptr0++); + y = *inptr0++; outptr[RGB_RED] = range_limit[y + cred]; outptr[RGB_GREEN] = range_limit[y + cgreen]; outptr[RGB_BLUE] = range_limit[y + cblue]; @@ -60,7 +60,7 @@ outptr[RGB_ALPHA] = 0xFF; #endif outptr += RGB_PIXELSIZE; - y = GETJSAMPLE(*inptr0++); + y = *inptr0++; outptr[RGB_RED] = range_limit[y + cred]; outptr[RGB_GREEN] = range_limit[y + cgreen]; outptr[RGB_BLUE] = range_limit[y + cblue]; @@ -71,12 +71,12 @@ } /* If image width is odd, do the last output column separately */ if (cinfo->output_width & 1) { - cb = GETJSAMPLE(*inptr1); - cr = GETJSAMPLE(*inptr2); + cb = *inptr1; + cr = *inptr2; cred = Crrtab[cr]; cgreen = (int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS); cblue = Cbbtab[cb]; - y = GETJSAMPLE(*inptr0); + y = *inptr0; outptr[RGB_RED] = range_limit[y + cred]; outptr[RGB_GREEN] = range_limit[y + cgreen]; outptr[RGB_BLUE] = range_limit[y + cblue]; @@ -97,7 +97,7 @@ JDIMENSION in_row_group_ctr, JSAMPARRAY output_buf) { - my_upsample_ptr upsample = (my_upsample_ptr)cinfo->upsample; + my_merged_upsample_ptr upsample = (my_merged_upsample_ptr)cinfo->upsample; register int y, cred, cgreen, cblue; int cb, cr; register JSAMPROW outptr0, outptr1; @@ -120,13 +120,13 @@ /* Loop for each group of output pixels */ for (col = cinfo->output_width >> 1; col > 0; col--) { /* Do the chroma part of the calculation */ - cb = GETJSAMPLE(*inptr1++); - cr = GETJSAMPLE(*inptr2++); + cb = *inptr1++; + cr = *inptr2++; cred = Crrtab[cr]; cgreen = (int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS); cblue = Cbbtab[cb]; /* Fetch 4 Y values and emit 4 pixels */ - y = GETJSAMPLE(*inptr00++); + y = *inptr00++; outptr0[RGB_RED] = range_limit[y + cred]; outptr0[RGB_GREEN] = range_limit[y + cgreen]; outptr0[RGB_BLUE] = range_limit[y + cblue]; @@ -134,7 +134,7 @@ outptr0[RGB_ALPHA] = 0xFF; #endif outptr0 += RGB_PIXELSIZE; - y = GETJSAMPLE(*inptr00++); + y = *inptr00++; outptr0[RGB_RED] = range_limit[y + cred]; outptr0[RGB_GREEN] = range_limit[y + cgreen]; outptr0[RGB_BLUE] = range_limit[y + cblue]; @@ -142,7 +142,7 @@ outptr0[RGB_ALPHA] = 0xFF; #endif outptr0 += RGB_PIXELSIZE; - y = GETJSAMPLE(*inptr01++); + y = *inptr01++; outptr1[RGB_RED] = range_limit[y + cred]; outptr1[RGB_GREEN] = range_limit[y + cgreen]; outptr1[RGB_BLUE] = range_limit[y + cblue]; @@ -150,7 +150,7 @@ outptr1[RGB_ALPHA] = 0xFF; #endif outptr1 += RGB_PIXELSIZE; - y = GETJSAMPLE(*inptr01++); + y = *inptr01++; outptr1[RGB_RED] = range_limit[y + cred]; outptr1[RGB_GREEN] = range_limit[y + cgreen]; outptr1[RGB_BLUE] = range_limit[y + cblue]; @@ -161,19 +161,19 @@ } /* If image width is odd, do the last output column separately */ if (cinfo->output_width & 1) { - cb = GETJSAMPLE(*inptr1); - cr = GETJSAMPLE(*inptr2); + cb = *inptr1; + cr = *inptr2; cred = Crrtab[cr]; cgreen = (int)RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS); cblue = Cbbtab[cb]; - y = GETJSAMPLE(*inptr00); + y = *inptr00; outptr0[RGB_RED] = range_limit[y + cred]; outptr0[RGB_GREEN] = range_limit[y + cgreen]; outptr0[RGB_BLUE] = range_limit[y + cblue]; #ifdef RGB_ALPHA outptr0[RGB_ALPHA] = 0xFF; #endif - y = GETJSAMPLE(*inptr01); + y = *inptr01; outptr1[RGB_RED] = range_limit[y + cred]; outptr1[RGB_GREEN] = range_limit[y + cgreen]; outptr1[RGB_BLUE] = range_limit[y + cblue]; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdphuff.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdphuff.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdphuff.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdphuff.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * This file was part of the Independent JPEG Group's software: * Copyright (C) 1995-1997, Thomas G. Lane. * libjpeg-turbo Modifications: - * Copyright (C) 2015-2016, 2018, D. R. Commander. + * Copyright (C) 2015-2016, 2018-2021, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -41,25 +41,6 @@ int last_dc_val[MAX_COMPS_IN_SCAN]; /* last DC coef for each component */ } savable_state; -/* This macro is to work around compilers with missing or broken - * structure assignment. You'll need to fix this code if you have - * such a compiler and you change MAX_COMPS_IN_SCAN. - */ - -#ifndef NO_STRUCT_ASSIGN -#define ASSIGN_STATE(dest, src) ((dest) = (src)) -#else -#if MAX_COMPS_IN_SCAN == 4 -#define ASSIGN_STATE(dest, src) \ - ((dest).EOBRUN = (src).EOBRUN, \ - (dest).last_dc_val[0] = (src).last_dc_val[0], \ - (dest).last_dc_val[1] = (src).last_dc_val[1], \ - (dest).last_dc_val[2] = (src).last_dc_val[2], \ - (dest).last_dc_val[3] = (src).last_dc_val[3]) -#endif -#endif - - typedef struct { struct jpeg_entropy_decoder pub; /* public fields */ @@ -102,7 +83,7 @@ boolean is_DC_band, bad; int ci, coefi, tbl; d_derived_tbl **pdtbl; - int *coef_bit_ptr; + int *coef_bit_ptr, *prev_coef_bit_ptr; jpeg_component_info *compptr; is_DC_band = (cinfo->Ss == 0); @@ -143,8 +124,15 @@ for (ci = 0; ci < cinfo->comps_in_scan; ci++) { int cindex = cinfo->cur_comp_info[ci]->component_index; coef_bit_ptr = &cinfo->coef_bits[cindex][0]; + prev_coef_bit_ptr = &cinfo->coef_bits[cindex + cinfo->num_components][0]; if (!is_DC_band && coef_bit_ptr[0] < 0) /* AC without prior DC scan */ WARNMS2(cinfo, JWRN_BOGUS_PROGRESSION, cindex, 0); + for (coefi = MIN(cinfo->Ss, 1); coefi <= MAX(cinfo->Se, 9); coefi++) { + if (cinfo->input_scan_number > 1) + prev_coef_bit_ptr[coefi] = coef_bit_ptr[coefi]; + else + prev_coef_bit_ptr[coefi] = 0; + } for (coefi = cinfo->Ss; coefi <= cinfo->Se; coefi++) { int expected = (coef_bit_ptr[coefi] < 0) ? 0 : coef_bit_ptr[coefi]; if (cinfo->Ah != expected) @@ -323,7 +311,7 @@ /* Load up working state */ BITREAD_LOAD_STATE(cinfo, entropy->bitstate); - ASSIGN_STATE(state, entropy->saved); + state = entropy->saved; /* Outer loop handles each block in the MCU */ @@ -356,11 +344,12 @@ /* Completed MCU, so update state */ BITREAD_SAVE_STATE(cinfo, entropy->bitstate); - ASSIGN_STATE(entropy->saved, state); + entropy->saved = state; } /* Account for restart interval (no-op if not using restarts) */ - entropy->restarts_to_go--; + if (cinfo->restart_interval) + entropy->restarts_to_go--; return TRUE; } @@ -444,7 +433,8 @@ } /* Account for restart interval (no-op if not using restarts) */ - entropy->restarts_to_go--; + if (cinfo->restart_interval) + entropy->restarts_to_go--; return TRUE; } @@ -495,7 +485,8 @@ BITREAD_SAVE_STATE(cinfo, entropy->bitstate); /* Account for restart interval (no-op if not using restarts) */ - entropy->restarts_to_go--; + if (cinfo->restart_interval) + entropy->restarts_to_go--; return TRUE; } @@ -638,7 +629,8 @@ } /* Account for restart interval (no-op if not using restarts) */ - entropy->restarts_to_go--; + if (cinfo->restart_interval) + entropy->restarts_to_go--; return TRUE; @@ -676,7 +668,7 @@ /* Create progression status table */ cinfo->coef_bits = (int (*)[DCTSIZE2]) (*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE, - cinfo->num_components * DCTSIZE2 * + cinfo->num_components * 2 * DCTSIZE2 * sizeof(int)); coef_bit_ptr = &cinfo->coef_bits[0][0]; for (ci = 0; ci < cinfo->num_components; ci++) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdsample.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdsample.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdsample.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdsample.c 2022-11-11 15:29:17.000000000 +0800 @@ -8,7 +8,7 @@ * Copyright (C) 2010, 2015-2016, D. R. Commander. * Copyright (C) 2014, MIPS Technologies, Inc., California. * Copyright (C) 2015, Google, Inc. - * Copyright (C) 2019, Arm Limited. + * Copyright (C) 2019-2020, Arm Limited. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -177,7 +177,7 @@ outptr = output_data[outrow]; outend = outptr + cinfo->output_width; while (outptr < outend) { - invalue = *inptr++; /* don't need GETJSAMPLE() here */ + invalue = *inptr++; for (h = h_expand; h > 0; h--) { *outptr++ = invalue; } @@ -213,7 +213,7 @@ outptr = output_data[inrow]; outend = outptr + cinfo->output_width; while (outptr < outend) { - invalue = *inptr++; /* don't need GETJSAMPLE() here */ + invalue = *inptr++; *outptr++ = invalue; *outptr++ = invalue; } @@ -242,7 +242,7 @@ outptr = output_data[outrow]; outend = outptr + cinfo->output_width; while (outptr < outend) { - invalue = *inptr++; /* don't need GETJSAMPLE() here */ + invalue = *inptr++; *outptr++ = invalue; *outptr++ = invalue; } @@ -283,20 +283,20 @@ inptr = input_data[inrow]; outptr = output_data[inrow]; /* Special case for first column */ - invalue = GETJSAMPLE(*inptr++); + invalue = *inptr++; *outptr++ = (JSAMPLE)invalue; - *outptr++ = (JSAMPLE)((invalue * 3 + GETJSAMPLE(*inptr) + 2) >> 2); + *outptr++ = (JSAMPLE)((invalue * 3 + inptr[0] + 2) >> 2); for (colctr = compptr->downsampled_width - 2; colctr > 0; colctr--) { /* General case: 3/4 * nearer pixel + 1/4 * further pixel */ - invalue = GETJSAMPLE(*inptr++) * 3; - *outptr++ = (JSAMPLE)((invalue + GETJSAMPLE(inptr[-2]) + 1) >> 2); - *outptr++ = (JSAMPLE)((invalue + GETJSAMPLE(*inptr) + 2) >> 2); + invalue = (*inptr++) * 3; + *outptr++ = (JSAMPLE)((invalue + inptr[-2] + 1) >> 2); + *outptr++ = (JSAMPLE)((invalue + inptr[0] + 2) >> 2); } /* Special case for last column */ - invalue = GETJSAMPLE(*inptr); - *outptr++ = (JSAMPLE)((invalue * 3 + GETJSAMPLE(inptr[-1]) + 1) >> 2); + invalue = *inptr; + *outptr++ = (JSAMPLE)((invalue * 3 + inptr[-1] + 1) >> 2); *outptr++ = (JSAMPLE)invalue; } } @@ -338,7 +338,7 @@ outptr = output_data[outrow++]; for (colctr = 0; colctr < compptr->downsampled_width; colctr++) { - thiscolsum = GETJSAMPLE(*inptr0++) * 3 + GETJSAMPLE(*inptr1++); + thiscolsum = (*inptr0++) * 3 + (*inptr1++); *outptr++ = (JSAMPLE)((thiscolsum + bias) >> 2); } } @@ -381,8 +381,8 @@ outptr = output_data[outrow++]; /* Special case for first column */ - thiscolsum = GETJSAMPLE(*inptr0++) * 3 + GETJSAMPLE(*inptr1++); - nextcolsum = GETJSAMPLE(*inptr0++) * 3 + GETJSAMPLE(*inptr1++); + thiscolsum = (*inptr0++) * 3 + (*inptr1++); + nextcolsum = (*inptr0++) * 3 + (*inptr1++); *outptr++ = (JSAMPLE)((thiscolsum * 4 + 8) >> 4); *outptr++ = (JSAMPLE)((thiscolsum * 3 + nextcolsum + 7) >> 4); lastcolsum = thiscolsum; thiscolsum = nextcolsum; @@ -390,7 +390,7 @@ for (colctr = compptr->downsampled_width - 2; colctr > 0; colctr--) { /* General case: 3/4 * nearer pixel + 1/4 * further pixel in each */ /* dimension, thus 9/16, 3/16, 3/16, 1/16 overall */ - nextcolsum = GETJSAMPLE(*inptr0++) * 3 + GETJSAMPLE(*inptr1++); + nextcolsum = (*inptr0++) * 3 + (*inptr1++); *outptr++ = (JSAMPLE)((thiscolsum * 3 + lastcolsum + 8) >> 4); *outptr++ = (JSAMPLE)((thiscolsum * 3 + nextcolsum + 7) >> 4); lastcolsum = thiscolsum; thiscolsum = nextcolsum; @@ -477,7 +477,13 @@ } else if (h_in_group == h_out_group && v_in_group * 2 == v_out_group && do_fancy) { /* Non-fancy upsampling is handled by the generic method */ - upsample->methods[ci] = h1v2_fancy_upsample; +#if defined(__arm__) || defined(__aarch64__) || \ + defined(_M_ARM) || defined(_M_ARM64) + if (jsimd_can_h1v2_fancy_upsample()) + upsample->methods[ci] = jsimd_h1v2_fancy_upsample; + else +#endif + upsample->methods[ci] = h1v2_fancy_upsample; upsample->pub.need_context_rows = TRUE; } else if (h_in_group * 2 == h_out_group && v_in_group * 2 == v_out_group) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdtrans.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdtrans.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jdtrans.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jdtrans.c 2022-11-11 15:29:17.000000000 +0800 @@ -3,8 +3,8 @@ * * This file was part of the Independent JPEG Group's software: * Copyright (C) 1995-1997, Thomas G. Lane. - * It was modified by The libjpeg-turbo Project to include only code relevant - * to libjpeg-turbo. + * libjpeg-turbo Modifications: + * Copyright (C) 2020, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -16,6 +16,7 @@ #define JPEG_INTERNALS #include "jinclude.h" #include "jpeglib.h" +#include "jpegcomp.h" /* Forward declarations */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jerror.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jerror.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jerror.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jerror.h 2022-11-11 15:29:17.000000000 +0800 @@ -207,6 +207,10 @@ #endif #endif JMESSAGE(JWRN_BOGUS_ICC, "Corrupt JPEG data: bad ICC marker") +#if JPEG_LIB_VERSION < 70 +JMESSAGE(JERR_BAD_DROP_SAMPLING, + "Component index %d: mismatching sampling ratio %d:%d, %d:%d, %c") +#endif #ifdef JMAKE_ENUM_LIST @@ -252,6 +256,15 @@ (cinfo)->err->msg_parm.i[2] = (p3), \ (cinfo)->err->msg_parm.i[3] = (p4), \ (*(cinfo)->err->error_exit) ((j_common_ptr)(cinfo))) +#define ERREXIT6(cinfo, code, p1, p2, p3, p4, p5, p6) \ + ((cinfo)->err->msg_code = (code), \ + (cinfo)->err->msg_parm.i[0] = (p1), \ + (cinfo)->err->msg_parm.i[1] = (p2), \ + (cinfo)->err->msg_parm.i[2] = (p3), \ + (cinfo)->err->msg_parm.i[3] = (p4), \ + (cinfo)->err->msg_parm.i[4] = (p5), \ + (cinfo)->err->msg_parm.i[5] = (p6), \ + (*(cinfo)->err->error_exit) ((j_common_ptr)(cinfo))) #define ERREXITS(cinfo, code, str) \ ((cinfo)->err->msg_code = (code), \ strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jfdctint.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jfdctint.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jfdctint.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jfdctint.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,11 +4,11 @@ * This file was part of the Independent JPEG Group's software: * Copyright (C) 1991-1996, Thomas G. Lane. * libjpeg-turbo Modifications: - * Copyright (C) 2015, D. R. Commander. + * Copyright (C) 2015, 2020, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * - * This file contains a slow-but-accurate integer implementation of the + * This file contains a slower but more accurate integer implementation of the * forward DCT (Discrete Cosine Transform). * * A 2-D DCT can be done by 1-D DCT on each row followed by 1-D DCT diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jidctint.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jidctint.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jidctint.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jidctint.c 2022-11-11 15:29:17.000000000 +0800 @@ -3,13 +3,13 @@ * * This file was part of the Independent JPEG Group's software: * Copyright (C) 1991-1998, Thomas G. Lane. - * Modification developed 2002-2009 by Guido Vollbeding. + * Modification developed 2002-2018 by Guido Vollbeding. * libjpeg-turbo Modifications: - * Copyright (C) 2015, D. R. Commander. + * Copyright (C) 2015, 2020, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * - * This file contains a slow-but-accurate integer implementation of the + * This file contains a slower but more accurate integer implementation of the * inverse DCT (Discrete Cosine Transform). In the IJG code, this routine * must also perform dequantization of the input coefficients. * @@ -417,7 +417,7 @@ /* * Perform dequantization and inverse DCT on one block of coefficients, - * producing a 7x7 output block. + * producing a reduced-size 7x7 output block. * * Optimized algorithm with 12 multiplications in the 1-D kernel. * cK represents sqrt(2) * cos(K*pi/14). @@ -1258,7 +1258,7 @@ /* * Perform dequantization and inverse DCT on one block of coefficients, - * producing a 11x11 output block. + * producing an 11x11 output block. * * Optimized algorithm with 24 multiplications in the 1-D kernel. * cK represents sqrt(2) * cos(K*pi/22). @@ -2398,7 +2398,7 @@ tmp0 = DEQUANTIZE(inptr[DCTSIZE * 0], quantptr[DCTSIZE * 0]); tmp0 = LEFT_SHIFT(tmp0, CONST_BITS); /* Add fudge factor here for final descale. */ - tmp0 += 1 << (CONST_BITS - PASS1_BITS - 1); + tmp0 += ONE << (CONST_BITS - PASS1_BITS - 1); z1 = DEQUANTIZE(inptr[DCTSIZE * 4], quantptr[DCTSIZE * 4]); tmp1 = MULTIPLY(z1, FIX(1.306562965)); /* c4[16] = c2[8] */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jmemmgr.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jmemmgr.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jmemmgr.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jmemmgr.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * This file was part of the Independent JPEG Group's software: * Copyright (C) 1991-1997, Thomas G. Lane. * libjpeg-turbo Modifications: - * Copyright (C) 2016, D. R. Commander. + * Copyright (C) 2016, 2021, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -1032,7 +1032,7 @@ large_pool_ptr next_lhdr_ptr = lhdr_ptr->next; space_freed = lhdr_ptr->bytes_used + lhdr_ptr->bytes_left + - sizeof(large_pool_hdr); + sizeof(large_pool_hdr) + ALIGN_SIZE - 1; jpeg_free_large(cinfo, (void *)lhdr_ptr, space_freed); mem->total_space_allocated -= space_freed; lhdr_ptr = next_lhdr_ptr; @@ -1045,7 +1045,7 @@ while (shdr_ptr != NULL) { small_pool_ptr next_shdr_ptr = shdr_ptr->next; space_freed = shdr_ptr->bytes_used + shdr_ptr->bytes_left + - sizeof(small_pool_hdr); + sizeof(small_pool_hdr) + ALIGN_SIZE - 1; jpeg_free_small(cinfo, (void *)shdr_ptr, space_freed); mem->total_space_allocated -= space_freed; shdr_ptr = next_shdr_ptr; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jmorecfg.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jmorecfg.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jmorecfg.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jmorecfg.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Copyright (C) 1991-1997, Thomas G. Lane. * Modified 1997-2009 by Guido Vollbeding. * libjpeg-turbo Modifications: - * Copyright (C) 2009, 2011, 2014-2015, 2018, D. R. Commander. + * Copyright (C) 2009, 2011, 2014-2015, 2018, 2020, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -43,25 +43,11 @@ #if BITS_IN_JSAMPLE == 8 /* JSAMPLE should be the smallest type that will hold the values 0..255. - * You can use a signed char by having GETJSAMPLE mask it with 0xFF. */ -#ifdef HAVE_UNSIGNED_CHAR - typedef unsigned char JSAMPLE; #define GETJSAMPLE(value) ((int)(value)) -#else /* not HAVE_UNSIGNED_CHAR */ - -typedef char JSAMPLE; -#ifdef __CHAR_UNSIGNED__ -#define GETJSAMPLE(value) ((int)(value)) -#else -#define GETJSAMPLE(value) ((int)(value) & 0xFF) -#endif /* __CHAR_UNSIGNED__ */ - -#endif /* HAVE_UNSIGNED_CHAR */ - #define MAXJSAMPLE 255 #define CENTERJSAMPLE 128 @@ -97,22 +83,9 @@ * managers, this is also the data type passed to fread/fwrite. */ -#ifdef HAVE_UNSIGNED_CHAR - typedef unsigned char JOCTET; #define GETJOCTET(value) (value) -#else /* not HAVE_UNSIGNED_CHAR */ - -typedef char JOCTET; -#ifdef __CHAR_UNSIGNED__ -#define GETJOCTET(value) (value) -#else -#define GETJOCTET(value) ((value) & 0xFF) -#endif /* __CHAR_UNSIGNED__ */ - -#endif /* HAVE_UNSIGNED_CHAR */ - /* These typedefs are used for various table entries and so forth. * They must be at least as wide as specified; but making them too big @@ -123,15 +96,7 @@ /* UINT8 must hold at least the values 0..255. */ -#ifdef HAVE_UNSIGNED_CHAR typedef unsigned char UINT8; -#else /* not HAVE_UNSIGNED_CHAR */ -#ifdef __CHAR_UNSIGNED__ -typedef char UINT8; -#else /* not __CHAR_UNSIGNED__ */ -typedef short UINT8; -#endif /* __CHAR_UNSIGNED__ */ -#endif /* HAVE_UNSIGNED_CHAR */ /* UINT16 must hold at least the values 0..65535. */ @@ -273,9 +238,9 @@ /* Capability options common to encoder and decoder: */ -#define DCT_ISLOW_SUPPORTED /* slow but accurate integer algorithm */ -#define DCT_IFAST_SUPPORTED /* faster, less accurate integer method */ -#define DCT_FLOAT_SUPPORTED /* floating-point: accurate, fast on fast HW */ +#define DCT_ISLOW_SUPPORTED /* accurate integer method */ +#define DCT_IFAST_SUPPORTED /* less accurate int method [legacy feature] */ +#define DCT_FLOAT_SUPPORTED /* floating-point method [legacy feature] */ /* Encoder capability options: */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jpegcomp.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jpegcomp.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jpegcomp.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jpegcomp.h 2022-11-11 15:29:17.000000000 +0800 @@ -1,7 +1,7 @@ /* * jpegcomp.h * - * Copyright (C) 2010, D. R. Commander. + * Copyright (C) 2010, 2020, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -19,6 +19,7 @@ #define _min_DCT_v_scaled_size min_DCT_v_scaled_size #define _jpeg_width jpeg_width #define _jpeg_height jpeg_height +#define JERR_ARITH_NOTIMPL JERR_NOT_COMPILED #else #define _DCT_scaled_size DCT_scaled_size #define _DCT_h_scaled_size DCT_scaled_size diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jpegint.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jpegint.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jpegint.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jpegint.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,8 +5,9 @@ * Copyright (C) 1991-1997, Thomas G. Lane. * Modified 1997-2009 by Guido Vollbeding. * libjpeg-turbo Modifications: - * Copyright (C) 2015-2016, D. R. Commander. + * Copyright (C) 2015-2016, 2019, 2021, D. R. Commander. * Copyright (C) 2015, Google, Inc. + * Copyright (C) 2021, Alex Richardson. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -47,6 +48,18 @@ /* JLONG must hold at least signed 32-bit values. */ typedef long JLONG; +/* JUINTPTR must hold pointer values. */ +#ifdef __UINTPTR_TYPE__ +/* + * __UINTPTR_TYPE__ is GNU-specific and available in GCC 4.6+ and Clang 3.0+. + * Fortunately, that is sufficient to support the few architectures for which + * sizeof(void *) != sizeof(size_t). The only other options would require C99 + * or Clang-specific builtins. + */ +typedef __UINTPTR_TYPE__ JUINTPTR; +#else +typedef size_t JUINTPTR; +#endif /* * Left shift macro that handles a negative operand without causing any @@ -158,6 +171,9 @@ JDIMENSION first_MCU_col[MAX_COMPONENTS]; JDIMENSION last_MCU_col[MAX_COMPONENTS]; boolean jinit_upsampler_no_alloc; + + /* Last iMCU row that was successfully decoded */ + JDIMENSION last_good_iMCU_row; }; /* Input control module */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jpeglib.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jpeglib.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jpeglib.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jpeglib.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ * Copyright (C) 1991-1998, Thomas G. Lane. * Modified 2002-2009 by Guido Vollbeding. * libjpeg-turbo Modifications: - * Copyright (C) 2009-2011, 2013-2014, 2016-2017, D. R. Commander. + * Copyright (C) 2009-2011, 2013-2014, 2016-2017, 2020, D. R. Commander. * Copyright (C) 2015, Google, Inc. * For conditions of distribution and use, see the accompanying README.ijg * file. @@ -244,9 +244,9 @@ /* DCT/IDCT algorithm options. */ typedef enum { - JDCT_ISLOW, /* slow but accurate integer algorithm */ - JDCT_IFAST, /* faster, less accurate integer method */ - JDCT_FLOAT /* floating-point: accurate, fast on fast HW */ + JDCT_ISLOW, /* accurate integer method */ + JDCT_IFAST, /* less accurate integer method [legacy feature] */ + JDCT_FLOAT /* floating-point method [legacy feature] */ } J_DCT_METHOD; #ifndef JDCT_DEFAULT /* may be overridden in jconfig.h */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jquant1.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jquant1.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jquant1.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jquant1.c 2022-11-11 15:29:17.000000000 +0800 @@ -479,7 +479,7 @@ for (col = width; col > 0; col--) { pixcode = 0; for (ci = 0; ci < nc; ci++) { - pixcode += GETJSAMPLE(colorindex[ci][GETJSAMPLE(*ptrin++)]); + pixcode += colorindex[ci][*ptrin++]; } *ptrout++ = (JSAMPLE)pixcode; } @@ -506,9 +506,9 @@ ptrin = input_buf[row]; ptrout = output_buf[row]; for (col = width; col > 0; col--) { - pixcode = GETJSAMPLE(colorindex0[GETJSAMPLE(*ptrin++)]); - pixcode += GETJSAMPLE(colorindex1[GETJSAMPLE(*ptrin++)]); - pixcode += GETJSAMPLE(colorindex2[GETJSAMPLE(*ptrin++)]); + pixcode = colorindex0[*ptrin++]; + pixcode += colorindex1[*ptrin++]; + pixcode += colorindex2[*ptrin++]; *ptrout++ = (JSAMPLE)pixcode; } } @@ -552,7 +552,7 @@ * required amount of padding. */ *output_ptr += - colorindex_ci[GETJSAMPLE(*input_ptr) + dither[col_index]]; + colorindex_ci[*input_ptr + dither[col_index]]; input_ptr += nc; output_ptr++; col_index = (col_index + 1) & ODITHER_MASK; @@ -595,12 +595,9 @@ col_index = 0; for (col = width; col > 0; col--) { - pixcode = - GETJSAMPLE(colorindex0[GETJSAMPLE(*input_ptr++) + dither0[col_index]]); - pixcode += - GETJSAMPLE(colorindex1[GETJSAMPLE(*input_ptr++) + dither1[col_index]]); - pixcode += - GETJSAMPLE(colorindex2[GETJSAMPLE(*input_ptr++) + dither2[col_index]]); + pixcode = colorindex0[(*input_ptr++) + dither0[col_index]]; + pixcode += colorindex1[(*input_ptr++) + dither1[col_index]]; + pixcode += colorindex2[(*input_ptr++) + dither2[col_index]]; *output_ptr++ = (JSAMPLE)pixcode; col_index = (col_index + 1) & ODITHER_MASK; } @@ -677,15 +674,15 @@ * The maximum error is +- MAXJSAMPLE; this sets the required size * of the range_limit array. */ - cur += GETJSAMPLE(*input_ptr); - cur = GETJSAMPLE(range_limit[cur]); + cur += *input_ptr; + cur = range_limit[cur]; /* Select output value, accumulate into output code for this pixel */ - pixcode = GETJSAMPLE(colorindex_ci[cur]); + pixcode = colorindex_ci[cur]; *output_ptr += (JSAMPLE)pixcode; /* Compute actual representation error at this pixel */ /* Note: we can do this even though we don't have the final */ /* pixel code, because the colormap is orthogonal. */ - cur -= GETJSAMPLE(colormap_ci[pixcode]); + cur -= colormap_ci[pixcode]; /* Compute error fractions to be propagated to adjacent pixels. * Add these into the running sums, and simultaneously shift the * next-line error sums left by 1 column. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jquant2.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jquant2.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jquant2.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jquant2.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,7 +4,7 @@ * This file was part of the Independent JPEG Group's software: * Copyright (C) 1991-1996, Thomas G. Lane. * libjpeg-turbo Modifications: - * Copyright (C) 2009, 2014-2015, D. R. Commander. + * Copyright (C) 2009, 2014-2015, 2020, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -215,9 +215,9 @@ ptr = input_buf[row]; for (col = width; col > 0; col--) { /* get pixel value and index into the histogram */ - histp = &histogram[GETJSAMPLE(ptr[0]) >> C0_SHIFT] - [GETJSAMPLE(ptr[1]) >> C1_SHIFT] - [GETJSAMPLE(ptr[2]) >> C2_SHIFT]; + histp = &histogram[ptr[0] >> C0_SHIFT] + [ptr[1] >> C1_SHIFT] + [ptr[2] >> C2_SHIFT]; /* increment, check for overflow and undo increment if so. */ if (++(*histp) <= 0) (*histp)--; @@ -665,7 +665,7 @@ for (i = 0; i < numcolors; i++) { /* We compute the squared-c0-distance term, then add in the other two. */ - x = GETJSAMPLE(cinfo->colormap[0][i]); + x = cinfo->colormap[0][i]; if (x < minc0) { tdist = (x - minc0) * C0_SCALE; min_dist = tdist * tdist; @@ -688,7 +688,7 @@ } } - x = GETJSAMPLE(cinfo->colormap[1][i]); + x = cinfo->colormap[1][i]; if (x < minc1) { tdist = (x - minc1) * C1_SCALE; min_dist += tdist * tdist; @@ -710,7 +710,7 @@ } } - x = GETJSAMPLE(cinfo->colormap[2][i]); + x = cinfo->colormap[2][i]; if (x < minc2) { tdist = (x - minc2) * C2_SCALE; min_dist += tdist * tdist; @@ -788,13 +788,13 @@ #define STEP_C2 ((1 << C2_SHIFT) * C2_SCALE) for (i = 0; i < numcolors; i++) { - icolor = GETJSAMPLE(colorlist[i]); + icolor = colorlist[i]; /* Compute (square of) distance from minc0/c1/c2 to this color */ - inc0 = (minc0 - GETJSAMPLE(cinfo->colormap[0][icolor])) * C0_SCALE; + inc0 = (minc0 - cinfo->colormap[0][icolor]) * C0_SCALE; dist0 = inc0 * inc0; - inc1 = (minc1 - GETJSAMPLE(cinfo->colormap[1][icolor])) * C1_SCALE; + inc1 = (minc1 - cinfo->colormap[1][icolor]) * C1_SCALE; dist0 += inc1 * inc1; - inc2 = (minc2 - GETJSAMPLE(cinfo->colormap[2][icolor])) * C2_SCALE; + inc2 = (minc2 - cinfo->colormap[2][icolor]) * C2_SCALE; dist0 += inc2 * inc2; /* Form the initial difference increments */ inc0 = inc0 * (2 * STEP_C0) + STEP_C0 * STEP_C0; @@ -879,7 +879,7 @@ for (ic1 = 0; ic1 < BOX_C1_ELEMS; ic1++) { cachep = &histogram[c0 + ic0][c1 + ic1][c2]; for (ic2 = 0; ic2 < BOX_C2_ELEMS; ic2++) { - *cachep++ = (histcell)(GETJSAMPLE(*cptr++) + 1); + *cachep++ = (histcell)((*cptr++) + 1); } } } @@ -909,9 +909,9 @@ outptr = output_buf[row]; for (col = width; col > 0; col--) { /* get pixel value and index into the cache */ - c0 = GETJSAMPLE(*inptr++) >> C0_SHIFT; - c1 = GETJSAMPLE(*inptr++) >> C1_SHIFT; - c2 = GETJSAMPLE(*inptr++) >> C2_SHIFT; + c0 = (*inptr++) >> C0_SHIFT; + c1 = (*inptr++) >> C1_SHIFT; + c2 = (*inptr++) >> C2_SHIFT; cachep = &histogram[c0][c1][c2]; /* If we have not seen this color before, find nearest colormap entry */ /* and update the cache */ @@ -996,12 +996,12 @@ * The maximum error is +- MAXJSAMPLE (or less with error limiting); * this sets the required size of the range_limit array. */ - cur0 += GETJSAMPLE(inptr[0]); - cur1 += GETJSAMPLE(inptr[1]); - cur2 += GETJSAMPLE(inptr[2]); - cur0 = GETJSAMPLE(range_limit[cur0]); - cur1 = GETJSAMPLE(range_limit[cur1]); - cur2 = GETJSAMPLE(range_limit[cur2]); + cur0 += inptr[0]; + cur1 += inptr[1]; + cur2 += inptr[2]; + cur0 = range_limit[cur0]; + cur1 = range_limit[cur1]; + cur2 = range_limit[cur2]; /* Index into the cache with adjusted pixel value */ cachep = &histogram[cur0 >> C0_SHIFT][cur1 >> C1_SHIFT][cur2 >> C2_SHIFT]; @@ -1015,9 +1015,9 @@ register int pixcode = *cachep - 1; *outptr = (JSAMPLE)pixcode; /* Compute representation error for this pixel */ - cur0 -= GETJSAMPLE(colormap0[pixcode]); - cur1 -= GETJSAMPLE(colormap1[pixcode]); - cur2 -= GETJSAMPLE(colormap2[pixcode]); + cur0 -= colormap0[pixcode]; + cur1 -= colormap1[pixcode]; + cur2 -= colormap2[pixcode]; } /* Compute error fractions to be propagated to adjacent pixels. * Add these into the running sums, and simultaneously shift the @@ -1145,7 +1145,7 @@ int i; /* Only F-S dithering or no dithering is supported. */ - /* If user asks for ordered dither, give him F-S. */ + /* If user asks for ordered dither, give them F-S. */ if (cinfo->dither_mode != JDITHER_NONE) cinfo->dither_mode = JDITHER_FS; @@ -1263,7 +1263,7 @@ cquantize->sv_colormap = NULL; /* Only F-S dithering or no dithering is supported. */ - /* If user asks for ordered dither, give him F-S. */ + /* If user asks for ordered dither, give them F-S. */ if (cinfo->dither_mode != JDITHER_NONE) cinfo->dither_mode = JDITHER_FS; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jsimd.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jsimd.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jsimd.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jsimd.h 2022-11-11 15:29:17.000000000 +0800 @@ -4,6 +4,7 @@ * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB * Copyright (C) 2011, 2014, D. R. Commander. * Copyright (C) 2015-2016, 2018, Matthieu Darbois. + * Copyright (C) 2020, Arm Limited. * * Based on the x86 SIMD extension for IJG JPEG library, * Copyright (C) 1999-2006, MIYASAKA Masaru. @@ -75,6 +76,7 @@ EXTERN(int) jsimd_can_h2v2_fancy_upsample(void); EXTERN(int) jsimd_can_h2v1_fancy_upsample(void); +EXTERN(int) jsimd_can_h1v2_fancy_upsample(void); EXTERN(void) jsimd_h2v2_fancy_upsample(j_decompress_ptr cinfo, jpeg_component_info *compptr, @@ -84,6 +86,10 @@ jpeg_component_info *compptr, JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr); +EXTERN(void) jsimd_h1v2_fancy_upsample(j_decompress_ptr cinfo, + jpeg_component_info *compptr, + JSAMPARRAY input_data, + JSAMPARRAY *output_data_ptr); EXTERN(int) jsimd_can_h2v2_merged_upsample(void); EXTERN(int) jsimd_can_h2v1_merged_upsample(void); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jsimd_none.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jsimd_none.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jsimd_none.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jsimd_none.c 2022-11-11 15:29:17.000000000 +0800 @@ -4,6 +4,7 @@ * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB * Copyright (C) 2009-2011, 2014, D. R. Commander. * Copyright (C) 2015-2016, 2018, Matthieu Darbois. + * Copyright (C) 2020, Arm Limited. * * Based on the x86 SIMD extension for IJG JPEG library, * Copyright (C) 1999-2006, MIYASAKA Masaru. @@ -169,6 +170,12 @@ return 0; } +GLOBAL(int) +jsimd_can_h1v2_fancy_upsample(void) +{ + return 0; +} + GLOBAL(void) jsimd_h2v2_fancy_upsample(j_decompress_ptr cinfo, jpeg_component_info *compptr, JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr) @@ -180,6 +187,12 @@ JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr) { } + +GLOBAL(void) +jsimd_h1v2_fancy_upsample(j_decompress_ptr cinfo, jpeg_component_info *compptr, + JSAMPARRAY input_data, JSAMPARRAY *output_data_ptr) +{ +} GLOBAL(int) jsimd_can_h2v2_merged_upsample(void) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jversion.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jversion.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/src/jversion.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/src/jversion.h 2022-11-11 15:29:17.000000000 +0800 @@ -2,9 +2,9 @@ * jversion.h * * This file was part of the Independent JPEG Group's software: - * Copyright (C) 1991-2012, Thomas G. Lane, Guido Vollbeding. + * Copyright (C) 1991-2020, Thomas G. Lane, Guido Vollbeding. * libjpeg-turbo Modifications: - * Copyright (C) 2010, 2012-2020, D. R. Commander. + * Copyright (C) 2010, 2012-2021, D. R. Commander. * For conditions of distribution and use, see the accompanying README.ijg * file. * @@ -30,23 +30,25 @@ * NOTE: It is our convention to place the authors in the following order: * - libjpeg-turbo authors (2009-) in descending order of the date of their * most recent contribution to the project, then in ascending order of the - * date of their first contribution to the project + * date of their first contribution to the project, then in alphabetical + * order * - Upstream authors in descending order of the date of the first inclusion of * their code */ #define JCOPYRIGHT \ - "Copyright (C) 2009-2020 D. R. Commander\n" \ - "Copyright (C) 2011-2016 Siarhei Siamashka\n" \ + "Copyright (C) 2009-2021 D. R. Commander\n" \ + "Copyright (C) 2015, 2020 Google, Inc.\n" \ + "Copyright (C) 2019-2020 Arm Limited\n" \ "Copyright (C) 2015-2016, 2018 Matthieu Darbois\n" \ + "Copyright (C) 2011-2016 Siarhei Siamashka\n" \ "Copyright (C) 2015 Intel Corporation\n" \ - "Copyright (C) 2015 Google, Inc.\n" \ + "Copyright (C) 2013-2014 Linaro Limited\n" \ "Copyright (C) 2013-2014 MIPS Technologies, Inc.\n" \ - "Copyright (C) 2013 Linaro Limited\n" \ + "Copyright (C) 2009, 2012 Pierre Ossman for Cendio AB\n" \ "Copyright (C) 2009-2011 Nokia Corporation and/or its subsidiary(-ies)\n" \ - "Copyright (C) 2009 Pierre Ossman for Cendio AB\n" \ "Copyright (C) 1999-2006 MIYASAKA Masaru\n" \ - "Copyright (C) 1991-2016 Thomas G. Lane, Guido Vollbeding" + "Copyright (C) 1991-2020 Thomas G. Lane, Guido Vollbeding" #define JCOPYRIGHT_SHORT \ - "Copyright (C) 1991-2020 The libjpeg-turbo Project and many others" + "Copyright (C) 1991-2021 The libjpeg-turbo Project and many others" diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/zlib-license.txt qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/zlib-license.txt --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libjpeg/zlib-license.txt 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libjpeg/zlib-license.txt 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,15 @@ +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libpng/pngrutil.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libpng/pngrutil.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libpng/pngrutil.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libpng/pngrutil.c 2022-11-11 15:29:17.000000000 +0800 @@ -2087,10 +2087,8 @@ } } - if (png_crc_finish(png_ptr, 0) != 0) - return; - - png_set_eXIf_1(png_ptr, info_ptr, length, info_ptr->eXIf_buf); + if (png_crc_finish(png_ptr, 0) == 0) + png_set_eXIf_1(png_ptr, info_ptr, length, info_ptr->eXIf_buf); png_free(png_ptr, info_ptr->eXIf_buf); info_ptr->eXIf_buf = NULL; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libpng/qtpatches.diff qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libpng/qtpatches.diff --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/libpng/qtpatches.diff 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/libpng/qtpatches.diff 2022-11-11 15:29:17.000000000 +0800 @@ -46,3 +46,20 @@ # define PNG_ABORT() ExitProcess(0) # else # define PNG_ABORT() abort() +diff --git a/src/3rdparty/libpng/pngrutil.c b/src/3rdparty/libpng/pngrutil.c +index d5fa08c397..4db3de990b 100644 +--- a/src/3rdparty/libpng/pngrutil.c ++++ b/src/3rdparty/libpng/pngrutil.c +@@ -2087,10 +2087,8 @@ png_handle_eXIf(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) + } + } + +- if (png_crc_finish(png_ptr, 0) != 0) +- return; +- +- png_set_eXIf_1(png_ptr, info_ptr, length, info_ptr->eXIf_buf); ++ if (png_crc_finish(png_ptr, 0) == 0) ++ png_set_eXIf_1(png_ptr, info_ptr, length, info_ptr->eXIf_buf); + + png_free(png_ptr, info_ptr->eXIf_buf); + info_ptr->eXIf_buf = NULL; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/md4c/md4c.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/md4c/md4c.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/md4c/md4c.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/md4c/md4c.c 2022-11-11 15:29:17.000000000 +0800 @@ -581,7 +581,7 @@ #define R(cp_min, cp_max) ((cp_min) | 0x40000000), ((cp_max) | 0x80000000) #define S(cp) (cp) /* Unicode "Pc", "Pd", "Pe", "Pf", "Pi", "Po", "Ps" categories. - * (generated by scripts/build_punct_map.py) */ + * (generated by scripts/build_folding_map.py) */ static const unsigned FOLD_MAP_1[] = { R(0x0041,0x005a), S(0x00b5), R(0x00c0,0x00d6), R(0x00d8,0x00de), R(0x0100,0x012e), R(0x0132,0x0136), R(0x0139,0x0147), R(0x014a,0x0176), S(0x0178), R(0x0179,0x017d), S(0x017f), S(0x0181), S(0x0182), @@ -3601,6 +3601,34 @@ } md_analyze_link_contents(ctx, lines, n_lines, opener_index+1, closer_index); + + /* If the link text is formed by nothing but permissive autolink, + * suppress the autolink. + * See https://github.com/mity/md4c/issues/152 for more info. */ + if(ctx->parser.flags & MD_FLAG_PERMISSIVEAUTOLINKS) { + MD_MARK* first_nested; + MD_MARK* last_nested; + + first_nested = opener + 1; + while(first_nested->ch == _T('D') && first_nested < closer) + first_nested++; + + last_nested = closer - 1; + while(first_nested->ch == _T('D') && last_nested > opener) + last_nested--; + + if((first_nested->flags & MD_MARK_RESOLVED) && + first_nested->beg == opener->end && + ISANYOF_(first_nested->ch, _T("@:.")) && + first_nested->next == (last_nested - ctx->marks) && + last_nested->end == closer->beg) + { + first_nested->ch = _T('D'); + first_nested->flags &= ~MD_MARK_RESOLVED; + last_nested->ch = _T('D'); + last_nested->flags &= ~MD_MARK_RESOLVED; + } + } } opener_index = next_index; @@ -5491,7 +5519,7 @@ } static int -md_enter_child_containers(MD_CTX* ctx, int n_children, unsigned data) +md_enter_child_containers(MD_CTX* ctx, int n_children) { int i; int ret = 0; @@ -5516,7 +5544,7 @@ MD_CHECK(md_push_container_bytes(ctx, (is_ordered_list ? MD_BLOCK_OL : MD_BLOCK_UL), - c->start, data, MD_BLOCK_CONTAINER_OPENER)); + c->start, c->ch, MD_BLOCK_CONTAINER_OPENER)); MD_CHECK(md_push_container_bytes(ctx, MD_BLOCK_LI, c->task_mark_off, (c->is_task ? CH(c->task_mark_off) : 0), @@ -5745,25 +5773,30 @@ /* Check whether we are HTML block continuation. */ if(pivot_line->type == MD_LINE_HTML && ctx->html_block_type > 0) { - int html_block_type; + if(n_parents < ctx->n_containers) { + /* HTML block is implicitly ended if the enclosing container + * block ends. */ + ctx->html_block_type = 0; + } else { + int html_block_type; - html_block_type = md_is_html_block_end_condition(ctx, off, &off); - if(html_block_type > 0) { - MD_ASSERT(html_block_type == ctx->html_block_type); + html_block_type = md_is_html_block_end_condition(ctx, off, &off); + if(html_block_type > 0) { + MD_ASSERT(html_block_type == ctx->html_block_type); - /* Make sure this is the last line of the block. */ - ctx->html_block_type = 0; + /* Make sure this is the last line of the block. */ + ctx->html_block_type = 0; - /* Some end conditions serve as blank lines at the same time. */ - if(html_block_type == 6 || html_block_type == 7) { - line->type = MD_LINE_BLANK; - line->indent = 0; - break; + /* Some end conditions serve as blank lines at the same time. */ + if(html_block_type == 6 || html_block_type == 7) { + line->type = MD_LINE_BLANK; + line->indent = 0; + break; + } } - } - if(n_parents == ctx->n_containers) { line->type = MD_LINE_HTML; + n_parents = ctx->n_containers; break; } } @@ -5827,7 +5860,7 @@ /* Check whether we are Setext underline. */ if(line->indent < ctx->code_indent_offset && pivot_line->type == MD_LINE_TEXT - && (CH(off) == _T('=') || CH(off) == _T('-')) + && off < ctx->size && ISANYOF2(off, _T('='), _T('-')) && (n_parents == ctx->n_containers)) { unsigned level; @@ -5840,7 +5873,10 @@ } /* Check for thematic break line. */ - if(line->indent < ctx->code_indent_offset && ISANYOF(off, _T("-_*")) && off >= hr_killer) { + if(line->indent < ctx->code_indent_offset + && off < ctx->size && off >= hr_killer + && ISANYOF(off, _T("-_*"))) + { if(md_is_hr_line(ctx, off, &off, &hr_killer)) { line->type = MD_LINE_HR; break; @@ -5904,7 +5940,7 @@ { /* Noop. List mark followed by a blank line cannot interrupt a paragraph. */ } else if(pivot_line->type == MD_LINE_TEXT && n_parents == ctx->n_containers && - (container.ch == _T('.') || container.ch == _T(')')) && container.start != 1) + ISANYOF2_(container.ch, _T('.'), _T(')')) && container.start != 1) { /* Noop. Ordered list cannot interrupt a paragraph unless the start index is 1. */ } else { @@ -5945,7 +5981,9 @@ } /* Check for ATX header. */ - if(line->indent < ctx->code_indent_offset && CH(off) == _T('#')) { + if(line->indent < ctx->code_indent_offset && + off < ctx->size && CH(off) == _T('#')) + { unsigned level; if(md_is_atxheader_line(ctx, off, &line->beg, &off, &level)) { @@ -5956,7 +5994,7 @@ } /* Check whether we are starting code fence. */ - if(CH(off) == _T('`') || CH(off) == _T('~')) { + if(off < ctx->size && ISANYOF2(off, _T('`'), _T('~'))) { if(md_is_opening_code_fence(ctx, off, &off)) { line->type = MD_LINE_FENCEDCODE; line->data = 1; @@ -5965,7 +6003,8 @@ } /* Check for start of raw HTML block. */ - if(CH(off) == _T('<') && !(ctx->parser.flags & MD_FLAG_NOHTMLBLOCKS)) + if(off < ctx->size && CH(off) == _T('<') + && !(ctx->parser.flags & MD_FLAG_NOHTMLBLOCKS)) { ctx->html_block_type = md_is_html_block_start_condition(ctx, off); @@ -5986,9 +6025,9 @@ } /* Check for table underline. */ - if((ctx->parser.flags & MD_FLAG_TABLES) && pivot_line->type == MD_LINE_TEXT && - (CH(off) == _T('|') || CH(off) == _T('-') || CH(off) == _T(':')) && - n_parents == ctx->n_containers) + if((ctx->parser.flags & MD_FLAG_TABLES) && pivot_line->type == MD_LINE_TEXT + && off < ctx->size && ISANYOF3(off, _T('|'), _T('-'), _T(':')) + && n_parents == ctx->n_containers) { unsigned col_count; @@ -6120,7 +6159,7 @@ } if(n_children > 0) - MD_CHECK(md_enter_child_containers(ctx, n_children, line->data)); + MD_CHECK(md_enter_child_containers(ctx, n_children)); abort: return ret; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/md4c/qt_attribution.json qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/md4c/qt_attribution.json --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/md4c/qt_attribution.json 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/md4c/qt_attribution.json 2022-11-11 15:29:17.000000000 +0800 @@ -9,7 +9,7 @@ "License": "MIT License", "LicenseId": "MIT", "LicenseFile": "LICENSE.md", - "Version": "0.4.6", - "DownloadLocation": "https://github.com/mity/md4c/releases/tag/release-0.4.6", + "Version": "0.4.8", + "DownloadLocation": "https://github.com/mity/md4c/releases/tag/release-0.4.8", "Copyright": "Copyright © 2016-2020 Martin Mitáš" } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/AUTHORS qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/AUTHORS --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/AUTHORS 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/AUTHORS 2022-11-11 15:29:17.000000000 +0800 @@ -5,10 +5,10 @@ Email local part: Philip.Hazel Email domain: gmail.com -University of Cambridge Computing Service, +Retired from University of Cambridge Computing Service, Cambridge, England. -Copyright (c) 1997-2020 University of Cambridge +Copyright (c) 1997-2021 University of Cambridge All rights reserved @@ -19,7 +19,7 @@ Email local part: hzmester Emain domain: freemail.hu -Copyright(c) 2010-2020 Zoltan Herczeg +Copyright(c) 2010-2021 Zoltan Herczeg All rights reserved. @@ -30,7 +30,7 @@ Email local part: hzmester Emain domain: freemail.hu -Copyright(c) 2009-2020 Zoltan Herczeg +Copyright(c) 2009-2021 Zoltan Herczeg All rights reserved. #### diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/LICENCE qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/LICENCE --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/LICENCE 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/LICENCE 2022-11-11 15:29:17.000000000 +0800 @@ -23,10 +23,10 @@ Email local part: Philip.Hazel Email domain: gmail.com -University of Cambridge Computing Service, +Retired from University of Cambridge Computing Service, Cambridge, England. -Copyright (c) 1997-2020 University of Cambridge +Copyright (c) 1997-2021 University of Cambridge All rights reserved. @@ -37,7 +37,7 @@ Email local part: hzmester Email domain: freemail.hu -Copyright(c) 2010-2020 Zoltan Herczeg +Copyright(c) 2010-2021 Zoltan Herczeg All rights reserved. @@ -48,7 +48,7 @@ Email local part: hzmester Email domain: freemail.hu -Copyright(c) 2009-2020 Zoltan Herczeg +Copyright(c) 2009-2021 Zoltan Herczeg All rights reserved. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/pcre2.pro qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/pcre2.pro --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/pcre2.pro 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/pcre2.pro 2022-11-11 15:29:17.000000000 +0800 @@ -23,7 +23,7 @@ uikit|qnx|winrt: DEFINES += PCRE2_DISABLE_JIT win32:contains(QT_ARCH, "arm"): DEFINES += PCRE2_DISABLE_JIT win32:contains(QT_ARCH, "arm64"): DEFINES += PCRE2_DISABLE_JIT -macos:contains(QT_ARCH, "arm64"): DEFINES += PCRE2_DISABLE_JIT +macos:contains(QT_ARCHS, "arm64"): QMAKE_CFLAGS += -Xarch_arm64 -DPCRE2_DISABLE_JIT SOURCES += \ $$PWD/src/pcre2_auto_possess.c \ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/qt_attribution.json qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/qt_attribution.json --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/qt_attribution.json 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/qt_attribution.json 2022-11-11 15:29:17.000000000 +0800 @@ -7,12 +7,12 @@ "Description": "The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5.", "Homepage": "http://www.pcre.org/", - "Version": "10.36", - "DownloadLocation": "https://ftp.pcre.org/pub/pcre/pcre2-10.36.tar.bz2", + "Version": "10.39", + "DownloadLocation": "https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.bz2", "License": "BSD 3-clause \"New\" or \"Revised\" License", "LicenseId": "BSD-3-Clause", "LicenseFile": "LICENCE", - "Copyright": "Copyright (c) 1997-2020 University of Cambridge + "Copyright": "Copyright (c) 1997-2021 University of Cambridge Copyright (c) 2010-2020 Zoltan Herczeg" }, { @@ -24,11 +24,11 @@ "Path": "src/sljit", "Description": "The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5.", "Homepage": "http://www.pcre.org/", - "Version": "10.36", - "DownloadLocation": "https://ftp.pcre.org/pub/pcre/pcre2-10.36.tar.bz2", + "Version": "10.39", + "DownloadLocation": "https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.bz2", "License": "BSD 2-clause \"Simplified\" License", "LicenseId": "BSD-2-Clause", "LicenseFile": "LICENCE-SLJIT", - "Copyright": "Copyright (c) 2009-2020 Zoltan Herczeg" + "Copyright": "Copyright (c) 2009-2021 Zoltan Herczeg" } ] diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2.h 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ /* This is the public header file for the PCRE library, second API, to be #included by applications that call PCRE2 functions. - Copyright (c) 2016-2020 University of Cambridge + Copyright (c) 2016-2021 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -42,9 +42,9 @@ /* The current PCRE version information. */ #define PCRE2_MAJOR 10 -#define PCRE2_MINOR 36 +#define PCRE2_MINOR 39 #define PCRE2_PRERELEASE -#define PCRE2_DATE 2020-12-04 +#define PCRE2_DATE 2021-10-29 /* When an application links to a PCRE DLL in Windows, the symbols that are imported have to be identified as such. When building PCRE2, the appropriate @@ -84,8 +84,8 @@ /* Have to include limits.h, stdlib.h, and inttypes.h to ensure that size_t and uint8_t, UCHAR_MAX, etc are defined. Some systems that do have inttypes.h do not have stdint.h, which is why we use inttypes.h, which according to the C -standard is a superset of stdint.h. If none of these headers are available, -the relevant values must be provided by some other means. */ +standard is a superset of stdint.h. If inttypes.h is not available the build +will break and the relevant values must be provided by some other means. */ #include <limits.h> #include <stdlib.h> @@ -152,6 +152,7 @@ #define PCRE2_EXTRA_MATCH_LINE 0x00000008u /* C */ #define PCRE2_EXTRA_ESCAPED_CR_IS_LF 0x00000010u /* C */ #define PCRE2_EXTRA_ALT_BSUX 0x00000020u /* C */ +#define PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK 0x00000040u /* C */ /* These are for pcre2_jit_compile(). */ @@ -311,6 +312,7 @@ #define PCRE2_ERROR_SCRIPT_RUN_NOT_AVAILABLE 196 #define PCRE2_ERROR_TOO_MANY_CAPTURES 197 #define PCRE2_ERROR_CONDITION_ATOMIC_ASSERTION_EXPECTED 198 +#define PCRE2_ERROR_BACKSLASH_K_IN_LOOKAROUND 199 /* "Expected" matching error codes: no match and partial match. */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_auto_possess.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_auto_possess.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_auto_possess.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_auto_possess.c 2022-11-11 15:29:17.000000000 +0800 @@ -7,7 +7,7 @@ Written by Philip Hazel Original API code Copyright (c) 1997-2012 University of Cambridge - New API code Copyright (c) 2016-2020 University of Cambridge + New API code Copyright (c) 2016-2021 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -490,6 +490,7 @@ list[2] = (uint32_t)(end - code); return end; } + return NULL; /* Opcode not accepted */ } @@ -1186,12 +1187,16 @@ c = *repeat_opcode; if (c >= OP_CRSTAR && c <= OP_CRMINRANGE) { - /* end must not be NULL. */ - end = get_chr_property_list(code, utf, ucp, cb->fcc, list); + /* The return from get_chr_property_list() will never be NULL when + *code (aka c) is one of the three class opcodes. However, gcc with + -fanalyzer notes that a NULL return is possible, and grumbles. Hence we + put in a check. */ + end = get_chr_property_list(code, utf, ucp, cb->fcc, list); list[1] = (c & 1) == 0; - if (compare_opcodes(end, utf, ucp, cb, list, end, &rec_limit)) + if (end != NULL && + compare_opcodes(end, utf, ucp, cb, list, end, &rec_limit)) { switch (c) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_compile.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_compile.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_compile.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_compile.c 2022-11-11 15:29:17.000000000 +0800 @@ -7,7 +7,7 @@ Written by Philip Hazel Original API code Copyright (c) 1997-2012 University of Cambridge - New API code Copyright (c) 2016-2020 University of Cambridge + New API code Copyright (c) 2016-2021 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -137,7 +137,7 @@ static int check_lookbehinds(uint32_t *, uint32_t **, parsed_recurse_check *, - compile_block *); + compile_block *, int *); /************************************************* @@ -782,12 +782,15 @@ #define PUBLIC_COMPILE_EXTRA_OPTIONS \ (PUBLIC_LITERAL_COMPILE_EXTRA_OPTIONS| \ PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES|PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL| \ - PCRE2_EXTRA_ESCAPED_CR_IS_LF|PCRE2_EXTRA_ALT_BSUX) + PCRE2_EXTRA_ESCAPED_CR_IS_LF|PCRE2_EXTRA_ALT_BSUX| \ + PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK) /* Compile time error code numbers. They are given names so that they can more easily be tracked. When a new number is added, the tables called eint1 and eint2 in pcre2posix.c may need to be updated, and a new error text must be -added to compile_error_texts in pcre2_error.c. */ +added to compile_error_texts in pcre2_error.c. Also, the error codes in +pcre2.h.in must be updated - their values are exactly 100 greater than these +values. */ enum { ERR0 = COMPILE_ERROR_BASE, ERR1, ERR2, ERR3, ERR4, ERR5, ERR6, ERR7, ERR8, ERR9, ERR10, @@ -799,7 +802,7 @@ ERR61, ERR62, ERR63, ERR64, ERR65, ERR66, ERR67, ERR68, ERR69, ERR70, ERR71, ERR72, ERR73, ERR74, ERR75, ERR76, ERR77, ERR78, ERR79, ERR80, ERR81, ERR82, ERR83, ERR84, ERR85, ERR86, ERR87, ERR88, ERR89, ERR90, - ERR91, ERR92, ERR93, ERR94, ERR95, ERR96, ERR97, ERR98 }; + ERR91, ERR92, ERR93, ERR94, ERR95, ERR96, ERR97, ERR98, ERR99 }; /* This is a table of start-of-pattern options such as (*UTF) and settings such as (*LIMIT_MATCH=nnnn) and (*CRLF). For completeness and backward @@ -1398,32 +1401,47 @@ read_repeat_counts(PCRE2_SPTR *ptrptr, PCRE2_SPTR ptrend, uint32_t *minp, uint32_t *maxp, int *errorcodeptr) { -PCRE2_SPTR p = *ptrptr; +PCRE2_SPTR p; BOOL yield = FALSE; +BOOL had_comma = FALSE; int32_t min = 0; int32_t max = REPEAT_UNLIMITED; /* This value is larger than MAX_REPEAT_COUNT */ -/* NB read_number() initializes the error code to zero. The only error is for a -number that is too big. */ +/* Check the syntax */ + +*errorcodeptr = 0; +for (p = *ptrptr;; p++) + { + uint32_t c; + if (p >= ptrend) return FALSE; + c = *p; + if (IS_DIGIT(c)) continue; + if (c == CHAR_RIGHT_CURLY_BRACKET) break; + if (c == CHAR_COMMA) + { + if (had_comma) return FALSE; + had_comma = TRUE; + } + else return FALSE; + } + +/* The only error from read_number() is for a number that is too big. */ +p = *ptrptr; if (!read_number(&p, ptrend, -1, MAX_REPEAT_COUNT, ERR5, &min, errorcodeptr)) goto EXIT; -if (p >= ptrend) goto EXIT; - if (*p == CHAR_RIGHT_CURLY_BRACKET) { p++; max = min; } - else { - if (*p++ != CHAR_COMMA || p >= ptrend) goto EXIT; - if (*p != CHAR_RIGHT_CURLY_BRACKET) + if (*(++p) != CHAR_RIGHT_CURLY_BRACKET) { if (!read_number(&p, ptrend, -1, MAX_REPEAT_COUNT, ERR5, &max, - errorcodeptr) || p >= ptrend || *p != CHAR_RIGHT_CURLY_BRACKET) + errorcodeptr)) goto EXIT; if (max < min) { @@ -1438,11 +1456,10 @@ if (minp != NULL) *minp = (uint32_t)min; if (maxp != NULL) *maxp = (uint32_t)max; -/* Update the pattern pointer on success, or after an error, but not when -the result is "not a repeat quantifier". */ +/* Update the pattern pointer */ EXIT: -if (yield || *errorcodeptr != 0) *ptrptr = p; +*ptrptr = p; return yield; } @@ -1776,19 +1793,23 @@ { oldptr = ptr; ptr--; /* Back to the digit */ - if (!read_number(&ptr, ptrend, -1, INT_MAX/10 - 1, ERR61, &s, - errorcodeptr)) - break; - /* \1 to \9 are always back references. \8x and \9x are too; \1x to \7x + /* As we know we are at a digit, the only possible error from + read_number() is a number that is too large to be a group number. In this + case we fall through handle this as not a group reference. If we have + read a small enough number, check for a back reference. + + \1 to \9 are always back references. \8x and \9x are too; \1x to \7x are octal escapes if there are not that many previous captures. */ - if (s < 10 || oldptr[-1] >= CHAR_8 || s <= (int)cb->bracount) + if (read_number(&ptr, ptrend, -1, INT_MAX/10 - 1, 0, &s, errorcodeptr) && + (s < 10 || oldptr[-1] >= CHAR_8 || s <= (int)cb->bracount)) { if (s > (int)MAX_GROUP_NUMBER) *errorcodeptr = ERR61; else escape = -s; /* Indicates a back reference */ break; } + ptr = oldptr; /* Put the pointer back and fall through */ } @@ -7781,6 +7802,16 @@ } #endif + /* \K is forbidden in lookarounds since 10.38 because that's what Perl has + done. However, there's an option, in case anyone was relying on it. */ + + if (cb->assert_depth > 0 && meta_arg == ESC_K && + (cb->cx->extra_options & PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK) == 0) + { + *errorcodeptr = ERR99; + return 0; + } + /* For the rest (including \X when Unicode is supported - if not it's faulted at parse time), the OP value is the escape value when PCRE2_UCP is not set; if it is set, these escapes do not show up here because they are @@ -9130,7 +9161,7 @@ case META_LOOKAHEAD: case META_LOOKAHEADNOT: case META_LOOKAHEAD_NA: - *errcodeptr = check_lookbehinds(pptr + 1, &pptr, recurses, cb); + *errcodeptr = check_lookbehinds(pptr + 1, &pptr, recurses, cb, lcptr); if (*errcodeptr != 0) return -1; /* Ignore any qualifiers that follow a lookahead assertion. */ @@ -9470,16 +9501,16 @@ retptr if not NULL, return the ket pointer here recurses chain of recurse_check to catch mutual recursion cb points to the compile block + lcptr points to loop counter Returns: 0 on success, or an errorcode (cb->erroroffset will be set) */ static int check_lookbehinds(uint32_t *pptr, uint32_t **retptr, - parsed_recurse_check *recurses, compile_block *cb) + parsed_recurse_check *recurses, compile_block *cb, int *lcptr) { int errorcode = 0; -int loopcount = 0; int nestlevel = 0; cb->erroroffset = PCRE2_UNSET; @@ -9605,7 +9636,7 @@ case META_LOOKBEHIND: case META_LOOKBEHINDNOT: case META_LOOKBEHIND_NA: - if (!set_lookbehind_lengths(&pptr, &errorcode, &loopcount, recurses, cb)) + if (!set_lookbehind_lengths(&pptr, &errorcode, lcptr, recurses, cb)) return errorcode; break; } @@ -10060,7 +10091,8 @@ if (has_lookbehind) { - errorcode = check_lookbehinds(cb.parsed_pattern, NULL, NULL, &cb); + int loopcount = 0; + errorcode = check_lookbehinds(cb.parsed_pattern, NULL, NULL, &cb, &loopcount); if (errorcode != 0) goto HAD_CB_ERROR; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_dfa_match.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_dfa_match.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_dfa_match.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_dfa_match.c 2022-11-11 15:29:17.000000000 +0800 @@ -7,7 +7,7 @@ Written by Philip Hazel Original API code Copyright (c) 1997-2012 University of Cambridge - New API code Copyright (c) 2016-2020 University of Cambridge + New API code Copyright (c) 2016-2021 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -3256,8 +3256,8 @@ BOOL has_req_cu = FALSE; #if PCRE2_CODE_UNIT_WIDTH == 8 -BOOL memchr_not_found_first_cu = FALSE; -BOOL memchr_not_found_first_cu2 = FALSE; +PCRE2_SPTR memchr_found_first_cu = NULL; +PCRE2_SPTR memchr_found_first_cu2 = NULL; #endif PCRE2_UCHAR first_cu = 0; @@ -3648,13 +3648,7 @@ } } - /* Not anchored. Advance to a unique first code unit if there is one. In - 8-bit mode, the use of memchr() gives a big speed up, even though we have - to call it twice in caseless mode, in order to find the earliest occurrence - of the character in either of its cases. If a call to memchr() that - searches the rest of the subject fails to find one case, remember that in - order not to keep on repeating the search. This can make a huge difference - when the strings are very long and only one case is present. */ + /* Not anchored. Advance to a unique first code unit if there is one. */ else { @@ -3662,43 +3656,68 @@ { if (first_cu != first_cu2) /* Caseless */ { + /* In 16-bit and 32_bit modes we have to do our own search, so can + look for both cases at once. */ + #if PCRE2_CODE_UNIT_WIDTH != 8 PCRE2_UCHAR smc; while (start_match < end_subject && (smc = UCHAR21TEST(start_match)) != first_cu && - smc != first_cu2) + smc != first_cu2) start_match++; +#else + /* In 8-bit mode, the use of memchr() gives a big speed up, even + though we have to call it twice in order to find the earliest + occurrence of the code unit in either of its cases. Caching is used + to remember the positions of previously found code units. This can + make a huge difference when the strings are very long and only one + case is actually present. */ -#else /* 8-bit code units */ PCRE2_SPTR pp1 = NULL; PCRE2_SPTR pp2 = NULL; - PCRE2_SIZE cu2size = end_subject - start_match; + PCRE2_SIZE searchlength = end_subject - start_match; + + /* If we haven't got a previously found position for first_cu, or if + the current starting position is later, we need to do a search. If + the code unit is not found, set it to the end. */ - if (!memchr_not_found_first_cu) + if (memchr_found_first_cu == NULL || + start_match > memchr_found_first_cu) { - pp1 = memchr(start_match, first_cu, end_subject - start_match); - if (pp1 == NULL) memchr_not_found_first_cu = TRUE; - else cu2size = pp1 - start_match; + pp1 = memchr(start_match, first_cu, searchlength); + memchr_found_first_cu = (pp1 == NULL)? end_subject : pp1; } - /* If pp1 is not NULL, we have arranged to search only as far as pp1, - to see if the other case is earlier, so we can set "not found" only - when both searches have returned NULL. */ + /* If the start is before a previously found position, use the + previous position, or NULL if a previous search failed. */ + + else pp1 = (memchr_found_first_cu == end_subject)? NULL : + memchr_found_first_cu; + + /* Do the same thing for the other case. */ - if (!memchr_not_found_first_cu2) + if (memchr_found_first_cu2 == NULL || + start_match > memchr_found_first_cu2) { - pp2 = memchr(start_match, first_cu2, cu2size); - memchr_not_found_first_cu2 = (pp2 == NULL && pp1 == NULL); + pp2 = memchr(start_match, first_cu2, searchlength); + memchr_found_first_cu2 = (pp2 == NULL)? end_subject : pp2; } + else pp2 = (memchr_found_first_cu2 == end_subject)? NULL : + memchr_found_first_cu2; + + /* Set the start to the end of the subject if neither case was found. + Otherwise, use the earlier found point. */ + if (pp1 == NULL) start_match = (pp2 == NULL)? end_subject : pp2; else start_match = (pp2 == NULL || pp1 < pp2)? pp1 : pp2; -#endif + +#endif /* 8-bit handling */ } - /* The caseful case */ + /* The caseful case is much simpler. */ else { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_error.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_error.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_error.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_error.c 2022-11-11 15:29:17.000000000 +0800 @@ -7,7 +7,7 @@ Written by Philip Hazel Original API code Copyright (c) 1997-2012 University of Cambridge - New API code Copyright (c) 2016-2019 University of Cambridge + New API code Copyright (c) 2016-2021 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -186,6 +186,7 @@ "script runs require Unicode support, which this version of PCRE2 does not have\0" "too many capturing groups (maximum 65535)\0" "atomic assertion expected after (?( or (?(?C)\0" + "\\K is not allowed in lookarounds (but see PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK)\0" ; /* Match-time and UTF error texts are in the same format. */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_jit_compile.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_jit_compile.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_jit_compile.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_jit_compile.c 2022-11-11 15:29:17.000000000 +0800 @@ -1226,7 +1226,7 @@ return TRUE; } -#define EARLY_FAIL_ENHANCE_MAX (1 + 1) +#define EARLY_FAIL_ENHANCE_MAX (1 + 3) /* start: @@ -1236,23 +1236,28 @@ return: current number of iterators enhanced with fast fail */ -static int detect_early_fail(compiler_common *common, PCRE2_SPTR cc, int *private_data_start, sljit_s32 depth, int start) +static int detect_early_fail(compiler_common *common, PCRE2_SPTR cc, int *private_data_start, + sljit_s32 depth, int start, BOOL fast_forward_allowed) { +PCRE2_SPTR begin = cc; PCRE2_SPTR next_alt; PCRE2_SPTR end; PCRE2_SPTR accelerated_start; +BOOL prev_fast_forward_allowed; int result = 0; int count; -BOOL fast_forward_allowed = TRUE; SLJIT_ASSERT(*cc == OP_ONCE || *cc == OP_BRA || *cc == OP_CBRA); SLJIT_ASSERT(*cc != OP_CBRA || common->optimized_cbracket[GET2(cc, 1 + LINK_SIZE)] != 0); SLJIT_ASSERT(start < EARLY_FAIL_ENHANCE_MAX); +next_alt = cc + GET(cc, 1); +if (*next_alt == OP_ALT) + fast_forward_allowed = FALSE; + do { count = start; - next_alt = cc + GET(cc, 1); cc += 1 + LINK_SIZE + ((*cc == OP_CBRA) ? IMM2_SIZE : 0); while (TRUE) @@ -1475,31 +1480,20 @@ case OP_CBRA: end = cc + GET(cc, 1); - if (*end == OP_KET && PRIVATE_DATA(end) == 0) - { - if (*cc == OP_CBRA) - { - if (common->optimized_cbracket[GET2(cc, 1 + LINK_SIZE)] == 0) - break; - cc += IMM2_SIZE; - } - - cc += 1 + LINK_SIZE; - continue; - } - + prev_fast_forward_allowed = fast_forward_allowed; fast_forward_allowed = FALSE; if (depth >= 4) break; end = bracketend(cc) - (1 + LINK_SIZE); - if (*end != OP_KET || PRIVATE_DATA(end) != 0) + if (*end != OP_KET || (*cc == OP_CBRA && common->optimized_cbracket[GET2(cc, 1 + LINK_SIZE)] == 0)) break; - if (*cc == OP_CBRA && common->optimized_cbracket[GET2(cc, 1 + LINK_SIZE)] == 0) - break; + count = detect_early_fail(common, cc, private_data_start, depth + 1, count, prev_fast_forward_allowed); + + if (PRIVATE_DATA(cc) != 0) + common->private_data_ptrs[begin - common->start] = 1; - count = detect_early_fail(common, cc, private_data_start, depth + 1, count); if (count < EARLY_FAIL_ENHANCE_MAX) { cc = end + (1 + LINK_SIZE); @@ -1521,7 +1515,7 @@ { count++; - if (fast_forward_allowed && *next_alt == OP_KET) + if (fast_forward_allowed) { common->fast_forward_bc_ptr = accelerated_start; common->private_data_ptrs[(accelerated_start + 1) - common->start] = ((*private_data_start) << 3) | type_skip; @@ -1555,6 +1549,8 @@ return EARLY_FAIL_ENHANCE_MAX; } + /* Cannot be part of a repeat. */ + common->private_data_ptrs[begin - common->start] = 1; count++; if (count < EARLY_FAIL_ENHANCE_MAX) @@ -1569,8 +1565,8 @@ else if (result < count) result = count; - fast_forward_allowed = FALSE; cc = next_alt; + next_alt = cc + GET(cc, 1); } while (*cc == OP_ALT); @@ -1620,11 +1616,12 @@ sljit_s32 min, max, i; /* Detect fixed iterations first. */ -if (end[-(1 + LINK_SIZE)] != OP_KET) +if (end[-(1 + LINK_SIZE)] != OP_KET || PRIVATE_DATA(begin) != 0) return FALSE; -/* Already detected repeat. */ -if (common->private_data_ptrs[end - common->start - LINK_SIZE] != 0) +/* /(?:AB){4,6}/ is currently converted to /(?:AB){3}(?AB){1,3}/ + * Skip the check of the second part. */ +if (PRIVATE_DATA(end - LINK_SIZE) == 0) return TRUE; next = end; @@ -1763,6 +1760,7 @@ if (private_data_ptr > SLJIT_MAX_LOCAL_SIZE) break; + /* When the bracket is prefixed by a zero iteration, skip the repeat check (at this point). */ if (repeat_check && (*cc == OP_ONCE || *cc == OP_BRA || *cc == OP_CBRA || *cc == OP_COND)) { if (detect_repeat(common, cc)) @@ -1813,6 +1811,7 @@ case OP_COND: /* Might be a hidden SCOND. */ + common->private_data_ptrs[cc - common->start] = 0; alternative = cc + GET(cc, 1); if (*alternative == OP_KETRMAX || *alternative == OP_KETRMIN) { @@ -4203,9 +4202,6 @@ and it is destroyed. Does not modify STR_PTR for invalid character sequences. */ DEFINE_COMPILER; -SLJIT_UNUSED_ARG(backtracks); -SLJIT_UNUSED_ARG(must_be_valid); - #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 struct sljit_jump *jump; #endif @@ -4279,6 +4275,10 @@ } #endif /* PCRE2_CODE_UNIT_WIDTH == [8|16|32] */ #endif /* SUPPORT_UNICODE */ + +SLJIT_UNUSED_ARG(backtracks); +SLJIT_UNUSED_ARG(must_be_valid); + OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); } @@ -8141,7 +8141,7 @@ } else OP2(SLJIT_AND32 | SLJIT_SET_Z, SLJIT_UNUSED, 0, SLJIT_MEM1(ARGUMENTS), SLJIT_OFFSETOF(jit_arguments, options), SLJIT_IMM, PCRE2_NOTEOL); - add_jump(compiler, backtracks, JUMP(SLJIT_NOT_ZERO32)); + add_jump(compiler, backtracks, JUMP(SLJIT_NOT_ZERO)); if (!common->endonly) compile_simple_assertion_matchingpath(common, OP_EODN, cc, backtracks); @@ -8161,7 +8161,7 @@ } else OP2(SLJIT_AND32 | SLJIT_SET_Z, SLJIT_UNUSED, 0, SLJIT_MEM1(ARGUMENTS), SLJIT_OFFSETOF(jit_arguments, options), SLJIT_IMM, PCRE2_NOTEOL); - add_jump(compiler, backtracks, JUMP(SLJIT_NOT_ZERO32)); + add_jump(compiler, backtracks, JUMP(SLJIT_NOT_ZERO)); check_partial(common, FALSE); jump[0] = JUMP(SLJIT_JUMP); JUMPHERE(jump[1]); @@ -8201,14 +8201,14 @@ OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP2), SLJIT_OFFSETOF(jit_arguments, begin)); add_jump(compiler, backtracks, CMP(SLJIT_GREATER, STR_PTR, 0, TMP1, 0)); OP2(SLJIT_AND32 | SLJIT_SET_Z, SLJIT_UNUSED, 0, SLJIT_MEM1(TMP2), SLJIT_OFFSETOF(jit_arguments, options), SLJIT_IMM, PCRE2_NOTBOL); - add_jump(compiler, backtracks, JUMP(SLJIT_NOT_ZERO32)); + add_jump(compiler, backtracks, JUMP(SLJIT_NOT_ZERO)); } else { OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(ARGUMENTS), SLJIT_OFFSETOF(jit_arguments, begin)); add_jump(compiler, backtracks, CMP(SLJIT_GREATER, STR_PTR, 0, TMP1, 0)); OP2(SLJIT_AND32 | SLJIT_SET_Z, SLJIT_UNUSED, 0, SLJIT_MEM1(ARGUMENTS), SLJIT_OFFSETOF(jit_arguments, options), SLJIT_IMM, PCRE2_NOTBOL); - add_jump(compiler, backtracks, JUMP(SLJIT_NOT_ZERO32)); + add_jump(compiler, backtracks, JUMP(SLJIT_NOT_ZERO)); } return cc; @@ -8227,7 +8227,7 @@ jump[1] = CMP(SLJIT_GREATER, STR_PTR, 0, TMP2, 0); OP2(SLJIT_AND32 | SLJIT_SET_Z, SLJIT_UNUSED, 0, SLJIT_MEM1(ARGUMENTS), SLJIT_OFFSETOF(jit_arguments, options), SLJIT_IMM, PCRE2_NOTBOL); } - add_jump(compiler, backtracks, JUMP(SLJIT_NOT_ZERO32)); + add_jump(compiler, backtracks, JUMP(SLJIT_NOT_ZERO)); jump[0] = JUMP(SLJIT_JUMP); JUMPHERE(jump[1]); @@ -9581,11 +9581,11 @@ /* Check return value. */ OP2(SLJIT_SUB32 | SLJIT_SET_Z | SLJIT_SET_SIG_GREATER, SLJIT_UNUSED, 0, SLJIT_RETURN_REG, 0, SLJIT_IMM, 0); -add_jump(compiler, &backtrack->topbacktracks, JUMP(SLJIT_SIG_GREATER32)); +add_jump(compiler, &backtrack->topbacktracks, JUMP(SLJIT_SIG_GREATER)); if (common->abort_label == NULL) - add_jump(compiler, &common->abort, JUMP(SLJIT_NOT_EQUAL32) /* SIG_LESS */); + add_jump(compiler, &common->abort, JUMP(SLJIT_NOT_EQUAL) /* SIG_LESS */); else - JUMPTO(SLJIT_NOT_EQUAL32 /* SIG_LESS */, common->abort_label); + JUMPTO(SLJIT_NOT_EQUAL /* SIG_LESS */, common->abort_label); return cc + callout_length; } @@ -11232,7 +11232,7 @@ early_fail_ptr >>= 3; /* During recursion, these optimizations are disabled. */ -if (common->early_fail_start_ptr == 0) +if (common->early_fail_start_ptr == 0 && common->fast_forward_bc_ptr == NULL) { early_fail_ptr = 0; early_fail_type = type_skip; @@ -13661,9 +13661,11 @@ memset(common->private_data_ptrs, 0, total_length * sizeof(sljit_s32)); private_data_size = common->cbra_ptr + (re->top_bracket + 1) * sizeof(sljit_sw); -set_private_data_ptrs(common, &private_data_size, ccend); + if ((re->overall_options & PCRE2_ANCHORED) == 0 && (re->overall_options & PCRE2_NO_START_OPTIMIZE) == 0 && !common->has_skip_in_assert_back) - detect_early_fail(common, common->start, &private_data_size, 0, 0); + detect_early_fail(common, common->start, &private_data_size, 0, 0, TRUE); + +set_private_data_ptrs(common, &private_data_size, ccend); SLJIT_ASSERT(common->early_fail_start_ptr <= common->early_fail_end_ptr); @@ -14130,6 +14132,10 @@ pcre2_jit_compile(pcre2_code *code, uint32_t options) { pcre2_real_code *re = (pcre2_real_code *)code; +#ifdef SUPPORT_JIT +executable_functions *functions; +static int executable_allocator_is_working = 0; +#endif if (code == NULL) return PCRE2_ERROR_NULL; @@ -14164,8 +14170,7 @@ */ #ifdef SUPPORT_JIT -executable_functions *functions = (executable_functions *)re->executable_jit; -static int executable_allocator_is_working = 0; +functions = (executable_functions *)re->executable_jit; #endif if ((options & PCRE2_JIT_INVALID_UTF) != 0) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_jit_simd_inc.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_jit_simd_inc.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_jit_simd_inc.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_jit_simd_inc.h 2022-11-11 15:29:17.000000000 +0800 @@ -39,7 +39,29 @@ ----------------------------------------------------------------------------- */ -#if (defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86) && !(defined SUPPORT_VALGRIND) +#if !(defined SUPPORT_VALGRIND) + +#if ((defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86) \ + || (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X)) + +typedef enum { + vector_compare_match1, + vector_compare_match1i, + vector_compare_match2, +} vector_compare_type; + +static SLJIT_INLINE sljit_u32 max_fast_forward_char_pair_offset(void) +{ +#if PCRE2_CODE_UNIT_WIDTH == 8 +return 15; +#elif PCRE2_CODE_UNIT_WIDTH == 16 +return 7; +#elif PCRE2_CODE_UNIT_WIDTH == 32 +return 3; +#else +#error "Unsupported unit width" +#endif +} #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 static struct sljit_jump *jump_if_utf_char_start(struct sljit_compiler *compiler, sljit_s32 reg) @@ -56,6 +78,10 @@ } #endif +#endif /* SLJIT_CONFIG_X86 || SLJIT_CONFIG_S390X */ + +#if (defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86) + static sljit_s32 character_to_int32(PCRE2_UCHAR chr) { sljit_u32 value = chr; @@ -97,13 +123,7 @@ sljit_emit_op_custom(compiler, instruction, 5); } -typedef enum { - sse2_compare_match1, - sse2_compare_match1i, - sse2_compare_match2, -} sse2_compare_type; - -static void fast_forward_char_pair_sse2_compare(struct sljit_compiler *compiler, sse2_compare_type compare_type, +static void fast_forward_char_pair_sse2_compare(struct sljit_compiler *compiler, vector_compare_type compare_type, int step, sljit_s32 dst_ind, sljit_s32 cmp1_ind, sljit_s32 cmp2_ind, sljit_s32 tmp_ind) { sljit_u8 instruction[4]; @@ -112,11 +132,11 @@ SLJIT_ASSERT(step >= 0 && step <= 3); -if (compare_type != sse2_compare_match2) +if (compare_type != vector_compare_match2) { if (step == 0) { - if (compare_type == sse2_compare_match1i) + if (compare_type == vector_compare_match1i) { /* POR xmm1, xmm2/m128 */ /* instruction[0] = 0x66; */ @@ -185,14 +205,14 @@ static void fast_forward_char_simd(compiler_common *common, PCRE2_UCHAR char1, PCRE2_UCHAR char2, sljit_s32 offset) { DEFINE_COMPILER; +sljit_u8 instruction[8]; struct sljit_label *start; #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 struct sljit_label *restart; #endif struct sljit_jump *quit; struct sljit_jump *partial_quit[2]; -sse2_compare_type compare_type = sse2_compare_match1; -sljit_u8 instruction[8]; +vector_compare_type compare_type = vector_compare_match1; sljit_s32 tmp1_reg_ind = sljit_get_register_index(TMP1); sljit_s32 str_ptr_reg_ind = sljit_get_register_index(STR_PTR); sljit_s32 data_ind = 0; @@ -207,12 +227,12 @@ if (char1 != char2) { bit = char1 ^ char2; - compare_type = sse2_compare_match1i; + compare_type = vector_compare_match1i; if (!is_powerof2(bit)) { bit = 0; - compare_type = sse2_compare_match2; + compare_type = vector_compare_match2; } } @@ -349,11 +369,11 @@ static jump_list *fast_requested_char_simd(compiler_common *common, PCRE2_UCHAR char1, PCRE2_UCHAR char2) { DEFINE_COMPILER; +sljit_u8 instruction[8]; struct sljit_label *start; struct sljit_jump *quit; jump_list *not_found = NULL; -sse2_compare_type compare_type = sse2_compare_match1; -sljit_u8 instruction[8]; +vector_compare_type compare_type = vector_compare_match1; sljit_s32 tmp1_reg_ind = sljit_get_register_index(TMP1); sljit_s32 str_ptr_reg_ind = sljit_get_register_index(STR_PTR); sljit_s32 data_ind = 0; @@ -366,12 +386,12 @@ if (char1 != char2) { bit = char1 ^ char2; - compare_type = sse2_compare_match1i; + compare_type = vector_compare_match1i; if (!is_powerof2(bit)) { bit = 0; - compare_type = sse2_compare_match2; + compare_type = vector_compare_match2; } } @@ -476,27 +496,15 @@ #ifndef _WIN64 -static SLJIT_INLINE sljit_u32 max_fast_forward_char_pair_offset(void) -{ -#if PCRE2_CODE_UNIT_WIDTH == 8 -return 15; -#elif PCRE2_CODE_UNIT_WIDTH == 16 -return 7; -#elif PCRE2_CODE_UNIT_WIDTH == 32 -return 3; -#else -#error "Unsupported unit width" -#endif -} - #define JIT_HAS_FAST_FORWARD_CHAR_PAIR_SIMD (sljit_has_cpu_feature(SLJIT_HAS_SSE2)) static void fast_forward_char_pair_simd(compiler_common *common, sljit_s32 offs1, PCRE2_UCHAR char1a, PCRE2_UCHAR char1b, sljit_s32 offs2, PCRE2_UCHAR char2a, PCRE2_UCHAR char2b) { DEFINE_COMPILER; -sse2_compare_type compare1_type = sse2_compare_match1; -sse2_compare_type compare2_type = sse2_compare_match1; +sljit_u8 instruction[8]; +vector_compare_type compare1_type = vector_compare_match1; +vector_compare_type compare2_type = vector_compare_match1; sljit_u32 bit1 = 0; sljit_u32 bit2 = 0; sljit_u32 diff = IN_UCHARS(offs1 - offs2); @@ -516,7 +524,6 @@ struct sljit_label *restart; #endif struct sljit_jump *jump[2]; -sljit_u8 instruction[8]; int i; SLJIT_ASSERT(common->mode == PCRE2_JIT_COMPLETE && offs1 > offs2); @@ -549,13 +556,13 @@ bit1 = char1a ^ char1b; if (is_powerof2(bit1)) { - compare1_type = sse2_compare_match1i; + compare1_type = vector_compare_match1i; OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, character_to_int32(char1a | bit1)); OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, character_to_int32(bit1)); } else { - compare1_type = sse2_compare_match2; + compare1_type = vector_compare_match2; bit1 = 0; OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, character_to_int32(char1a)); OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, character_to_int32(char1b)); @@ -578,13 +585,13 @@ bit2 = char2a ^ char2b; if (is_powerof2(bit2)) { - compare2_type = sse2_compare_match1i; + compare2_type = vector_compare_match1i; OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, character_to_int32(char2a | bit2)); OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, character_to_int32(bit2)); } else { - compare2_type = sse2_compare_match2; + compare2_type = vector_compare_match2; bit2 = 0; OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, character_to_int32(char2a)); OP1(SLJIT_MOV, TMP2, 0, SLJIT_IMM, character_to_int32(char2b)); @@ -731,9 +738,6 @@ add_jump(compiler, &common->failed_match, CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0)); -if (common->match_end_ptr != 0) - OP1(SLJIT_MOV, STR_END, 0, SLJIT_MEM1(SLJIT_SP), common->match_end_ptr); - #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 if (common->utf) { @@ -760,7 +764,7 @@ #undef SSE2_COMPARE_TYPE_INDEX -#endif /* SLJIT_CONFIG_X86 && !SUPPORT_VALGRIND */ +#endif /* SLJIT_CONFIG_X86 */ #if (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64 && (defined __ARM_NEON || defined __ARM_NEON__)) @@ -1121,3 +1125,734 @@ } #endif /* SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64 */ + +#if (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) + +#if PCRE2_CODE_UNIT_WIDTH == 8 +#define VECTOR_ELEMENT_SIZE 0 +#elif PCRE2_CODE_UNIT_WIDTH == 16 +#define VECTOR_ELEMENT_SIZE 1 +#elif PCRE2_CODE_UNIT_WIDTH == 32 +#define VECTOR_ELEMENT_SIZE 2 +#else +#error "Unsupported unit width" +#endif + +static void load_from_mem_vector(struct sljit_compiler *compiler, BOOL vlbb, sljit_s32 dst_vreg, + sljit_s32 base_reg, sljit_s32 index_reg) +{ +sljit_u16 instruction[3]; + +instruction[0] = (sljit_u16)(0xe700 | (dst_vreg << 4) | index_reg); +instruction[1] = (sljit_u16)(base_reg << 12); +instruction[2] = (sljit_u16)((0x8 << 8) | (vlbb ? 0x07 : 0x06)); + +sljit_emit_op_custom(compiler, instruction, 6); +} + +#if PCRE2_CODE_UNIT_WIDTH == 32 + +static void replicate_imm_vector(struct sljit_compiler *compiler, int step, sljit_s32 dst_vreg, + PCRE2_UCHAR chr, sljit_s32 tmp_general_reg) +{ +sljit_u16 instruction[3]; + +SLJIT_ASSERT(step >= 0 && step <= 1); + +if (chr < 0x7fff) + { + if (step == 1) + return; + + /* VREPI */ + instruction[0] = (sljit_u16)(0xe700 | (dst_vreg << 4)); + instruction[1] = (sljit_u16)chr; + instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0x8 << 8) | 0x45); + sljit_emit_op_custom(compiler, instruction, 6); + return; + } + +if (step == 0) + { + OP1(SLJIT_MOV, tmp_general_reg, 0, SLJIT_IMM, chr); + + /* VLVG */ + instruction[0] = (sljit_u16)(0xe700 | (dst_vreg << 4) | sljit_get_register_index(tmp_general_reg)); + instruction[1] = 0; + instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0x8 << 8) | 0x22); + sljit_emit_op_custom(compiler, instruction, 6); + return; + } + +/* VREP */ +instruction[0] = (sljit_u16)(0xe700 | (dst_vreg << 4) | dst_vreg); +instruction[1] = 0; +instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0xc << 8) | 0x4d); +sljit_emit_op_custom(compiler, instruction, 6); +} + +#endif + +static void fast_forward_char_pair_sse2_compare(struct sljit_compiler *compiler, vector_compare_type compare_type, + int step, sljit_s32 dst_ind, sljit_s32 cmp1_ind, sljit_s32 cmp2_ind, sljit_s32 tmp_ind) +{ +sljit_u16 instruction[3]; + +SLJIT_ASSERT(step >= 0 && step <= 2); + +if (step == 1) + { + /* VCEQ */ + instruction[0] = (sljit_u16)(0xe700 | (dst_ind << 4) | dst_ind); + instruction[1] = (sljit_u16)(cmp1_ind << 12); + instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0xe << 8) | 0xf8); + sljit_emit_op_custom(compiler, instruction, 6); + return; + } + +if (compare_type != vector_compare_match2) + { + if (step == 0 && compare_type == vector_compare_match1i) + { + /* VO */ + instruction[0] = (sljit_u16)(0xe700 | (dst_ind << 4) | dst_ind); + instruction[1] = (sljit_u16)(cmp2_ind << 12); + instruction[2] = (sljit_u16)((0xe << 8) | 0x6a); + sljit_emit_op_custom(compiler, instruction, 6); + } + return; + } + +switch (step) + { + case 0: + /* VCEQ */ + instruction[0] = (sljit_u16)(0xe700 | (tmp_ind << 4) | dst_ind); + instruction[1] = (sljit_u16)(cmp2_ind << 12); + instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0xe << 8) | 0xf8); + sljit_emit_op_custom(compiler, instruction, 6); + return; + + case 2: + /* VO */ + instruction[0] = (sljit_u16)(0xe700 | (dst_ind << 4) | dst_ind); + instruction[1] = (sljit_u16)(tmp_ind << 12); + instruction[2] = (sljit_u16)((0xe << 8) | 0x6a); + sljit_emit_op_custom(compiler, instruction, 6); + return; + } +} + +#define JIT_HAS_FAST_FORWARD_CHAR_SIMD 1 + +static void fast_forward_char_simd(compiler_common *common, PCRE2_UCHAR char1, PCRE2_UCHAR char2, sljit_s32 offset) +{ +DEFINE_COMPILER; +sljit_u16 instruction[3]; +struct sljit_label *start; +#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 +struct sljit_label *restart; +#endif +struct sljit_jump *quit; +struct sljit_jump *partial_quit[2]; +vector_compare_type compare_type = vector_compare_match1; +sljit_s32 tmp1_reg_ind = sljit_get_register_index(TMP1); +sljit_s32 str_ptr_reg_ind = sljit_get_register_index(STR_PTR); +sljit_s32 data_ind = 0; +sljit_s32 tmp_ind = 1; +sljit_s32 cmp1_ind = 2; +sljit_s32 cmp2_ind = 3; +sljit_s32 zero_ind = 4; +sljit_u32 bit = 0; +int i; + +SLJIT_UNUSED_ARG(offset); + +if (char1 != char2) + { + bit = char1 ^ char2; + compare_type = vector_compare_match1i; + + if (!is_powerof2(bit)) + { + bit = 0; + compare_type = vector_compare_match2; + } + } + +partial_quit[0] = CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); +if (common->mode == PCRE2_JIT_COMPLETE) + add_jump(compiler, &common->failed_match, partial_quit[0]); + +/* First part (unaligned start) */ + +OP2(SLJIT_ADD, TMP2, 0, STR_PTR, 0, SLJIT_IMM, 16); + +#if PCRE2_CODE_UNIT_WIDTH != 32 + +/* VREPI */ +instruction[0] = (sljit_u16)(0xe700 | (cmp1_ind << 4)); +instruction[1] = (sljit_u16)(char1 | bit); +instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0x8 << 8) | 0x45); +sljit_emit_op_custom(compiler, instruction, 6); + +if (char1 != char2) + { + /* VREPI */ + instruction[0] = (sljit_u16)(0xe700 | (cmp2_ind << 4)); + instruction[1] = (sljit_u16)(bit != 0 ? bit : char2); + /* instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0x8 << 8) | 0x45); */ + sljit_emit_op_custom(compiler, instruction, 6); + } + +#else /* PCRE2_CODE_UNIT_WIDTH == 32 */ + +for (int i = 0; i < 2; i++) + { + replicate_imm_vector(compiler, i, cmp1_ind, char1 | bit, TMP1); + + if (char1 != char2) + replicate_imm_vector(compiler, i, cmp2_ind, bit != 0 ? bit : char2, TMP1); + } + +#endif /* PCRE2_CODE_UNIT_WIDTH != 32 */ + +if (compare_type == vector_compare_match2) + { + /* VREPI */ + instruction[0] = (sljit_u16)(0xe700 | (zero_ind << 4)); + instruction[1] = 0; + instruction[2] = (sljit_u16)((0x8 << 8) | 0x45); + sljit_emit_op_custom(compiler, instruction, 6); + } + +#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 +restart = LABEL(); +#endif + +load_from_mem_vector(compiler, TRUE, data_ind, str_ptr_reg_ind, 0); +OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, ~15); + +if (compare_type != vector_compare_match2) + { + if (compare_type == vector_compare_match1i) + fast_forward_char_pair_sse2_compare(compiler, compare_type, 0, data_ind, cmp1_ind, cmp2_ind, tmp_ind); + + /* VFEE */ + instruction[0] = (sljit_u16)(0xe700 | (data_ind << 4) | data_ind); + instruction[1] = (sljit_u16)((cmp1_ind << 12) | (1 << 4)); + instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0xe << 8) | 0x80); + sljit_emit_op_custom(compiler, instruction, 6); + } +else + { + for (i = 0; i < 3; i++) + fast_forward_char_pair_sse2_compare(compiler, compare_type, i, data_ind, cmp1_ind, cmp2_ind, tmp_ind); + + /* VFENE */ + instruction[0] = (sljit_u16)(0xe700 | (data_ind << 4) | data_ind); + instruction[1] = (sljit_u16)((zero_ind << 12) | (1 << 4)); + instruction[2] = (sljit_u16)((0xe << 8) | 0x81); + sljit_emit_op_custom(compiler, instruction, 6); + } + +/* VLGVB */ +instruction[0] = (sljit_u16)(0xe700 | (tmp1_reg_ind << 4) | data_ind); +instruction[1] = 7; +instruction[2] = (sljit_u16)((0x4 << 8) | 0x21); +sljit_emit_op_custom(compiler, instruction, 6); + +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); +quit = CMP(SLJIT_LESS, STR_PTR, 0, TMP2, 0); + +OP2(SLJIT_SUB, STR_PTR, 0, TMP2, 0, SLJIT_IMM, 16); + +/* Second part (aligned) */ +start = LABEL(); + +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, 16); + +partial_quit[1] = CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); +if (common->mode == PCRE2_JIT_COMPLETE) + add_jump(compiler, &common->failed_match, partial_quit[1]); + +load_from_mem_vector(compiler, TRUE, data_ind, str_ptr_reg_ind, 0); + +if (compare_type != vector_compare_match2) + { + if (compare_type == vector_compare_match1i) + fast_forward_char_pair_sse2_compare(compiler, compare_type, 0, data_ind, cmp1_ind, cmp2_ind, tmp_ind); + + /* VFEE */ + instruction[0] = (sljit_u16)(0xe700 | (data_ind << 4) | data_ind); + instruction[1] = (sljit_u16)((cmp1_ind << 12) | (1 << 4)); + instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0xe << 8) | 0x80); + sljit_emit_op_custom(compiler, instruction, 6); + } +else + { + for (i = 0; i < 3; i++) + fast_forward_char_pair_sse2_compare(compiler, compare_type, i, data_ind, cmp1_ind, cmp2_ind, tmp_ind); + + /* VFENE */ + instruction[0] = (sljit_u16)(0xe700 | (data_ind << 4) | data_ind); + instruction[1] = (sljit_u16)((zero_ind << 12) | (1 << 4)); + instruction[2] = (sljit_u16)((0xe << 8) | 0x81); + sljit_emit_op_custom(compiler, instruction, 6); + } + +sljit_set_current_flags(compiler, SLJIT_SET_OVERFLOW); +JUMPTO(SLJIT_OVERFLOW, start); + +/* VLGVB */ +instruction[0] = (sljit_u16)(0xe700 | (tmp1_reg_ind << 4) | data_ind); +instruction[1] = 7; +instruction[2] = (sljit_u16)((0x4 << 8) | 0x21); +sljit_emit_op_custom(compiler, instruction, 6); + +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); + +JUMPHERE(quit); + +if (common->mode != PCRE2_JIT_COMPLETE) + { + JUMPHERE(partial_quit[0]); + JUMPHERE(partial_quit[1]); + OP2(SLJIT_SUB | SLJIT_SET_GREATER, SLJIT_UNUSED, 0, STR_PTR, 0, STR_END, 0); + CMOV(SLJIT_GREATER, STR_PTR, STR_END, 0); + } +else + add_jump(compiler, &common->failed_match, CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0)); + +#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 +if (common->utf && offset > 0) + { + SLJIT_ASSERT(common->mode == PCRE2_JIT_COMPLETE); + + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(-offset)); + + quit = jump_if_utf_char_start(compiler, TMP1); + + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + add_jump(compiler, &common->failed_match, CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0)); + + OP2(SLJIT_ADD, TMP2, 0, STR_PTR, 0, SLJIT_IMM, 16); + JUMPTO(SLJIT_JUMP, restart); + + JUMPHERE(quit); + } +#endif +} + +#define JIT_HAS_FAST_REQUESTED_CHAR_SIMD 1 + +static jump_list *fast_requested_char_simd(compiler_common *common, PCRE2_UCHAR char1, PCRE2_UCHAR char2) +{ +DEFINE_COMPILER; +sljit_u16 instruction[3]; +struct sljit_label *start; +struct sljit_jump *quit; +jump_list *not_found = NULL; +vector_compare_type compare_type = vector_compare_match1; +sljit_s32 tmp1_reg_ind = sljit_get_register_index(TMP1); +sljit_s32 tmp3_reg_ind = sljit_get_register_index(TMP3); +sljit_s32 data_ind = 0; +sljit_s32 tmp_ind = 1; +sljit_s32 cmp1_ind = 2; +sljit_s32 cmp2_ind = 3; +sljit_s32 zero_ind = 4; +sljit_u32 bit = 0; +int i; + +if (char1 != char2) + { + bit = char1 ^ char2; + compare_type = vector_compare_match1i; + + if (!is_powerof2(bit)) + { + bit = 0; + compare_type = vector_compare_match2; + } + } + +add_jump(compiler, ¬_found, CMP(SLJIT_GREATER_EQUAL, TMP1, 0, STR_END, 0)); + +/* First part (unaligned start) */ + +OP2(SLJIT_ADD, TMP2, 0, TMP1, 0, SLJIT_IMM, 16); + +#if PCRE2_CODE_UNIT_WIDTH != 32 + +/* VREPI */ +instruction[0] = (sljit_u16)(0xe700 | (cmp1_ind << 4)); +instruction[1] = (sljit_u16)(char1 | bit); +instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0x8 << 8) | 0x45); +sljit_emit_op_custom(compiler, instruction, 6); + +if (char1 != char2) + { + /* VREPI */ + instruction[0] = (sljit_u16)(0xe700 | (cmp2_ind << 4)); + instruction[1] = (sljit_u16)(bit != 0 ? bit : char2); + /* instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0x8 << 8) | 0x45); */ + sljit_emit_op_custom(compiler, instruction, 6); + } + +#else /* PCRE2_CODE_UNIT_WIDTH == 32 */ + +for (int i = 0; i < 2; i++) + { + replicate_imm_vector(compiler, i, cmp1_ind, char1 | bit, TMP3); + + if (char1 != char2) + replicate_imm_vector(compiler, i, cmp2_ind, bit != 0 ? bit : char2, TMP3); + } + +#endif /* PCRE2_CODE_UNIT_WIDTH != 32 */ + +if (compare_type == vector_compare_match2) + { + /* VREPI */ + instruction[0] = (sljit_u16)(0xe700 | (zero_ind << 4)); + instruction[1] = 0; + instruction[2] = (sljit_u16)((0x8 << 8) | 0x45); + sljit_emit_op_custom(compiler, instruction, 6); + } + +load_from_mem_vector(compiler, TRUE, data_ind, tmp1_reg_ind, 0); +OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, ~15); + +if (compare_type != vector_compare_match2) + { + if (compare_type == vector_compare_match1i) + fast_forward_char_pair_sse2_compare(compiler, compare_type, 0, data_ind, cmp1_ind, cmp2_ind, tmp_ind); + + /* VFEE */ + instruction[0] = (sljit_u16)(0xe700 | (data_ind << 4) | data_ind); + instruction[1] = (sljit_u16)((cmp1_ind << 12) | (1 << 4)); + instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0xe << 8) | 0x80); + sljit_emit_op_custom(compiler, instruction, 6); + } +else + { + for (i = 0; i < 3; i++) + fast_forward_char_pair_sse2_compare(compiler, compare_type, i, data_ind, cmp1_ind, cmp2_ind, tmp_ind); + + /* VFENE */ + instruction[0] = (sljit_u16)(0xe700 | (data_ind << 4) | data_ind); + instruction[1] = (sljit_u16)((zero_ind << 12) | (1 << 4)); + instruction[2] = (sljit_u16)((0xe << 8) | 0x81); + sljit_emit_op_custom(compiler, instruction, 6); + } + +/* VLGVB */ +instruction[0] = (sljit_u16)(0xe700 | (tmp3_reg_ind << 4) | data_ind); +instruction[1] = 7; +instruction[2] = (sljit_u16)((0x4 << 8) | 0x21); +sljit_emit_op_custom(compiler, instruction, 6); + +OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, TMP3, 0); +quit = CMP(SLJIT_LESS, TMP1, 0, TMP2, 0); + +OP2(SLJIT_SUB, TMP1, 0, TMP2, 0, SLJIT_IMM, 16); + +/* Second part (aligned) */ +start = LABEL(); + +OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, 16); + +add_jump(compiler, ¬_found, CMP(SLJIT_GREATER_EQUAL, TMP1, 0, STR_END, 0)); + +load_from_mem_vector(compiler, TRUE, data_ind, tmp1_reg_ind, 0); + +if (compare_type != vector_compare_match2) + { + if (compare_type == vector_compare_match1i) + fast_forward_char_pair_sse2_compare(compiler, compare_type, 0, data_ind, cmp1_ind, cmp2_ind, tmp_ind); + + /* VFEE */ + instruction[0] = (sljit_u16)(0xe700 | (data_ind << 4) | data_ind); + instruction[1] = (sljit_u16)((cmp1_ind << 12) | (1 << 4)); + instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0xe << 8) | 0x80); + sljit_emit_op_custom(compiler, instruction, 6); + } +else + { + for (i = 0; i < 3; i++) + fast_forward_char_pair_sse2_compare(compiler, compare_type, i, data_ind, cmp1_ind, cmp2_ind, tmp_ind); + + /* VFENE */ + instruction[0] = (sljit_u16)(0xe700 | (data_ind << 4) | data_ind); + instruction[1] = (sljit_u16)((zero_ind << 12) | (1 << 4)); + instruction[2] = (sljit_u16)((0xe << 8) | 0x81); + sljit_emit_op_custom(compiler, instruction, 6); + } + +sljit_set_current_flags(compiler, SLJIT_SET_OVERFLOW); +JUMPTO(SLJIT_OVERFLOW, start); + +/* VLGVB */ +instruction[0] = (sljit_u16)(0xe700 | (tmp3_reg_ind << 4) | data_ind); +instruction[1] = 7; +instruction[2] = (sljit_u16)((0x4 << 8) | 0x21); +sljit_emit_op_custom(compiler, instruction, 6); + +OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, TMP3, 0); + +JUMPHERE(quit); +add_jump(compiler, ¬_found, CMP(SLJIT_GREATER_EQUAL, TMP1, 0, STR_END, 0)); + +return not_found; +} + +#define JIT_HAS_FAST_FORWARD_CHAR_PAIR_SIMD 1 + +static void fast_forward_char_pair_simd(compiler_common *common, sljit_s32 offs1, + PCRE2_UCHAR char1a, PCRE2_UCHAR char1b, sljit_s32 offs2, PCRE2_UCHAR char2a, PCRE2_UCHAR char2b) +{ +DEFINE_COMPILER; +sljit_u16 instruction[3]; +struct sljit_label *start; +#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 +struct sljit_label *restart; +#endif +struct sljit_jump *quit; +struct sljit_jump *jump[2]; +vector_compare_type compare1_type = vector_compare_match1; +vector_compare_type compare2_type = vector_compare_match1; +sljit_u32 bit1 = 0; +sljit_u32 bit2 = 0; +sljit_s32 diff = IN_UCHARS(offs2 - offs1); +sljit_s32 tmp1_reg_ind = sljit_get_register_index(TMP1); +sljit_s32 tmp2_reg_ind = sljit_get_register_index(TMP2); +sljit_s32 str_ptr_reg_ind = sljit_get_register_index(STR_PTR); +sljit_s32 data1_ind = 0; +sljit_s32 data2_ind = 1; +sljit_s32 tmp1_ind = 2; +sljit_s32 tmp2_ind = 3; +sljit_s32 cmp1a_ind = 4; +sljit_s32 cmp1b_ind = 5; +sljit_s32 cmp2a_ind = 6; +sljit_s32 cmp2b_ind = 7; +sljit_s32 zero_ind = 8; +int i; + +SLJIT_ASSERT(common->mode == PCRE2_JIT_COMPLETE && offs1 > offs2); +SLJIT_ASSERT(-diff <= (sljit_s32)IN_UCHARS(max_fast_forward_char_pair_offset())); +SLJIT_ASSERT(tmp1_reg_ind != 0 && tmp2_reg_ind != 0); + +if (char1a != char1b) + { + bit1 = char1a ^ char1b; + compare1_type = vector_compare_match1i; + + if (!is_powerof2(bit1)) + { + bit1 = 0; + compare1_type = vector_compare_match2; + } + } + +if (char2a != char2b) + { + bit2 = char2a ^ char2b; + compare2_type = vector_compare_match1i; + + if (!is_powerof2(bit2)) + { + bit2 = 0; + compare2_type = vector_compare_match2; + } + } + +/* Initialize. */ +if (common->match_end_ptr != 0) + { + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_SP), common->match_end_ptr); + OP1(SLJIT_MOV, TMP3, 0, STR_END, 0); + OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, IN_UCHARS(offs1 + 1)); + + OP2(SLJIT_SUB | SLJIT_SET_LESS, SLJIT_UNUSED, 0, TMP1, 0, STR_END, 0); + CMOV(SLJIT_LESS, STR_END, TMP1, 0); + } + +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(offs1)); +add_jump(compiler, &common->failed_match, CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0)); +OP2(SLJIT_AND, TMP2, 0, STR_PTR, 0, SLJIT_IMM, ~15); + +#if PCRE2_CODE_UNIT_WIDTH != 32 + +OP2(SLJIT_SUB, TMP1, 0, STR_PTR, 0, SLJIT_IMM, -diff); + +/* VREPI */ +instruction[0] = (sljit_u16)(0xe700 | (cmp1a_ind << 4)); +instruction[1] = (sljit_u16)(char1a | bit1); +instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0x8 << 8) | 0x45); +sljit_emit_op_custom(compiler, instruction, 6); + +if (char1a != char1b) + { + /* VREPI */ + instruction[0] = (sljit_u16)(0xe700 | (cmp1b_ind << 4)); + instruction[1] = (sljit_u16)(bit1 != 0 ? bit1 : char1b); + /* instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0x8 << 8) | 0x45); */ + sljit_emit_op_custom(compiler, instruction, 6); + } + +/* VREPI */ +instruction[0] = (sljit_u16)(0xe700 | (cmp2a_ind << 4)); +instruction[1] = (sljit_u16)(char2a | bit2); +/* instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0x8 << 8) | 0x45); */ +sljit_emit_op_custom(compiler, instruction, 6); + +if (char2a != char2b) + { + /* VREPI */ + instruction[0] = (sljit_u16)(0xe700 | (cmp2b_ind << 4)); + instruction[1] = (sljit_u16)(bit2 != 0 ? bit2 : char2b); + /* instruction[2] = (sljit_u16)((VECTOR_ELEMENT_SIZE << 12) | (0x8 << 8) | 0x45); */ + sljit_emit_op_custom(compiler, instruction, 6); + } + +#else /* PCRE2_CODE_UNIT_WIDTH == 32 */ + +for (int i = 0; i < 2; i++) + { + replicate_imm_vector(compiler, i, cmp1a_ind, char1a | bit1, TMP1); + + if (char1a != char1b) + replicate_imm_vector(compiler, i, cmp1b_ind, bit1 != 0 ? bit1 : char1b, TMP1); + + replicate_imm_vector(compiler, i, cmp2a_ind, char2a | bit2, TMP1); + + if (char2a != char2b) + replicate_imm_vector(compiler, i, cmp2b_ind, bit2 != 0 ? bit2 : char2b, TMP1); + } + +OP2(SLJIT_SUB, TMP1, 0, STR_PTR, 0, SLJIT_IMM, -diff); + +#endif /* PCRE2_CODE_UNIT_WIDTH != 32 */ + +/* VREPI */ +instruction[0] = (sljit_u16)(0xe700 | (zero_ind << 4)); +instruction[1] = 0; +instruction[2] = (sljit_u16)((0x8 << 8) | 0x45); +sljit_emit_op_custom(compiler, instruction, 6); + +#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 +restart = LABEL(); +#endif + +jump[0] = CMP(SLJIT_LESS, TMP1, 0, TMP2, 0); +load_from_mem_vector(compiler, TRUE, data2_ind, tmp1_reg_ind, 0); +jump[1] = JUMP(SLJIT_JUMP); +JUMPHERE(jump[0]); +load_from_mem_vector(compiler, FALSE, data2_ind, tmp1_reg_ind, 0); +JUMPHERE(jump[1]); + +load_from_mem_vector(compiler, TRUE, data1_ind, str_ptr_reg_ind, 0); +OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, SLJIT_IMM, 16); + +for (i = 0; i < 3; i++) + { + fast_forward_char_pair_sse2_compare(compiler, compare1_type, i, data1_ind, cmp1a_ind, cmp1b_ind, tmp1_ind); + fast_forward_char_pair_sse2_compare(compiler, compare2_type, i, data2_ind, cmp2a_ind, cmp2b_ind, tmp2_ind); + } + +/* VN */ +instruction[0] = (sljit_u16)(0xe700 | (data1_ind << 4) | data1_ind); +instruction[1] = (sljit_u16)(data2_ind << 12); +instruction[2] = (sljit_u16)((0xe << 8) | 0x68); +sljit_emit_op_custom(compiler, instruction, 6); + +/* VFENE */ +instruction[0] = (sljit_u16)(0xe700 | (data1_ind << 4) | data1_ind); +instruction[1] = (sljit_u16)((zero_ind << 12) | (1 << 4)); +instruction[2] = (sljit_u16)((0xe << 8) | 0x81); +sljit_emit_op_custom(compiler, instruction, 6); + +/* VLGVB */ +instruction[0] = (sljit_u16)(0xe700 | (tmp1_reg_ind << 4) | data1_ind); +instruction[1] = 7; +instruction[2] = (sljit_u16)((0x4 << 8) | 0x21); +sljit_emit_op_custom(compiler, instruction, 6); + +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP1, 0); +quit = CMP(SLJIT_LESS, STR_PTR, 0, TMP2, 0); + +OP2(SLJIT_SUB, STR_PTR, 0, TMP2, 0, SLJIT_IMM, 16); +OP1(SLJIT_MOV, TMP1, 0, SLJIT_IMM, diff); + +/* Main loop. */ +start = LABEL(); + +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, 16); +add_jump(compiler, &common->failed_match, CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0)); + +load_from_mem_vector(compiler, FALSE, data1_ind, str_ptr_reg_ind, 0); +load_from_mem_vector(compiler, FALSE, data2_ind, str_ptr_reg_ind, tmp1_reg_ind); + +for (i = 0; i < 3; i++) + { + fast_forward_char_pair_sse2_compare(compiler, compare1_type, i, data1_ind, cmp1a_ind, cmp1b_ind, tmp1_ind); + fast_forward_char_pair_sse2_compare(compiler, compare2_type, i, data2_ind, cmp2a_ind, cmp2b_ind, tmp2_ind); + } + +/* VN */ +instruction[0] = (sljit_u16)(0xe700 | (data1_ind << 4) | data1_ind); +instruction[1] = (sljit_u16)(data2_ind << 12); +instruction[2] = (sljit_u16)((0xe << 8) | 0x68); +sljit_emit_op_custom(compiler, instruction, 6); + +/* VFENE */ +instruction[0] = (sljit_u16)(0xe700 | (data1_ind << 4) | data1_ind); +instruction[1] = (sljit_u16)((zero_ind << 12) | (1 << 4)); +instruction[2] = (sljit_u16)((0xe << 8) | 0x81); +sljit_emit_op_custom(compiler, instruction, 6); + +sljit_set_current_flags(compiler, SLJIT_SET_OVERFLOW); +JUMPTO(SLJIT_OVERFLOW, start); + +/* VLGVB */ +instruction[0] = (sljit_u16)(0xe700 | (tmp2_reg_ind << 4) | data1_ind); +instruction[1] = 7; +instruction[2] = (sljit_u16)((0x4 << 8) | 0x21); +sljit_emit_op_custom(compiler, instruction, 6); + +OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, TMP2, 0); + +JUMPHERE(quit); + +add_jump(compiler, &common->failed_match, CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0)); + +#if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 32 +if (common->utf) + { + SLJIT_ASSERT(common->mode == PCRE2_JIT_COMPLETE); + + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(-offs1)); + + quit = jump_if_utf_char_start(compiler, TMP1); + + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + add_jump(compiler, &common->failed_match, CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0)); + + /* TMP1 contains diff. */ + OP2(SLJIT_AND, TMP2, 0, STR_PTR, 0, SLJIT_IMM, ~15); + OP2(SLJIT_SUB, TMP1, 0, STR_PTR, 0, SLJIT_IMM, -diff); + JUMPTO(SLJIT_JUMP, restart); + + JUMPHERE(quit); + } +#endif + +OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(offs1)); + +if (common->match_end_ptr != 0) + OP1(SLJIT_MOV, STR_END, 0, TMP3, 0); +} + +#endif /* SLJIT_CONFIG_S390X */ + +#endif /* !SUPPORT_VALGRIND */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_match.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_match.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_match.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_match.c 2022-11-11 15:29:17.000000000 +0800 @@ -7,7 +7,7 @@ Written by Philip Hazel Original API code Copyright (c) 1997-2012 University of Cambridge - New API code Copyright (c) 2015-2020 University of Cambridge + New API code Copyright (c) 2015-2021 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -818,10 +818,12 @@ /* N is now the frame of the recursion; the previous frame is at the OP_RECURSE position. Go back there, copying the current subject position - and mark, and move on past the OP_RECURSE. */ + and mark, and the start_match position (\K might have changed it), and + then move on past the OP_RECURSE. */ P->eptr = Feptr; P->mark = Fmark; + P->start_match = Fstart_match; F = P; Fecode += 1 + LINK_SIZE; continue; @@ -6115,8 +6117,8 @@ BOOL startline; #if PCRE2_CODE_UNIT_WIDTH == 8 -BOOL memchr_not_found_first_cu; -BOOL memchr_not_found_first_cu2; +PCRE2_SPTR memchr_found_first_cu; +PCRE2_SPTR memchr_found_first_cu2; #endif PCRE2_UCHAR first_cu = 0; @@ -6710,8 +6712,8 @@ mb->hitend = FALSE; #if PCRE2_CODE_UNIT_WIDTH == 8 -memchr_not_found_first_cu = FALSE; -memchr_not_found_first_cu2 = FALSE; +memchr_found_first_cu = NULL; +memchr_found_first_cu2 = NULL; #endif for(;;) @@ -6780,13 +6782,7 @@ } } - /* Not anchored. Advance to a unique first code unit if there is one. In - 8-bit mode, the use of memchr() gives a big speed up, even though we have - to call it twice in caseless mode, in order to find the earliest occurrence - of the character in either of its cases. If a call to memchr() that - searches the rest of the subject fails to find one case, remember that in - order not to keep on repeating the search. This can make a huge difference - when the strings are very long and only one case is present. */ + /* Not anchored. Advance to a unique first code unit if there is one. */ else { @@ -6794,43 +6790,68 @@ { if (first_cu != first_cu2) /* Caseless */ { + /* In 16-bit and 32_bit modes we have to do our own search, so can + look for both cases at once. */ + #if PCRE2_CODE_UNIT_WIDTH != 8 PCRE2_UCHAR smc; while (start_match < end_subject && (smc = UCHAR21TEST(start_match)) != first_cu && - smc != first_cu2) + smc != first_cu2) start_match++; +#else + /* In 8-bit mode, the use of memchr() gives a big speed up, even + though we have to call it twice in order to find the earliest + occurrence of the code unit in either of its cases. Caching is used + to remember the positions of previously found code units. This can + make a huge difference when the strings are very long and only one + case is actually present. */ -#else /* 8-bit code units */ PCRE2_SPTR pp1 = NULL; PCRE2_SPTR pp2 = NULL; - PCRE2_SIZE cu2size = end_subject - start_match; + PCRE2_SIZE searchlength = end_subject - start_match; + + /* If we haven't got a previously found position for first_cu, or if + the current starting position is later, we need to do a search. If + the code unit is not found, set it to the end. */ - if (!memchr_not_found_first_cu) + if (memchr_found_first_cu == NULL || + start_match > memchr_found_first_cu) { - pp1 = memchr(start_match, first_cu, end_subject - start_match); - if (pp1 == NULL) memchr_not_found_first_cu = TRUE; - else cu2size = pp1 - start_match; + pp1 = memchr(start_match, first_cu, searchlength); + memchr_found_first_cu = (pp1 == NULL)? end_subject : pp1; } - /* If pp1 is not NULL, we have arranged to search only as far as pp1, - to see if the other case is earlier, so we can set "not found" only - when both searches have returned NULL. */ + /* If the start is before a previously found position, use the + previous position, or NULL if a previous search failed. */ + + else pp1 = (memchr_found_first_cu == end_subject)? NULL : + memchr_found_first_cu; + + /* Do the same thing for the other case. */ - if (!memchr_not_found_first_cu2) + if (memchr_found_first_cu2 == NULL || + start_match > memchr_found_first_cu2) { - pp2 = memchr(start_match, first_cu2, cu2size); - memchr_not_found_first_cu2 = (pp2 == NULL && pp1 == NULL); + pp2 = memchr(start_match, first_cu2, searchlength); + memchr_found_first_cu2 = (pp2 == NULL)? end_subject : pp2; } + else pp2 = (memchr_found_first_cu2 == end_subject)? NULL : + memchr_found_first_cu2; + + /* Set the start to the end of the subject if neither case was found. + Otherwise, use the earlier found point. */ + if (pp1 == NULL) start_match = (pp2 == NULL)? end_subject : pp2; else start_match = (pp2 == NULL || pp1 < pp2)? pp1 : pp2; -#endif + +#endif /* 8-bit handling */ } - /* The caseful case */ + /* The caseful case is much simpler. */ else { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_tables.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_tables.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_tables.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_tables.c 2022-11-11 15:29:17.000000000 +0800 @@ -273,6 +273,7 @@ #define STRING_Cs0 STR_C STR_s "\0" #define STRING_Cuneiform0 STR_C STR_u STR_n STR_e STR_i STR_f STR_o STR_r STR_m "\0" #define STRING_Cypriot0 STR_C STR_y STR_p STR_r STR_i STR_o STR_t "\0" +#define STRING_Cypro_Minoan0 STR_C STR_y STR_p STR_r STR_o STR_UNDERSCORE STR_M STR_i STR_n STR_o STR_a STR_n "\0" #define STRING_Cyrillic0 STR_C STR_y STR_r STR_i STR_l STR_l STR_i STR_c "\0" #define STRING_Deseret0 STR_D STR_e STR_s STR_e STR_r STR_e STR_t "\0" #define STRING_Devanagari0 STR_D STR_e STR_v STR_a STR_n STR_a STR_g STR_a STR_r STR_i "\0" @@ -371,6 +372,7 @@ #define STRING_Old_Sogdian0 STR_O STR_l STR_d STR_UNDERSCORE STR_S STR_o STR_g STR_d STR_i STR_a STR_n "\0" #define STRING_Old_South_Arabian0 STR_O STR_l STR_d STR_UNDERSCORE STR_S STR_o STR_u STR_t STR_h STR_UNDERSCORE STR_A STR_r STR_a STR_b STR_i STR_a STR_n "\0" #define STRING_Old_Turkic0 STR_O STR_l STR_d STR_UNDERSCORE STR_T STR_u STR_r STR_k STR_i STR_c "\0" +#define STRING_Old_Uyghur0 STR_O STR_l STR_d STR_UNDERSCORE STR_U STR_y STR_g STR_h STR_u STR_r "\0" #define STRING_Oriya0 STR_O STR_r STR_i STR_y STR_a "\0" #define STRING_Osage0 STR_O STR_s STR_a STR_g STR_e "\0" #define STRING_Osmanya0 STR_O STR_s STR_m STR_a STR_n STR_y STR_a "\0" @@ -415,6 +417,7 @@ #define STRING_Tai_Viet0 STR_T STR_a STR_i STR_UNDERSCORE STR_V STR_i STR_e STR_t "\0" #define STRING_Takri0 STR_T STR_a STR_k STR_r STR_i "\0" #define STRING_Tamil0 STR_T STR_a STR_m STR_i STR_l "\0" +#define STRING_Tangsa0 STR_T STR_a STR_n STR_g STR_s STR_a "\0" #define STRING_Tangut0 STR_T STR_a STR_n STR_g STR_u STR_t "\0" #define STRING_Telugu0 STR_T STR_e STR_l STR_u STR_g STR_u "\0" #define STRING_Thaana0 STR_T STR_h STR_a STR_a STR_n STR_a "\0" @@ -422,9 +425,11 @@ #define STRING_Tibetan0 STR_T STR_i STR_b STR_e STR_t STR_a STR_n "\0" #define STRING_Tifinagh0 STR_T STR_i STR_f STR_i STR_n STR_a STR_g STR_h "\0" #define STRING_Tirhuta0 STR_T STR_i STR_r STR_h STR_u STR_t STR_a "\0" +#define STRING_Toto0 STR_T STR_o STR_t STR_o "\0" #define STRING_Ugaritic0 STR_U STR_g STR_a STR_r STR_i STR_t STR_i STR_c "\0" #define STRING_Unknown0 STR_U STR_n STR_k STR_n STR_o STR_w STR_n "\0" #define STRING_Vai0 STR_V STR_a STR_i "\0" +#define STRING_Vithkuqi0 STR_V STR_i STR_t STR_h STR_k STR_u STR_q STR_i "\0" #define STRING_Wancho0 STR_W STR_a STR_n STR_c STR_h STR_o "\0" #define STRING_Warang_Citi0 STR_W STR_a STR_r STR_a STR_n STR_g STR_UNDERSCORE STR_C STR_i STR_t STR_i "\0" #define STRING_Xan0 STR_X STR_a STR_n "\0" @@ -476,6 +481,7 @@ STRING_Cs0 STRING_Cuneiform0 STRING_Cypriot0 + STRING_Cypro_Minoan0 STRING_Cyrillic0 STRING_Deseret0 STRING_Devanagari0 @@ -574,6 +580,7 @@ STRING_Old_Sogdian0 STRING_Old_South_Arabian0 STRING_Old_Turkic0 + STRING_Old_Uyghur0 STRING_Oriya0 STRING_Osage0 STRING_Osmanya0 @@ -618,6 +625,7 @@ STRING_Tai_Viet0 STRING_Takri0 STRING_Tamil0 + STRING_Tangsa0 STRING_Tangut0 STRING_Telugu0 STRING_Thaana0 @@ -625,9 +633,11 @@ STRING_Tibetan0 STRING_Tifinagh0 STRING_Tirhuta0 + STRING_Toto0 STRING_Ugaritic0 STRING_Unknown0 STRING_Vai0 + STRING_Vithkuqi0 STRING_Wancho0 STRING_Warang_Citi0 STRING_Xan0 @@ -679,172 +689,177 @@ { 255, PT_PC, ucp_Cs }, { 258, PT_SC, ucp_Cuneiform }, { 268, PT_SC, ucp_Cypriot }, - { 276, PT_SC, ucp_Cyrillic }, - { 285, PT_SC, ucp_Deseret }, - { 293, PT_SC, ucp_Devanagari }, - { 304, PT_SC, ucp_Dives_Akuru }, - { 316, PT_SC, ucp_Dogra }, - { 322, PT_SC, ucp_Duployan }, - { 331, PT_SC, ucp_Egyptian_Hieroglyphs }, - { 352, PT_SC, ucp_Elbasan }, - { 360, PT_SC, ucp_Elymaic }, - { 368, PT_SC, ucp_Ethiopic }, - { 377, PT_SC, ucp_Georgian }, - { 386, PT_SC, ucp_Glagolitic }, - { 397, PT_SC, ucp_Gothic }, - { 404, PT_SC, ucp_Grantha }, - { 412, PT_SC, ucp_Greek }, - { 418, PT_SC, ucp_Gujarati }, - { 427, PT_SC, ucp_Gunjala_Gondi }, - { 441, PT_SC, ucp_Gurmukhi }, - { 450, PT_SC, ucp_Han }, - { 454, PT_SC, ucp_Hangul }, - { 461, PT_SC, ucp_Hanifi_Rohingya }, - { 477, PT_SC, ucp_Hanunoo }, - { 485, PT_SC, ucp_Hatran }, - { 492, PT_SC, ucp_Hebrew }, - { 499, PT_SC, ucp_Hiragana }, - { 508, PT_SC, ucp_Imperial_Aramaic }, - { 525, PT_SC, ucp_Inherited }, - { 535, PT_SC, ucp_Inscriptional_Pahlavi }, - { 557, PT_SC, ucp_Inscriptional_Parthian }, - { 580, PT_SC, ucp_Javanese }, - { 589, PT_SC, ucp_Kaithi }, - { 596, PT_SC, ucp_Kannada }, - { 604, PT_SC, ucp_Katakana }, - { 613, PT_SC, ucp_Kayah_Li }, - { 622, PT_SC, ucp_Kharoshthi }, - { 633, PT_SC, ucp_Khitan_Small_Script }, - { 653, PT_SC, ucp_Khmer }, - { 659, PT_SC, ucp_Khojki }, - { 666, PT_SC, ucp_Khudawadi }, - { 676, PT_GC, ucp_L }, - { 678, PT_LAMP, 0 }, - { 681, PT_SC, ucp_Lao }, - { 685, PT_SC, ucp_Latin }, - { 691, PT_SC, ucp_Lepcha }, - { 698, PT_SC, ucp_Limbu }, - { 704, PT_SC, ucp_Linear_A }, - { 713, PT_SC, ucp_Linear_B }, - { 722, PT_SC, ucp_Lisu }, - { 727, PT_PC, ucp_Ll }, - { 730, PT_PC, ucp_Lm }, - { 733, PT_PC, ucp_Lo }, - { 736, PT_PC, ucp_Lt }, - { 739, PT_PC, ucp_Lu }, - { 742, PT_SC, ucp_Lycian }, - { 749, PT_SC, ucp_Lydian }, - { 756, PT_GC, ucp_M }, - { 758, PT_SC, ucp_Mahajani }, - { 767, PT_SC, ucp_Makasar }, - { 775, PT_SC, ucp_Malayalam }, - { 785, PT_SC, ucp_Mandaic }, - { 793, PT_SC, ucp_Manichaean }, - { 804, PT_SC, ucp_Marchen }, - { 812, PT_SC, ucp_Masaram_Gondi }, - { 826, PT_PC, ucp_Mc }, - { 829, PT_PC, ucp_Me }, - { 832, PT_SC, ucp_Medefaidrin }, - { 844, PT_SC, ucp_Meetei_Mayek }, - { 857, PT_SC, ucp_Mende_Kikakui }, - { 871, PT_SC, ucp_Meroitic_Cursive }, - { 888, PT_SC, ucp_Meroitic_Hieroglyphs }, - { 909, PT_SC, ucp_Miao }, - { 914, PT_PC, ucp_Mn }, - { 917, PT_SC, ucp_Modi }, - { 922, PT_SC, ucp_Mongolian }, - { 932, PT_SC, ucp_Mro }, - { 936, PT_SC, ucp_Multani }, - { 944, PT_SC, ucp_Myanmar }, - { 952, PT_GC, ucp_N }, - { 954, PT_SC, ucp_Nabataean }, - { 964, PT_SC, ucp_Nandinagari }, - { 976, PT_PC, ucp_Nd }, - { 979, PT_SC, ucp_New_Tai_Lue }, - { 991, PT_SC, ucp_Newa }, - { 996, PT_SC, ucp_Nko }, - { 1000, PT_PC, ucp_Nl }, - { 1003, PT_PC, ucp_No }, - { 1006, PT_SC, ucp_Nushu }, - { 1012, PT_SC, ucp_Nyiakeng_Puachue_Hmong }, - { 1035, PT_SC, ucp_Ogham }, - { 1041, PT_SC, ucp_Ol_Chiki }, - { 1050, PT_SC, ucp_Old_Hungarian }, - { 1064, PT_SC, ucp_Old_Italic }, - { 1075, PT_SC, ucp_Old_North_Arabian }, - { 1093, PT_SC, ucp_Old_Permic }, - { 1104, PT_SC, ucp_Old_Persian }, - { 1116, PT_SC, ucp_Old_Sogdian }, - { 1128, PT_SC, ucp_Old_South_Arabian }, - { 1146, PT_SC, ucp_Old_Turkic }, - { 1157, PT_SC, ucp_Oriya }, - { 1163, PT_SC, ucp_Osage }, - { 1169, PT_SC, ucp_Osmanya }, - { 1177, PT_GC, ucp_P }, - { 1179, PT_SC, ucp_Pahawh_Hmong }, - { 1192, PT_SC, ucp_Palmyrene }, - { 1202, PT_SC, ucp_Pau_Cin_Hau }, - { 1214, PT_PC, ucp_Pc }, - { 1217, PT_PC, ucp_Pd }, - { 1220, PT_PC, ucp_Pe }, - { 1223, PT_PC, ucp_Pf }, - { 1226, PT_SC, ucp_Phags_Pa }, - { 1235, PT_SC, ucp_Phoenician }, - { 1246, PT_PC, ucp_Pi }, - { 1249, PT_PC, ucp_Po }, - { 1252, PT_PC, ucp_Ps }, - { 1255, PT_SC, ucp_Psalter_Pahlavi }, - { 1271, PT_SC, ucp_Rejang }, - { 1278, PT_SC, ucp_Runic }, - { 1284, PT_GC, ucp_S }, - { 1286, PT_SC, ucp_Samaritan }, - { 1296, PT_SC, ucp_Saurashtra }, - { 1307, PT_PC, ucp_Sc }, - { 1310, PT_SC, ucp_Sharada }, - { 1318, PT_SC, ucp_Shavian }, - { 1326, PT_SC, ucp_Siddham }, - { 1334, PT_SC, ucp_SignWriting }, - { 1346, PT_SC, ucp_Sinhala }, - { 1354, PT_PC, ucp_Sk }, - { 1357, PT_PC, ucp_Sm }, - { 1360, PT_PC, ucp_So }, - { 1363, PT_SC, ucp_Sogdian }, - { 1371, PT_SC, ucp_Sora_Sompeng }, - { 1384, PT_SC, ucp_Soyombo }, - { 1392, PT_SC, ucp_Sundanese }, - { 1402, PT_SC, ucp_Syloti_Nagri }, - { 1415, PT_SC, ucp_Syriac }, - { 1422, PT_SC, ucp_Tagalog }, - { 1430, PT_SC, ucp_Tagbanwa }, - { 1439, PT_SC, ucp_Tai_Le }, - { 1446, PT_SC, ucp_Tai_Tham }, - { 1455, PT_SC, ucp_Tai_Viet }, - { 1464, PT_SC, ucp_Takri }, - { 1470, PT_SC, ucp_Tamil }, - { 1476, PT_SC, ucp_Tangut }, - { 1483, PT_SC, ucp_Telugu }, - { 1490, PT_SC, ucp_Thaana }, - { 1497, PT_SC, ucp_Thai }, - { 1502, PT_SC, ucp_Tibetan }, - { 1510, PT_SC, ucp_Tifinagh }, - { 1519, PT_SC, ucp_Tirhuta }, - { 1527, PT_SC, ucp_Ugaritic }, - { 1536, PT_SC, ucp_Unknown }, - { 1544, PT_SC, ucp_Vai }, - { 1548, PT_SC, ucp_Wancho }, - { 1555, PT_SC, ucp_Warang_Citi }, - { 1567, PT_ALNUM, 0 }, - { 1571, PT_PXSPACE, 0 }, - { 1575, PT_SPACE, 0 }, - { 1579, PT_UCNC, 0 }, - { 1583, PT_WORD, 0 }, - { 1587, PT_SC, ucp_Yezidi }, - { 1594, PT_SC, ucp_Yi }, - { 1597, PT_GC, ucp_Z }, - { 1599, PT_SC, ucp_Zanabazar_Square }, - { 1616, PT_PC, ucp_Zl }, - { 1619, PT_PC, ucp_Zp }, - { 1622, PT_PC, ucp_Zs } + { 276, PT_SC, ucp_Cypro_Minoan }, + { 289, PT_SC, ucp_Cyrillic }, + { 298, PT_SC, ucp_Deseret }, + { 306, PT_SC, ucp_Devanagari }, + { 317, PT_SC, ucp_Dives_Akuru }, + { 329, PT_SC, ucp_Dogra }, + { 335, PT_SC, ucp_Duployan }, + { 344, PT_SC, ucp_Egyptian_Hieroglyphs }, + { 365, PT_SC, ucp_Elbasan }, + { 373, PT_SC, ucp_Elymaic }, + { 381, PT_SC, ucp_Ethiopic }, + { 390, PT_SC, ucp_Georgian }, + { 399, PT_SC, ucp_Glagolitic }, + { 410, PT_SC, ucp_Gothic }, + { 417, PT_SC, ucp_Grantha }, + { 425, PT_SC, ucp_Greek }, + { 431, PT_SC, ucp_Gujarati }, + { 440, PT_SC, ucp_Gunjala_Gondi }, + { 454, PT_SC, ucp_Gurmukhi }, + { 463, PT_SC, ucp_Han }, + { 467, PT_SC, ucp_Hangul }, + { 474, PT_SC, ucp_Hanifi_Rohingya }, + { 490, PT_SC, ucp_Hanunoo }, + { 498, PT_SC, ucp_Hatran }, + { 505, PT_SC, ucp_Hebrew }, + { 512, PT_SC, ucp_Hiragana }, + { 521, PT_SC, ucp_Imperial_Aramaic }, + { 538, PT_SC, ucp_Inherited }, + { 548, PT_SC, ucp_Inscriptional_Pahlavi }, + { 570, PT_SC, ucp_Inscriptional_Parthian }, + { 593, PT_SC, ucp_Javanese }, + { 602, PT_SC, ucp_Kaithi }, + { 609, PT_SC, ucp_Kannada }, + { 617, PT_SC, ucp_Katakana }, + { 626, PT_SC, ucp_Kayah_Li }, + { 635, PT_SC, ucp_Kharoshthi }, + { 646, PT_SC, ucp_Khitan_Small_Script }, + { 666, PT_SC, ucp_Khmer }, + { 672, PT_SC, ucp_Khojki }, + { 679, PT_SC, ucp_Khudawadi }, + { 689, PT_GC, ucp_L }, + { 691, PT_LAMP, 0 }, + { 694, PT_SC, ucp_Lao }, + { 698, PT_SC, ucp_Latin }, + { 704, PT_SC, ucp_Lepcha }, + { 711, PT_SC, ucp_Limbu }, + { 717, PT_SC, ucp_Linear_A }, + { 726, PT_SC, ucp_Linear_B }, + { 735, PT_SC, ucp_Lisu }, + { 740, PT_PC, ucp_Ll }, + { 743, PT_PC, ucp_Lm }, + { 746, PT_PC, ucp_Lo }, + { 749, PT_PC, ucp_Lt }, + { 752, PT_PC, ucp_Lu }, + { 755, PT_SC, ucp_Lycian }, + { 762, PT_SC, ucp_Lydian }, + { 769, PT_GC, ucp_M }, + { 771, PT_SC, ucp_Mahajani }, + { 780, PT_SC, ucp_Makasar }, + { 788, PT_SC, ucp_Malayalam }, + { 798, PT_SC, ucp_Mandaic }, + { 806, PT_SC, ucp_Manichaean }, + { 817, PT_SC, ucp_Marchen }, + { 825, PT_SC, ucp_Masaram_Gondi }, + { 839, PT_PC, ucp_Mc }, + { 842, PT_PC, ucp_Me }, + { 845, PT_SC, ucp_Medefaidrin }, + { 857, PT_SC, ucp_Meetei_Mayek }, + { 870, PT_SC, ucp_Mende_Kikakui }, + { 884, PT_SC, ucp_Meroitic_Cursive }, + { 901, PT_SC, ucp_Meroitic_Hieroglyphs }, + { 922, PT_SC, ucp_Miao }, + { 927, PT_PC, ucp_Mn }, + { 930, PT_SC, ucp_Modi }, + { 935, PT_SC, ucp_Mongolian }, + { 945, PT_SC, ucp_Mro }, + { 949, PT_SC, ucp_Multani }, + { 957, PT_SC, ucp_Myanmar }, + { 965, PT_GC, ucp_N }, + { 967, PT_SC, ucp_Nabataean }, + { 977, PT_SC, ucp_Nandinagari }, + { 989, PT_PC, ucp_Nd }, + { 992, PT_SC, ucp_New_Tai_Lue }, + { 1004, PT_SC, ucp_Newa }, + { 1009, PT_SC, ucp_Nko }, + { 1013, PT_PC, ucp_Nl }, + { 1016, PT_PC, ucp_No }, + { 1019, PT_SC, ucp_Nushu }, + { 1025, PT_SC, ucp_Nyiakeng_Puachue_Hmong }, + { 1048, PT_SC, ucp_Ogham }, + { 1054, PT_SC, ucp_Ol_Chiki }, + { 1063, PT_SC, ucp_Old_Hungarian }, + { 1077, PT_SC, ucp_Old_Italic }, + { 1088, PT_SC, ucp_Old_North_Arabian }, + { 1106, PT_SC, ucp_Old_Permic }, + { 1117, PT_SC, ucp_Old_Persian }, + { 1129, PT_SC, ucp_Old_Sogdian }, + { 1141, PT_SC, ucp_Old_South_Arabian }, + { 1159, PT_SC, ucp_Old_Turkic }, + { 1170, PT_SC, ucp_Old_Uyghur }, + { 1181, PT_SC, ucp_Oriya }, + { 1187, PT_SC, ucp_Osage }, + { 1193, PT_SC, ucp_Osmanya }, + { 1201, PT_GC, ucp_P }, + { 1203, PT_SC, ucp_Pahawh_Hmong }, + { 1216, PT_SC, ucp_Palmyrene }, + { 1226, PT_SC, ucp_Pau_Cin_Hau }, + { 1238, PT_PC, ucp_Pc }, + { 1241, PT_PC, ucp_Pd }, + { 1244, PT_PC, ucp_Pe }, + { 1247, PT_PC, ucp_Pf }, + { 1250, PT_SC, ucp_Phags_Pa }, + { 1259, PT_SC, ucp_Phoenician }, + { 1270, PT_PC, ucp_Pi }, + { 1273, PT_PC, ucp_Po }, + { 1276, PT_PC, ucp_Ps }, + { 1279, PT_SC, ucp_Psalter_Pahlavi }, + { 1295, PT_SC, ucp_Rejang }, + { 1302, PT_SC, ucp_Runic }, + { 1308, PT_GC, ucp_S }, + { 1310, PT_SC, ucp_Samaritan }, + { 1320, PT_SC, ucp_Saurashtra }, + { 1331, PT_PC, ucp_Sc }, + { 1334, PT_SC, ucp_Sharada }, + { 1342, PT_SC, ucp_Shavian }, + { 1350, PT_SC, ucp_Siddham }, + { 1358, PT_SC, ucp_SignWriting }, + { 1370, PT_SC, ucp_Sinhala }, + { 1378, PT_PC, ucp_Sk }, + { 1381, PT_PC, ucp_Sm }, + { 1384, PT_PC, ucp_So }, + { 1387, PT_SC, ucp_Sogdian }, + { 1395, PT_SC, ucp_Sora_Sompeng }, + { 1408, PT_SC, ucp_Soyombo }, + { 1416, PT_SC, ucp_Sundanese }, + { 1426, PT_SC, ucp_Syloti_Nagri }, + { 1439, PT_SC, ucp_Syriac }, + { 1446, PT_SC, ucp_Tagalog }, + { 1454, PT_SC, ucp_Tagbanwa }, + { 1463, PT_SC, ucp_Tai_Le }, + { 1470, PT_SC, ucp_Tai_Tham }, + { 1479, PT_SC, ucp_Tai_Viet }, + { 1488, PT_SC, ucp_Takri }, + { 1494, PT_SC, ucp_Tamil }, + { 1500, PT_SC, ucp_Tangsa }, + { 1507, PT_SC, ucp_Tangut }, + { 1514, PT_SC, ucp_Telugu }, + { 1521, PT_SC, ucp_Thaana }, + { 1528, PT_SC, ucp_Thai }, + { 1533, PT_SC, ucp_Tibetan }, + { 1541, PT_SC, ucp_Tifinagh }, + { 1550, PT_SC, ucp_Tirhuta }, + { 1558, PT_SC, ucp_Toto }, + { 1563, PT_SC, ucp_Ugaritic }, + { 1572, PT_SC, ucp_Unknown }, + { 1580, PT_SC, ucp_Vai }, + { 1584, PT_SC, ucp_Vithkuqi }, + { 1593, PT_SC, ucp_Wancho }, + { 1600, PT_SC, ucp_Warang_Citi }, + { 1612, PT_ALNUM, 0 }, + { 1616, PT_PXSPACE, 0 }, + { 1620, PT_SPACE, 0 }, + { 1624, PT_UCNC, 0 }, + { 1628, PT_WORD, 0 }, + { 1632, PT_SC, ucp_Yezidi }, + { 1639, PT_SC, ucp_Yi }, + { 1642, PT_GC, ucp_Z }, + { 1644, PT_SC, ucp_Zanabazar_Square }, + { 1661, PT_PC, ucp_Zl }, + { 1664, PT_PC, ucp_Zp }, + { 1667, PT_PC, ucp_Zs } }; const size_t PRIV(utt_size) = sizeof(PRIV(utt)) / sizeof(ucp_type_table); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_ucd.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_ucd.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_ucd.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_ucd.c 2022-11-11 15:29:17.000000000 +0800 @@ -20,7 +20,7 @@ /* Unicode character database. */ /* This file was autogenerated by the MultiStage2.py script. */ -/* Total size: 101044 bytes, block size: 128. */ +/* Total size: 102844 bytes, block size: 128. */ /* The tables herein are needed only when UCP support is built, and in PCRE2 that happens automatically with UTF support. @@ -39,7 +39,7 @@ const uint32_t PRIV(ucd_caseless_sets)[] = {0}; #else -const char *PRIV(unicode_version) = "13.0.0"; +const char *PRIV(unicode_version) = "14.0.0"; /* If the 32-bit library is run in non-32-bit mode, character values greater than 0x10ffff may be encountered. For these we set up a @@ -116,16 +116,16 @@ a script run come from the same set. */ const uint32_t PRIV(ucd_digit_sets)[] = { - 65, /* Number of subsequent values */ + 66, /* Number of subsequent values */ 0x00039, 0x00669, 0x006f9, 0x007c9, 0x0096f, 0x009ef, 0x00a6f, 0x00aef, 0x00b6f, 0x00bef, 0x00c6f, 0x00cef, 0x00d6f, 0x00def, 0x00e59, 0x00ed9, 0x00f29, 0x01049, 0x01099, 0x017e9, 0x01819, 0x0194f, 0x019d9, 0x01a89, 0x01a99, 0x01b59, 0x01bb9, 0x01c49, 0x01c59, 0x0a629, 0x0a8d9, 0x0a909, 0x0a9d9, 0x0a9f9, 0x0aa59, 0x0abf9, 0x0ff19, 0x104a9, 0x10d39, 0x1106f, 0x110f9, 0x1113f, 0x111d9, 0x112f9, 0x11459, 0x114d9, 0x11659, 0x116c9, - 0x11739, 0x118e9, 0x11959, 0x11c59, 0x11d59, 0x11da9, 0x16a69, 0x16b59, - 0x1d7d7, 0x1d7e1, 0x1d7eb, 0x1d7f5, 0x1d7ff, 0x1e149, 0x1e2f9, 0x1e959, - 0x1fbf9, + 0x11739, 0x118e9, 0x11959, 0x11c59, 0x11d59, 0x11da9, 0x16a69, 0x16ac9, + 0x16b59, 0x1d7d7, 0x1d7e1, 0x1d7eb, 0x1d7f5, 0x1d7ff, 0x1e149, 0x1e2f9, + 0x1e959, 0x1fbf9, }; /* This vector is a list of lists of scripts for the Script Extension @@ -135,55 +135,59 @@ /* 0 */ 0, /* 1 */ 1, 11, 0, /* 4 */ 1, 144, 0, - /* 7 */ 1, 50, 0, - /* 10 */ 1, 56, 0, - /* 13 */ 3, 15, 0, - /* 16 */ 4, 23, 0, - /* 19 */ 6, 84, 0, - /* 22 */ 12, 36, 0, - /* 25 */ 13, 18, 0, - /* 28 */ 13, 34, 0, - /* 31 */ 13, 118, 0, - /* 34 */ 13, 50, 0, - /* 37 */ 15, 107, 0, - /* 40 */ 15, 150, 0, - /* 43 */ 15, 100, 0, - /* 46 */ 15, 54, 0, - /* 49 */ 17, 34, 0, - /* 52 */ 107, 54, 0, - /* 55 */ 21, 108, 0, - /* 58 */ 22, 129, 0, - /* 61 */ 23, 34, 0, - /* 64 */ 27, 30, 0, - /* 67 */ 29, 150, 0, - /* 70 */ 34, 38, 0, - /* 73 */ 38, 65, 0, - /* 76 */ 1, 50, 56, 0, - /* 80 */ 1, 56, 156, 0, - /* 84 */ 3, 96, 49, 0, - /* 88 */ 96, 39, 53, 0, - /* 92 */ 12, 110, 36, 0, - /* 96 */ 15, 107, 29, 0, - /* 100 */ 15, 107, 34, 0, - /* 104 */ 23, 27, 30, 0, - /* 108 */ 69, 34, 39, 0, - /* 112 */ 3, 15, 107, 29, 0, - /* 117 */ 7, 25, 52, 51, 0, - /* 122 */ 15, 142, 85, 111, 0, - /* 127 */ 1, 144, 50, 56, 156, 0, - /* 133 */ 4, 24, 23, 27, 30, 0, - /* 139 */ 4, 24, 23, 27, 30, 61, 0, - /* 146 */ 15, 29, 37, 44, 54, 55, 0, - /* 153 */ 132, 1, 95, 112, 121, 144, 148, 50, 0, - /* 162 */ 3, 15, 107, 29, 150, 44, 55, 124, 0, - /* 171 */ 15, 142, 21, 22, 108, 85, 111, 114, 109, 102, 124, 0, - /* 183 */ 3, 15, 107, 21, 22, 29, 34, 37, 44, 54, 55, 124, 0, - /* 196 */ 3, 15, 107, 21, 22, 29, 34, 37, 44, 100, 54, 55, 124, 0, - /* 210 */ 15, 142, 21, 22, 108, 29, 85, 111, 114, 150, 109, 102, 124, 0, - /* 224 */ 15, 142, 21, 22, 108, 29, 85, 111, 37, 114, 150, 109, 102, 124, 0, - /* 239 */ 3, 15, 142, 143, 138, 107, 21, 22, 29, 111, 37, 150, 44, 109, 48, 49, 102, 54, 55, 124, 0, - /* 260 */ 3, 15, 142, 143, 138, 107, 21, 22, 29, 35, 111, 37, 150, 44, 109, 48, 49, 102, 54, 55, 124, 0, - /* 282 */ + /* 7 */ 1, 64, 0, + /* 10 */ 1, 50, 0, + /* 13 */ 1, 56, 0, + /* 16 */ 3, 15, 0, + /* 19 */ 4, 23, 0, + /* 22 */ 6, 84, 0, + /* 25 */ 12, 36, 0, + /* 28 */ 13, 18, 0, + /* 31 */ 13, 34, 0, + /* 34 */ 13, 118, 0, + /* 37 */ 13, 50, 0, + /* 40 */ 15, 107, 0, + /* 43 */ 15, 150, 0, + /* 46 */ 15, 100, 0, + /* 49 */ 15, 54, 0, + /* 52 */ 17, 34, 0, + /* 55 */ 107, 54, 0, + /* 58 */ 21, 108, 0, + /* 61 */ 22, 129, 0, + /* 64 */ 23, 34, 0, + /* 67 */ 27, 30, 0, + /* 70 */ 29, 150, 0, + /* 73 */ 34, 38, 0, + /* 76 */ 112, 158, 0, + /* 79 */ 38, 65, 0, + /* 82 */ 1, 50, 56, 0, + /* 86 */ 1, 56, 156, 0, + /* 90 */ 3, 96, 49, 0, + /* 94 */ 96, 39, 53, 0, + /* 98 */ 157, 12, 36, 0, + /* 102 */ 12, 110, 36, 0, + /* 106 */ 15, 107, 29, 0, + /* 110 */ 15, 107, 34, 0, + /* 114 */ 23, 27, 30, 0, + /* 118 */ 69, 34, 39, 0, + /* 122 */ 3, 15, 107, 29, 0, + /* 127 */ 7, 25, 52, 51, 0, + /* 132 */ 15, 142, 85, 111, 0, + /* 137 */ 4, 24, 23, 27, 30, 0, + /* 143 */ 1, 64, 144, 50, 56, 156, 0, + /* 150 */ 4, 24, 23, 27, 30, 61, 0, + /* 157 */ 15, 29, 37, 44, 54, 55, 0, + /* 164 */ 132, 1, 64, 144, 50, 56, 156, 0, + /* 172 */ 3, 15, 107, 29, 150, 44, 55, 124, 0, + /* 181 */ 132, 1, 95, 112, 158, 121, 144, 148, 50, 0, + /* 191 */ 15, 142, 21, 22, 108, 85, 111, 114, 109, 102, 124, 0, + /* 203 */ 3, 15, 107, 21, 22, 29, 34, 37, 44, 54, 55, 124, 0, + /* 216 */ 3, 15, 107, 21, 22, 29, 34, 37, 44, 100, 54, 55, 124, 0, + /* 230 */ 15, 142, 21, 22, 108, 29, 85, 111, 114, 150, 109, 102, 124, 0, + /* 244 */ 15, 142, 21, 22, 108, 29, 85, 111, 37, 114, 150, 109, 102, 124, 0, + /* 259 */ 3, 15, 142, 143, 138, 107, 21, 22, 29, 111, 37, 150, 44, 109, 48, 49, 102, 54, 55, 124, 0, + /* 280 */ 3, 15, 142, 143, 138, 107, 21, 22, 29, 35, 111, 37, 150, 44, 109, 48, 49, 102, 54, 55, 124, 0, + /* 302 */ }; /* These are the main two-stage UCD tables. The fields in each record are: @@ -192,7 +196,7 @@ or zero (32 bits, signed), script extension (16 bits, signed), and a dummy 16-bit field to make the whole thing a multiple of 4 bytes. */ -const ucd_record PRIV(ucd_records)[] = { /* 11700 bytes, record size 12 */ +const ucd_record PRIV(ucd_records)[] = { /* 11964 bytes, record size 12 */ { 10, 0, 2, 0, 0, 10, 256, }, /* 0 */ { 10, 0, 2, 0, 0, 10, 0, }, /* 1 */ { 10, 0, 1, 0, 0, 10, 0, }, /* 2 */ @@ -390,9 +394,9 @@ { 13, 9, 12, 88, 1, 13, 0, }, /* 194 */ { 13, 5, 12, 88, -1, 13, 0, }, /* 195 */ { 13, 26, 12, 0, 0, 13, 0, }, /* 196 */ - { 13, 12, 3, 0, 0, -31, 0, }, /* 197 */ - { 13, 12, 3, 0, 0, -25, 0, }, /* 198 */ - { 28, 12, 3, 0, 0, -28, 0, }, /* 199 */ + { 13, 12, 3, 0, 0, -34, 0, }, /* 197 */ + { 13, 12, 3, 0, 0, -28, 0, }, /* 198 */ + { 28, 12, 3, 0, 0, -31, 0, }, /* 199 */ { 13, 11, 3, 0, 0, 13, 0, }, /* 200 */ { 13, 9, 12, 0, 15, 13, 0, }, /* 201 */ { 13, 5, 12, 0, -15, 13, 0, }, /* 202 */ @@ -413,761 +417,783 @@ { 1, 25, 12, 0, 0, 1, 0, }, /* 217 */ { 1, 21, 12, 0, 0, 1, 0, }, /* 218 */ { 1, 23, 12, 0, 0, 1, 0, }, /* 219 */ - { 10, 21, 12, 0, 0, -127, 0, }, /* 220 */ + { 10, 21, 12, 0, 0, -143, 0, }, /* 220 */ { 1, 26, 12, 0, 0, 1, 0, }, /* 221 */ { 1, 12, 3, 0, 0, 1, 0, }, /* 222 */ - { 1, 1, 2, 0, 0, -76, 0, }, /* 223 */ - { 1, 7, 12, 0, 0, 1, 0, }, /* 224 */ - { 10, 6, 12, 0, 0, -153, 0, }, /* 225 */ - { 28, 12, 3, 0, 0, -7, 0, }, /* 226 */ - { 1, 13, 12, 0, 0, -80, 0, }, /* 227 */ - { 1, 21, 12, 0, 0, -4, 0, }, /* 228 */ - { 1, 6, 12, 0, 0, 1, 0, }, /* 229 */ - { 1, 13, 12, 0, 0, 1, 0, }, /* 230 */ - { 50, 21, 12, 0, 0, 50, 0, }, /* 231 */ - { 50, 1, 4, 0, 0, 50, 0, }, /* 232 */ - { 50, 7, 12, 0, 0, 50, 0, }, /* 233 */ - { 50, 12, 3, 0, 0, 50, 0, }, /* 234 */ - { 56, 7, 12, 0, 0, 56, 0, }, /* 235 */ - { 56, 12, 3, 0, 0, 56, 0, }, /* 236 */ - { 64, 13, 12, 0, 0, 64, 0, }, /* 237 */ - { 64, 7, 12, 0, 0, 64, 0, }, /* 238 */ - { 64, 12, 3, 0, 0, 64, 0, }, /* 239 */ - { 64, 6, 12, 0, 0, 64, 0, }, /* 240 */ - { 64, 26, 12, 0, 0, 64, 0, }, /* 241 */ - { 64, 21, 12, 0, 0, 64, 0, }, /* 242 */ - { 64, 23, 12, 0, 0, 64, 0, }, /* 243 */ - { 90, 7, 12, 0, 0, 90, 0, }, /* 244 */ - { 90, 12, 3, 0, 0, 90, 0, }, /* 245 */ - { 90, 6, 12, 0, 0, 90, 0, }, /* 246 */ - { 90, 21, 12, 0, 0, 90, 0, }, /* 247 */ - { 95, 7, 12, 0, 0, 95, 0, }, /* 248 */ - { 95, 12, 3, 0, 0, 95, 0, }, /* 249 */ - { 95, 21, 12, 0, 0, 95, 0, }, /* 250 */ - { 15, 12, 3, 0, 0, 15, 0, }, /* 251 */ - { 15, 10, 5, 0, 0, 15, 0, }, /* 252 */ - { 15, 7, 12, 0, 0, 15, 0, }, /* 253 */ - { 28, 12, 3, 0, 0, -196, 0, }, /* 254 */ - { 28, 12, 3, 0, 0, -183, 0, }, /* 255 */ - { 10, 21, 12, 0, 0, -239, 0, }, /* 256 */ - { 10, 21, 12, 0, 0, -260, 0, }, /* 257 */ - { 15, 13, 12, 0, 0, -122, 0, }, /* 258 */ - { 15, 21, 12, 0, 0, 15, 0, }, /* 259 */ - { 15, 6, 12, 0, 0, 15, 0, }, /* 260 */ - { 3, 7, 12, 0, 0, 3, 0, }, /* 261 */ - { 3, 12, 3, 0, 0, 3, 0, }, /* 262 */ - { 3, 10, 5, 0, 0, 3, 0, }, /* 263 */ - { 3, 10, 3, 0, 0, 3, 0, }, /* 264 */ - { 3, 13, 12, 0, 0, -84, 0, }, /* 265 */ - { 3, 23, 12, 0, 0, 3, 0, }, /* 266 */ - { 3, 15, 12, 0, 0, 3, 0, }, /* 267 */ - { 3, 26, 12, 0, 0, 3, 0, }, /* 268 */ - { 3, 21, 12, 0, 0, 3, 0, }, /* 269 */ - { 22, 12, 3, 0, 0, 22, 0, }, /* 270 */ - { 22, 10, 5, 0, 0, 22, 0, }, /* 271 */ - { 22, 7, 12, 0, 0, 22, 0, }, /* 272 */ - { 22, 13, 12, 0, 0, -58, 0, }, /* 273 */ - { 22, 21, 12, 0, 0, 22, 0, }, /* 274 */ - { 21, 12, 3, 0, 0, 21, 0, }, /* 275 */ - { 21, 10, 5, 0, 0, 21, 0, }, /* 276 */ - { 21, 7, 12, 0, 0, 21, 0, }, /* 277 */ - { 21, 13, 12, 0, 0, -55, 0, }, /* 278 */ - { 21, 21, 12, 0, 0, 21, 0, }, /* 279 */ - { 21, 23, 12, 0, 0, 21, 0, }, /* 280 */ - { 44, 12, 3, 0, 0, 44, 0, }, /* 281 */ - { 44, 10, 5, 0, 0, 44, 0, }, /* 282 */ - { 44, 7, 12, 0, 0, 44, 0, }, /* 283 */ - { 44, 10, 3, 0, 0, 44, 0, }, /* 284 */ - { 44, 13, 12, 0, 0, 44, 0, }, /* 285 */ - { 44, 26, 12, 0, 0, 44, 0, }, /* 286 */ - { 44, 15, 12, 0, 0, 44, 0, }, /* 287 */ - { 54, 12, 3, 0, 0, 54, 0, }, /* 288 */ - { 54, 7, 12, 0, 0, 54, 0, }, /* 289 */ - { 54, 10, 3, 0, 0, 54, 0, }, /* 290 */ - { 54, 10, 5, 0, 0, 54, 0, }, /* 291 */ - { 54, 13, 12, 0, 0, -52, 0, }, /* 292 */ - { 54, 15, 12, 0, 0, -52, 0, }, /* 293 */ - { 54, 26, 12, 0, 0, -52, 0, }, /* 294 */ - { 54, 26, 12, 0, 0, 54, 0, }, /* 295 */ - { 54, 23, 12, 0, 0, 54, 0, }, /* 296 */ - { 55, 12, 3, 0, 0, 55, 0, }, /* 297 */ - { 55, 10, 5, 0, 0, 55, 0, }, /* 298 */ - { 55, 7, 12, 0, 0, 55, 0, }, /* 299 */ - { 55, 13, 12, 0, 0, 55, 0, }, /* 300 */ - { 55, 21, 12, 0, 0, 55, 0, }, /* 301 */ - { 55, 15, 12, 0, 0, 55, 0, }, /* 302 */ - { 55, 26, 12, 0, 0, 55, 0, }, /* 303 */ - { 29, 7, 12, 0, 0, 29, 0, }, /* 304 */ - { 29, 12, 3, 0, 0, 29, 0, }, /* 305 */ - { 29, 10, 5, 0, 0, 29, 0, }, /* 306 */ - { 29, 21, 12, 0, 0, 29, 0, }, /* 307 */ - { 29, 10, 3, 0, 0, 29, 0, }, /* 308 */ - { 29, 13, 12, 0, 0, -67, 0, }, /* 309 */ - { 37, 12, 3, 0, 0, 37, 0, }, /* 310 */ - { 37, 10, 5, 0, 0, 37, 0, }, /* 311 */ - { 37, 7, 12, 0, 0, 37, 0, }, /* 312 */ - { 37, 10, 3, 0, 0, 37, 0, }, /* 313 */ - { 37, 7, 4, 0, 0, 37, 0, }, /* 314 */ - { 37, 26, 12, 0, 0, 37, 0, }, /* 315 */ - { 37, 15, 12, 0, 0, 37, 0, }, /* 316 */ - { 37, 13, 12, 0, 0, 37, 0, }, /* 317 */ - { 48, 12, 3, 0, 0, 48, 0, }, /* 318 */ - { 48, 10, 5, 0, 0, 48, 0, }, /* 319 */ - { 48, 7, 12, 0, 0, 48, 0, }, /* 320 */ - { 48, 10, 3, 0, 0, 48, 0, }, /* 321 */ - { 48, 13, 12, 0, 0, 48, 0, }, /* 322 */ - { 48, 21, 12, 0, 0, 48, 0, }, /* 323 */ - { 57, 7, 12, 0, 0, 57, 0, }, /* 324 */ - { 57, 12, 3, 0, 0, 57, 0, }, /* 325 */ - { 57, 7, 5, 0, 0, 57, 0, }, /* 326 */ - { 57, 6, 12, 0, 0, 57, 0, }, /* 327 */ - { 57, 21, 12, 0, 0, 57, 0, }, /* 328 */ - { 57, 13, 12, 0, 0, 57, 0, }, /* 329 */ - { 33, 7, 12, 0, 0, 33, 0, }, /* 330 */ - { 33, 12, 3, 0, 0, 33, 0, }, /* 331 */ - { 33, 7, 5, 0, 0, 33, 0, }, /* 332 */ - { 33, 6, 12, 0, 0, 33, 0, }, /* 333 */ - { 33, 13, 12, 0, 0, 33, 0, }, /* 334 */ - { 58, 7, 12, 0, 0, 58, 0, }, /* 335 */ - { 58, 26, 12, 0, 0, 58, 0, }, /* 336 */ - { 58, 21, 12, 0, 0, 58, 0, }, /* 337 */ - { 58, 12, 3, 0, 0, 58, 0, }, /* 338 */ - { 58, 13, 12, 0, 0, 58, 0, }, /* 339 */ - { 58, 15, 12, 0, 0, 58, 0, }, /* 340 */ - { 58, 22, 12, 0, 0, 58, 0, }, /* 341 */ - { 58, 18, 12, 0, 0, 58, 0, }, /* 342 */ - { 58, 10, 5, 0, 0, 58, 0, }, /* 343 */ - { 39, 7, 12, 0, 0, 39, 0, }, /* 344 */ - { 39, 10, 12, 0, 0, 39, 0, }, /* 345 */ - { 39, 12, 3, 0, 0, 39, 0, }, /* 346 */ - { 39, 10, 5, 0, 0, 39, 0, }, /* 347 */ - { 39, 13, 12, 0, 0, -88, 0, }, /* 348 */ - { 39, 21, 12, 0, 0, 39, 0, }, /* 349 */ - { 39, 13, 12, 0, 0, 39, 0, }, /* 350 */ - { 39, 26, 12, 0, 0, 39, 0, }, /* 351 */ - { 17, 9, 12, 0, 7264, 17, 0, }, /* 352 */ - { 17, 5, 12, 0, 3008, 17, 0, }, /* 353 */ - { 10, 21, 12, 0, 0, -49, 0, }, /* 354 */ - { 17, 6, 12, 0, 0, 17, 0, }, /* 355 */ - { 24, 7, 6, 0, 0, 24, 0, }, /* 356 */ - { 24, 7, 7, 0, 0, 24, 0, }, /* 357 */ - { 24, 7, 8, 0, 0, 24, 0, }, /* 358 */ - { 16, 7, 12, 0, 0, 16, 0, }, /* 359 */ - { 16, 12, 3, 0, 0, 16, 0, }, /* 360 */ - { 16, 21, 12, 0, 0, 16, 0, }, /* 361 */ - { 16, 15, 12, 0, 0, 16, 0, }, /* 362 */ - { 16, 26, 12, 0, 0, 16, 0, }, /* 363 */ - { 9, 9, 12, 0, 38864, 9, 0, }, /* 364 */ - { 9, 9, 12, 0, 8, 9, 0, }, /* 365 */ - { 9, 5, 12, 0, -8, 9, 0, }, /* 366 */ - { 8, 17, 12, 0, 0, 8, 0, }, /* 367 */ - { 8, 7, 12, 0, 0, 8, 0, }, /* 368 */ - { 8, 26, 12, 0, 0, 8, 0, }, /* 369 */ - { 8, 21, 12, 0, 0, 8, 0, }, /* 370 */ - { 41, 29, 12, 0, 0, 41, 0, }, /* 371 */ - { 41, 7, 12, 0, 0, 41, 0, }, /* 372 */ - { 41, 22, 12, 0, 0, 41, 0, }, /* 373 */ - { 41, 18, 12, 0, 0, 41, 0, }, /* 374 */ - { 46, 7, 12, 0, 0, 46, 0, }, /* 375 */ - { 46, 14, 12, 0, 0, 46, 0, }, /* 376 */ - { 51, 7, 12, 0, 0, 51, 0, }, /* 377 */ - { 51, 12, 3, 0, 0, 51, 0, }, /* 378 */ - { 25, 7, 12, 0, 0, 25, 0, }, /* 379 */ - { 25, 12, 3, 0, 0, 25, 0, }, /* 380 */ - { 10, 21, 12, 0, 0, -117, 0, }, /* 381 */ - { 7, 7, 12, 0, 0, 7, 0, }, /* 382 */ - { 7, 12, 3, 0, 0, 7, 0, }, /* 383 */ - { 52, 7, 12, 0, 0, 52, 0, }, /* 384 */ - { 52, 12, 3, 0, 0, 52, 0, }, /* 385 */ - { 32, 7, 12, 0, 0, 32, 0, }, /* 386 */ - { 32, 12, 3, 0, 0, 32, 0, }, /* 387 */ - { 32, 10, 5, 0, 0, 32, 0, }, /* 388 */ - { 32, 21, 12, 0, 0, 32, 0, }, /* 389 */ - { 32, 6, 12, 0, 0, 32, 0, }, /* 390 */ - { 32, 23, 12, 0, 0, 32, 0, }, /* 391 */ - { 32, 13, 12, 0, 0, 32, 0, }, /* 392 */ - { 32, 15, 12, 0, 0, 32, 0, }, /* 393 */ - { 38, 21, 12, 0, 0, 38, 0, }, /* 394 */ - { 10, 21, 12, 0, 0, -73, 0, }, /* 395 */ - { 38, 17, 12, 0, 0, 38, 0, }, /* 396 */ - { 38, 12, 3, 0, 0, 38, 0, }, /* 397 */ - { 38, 1, 2, 0, 0, 38, 0, }, /* 398 */ - { 38, 13, 12, 0, 0, 38, 0, }, /* 399 */ - { 38, 7, 12, 0, 0, 38, 0, }, /* 400 */ - { 38, 6, 12, 0, 0, 38, 0, }, /* 401 */ - { 35, 7, 12, 0, 0, 35, 0, }, /* 402 */ - { 35, 12, 3, 0, 0, 35, 0, }, /* 403 */ - { 35, 10, 5, 0, 0, 35, 0, }, /* 404 */ - { 35, 26, 12, 0, 0, 35, 0, }, /* 405 */ - { 35, 21, 12, 0, 0, 35, 0, }, /* 406 */ - { 35, 13, 12, 0, 0, 35, 0, }, /* 407 */ - { 53, 7, 12, 0, 0, 53, 0, }, /* 408 */ - { 40, 7, 12, 0, 0, 40, 0, }, /* 409 */ - { 40, 13, 12, 0, 0, 40, 0, }, /* 410 */ - { 40, 15, 12, 0, 0, 40, 0, }, /* 411 */ - { 40, 26, 12, 0, 0, 40, 0, }, /* 412 */ - { 32, 26, 12, 0, 0, 32, 0, }, /* 413 */ - { 6, 7, 12, 0, 0, 6, 0, }, /* 414 */ - { 6, 12, 3, 0, 0, 6, 0, }, /* 415 */ - { 6, 10, 5, 0, 0, 6, 0, }, /* 416 */ - { 6, 21, 12, 0, 0, 6, 0, }, /* 417 */ - { 91, 7, 12, 0, 0, 91, 0, }, /* 418 */ - { 91, 10, 5, 0, 0, 91, 0, }, /* 419 */ - { 91, 12, 3, 0, 0, 91, 0, }, /* 420 */ - { 91, 10, 12, 0, 0, 91, 0, }, /* 421 */ - { 91, 13, 12, 0, 0, 91, 0, }, /* 422 */ - { 91, 21, 12, 0, 0, 91, 0, }, /* 423 */ - { 91, 6, 12, 0, 0, 91, 0, }, /* 424 */ - { 28, 11, 3, 0, 0, 28, 0, }, /* 425 */ - { 62, 12, 3, 0, 0, 62, 0, }, /* 426 */ - { 62, 10, 5, 0, 0, 62, 0, }, /* 427 */ - { 62, 7, 12, 0, 0, 62, 0, }, /* 428 */ - { 62, 10, 3, 0, 0, 62, 0, }, /* 429 */ - { 62, 13, 12, 0, 0, 62, 0, }, /* 430 */ - { 62, 21, 12, 0, 0, 62, 0, }, /* 431 */ - { 62, 26, 12, 0, 0, 62, 0, }, /* 432 */ - { 76, 12, 3, 0, 0, 76, 0, }, /* 433 */ - { 76, 10, 5, 0, 0, 76, 0, }, /* 434 */ - { 76, 7, 12, 0, 0, 76, 0, }, /* 435 */ - { 76, 13, 12, 0, 0, 76, 0, }, /* 436 */ - { 93, 7, 12, 0, 0, 93, 0, }, /* 437 */ - { 93, 12, 3, 0, 0, 93, 0, }, /* 438 */ - { 93, 10, 5, 0, 0, 93, 0, }, /* 439 */ - { 93, 21, 12, 0, 0, 93, 0, }, /* 440 */ - { 70, 7, 12, 0, 0, 70, 0, }, /* 441 */ - { 70, 10, 5, 0, 0, 70, 0, }, /* 442 */ - { 70, 12, 3, 0, 0, 70, 0, }, /* 443 */ - { 70, 21, 12, 0, 0, 70, 0, }, /* 444 */ - { 70, 13, 12, 0, 0, 70, 0, }, /* 445 */ - { 73, 13, 12, 0, 0, 73, 0, }, /* 446 */ - { 73, 7, 12, 0, 0, 73, 0, }, /* 447 */ - { 73, 6, 12, 0, 0, 73, 0, }, /* 448 */ - { 73, 21, 12, 0, 0, 73, 0, }, /* 449 */ - { 13, 5, 12, 63, -6222, 13, 0, }, /* 450 */ - { 13, 5, 12, 67, -6221, 13, 0, }, /* 451 */ - { 13, 5, 12, 71, -6212, 13, 0, }, /* 452 */ - { 13, 5, 12, 75, -6210, 13, 0, }, /* 453 */ - { 13, 5, 12, 79, -6210, 13, 0, }, /* 454 */ - { 13, 5, 12, 79, -6211, 13, 0, }, /* 455 */ - { 13, 5, 12, 84, -6204, 13, 0, }, /* 456 */ - { 13, 5, 12, 88, -6180, 13, 0, }, /* 457 */ - { 13, 5, 12, 108, 35267, 13, 0, }, /* 458 */ - { 17, 9, 12, 0, -3008, 17, 0, }, /* 459 */ - { 76, 21, 12, 0, 0, 76, 0, }, /* 460 */ - { 28, 12, 3, 0, 0, -112, 0, }, /* 461 */ - { 28, 12, 3, 0, 0, 15, 0, }, /* 462 */ - { 10, 21, 12, 0, 0, -37, 0, }, /* 463 */ - { 28, 12, 3, 0, 0, -13, 0, }, /* 464 */ - { 28, 12, 3, 0, 0, -43, 0, }, /* 465 */ - { 28, 12, 3, 0, 0, -146, 0, }, /* 466 */ - { 10, 10, 5, 0, 0, -13, 0, }, /* 467 */ - { 10, 7, 12, 0, 0, -40, 0, }, /* 468 */ - { 10, 7, 12, 0, 0, -13, 0, }, /* 469 */ - { 10, 7, 12, 0, 0, 15, 0, }, /* 470 */ - { 10, 7, 12, 0, 0, -162, 0, }, /* 471 */ - { 10, 7, 12, 0, 0, -37, 0, }, /* 472 */ - { 28, 12, 3, 0, 0, -96, 0, }, /* 473 */ - { 10, 10, 5, 0, 0, 3, 0, }, /* 474 */ - { 28, 12, 3, 0, 0, -37, 0, }, /* 475 */ - { 10, 7, 12, 0, 0, 150, 0, }, /* 476 */ - { 13, 5, 12, 0, 0, 13, 0, }, /* 477 */ - { 13, 6, 12, 0, 0, 13, 0, }, /* 478 */ - { 34, 5, 12, 0, 35332, 34, 0, }, /* 479 */ - { 34, 5, 12, 0, 3814, 34, 0, }, /* 480 */ - { 34, 5, 12, 0, 35384, 34, 0, }, /* 481 */ - { 28, 12, 3, 0, 0, -34, 0, }, /* 482 */ - { 34, 9, 12, 92, 1, 34, 0, }, /* 483 */ - { 34, 5, 12, 92, -1, 34, 0, }, /* 484 */ - { 34, 5, 12, 92, -58, 34, 0, }, /* 485 */ - { 34, 9, 12, 0, -7615, 34, 0, }, /* 486 */ - { 20, 5, 12, 0, 8, 20, 0, }, /* 487 */ - { 20, 9, 12, 0, -8, 20, 0, }, /* 488 */ - { 20, 5, 12, 0, 74, 20, 0, }, /* 489 */ - { 20, 5, 12, 0, 86, 20, 0, }, /* 490 */ - { 20, 5, 12, 0, 100, 20, 0, }, /* 491 */ - { 20, 5, 12, 0, 128, 20, 0, }, /* 492 */ - { 20, 5, 12, 0, 112, 20, 0, }, /* 493 */ - { 20, 5, 12, 0, 126, 20, 0, }, /* 494 */ - { 20, 8, 12, 0, -8, 20, 0, }, /* 495 */ - { 20, 5, 12, 0, 9, 20, 0, }, /* 496 */ - { 20, 9, 12, 0, -74, 20, 0, }, /* 497 */ - { 20, 8, 12, 0, -9, 20, 0, }, /* 498 */ - { 20, 5, 12, 21, -7173, 20, 0, }, /* 499 */ - { 20, 9, 12, 0, -86, 20, 0, }, /* 500 */ - { 20, 9, 12, 0, -100, 20, 0, }, /* 501 */ - { 20, 9, 12, 0, -112, 20, 0, }, /* 502 */ - { 20, 9, 12, 0, -128, 20, 0, }, /* 503 */ - { 20, 9, 12, 0, -126, 20, 0, }, /* 504 */ - { 28, 1, 3, 0, 0, 28, 0, }, /* 505 */ - { 28, 1, 13, 0, 0, 28, 0, }, /* 506 */ - { 10, 27, 2, 0, 0, 10, 0, }, /* 507 */ - { 10, 28, 2, 0, 0, 10, 0, }, /* 508 */ - { 10, 29, 12, 0, 0, -70, 0, }, /* 509 */ - { 10, 21, 14, 0, 0, 10, 0, }, /* 510 */ - { 0, 2, 2, 0, 0, 0, 0, }, /* 511 */ - { 28, 12, 3, 0, 0, -100, 0, }, /* 512 */ - { 10, 9, 12, 0, 0, 10, 0, }, /* 513 */ - { 10, 5, 12, 0, 0, 10, 0, }, /* 514 */ - { 20, 9, 12, 96, -7517, 20, 0, }, /* 515 */ - { 34, 9, 12, 100, -8383, 34, 0, }, /* 516 */ - { 34, 9, 12, 104, -8262, 34, 0, }, /* 517 */ - { 34, 9, 12, 0, 28, 34, 0, }, /* 518 */ - { 10, 7, 12, 0, 0, 10, 0, }, /* 519 */ - { 10, 5, 14, 0, 0, 10, 0, }, /* 520 */ - { 34, 5, 12, 0, -28, 34, 0, }, /* 521 */ - { 34, 14, 12, 0, 16, 34, 0, }, /* 522 */ - { 34, 14, 12, 0, -16, 34, 0, }, /* 523 */ - { 34, 14, 12, 0, 0, 34, 0, }, /* 524 */ - { 10, 25, 14, 0, 0, 10, 0, }, /* 525 */ - { 10, 26, 12, 0, 26, 10, 0, }, /* 526 */ - { 10, 26, 14, 0, 26, 10, 0, }, /* 527 */ - { 10, 26, 12, 0, -26, 10, 0, }, /* 528 */ - { 5, 26, 12, 0, 0, 5, 0, }, /* 529 */ - { 18, 9, 12, 0, 48, 18, 0, }, /* 530 */ - { 18, 5, 12, 0, -48, 18, 0, }, /* 531 */ - { 34, 9, 12, 0, -10743, 34, 0, }, /* 532 */ - { 34, 9, 12, 0, -3814, 34, 0, }, /* 533 */ - { 34, 9, 12, 0, -10727, 34, 0, }, /* 534 */ - { 34, 5, 12, 0, -10795, 34, 0, }, /* 535 */ - { 34, 5, 12, 0, -10792, 34, 0, }, /* 536 */ - { 34, 9, 12, 0, -10780, 34, 0, }, /* 537 */ - { 34, 9, 12, 0, -10749, 34, 0, }, /* 538 */ - { 34, 9, 12, 0, -10783, 34, 0, }, /* 539 */ - { 34, 9, 12, 0, -10782, 34, 0, }, /* 540 */ - { 34, 9, 12, 0, -10815, 34, 0, }, /* 541 */ - { 11, 5, 12, 0, 0, 11, 0, }, /* 542 */ - { 11, 26, 12, 0, 0, 11, 0, }, /* 543 */ - { 11, 12, 3, 0, 0, 11, 0, }, /* 544 */ - { 11, 21, 12, 0, 0, 11, 0, }, /* 545 */ - { 11, 15, 12, 0, 0, 11, 0, }, /* 546 */ - { 17, 5, 12, 0, -7264, 17, 0, }, /* 547 */ - { 59, 7, 12, 0, 0, 59, 0, }, /* 548 */ - { 59, 6, 12, 0, 0, 59, 0, }, /* 549 */ - { 59, 21, 12, 0, 0, 59, 0, }, /* 550 */ - { 59, 12, 3, 0, 0, 59, 0, }, /* 551 */ - { 13, 12, 3, 0, 0, 13, 0, }, /* 552 */ - { 10, 21, 12, 0, 0, -25, 0, }, /* 553 */ - { 23, 26, 12, 0, 0, 23, 0, }, /* 554 */ - { 10, 21, 12, 0, 0, -139, 0, }, /* 555 */ - { 10, 21, 12, 0, 0, -133, 0, }, /* 556 */ - { 23, 6, 12, 0, 0, 23, 0, }, /* 557 */ - { 10, 7, 12, 0, 0, 23, 0, }, /* 558 */ - { 23, 14, 12, 0, 0, 23, 0, }, /* 559 */ - { 10, 22, 12, 0, 0, -139, 0, }, /* 560 */ - { 10, 18, 12, 0, 0, -139, 0, }, /* 561 */ - { 10, 26, 12, 0, 0, -133, 0, }, /* 562 */ - { 10, 17, 12, 0, 0, -133, 0, }, /* 563 */ - { 10, 22, 12, 0, 0, -133, 0, }, /* 564 */ - { 10, 18, 12, 0, 0, -133, 0, }, /* 565 */ - { 28, 12, 3, 0, 0, -16, 0, }, /* 566 */ - { 24, 10, 3, 0, 0, 24, 0, }, /* 567 */ - { 10, 17, 14, 0, 0, -133, 0, }, /* 568 */ - { 10, 6, 12, 0, 0, -64, 0, }, /* 569 */ - { 10, 7, 12, 0, 0, -104, 0, }, /* 570 */ - { 10, 21, 14, 0, 0, -104, 0, }, /* 571 */ - { 10, 26, 12, 0, 0, 23, 0, }, /* 572 */ - { 27, 7, 12, 0, 0, 27, 0, }, /* 573 */ - { 28, 12, 3, 0, 0, -64, 0, }, /* 574 */ - { 10, 24, 12, 0, 0, -64, 0, }, /* 575 */ - { 27, 6, 12, 0, 0, 27, 0, }, /* 576 */ - { 10, 17, 12, 0, 0, -64, 0, }, /* 577 */ - { 30, 7, 12, 0, 0, 30, 0, }, /* 578 */ - { 30, 6, 12, 0, 0, 30, 0, }, /* 579 */ - { 4, 7, 12, 0, 0, 4, 0, }, /* 580 */ - { 24, 7, 12, 0, 0, 24, 0, }, /* 581 */ - { 10, 15, 12, 0, 0, 23, 0, }, /* 582 */ - { 24, 26, 12, 0, 0, 24, 0, }, /* 583 */ - { 10, 26, 14, 0, 0, 23, 0, }, /* 584 */ - { 30, 26, 12, 0, 0, 30, 0, }, /* 585 */ - { 23, 7, 12, 0, 0, 23, 0, }, /* 586 */ - { 61, 7, 12, 0, 0, 61, 0, }, /* 587 */ - { 61, 6, 12, 0, 0, 61, 0, }, /* 588 */ - { 61, 26, 12, 0, 0, 61, 0, }, /* 589 */ - { 86, 7, 12, 0, 0, 86, 0, }, /* 590 */ - { 86, 6, 12, 0, 0, 86, 0, }, /* 591 */ - { 86, 21, 12, 0, 0, 86, 0, }, /* 592 */ - { 77, 7, 12, 0, 0, 77, 0, }, /* 593 */ - { 77, 6, 12, 0, 0, 77, 0, }, /* 594 */ - { 77, 21, 12, 0, 0, 77, 0, }, /* 595 */ - { 77, 13, 12, 0, 0, 77, 0, }, /* 596 */ - { 13, 9, 12, 108, 1, 13, 0, }, /* 597 */ - { 13, 5, 12, 108, -35267, 13, 0, }, /* 598 */ - { 13, 7, 12, 0, 0, 13, 0, }, /* 599 */ - { 13, 21, 12, 0, 0, 13, 0, }, /* 600 */ - { 79, 7, 12, 0, 0, 79, 0, }, /* 601 */ - { 79, 14, 12, 0, 0, 79, 0, }, /* 602 */ - { 79, 12, 3, 0, 0, 79, 0, }, /* 603 */ - { 79, 21, 12, 0, 0, 79, 0, }, /* 604 */ - { 10, 24, 12, 0, 0, -61, 0, }, /* 605 */ - { 34, 9, 12, 0, -35332, 34, 0, }, /* 606 */ - { 34, 9, 12, 0, -42280, 34, 0, }, /* 607 */ - { 34, 5, 12, 0, 48, 34, 0, }, /* 608 */ - { 34, 9, 12, 0, -42308, 34, 0, }, /* 609 */ - { 34, 9, 12, 0, -42319, 34, 0, }, /* 610 */ - { 34, 9, 12, 0, -42315, 34, 0, }, /* 611 */ - { 34, 9, 12, 0, -42305, 34, 0, }, /* 612 */ - { 34, 9, 12, 0, -42258, 34, 0, }, /* 613 */ - { 34, 9, 12, 0, -42282, 34, 0, }, /* 614 */ - { 34, 9, 12, 0, -42261, 34, 0, }, /* 615 */ - { 34, 9, 12, 0, 928, 34, 0, }, /* 616 */ - { 34, 9, 12, 0, -48, 34, 0, }, /* 617 */ - { 34, 9, 12, 0, -42307, 34, 0, }, /* 618 */ - { 34, 9, 12, 0, -35384, 34, 0, }, /* 619 */ - { 49, 7, 12, 0, 0, 49, 0, }, /* 620 */ - { 49, 12, 3, 0, 0, 49, 0, }, /* 621 */ - { 49, 10, 5, 0, 0, 49, 0, }, /* 622 */ - { 49, 26, 12, 0, 0, 49, 0, }, /* 623 */ - { 10, 15, 12, 0, 0, -224, 0, }, /* 624 */ - { 10, 15, 12, 0, 0, -210, 0, }, /* 625 */ - { 10, 26, 12, 0, 0, -171, 0, }, /* 626 */ - { 10, 23, 12, 0, 0, -171, 0, }, /* 627 */ - { 65, 7, 12, 0, 0, 65, 0, }, /* 628 */ - { 65, 21, 12, 0, 0, 65, 0, }, /* 629 */ - { 75, 10, 5, 0, 0, 75, 0, }, /* 630 */ - { 75, 7, 12, 0, 0, 75, 0, }, /* 631 */ - { 75, 12, 3, 0, 0, 75, 0, }, /* 632 */ - { 75, 21, 12, 0, 0, 75, 0, }, /* 633 */ - { 75, 13, 12, 0, 0, 75, 0, }, /* 634 */ - { 15, 12, 3, 0, 0, -13, 0, }, /* 635 */ - { 15, 7, 12, 0, 0, -46, 0, }, /* 636 */ - { 69, 13, 12, 0, 0, 69, 0, }, /* 637 */ - { 69, 7, 12, 0, 0, 69, 0, }, /* 638 */ - { 69, 12, 3, 0, 0, 69, 0, }, /* 639 */ - { 10, 21, 12, 0, 0, -108, 0, }, /* 640 */ - { 69, 21, 12, 0, 0, 69, 0, }, /* 641 */ - { 74, 7, 12, 0, 0, 74, 0, }, /* 642 */ - { 74, 12, 3, 0, 0, 74, 0, }, /* 643 */ - { 74, 10, 5, 0, 0, 74, 0, }, /* 644 */ - { 74, 21, 12, 0, 0, 74, 0, }, /* 645 */ - { 84, 12, 3, 0, 0, 84, 0, }, /* 646 */ - { 84, 10, 5, 0, 0, 84, 0, }, /* 647 */ - { 84, 7, 12, 0, 0, 84, 0, }, /* 648 */ - { 84, 21, 12, 0, 0, 84, 0, }, /* 649 */ - { 10, 6, 12, 0, 0, -19, 0, }, /* 650 */ - { 84, 13, 12, 0, 0, 84, 0, }, /* 651 */ - { 39, 6, 12, 0, 0, 39, 0, }, /* 652 */ - { 68, 7, 12, 0, 0, 68, 0, }, /* 653 */ - { 68, 12, 3, 0, 0, 68, 0, }, /* 654 */ - { 68, 10, 5, 0, 0, 68, 0, }, /* 655 */ - { 68, 13, 12, 0, 0, 68, 0, }, /* 656 */ - { 68, 21, 12, 0, 0, 68, 0, }, /* 657 */ - { 92, 7, 12, 0, 0, 92, 0, }, /* 658 */ - { 92, 12, 3, 0, 0, 92, 0, }, /* 659 */ - { 92, 6, 12, 0, 0, 92, 0, }, /* 660 */ - { 92, 21, 12, 0, 0, 92, 0, }, /* 661 */ - { 87, 7, 12, 0, 0, 87, 0, }, /* 662 */ - { 87, 10, 5, 0, 0, 87, 0, }, /* 663 */ - { 87, 12, 3, 0, 0, 87, 0, }, /* 664 */ - { 87, 21, 12, 0, 0, 87, 0, }, /* 665 */ - { 87, 6, 12, 0, 0, 87, 0, }, /* 666 */ - { 34, 5, 12, 0, -928, 34, 0, }, /* 667 */ - { 9, 5, 12, 0, -38864, 9, 0, }, /* 668 */ - { 87, 13, 12, 0, 0, 87, 0, }, /* 669 */ - { 24, 7, 9, 0, 0, 24, 0, }, /* 670 */ - { 24, 7, 10, 0, 0, 24, 0, }, /* 671 */ - { 0, 4, 12, 0, 0, 0, 0, }, /* 672 */ - { 0, 3, 12, 0, 0, 0, 0, }, /* 673 */ - { 26, 25, 12, 0, 0, 26, 0, }, /* 674 */ - { 1, 24, 12, 0, 0, 1, 0, }, /* 675 */ - { 1, 7, 12, 0, 0, -10, 0, }, /* 676 */ - { 1, 26, 12, 0, 0, -10, 0, }, /* 677 */ - { 10, 6, 3, 0, 0, -64, 0, }, /* 678 */ - { 36, 7, 12, 0, 0, 36, 0, }, /* 679 */ - { 10, 21, 12, 0, 0, -22, 0, }, /* 680 */ - { 10, 15, 12, 0, 0, -92, 0, }, /* 681 */ - { 10, 26, 12, 0, 0, -22, 0, }, /* 682 */ - { 20, 14, 12, 0, 0, 20, 0, }, /* 683 */ - { 20, 15, 12, 0, 0, 20, 0, }, /* 684 */ - { 20, 26, 12, 0, 0, 20, 0, }, /* 685 */ - { 71, 7, 12, 0, 0, 71, 0, }, /* 686 */ - { 67, 7, 12, 0, 0, 67, 0, }, /* 687 */ - { 28, 12, 3, 0, 0, -1, 0, }, /* 688 */ - { 10, 15, 12, 0, 0, -1, 0, }, /* 689 */ - { 42, 7, 12, 0, 0, 42, 0, }, /* 690 */ - { 42, 15, 12, 0, 0, 42, 0, }, /* 691 */ - { 19, 7, 12, 0, 0, 19, 0, }, /* 692 */ - { 19, 14, 12, 0, 0, 19, 0, }, /* 693 */ - { 118, 7, 12, 0, 0, 118, 0, }, /* 694 */ - { 118, 12, 3, 0, 0, 118, 0, }, /* 695 */ - { 60, 7, 12, 0, 0, 60, 0, }, /* 696 */ - { 60, 21, 12, 0, 0, 60, 0, }, /* 697 */ - { 43, 7, 12, 0, 0, 43, 0, }, /* 698 */ - { 43, 21, 12, 0, 0, 43, 0, }, /* 699 */ - { 43, 14, 12, 0, 0, 43, 0, }, /* 700 */ - { 14, 9, 12, 0, 40, 14, 0, }, /* 701 */ - { 14, 5, 12, 0, -40, 14, 0, }, /* 702 */ - { 47, 7, 12, 0, 0, 47, 0, }, /* 703 */ - { 45, 7, 12, 0, 0, 45, 0, }, /* 704 */ - { 45, 13, 12, 0, 0, 45, 0, }, /* 705 */ - { 136, 9, 12, 0, 40, 136, 0, }, /* 706 */ - { 136, 5, 12, 0, -40, 136, 0, }, /* 707 */ - { 106, 7, 12, 0, 0, 106, 0, }, /* 708 */ - { 104, 7, 12, 0, 0, 104, 0, }, /* 709 */ - { 104, 21, 12, 0, 0, 104, 0, }, /* 710 */ - { 110, 7, 12, 0, 0, 110, 0, }, /* 711 */ - { 12, 7, 12, 0, 0, 12, 0, }, /* 712 */ - { 81, 7, 12, 0, 0, 81, 0, }, /* 713 */ - { 81, 21, 12, 0, 0, 81, 0, }, /* 714 */ - { 81, 15, 12, 0, 0, 81, 0, }, /* 715 */ - { 120, 7, 12, 0, 0, 120, 0, }, /* 716 */ - { 120, 26, 12, 0, 0, 120, 0, }, /* 717 */ - { 120, 15, 12, 0, 0, 120, 0, }, /* 718 */ - { 116, 7, 12, 0, 0, 116, 0, }, /* 719 */ - { 116, 15, 12, 0, 0, 116, 0, }, /* 720 */ - { 128, 7, 12, 0, 0, 128, 0, }, /* 721 */ - { 128, 15, 12, 0, 0, 128, 0, }, /* 722 */ - { 66, 7, 12, 0, 0, 66, 0, }, /* 723 */ - { 66, 15, 12, 0, 0, 66, 0, }, /* 724 */ - { 66, 21, 12, 0, 0, 66, 0, }, /* 725 */ - { 72, 7, 12, 0, 0, 72, 0, }, /* 726 */ - { 72, 21, 12, 0, 0, 72, 0, }, /* 727 */ - { 98, 7, 12, 0, 0, 98, 0, }, /* 728 */ - { 97, 7, 12, 0, 0, 97, 0, }, /* 729 */ - { 97, 15, 12, 0, 0, 97, 0, }, /* 730 */ - { 31, 7, 12, 0, 0, 31, 0, }, /* 731 */ - { 31, 12, 3, 0, 0, 31, 0, }, /* 732 */ - { 31, 15, 12, 0, 0, 31, 0, }, /* 733 */ - { 31, 21, 12, 0, 0, 31, 0, }, /* 734 */ - { 88, 7, 12, 0, 0, 88, 0, }, /* 735 */ - { 88, 15, 12, 0, 0, 88, 0, }, /* 736 */ - { 88, 21, 12, 0, 0, 88, 0, }, /* 737 */ - { 117, 7, 12, 0, 0, 117, 0, }, /* 738 */ - { 117, 15, 12, 0, 0, 117, 0, }, /* 739 */ - { 112, 7, 12, 0, 0, 112, 0, }, /* 740 */ - { 112, 26, 12, 0, 0, 112, 0, }, /* 741 */ - { 112, 12, 3, 0, 0, 112, 0, }, /* 742 */ - { 112, 15, 12, 0, 0, 112, 0, }, /* 743 */ - { 112, 21, 12, 0, 0, 112, 0, }, /* 744 */ - { 78, 7, 12, 0, 0, 78, 0, }, /* 745 */ - { 78, 21, 12, 0, 0, 78, 0, }, /* 746 */ - { 83, 7, 12, 0, 0, 83, 0, }, /* 747 */ - { 83, 15, 12, 0, 0, 83, 0, }, /* 748 */ - { 82, 7, 12, 0, 0, 82, 0, }, /* 749 */ - { 82, 15, 12, 0, 0, 82, 0, }, /* 750 */ - { 121, 7, 12, 0, 0, 121, 0, }, /* 751 */ - { 121, 21, 12, 0, 0, 121, 0, }, /* 752 */ - { 121, 15, 12, 0, 0, 121, 0, }, /* 753 */ - { 89, 7, 12, 0, 0, 89, 0, }, /* 754 */ - { 130, 9, 12, 0, 64, 130, 0, }, /* 755 */ - { 130, 5, 12, 0, -64, 130, 0, }, /* 756 */ - { 130, 15, 12, 0, 0, 130, 0, }, /* 757 */ - { 144, 7, 12, 0, 0, 144, 0, }, /* 758 */ - { 144, 12, 3, 0, 0, 144, 0, }, /* 759 */ - { 144, 13, 12, 0, 0, 144, 0, }, /* 760 */ - { 1, 15, 12, 0, 0, 1, 0, }, /* 761 */ - { 156, 7, 12, 0, 0, 156, 0, }, /* 762 */ - { 156, 12, 3, 0, 0, 156, 0, }, /* 763 */ - { 156, 17, 12, 0, 0, 156, 0, }, /* 764 */ - { 147, 7, 12, 0, 0, 147, 0, }, /* 765 */ - { 147, 15, 12, 0, 0, 147, 0, }, /* 766 */ - { 148, 7, 12, 0, 0, 148, 0, }, /* 767 */ - { 148, 12, 3, 0, 0, 148, 0, }, /* 768 */ - { 148, 15, 12, 0, 0, 148, 0, }, /* 769 */ - { 148, 21, 12, 0, 0, 148, 0, }, /* 770 */ - { 153, 7, 12, 0, 0, 153, 0, }, /* 771 */ - { 153, 15, 12, 0, 0, 153, 0, }, /* 772 */ - { 149, 7, 12, 0, 0, 149, 0, }, /* 773 */ - { 94, 10, 5, 0, 0, 94, 0, }, /* 774 */ - { 94, 12, 3, 0, 0, 94, 0, }, /* 775 */ - { 94, 7, 12, 0, 0, 94, 0, }, /* 776 */ - { 94, 21, 12, 0, 0, 94, 0, }, /* 777 */ - { 94, 15, 12, 0, 0, 94, 0, }, /* 778 */ - { 94, 13, 12, 0, 0, 94, 0, }, /* 779 */ - { 85, 12, 3, 0, 0, 85, 0, }, /* 780 */ - { 85, 10, 5, 0, 0, 85, 0, }, /* 781 */ - { 85, 7, 12, 0, 0, 85, 0, }, /* 782 */ - { 85, 21, 12, 0, 0, 85, 0, }, /* 783 */ - { 85, 1, 4, 0, 0, 85, 0, }, /* 784 */ - { 101, 7, 12, 0, 0, 101, 0, }, /* 785 */ - { 101, 13, 12, 0, 0, 101, 0, }, /* 786 */ - { 96, 12, 3, 0, 0, 96, 0, }, /* 787 */ - { 96, 7, 12, 0, 0, 96, 0, }, /* 788 */ - { 96, 10, 5, 0, 0, 96, 0, }, /* 789 */ - { 96, 13, 12, 0, 0, 96, 0, }, /* 790 */ - { 96, 21, 12, 0, 0, 96, 0, }, /* 791 */ - { 111, 7, 12, 0, 0, 111, 0, }, /* 792 */ - { 111, 12, 3, 0, 0, 111, 0, }, /* 793 */ - { 111, 21, 12, 0, 0, 111, 0, }, /* 794 */ - { 100, 12, 3, 0, 0, 100, 0, }, /* 795 */ - { 100, 10, 5, 0, 0, 100, 0, }, /* 796 */ - { 100, 7, 12, 0, 0, 100, 0, }, /* 797 */ - { 100, 7, 4, 0, 0, 100, 0, }, /* 798 */ - { 100, 21, 12, 0, 0, 100, 0, }, /* 799 */ - { 100, 13, 12, 0, 0, 100, 0, }, /* 800 */ - { 48, 15, 12, 0, 0, 48, 0, }, /* 801 */ - { 108, 7, 12, 0, 0, 108, 0, }, /* 802 */ - { 108, 10, 5, 0, 0, 108, 0, }, /* 803 */ - { 108, 12, 3, 0, 0, 108, 0, }, /* 804 */ - { 108, 21, 12, 0, 0, 108, 0, }, /* 805 */ - { 129, 7, 12, 0, 0, 129, 0, }, /* 806 */ - { 129, 21, 12, 0, 0, 129, 0, }, /* 807 */ - { 109, 7, 12, 0, 0, 109, 0, }, /* 808 */ - { 109, 12, 3, 0, 0, 109, 0, }, /* 809 */ - { 109, 10, 5, 0, 0, 109, 0, }, /* 810 */ - { 109, 13, 12, 0, 0, 109, 0, }, /* 811 */ - { 107, 12, 3, 0, 0, 107, 0, }, /* 812 */ - { 107, 12, 3, 0, 0, -52, 0, }, /* 813 */ - { 107, 10, 5, 0, 0, 107, 0, }, /* 814 */ - { 107, 10, 5, 0, 0, -52, 0, }, /* 815 */ - { 107, 7, 12, 0, 0, 107, 0, }, /* 816 */ - { 28, 12, 3, 0, 0, -52, 0, }, /* 817 */ - { 107, 10, 3, 0, 0, 107, 0, }, /* 818 */ - { 135, 7, 12, 0, 0, 135, 0, }, /* 819 */ - { 135, 10, 5, 0, 0, 135, 0, }, /* 820 */ - { 135, 12, 3, 0, 0, 135, 0, }, /* 821 */ - { 135, 21, 12, 0, 0, 135, 0, }, /* 822 */ - { 135, 13, 12, 0, 0, 135, 0, }, /* 823 */ - { 124, 7, 12, 0, 0, 124, 0, }, /* 824 */ - { 124, 10, 3, 0, 0, 124, 0, }, /* 825 */ - { 124, 10, 5, 0, 0, 124, 0, }, /* 826 */ - { 124, 12, 3, 0, 0, 124, 0, }, /* 827 */ - { 124, 21, 12, 0, 0, 124, 0, }, /* 828 */ - { 124, 13, 12, 0, 0, 124, 0, }, /* 829 */ - { 123, 7, 12, 0, 0, 123, 0, }, /* 830 */ - { 123, 10, 3, 0, 0, 123, 0, }, /* 831 */ - { 123, 10, 5, 0, 0, 123, 0, }, /* 832 */ - { 123, 12, 3, 0, 0, 123, 0, }, /* 833 */ - { 123, 21, 12, 0, 0, 123, 0, }, /* 834 */ - { 114, 7, 12, 0, 0, 114, 0, }, /* 835 */ - { 114, 10, 5, 0, 0, 114, 0, }, /* 836 */ - { 114, 12, 3, 0, 0, 114, 0, }, /* 837 */ - { 114, 21, 12, 0, 0, 114, 0, }, /* 838 */ - { 114, 13, 12, 0, 0, 114, 0, }, /* 839 */ - { 102, 7, 12, 0, 0, 102, 0, }, /* 840 */ - { 102, 12, 3, 0, 0, 102, 0, }, /* 841 */ - { 102, 10, 5, 0, 0, 102, 0, }, /* 842 */ - { 102, 13, 12, 0, 0, 102, 0, }, /* 843 */ - { 126, 7, 12, 0, 0, 126, 0, }, /* 844 */ - { 126, 12, 3, 0, 0, 126, 0, }, /* 845 */ - { 126, 10, 5, 0, 0, 126, 0, }, /* 846 */ - { 126, 13, 12, 0, 0, 126, 0, }, /* 847 */ - { 126, 15, 12, 0, 0, 126, 0, }, /* 848 */ - { 126, 21, 12, 0, 0, 126, 0, }, /* 849 */ - { 126, 26, 12, 0, 0, 126, 0, }, /* 850 */ - { 142, 7, 12, 0, 0, 142, 0, }, /* 851 */ - { 142, 10, 5, 0, 0, 142, 0, }, /* 852 */ - { 142, 12, 3, 0, 0, 142, 0, }, /* 853 */ - { 142, 21, 12, 0, 0, 142, 0, }, /* 854 */ - { 125, 9, 12, 0, 32, 125, 0, }, /* 855 */ - { 125, 5, 12, 0, -32, 125, 0, }, /* 856 */ - { 125, 13, 12, 0, 0, 125, 0, }, /* 857 */ - { 125, 15, 12, 0, 0, 125, 0, }, /* 858 */ - { 125, 7, 12, 0, 0, 125, 0, }, /* 859 */ - { 154, 7, 12, 0, 0, 154, 0, }, /* 860 */ - { 154, 10, 3, 0, 0, 154, 0, }, /* 861 */ - { 154, 10, 5, 0, 0, 154, 0, }, /* 862 */ - { 154, 12, 3, 0, 0, 154, 0, }, /* 863 */ - { 154, 7, 4, 0, 0, 154, 0, }, /* 864 */ - { 154, 21, 12, 0, 0, 154, 0, }, /* 865 */ - { 154, 13, 12, 0, 0, 154, 0, }, /* 866 */ - { 150, 7, 12, 0, 0, 150, 0, }, /* 867 */ - { 150, 10, 5, 0, 0, 150, 0, }, /* 868 */ - { 150, 12, 3, 0, 0, 150, 0, }, /* 869 */ - { 150, 21, 12, 0, 0, 150, 0, }, /* 870 */ - { 141, 7, 12, 0, 0, 141, 0, }, /* 871 */ - { 141, 12, 3, 0, 0, 141, 0, }, /* 872 */ - { 141, 10, 5, 0, 0, 141, 0, }, /* 873 */ - { 141, 7, 4, 0, 0, 141, 0, }, /* 874 */ - { 141, 21, 12, 0, 0, 141, 0, }, /* 875 */ - { 140, 7, 12, 0, 0, 140, 0, }, /* 876 */ - { 140, 12, 3, 0, 0, 140, 0, }, /* 877 */ - { 140, 10, 5, 0, 0, 140, 0, }, /* 878 */ - { 140, 7, 4, 0, 0, 140, 0, }, /* 879 */ - { 140, 21, 12, 0, 0, 140, 0, }, /* 880 */ - { 122, 7, 12, 0, 0, 122, 0, }, /* 881 */ - { 133, 7, 12, 0, 0, 133, 0, }, /* 882 */ - { 133, 10, 5, 0, 0, 133, 0, }, /* 883 */ - { 133, 12, 3, 0, 0, 133, 0, }, /* 884 */ - { 133, 21, 12, 0, 0, 133, 0, }, /* 885 */ - { 133, 13, 12, 0, 0, 133, 0, }, /* 886 */ - { 133, 15, 12, 0, 0, 133, 0, }, /* 887 */ - { 134, 21, 12, 0, 0, 134, 0, }, /* 888 */ - { 134, 7, 12, 0, 0, 134, 0, }, /* 889 */ - { 134, 12, 3, 0, 0, 134, 0, }, /* 890 */ - { 134, 10, 5, 0, 0, 134, 0, }, /* 891 */ - { 138, 7, 12, 0, 0, 138, 0, }, /* 892 */ - { 138, 12, 3, 0, 0, 138, 0, }, /* 893 */ - { 138, 7, 4, 0, 0, 138, 0, }, /* 894 */ - { 138, 13, 12, 0, 0, 138, 0, }, /* 895 */ - { 143, 7, 12, 0, 0, 143, 0, }, /* 896 */ - { 143, 10, 5, 0, 0, 143, 0, }, /* 897 */ - { 143, 12, 3, 0, 0, 143, 0, }, /* 898 */ - { 143, 13, 12, 0, 0, 143, 0, }, /* 899 */ - { 145, 7, 12, 0, 0, 145, 0, }, /* 900 */ - { 145, 12, 3, 0, 0, 145, 0, }, /* 901 */ - { 145, 10, 5, 0, 0, 145, 0, }, /* 902 */ - { 145, 21, 12, 0, 0, 145, 0, }, /* 903 */ - { 54, 15, 12, 0, 0, 54, 0, }, /* 904 */ - { 54, 21, 12, 0, 0, 54, 0, }, /* 905 */ - { 63, 7, 12, 0, 0, 63, 0, }, /* 906 */ - { 63, 14, 12, 0, 0, 63, 0, }, /* 907 */ - { 63, 21, 12, 0, 0, 63, 0, }, /* 908 */ - { 80, 7, 12, 0, 0, 80, 0, }, /* 909 */ - { 80, 1, 2, 0, 0, 80, 0, }, /* 910 */ - { 127, 7, 12, 0, 0, 127, 0, }, /* 911 */ - { 115, 7, 12, 0, 0, 115, 0, }, /* 912 */ - { 115, 13, 12, 0, 0, 115, 0, }, /* 913 */ - { 115, 21, 12, 0, 0, 115, 0, }, /* 914 */ - { 103, 7, 12, 0, 0, 103, 0, }, /* 915 */ - { 103, 12, 3, 0, 0, 103, 0, }, /* 916 */ - { 103, 21, 12, 0, 0, 103, 0, }, /* 917 */ - { 119, 7, 12, 0, 0, 119, 0, }, /* 918 */ - { 119, 12, 3, 0, 0, 119, 0, }, /* 919 */ - { 119, 21, 12, 0, 0, 119, 0, }, /* 920 */ - { 119, 26, 12, 0, 0, 119, 0, }, /* 921 */ - { 119, 6, 12, 0, 0, 119, 0, }, /* 922 */ - { 119, 13, 12, 0, 0, 119, 0, }, /* 923 */ - { 119, 15, 12, 0, 0, 119, 0, }, /* 924 */ - { 146, 9, 12, 0, 32, 146, 0, }, /* 925 */ - { 146, 5, 12, 0, -32, 146, 0, }, /* 926 */ - { 146, 15, 12, 0, 0, 146, 0, }, /* 927 */ - { 146, 21, 12, 0, 0, 146, 0, }, /* 928 */ - { 99, 7, 12, 0, 0, 99, 0, }, /* 929 */ - { 99, 12, 3, 0, 0, 99, 0, }, /* 930 */ - { 99, 10, 5, 0, 0, 99, 0, }, /* 931 */ - { 99, 6, 12, 0, 0, 99, 0, }, /* 932 */ - { 137, 6, 12, 0, 0, 137, 0, }, /* 933 */ - { 139, 6, 12, 0, 0, 139, 0, }, /* 934 */ - { 155, 12, 3, 0, 0, 155, 0, }, /* 935 */ - { 23, 10, 5, 0, 0, 23, 0, }, /* 936 */ - { 137, 7, 12, 0, 0, 137, 0, }, /* 937 */ - { 155, 7, 12, 0, 0, 155, 0, }, /* 938 */ - { 139, 7, 12, 0, 0, 139, 0, }, /* 939 */ - { 105, 7, 12, 0, 0, 105, 0, }, /* 940 */ - { 105, 26, 12, 0, 0, 105, 0, }, /* 941 */ - { 105, 12, 3, 0, 0, 105, 0, }, /* 942 */ - { 105, 21, 12, 0, 0, 105, 0, }, /* 943 */ - { 10, 1, 2, 0, 0, 105, 0, }, /* 944 */ - { 10, 10, 3, 0, 0, 10, 0, }, /* 945 */ - { 10, 10, 5, 0, 0, 10, 0, }, /* 946 */ - { 20, 12, 3, 0, 0, 20, 0, }, /* 947 */ - { 131, 26, 12, 0, 0, 131, 0, }, /* 948 */ - { 131, 12, 3, 0, 0, 131, 0, }, /* 949 */ - { 131, 21, 12, 0, 0, 131, 0, }, /* 950 */ - { 18, 12, 3, 0, 0, 18, 0, }, /* 951 */ - { 151, 7, 12, 0, 0, 151, 0, }, /* 952 */ - { 151, 12, 3, 0, 0, 151, 0, }, /* 953 */ - { 151, 6, 12, 0, 0, 151, 0, }, /* 954 */ - { 151, 13, 12, 0, 0, 151, 0, }, /* 955 */ - { 151, 26, 12, 0, 0, 151, 0, }, /* 956 */ - { 152, 7, 12, 0, 0, 152, 0, }, /* 957 */ - { 152, 12, 3, 0, 0, 152, 0, }, /* 958 */ - { 152, 13, 12, 0, 0, 152, 0, }, /* 959 */ - { 152, 23, 12, 0, 0, 152, 0, }, /* 960 */ - { 113, 7, 12, 0, 0, 113, 0, }, /* 961 */ - { 113, 15, 12, 0, 0, 113, 0, }, /* 962 */ - { 113, 12, 3, 0, 0, 113, 0, }, /* 963 */ - { 132, 9, 12, 0, 34, 132, 0, }, /* 964 */ - { 132, 5, 12, 0, -34, 132, 0, }, /* 965 */ - { 132, 12, 3, 0, 0, 132, 0, }, /* 966 */ - { 132, 6, 12, 0, 0, 132, 0, }, /* 967 */ - { 132, 13, 12, 0, 0, 132, 0, }, /* 968 */ - { 132, 21, 12, 0, 0, 132, 0, }, /* 969 */ - { 0, 2, 14, 0, 0, 0, 0, }, /* 970 */ - { 10, 26, 11, 0, 0, 10, 0, }, /* 971 */ - { 27, 26, 12, 0, 0, 27, 0, }, /* 972 */ - { 10, 24, 3, 0, 0, 10, 0, }, /* 973 */ - { 10, 1, 3, 0, 0, 10, 0, }, /* 974 */ + { 1, 1, 2, 0, 0, -82, 0, }, /* 223 */ + { 10, 21, 12, 0, 0, -164, 0, }, /* 224 */ + { 1, 7, 12, 0, 0, 1, 0, }, /* 225 */ + { 10, 6, 12, 0, 0, -181, 0, }, /* 226 */ + { 28, 12, 3, 0, 0, -10, 0, }, /* 227 */ + { 1, 13, 12, 0, 0, -86, 0, }, /* 228 */ + { 1, 21, 12, 0, 0, -4, 0, }, /* 229 */ + { 1, 6, 12, 0, 0, 1, 0, }, /* 230 */ + { 1, 13, 12, 0, 0, 1, 0, }, /* 231 */ + { 50, 21, 12, 0, 0, 50, 0, }, /* 232 */ + { 50, 1, 4, 0, 0, 50, 0, }, /* 233 */ + { 50, 7, 12, 0, 0, 50, 0, }, /* 234 */ + { 50, 12, 3, 0, 0, 50, 0, }, /* 235 */ + { 56, 7, 12, 0, 0, 56, 0, }, /* 236 */ + { 56, 12, 3, 0, 0, 56, 0, }, /* 237 */ + { 64, 13, 12, 0, 0, 64, 0, }, /* 238 */ + { 64, 7, 12, 0, 0, 64, 0, }, /* 239 */ + { 64, 12, 3, 0, 0, 64, 0, }, /* 240 */ + { 64, 6, 12, 0, 0, 64, 0, }, /* 241 */ + { 64, 26, 12, 0, 0, 64, 0, }, /* 242 */ + { 64, 21, 12, 0, 0, 64, 0, }, /* 243 */ + { 64, 23, 12, 0, 0, 64, 0, }, /* 244 */ + { 90, 7, 12, 0, 0, 90, 0, }, /* 245 */ + { 90, 12, 3, 0, 0, 90, 0, }, /* 246 */ + { 90, 6, 12, 0, 0, 90, 0, }, /* 247 */ + { 90, 21, 12, 0, 0, 90, 0, }, /* 248 */ + { 95, 7, 12, 0, 0, 95, 0, }, /* 249 */ + { 95, 12, 3, 0, 0, 95, 0, }, /* 250 */ + { 95, 21, 12, 0, 0, 95, 0, }, /* 251 */ + { 1, 24, 12, 0, 0, 1, 0, }, /* 252 */ + { 15, 12, 3, 0, 0, 15, 0, }, /* 253 */ + { 15, 10, 5, 0, 0, 15, 0, }, /* 254 */ + { 15, 7, 12, 0, 0, 15, 0, }, /* 255 */ + { 28, 12, 3, 0, 0, -216, 0, }, /* 256 */ + { 28, 12, 3, 0, 0, -203, 0, }, /* 257 */ + { 10, 21, 12, 0, 0, -259, 0, }, /* 258 */ + { 10, 21, 12, 0, 0, -280, 0, }, /* 259 */ + { 15, 13, 12, 0, 0, -132, 0, }, /* 260 */ + { 15, 21, 12, 0, 0, 15, 0, }, /* 261 */ + { 15, 6, 12, 0, 0, 15, 0, }, /* 262 */ + { 3, 7, 12, 0, 0, 3, 0, }, /* 263 */ + { 3, 12, 3, 0, 0, 3, 0, }, /* 264 */ + { 3, 10, 5, 0, 0, 3, 0, }, /* 265 */ + { 3, 10, 3, 0, 0, 3, 0, }, /* 266 */ + { 3, 13, 12, 0, 0, -90, 0, }, /* 267 */ + { 3, 23, 12, 0, 0, 3, 0, }, /* 268 */ + { 3, 15, 12, 0, 0, 3, 0, }, /* 269 */ + { 3, 26, 12, 0, 0, 3, 0, }, /* 270 */ + { 3, 21, 12, 0, 0, 3, 0, }, /* 271 */ + { 22, 12, 3, 0, 0, 22, 0, }, /* 272 */ + { 22, 10, 5, 0, 0, 22, 0, }, /* 273 */ + { 22, 7, 12, 0, 0, 22, 0, }, /* 274 */ + { 22, 13, 12, 0, 0, -61, 0, }, /* 275 */ + { 22, 21, 12, 0, 0, 22, 0, }, /* 276 */ + { 21, 12, 3, 0, 0, 21, 0, }, /* 277 */ + { 21, 10, 5, 0, 0, 21, 0, }, /* 278 */ + { 21, 7, 12, 0, 0, 21, 0, }, /* 279 */ + { 21, 13, 12, 0, 0, -58, 0, }, /* 280 */ + { 21, 21, 12, 0, 0, 21, 0, }, /* 281 */ + { 21, 23, 12, 0, 0, 21, 0, }, /* 282 */ + { 44, 12, 3, 0, 0, 44, 0, }, /* 283 */ + { 44, 10, 5, 0, 0, 44, 0, }, /* 284 */ + { 44, 7, 12, 0, 0, 44, 0, }, /* 285 */ + { 44, 10, 3, 0, 0, 44, 0, }, /* 286 */ + { 44, 13, 12, 0, 0, 44, 0, }, /* 287 */ + { 44, 26, 12, 0, 0, 44, 0, }, /* 288 */ + { 44, 15, 12, 0, 0, 44, 0, }, /* 289 */ + { 54, 12, 3, 0, 0, 54, 0, }, /* 290 */ + { 54, 7, 12, 0, 0, 54, 0, }, /* 291 */ + { 54, 10, 3, 0, 0, 54, 0, }, /* 292 */ + { 54, 10, 5, 0, 0, 54, 0, }, /* 293 */ + { 54, 13, 12, 0, 0, -55, 0, }, /* 294 */ + { 54, 15, 12, 0, 0, -55, 0, }, /* 295 */ + { 54, 26, 12, 0, 0, -55, 0, }, /* 296 */ + { 54, 26, 12, 0, 0, 54, 0, }, /* 297 */ + { 54, 23, 12, 0, 0, 54, 0, }, /* 298 */ + { 55, 12, 3, 0, 0, 55, 0, }, /* 299 */ + { 55, 10, 5, 0, 0, 55, 0, }, /* 300 */ + { 55, 7, 12, 0, 0, 55, 0, }, /* 301 */ + { 55, 13, 12, 0, 0, 55, 0, }, /* 302 */ + { 55, 21, 12, 0, 0, 55, 0, }, /* 303 */ + { 55, 15, 12, 0, 0, 55, 0, }, /* 304 */ + { 55, 26, 12, 0, 0, 55, 0, }, /* 305 */ + { 29, 7, 12, 0, 0, 29, 0, }, /* 306 */ + { 29, 12, 3, 0, 0, 29, 0, }, /* 307 */ + { 29, 10, 5, 0, 0, 29, 0, }, /* 308 */ + { 29, 21, 12, 0, 0, 29, 0, }, /* 309 */ + { 29, 10, 3, 0, 0, 29, 0, }, /* 310 */ + { 29, 13, 12, 0, 0, -70, 0, }, /* 311 */ + { 37, 12, 3, 0, 0, 37, 0, }, /* 312 */ + { 37, 10, 5, 0, 0, 37, 0, }, /* 313 */ + { 37, 7, 12, 0, 0, 37, 0, }, /* 314 */ + { 37, 10, 3, 0, 0, 37, 0, }, /* 315 */ + { 37, 7, 4, 0, 0, 37, 0, }, /* 316 */ + { 37, 26, 12, 0, 0, 37, 0, }, /* 317 */ + { 37, 15, 12, 0, 0, 37, 0, }, /* 318 */ + { 37, 13, 12, 0, 0, 37, 0, }, /* 319 */ + { 48, 12, 3, 0, 0, 48, 0, }, /* 320 */ + { 48, 10, 5, 0, 0, 48, 0, }, /* 321 */ + { 48, 7, 12, 0, 0, 48, 0, }, /* 322 */ + { 48, 10, 3, 0, 0, 48, 0, }, /* 323 */ + { 48, 13, 12, 0, 0, 48, 0, }, /* 324 */ + { 48, 21, 12, 0, 0, 48, 0, }, /* 325 */ + { 57, 7, 12, 0, 0, 57, 0, }, /* 326 */ + { 57, 12, 3, 0, 0, 57, 0, }, /* 327 */ + { 57, 7, 5, 0, 0, 57, 0, }, /* 328 */ + { 57, 6, 12, 0, 0, 57, 0, }, /* 329 */ + { 57, 21, 12, 0, 0, 57, 0, }, /* 330 */ + { 57, 13, 12, 0, 0, 57, 0, }, /* 331 */ + { 33, 7, 12, 0, 0, 33, 0, }, /* 332 */ + { 33, 12, 3, 0, 0, 33, 0, }, /* 333 */ + { 33, 7, 5, 0, 0, 33, 0, }, /* 334 */ + { 33, 6, 12, 0, 0, 33, 0, }, /* 335 */ + { 33, 13, 12, 0, 0, 33, 0, }, /* 336 */ + { 58, 7, 12, 0, 0, 58, 0, }, /* 337 */ + { 58, 26, 12, 0, 0, 58, 0, }, /* 338 */ + { 58, 21, 12, 0, 0, 58, 0, }, /* 339 */ + { 58, 12, 3, 0, 0, 58, 0, }, /* 340 */ + { 58, 13, 12, 0, 0, 58, 0, }, /* 341 */ + { 58, 15, 12, 0, 0, 58, 0, }, /* 342 */ + { 58, 22, 12, 0, 0, 58, 0, }, /* 343 */ + { 58, 18, 12, 0, 0, 58, 0, }, /* 344 */ + { 58, 10, 5, 0, 0, 58, 0, }, /* 345 */ + { 39, 7, 12, 0, 0, 39, 0, }, /* 346 */ + { 39, 10, 12, 0, 0, 39, 0, }, /* 347 */ + { 39, 12, 3, 0, 0, 39, 0, }, /* 348 */ + { 39, 10, 5, 0, 0, 39, 0, }, /* 349 */ + { 39, 13, 12, 0, 0, -94, 0, }, /* 350 */ + { 39, 21, 12, 0, 0, 39, 0, }, /* 351 */ + { 39, 13, 12, 0, 0, 39, 0, }, /* 352 */ + { 39, 26, 12, 0, 0, 39, 0, }, /* 353 */ + { 17, 9, 12, 0, 7264, 17, 0, }, /* 354 */ + { 17, 5, 12, 0, 3008, 17, 0, }, /* 355 */ + { 10, 21, 12, 0, 0, -52, 0, }, /* 356 */ + { 17, 6, 12, 0, 0, 17, 0, }, /* 357 */ + { 24, 7, 6, 0, 0, 24, 0, }, /* 358 */ + { 24, 7, 7, 0, 0, 24, 0, }, /* 359 */ + { 24, 7, 8, 0, 0, 24, 0, }, /* 360 */ + { 16, 7, 12, 0, 0, 16, 0, }, /* 361 */ + { 16, 12, 3, 0, 0, 16, 0, }, /* 362 */ + { 16, 21, 12, 0, 0, 16, 0, }, /* 363 */ + { 16, 15, 12, 0, 0, 16, 0, }, /* 364 */ + { 16, 26, 12, 0, 0, 16, 0, }, /* 365 */ + { 9, 9, 12, 0, 38864, 9, 0, }, /* 366 */ + { 9, 9, 12, 0, 8, 9, 0, }, /* 367 */ + { 9, 5, 12, 0, -8, 9, 0, }, /* 368 */ + { 8, 17, 12, 0, 0, 8, 0, }, /* 369 */ + { 8, 7, 12, 0, 0, 8, 0, }, /* 370 */ + { 8, 26, 12, 0, 0, 8, 0, }, /* 371 */ + { 8, 21, 12, 0, 0, 8, 0, }, /* 372 */ + { 41, 29, 12, 0, 0, 41, 0, }, /* 373 */ + { 41, 7, 12, 0, 0, 41, 0, }, /* 374 */ + { 41, 22, 12, 0, 0, 41, 0, }, /* 375 */ + { 41, 18, 12, 0, 0, 41, 0, }, /* 376 */ + { 46, 7, 12, 0, 0, 46, 0, }, /* 377 */ + { 46, 14, 12, 0, 0, 46, 0, }, /* 378 */ + { 51, 7, 12, 0, 0, 51, 0, }, /* 379 */ + { 51, 12, 3, 0, 0, 51, 0, }, /* 380 */ + { 51, 10, 5, 0, 0, 51, 0, }, /* 381 */ + { 25, 7, 12, 0, 0, 25, 0, }, /* 382 */ + { 25, 12, 3, 0, 0, 25, 0, }, /* 383 */ + { 25, 10, 5, 0, 0, 25, 0, }, /* 384 */ + { 10, 21, 12, 0, 0, -127, 0, }, /* 385 */ + { 7, 7, 12, 0, 0, 7, 0, }, /* 386 */ + { 7, 12, 3, 0, 0, 7, 0, }, /* 387 */ + { 52, 7, 12, 0, 0, 52, 0, }, /* 388 */ + { 52, 12, 3, 0, 0, 52, 0, }, /* 389 */ + { 32, 7, 12, 0, 0, 32, 0, }, /* 390 */ + { 32, 12, 3, 0, 0, 32, 0, }, /* 391 */ + { 32, 10, 5, 0, 0, 32, 0, }, /* 392 */ + { 32, 21, 12, 0, 0, 32, 0, }, /* 393 */ + { 32, 6, 12, 0, 0, 32, 0, }, /* 394 */ + { 32, 23, 12, 0, 0, 32, 0, }, /* 395 */ + { 32, 13, 12, 0, 0, 32, 0, }, /* 396 */ + { 32, 15, 12, 0, 0, 32, 0, }, /* 397 */ + { 38, 21, 12, 0, 0, 38, 0, }, /* 398 */ + { 10, 21, 12, 0, 0, -79, 0, }, /* 399 */ + { 38, 17, 12, 0, 0, 38, 0, }, /* 400 */ + { 38, 12, 3, 0, 0, 38, 0, }, /* 401 */ + { 38, 1, 2, 0, 0, 38, 0, }, /* 402 */ + { 38, 13, 12, 0, 0, 38, 0, }, /* 403 */ + { 38, 7, 12, 0, 0, 38, 0, }, /* 404 */ + { 38, 6, 12, 0, 0, 38, 0, }, /* 405 */ + { 35, 7, 12, 0, 0, 35, 0, }, /* 406 */ + { 35, 12, 3, 0, 0, 35, 0, }, /* 407 */ + { 35, 10, 5, 0, 0, 35, 0, }, /* 408 */ + { 35, 26, 12, 0, 0, 35, 0, }, /* 409 */ + { 35, 21, 12, 0, 0, 35, 0, }, /* 410 */ + { 35, 13, 12, 0, 0, 35, 0, }, /* 411 */ + { 53, 7, 12, 0, 0, 53, 0, }, /* 412 */ + { 40, 7, 12, 0, 0, 40, 0, }, /* 413 */ + { 40, 13, 12, 0, 0, 40, 0, }, /* 414 */ + { 40, 15, 12, 0, 0, 40, 0, }, /* 415 */ + { 40, 26, 12, 0, 0, 40, 0, }, /* 416 */ + { 32, 26, 12, 0, 0, 32, 0, }, /* 417 */ + { 6, 7, 12, 0, 0, 6, 0, }, /* 418 */ + { 6, 12, 3, 0, 0, 6, 0, }, /* 419 */ + { 6, 10, 5, 0, 0, 6, 0, }, /* 420 */ + { 6, 21, 12, 0, 0, 6, 0, }, /* 421 */ + { 91, 7, 12, 0, 0, 91, 0, }, /* 422 */ + { 91, 10, 5, 0, 0, 91, 0, }, /* 423 */ + { 91, 12, 3, 0, 0, 91, 0, }, /* 424 */ + { 91, 10, 12, 0, 0, 91, 0, }, /* 425 */ + { 91, 13, 12, 0, 0, 91, 0, }, /* 426 */ + { 91, 21, 12, 0, 0, 91, 0, }, /* 427 */ + { 91, 6, 12, 0, 0, 91, 0, }, /* 428 */ + { 28, 11, 3, 0, 0, 28, 0, }, /* 429 */ + { 62, 12, 3, 0, 0, 62, 0, }, /* 430 */ + { 62, 10, 5, 0, 0, 62, 0, }, /* 431 */ + { 62, 7, 12, 0, 0, 62, 0, }, /* 432 */ + { 62, 10, 3, 0, 0, 62, 0, }, /* 433 */ + { 62, 13, 12, 0, 0, 62, 0, }, /* 434 */ + { 62, 21, 12, 0, 0, 62, 0, }, /* 435 */ + { 62, 26, 12, 0, 0, 62, 0, }, /* 436 */ + { 76, 12, 3, 0, 0, 76, 0, }, /* 437 */ + { 76, 10, 5, 0, 0, 76, 0, }, /* 438 */ + { 76, 7, 12, 0, 0, 76, 0, }, /* 439 */ + { 76, 13, 12, 0, 0, 76, 0, }, /* 440 */ + { 93, 7, 12, 0, 0, 93, 0, }, /* 441 */ + { 93, 12, 3, 0, 0, 93, 0, }, /* 442 */ + { 93, 10, 5, 0, 0, 93, 0, }, /* 443 */ + { 93, 21, 12, 0, 0, 93, 0, }, /* 444 */ + { 70, 7, 12, 0, 0, 70, 0, }, /* 445 */ + { 70, 10, 5, 0, 0, 70, 0, }, /* 446 */ + { 70, 12, 3, 0, 0, 70, 0, }, /* 447 */ + { 70, 21, 12, 0, 0, 70, 0, }, /* 448 */ + { 70, 13, 12, 0, 0, 70, 0, }, /* 449 */ + { 73, 13, 12, 0, 0, 73, 0, }, /* 450 */ + { 73, 7, 12, 0, 0, 73, 0, }, /* 451 */ + { 73, 6, 12, 0, 0, 73, 0, }, /* 452 */ + { 73, 21, 12, 0, 0, 73, 0, }, /* 453 */ + { 13, 5, 12, 63, -6222, 13, 0, }, /* 454 */ + { 13, 5, 12, 67, -6221, 13, 0, }, /* 455 */ + { 13, 5, 12, 71, -6212, 13, 0, }, /* 456 */ + { 13, 5, 12, 75, -6210, 13, 0, }, /* 457 */ + { 13, 5, 12, 79, -6210, 13, 0, }, /* 458 */ + { 13, 5, 12, 79, -6211, 13, 0, }, /* 459 */ + { 13, 5, 12, 84, -6204, 13, 0, }, /* 460 */ + { 13, 5, 12, 88, -6180, 13, 0, }, /* 461 */ + { 13, 5, 12, 108, 35267, 13, 0, }, /* 462 */ + { 17, 9, 12, 0, -3008, 17, 0, }, /* 463 */ + { 76, 21, 12, 0, 0, 76, 0, }, /* 464 */ + { 28, 12, 3, 0, 0, -122, 0, }, /* 465 */ + { 28, 12, 3, 0, 0, 15, 0, }, /* 466 */ + { 10, 21, 12, 0, 0, -40, 0, }, /* 467 */ + { 28, 12, 3, 0, 0, -16, 0, }, /* 468 */ + { 28, 12, 3, 0, 0, -46, 0, }, /* 469 */ + { 28, 12, 3, 0, 0, -157, 0, }, /* 470 */ + { 10, 10, 5, 0, 0, -16, 0, }, /* 471 */ + { 10, 7, 12, 0, 0, -43, 0, }, /* 472 */ + { 10, 7, 12, 0, 0, -16, 0, }, /* 473 */ + { 10, 7, 12, 0, 0, 15, 0, }, /* 474 */ + { 10, 7, 12, 0, 0, -172, 0, }, /* 475 */ + { 10, 7, 12, 0, 0, -40, 0, }, /* 476 */ + { 28, 12, 3, 0, 0, -106, 0, }, /* 477 */ + { 10, 10, 5, 0, 0, 3, 0, }, /* 478 */ + { 28, 12, 3, 0, 0, -40, 0, }, /* 479 */ + { 10, 7, 12, 0, 0, 150, 0, }, /* 480 */ + { 13, 5, 12, 0, 0, 13, 0, }, /* 481 */ + { 13, 6, 12, 0, 0, 13, 0, }, /* 482 */ + { 34, 5, 12, 0, 35332, 34, 0, }, /* 483 */ + { 34, 5, 12, 0, 3814, 34, 0, }, /* 484 */ + { 34, 5, 12, 0, 35384, 34, 0, }, /* 485 */ + { 28, 12, 3, 0, 0, -37, 0, }, /* 486 */ + { 28, 12, 3, 0, 0, 50, 0, }, /* 487 */ + { 34, 9, 12, 92, 1, 34, 0, }, /* 488 */ + { 34, 5, 12, 92, -1, 34, 0, }, /* 489 */ + { 34, 5, 12, 92, -58, 34, 0, }, /* 490 */ + { 34, 9, 12, 0, -7615, 34, 0, }, /* 491 */ + { 20, 5, 12, 0, 8, 20, 0, }, /* 492 */ + { 20, 9, 12, 0, -8, 20, 0, }, /* 493 */ + { 20, 5, 12, 0, 74, 20, 0, }, /* 494 */ + { 20, 5, 12, 0, 86, 20, 0, }, /* 495 */ + { 20, 5, 12, 0, 100, 20, 0, }, /* 496 */ + { 20, 5, 12, 0, 128, 20, 0, }, /* 497 */ + { 20, 5, 12, 0, 112, 20, 0, }, /* 498 */ + { 20, 5, 12, 0, 126, 20, 0, }, /* 499 */ + { 20, 8, 12, 0, -8, 20, 0, }, /* 500 */ + { 20, 5, 12, 0, 9, 20, 0, }, /* 501 */ + { 20, 9, 12, 0, -74, 20, 0, }, /* 502 */ + { 20, 8, 12, 0, -9, 20, 0, }, /* 503 */ + { 20, 5, 12, 21, -7173, 20, 0, }, /* 504 */ + { 20, 9, 12, 0, -86, 20, 0, }, /* 505 */ + { 20, 9, 12, 0, -100, 20, 0, }, /* 506 */ + { 20, 9, 12, 0, -112, 20, 0, }, /* 507 */ + { 20, 9, 12, 0, -128, 20, 0, }, /* 508 */ + { 20, 9, 12, 0, -126, 20, 0, }, /* 509 */ + { 28, 1, 3, 0, 0, 28, 0, }, /* 510 */ + { 28, 1, 13, 0, 0, 28, 0, }, /* 511 */ + { 10, 27, 2, 0, 0, 10, 0, }, /* 512 */ + { 10, 28, 2, 0, 0, 10, 0, }, /* 513 */ + { 10, 29, 12, 0, 0, -73, 0, }, /* 514 */ + { 10, 21, 14, 0, 0, 10, 0, }, /* 515 */ + { 0, 2, 2, 0, 0, 0, 0, }, /* 516 */ + { 28, 12, 3, 0, 0, -110, 0, }, /* 517 */ + { 10, 9, 12, 0, 0, 10, 0, }, /* 518 */ + { 10, 5, 12, 0, 0, 10, 0, }, /* 519 */ + { 20, 9, 12, 96, -7517, 20, 0, }, /* 520 */ + { 34, 9, 12, 100, -8383, 34, 0, }, /* 521 */ + { 34, 9, 12, 104, -8262, 34, 0, }, /* 522 */ + { 34, 9, 12, 0, 28, 34, 0, }, /* 523 */ + { 10, 7, 12, 0, 0, 10, 0, }, /* 524 */ + { 10, 5, 14, 0, 0, 10, 0, }, /* 525 */ + { 34, 5, 12, 0, -28, 34, 0, }, /* 526 */ + { 34, 14, 12, 0, 16, 34, 0, }, /* 527 */ + { 34, 14, 12, 0, -16, 34, 0, }, /* 528 */ + { 34, 14, 12, 0, 0, 34, 0, }, /* 529 */ + { 10, 25, 14, 0, 0, 10, 0, }, /* 530 */ + { 10, 26, 12, 0, 26, 10, 0, }, /* 531 */ + { 10, 26, 14, 0, 26, 10, 0, }, /* 532 */ + { 10, 26, 12, 0, -26, 10, 0, }, /* 533 */ + { 5, 26, 12, 0, 0, 5, 0, }, /* 534 */ + { 18, 9, 12, 0, 48, 18, 0, }, /* 535 */ + { 18, 5, 12, 0, -48, 18, 0, }, /* 536 */ + { 34, 9, 12, 0, -10743, 34, 0, }, /* 537 */ + { 34, 9, 12, 0, -3814, 34, 0, }, /* 538 */ + { 34, 9, 12, 0, -10727, 34, 0, }, /* 539 */ + { 34, 5, 12, 0, -10795, 34, 0, }, /* 540 */ + { 34, 5, 12, 0, -10792, 34, 0, }, /* 541 */ + { 34, 9, 12, 0, -10780, 34, 0, }, /* 542 */ + { 34, 9, 12, 0, -10749, 34, 0, }, /* 543 */ + { 34, 9, 12, 0, -10783, 34, 0, }, /* 544 */ + { 34, 9, 12, 0, -10782, 34, 0, }, /* 545 */ + { 34, 9, 12, 0, -10815, 34, 0, }, /* 546 */ + { 11, 5, 12, 0, 0, 11, 0, }, /* 547 */ + { 11, 26, 12, 0, 0, 11, 0, }, /* 548 */ + { 11, 12, 3, 0, 0, 11, 0, }, /* 549 */ + { 11, 21, 12, 0, 0, 11, 0, }, /* 550 */ + { 11, 15, 12, 0, 0, 11, 0, }, /* 551 */ + { 17, 5, 12, 0, -7264, 17, 0, }, /* 552 */ + { 59, 7, 12, 0, 0, 59, 0, }, /* 553 */ + { 59, 6, 12, 0, 0, 59, 0, }, /* 554 */ + { 59, 21, 12, 0, 0, 59, 0, }, /* 555 */ + { 59, 12, 3, 0, 0, 59, 0, }, /* 556 */ + { 13, 12, 3, 0, 0, 13, 0, }, /* 557 */ + { 10, 21, 12, 0, 0, -28, 0, }, /* 558 */ + { 23, 26, 12, 0, 0, 23, 0, }, /* 559 */ + { 10, 21, 12, 0, 0, -150, 0, }, /* 560 */ + { 10, 21, 12, 0, 0, -137, 0, }, /* 561 */ + { 23, 6, 12, 0, 0, 23, 0, }, /* 562 */ + { 10, 7, 12, 0, 0, 23, 0, }, /* 563 */ + { 23, 14, 12, 0, 0, 23, 0, }, /* 564 */ + { 10, 22, 12, 0, 0, -150, 0, }, /* 565 */ + { 10, 18, 12, 0, 0, -150, 0, }, /* 566 */ + { 10, 26, 12, 0, 0, -137, 0, }, /* 567 */ + { 10, 17, 12, 0, 0, -137, 0, }, /* 568 */ + { 10, 22, 12, 0, 0, -137, 0, }, /* 569 */ + { 10, 18, 12, 0, 0, -137, 0, }, /* 570 */ + { 28, 12, 3, 0, 0, -19, 0, }, /* 571 */ + { 24, 10, 3, 0, 0, 24, 0, }, /* 572 */ + { 10, 17, 14, 0, 0, -137, 0, }, /* 573 */ + { 10, 6, 12, 0, 0, -67, 0, }, /* 574 */ + { 10, 7, 12, 0, 0, -114, 0, }, /* 575 */ + { 10, 21, 14, 0, 0, -114, 0, }, /* 576 */ + { 10, 26, 12, 0, 0, 23, 0, }, /* 577 */ + { 27, 7, 12, 0, 0, 27, 0, }, /* 578 */ + { 28, 12, 3, 0, 0, -67, 0, }, /* 579 */ + { 10, 24, 12, 0, 0, -67, 0, }, /* 580 */ + { 27, 6, 12, 0, 0, 27, 0, }, /* 581 */ + { 10, 17, 12, 0, 0, -67, 0, }, /* 582 */ + { 30, 7, 12, 0, 0, 30, 0, }, /* 583 */ + { 30, 6, 12, 0, 0, 30, 0, }, /* 584 */ + { 4, 7, 12, 0, 0, 4, 0, }, /* 585 */ + { 24, 7, 12, 0, 0, 24, 0, }, /* 586 */ + { 10, 15, 12, 0, 0, 23, 0, }, /* 587 */ + { 24, 26, 12, 0, 0, 24, 0, }, /* 588 */ + { 10, 26, 14, 0, 0, 23, 0, }, /* 589 */ + { 30, 26, 12, 0, 0, 30, 0, }, /* 590 */ + { 23, 7, 12, 0, 0, 23, 0, }, /* 591 */ + { 61, 7, 12, 0, 0, 61, 0, }, /* 592 */ + { 61, 6, 12, 0, 0, 61, 0, }, /* 593 */ + { 61, 26, 12, 0, 0, 61, 0, }, /* 594 */ + { 86, 7, 12, 0, 0, 86, 0, }, /* 595 */ + { 86, 6, 12, 0, 0, 86, 0, }, /* 596 */ + { 86, 21, 12, 0, 0, 86, 0, }, /* 597 */ + { 77, 7, 12, 0, 0, 77, 0, }, /* 598 */ + { 77, 6, 12, 0, 0, 77, 0, }, /* 599 */ + { 77, 21, 12, 0, 0, 77, 0, }, /* 600 */ + { 77, 13, 12, 0, 0, 77, 0, }, /* 601 */ + { 13, 9, 12, 108, 1, 13, 0, }, /* 602 */ + { 13, 5, 12, 108, -35267, 13, 0, }, /* 603 */ + { 13, 7, 12, 0, 0, 13, 0, }, /* 604 */ + { 13, 21, 12, 0, 0, 13, 0, }, /* 605 */ + { 79, 7, 12, 0, 0, 79, 0, }, /* 606 */ + { 79, 14, 12, 0, 0, 79, 0, }, /* 607 */ + { 79, 12, 3, 0, 0, 79, 0, }, /* 608 */ + { 79, 21, 12, 0, 0, 79, 0, }, /* 609 */ + { 10, 24, 12, 0, 0, -64, 0, }, /* 610 */ + { 34, 9, 12, 0, -35332, 34, 0, }, /* 611 */ + { 34, 9, 12, 0, -42280, 34, 0, }, /* 612 */ + { 34, 5, 12, 0, 48, 34, 0, }, /* 613 */ + { 34, 9, 12, 0, -42308, 34, 0, }, /* 614 */ + { 34, 9, 12, 0, -42319, 34, 0, }, /* 615 */ + { 34, 9, 12, 0, -42315, 34, 0, }, /* 616 */ + { 34, 9, 12, 0, -42305, 34, 0, }, /* 617 */ + { 34, 9, 12, 0, -42258, 34, 0, }, /* 618 */ + { 34, 9, 12, 0, -42282, 34, 0, }, /* 619 */ + { 34, 9, 12, 0, -42261, 34, 0, }, /* 620 */ + { 34, 9, 12, 0, 928, 34, 0, }, /* 621 */ + { 34, 9, 12, 0, -48, 34, 0, }, /* 622 */ + { 34, 9, 12, 0, -42307, 34, 0, }, /* 623 */ + { 34, 9, 12, 0, -35384, 34, 0, }, /* 624 */ + { 49, 7, 12, 0, 0, 49, 0, }, /* 625 */ + { 49, 12, 3, 0, 0, 49, 0, }, /* 626 */ + { 49, 10, 5, 0, 0, 49, 0, }, /* 627 */ + { 49, 26, 12, 0, 0, 49, 0, }, /* 628 */ + { 10, 15, 12, 0, 0, -244, 0, }, /* 629 */ + { 10, 15, 12, 0, 0, -230, 0, }, /* 630 */ + { 10, 26, 12, 0, 0, -191, 0, }, /* 631 */ + { 10, 23, 12, 0, 0, -191, 0, }, /* 632 */ + { 65, 7, 12, 0, 0, 65, 0, }, /* 633 */ + { 65, 21, 12, 0, 0, 65, 0, }, /* 634 */ + { 75, 10, 5, 0, 0, 75, 0, }, /* 635 */ + { 75, 7, 12, 0, 0, 75, 0, }, /* 636 */ + { 75, 12, 3, 0, 0, 75, 0, }, /* 637 */ + { 75, 21, 12, 0, 0, 75, 0, }, /* 638 */ + { 75, 13, 12, 0, 0, 75, 0, }, /* 639 */ + { 15, 12, 3, 0, 0, -16, 0, }, /* 640 */ + { 15, 7, 12, 0, 0, -49, 0, }, /* 641 */ + { 69, 13, 12, 0, 0, 69, 0, }, /* 642 */ + { 69, 7, 12, 0, 0, 69, 0, }, /* 643 */ + { 69, 12, 3, 0, 0, 69, 0, }, /* 644 */ + { 10, 21, 12, 0, 0, -118, 0, }, /* 645 */ + { 69, 21, 12, 0, 0, 69, 0, }, /* 646 */ + { 74, 7, 12, 0, 0, 74, 0, }, /* 647 */ + { 74, 12, 3, 0, 0, 74, 0, }, /* 648 */ + { 74, 10, 5, 0, 0, 74, 0, }, /* 649 */ + { 74, 21, 12, 0, 0, 74, 0, }, /* 650 */ + { 84, 12, 3, 0, 0, 84, 0, }, /* 651 */ + { 84, 10, 5, 0, 0, 84, 0, }, /* 652 */ + { 84, 7, 12, 0, 0, 84, 0, }, /* 653 */ + { 84, 21, 12, 0, 0, 84, 0, }, /* 654 */ + { 10, 6, 12, 0, 0, -22, 0, }, /* 655 */ + { 84, 13, 12, 0, 0, 84, 0, }, /* 656 */ + { 39, 6, 12, 0, 0, 39, 0, }, /* 657 */ + { 68, 7, 12, 0, 0, 68, 0, }, /* 658 */ + { 68, 12, 3, 0, 0, 68, 0, }, /* 659 */ + { 68, 10, 5, 0, 0, 68, 0, }, /* 660 */ + { 68, 13, 12, 0, 0, 68, 0, }, /* 661 */ + { 68, 21, 12, 0, 0, 68, 0, }, /* 662 */ + { 92, 7, 12, 0, 0, 92, 0, }, /* 663 */ + { 92, 12, 3, 0, 0, 92, 0, }, /* 664 */ + { 92, 6, 12, 0, 0, 92, 0, }, /* 665 */ + { 92, 21, 12, 0, 0, 92, 0, }, /* 666 */ + { 87, 7, 12, 0, 0, 87, 0, }, /* 667 */ + { 87, 10, 5, 0, 0, 87, 0, }, /* 668 */ + { 87, 12, 3, 0, 0, 87, 0, }, /* 669 */ + { 87, 21, 12, 0, 0, 87, 0, }, /* 670 */ + { 87, 6, 12, 0, 0, 87, 0, }, /* 671 */ + { 34, 5, 12, 0, -928, 34, 0, }, /* 672 */ + { 9, 5, 12, 0, -38864, 9, 0, }, /* 673 */ + { 87, 13, 12, 0, 0, 87, 0, }, /* 674 */ + { 24, 7, 9, 0, 0, 24, 0, }, /* 675 */ + { 24, 7, 10, 0, 0, 24, 0, }, /* 676 */ + { 0, 4, 12, 0, 0, 0, 0, }, /* 677 */ + { 0, 3, 12, 0, 0, 0, 0, }, /* 678 */ + { 26, 25, 12, 0, 0, 26, 0, }, /* 679 */ + { 10, 18, 12, 0, 0, -7, 0, }, /* 680 */ + { 10, 22, 12, 0, 0, -7, 0, }, /* 681 */ + { 1, 7, 12, 0, 0, -13, 0, }, /* 682 */ + { 1, 26, 12, 0, 0, -13, 0, }, /* 683 */ + { 10, 6, 3, 0, 0, -67, 0, }, /* 684 */ + { 36, 7, 12, 0, 0, 36, 0, }, /* 685 */ + { 10, 21, 12, 0, 0, -98, 0, }, /* 686 */ + { 10, 21, 12, 0, 0, -25, 0, }, /* 687 */ + { 10, 15, 12, 0, 0, -102, 0, }, /* 688 */ + { 10, 26, 12, 0, 0, -25, 0, }, /* 689 */ + { 20, 14, 12, 0, 0, 20, 0, }, /* 690 */ + { 20, 15, 12, 0, 0, 20, 0, }, /* 691 */ + { 20, 26, 12, 0, 0, 20, 0, }, /* 692 */ + { 71, 7, 12, 0, 0, 71, 0, }, /* 693 */ + { 67, 7, 12, 0, 0, 67, 0, }, /* 694 */ + { 28, 12, 3, 0, 0, -1, 0, }, /* 695 */ + { 10, 15, 12, 0, 0, -1, 0, }, /* 696 */ + { 42, 7, 12, 0, 0, 42, 0, }, /* 697 */ + { 42, 15, 12, 0, 0, 42, 0, }, /* 698 */ + { 19, 7, 12, 0, 0, 19, 0, }, /* 699 */ + { 19, 14, 12, 0, 0, 19, 0, }, /* 700 */ + { 118, 7, 12, 0, 0, 118, 0, }, /* 701 */ + { 118, 12, 3, 0, 0, 118, 0, }, /* 702 */ + { 60, 7, 12, 0, 0, 60, 0, }, /* 703 */ + { 60, 21, 12, 0, 0, 60, 0, }, /* 704 */ + { 43, 7, 12, 0, 0, 43, 0, }, /* 705 */ + { 43, 21, 12, 0, 0, 43, 0, }, /* 706 */ + { 43, 14, 12, 0, 0, 43, 0, }, /* 707 */ + { 14, 9, 12, 0, 40, 14, 0, }, /* 708 */ + { 14, 5, 12, 0, -40, 14, 0, }, /* 709 */ + { 47, 7, 12, 0, 0, 47, 0, }, /* 710 */ + { 45, 7, 12, 0, 0, 45, 0, }, /* 711 */ + { 45, 13, 12, 0, 0, 45, 0, }, /* 712 */ + { 136, 9, 12, 0, 40, 136, 0, }, /* 713 */ + { 136, 5, 12, 0, -40, 136, 0, }, /* 714 */ + { 106, 7, 12, 0, 0, 106, 0, }, /* 715 */ + { 104, 7, 12, 0, 0, 104, 0, }, /* 716 */ + { 104, 21, 12, 0, 0, 104, 0, }, /* 717 */ + { 161, 9, 12, 0, 39, 161, 0, }, /* 718 */ + { 161, 5, 12, 0, -39, 161, 0, }, /* 719 */ + { 110, 7, 12, 0, 0, 110, 0, }, /* 720 */ + { 12, 7, 12, 0, 0, 12, 0, }, /* 721 */ + { 81, 7, 12, 0, 0, 81, 0, }, /* 722 */ + { 81, 21, 12, 0, 0, 81, 0, }, /* 723 */ + { 81, 15, 12, 0, 0, 81, 0, }, /* 724 */ + { 120, 7, 12, 0, 0, 120, 0, }, /* 725 */ + { 120, 26, 12, 0, 0, 120, 0, }, /* 726 */ + { 120, 15, 12, 0, 0, 120, 0, }, /* 727 */ + { 116, 7, 12, 0, 0, 116, 0, }, /* 728 */ + { 116, 15, 12, 0, 0, 116, 0, }, /* 729 */ + { 128, 7, 12, 0, 0, 128, 0, }, /* 730 */ + { 128, 15, 12, 0, 0, 128, 0, }, /* 731 */ + { 66, 7, 12, 0, 0, 66, 0, }, /* 732 */ + { 66, 15, 12, 0, 0, 66, 0, }, /* 733 */ + { 66, 21, 12, 0, 0, 66, 0, }, /* 734 */ + { 72, 7, 12, 0, 0, 72, 0, }, /* 735 */ + { 72, 21, 12, 0, 0, 72, 0, }, /* 736 */ + { 98, 7, 12, 0, 0, 98, 0, }, /* 737 */ + { 97, 7, 12, 0, 0, 97, 0, }, /* 738 */ + { 97, 15, 12, 0, 0, 97, 0, }, /* 739 */ + { 31, 7, 12, 0, 0, 31, 0, }, /* 740 */ + { 31, 12, 3, 0, 0, 31, 0, }, /* 741 */ + { 31, 15, 12, 0, 0, 31, 0, }, /* 742 */ + { 31, 21, 12, 0, 0, 31, 0, }, /* 743 */ + { 88, 7, 12, 0, 0, 88, 0, }, /* 744 */ + { 88, 15, 12, 0, 0, 88, 0, }, /* 745 */ + { 88, 21, 12, 0, 0, 88, 0, }, /* 746 */ + { 117, 7, 12, 0, 0, 117, 0, }, /* 747 */ + { 117, 15, 12, 0, 0, 117, 0, }, /* 748 */ + { 112, 7, 12, 0, 0, 112, 0, }, /* 749 */ + { 112, 26, 12, 0, 0, 112, 0, }, /* 750 */ + { 112, 12, 3, 0, 0, 112, 0, }, /* 751 */ + { 112, 15, 12, 0, 0, 112, 0, }, /* 752 */ + { 112, 21, 12, 0, 0, 112, 0, }, /* 753 */ + { 112, 21, 12, 0, 0, -76, 0, }, /* 754 */ + { 78, 7, 12, 0, 0, 78, 0, }, /* 755 */ + { 78, 21, 12, 0, 0, 78, 0, }, /* 756 */ + { 83, 7, 12, 0, 0, 83, 0, }, /* 757 */ + { 83, 15, 12, 0, 0, 83, 0, }, /* 758 */ + { 82, 7, 12, 0, 0, 82, 0, }, /* 759 */ + { 82, 15, 12, 0, 0, 82, 0, }, /* 760 */ + { 121, 7, 12, 0, 0, 121, 0, }, /* 761 */ + { 121, 21, 12, 0, 0, 121, 0, }, /* 762 */ + { 121, 15, 12, 0, 0, 121, 0, }, /* 763 */ + { 89, 7, 12, 0, 0, 89, 0, }, /* 764 */ + { 130, 9, 12, 0, 64, 130, 0, }, /* 765 */ + { 130, 5, 12, 0, -64, 130, 0, }, /* 766 */ + { 130, 15, 12, 0, 0, 130, 0, }, /* 767 */ + { 144, 7, 12, 0, 0, 144, 0, }, /* 768 */ + { 144, 12, 3, 0, 0, 144, 0, }, /* 769 */ + { 144, 13, 12, 0, 0, 144, 0, }, /* 770 */ + { 1, 15, 12, 0, 0, 1, 0, }, /* 771 */ + { 156, 7, 12, 0, 0, 156, 0, }, /* 772 */ + { 156, 12, 3, 0, 0, 156, 0, }, /* 773 */ + { 156, 17, 12, 0, 0, 156, 0, }, /* 774 */ + { 147, 7, 12, 0, 0, 147, 0, }, /* 775 */ + { 147, 15, 12, 0, 0, 147, 0, }, /* 776 */ + { 148, 7, 12, 0, 0, 148, 0, }, /* 777 */ + { 148, 12, 3, 0, 0, 148, 0, }, /* 778 */ + { 148, 15, 12, 0, 0, 148, 0, }, /* 779 */ + { 148, 21, 12, 0, 0, 148, 0, }, /* 780 */ + { 158, 7, 12, 0, 0, 158, 0, }, /* 781 */ + { 158, 12, 3, 0, 0, 158, 0, }, /* 782 */ + { 158, 21, 12, 0, 0, 158, 0, }, /* 783 */ + { 153, 7, 12, 0, 0, 153, 0, }, /* 784 */ + { 153, 15, 12, 0, 0, 153, 0, }, /* 785 */ + { 149, 7, 12, 0, 0, 149, 0, }, /* 786 */ + { 94, 10, 5, 0, 0, 94, 0, }, /* 787 */ + { 94, 12, 3, 0, 0, 94, 0, }, /* 788 */ + { 94, 7, 12, 0, 0, 94, 0, }, /* 789 */ + { 94, 21, 12, 0, 0, 94, 0, }, /* 790 */ + { 94, 15, 12, 0, 0, 94, 0, }, /* 791 */ + { 94, 13, 12, 0, 0, 94, 0, }, /* 792 */ + { 85, 12, 3, 0, 0, 85, 0, }, /* 793 */ + { 85, 10, 5, 0, 0, 85, 0, }, /* 794 */ + { 85, 7, 12, 0, 0, 85, 0, }, /* 795 */ + { 85, 21, 12, 0, 0, 85, 0, }, /* 796 */ + { 85, 1, 4, 0, 0, 85, 0, }, /* 797 */ + { 101, 7, 12, 0, 0, 101, 0, }, /* 798 */ + { 101, 13, 12, 0, 0, 101, 0, }, /* 799 */ + { 96, 12, 3, 0, 0, 96, 0, }, /* 800 */ + { 96, 7, 12, 0, 0, 96, 0, }, /* 801 */ + { 96, 10, 5, 0, 0, 96, 0, }, /* 802 */ + { 96, 13, 12, 0, 0, 96, 0, }, /* 803 */ + { 96, 21, 12, 0, 0, 96, 0, }, /* 804 */ + { 111, 7, 12, 0, 0, 111, 0, }, /* 805 */ + { 111, 12, 3, 0, 0, 111, 0, }, /* 806 */ + { 111, 21, 12, 0, 0, 111, 0, }, /* 807 */ + { 100, 12, 3, 0, 0, 100, 0, }, /* 808 */ + { 100, 10, 5, 0, 0, 100, 0, }, /* 809 */ + { 100, 7, 12, 0, 0, 100, 0, }, /* 810 */ + { 100, 7, 4, 0, 0, 100, 0, }, /* 811 */ + { 100, 21, 12, 0, 0, 100, 0, }, /* 812 */ + { 100, 13, 12, 0, 0, 100, 0, }, /* 813 */ + { 48, 15, 12, 0, 0, 48, 0, }, /* 814 */ + { 108, 7, 12, 0, 0, 108, 0, }, /* 815 */ + { 108, 10, 5, 0, 0, 108, 0, }, /* 816 */ + { 108, 12, 3, 0, 0, 108, 0, }, /* 817 */ + { 108, 21, 12, 0, 0, 108, 0, }, /* 818 */ + { 129, 7, 12, 0, 0, 129, 0, }, /* 819 */ + { 129, 21, 12, 0, 0, 129, 0, }, /* 820 */ + { 109, 7, 12, 0, 0, 109, 0, }, /* 821 */ + { 109, 12, 3, 0, 0, 109, 0, }, /* 822 */ + { 109, 10, 5, 0, 0, 109, 0, }, /* 823 */ + { 109, 13, 12, 0, 0, 109, 0, }, /* 824 */ + { 107, 12, 3, 0, 0, 107, 0, }, /* 825 */ + { 107, 12, 3, 0, 0, -55, 0, }, /* 826 */ + { 107, 10, 5, 0, 0, 107, 0, }, /* 827 */ + { 107, 10, 5, 0, 0, -55, 0, }, /* 828 */ + { 107, 7, 12, 0, 0, 107, 0, }, /* 829 */ + { 28, 12, 3, 0, 0, -55, 0, }, /* 830 */ + { 107, 10, 3, 0, 0, 107, 0, }, /* 831 */ + { 135, 7, 12, 0, 0, 135, 0, }, /* 832 */ + { 135, 10, 5, 0, 0, 135, 0, }, /* 833 */ + { 135, 12, 3, 0, 0, 135, 0, }, /* 834 */ + { 135, 21, 12, 0, 0, 135, 0, }, /* 835 */ + { 135, 13, 12, 0, 0, 135, 0, }, /* 836 */ + { 124, 7, 12, 0, 0, 124, 0, }, /* 837 */ + { 124, 10, 3, 0, 0, 124, 0, }, /* 838 */ + { 124, 10, 5, 0, 0, 124, 0, }, /* 839 */ + { 124, 12, 3, 0, 0, 124, 0, }, /* 840 */ + { 124, 21, 12, 0, 0, 124, 0, }, /* 841 */ + { 124, 13, 12, 0, 0, 124, 0, }, /* 842 */ + { 123, 7, 12, 0, 0, 123, 0, }, /* 843 */ + { 123, 10, 3, 0, 0, 123, 0, }, /* 844 */ + { 123, 10, 5, 0, 0, 123, 0, }, /* 845 */ + { 123, 12, 3, 0, 0, 123, 0, }, /* 846 */ + { 123, 21, 12, 0, 0, 123, 0, }, /* 847 */ + { 114, 7, 12, 0, 0, 114, 0, }, /* 848 */ + { 114, 10, 5, 0, 0, 114, 0, }, /* 849 */ + { 114, 12, 3, 0, 0, 114, 0, }, /* 850 */ + { 114, 21, 12, 0, 0, 114, 0, }, /* 851 */ + { 114, 13, 12, 0, 0, 114, 0, }, /* 852 */ + { 102, 7, 12, 0, 0, 102, 0, }, /* 853 */ + { 102, 12, 3, 0, 0, 102, 0, }, /* 854 */ + { 102, 10, 5, 0, 0, 102, 0, }, /* 855 */ + { 102, 21, 12, 0, 0, 102, 0, }, /* 856 */ + { 102, 13, 12, 0, 0, 102, 0, }, /* 857 */ + { 126, 7, 12, 0, 0, 126, 0, }, /* 858 */ + { 126, 12, 3, 0, 0, 126, 0, }, /* 859 */ + { 126, 10, 12, 0, 0, 126, 0, }, /* 860 */ + { 126, 10, 5, 0, 0, 126, 0, }, /* 861 */ + { 126, 13, 12, 0, 0, 126, 0, }, /* 862 */ + { 126, 15, 12, 0, 0, 126, 0, }, /* 863 */ + { 126, 21, 12, 0, 0, 126, 0, }, /* 864 */ + { 126, 26, 12, 0, 0, 126, 0, }, /* 865 */ + { 142, 7, 12, 0, 0, 142, 0, }, /* 866 */ + { 142, 10, 5, 0, 0, 142, 0, }, /* 867 */ + { 142, 12, 3, 0, 0, 142, 0, }, /* 868 */ + { 142, 21, 12, 0, 0, 142, 0, }, /* 869 */ + { 125, 9, 12, 0, 32, 125, 0, }, /* 870 */ + { 125, 5, 12, 0, -32, 125, 0, }, /* 871 */ + { 125, 13, 12, 0, 0, 125, 0, }, /* 872 */ + { 125, 15, 12, 0, 0, 125, 0, }, /* 873 */ + { 125, 7, 12, 0, 0, 125, 0, }, /* 874 */ + { 154, 7, 12, 0, 0, 154, 0, }, /* 875 */ + { 154, 10, 3, 0, 0, 154, 0, }, /* 876 */ + { 154, 10, 5, 0, 0, 154, 0, }, /* 877 */ + { 154, 12, 3, 0, 0, 154, 0, }, /* 878 */ + { 154, 7, 4, 0, 0, 154, 0, }, /* 879 */ + { 154, 21, 12, 0, 0, 154, 0, }, /* 880 */ + { 154, 13, 12, 0, 0, 154, 0, }, /* 881 */ + { 150, 7, 12, 0, 0, 150, 0, }, /* 882 */ + { 150, 10, 5, 0, 0, 150, 0, }, /* 883 */ + { 150, 12, 3, 0, 0, 150, 0, }, /* 884 */ + { 150, 21, 12, 0, 0, 150, 0, }, /* 885 */ + { 141, 7, 12, 0, 0, 141, 0, }, /* 886 */ + { 141, 12, 3, 0, 0, 141, 0, }, /* 887 */ + { 141, 10, 5, 0, 0, 141, 0, }, /* 888 */ + { 141, 7, 4, 0, 0, 141, 0, }, /* 889 */ + { 141, 21, 12, 0, 0, 141, 0, }, /* 890 */ + { 140, 7, 12, 0, 0, 140, 0, }, /* 891 */ + { 140, 12, 3, 0, 0, 140, 0, }, /* 892 */ + { 140, 10, 5, 0, 0, 140, 0, }, /* 893 */ + { 140, 7, 4, 0, 0, 140, 0, }, /* 894 */ + { 140, 21, 12, 0, 0, 140, 0, }, /* 895 */ + { 122, 7, 12, 0, 0, 122, 0, }, /* 896 */ + { 133, 7, 12, 0, 0, 133, 0, }, /* 897 */ + { 133, 10, 5, 0, 0, 133, 0, }, /* 898 */ + { 133, 12, 3, 0, 0, 133, 0, }, /* 899 */ + { 133, 21, 12, 0, 0, 133, 0, }, /* 900 */ + { 133, 13, 12, 0, 0, 133, 0, }, /* 901 */ + { 133, 15, 12, 0, 0, 133, 0, }, /* 902 */ + { 134, 21, 12, 0, 0, 134, 0, }, /* 903 */ + { 134, 7, 12, 0, 0, 134, 0, }, /* 904 */ + { 134, 12, 3, 0, 0, 134, 0, }, /* 905 */ + { 134, 10, 5, 0, 0, 134, 0, }, /* 906 */ + { 138, 7, 12, 0, 0, 138, 0, }, /* 907 */ + { 138, 12, 3, 0, 0, 138, 0, }, /* 908 */ + { 138, 7, 4, 0, 0, 138, 0, }, /* 909 */ + { 138, 13, 12, 0, 0, 138, 0, }, /* 910 */ + { 143, 7, 12, 0, 0, 143, 0, }, /* 911 */ + { 143, 10, 5, 0, 0, 143, 0, }, /* 912 */ + { 143, 12, 3, 0, 0, 143, 0, }, /* 913 */ + { 143, 13, 12, 0, 0, 143, 0, }, /* 914 */ + { 145, 7, 12, 0, 0, 145, 0, }, /* 915 */ + { 145, 12, 3, 0, 0, 145, 0, }, /* 916 */ + { 145, 10, 5, 0, 0, 145, 0, }, /* 917 */ + { 145, 21, 12, 0, 0, 145, 0, }, /* 918 */ + { 54, 15, 12, 0, 0, 54, 0, }, /* 919 */ + { 54, 21, 12, 0, 0, 54, 0, }, /* 920 */ + { 63, 7, 12, 0, 0, 63, 0, }, /* 921 */ + { 63, 14, 12, 0, 0, 63, 0, }, /* 922 */ + { 63, 21, 12, 0, 0, 63, 0, }, /* 923 */ + { 157, 7, 12, 0, 0, 157, 0, }, /* 924 */ + { 157, 21, 12, 0, 0, 157, 0, }, /* 925 */ + { 80, 7, 12, 0, 0, 80, 0, }, /* 926 */ + { 80, 1, 2, 0, 0, 80, 0, }, /* 927 */ + { 127, 7, 12, 0, 0, 127, 0, }, /* 928 */ + { 115, 7, 12, 0, 0, 115, 0, }, /* 929 */ + { 115, 13, 12, 0, 0, 115, 0, }, /* 930 */ + { 115, 21, 12, 0, 0, 115, 0, }, /* 931 */ + { 159, 7, 12, 0, 0, 159, 0, }, /* 932 */ + { 159, 13, 12, 0, 0, 159, 0, }, /* 933 */ + { 103, 7, 12, 0, 0, 103, 0, }, /* 934 */ + { 103, 12, 3, 0, 0, 103, 0, }, /* 935 */ + { 103, 21, 12, 0, 0, 103, 0, }, /* 936 */ + { 119, 7, 12, 0, 0, 119, 0, }, /* 937 */ + { 119, 12, 3, 0, 0, 119, 0, }, /* 938 */ + { 119, 21, 12, 0, 0, 119, 0, }, /* 939 */ + { 119, 26, 12, 0, 0, 119, 0, }, /* 940 */ + { 119, 6, 12, 0, 0, 119, 0, }, /* 941 */ + { 119, 13, 12, 0, 0, 119, 0, }, /* 942 */ + { 119, 15, 12, 0, 0, 119, 0, }, /* 943 */ + { 146, 9, 12, 0, 32, 146, 0, }, /* 944 */ + { 146, 5, 12, 0, -32, 146, 0, }, /* 945 */ + { 146, 15, 12, 0, 0, 146, 0, }, /* 946 */ + { 146, 21, 12, 0, 0, 146, 0, }, /* 947 */ + { 99, 7, 12, 0, 0, 99, 0, }, /* 948 */ + { 99, 12, 3, 0, 0, 99, 0, }, /* 949 */ + { 99, 10, 5, 0, 0, 99, 0, }, /* 950 */ + { 99, 6, 12, 0, 0, 99, 0, }, /* 951 */ + { 137, 6, 12, 0, 0, 137, 0, }, /* 952 */ + { 139, 6, 12, 0, 0, 139, 0, }, /* 953 */ + { 23, 21, 12, 0, 0, 23, 0, }, /* 954 */ + { 155, 12, 3, 0, 0, 155, 0, }, /* 955 */ + { 23, 10, 5, 0, 0, 23, 0, }, /* 956 */ + { 137, 7, 12, 0, 0, 137, 0, }, /* 957 */ + { 155, 7, 12, 0, 0, 155, 0, }, /* 958 */ + { 139, 7, 12, 0, 0, 139, 0, }, /* 959 */ + { 105, 7, 12, 0, 0, 105, 0, }, /* 960 */ + { 105, 26, 12, 0, 0, 105, 0, }, /* 961 */ + { 105, 12, 3, 0, 0, 105, 0, }, /* 962 */ + { 105, 21, 12, 0, 0, 105, 0, }, /* 963 */ + { 10, 1, 2, 0, 0, 105, 0, }, /* 964 */ + { 10, 10, 3, 0, 0, 10, 0, }, /* 965 */ + { 10, 10, 5, 0, 0, 10, 0, }, /* 966 */ + { 20, 12, 3, 0, 0, 20, 0, }, /* 967 */ + { 131, 26, 12, 0, 0, 131, 0, }, /* 968 */ + { 131, 12, 3, 0, 0, 131, 0, }, /* 969 */ + { 131, 21, 12, 0, 0, 131, 0, }, /* 970 */ + { 18, 12, 3, 0, 0, 18, 0, }, /* 971 */ + { 151, 7, 12, 0, 0, 151, 0, }, /* 972 */ + { 151, 12, 3, 0, 0, 151, 0, }, /* 973 */ + { 151, 6, 12, 0, 0, 151, 0, }, /* 974 */ + { 151, 13, 12, 0, 0, 151, 0, }, /* 975 */ + { 151, 26, 12, 0, 0, 151, 0, }, /* 976 */ + { 160, 7, 12, 0, 0, 160, 0, }, /* 977 */ + { 160, 12, 3, 0, 0, 160, 0, }, /* 978 */ + { 152, 7, 12, 0, 0, 152, 0, }, /* 979 */ + { 152, 12, 3, 0, 0, 152, 0, }, /* 980 */ + { 152, 13, 12, 0, 0, 152, 0, }, /* 981 */ + { 152, 23, 12, 0, 0, 152, 0, }, /* 982 */ + { 113, 7, 12, 0, 0, 113, 0, }, /* 983 */ + { 113, 15, 12, 0, 0, 113, 0, }, /* 984 */ + { 113, 12, 3, 0, 0, 113, 0, }, /* 985 */ + { 132, 9, 12, 0, 34, 132, 0, }, /* 986 */ + { 132, 5, 12, 0, -34, 132, 0, }, /* 987 */ + { 132, 12, 3, 0, 0, 132, 0, }, /* 988 */ + { 132, 6, 12, 0, 0, 132, 0, }, /* 989 */ + { 132, 13, 12, 0, 0, 132, 0, }, /* 990 */ + { 132, 21, 12, 0, 0, 132, 0, }, /* 991 */ + { 0, 2, 14, 0, 0, 0, 0, }, /* 992 */ + { 10, 26, 11, 0, 0, 10, 0, }, /* 993 */ + { 27, 26, 12, 0, 0, 27, 0, }, /* 994 */ + { 10, 24, 3, 0, 0, 10, 0, }, /* 995 */ + { 10, 1, 3, 0, 0, 10, 0, }, /* 996 */ }; const uint16_t PRIV(ucd_stage1)[] = { /* 17408 bytes */ @@ -1190,51 +1216,51 @@ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+8000 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+8800 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+9000 */ - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,100, /* U+9800 */ -101,102,102,102,102,102,102,102,102,103,104,104,105,106,107,108, /* U+A000 */ -109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,117, /* U+A800 */ -118,119,120,121,122,123,117,118,119,120,121,122,123,117,118,119, /* U+B000 */ -120,121,122,123,117,118,119,120,121,122,123,117,118,119,120,121, /* U+B800 */ -122,123,117,118,119,120,121,122,123,117,118,119,120,121,122,123, /* U+C000 */ -117,118,119,120,121,122,123,117,118,119,120,121,122,123,117,118, /* U+C800 */ -119,120,121,122,123,117,118,119,120,121,122,123,117,118,119,124, /* U+D000 */ -125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+D800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+E000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+E800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F000 */ -126,126, 98, 98,127,128,129,130,131,131,132,133,134,135,136,137, /* U+F800 */ -138,139,140,141,142,143,144,145,146,147,148,142,149,149,150,142, /* U+10000 */ -151,152,153,154,155,156,157,158,159,160,161,142,162,163,164,165, /* U+10800 */ -166,167,168,169,170,171,172,142,173,174,142,175,176,177,178,142, /* U+11000 */ -179,180,181,182,183,184,142,142,185,186,187,188,142,189,142,190, /* U+11800 */ -191,191,191,191,191,191,191,192,193,191,194,142,142,142,142,142, /* U+12000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+12800 */ -195,195,195,195,195,195,195,195,196,142,142,142,142,142,142,142, /* U+13000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+13800 */ -142,142,142,142,142,142,142,142,197,197,197,197,198,142,142,142, /* U+14000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+14800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+15000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+15800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+16000 */ -199,199,199,199,200,201,202,203,142,142,142,142,204,205,206,207, /* U+16800 */ -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, /* U+17000 */ -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, /* U+17800 */ -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,209, /* U+18000 */ -208,208,208,208,208,208,210,210,210,211,212,142,142,142,142,142, /* U+18800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+19000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+19800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+1A000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+1A800 */ -213,214,215,216,216,217,142,142,142,142,142,142,142,142,142,142, /* U+1B000 */ -142,142,142,142,142,142,142,142,218,219,142,142,142,142,142,142, /* U+1B800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+1C000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+1C800 */ - 71,220,221,222,223,224,225,142,226,227,228,229,230,231,232,233, /* U+1D000 */ -234,234,234,234,235,236,142,142,142,142,142,142,142,142,142,142, /* U+1D800 */ -237,142,238,142,142,239,142,142,142,142,142,142,142,142,142,142, /* U+1E000 */ -240,241,242,142,142,142,142,142,243,244,245,142,246,247,142,142, /* U+1E800 */ -248,249,250,251,252,253,254,255,254,254,256,254,257,258,259,260, /* U+1F000 */ -261,262,263,264,265,266, 71,267,253,253,253,253,253,253,253,268, /* U+1F800 */ + 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+9800 */ +100,101,101,101,101,101,101,101,101,102,103,103,104,105,106,107, /* U+A000 */ +108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,116, /* U+A800 */ +117,118,119,120,121,122,116,117,118,119,120,121,122,116,117,118, /* U+B000 */ +119,120,121,122,116,117,118,119,120,121,122,116,117,118,119,120, /* U+B800 */ +121,122,116,117,118,119,120,121,122,116,117,118,119,120,121,122, /* U+C000 */ +116,117,118,119,120,121,122,116,117,118,119,120,121,122,116,117, /* U+C800 */ +118,119,120,121,122,116,117,118,119,120,121,122,116,117,118,123, /* U+D000 */ +124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, /* U+D800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+E000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+E800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F000 */ +125,125, 98, 98,126,127,128,129,130,130,131,132,133,134,135,136, /* U+F800 */ +137,138,139,140,141,142,143,144,145,146,147,148,149,149,150,151, /* U+10000 */ +152,153,154,155,156,157,158,159,160,161,162,141,163,164,165,166, /* U+10800 */ +167,168,169,170,171,172,173,141,174,175,141,176,177,178,179,141, /* U+11000 */ +180,181,182,183,184,185,141,141,186,187,188,189,141,190,141,191, /* U+11800 */ +192,192,192,192,192,192,192,193,194,192,195,141,141,141,141,141, /* U+12000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,196, /* U+12800 */ +197,197,197,197,197,197,197,197,198,141,141,141,141,141,141,141, /* U+13000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+13800 */ +141,141,141,141,141,141,141,141,199,199,199,199,200,141,141,141, /* U+14000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+14800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+15000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+15800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+16000 */ +201,201,201,201,202,203,204,205,141,141,141,141,206,207,208,209, /* U+16800 */ +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, /* U+17000 */ +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, /* U+17800 */ +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,211, /* U+18000 */ +210,210,210,210,210,210,212,212,212,213,214,141,141,141,141,141, /* U+18800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+19000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+19800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+1A000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,215, /* U+1A800 */ +216,217,218,219,219,220,141,141,141,141,141,141,141,141,141,141, /* U+1B000 */ +141,141,141,141,141,141,141,141,221,222,141,141,141,141,141,141, /* U+1B800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+1C000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,223,224, /* U+1C800 */ + 71,225,226,227,228,229,230,141,231,232,233,234,235,236,237,238, /* U+1D000 */ +239,239,239,239,240,241,141,141,141,141,141,141,141,141,242,141, /* U+1D800 */ +243,141,244,141,141,245,141,141,141,141,141,141,141,141,141,246, /* U+1E000 */ +247,248,249,141,141,141,141,141,250,251,252,141,253,254,141,141, /* U+1E800 */ +255,256,257,258,259,260,261,262,261,261,263,261,264,265,266,267, /* U+1F000 */ +268,269,270,261,271,272, 71,273,260,260,260,260,260,260,260,274, /* U+1F800 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+20000 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+20800 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+21000 */ @@ -1255,469 +1281,469 @@ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+28800 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+29000 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+29800 */ - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,269, 98, 98, /* U+2A000 */ + 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,275, 98, 98, /* U+2A000 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+2A800 */ - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,270, 98, /* U+2B000 */ -271, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+2B800 */ + 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,276, 98, /* U+2B000 */ +277, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+2B800 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+2C000 */ - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,272, 98, 98, /* U+2C800 */ + 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,278, 98, 98, /* U+2C800 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+2D000 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+2D800 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+2E000 */ - 98, 98, 98, 98, 98, 98, 98,273,142,142,142,142,142,142,142,142, /* U+2E800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+2F000 */ - 98, 98, 98, 98,274,142,142,142,142,142,142,142,142,142,142,142, /* U+2F800 */ + 98, 98, 98, 98, 98, 98, 98,279,141,141,141,141,141,141,141,141, /* U+2E800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+2F000 */ + 98, 98, 98, 98,280,141,141,141,141,141,141,141,141,141,141,141, /* U+2F800 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+30000 */ 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, /* U+30800 */ - 98, 98, 98, 98, 98, 98,275,142,142,142,142,142,142,142,142,142, /* U+31000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+31800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+32000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+32800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+33000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+33800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+34000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+34800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+35000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+35800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+36000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+36800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+37000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+37800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+38000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+38800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+39000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+39800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+3A000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+3A800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+3B000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+3B800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+3C000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+3C800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+3D000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+3D800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+3E000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+3E800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+3F000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+3F800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+40000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+40800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+41000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+41800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+42000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+42800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+43000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+43800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+44000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+44800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+45000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+45800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+46000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+46800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+47000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+47800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+48000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+48800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+49000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+49800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+4A000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+4A800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+4B000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+4B800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+4C000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+4C800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+4D000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+4D800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+4E000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+4E800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+4F000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+4F800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+50000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+50800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+51000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+51800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+52000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+52800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+53000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+53800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+54000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+54800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+55000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+55800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+56000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+56800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+57000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+57800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+58000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+58800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+59000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+59800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+5A000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+5A800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+5B000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+5B800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+5C000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+5C800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+5D000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+5D800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+5E000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+5E800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+5F000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+5F800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+60000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+60800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+61000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+61800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+62000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+62800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+63000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+63800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+64000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+64800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+65000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+65800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+66000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+66800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+67000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+67800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+68000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+68800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+69000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+69800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+6A000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+6A800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+6B000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+6B800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+6C000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+6C800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+6D000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+6D800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+6E000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+6E800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+6F000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+6F800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+70000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+70800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+71000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+71800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+72000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+72800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+73000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+73800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+74000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+74800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+75000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+75800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+76000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+76800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+77000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+77800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+78000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+78800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+79000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+79800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+7A000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+7A800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+7B000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+7B800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+7C000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+7C800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+7D000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+7D800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+7E000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+7E800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+7F000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+7F800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+80000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+80800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+81000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+81800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+82000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+82800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+83000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+83800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+84000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+84800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+85000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+85800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+86000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+86800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+87000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+87800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+88000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+88800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+89000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+89800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+8A000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+8A800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+8B000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+8B800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+8C000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+8C800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+8D000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+8D800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+8E000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+8E800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+8F000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+8F800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+90000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+90800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+91000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+91800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+92000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+92800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+93000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+93800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+94000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+94800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+95000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+95800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+96000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+96800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+97000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+97800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+98000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+98800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+99000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+99800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+9A000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+9A800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+9B000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+9B800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+9C000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+9C800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+9D000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+9D800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+9E000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+9E800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+9F000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+9F800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A0000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A0800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A1000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A1800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A2000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A2800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A3000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A3800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A4000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A4800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A5000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A5800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A6000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A6800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A7000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A7800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A8000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A8800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A9000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+A9800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+AA000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+AA800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+AB000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+AB800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+AC000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+AC800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+AD000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+AD800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+AE000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+AE800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+AF000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+AF800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B0000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B0800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B1000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B1800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B2000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B2800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B3000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B3800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B4000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B4800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B5000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B5800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B6000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B6800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B7000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B7800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B8000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B8800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B9000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+B9800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+BA000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+BA800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+BB000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+BB800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+BC000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+BC800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+BD000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+BD800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+BE000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+BE800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+BF000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+BF800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C0000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C0800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C1000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C1800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C2000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C2800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C3000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C3800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C4000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C4800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C5000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C5800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C6000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C6800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C7000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C7800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C8000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C8800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C9000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+C9800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+CA000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+CA800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+CB000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+CB800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+CC000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+CC800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+CD000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+CD800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+CE000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+CE800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+CF000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+CF800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D0000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D0800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D1000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D1800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D2000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D2800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D3000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D3800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D4000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D4800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D5000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D5800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D6000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D6800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D7000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D7800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D8000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D8800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D9000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+D9800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+DA000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+DA800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+DB000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+DB800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+DC000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+DC800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+DD000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+DD800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+DE000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+DE800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+DF000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+DF800 */ -276,277,278,279,277,277,277,277,277,277,277,277,277,277,277,277, /* U+E0000 */ -277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277, /* U+E0800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E1000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E1800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E2000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E2800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E3000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E3800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E4000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E4800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E5000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E5800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E6000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E6800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E7000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E7800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E8000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E8800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E9000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+E9800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+EA000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+EA800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+EB000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+EB800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+EC000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+EC800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+ED000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+ED800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+EE000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+EE800 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+EF000 */ -142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, /* U+EF800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F0000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F0800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F1000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F1800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F2000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F2800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F3000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F3800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F4000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F4800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F5000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F5800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F6000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F6800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F7000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F7800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F8000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F8800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F9000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+F9800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+FA000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+FA800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+FB000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+FB800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+FC000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+FC800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+FD000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+FD800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+FE000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+FE800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+FF000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,280, /* U+FF800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+100000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+100800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+101000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+101800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+102000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+102800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+103000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+103800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+104000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+104800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+105000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+105800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+106000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+106800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+107000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+107800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+108000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+108800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+109000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+109800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+10A000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+10A800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+10B000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+10B800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+10C000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+10C800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+10D000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+10D800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+10E000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+10E800 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,126, /* U+10F000 */ -126,126,126,126,126,126,126,126,126,126,126,126,126,126,126,280, /* U+10F800 */ + 98, 98, 98, 98, 98, 98,281,141,141,141,141,141,141,141,141,141, /* U+31000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+31800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+32000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+32800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+33000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+33800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+34000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+34800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+35000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+35800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+36000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+36800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+37000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+37800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+38000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+38800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+39000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+39800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+3A000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+3A800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+3B000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+3B800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+3C000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+3C800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+3D000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+3D800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+3E000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+3E800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+3F000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+3F800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+40000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+40800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+41000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+41800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+42000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+42800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+43000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+43800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+44000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+44800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+45000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+45800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+46000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+46800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+47000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+47800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+48000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+48800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+49000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+49800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+4A000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+4A800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+4B000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+4B800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+4C000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+4C800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+4D000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+4D800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+4E000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+4E800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+4F000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+4F800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+50000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+50800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+51000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+51800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+52000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+52800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+53000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+53800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+54000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+54800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+55000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+55800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+56000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+56800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+57000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+57800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+58000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+58800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+59000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+59800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+5A000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+5A800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+5B000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+5B800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+5C000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+5C800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+5D000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+5D800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+5E000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+5E800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+5F000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+5F800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+60000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+60800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+61000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+61800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+62000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+62800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+63000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+63800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+64000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+64800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+65000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+65800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+66000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+66800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+67000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+67800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+68000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+68800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+69000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+69800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+6A000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+6A800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+6B000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+6B800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+6C000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+6C800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+6D000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+6D800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+6E000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+6E800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+6F000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+6F800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+70000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+70800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+71000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+71800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+72000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+72800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+73000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+73800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+74000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+74800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+75000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+75800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+76000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+76800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+77000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+77800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+78000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+78800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+79000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+79800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+7A000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+7A800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+7B000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+7B800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+7C000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+7C800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+7D000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+7D800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+7E000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+7E800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+7F000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+7F800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+80000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+80800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+81000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+81800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+82000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+82800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+83000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+83800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+84000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+84800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+85000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+85800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+86000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+86800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+87000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+87800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+88000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+88800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+89000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+89800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+8A000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+8A800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+8B000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+8B800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+8C000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+8C800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+8D000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+8D800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+8E000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+8E800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+8F000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+8F800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+90000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+90800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+91000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+91800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+92000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+92800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+93000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+93800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+94000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+94800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+95000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+95800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+96000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+96800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+97000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+97800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+98000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+98800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+99000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+99800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+9A000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+9A800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+9B000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+9B800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+9C000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+9C800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+9D000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+9D800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+9E000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+9E800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+9F000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+9F800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A0000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A0800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A1000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A1800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A2000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A2800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A3000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A3800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A4000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A4800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A5000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A5800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A6000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A6800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A7000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A7800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A8000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A8800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A9000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+A9800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+AA000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+AA800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+AB000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+AB800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+AC000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+AC800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+AD000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+AD800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+AE000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+AE800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+AF000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+AF800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B0000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B0800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B1000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B1800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B2000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B2800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B3000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B3800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B4000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B4800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B5000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B5800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B6000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B6800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B7000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B7800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B8000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B8800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B9000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+B9800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+BA000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+BA800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+BB000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+BB800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+BC000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+BC800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+BD000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+BD800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+BE000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+BE800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+BF000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+BF800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C0000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C0800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C1000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C1800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C2000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C2800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C3000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C3800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C4000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C4800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C5000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C5800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C6000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C6800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C7000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C7800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C8000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C8800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C9000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+C9800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+CA000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+CA800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+CB000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+CB800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+CC000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+CC800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+CD000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+CD800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+CE000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+CE800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+CF000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+CF800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D0000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D0800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D1000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D1800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D2000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D2800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D3000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D3800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D4000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D4800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D5000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D5800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D6000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D6800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D7000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D7800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D8000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D8800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D9000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+D9800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+DA000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+DA800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+DB000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+DB800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+DC000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+DC800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+DD000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+DD800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+DE000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+DE800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+DF000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+DF800 */ +282,283,284,285,283,283,283,283,283,283,283,283,283,283,283,283, /* U+E0000 */ +283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283, /* U+E0800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E1000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E1800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E2000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E2800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E3000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E3800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E4000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E4800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E5000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E5800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E6000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E6800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E7000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E7800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E8000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E8800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E9000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+E9800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+EA000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+EA800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+EB000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+EB800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+EC000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+EC800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+ED000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+ED800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+EE000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+EE800 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+EF000 */ +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, /* U+EF800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F0000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F0800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F1000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F1800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F2000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F2800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F3000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F3800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F4000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F4800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F5000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F5800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F6000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F6800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F7000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F7800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F8000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F8800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F9000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+F9800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+FA000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+FA800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+FB000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+FB800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+FC000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+FC800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+FD000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+FD800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+FE000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+FE800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+FF000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,286, /* U+FF800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+100000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+100800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+101000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+101800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+102000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+102800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+103000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+103800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+104000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+104800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+105000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+105800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+106000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+106800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+107000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+107800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+108000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+108800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+109000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+109800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+10A000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+10A800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+10B000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+10B800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+10C000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+10C800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+10D000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+10D800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+10E000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+10E800 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, /* U+10F000 */ +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,286, /* U+10F800 */ }; -const uint16_t PRIV(ucd_stage2)[] = { /* 71936 bytes, block = 128 */ +const uint16_t PRIV(ucd_stage2)[] = { /* 73472 bytes, block = 128 */ /* block 0 */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1840,463 +1866,463 @@ /* block 12 */ 215,215,215,215,215,216,217,217,217,218,218,219,220,218,221,221, -222,222,222,222,222,222,222,222,222,222,222,220,223,120,218,220, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -225,224,224,224,224,224,224,224,224,224,224,226,226,226,226,226, -226,226,226,226,226,226,222,222,222,222,222,222,222,222,222,222, -227,227,227,227,227,227,227,227,227,227,218,218,218,218,224,224, -226,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +222,222,222,222,222,222,222,222,222,222,222,220,223,218,218,224, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +226,225,225,225,225,225,225,225,225,225,225,227,227,227,227,227, +227,227,227,227,227,227,222,222,222,222,222,222,222,222,222,222, +228,228,228,228,228,228,228,228,228,228,218,218,218,218,225,225, +227,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, /* block 13 */ -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,228,224,222,222,222,222,222,222,222,216,221,222, -222,222,222,222,222,229,229,222,222,221,222,222,222,222,224,224, -230,230,230,230,230,230,230,230,230,230,224,224,224,221,221,224, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,229,225,222,222,222,222,222,222,222,216,221,222, +222,222,222,222,222,230,230,222,222,221,222,222,222,222,225,225, +231,231,231,231,231,231,231,231,231,231,225,225,225,221,221,225, /* block 14 */ -231,231,231,231,231,231,231,231,231,231,231,231,231,231,120,232, -233,234,233,233,233,233,233,233,233,233,233,233,233,233,233,233, -233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, +232,232,232,232,232,232,232,232,232,232,232,232,232,232,120,233, +234,235,234,234,234,234,234,234,234,234,234,234,234,234,234,234, 234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234, -234,234,234,234,234,234,234,234,234,234,234,120,120,233,233,233, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, +235,235,235,235,235,235,235,235,235,235,235,120,120,234,234,234, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, /* block 15 */ -235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, -235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235, -235,235,235,235,235,235,236,236,236,236,236,236,236,236,236,236, -236,235,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -237,237,237,237,237,237,237,237,237,237,238,238,238,238,238,238, -238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238, -238,238,238,238,238,238,238,238,238,238,238,239,239,239,239,239, -239,239,239,239,240,240,241,242,242,242,240,120,120,239,243,243, +236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236, +236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236, +236,236,236,236,236,236,237,237,237,237,237,237,237,237,237,237, +237,236,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +238,238,238,238,238,238,238,238,238,238,239,239,239,239,239,239, +239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239, +239,239,239,239,239,239,239,239,239,239,239,240,240,240,240,240, +240,240,240,240,241,241,242,243,243,243,241,120,120,240,244,244, /* block 16 */ -244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, -244,244,244,244,244,244,245,245,245,245,246,245,245,245,245,245, -245,245,245,245,246,245,245,245,246,245,245,245,245,245,120,120, -247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,120, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,249,249,249,120,120,250,120, -233,233,233,233,233,233,233,233,233,233,233,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, +245,245,245,245,245,245,246,246,246,246,247,246,246,246,246,246, +246,246,246,246,247,246,246,246,247,246,246,246,246,246,120,120, +248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,120, +249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, +249,249,249,249,249,249,249,249,249,250,250,250,120,120,251,120, +234,234,234,234,234,234,234,234,234,234,234,120,120,120,120,120, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, /* block 17 */ -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,120,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,120,120,120,120,120,120,120,120, -120,120,120,222,222,222,222,222,222,222,222,222,222,222,222,222, +225,225,225,225,225,225,225,225,252,225,225,225,225,225,225,120, +215,215,120,120,120,120,120,120,222,222,222,222,222,222,222,222, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,230,222,222,222,222,222,222, +222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222, 222,222,216,222,222,222,222,222,222,222,222,222,222,222,222,222, 222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222, /* block 18 */ -251,251,251,252,253,253,253,253,253,253,253,253,253,253,253,253, -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, -253,253,253,253,253,253,253,253,253,253,251,252,251,253,252,252, -252,251,251,251,251,251,251,251,251,252,252,252,252,251,252,252, -253,254,255,113,113,251,251,251,253,253,253,253,253,253,253,253, -253,253,251,251,256,257,258,258,258,258,258,258,258,258,258,258, -259,260,253,253,253,253,253,253,253,253,253,253,253,253,253,253, +253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,253,254,253,255,254,254, +254,253,253,253,253,253,253,253,253,254,254,254,254,253,254,254, +255,256,257,113,113,253,253,253,255,255,255,255,255,255,255,255, +255,255,253,253,258,259,260,260,260,260,260,260,260,260,260,260, +261,262,255,255,255,255,255,255,255,255,255,255,255,255,255,255, /* block 19 */ -261,262,263,263,120,261,261,261,261,261,261,261,261,120,120,261, -261,120,120,261,261,261,261,261,261,261,261,261,261,261,261,261, -261,261,261,261,261,261,261,261,261,120,261,261,261,261,261,261, -261,120,261,120,120,120,261,261,261,261,120,120,262,261,264,263, -263,262,262,262,262,120,120,263,263,120,120,263,263,262,261,120, -120,120,120,120,120,120,120,264,120,120,120,120,261,261,120,261, -261,261,262,262,120,120,265,265,265,265,265,265,265,265,265,265, -261,261,266,266,267,267,267,267,267,267,268,266,261,269,262,120, +263,264,265,265,120,263,263,263,263,263,263,263,263,120,120,263, +263,120,120,263,263,263,263,263,263,263,263,263,263,263,263,263, +263,263,263,263,263,263,263,263,263,120,263,263,263,263,263,263, +263,120,263,120,120,120,263,263,263,263,120,120,264,263,266,265, +265,264,264,264,264,120,120,265,265,120,120,265,265,264,263,120, +120,120,120,120,120,120,120,266,120,120,120,120,263,263,120,263, +263,263,264,264,120,120,267,267,267,267,267,267,267,267,267,267, +263,263,268,268,269,269,269,269,269,269,270,268,263,271,264,120, /* block 20 */ -120,270,270,271,120,272,272,272,272,272,272,120,120,120,120,272, -272,120,120,272,272,272,272,272,272,272,272,272,272,272,272,272, -272,272,272,272,272,272,272,272,272,120,272,272,272,272,272,272, -272,120,272,272,120,272,272,120,272,272,120,120,270,120,271,271, -271,270,270,120,120,120,120,270,270,120,120,270,270,270,120,120, -120,270,120,120,120,120,120,120,120,272,272,272,272,120,272,120, -120,120,120,120,120,120,273,273,273,273,273,273,273,273,273,273, -270,270,272,272,272,270,274,120,120,120,120,120,120,120,120,120, +120,272,272,273,120,274,274,274,274,274,274,120,120,120,120,274, +274,120,120,274,274,274,274,274,274,274,274,274,274,274,274,274, +274,274,274,274,274,274,274,274,274,120,274,274,274,274,274,274, +274,120,274,274,120,274,274,120,274,274,120,120,272,120,273,273, +273,272,272,120,120,120,120,272,272,120,120,272,272,272,120,120, +120,272,120,120,120,120,120,120,120,274,274,274,274,120,274,120, +120,120,120,120,120,120,275,275,275,275,275,275,275,275,275,275, +272,272,274,274,274,272,276,120,120,120,120,120,120,120,120,120, /* block 21 */ -120,275,275,276,120,277,277,277,277,277,277,277,277,277,120,277, -277,277,120,277,277,277,277,277,277,277,277,277,277,277,277,277, -277,277,277,277,277,277,277,277,277,120,277,277,277,277,277,277, -277,120,277,277,120,277,277,277,277,277,120,120,275,277,276,276, -276,275,275,275,275,275,120,275,275,276,120,276,276,275,120,120, -277,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -277,277,275,275,120,120,278,278,278,278,278,278,278,278,278,278, -279,280,120,120,120,120,120,120,120,277,275,275,275,275,275,275, +120,277,277,278,120,279,279,279,279,279,279,279,279,279,120,279, +279,279,120,279,279,279,279,279,279,279,279,279,279,279,279,279, +279,279,279,279,279,279,279,279,279,120,279,279,279,279,279,279, +279,120,279,279,120,279,279,279,279,279,120,120,277,279,278,278, +278,277,277,277,277,277,120,277,277,278,120,278,278,277,120,120, +279,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +279,279,277,277,120,120,280,280,280,280,280,280,280,280,280,280, +281,282,120,120,120,120,120,120,120,279,277,277,277,277,277,277, /* block 22 */ -120,281,282,282,120,283,283,283,283,283,283,283,283,120,120,283, -283,120,120,283,283,283,283,283,283,283,283,283,283,283,283,283, -283,283,283,283,283,283,283,283,283,120,283,283,283,283,283,283, -283,120,283,283,120,283,283,283,283,283,120,120,281,283,284,281, -282,281,281,281,281,120,120,282,282,120,120,282,282,281,120,120, -120,120,120,120,120,281,281,284,120,120,120,120,283,283,120,283, -283,283,281,281,120,120,285,285,285,285,285,285,285,285,285,285, -286,283,287,287,287,287,287,287,120,120,120,120,120,120,120,120, +120,283,284,284,120,285,285,285,285,285,285,285,285,120,120,285, +285,120,120,285,285,285,285,285,285,285,285,285,285,285,285,285, +285,285,285,285,285,285,285,285,285,120,285,285,285,285,285,285, +285,120,285,285,120,285,285,285,285,285,120,120,283,285,286,283, +284,283,283,283,283,120,120,284,284,120,120,284,284,283,120,120, +120,120,120,120,120,283,283,286,120,120,120,120,285,285,120,285, +285,285,283,283,120,120,287,287,287,287,287,287,287,287,287,287, +288,285,289,289,289,289,289,289,120,120,120,120,120,120,120,120, /* block 23 */ -120,120,288,289,120,289,289,289,289,289,289,120,120,120,289,289, -289,120,289,289,289,289,120,120,120,289,289,120,289,120,289,289, -120,120,120,289,289,120,120,120,289,289,289,120,120,120,289,289, -289,289,289,289,289,289,289,289,289,289,120,120,120,120,290,291, -288,291,291,120,120,120,291,291,291,120,291,291,291,288,120,120, -289,120,120,120,120,120,120,290,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,292,292,292,292,292,292,292,292,292,292, -293,293,293,294,295,295,295,295,295,296,295,120,120,120,120,120, +120,120,290,291,120,291,291,291,291,291,291,120,120,120,291,291, +291,120,291,291,291,291,120,120,120,291,291,120,291,120,291,291, +120,120,120,291,291,120,120,120,291,291,291,120,120,120,291,291, +291,291,291,291,291,291,291,291,291,291,120,120,120,120,292,293, +290,293,293,120,120,120,293,293,293,120,293,293,293,290,120,120, +291,120,120,120,120,120,120,292,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,294,294,294,294,294,294,294,294,294,294, +295,295,295,296,297,297,297,297,297,298,297,120,120,120,120,120, /* block 24 */ -297,298,298,298,297,299,299,299,299,299,299,299,299,120,299,299, -299,120,299,299,299,299,299,299,299,299,299,299,299,299,299,299, -299,299,299,299,299,299,299,299,299,120,299,299,299,299,299,299, -299,299,299,299,299,299,299,299,299,299,120,120,120,299,297,297, -297,298,298,298,298,120,297,297,297,120,297,297,297,297,120,120, -120,120,120,120,120,297,297,120,299,299,299,120,120,120,120,120, -299,299,297,297,120,120,300,300,300,300,300,300,300,300,300,300, -120,120,120,120,120,120,120,301,302,302,302,302,302,302,302,303, +299,300,300,300,299,301,301,301,301,301,301,301,301,120,301,301, +301,120,301,301,301,301,301,301,301,301,301,301,301,301,301,301, +301,301,301,301,301,301,301,301,301,120,301,301,301,301,301,301, +301,301,301,301,301,301,301,301,301,301,120,120,299,301,299,299, +299,300,300,300,300,120,299,299,299,120,299,299,299,299,120,120, +120,120,120,120,120,299,299,120,301,301,301,120,120,301,120,120, +301,301,299,299,120,120,302,302,302,302,302,302,302,302,302,302, +120,120,120,120,120,120,120,303,304,304,304,304,304,304,304,305, /* block 25 */ -304,305,306,306,307,304,304,304,304,304,304,304,304,120,304,304, -304,120,304,304,304,304,304,304,304,304,304,304,304,304,304,304, -304,304,304,304,304,304,304,304,304,120,304,304,304,304,304,304, -304,304,304,304,120,304,304,304,304,304,120,120,305,304,306,305, -306,306,308,306,306,120,305,306,306,120,306,306,305,305,120,120, -120,120,120,120,120,308,308,120,120,120,120,120,120,120,304,120, -304,304,305,305,120,120,309,309,309,309,309,309,309,309,309,309, -120,304,304,120,120,120,120,120,120,120,120,120,120,120,120,120, +306,307,308,308,309,306,306,306,306,306,306,306,306,120,306,306, +306,120,306,306,306,306,306,306,306,306,306,306,306,306,306,306, +306,306,306,306,306,306,306,306,306,120,306,306,306,306,306,306, +306,306,306,306,120,306,306,306,306,306,120,120,307,306,308,307, +308,308,310,308,308,120,307,308,308,120,308,308,307,307,120,120, +120,120,120,120,120,310,310,120,120,120,120,120,120,306,306,120, +306,306,307,307,120,120,311,311,311,311,311,311,311,311,311,311, +120,306,306,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 26 */ -310,310,311,311,312,312,312,312,312,312,312,312,312,120,312,312, -312,120,312,312,312,312,312,312,312,312,312,312,312,312,312,312, -312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312, -312,312,312,312,312,312,312,312,312,312,312,310,310,312,313,311, -311,310,310,310,310,120,311,311,311,120,311,311,311,310,314,315, -120,120,120,120,312,312,312,313,316,316,316,316,316,316,316,312, -312,312,310,310,120,120,317,317,317,317,317,317,317,317,317,317, -316,316,316,316,316,316,316,316,316,315,312,312,312,312,312,312, +312,312,313,313,314,314,314,314,314,314,314,314,314,120,314,314, +314,120,314,314,314,314,314,314,314,314,314,314,314,314,314,314, +314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314, +314,314,314,314,314,314,314,314,314,314,314,312,312,314,315,313, +313,312,312,312,312,120,313,313,313,120,313,313,313,312,316,317, +120,120,120,120,314,314,314,315,318,318,318,318,318,318,318,314, +314,314,312,312,120,120,319,319,319,319,319,319,319,319,319,319, +318,318,318,318,318,318,318,318,318,317,314,314,314,314,314,314, /* block 27 */ -120,318,319,319,120,320,320,320,320,320,320,320,320,320,320,320, -320,320,320,320,320,320,320,120,120,120,320,320,320,320,320,320, -320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320, -320,320,120,320,320,320,320,320,320,320,320,320,120,320,120,120, -320,320,320,320,320,320,320,120,120,120,318,120,120,120,120,321, -319,319,318,318,318,120,318,120,319,319,319,319,319,319,319,321, -120,120,120,120,120,120,322,322,322,322,322,322,322,322,322,322, -120,120,319,319,323,120,120,120,120,120,120,120,120,120,120,120, +120,320,321,321,120,322,322,322,322,322,322,322,322,322,322,322, +322,322,322,322,322,322,322,120,120,120,322,322,322,322,322,322, +322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322, +322,322,120,322,322,322,322,322,322,322,322,322,120,322,120,120, +322,322,322,322,322,322,322,120,120,120,320,120,120,120,120,323, +321,321,320,320,320,120,320,120,321,321,321,321,321,321,321,323, +120,120,120,120,120,120,324,324,324,324,324,324,324,324,324,324, +120,120,321,321,325,120,120,120,120,120,120,120,120,120,120,120, /* block 28 */ -120,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324, -324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324, -324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324, -324,325,324,326,325,325,325,325,325,325,325,120,120,120,120, 6, -324,324,324,324,324,324,327,325,325,325,325,325,325,325,325,328, -329,329,329,329,329,329,329,329,329,329,328,328,120,120,120,120, +120,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326, +326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326, +326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326, +326,327,326,328,327,327,327,327,327,327,327,120,120,120,120, 6, +326,326,326,326,326,326,329,327,327,327,327,327,327,327,327,330, +331,331,331,331,331,331,331,331,331,331,330,330,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 29 */ -120,330,330,120,330,120,330,330,330,330,330,120,330,330,330,330, -330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330, -330,330,330,330,120,330,120,330,330,330,330,330,330,330,330,330, -330,331,330,332,331,331,331,331,331,331,331,331,331,330,120,120, -330,330,330,330,330,120,333,120,331,331,331,331,331,331,120,120, -334,334,334,334,334,334,334,334,334,334,120,120,330,330,330,330, +120,332,332,120,332,120,332,332,332,332,332,120,332,332,332,332, +332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332, +332,332,332,332,120,332,120,332,332,332,332,332,332,332,332,332, +332,333,332,334,333,333,333,333,333,333,333,333,333,332,120,120, +332,332,332,332,332,120,335,120,333,333,333,333,333,333,120,120, +336,336,336,336,336,336,336,336,336,336,120,120,332,332,332,332, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 30 */ -335,336,336,336,337,337,337,337,337,337,337,337,337,337,337,337, -337,337,337,336,337,336,336,336,338,338,336,336,336,336,336,336, -339,339,339,339,339,339,339,339,339,339,340,340,340,340,340,340, -340,340,340,340,336,338,336,338,336,338,341,342,341,342,343,343, -335,335,335,335,335,335,335,335,120,335,335,335,335,335,335,335, -335,335,335,335,335,335,335,335,335,335,335,335,335,335,335,335, -335,335,335,335,335,335,335,335,335,335,335,335,335,120,120,120, -120,338,338,338,338,338,338,338,338,338,338,338,338,338,338,343, +337,338,338,338,339,339,339,339,339,339,339,339,339,339,339,339, +339,339,339,338,339,338,338,338,340,340,338,338,338,338,338,338, +341,341,341,341,341,341,341,341,341,341,342,342,342,342,342,342, +342,342,342,342,338,340,338,340,338,340,343,344,343,344,345,345, +337,337,337,337,337,337,337,337,120,337,337,337,337,337,337,337, +337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337, +337,337,337,337,337,337,337,337,337,337,337,337,337,120,120,120, +120,340,340,340,340,340,340,340,340,340,340,340,340,340,340,345, /* block 31 */ -338,338,338,338,338,337,338,338,335,335,335,335,335,338,338,338, -338,338,338,338,338,338,338,338,120,338,338,338,338,338,338,338, -338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338, -338,338,338,338,338,338,338,338,338,338,338,338,338,120,336,336, -336,336,336,336,336,336,338,336,336,336,336,336,336,120,336,336, -337,337,337,337,337, 20, 20, 20, 20,337,337,120,120,120,120,120, +340,340,340,340,340,339,340,340,337,337,337,337,337,340,340,340, +340,340,340,340,340,340,340,340,120,340,340,340,340,340,340,340, +340,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340, +340,340,340,340,340,340,340,340,340,340,340,340,340,120,338,338, +338,338,338,338,338,338,340,338,338,338,338,338,338,120,338,338, +339,339,339,339,339, 20, 20, 20, 20,339,339,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 32 */ -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -344,344,344,344,344,344,344,344,344,344,344,345,345,346,346,346, -346,347,346,346,346,346,346,346,345,346,346,347,347,346,346,344, -348,348,348,348,348,348,348,348,348,348,349,349,349,349,349,349, -344,344,344,344,344,344,347,347,346,346,344,344,344,344,346,346, -346,344,345,345,345,344,344,345,345,345,345,345,345,345,344,344, -344,346,346,346,346,344,344,344,344,344,344,344,344,344,344,344, +346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346, +346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346, +346,346,346,346,346,346,346,346,346,346,346,347,347,348,348,348, +348,349,348,348,348,348,348,348,347,348,348,349,349,348,348,346, +350,350,350,350,350,350,350,350,350,350,351,351,351,351,351,351, +346,346,346,346,346,346,349,349,348,348,346,346,346,346,348,348, +348,346,347,347,347,346,346,347,347,347,347,347,347,347,346,346, +346,348,348,348,348,346,346,346,346,346,346,346,346,346,346,346, /* block 33 */ -344,344,346,345,347,346,346,345,345,345,345,345,345,346,344,345, -350,350,350,350,350,350,350,350,350,350,345,345,345,346,351,351, -352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352, -352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352, -352,352,352,352,352,352,120,352,120,120,120,120,120,352,120,120, -353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353, -353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353, -353,353,353,353,353,353,353,353,353,353,353,354,355,353,353,353, +346,346,348,347,349,348,348,347,347,347,347,347,347,348,346,347, +352,352,352,352,352,352,352,352,352,352,347,347,347,348,353,353, +354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354, +354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354, +354,354,354,354,354,354,120,354,120,120,120,120,120,354,120,120, +355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355, +355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355, +355,355,355,355,355,355,355,355,355,355,355,356,357,355,355,355, /* block 34 */ -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, -357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357, -357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357, - -/* block 35 */ -357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357, -357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357, -357,357,357,357,357,357,357,357,358,358,358,358,358,358,358,358, 358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, 358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, 358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, 358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, 358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, - -/* block 36 */ -359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, -359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, +358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, 359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, 359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, -359,359,359,359,359,359,359,359,359,120,359,359,359,359,120,120, -359,359,359,359,359,359,359,120,359,120,359,359,359,359,120,120, + +/* block 35 */ 359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, 359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, +359,359,359,359,359,359,359,359,360,360,360,360,360,360,360,360, +360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360, +360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360, +360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360, +360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360, +360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360, + +/* block 36 */ +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, +361,361,361,361,361,361,361,361,361,120,361,361,361,361,120,120, +361,361,361,361,361,361,361,120,361,120,361,361,361,361,120,120, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, /* block 37 */ -359,359,359,359,359,359,359,359,359,120,359,359,359,359,120,120, -359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, -359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, -359,120,359,359,359,359,120,120,359,359,359,359,359,359,359,120, -359,120,359,359,359,359,120,120,359,359,359,359,359,359,359,359, -359,359,359,359,359,359,359,120,359,359,359,359,359,359,359,359, -359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, -359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, +361,361,361,361,361,361,361,361,361,120,361,361,361,361,120,120, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, +361,120,361,361,361,361,120,120,361,361,361,361,361,361,361,120, +361,120,361,361,361,361,120,120,361,361,361,361,361,361,361,361, +361,361,361,361,361,361,361,120,361,361,361,361,361,361,361,361, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, /* block 38 */ -359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, -359,120,359,359,359,359,120,120,359,359,359,359,359,359,359,359, -359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, -359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, -359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, -359,359,359,359,359,359,359,359,359,359,359,120,120,360,360,360, -361,361,361,361,361,361,361,361,361,362,362,362,362,362,362,362, -362,362,362,362,362,362,362,362,362,362,362,362,362,120,120,120, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, +361,120,361,361,361,361,120,120,361,361,361,361,361,361,361,361, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, +361,361,361,361,361,361,361,361,361,361,361,120,120,362,362,362, +363,363,363,363,363,363,363,363,363,364,364,364,364,364,364,364, +364,364,364,364,364,364,364,364,364,364,364,364,364,120,120,120, /* block 39 */ -359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, -363,363,363,363,363,363,363,363,363,363,120,120,120,120,120,120, -364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364, -364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364, -364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364, -364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364, -364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364, -365,365,365,365,365,365,120,120,366,366,366,366,366,366,120,120, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, +365,365,365,365,365,365,365,365,365,365,120,120,120,120,120,120, +366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366, +366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366, +366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366, +366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366, +366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366, +367,367,367,367,367,367,120,120,368,368,368,368,368,368,120,120, /* block 40 */ -367,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, +369,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, /* block 41 */ -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, /* block 42 */ -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,369,370,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,371,372,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, /* block 43 */ -371,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372, -372,372,372,372,372,372,372,372,372,372,372,373,374,120,120,120, -375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375, -375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375, -375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375, -375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375, -375,375,375,375,375,375,375,375,375,375,375, 5, 5, 5,376,376, -376,375,375,375,375,375,375,375,375,120,120,120,120,120,120,120, +373,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, +374,374,374,374,374,374,374,374,374,374,374,375,376,120,120,120, +377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, +377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, +377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, +377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, +377,377,377,377,377,377,377,377,377,377,377, 5, 5, 5,378,378, +378,377,377,377,377,377,377,377,377,120,120,120,120,120,120,120, /* block 44 */ -377,377,377,377,377,377,377,377,377,377,377,377,377,120,377,377, -377,377,378,378,378,120,120,120,120,120,120,120,120,120,120,120, 379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, -379,379,380,380,380,381,381,120,120,120,120,120,120,120,120,120, +379,379,380,380,380,381,120,120,120,120,120,120,120,120,120,379, 382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382, -382,382,383,383,120,120,120,120,120,120,120,120,120,120,120,120, -384,384,384,384,384,384,384,384,384,384,384,384,384,120,384,384, -384,120,385,385,120,120,120,120,120,120,120,120,120,120,120,120, +382,382,383,383,384,385,385,120,120,120,120,120,120,120,120,120, +386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386, +386,386,387,387,120,120,120,120,120,120,120,120,120,120,120,120, +388,388,388,388,388,388,388,388,388,388,388,388,388,120,388,388, +388,120,389,389,120,120,120,120,120,120,120,120,120,120,120,120, /* block 45 */ -386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386, -386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386, -386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386, -386,386,386,386,387,387,388,387,387,387,387,387,387,387,388,388, -388,388,388,388,388,388,387,388,388,387,387,387,387,387,387,387, -387,387,387,387,389,389,389,390,389,389,389,391,386,387,120,120, -392,392,392,392,392,392,392,392,392,392,120,120,120,120,120,120, -393,393,393,393,393,393,393,393,393,393,120,120,120,120,120,120, +390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390, +390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390, +390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390, +390,390,390,390,391,391,392,391,391,391,391,391,391,391,392,392, +392,392,392,392,392,392,391,392,392,391,391,391,391,391,391,391, +391,391,391,391,393,393,393,394,393,393,393,395,390,391,120,120, +396,396,396,396,396,396,396,396,396,396,120,120,120,120,120,120, +397,397,397,397,397,397,397,397,397,397,120,120,120,120,120,120, /* block 46 */ -394,394,395,395,394,395,396,394,394,394,394,397,397,397,398,120, -399,399,399,399,399,399,399,399,399,399,120,120,120,120,120,120, -400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400, -400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400, -400,400,400,401,400,400,400,400,400,400,400,400,400,400,400,400, -400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400, -400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400, -400,400,400,400,400,400,400,400,400,120,120,120,120,120,120,120, +398,398,399,399,398,399,400,398,398,398,398,401,401,401,402,401, +403,403,403,403,403,403,403,403,403,403,120,120,120,120,120,120, +404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404, +404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404, +404,404,404,405,404,404,404,404,404,404,404,404,404,404,404,404, +404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404, +404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404, +404,404,404,404,404,404,404,404,404,120,120,120,120,120,120,120, /* block 47 */ -400,400,400,400,400,397,397,400,400,400,400,400,400,400,400,400, -400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400, -400,400,400,400,400,400,400,400,400,397,400,120,120,120,120,120, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, -368,368,368,368,368,368,120,120,120,120,120,120,120,120,120,120, +404,404,404,404,404,401,401,404,404,404,404,404,404,404,404,404, +404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404, +404,404,404,404,404,404,404,404,404,401,404,120,120,120,120,120, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +370,370,370,370,370,370,120,120,120,120,120,120,120,120,120,120, /* block 48 */ -402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402, -402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,120, -403,403,403,404,404,404,404,403,403,404,404,404,120,120,120,120, -404,404,403,404,404,404,404,404,404,403,403,403,120,120,120,120, -405,120,120,120,406,406,407,407,407,407,407,407,407,407,407,407, -408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408, -408,408,408,408,408,408,408,408,408,408,408,408,408,408,120,120, -408,408,408,408,408,120,120,120,120,120,120,120,120,120,120,120, +406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406, +406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,120, +407,407,407,408,408,408,408,407,407,408,408,408,120,120,120,120, +408,408,407,408,408,408,408,408,408,407,407,407,120,120,120,120, +409,120,120,120,410,410,411,411,411,411,411,411,411,411,411,411, +412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412, +412,412,412,412,412,412,412,412,412,412,412,412,412,412,120,120, +412,412,412,412,412,120,120,120,120,120,120,120,120,120,120,120, /* block 49 */ -409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409, -409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409, -409,409,409,409,409,409,409,409,409,409,409,409,120,120,120,120, -409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409, -409,409,409,409,409,409,409,409,409,409,120,120,120,120,120,120, -410,410,410,410,410,410,410,410,410,410,411,120,120,120,412,412, 413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413, 413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413, +413,413,413,413,413,413,413,413,413,413,413,413,120,120,120,120, +413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413, +413,413,413,413,413,413,413,413,413,413,120,120,120,120,120,120, +414,414,414,414,414,414,414,414,414,414,415,120,120,120,416,416, +417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417, +417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417, /* block 50 */ -414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414, -414,414,414,414,414,414,414,415,415,416,416,415,120,120,417,417, -418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418, -418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418, 418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418, -418,418,418,418,418,419,420,419,420,420,420,420,420,420,420,120, -420,421,420,421,421,420,420,420,420,420,420,420,420,419,419,419, -419,419,419,420,420,420,420,420,420,420,420,420,420,120,120,420, +418,418,418,418,418,418,418,419,419,420,420,419,120,120,421,421, +422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, +422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, +422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, +422,422,422,422,422,423,424,423,424,424,424,424,424,424,424,120, +424,425,424,425,425,424,424,424,424,424,424,424,424,423,423,423, +423,423,423,424,424,424,424,424,424,424,424,424,424,120,120,424, /* block 51 */ -422,422,422,422,422,422,422,422,422,422,120,120,120,120,120,120, -422,422,422,422,422,422,422,422,422,422,120,120,120,120,120,120, -423,423,423,423,423,423,423,424,423,423,423,423,423,423,120,120, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,425,113, -113,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +426,426,426,426,426,426,426,426,426,426,120,120,120,120,120,120, +426,426,426,426,426,426,426,426,426,426,120,120,120,120,120,120, +427,427,427,427,427,427,427,428,427,427,427,427,427,427,120,120, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,429,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 52 */ -426,426,426,426,427,428,428,428,428,428,428,428,428,428,428,428, -428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, -428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428, -428,428,428,428,426,429,426,426,426,426,426,427,426,427,427,427, -427,427,426,427,427,428,428,428,428,428,428,428,120,120,120,120, -430,430,430,430,430,430,430,430,430,430,431,431,431,431,431,431, -431,432,432,432,432,432,432,432,432,432,432,426,426,426,426,426, -426,426,426,426,432,432,432,432,432,432,432,432,432,120,120,120, +430,430,430,430,431,432,432,432,432,432,432,432,432,432,432,432, +432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432, +432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432, +432,432,432,432,430,433,430,430,430,430,430,431,430,431,431,431, +431,431,430,431,431,432,432,432,432,432,432,432,432,120,120,120, +434,434,434,434,434,434,434,434,434,434,435,435,435,435,435,435, +435,436,436,436,436,436,436,436,436,436,436,430,430,430,430,430, +430,430,430,430,436,436,436,436,436,436,436,436,436,435,435,120, /* block 53 */ -433,433,434,435,435,435,435,435,435,435,435,435,435,435,435,435, -435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435, -435,434,433,433,433,433,434,434,433,433,434,433,433,433,435,435, -436,436,436,436,436,436,436,436,436,436,435,435,435,435,435,435, -437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437, -437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437, -437,437,437,437,437,437,438,439,438,438,439,439,439,438,439,438, -438,438,439,439,120,120,120,120,120,120,120,120,440,440,440,440, - -/* block 54 */ +437,437,438,439,439,439,439,439,439,439,439,439,439,439,439,439, +439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439, +439,438,437,437,437,437,438,438,437,437,438,437,437,437,439,439, +440,440,440,440,440,440,440,440,440,440,439,439,439,439,439,439, 441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441, 441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441, -441,441,441,441,442,442,442,442,442,442,442,442,443,443,443,443, -443,443,443,443,442,442,443,443,120,120,120,444,444,444,444,444, -445,445,445,445,445,445,445,445,445,445,120,120,120,441,441,441, -446,446,446,446,446,446,446,446,446,446,447,447,447,447,447,447, -447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447, -447,447,447,447,447,447,447,447,448,448,448,448,448,448,449,449, +441,441,441,441,441,441,442,443,442,442,443,443,443,442,443,442, +442,442,443,443,120,120,120,120,120,120,120,120,444,444,444,444, + +/* block 54 */ +445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445, +445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445, +445,445,445,445,446,446,446,446,446,446,446,446,447,447,447,447, +447,447,447,447,446,446,447,447,120,120,120,448,448,448,448,448, +449,449,449,449,449,449,449,449,449,449,120,120,120,445,445,445, +450,450,450,450,450,450,450,450,450,450,451,451,451,451,451,451, +451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451, +451,451,451,451,451,451,451,451,452,452,452,452,452,452,453,453, /* block 55 */ -450,451,452,453,454,455,456,457,458,120,120,120,120,120,120,120, -459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459, -459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459, -459,459,459,459,459,459,459,459,459,459,459,120,120,459,459,459, -460,460,460,460,460,460,460,460,120,120,120,120,120,120,120,120, -461,462,461,463,462,464,464,465,464,465,466,462,465,465,462,462, -465,467,462,462,462,462,462,462,462,468,469,470,470,464,470,470, -470,470,471,472,473,469,469,474,475,475,476,120,120,120,120,120, +454,455,456,457,458,459,460,461,462,120,120,120,120,120,120,120, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, +463,463,463,463,463,463,463,463,463,463,463,120,120,463,463,463, +464,464,464,464,464,464,464,464,120,120,120,120,120,120,120,120, +465,466,465,467,466,468,468,469,468,469,470,466,469,469,466,466, +469,471,466,466,466,466,466,466,466,472,473,474,474,468,474,474, +474,474,475,476,477,473,473,478,479,479,480,120,120,120,120,120, /* block 56 */ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35,128,128,128,128,128,477,110,110,110,110, + 35, 35, 35, 35, 35, 35,128,128,128,128,128,481,110,110,110,110, 110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, 110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, 110,110,110,110,110,110,110,110,110,110,110,110,110,121,121,121, 121,121,110,110,110,110,121,121,121,121,121, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35,478,479, 35, 35, 35,480, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35,482,483, 35, 35, 35,484, 35, 35, /* block 57 */ - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,481, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,485, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,110,110,110,110,110, 110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, 110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,121, 114,114,113,113,113,113,113,113,113,113,113,113,113,113,113,113, 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,482,113,120,113,113,113,113,113, +113,113,113,113,113,113,113,113,486,113,487,113,113,113,113,113, /* block 58 */ 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, @@ -2305,12 +2331,12 @@ 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, -483,484, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, +488,489, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, /* block 59 */ 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, - 32, 33, 32, 33, 32, 33, 35, 35, 35, 35, 35,485, 35, 35,486, 35, + 32, 33, 32, 33, 32, 33, 35, 35, 35, 35, 35,490, 35, 35,491, 35, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, @@ -2319,33 +2345,33 @@ 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, /* block 60 */ -487,487,487,487,487,487,487,487,488,488,488,488,488,488,488,488, -487,487,487,487,487,487,120,120,488,488,488,488,488,488,120,120, -487,487,487,487,487,487,487,487,488,488,488,488,488,488,488,488, -487,487,487,487,487,487,487,487,488,488,488,488,488,488,488,488, -487,487,487,487,487,487,120,120,488,488,488,488,488,488,120,120, -128,487,128,487,128,487,128,487,120,488,120,488,120,488,120,488, -487,487,487,487,487,487,487,487,488,488,488,488,488,488,488,488, -489,489,490,490,490,490,491,491,492,492,493,493,494,494,120,120, +492,492,492,492,492,492,492,492,493,493,493,493,493,493,493,493, +492,492,492,492,492,492,120,120,493,493,493,493,493,493,120,120, +492,492,492,492,492,492,492,492,493,493,493,493,493,493,493,493, +492,492,492,492,492,492,492,492,493,493,493,493,493,493,493,493, +492,492,492,492,492,492,120,120,493,493,493,493,493,493,120,120, +128,492,128,492,128,492,128,492,120,493,120,493,120,493,120,493, +492,492,492,492,492,492,492,492,493,493,493,493,493,493,493,493, +494,494,495,495,495,495,496,496,497,497,498,498,499,499,120,120, /* block 61 */ -487,487,487,487,487,487,487,487,495,495,495,495,495,495,495,495, -487,487,487,487,487,487,487,487,495,495,495,495,495,495,495,495, -487,487,487,487,487,487,487,487,495,495,495,495,495,495,495,495, -487,487,128,496,128,120,128,128,488,488,497,497,498,119,499,119, -119,119,128,496,128,120,128,128,500,500,500,500,498,119,119,119, -487,487,128,128,120,120,128,128,488,488,501,501,120,119,119,119, -487,487,128,128,128,169,128,128,488,488,502,502,174,119,119,119, -120,120,128,496,128,120,128,128,503,503,504,504,498,119,119,120, +492,492,492,492,492,492,492,492,500,500,500,500,500,500,500,500, +492,492,492,492,492,492,492,492,500,500,500,500,500,500,500,500, +492,492,492,492,492,492,492,492,500,500,500,500,500,500,500,500, +492,492,128,501,128,120,128,128,493,493,502,502,503,119,504,119, +119,119,128,501,128,120,128,128,505,505,505,505,503,119,119,119, +492,492,128,128,120,120,128,128,493,493,506,506,120,119,119,119, +492,492,128,128,128,169,128,128,493,493,507,507,174,119,119,119, +120,120,128,501,128,120,128,128,508,508,509,509,503,119,119,120, /* block 62 */ - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 24,505,506, 24, 24, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 24,510,511, 24, 24, 10, 10, 10, 10, 10, 10, 5, 5, 23, 27, 7, 23, 23, 27, 7, 23, - 5, 5, 5, 5, 5, 5, 5, 5,507,508, 24, 24, 24, 24, 24,509, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 23, 27, 5,510, 5, 5, 16, - 16, 5, 5, 5, 9, 7, 8, 5, 5,510, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5,512,513, 24, 24, 24, 24, 24,514, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 23, 27, 5,515, 5, 5, 16, + 16, 5, 5, 5, 9, 7, 8, 5, 5,515, 5, 5, 5, 5, 5, 5, 5, 5, 9, 5, 16, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, - 24, 24, 24, 24, 24,511, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24,516, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25,110,120,120, 25, 25, 25, 25, 25, 25, 9, 9, 9, 7, 8,110, /* block 63 */ @@ -2353,24 +2379,24 @@ 110,110,110,110,110,110,110,110,110,110,110,110,110,120,120,120, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -113,113,113,113,113,113,113,113,113,113,113,113,113,425,425,425, -425,113,425,425,425,113,113,113,113,113,113,113,113,113,113,113, -512,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, + 6,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +113,113,113,113,113,113,113,113,113,113,113,113,113,429,429,429, +429,113,429,429,429,113,113,113,113,113,113,113,113,113,113,113, +517,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 64 */ - 20, 20,513, 20, 20, 20, 20,513, 20, 20,514,513,513,513,514,514, -513,513,513,514, 20,513, 20, 20, 9,513,513,513,513,513, 20, 20, - 20, 20, 21, 20,513, 20,515, 20,513, 20,516,517,513,513, 20,514, -513,513,518,513,514,519,519,519,519,520, 20, 20,514,514,513,513, - 9, 9, 9, 9, 9,513,514,514,514,514, 20, 9, 20, 20,521, 20, + 20, 20,518, 20, 20, 20, 20,518, 20, 20,519,518,518,518,519,519, +518,518,518,519, 20,518, 20, 20, 9,518,518,518,518,518, 20, 20, + 20, 20, 21, 20,518, 20,520, 20,518, 20,521,522,518,518, 20,519, +518,518,523,518,519,524,524,524,524,525, 20, 20,519,519,518,518, + 9, 9, 9, 9, 9,518,519,519,519,519, 20, 9, 20, 20,526, 20, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, -522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522, -523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523, +527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527, +528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528, /* block 65 */ -524,524,524, 32, 33,524,524,524,524, 25, 20, 20,120,120,120,120, - 9, 9, 9, 9,525, 21, 21, 21, 21, 21, 9, 9, 20, 20, 20, 20, +529,529,529, 32, 33,529,529,529,529, 25, 20, 20,120,120,120,120, + 9, 9, 9, 9,530, 21, 21, 21, 21, 21, 9, 9, 20, 20, 20, 20, 9, 20, 20, 9, 20, 20, 9, 20, 20, 21, 21, 20, 20, 20, 9, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 9, 9, @@ -2422,10 +2448,10 @@ 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20,526,526,526,526,526,526,526,526,526,526, -526,526,527,526,526,526,526,526,526,526,526,526,526,526,526,526, -528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528, -528,528,528,528,528,528,528,528,528,528, 25, 25, 25, 25, 25, 25, + 20, 20, 20, 20, 20, 20,531,531,531,531,531,531,531,531,531,531, +531,531,532,531,531,531,531,531,531,531,531,531,531,531,531,531, +533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533, +533,533,533,533,533,533,533,533,533,533, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, /* block 71 */ @@ -2446,7 +2472,7 @@ 21, 9, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 9, 9, 9,525,525,525,525, 9, + 20, 20, 20, 20, 20, 20, 20, 20, 9, 9, 9,530,530,530,530, 9, /* block 73 */ 21, 21, 21, 21, 21, 21, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, @@ -2455,7 +2481,7 @@ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,525, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,530, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, /* block 74 */ @@ -2489,20 +2515,20 @@ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, /* block 77 */ -529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529, -529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529, -529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529, -529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529, -529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529, -529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529, -529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529, -529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529, +534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534, +534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534, +534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534, +534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534, +534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534, +534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534, +534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534, +534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534, /* block 78 */ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9,525,525, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9,530,530, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -2539,14 +2565,14 @@ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, /* block 82 */ -530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530, -530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530, -530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,120, -531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531, -531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531, -531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,120, - 32, 33,532,533,534,535,536, 32, 33, 32, 33, 32, 33,537,538,539, -540, 35, 32, 33, 35, 32, 33, 35, 35, 35, 35, 35,110,110,541,541, +535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535, +535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535, +535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, +536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, + 32, 33,537,538,539,540,541, 32, 33, 32, 33, 32, 33,542,543,544, +545, 35, 32, 33, 35, 32, 33, 35, 35, 35, 35, 35,110,110,546,546, /* block 83 */ 165,166,165,166,165,166,165,166,165,166,165,166,165,166,165,166, @@ -2555,138 +2581,138 @@ 165,166,165,166,165,166,165,166,165,166,165,166,165,166,165,166, 165,166,165,166,165,166,165,166,165,166,165,166,165,166,165,166, 165,166,165,166,165,166,165,166,165,166,165,166,165,166,165,166, -165,166,165,166,542,543,543,543,543,543,543,165,166,165,166,544, -544,544,165,166,120,120,120,120,120,545,545,545,545,546,545,545, +165,166,165,166,547,548,548,548,548,548,548,165,166,165,166,549, +549,549,165,166,120,120,120,120,120,550,550,550,550,551,550,550, /* block 84 */ -547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547, -547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547, -547,547,547,547,547,547,120,547,120,120,120,120,120,547,120,120, -548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548, -548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548, -548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548, -548,548,548,548,548,548,548,548,120,120,120,120,120,120,120,549, -550,120,120,120,120,120,120,120,120,120,120,120,120,120,120,551, - -/* block 85 */ -359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, -359,359,359,359,359,359,359,120,120,120,120,120,120,120,120,120, -359,359,359,359,359,359,359,120,359,359,359,359,359,359,359,120, -359,359,359,359,359,359,359,120,359,359,359,359,359,359,359,120, -359,359,359,359,359,359,359,120,359,359,359,359,359,359,359,120, -359,359,359,359,359,359,359,120,359,359,359,359,359,359,359,120, 552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552, 552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552, +552,552,552,552,552,552,120,552,120,120,120,120,120,552,120,120, +553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553, +553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553, +553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553, +553,553,553,553,553,553,553,553,120,120,120,120,120,120,120,554, +555,120,120,120,120,120,120,120,120,120,120,120,120,120,120,556, + +/* block 85 */ +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, +361,361,361,361,361,361,361,120,120,120,120,120,120,120,120,120, +361,361,361,361,361,361,361,120,361,361,361,361,361,361,361,120, +361,361,361,361,361,361,361,120,361,361,361,361,361,361,361,120, +361,361,361,361,361,361,361,120,361,361,361,361,361,361,361,120, +361,361,361,361,361,361,361,120,361,361,361,361,361,361,361,120, +557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557, +557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557, /* block 86 */ 5, 5, 23, 27, 23, 27, 5, 5, 5, 23, 27, 5, 23, 27, 5, 5, 5, 5, 5, 5, 5, 5, 5, 10, 5, 5, 10, 5, 23, 27, 5, 5, 23, 27, 7, 8, 7, 8, 7, 8, 7, 8, 5, 5, 5, 5, 5,111, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 10, 10, 5, 5, 5, 5, - 10, 5, 7,553, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 20, 20, 5,120,120,120,120,120,120,120,120,120,120,120,120,120, + 10, 5, 7,558, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 20, 20, 5, 5, 5, 7, 8, 7, 8, 7, 8, 7, 8, 10,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 87 */ -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,120,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,120,120,120,120,120,120,120,120,120,120,120,120, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,120,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,120,120,120,120,120,120,120,120,120,120,120,120, /* block 88 */ -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, /* block 89 */ -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, -554,554,554,554,554,554,120,120,120,120,120,120,120,120,120,120, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, +559,559,559,559,559,559,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,120,120,120,120, /* block 90 */ - 4,555,555,556, 20,557,558,559,560,561,560,561,560,561,560,561, -560,561, 20,562,560,561,560,561,560,561,560,561,563,564,565,565, - 20,559,559,559,559,559,559,559,559,559,566,566,566,566,567,567, -568,569,569,569,569,569, 20,562,559,559,559,557,570,571,572,572, -120,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, - -/* block 91 */ -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,120,120,574,574,575,575,576,576,573, -577,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, + 4,560,560,561, 20,562,563,564,565,566,565,566,565,566,565,566, +565,566, 20,567,565,566,565,566,565,566,565,566,568,569,570,570, + 20,564,564,564,564,564,564,564,564,564,571,571,571,571,572,572, +573,574,574,574,574,574, 20,567,564,564,564,562,575,576,577,577, +120,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, 578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, 578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, 578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, + +/* block 91 */ 578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, -578,578,578,578,578,578,578,578,578,578,578,555,569,579,579,578, +578,578,578,578,578,578,578,120,120,579,579,580,580,581,581,578, +582,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583, +583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583, +583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583, +583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583, +583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583, +583,583,583,583,583,583,583,583,583,583,583,560,574,584,584,583, /* block 92 */ -120,120,120,120,120,580,580,580,580,580,580,580,580,580,580,580, -580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580, -580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580, -120,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581, -581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581, -581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581, -581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581, -581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581, +120,120,120,120,120,585,585,585,585,585,585,585,585,585,585,585, +585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585, +585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585, +120,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, +586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, +586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, +586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, +586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, /* block 93 */ -581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,120, -572,572,582,582,582,582,572,572,572,572,572,572,572,572,572,572, -580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580, -580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580, -572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572, -572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572, -572,572,572,572,120,120,120,120,120,120,120,120,120,120,120,120, -578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,120, +577,577,587,587,587,587,577,577,577,577,577,577,577,577,577,577, +585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585, +585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585, +577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577, +577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577, +577,577,577,577,120,120,120,120,120,120,120,120,120,120,120,120, +583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583, /* block 94 */ -583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583, -583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,120, -582,582,582,582,582,582,582,582,582,582,572,572,572,572,572,572, -572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572, -572,572,572,572,572,572,572,572, 25, 25, 25, 25, 25, 25, 25, 25, +588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588, +588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,120, +587,587,587,587,587,587,587,587,587,587,577,577,577,577,577,577, +577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577, +577,577,577,577,577,577,577,577, 25, 25, 25, 25, 25, 25, 25, 25, 20, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, -583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583, -583,583,583,583,583,583,583,583,583,583,583,583,583,583,583, 20, +588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588, +588,588,588,588,588,588,588,588,588,588,588,588,588,588,588, 20, /* block 95 */ -582,582,582,582,582,582,582,582,582,582,572,572,572,572,572,572, -572,572,572,572,572,572,572,584,572,584,572,572,572,572,572,572, -572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572, -572, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, -572,572,572,572,572,572,572,572,572,572,572,572, 20, 20, 20, 20, -585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585, -585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585, -585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,572, +587,587,587,587,587,587,587,587,587,587,577,577,577,577,577,577, +577,577,577,577,577,577,577,589,577,589,577,577,577,577,577,577, +577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577, +577, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, +577,577,577,577,577,577,577,577,577,577,577,577, 20, 20, 20, 20, +590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590, +590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590, +590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,577, /* block 96 */ -585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585, -585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585, -585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585, -585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585, -585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585, -585,585,585,585,585,585,585,585,572,572,572,572,572,572,572,572, -572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572, -572, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,572,572,572,572,572, +590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590, +590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590, +590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590, +590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590, +590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590, +590,590,590,590,590,590,590,590,577,577,577,577,577,577,577,577, +577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577, +577, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,577,577,577,577,577, /* block 97 */ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, @@ -2695,450 +2721,440 @@ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, -572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572, -572,572,572,572,572,572,572,572,572,572,572,572,572,572,572, 20, +577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577, +577,577,577,577,577,577,577,577,577,577,577,577,577,577,577, 20, /* block 98 */ -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, /* block 99 */ -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, /* block 100 */ -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,120,120,120, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,593,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, /* block 101 */ -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, -587,587,587,587,587,588,587,587,587,587,587,587,587,587,587,587, -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, +592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, /* block 102 */ -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, -587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, +592,592,592,592,592,592,592,592,592,592,592,592,592,120,120,120, +594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594, +594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594, +594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594, +594,594,594,594,594,594,594,120,120,120,120,120,120,120,120,120, +595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595, +595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595, +595,595,595,595,595,595,595,595,596,596,596,596,596,596,597,597, /* block 103 */ -587,587,587,587,587,587,587,587,587,587,587,587,587,120,120,120, -589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589, -589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589, -589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589, -589,589,589,589,589,589,589,120,120,120,120,120,120,120,120,120, -590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590, -590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590, -590,590,590,590,590,590,590,590,591,591,591,591,591,591,592,592, +598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598, +598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598, +598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598, +598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598, +598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598, +598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598, +598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598, +598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598, /* block 104 */ -593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593, -593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593, -593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593, -593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593, -593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593, -593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593, -593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593, -593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593, - -/* block 105 */ -593,593,593,593,593,593,593,593,593,593,593,593,594,595,595,595, -593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593, -596,596,596,596,596,596,596,596,596,596,593,593,120,120,120,120, +598,598,598,598,598,598,598,598,598,598,598,598,599,600,600,600, +598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598, +601,601,601,601,601,601,601,601,601,601,598,598,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -192,193,192,193,192,193,192,193,192,193,597,598,192,193,192,193, +192,193,192,193,192,193,192,193,192,193,602,603,192,193,192,193, 192,193,192,193,192,193,192,193,192,193,192,193,192,193,192,193, -192,193,192,193,192,193,192,193,192,193,192,193,192,193,599,198, -200,200,200,600,552,552,552,552,552,552,552,552,552,552,600,478, +192,193,192,193,192,193,192,193,192,193,192,193,192,193,604,198, +200,200,200,605,557,557,557,557,557,557,557,557,557,557,605,482, -/* block 106 */ +/* block 105 */ 192,193,192,193,192,193,192,193,192,193,192,193,192,193,192,193, -192,193,192,193,192,193,192,193,192,193,192,193,478,478,552,552, -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, -601,601,601,601,601,601,602,602,602,602,602,602,602,602,602,602, -603,603,604,604,604,604,604,604,120,120,120,120,120,120,120,120, +192,193,192,193,192,193,192,193,192,193,192,193,482,482,557,557, +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, +606,606,606,606,606,606,607,607,607,607,607,607,607,607,607,607, +608,608,609,609,609,609,609,609,120,120,120,120,120,120,120,120, -/* block 107 */ -605,605,605,605,605,605,605,605, 15, 15, 15, 15, 15, 15, 15, 15, +/* block 106 */ +610,610,610,610,610,610,610,610, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,111,111,111,111,111,111,111,111,111, 15, 15, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 35, 35, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, -110, 35, 35, 35, 35, 35, 35, 35, 35, 32, 33, 32, 33,606, 32, 33, +110, 35, 35, 35, 35, 35, 35, 35, 35, 32, 33, 32, 33,611, 32, 33, -/* block 108 */ - 32, 33, 32, 33, 32, 33, 32, 33,111, 15, 15, 32, 33,607, 35, 22, - 32, 33, 32, 33,608, 35, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, - 32, 33, 32, 33, 32, 33, 32, 33, 32, 33,609,610,611,612,609, 35, -613,614,615,616, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, -120,120, 32, 33,617,618,619, 32, 33, 32, 33,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +/* block 107 */ + 32, 33, 32, 33, 32, 33, 32, 33,111, 15, 15, 32, 33,612, 35, 22, + 32, 33, 32, 33,613, 35, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, + 32, 33, 32, 33, 32, 33, 32, 33, 32, 33,614,615,616,617,614, 35, +618,619,620,621, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, 32, 33, + 32, 33, 32, 33,622,623,624, 32, 33, 32, 33,120,120,120,120,120, + 32, 33,120, 35,120, 35, 32, 33, 32, 33,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120, 32, 33, 22,110,110, 35, 22, 22, 22, 22, 22, +120,120,110,110,110, 32, 33, 22,110,110, 35, 22, 22, 22, 22, 22, + +/* block 108 */ +625,625,626,625,625,625,626,625,625,625,625,626,625,625,625,625, +625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625, +625,625,625,627,627,626,626,627,628,628,628,628,626,120,120,120, +629,629,629,630,630,630,631,631,632,631,120,120,120,120,120,120, +633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633, +633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633, +633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633, +633,633,633,633,634,634,634,634,120,120,120,120,120,120,120,120, /* block 109 */ -620,620,621,620,620,620,621,620,620,620,620,621,620,620,620,620, -620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620, -620,620,620,622,622,621,621,622,623,623,623,623,621,120,120,120, -624,624,624,625,625,625,626,626,627,626,120,120,120,120,120,120, -628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628, -628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628, -628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628, -628,628,628,628,629,629,629,629,120,120,120,120,120,120,120,120, +635,635,636,636,636,636,636,636,636,636,636,636,636,636,636,636, +636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636, +636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636, +636,636,636,636,635,635,635,635,635,635,635,635,635,635,635,635, +635,635,635,635,637,637,120,120,120,120,120,120,120,120,638,638, +639,639,639,639,639,639,639,639,639,639,120,120,120,120,120,120, +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, +253,640,255,641,255,255,255,255,261,261,261,255,261,255,255,253, /* block 110 */ -630,630,631,631,631,631,631,631,631,631,631,631,631,631,631,631, -631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631, -631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631, -631,631,631,631,630,630,630,630,630,630,630,630,630,630,630,630, -630,630,630,630,632,632,120,120,120,120,120,120,120,120,633,633, -634,634,634,634,634,634,634,634,634,634,120,120,120,120,120,120, -251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251, -251,635,253,636,253,253,253,253,259,259,259,253,259,253,253,251, +642,642,642,642,642,642,642,642,642,642,643,643,643,643,643,643, +643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643, +643,643,643,643,643,643,644,644,644,644,644,644,644,644,645,646, +647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647, +647,647,647,647,647,647,647,648,648,648,648,648,648,648,648,648, +648,648,649,649,120,120,120,120,120,120,120,120,120,120,120,650, +358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, +358,358,358,358,358,358,358,358,358,358,358,358,358,120,120,120, /* block 111 */ -637,637,637,637,637,637,637,637,637,637,638,638,638,638,638,638, -638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638, -638,638,638,638,638,638,639,639,639,639,639,639,639,639,640,641, -642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642, -642,642,642,642,642,642,642,643,643,643,643,643,643,643,643,643, -643,643,644,644,120,120,120,120,120,120,120,120,120,120,120,645, -356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, -356,356,356,356,356,356,356,356,356,356,356,356,356,120,120,120, - -/* block 112 */ -646,646,646,647,648,648,648,648,648,648,648,648,648,648,648,648, -648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648, -648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648, -648,648,648,646,647,647,646,646,646,646,647,647,646,646,647,647, -647,649,649,649,649,649,649,649,649,649,649,649,649,649,120,650, -651,651,651,651,651,651,651,651,651,651,120,120,120,120,649,649, -344,344,344,344,344,346,652,344,344,344,344,344,344,344,344,344, -350,350,350,350,350,350,350,350,350,350,344,344,344,344,344,120, - -/* block 113 */ +651,651,651,652,653,653,653,653,653,653,653,653,653,653,653,653, 653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653, 653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653, -653,653,653,653,653,653,653,653,653,654,654,654,654,654,654,655, -655,654,654,655,655,654,654,120,120,120,120,120,120,120,120,120, -653,653,653,654,653,653,653,653,653,653,653,653,654,655,120,120, -656,656,656,656,656,656,656,656,656,656,120,120,657,657,657,657, -344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, -652,344,344,344,344,344,344,351,351,351,344,345,346,345,344,344, +653,653,653,651,652,652,651,651,651,651,652,652,651,651,652,652, +652,654,654,654,654,654,654,654,654,654,654,654,654,654,120,655, +656,656,656,656,656,656,656,656,656,656,120,120,120,120,654,654, +346,346,346,346,346,348,657,346,346,346,346,346,346,346,346,346, +352,352,352,352,352,352,352,352,352,352,346,346,346,346,346,120, -/* block 114 */ -658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658, +/* block 112 */ 658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658, 658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658, -659,658,659,659,659,658,658,659,659,658,658,658,658,658,659,659, -658,659,658,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,658,658,660,661,661, -662,662,662,662,662,662,662,662,662,662,662,663,664,664,663,663, -665,665,662,666,666,663,664,120,120,120,120,120,120,120,120,120, +658,658,658,658,658,658,658,658,658,659,659,659,659,659,659,660, +660,659,659,660,660,659,659,120,120,120,120,120,120,120,120,120, +658,658,658,659,658,658,658,658,658,658,658,658,659,660,120,120, +661,661,661,661,661,661,661,661,661,661,120,120,662,662,662,662, +346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346, +657,346,346,346,346,346,346,353,353,353,346,347,348,347,346,346, -/* block 115 */ -120,359,359,359,359,359,359,120,120,359,359,359,359,359,359,120, -120,359,359,359,359,359,359,120,120,120,120,120,120,120,120,120, -359,359,359,359,359,359,359,120,359,359,359,359,359,359,359,120, +/* block 113 */ +663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663, +663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663, +663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663, +664,663,664,664,664,663,663,664,664,663,663,663,663,663,664,664, +663,664,663,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,663,663,665,666,666, +667,667,667,667,667,667,667,667,667,667,667,668,669,669,668,668, +670,670,667,671,671,668,669,120,120,120,120,120,120,120,120,120, + +/* block 114 */ +120,361,361,361,361,361,361,120,120,361,361,361,361,361,361,120, +120,361,361,361,361,361,361,120,120,120,120,120,120,120,120,120, +361,361,361,361,361,361,361,120,361,361,361,361,361,361,361,120, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35,667, 35, 35, 35, 35, 35, 35, 35, 15,110,110,110,110, + 35, 35, 35,672, 35, 35, 35, 35, 35, 35, 35, 15,110,110,110,110, 35, 35, 35, 35, 35,128, 35, 35, 35,110, 15, 15,120,120,120,120, -668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668, +673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, + +/* block 115 */ +673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, +673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, +673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, +673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, +667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667, +667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667, +667,667,667,668,668,669,668,668,669,668,668,670,668,669,120,120, +674,674,674,674,674,674,674,674,674,674,120,120,120,120,120,120, /* block 116 */ -668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668, -668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668, -668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668, -668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668, -662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662, -662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662, -662,662,662,663,663,664,663,663,664,663,663,665,663,664,120,120, -669,669,669,669,669,669,669,669,669,669,120,120,120,120,120,120, +675,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,675,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,675,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,675,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +675,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, /* block 117 */ -670,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,670,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,670,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,670,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -670,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, +676,676,676,676,676,676,676,676,676,676,676,676,675,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,675,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,675,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +675,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,675,676,676,676, /* block 118 */ -671,671,671,671,671,671,671,671,671,671,671,671,670,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,670,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,670,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -670,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,670,671,671,671, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,675,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,675,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +675,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,675,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, /* block 119 */ -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,670,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,670,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -670,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,670,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, +676,676,676,676,676,676,676,676,675,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,675,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +675,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,675,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,675,676,676,676,676,676,676,676, /* block 120 */ -671,671,671,671,671,671,671,671,670,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,670,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -670,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,670,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,670,671,671,671,671,671,671,671, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,675,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +675,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,675,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,675,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, /* block 121 */ -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,670,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -670,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,670,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,670,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, +676,676,676,676,675,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +675,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,675,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,675,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,675,676,676,676,676,676,676,676,676,676,676,676, /* block 122 */ -671,671,671,671,670,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -670,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,670,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,670,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,670,671,671,671,671,671,671,671,671,671,671,671, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +675,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,675,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,675,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,675,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, /* block 123 */ -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -670,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,670,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,670,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,670,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, +676,676,676,676,676,676,676,676,675,676,676,676,676,676,676,676, +676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, +676,676,676,676,120,120,120,120,120,120,120,120,120,120,120,120, +359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, +359,359,359,359,359,359,359,120,120,120,120,360,360,360,360,360, +360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360, +360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360, +360,360,360,360,360,360,360,360,360,360,360,360,120,120,120,120, /* block 124 */ -671,671,671,671,671,671,671,671,670,671,671,671,671,671,671,671, -671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, -671,671,671,671,120,120,120,120,120,120,120,120,120,120,120,120, -357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357, -357,357,357,357,357,357,357,120,120,120,120,358,358,358,358,358, -358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, -358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, -358,358,358,358,358,358,358,358,358,358,358,358,120,120,120,120, +677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677, +677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677, +677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677, +677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677, +677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677, +677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677, +677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677, +677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677, /* block 125 */ -672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672, -672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672, -672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672, -672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672, -672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672, -672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672, -672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672, -672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, /* block 126 */ -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,120,120, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, /* block 127 */ -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,120,120, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, - -/* block 128 */ -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,120,120,120,120,120,120, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 129 */ +/* block 128 */ 35, 35, 35, 35, 35, 35, 35,120,120,120,120,120,120,120,120,120, 120,120,120,206,206,206,206,206,120,120,120,120,120,214,211,214, -214,214,214,214,214,214,214,214,214,674,214,214,214,214,214,214, +214,214,214,214,214,214,214,214,214,679,214,214,214,214,214,214, 214,214,214,214,214,214,214,120,214,214,214,214,214,120,214,120, 214,214,120,214,214,120,214,214,214,214,214,214,214,214,214,214, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, + +/* block 129 */ +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,252,252,252,252,252,252,252,252,252,252,252,252,252,252, +252,252,252,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, /* block 130 */ -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,675,675,675,675,675,675,675,675,675,675,675,675,675,675, -675,675,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, /* block 131 */ -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,680,681, +221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, /* block 132 */ -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224, 8, 7, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, - -/* block 133 */ -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -120,120,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,120,120,120,120,120,120,120,120, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +120,120,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,120,120,120,120,120,120,120,221, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -224,224,676,224,224,224,224,224,224,224,224,224,219,677,120,120, +225,225,682,225,225,225,225,225,225,225,225,225,219,683,221,221, -/* block 134 */ +/* block 133 */ 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, 5, 5, 5, 5, 5, 5, 5, 7, 8, 5,120,120,120,120,120,120, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,552,552, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,557,557, 5, 10, 10, 16, 16, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, - 8, 7, 8, 7, 8,556,556, 7, 8, 5, 5, 5, 5, 16, 16, 16, + 8, 7, 8, 7, 8,561,561, 7, 8, 5, 5, 5, 5, 16, 16, 16, 5, 5, 5,120, 5, 5, 5, 5, 10, 7, 8, 7, 8, 7, 8, 5, 5, 5, 9, 10, 9, 9, 9,120, 5, 6, 5, 5,120,120,120,120, -224,224,224,224,224,120,224,224,224,224,224,224,224,224,224,224, +225,225,225,225,225,120,225,225,225,225,225,225,225,225,225,225, -/* block 135 */ -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,120,120, 24, +/* block 134 */ +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,120,120, 24, -/* block 136 */ +/* block 135 */ 120, 5, 5, 5, 6, 5, 5, 5, 7, 8, 5, 9, 5, 10, 5, 5, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 5, 5, 9, 9, 9, 5, 5, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 7, 5, 8, 15, 16, 15, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 7, 9, 8, 9, 7, - 8,555,560,561,555,555,578,578,578,578,578,578,578,578,578,578, -569,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, + 8,560,565,566,560,560,583,583,583,583,583,583,583,583,583,583, +574,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583, -/* block 137 */ -578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, -578,578,578,578,578,578,578,578,578,578,578,578,578,578,678,678, -581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581, -581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,120, -120,120,581,581,581,581,581,581,120,120,581,581,581,581,581,581, -120,120,581,581,581,581,581,581,120,120,581,581,581,120,120,120, +/* block 136 */ +583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583, +583,583,583,583,583,583,583,583,583,583,583,583,583,583,684,684, +586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, +586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,120, +120,120,586,586,586,586,586,586,120,120,586,586,586,586,586,586, +120,120,586,586,586,586,586,586,120,120,586,586,586,120,120,120, 6, 6, 9, 15, 20, 6, 6,120, 20, 9, 9, 9, 9, 20, 20,120, -511,511,511,511,511,511,511,511,511, 24, 24, 24, 20, 20,120,120, +516,516,516,516,516,516,516,516,516, 24, 24, 24, 20, 20,120,120, -/* block 138 */ -679,679,679,679,679,679,679,679,679,679,679,679,120,679,679,679, -679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679, -679,679,679,679,679,679,679,120,679,679,679,679,679,679,679,679, -679,679,679,679,679,679,679,679,679,679,679,120,679,679,120,679, -679,679,679,679,679,679,679,679,679,679,679,679,679,679,120,120, -679,679,679,679,679,679,679,679,679,679,679,679,679,679,120,120, +/* block 137 */ +685,685,685,685,685,685,685,685,685,685,685,685,120,685,685,685, +685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685, +685,685,685,685,685,685,685,120,685,685,685,685,685,685,685,685, +685,685,685,685,685,685,685,685,685,685,685,120,685,685,120,685, +685,685,685,685,685,685,685,685,685,685,685,685,685,685,120,120, +685,685,685,685,685,685,685,685,685,685,685,685,685,685,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +/* block 138 */ +685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685, +685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685, +685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685, +685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685, +685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685, +685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685, +685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685, +685,685,685,685,685,685,685,685,685,685,685,120,120,120,120,120, + /* block 139 */ -679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679, -679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679, -679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679, -679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679, -679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679, -679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679, -679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679, -679,679,679,679,679,679,679,679,679,679,679,120,120,120,120,120, +686,686,687,120,120,120,120,688,688,688,688,688,688,688,688,688, +688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688, +688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688, +688,688,688,688,120,120,120,689,689,689,689,689,689,689,689,689, +690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690, +690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690, +690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690, +690,690,690,690,690,691,691,691,691,692,692,692,692,692,692,692, /* block 140 */ -680,680,680,120,120,120,120,681,681,681,681,681,681,681,681,681, -681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681, -681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681, -681,681,681,681,120,120,120,682,682,682,682,682,682,682,682,682, -683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683, -683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683, -683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683, -683,683,683,683,683,684,684,684,684,685,685,685,685,685,685,685, - -/* block 141 */ -685,685,685,685,685,685,685,685,685,685,684,684,685,685,685,120, +692,692,692,692,692,692,692,692,692,692,691,691,692,692,692,120, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,120,120,120, -685,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +692,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,113,120,120, -/* block 142 */ +/* block 141 */ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, @@ -3148,499 +3164,519 @@ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 143 */ -686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686, -686,686,686,686,686,686,686,686,686,686,686,686,686,120,120,120, -687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687, -687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687, -687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687, -687,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -688,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689, -689,689,689,689,689,689,689,689,689,689,689,689,120,120,120,120, - -/* block 144 */ -690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690, -690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690, -691,691,691,691,120,120,120,120,120,120,120,120,120,690,690,690, -692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692, -692,693,692,692,692,692,692,692,692,692,693,120,120,120,120,120, +/* block 142 */ +693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, +693,693,693,693,693,693,693,693,693,693,693,693,693,120,120,120, 694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694, 694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694, -694,694,694,694,694,694,695,695,695,695,695,120,120,120,120,120, - -/* block 145 */ -696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696, -696,696,696,696,696,696,696,696,696,696,696,696,696,696,120,697, -698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698, -698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698, -698,698,698,698,120,120,120,120,698,698,698,698,698,698,698,698, -699,700,700,700,700,700,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694, +694,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +695,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696, +696,696,696,696,696,696,696,696,696,696,696,696,120,120,120,120, -/* block 146 */ +/* block 143 */ +697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697, +697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697, +698,698,698,698,120,120,120,120,120,120,120,120,120,697,697,697, +699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699, +699,700,699,699,699,699,699,699,699,699,700,120,120,120,120,120, 701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701, 701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701, -701,701,701,701,701,701,701,701,702,702,702,702,702,702,702,702, -702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702, -702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702, -703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703, -703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703, -703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703, +701,701,701,701,701,701,702,702,702,702,702,120,120,120,120,120, -/* block 147 */ -704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704, -704,704,704,704,704,704,704,704,704,704,704,704,704,704,120,120, -705,705,705,705,705,705,705,705,705,705,120,120,120,120,120,120, -706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706, -706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706, -706,706,706,706,120,120,120,120,707,707,707,707,707,707,707,707, -707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707, -707,707,707,707,707,707,707,707,707,707,707,707,120,120,120,120, +/* block 144 */ +703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703, +703,703,703,703,703,703,703,703,703,703,703,703,703,703,120,704, +705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705, +705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705, +705,705,705,705,120,120,120,120,705,705,705,705,705,705,705,705, +706,707,707,707,707,707,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 148 */ +/* block 145 */ 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,120,120,120,120,120,120,120,120, +708,708,708,708,708,708,708,708,709,709,709,709,709,709,709,709, 709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709, 709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709, -709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709, -709,709,709,709,120,120,120,120,120,120,120,120,120,120,120,710, +710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710, +710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710, +710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710, + +/* block 146 */ +711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711, +711,711,711,711,711,711,711,711,711,711,711,711,711,711,120,120, +712,712,712,712,712,712,712,712,712,712,120,120,120,120,120,120, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, +713,713,713,713,120,120,120,120,714,714,714,714,714,714,714,714, +714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714, +714,714,714,714,714,714,714,714,714,714,714,714,120,120,120,120, + +/* block 147 */ +715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715, +715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715, +715,715,715,715,715,715,715,715,120,120,120,120,120,120,120,120, +716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716, +716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716, +716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716, +716,716,716,716,120,120,120,120,120,120,120,120,120,120,120,717, +718,718,718,718,718,718,718,718,718,718,718,120,718,718,718,718, + +/* block 148 */ +718,718,718,718,718,718,718,718,718,718,718,120,718,718,718,718, +718,718,718,120,718,718,120,719,719,719,719,719,719,719,719,719, +719,719,120,719,719,719,719,719,719,719,719,719,719,719,719,719, +719,719,120,719,719,719,719,719,719,719,120,719,719,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 149 */ -711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711, -711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711, -711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711, -711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711, -711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711, -711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711, -711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711, -711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711, +720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720, +720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720, +720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720, +720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720, +720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720, +720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720, +720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720, +720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720, /* block 150 */ -711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711, -711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711, -711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711, -711,711,711,711,711,711,711,120,120,120,120,120,120,120,120,120, -711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711, -711,711,711,711,711,711,120,120,120,120,120,120,120,120,120,120, -711,711,711,711,711,711,711,711,120,120,120,120,120,120,120,120, +720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720, +720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720, +720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720, +720,720,720,720,720,720,720,120,120,120,120,120,120,120,120,120, +720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720, +720,720,720,720,720,720,120,120,120,120,120,120,120,120,120,120, +720,720,720,720,720,720,720,720,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 151 */ -712,712,712,712,712,712,120,120,712,120,712,712,712,712,712,712, -712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712, -712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712, -712,712,712,712,712,712,120,712,712,120,120,120,712,120,120,712, -713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, -713,713,713,713,713,713,120,714,715,715,715,715,715,715,715,715, -716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716, -716,716,716,716,716,716,716,717,717,718,718,718,718,718,718,718, - -/* block 152 */ -719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719, -719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,120, -120,120,120,120,120,120,120,720,720,720,720,720,720,720,720,720, +110,110,110,110,110,110,120,110,110,110,110,110,110,110,110,110, +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, +110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110, +110,120,110,110,110,110,110,110,110,110,110,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, + +/* block 152 */ +721,721,721,721,721,721,120,120,721,120,721,721,721,721,721,721, +721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721, 721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721, -721,721,721,120,721,721,120,120,120,120,120,722,722,722,722,722, +721,721,721,721,721,721,120,721,721,120,120,120,721,120,120,721, +722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722, +722,722,722,722,722,722,120,723,724,724,724,724,724,724,724,724, +725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725, +725,725,725,725,725,725,725,726,726,727,727,727,727,727,727,727, /* block 153 */ -723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723, -723,723,723,723,723,723,724,724,724,724,724,724,120,120,120,725, -726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726, -726,726,726,726,726,726,726,726,726,726,120,120,120,120,120,727, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728, +728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,120, +120,120,120,120,120,120,120,729,729,729,729,729,729,729,729,729, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730, +730,730,730,120,730,730,120,120,120,120,120,731,731,731,731,731, /* block 154 */ -728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728, -728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728, -729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729, -729,729,729,729,729,729,729,729,120,120,120,120,730,730,729,729, -730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730, -120,120,730,730,730,730,730,730,730,730,730,730,730,730,730,730, -730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730, -730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730, +732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732, +732,732,732,732,732,732,733,733,733,733,733,733,120,120,120,734, +735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735, +735,735,735,735,735,735,735,735,735,735,120,120,120,120,120,736, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 155 */ -731,732,732,732,120,732,732,120,120,120,120,120,732,732,732,732, -731,731,731,731,120,731,731,731,120,731,731,731,731,731,731,731, -731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731, -731,731,731,731,731,731,120,120,732,732,732,120,120,120,120,732, -733,733,733,733,733,733,733,733,733,120,120,120,120,120,120,120, -734,734,734,734,734,734,734,734,734,120,120,120,120,120,120,120, -735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735, -735,735,735,735,735,735,735,735,735,735,735,735,735,736,736,737, +737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737, +737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737, +738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738, +738,738,738,738,738,738,738,738,120,120,120,120,739,739,738,738, +739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739, +120,120,739,739,739,739,739,739,739,739,739,739,739,739,739,739, +739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739, +739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739, /* block 156 */ -738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738, -738,738,738,738,738,738,738,738,738,738,738,738,738,739,739,739, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -740,740,740,740,740,740,740,740,741,740,740,740,740,740,740,740, +740,741,741,741,120,741,741,120,120,120,120,120,741,741,741,741, +740,740,740,740,120,740,740,740,120,740,740,740,740,740,740,740, 740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740, -740,740,740,740,740,742,742,120,120,120,120,743,743,743,743,743, -744,744,744,744,744,744,744,120,120,120,120,120,120,120,120,120, +740,740,740,740,740,740,120,120,741,741,741,120,120,120,120,741, +742,742,742,742,742,742,742,742,742,120,120,120,120,120,120,120, +743,743,743,743,743,743,743,743,743,120,120,120,120,120,120,120, +744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744, +744,744,744,744,744,744,744,744,744,744,744,744,744,745,745,746, /* block 157 */ -745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745, -745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745, -745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745, -745,745,745,745,745,745,120,120,120,746,746,746,746,746,746,746, 747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747, -747,747,747,747,747,747,120,120,748,748,748,748,748,748,748,748, +747,747,747,747,747,747,747,747,747,747,747,747,747,748,748,748, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +749,749,749,749,749,749,749,749,750,749,749,749,749,749,749,749, 749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749, -749,749,749,120,120,120,120,120,750,750,750,750,750,750,750,750, +749,749,749,749,749,751,751,120,120,120,120,752,752,752,752,752, +753,753,754,753,753,753,753,120,120,120,120,120,120,120,120,120, /* block 158 */ -751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751, -751,751,120,120,120,120,120,120,120,752,752,752,752,120,120,120, -120,120,120,120,120,120,120,120,120,753,753,753,753,753,753,753, +755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755, +755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755, +755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755, +755,755,755,755,755,755,120,120,120,756,756,756,756,756,756,756, +757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757, +757,757,757,757,757,757,120,120,758,758,758,758,758,758,758,758, +759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, +759,759,759,120,120,120,120,120,760,760,760,760,760,760,760,760, + +/* block 159 */ +761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761, +761,761,120,120,120,120,120,120,120,762,762,762,762,120,120,120, +120,120,120,120,120,120,120,120,120,763,763,763,763,763,763,763, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 159 */ -754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754, -754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754, -754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754, -754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754, -754,754,754,754,754,754,754,754,754,120,120,120,120,120,120,120, +/* block 160 */ +764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764, +764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764, +764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764, +764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764, +764,764,764,764,764,764,764,764,764,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 160 */ -755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755, -755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755, -755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755, -755,755,755,120,120,120,120,120,120,120,120,120,120,120,120,120, -756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756, -756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756, -756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756, -756,756,756,120,120,120,120,120,120,120,757,757,757,757,757,757, - /* block 161 */ -758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758, -758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758, -758,758,758,758,759,759,759,759,120,120,120,120,120,120,120,120, -760,760,760,760,760,760,760,760,760,760,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765, +765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765, +765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765, +765,765,765,120,120,120,120,120,120,120,120,120,120,120,120,120, +766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766, +766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766, +766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766, +766,766,766,120,120,120,120,120,120,120,767,767,767,767,767,767, /* block 162 */ +768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768, +768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768, +768,768,768,768,769,769,769,769,120,120,120,120,120,120,120,120, +770,770,770,770,770,770,770,770,770,770,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761, -761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,120, /* block 163 */ -762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762, -762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762, -762,762,762,762,762,762,762,762,762,762,120,763,763,764,120,120, -762,762,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771, +771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,120, /* block 164 */ -765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765, -765,765,765,765,765,765,765,765,765,765,765,765,765,766,766,766, -766,766,766,766,766,766,766,765,120,120,120,120,120,120,120,120, -767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767, -767,767,767,767,767,767,768,768,768,768,768,768,768,768,768,768, -768,769,769,769,769,770,770,770,770,770,120,120,120,120,120,120, +772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772, +772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772, +772,772,772,772,772,772,772,772,772,772,120,773,773,774,120,120, +772,772,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 165 */ +775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775, +775,775,775,775,775,775,775,775,775,775,775,775,775,776,776,776, +776,776,776,776,776,776,776,775,120,120,120,120,120,120,120,120, +777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777, +777,777,777,777,777,777,778,778,778,778,778,778,778,778,778,778, +778,779,779,779,779,780,780,780,780,780,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781, + +/* block 166 */ +781,781,782,782,782,782,783,783,783,783,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771, -771,771,771,771,771,772,772,772,772,772,772,772,120,120,120,120, +784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784, +784,784,784,784,784,785,785,785,785,785,785,785,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773, -773,773,773,773,773,773,773,120,120,120,120,120,120,120,120,120, - -/* block 166 */ -774,775,774,776,776,776,776,776,776,776,776,776,776,776,776,776, -776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776, -776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776, -776,776,776,776,776,776,776,776,775,775,775,775,775,775,775,775, -775,775,775,775,775,775,775,777,777,777,777,777,777,777,120,120, -120,120,778,778,778,778,778,778,778,778,778,778,778,778,778,778, -778,778,778,778,778,778,779,779,779,779,779,779,779,779,779,779, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,775, +786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786, +786,786,786,786,786,786,786,120,120,120,120,120,120,120,120,120, /* block 167 */ -780,780,781,782,782,782,782,782,782,782,782,782,782,782,782,782, -782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782, -782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782, -781,781,781,780,780,780,780,781,781,780,780,783,783,784,783,783, -783,783,120,120,120,120,120,120,120,120,120,120,120,784,120,120, -785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785, -785,785,785,785,785,785,785,785,785,120,120,120,120,120,120,120, -786,786,786,786,786,786,786,786,786,786,120,120,120,120,120,120, +787,788,787,789,789,789,789,789,789,789,789,789,789,789,789,789, +789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789, +789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789, +789,789,789,789,789,789,789,789,788,788,788,788,788,788,788,788, +788,788,788,788,788,788,788,790,790,790,790,790,790,790,120,120, +120,120,791,791,791,791,791,791,791,791,791,791,791,791,791,791, +791,791,791,791,791,791,792,792,792,792,792,792,792,792,792,792, +788,789,789,788,788,789,120,120,120,120,120,120,120,120,120,788, /* block 168 */ -787,787,787,788,788,788,788,788,788,788,788,788,788,788,788,788, -788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788, -788,788,788,788,788,788,788,787,787,787,787,787,789,787,787,787, -787,787,787,787,787,120,790,790,790,790,790,790,790,790,790,790, -791,791,791,791,788,789,789,788,120,120,120,120,120,120,120,120, -792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792, -792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792, -792,792,792,793,794,794,792,120,120,120,120,120,120,120,120,120, +793,793,794,795,795,795,795,795,795,795,795,795,795,795,795,795, +795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795, +795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795, +794,794,794,793,793,793,793,794,794,793,793,796,796,797,796,796, +796,796,793,120,120,120,120,120,120,120,120,120,120,797,120,120, +798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798, +798,798,798,798,798,798,798,798,798,120,120,120,120,120,120,120, +799,799,799,799,799,799,799,799,799,799,120,120,120,120,120,120, /* block 169 */ -795,795,796,797,797,797,797,797,797,797,797,797,797,797,797,797, -797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797, -797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797, -797,797,797,796,796,796,795,795,795,795,795,795,795,795,795,796, -796,797,798,798,797,799,799,799,799,795,795,795,795,799,796,795, -800,800,800,800,800,800,800,800,800,800,797,799,797,799,799,799, -120,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801, -801,801,801,801,801,120,120,120,120,120,120,120,120,120,120,120, +800,800,800,801,801,801,801,801,801,801,801,801,801,801,801,801, +801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801, +801,801,801,801,801,801,801,800,800,800,800,800,802,800,800,800, +800,800,800,800,800,120,803,803,803,803,803,803,803,803,803,803, +804,804,804,804,801,802,802,801,120,120,120,120,120,120,120,120, +805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805, +805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805, +805,805,805,806,807,807,805,120,120,120,120,120,120,120,120,120, /* block 170 */ -802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802, -802,802,120,802,802,802,802,802,802,802,802,802,802,802,802,802, -802,802,802,802,802,802,802,802,802,802,802,802,803,803,803,804, -804,804,803,803,804,803,804,804,805,805,805,805,805,805,804,120, +808,808,809,810,810,810,810,810,810,810,810,810,810,810,810,810, +810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810, +810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810, +810,810,810,809,809,809,808,808,808,808,808,808,808,808,808,809, +809,810,811,811,810,812,812,812,812,808,808,808,808,812,809,808, +813,813,813,813,813,813,813,813,813,813,810,812,810,812,812,812, +120,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814, +814,814,814,814,814,120,120,120,120,120,120,120,120,120,120,120, + +/* block 171 */ +815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815, +815,815,120,815,815,815,815,815,815,815,815,815,815,815,815,815, +815,815,815,815,815,815,815,815,815,815,815,815,816,816,816,817, +817,817,816,816,817,816,817,817,818,818,818,818,818,818,817,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 171 */ -806,806,806,806,806,806,806,120,806,120,806,806,806,806,120,806, -806,806,806,806,806,806,806,806,806,806,806,806,806,806,120,806, -806,806,806,806,806,806,806,806,806,807,120,120,120,120,120,120, -808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808, -808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808, -808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,809, -810,810,810,809,809,809,809,809,809,809,809,120,120,120,120,120, -811,811,811,811,811,811,811,811,811,811,120,120,120,120,120,120, - /* block 172 */ -812,813,814,815,120,816,816,816,816,816,816,816,816,120,120,816, -816,120,120,816,816,816,816,816,816,816,816,816,816,816,816,816, -816,816,816,816,816,816,816,816,816,120,816,816,816,816,816,816, -816,120,816,816,120,816,816,816,816,816,120,817,813,816,818,814, -812,814,814,814,814,120,120,814,814,120,120,814,814,814,120,120, -816,120,120,120,120,120,120,818,120,120,120,120,120,816,816,816, -816,816,814,814,120,120,812,812,812,812,812,812,812,120,120,120, -812,812,812,812,812,120,120,120,120,120,120,120,120,120,120,120, +819,819,819,819,819,819,819,120,819,120,819,819,819,819,120,819, +819,819,819,819,819,819,819,819,819,819,819,819,819,819,120,819, +819,819,819,819,819,819,819,819,819,820,120,120,120,120,120,120, +821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821, +821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821, +821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,822, +823,823,823,822,822,822,822,822,822,822,822,120,120,120,120,120, +824,824,824,824,824,824,824,824,824,824,120,120,120,120,120,120, /* block 173 */ -819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819, -819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819, -819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819, -819,819,819,819,819,820,820,820,821,821,821,821,821,821,821,821, -820,820,821,821,821,820,821,819,819,819,819,822,822,822,822,822, -823,823,823,823,823,823,823,823,823,823,822,822,120,822,821,819, -819,819,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +825,826,827,828,120,829,829,829,829,829,829,829,829,120,120,829, +829,120,120,829,829,829,829,829,829,829,829,829,829,829,829,829, +829,829,829,829,829,829,829,829,829,120,829,829,829,829,829,829, +829,120,829,829,120,829,829,829,829,829,120,830,826,829,831,827, +825,827,827,827,827,120,120,827,827,120,120,827,827,827,120,120, +829,120,120,120,120,120,120,831,120,120,120,120,120,829,829,829, +829,829,827,827,120,120,825,825,825,825,825,825,825,120,120,120, +825,825,825,825,825,120,120,120,120,120,120,120,120,120,120,120, /* block 174 */ -824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824, -824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824, -824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824, -825,826,826,827,827,827,827,827,827,826,827,826,826,825,826,827, -827,826,827,827,824,824,828,824,120,120,120,120,120,120,120,120, -829,829,829,829,829,829,829,829,829,829,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832, +832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832, +832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832, +832,832,832,832,832,833,833,833,834,834,834,834,834,834,834,834, +833,833,834,834,834,833,834,832,832,832,832,835,835,835,835,835, +836,836,836,836,836,836,836,836,836,836,835,835,120,835,834,832, +832,832,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 175 */ -830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830, -830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830, -830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,831, -832,832,833,833,833,833,120,120,832,832,832,832,833,833,832,833, -833,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834, -834,834,834,834,834,834,834,834,830,830,830,830,833,833,120,120, +837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837, +837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837, +837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837, +838,839,839,840,840,840,840,840,840,839,840,839,839,838,839,840, +840,839,840,840,837,837,841,837,120,120,120,120,120,120,120,120, +842,842,842,842,842,842,842,842,842,842,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 176 */ -835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835, -835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835, -835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835, -836,836,836,837,837,837,837,837,837,837,837,836,836,837,836,837, -837,838,838,838,835,120,120,120,120,120,120,120,120,120,120,120, -839,839,839,839,839,839,839,839,839,839,120,120,120,120,120,120, -394,394,394,394,394,394,394,394,394,394,394,394,394,120,120,120, +843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843, +843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843, +843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,844, +845,845,846,846,846,846,120,120,845,845,845,845,846,846,845,846, +846,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847, +847,847,847,847,847,847,847,847,843,843,843,843,846,846,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 177 */ -840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840, -840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840, -840,840,840,840,840,840,840,840,840,840,840,841,842,841,842,842, -841,841,841,841,841,841,842,841,840,120,120,120,120,120,120,120, -843,843,843,843,843,843,843,843,843,843,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848, +848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848, +848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848, +849,849,849,850,850,850,850,850,850,850,850,849,849,850,849,850, +850,851,851,851,848,120,120,120,120,120,120,120,120,120,120,120, +852,852,852,852,852,852,852,852,852,852,120,120,120,120,120,120, +398,398,398,398,398,398,398,398,398,398,398,398,398,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 178 */ -844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844, -844,844,844,844,844,844,844,844,844,844,844,120,120,845,845,845, -846,846,845,845,845,845,846,845,845,845,845,845,120,120,120,120, -847,847,847,847,847,847,847,847,847,847,848,848,849,849,849,850, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853, +853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853, +853,853,853,853,853,853,853,853,853,853,853,854,855,854,855,855, +854,854,854,854,854,854,855,854,853,856,120,120,120,120,120,120, +857,857,857,857,857,857,857,857,857,857,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 179 */ -851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851, -851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851, -851,851,851,851,851,851,851,851,851,851,851,851,852,852,852,853, -853,853,853,853,853,853,853,853,852,853,853,854,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858, +858,858,858,858,858,858,858,858,858,858,858,120,120,859,859,859, +860,860,859,859,859,859,861,859,859,859,859,859,120,120,120,120, +862,862,862,862,862,862,862,862,862,862,863,863,864,864,864,865, +858,858,858,858,858,858,858,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 180 */ +866,866,866,866,866,866,866,866,866,866,866,866,866,866,866,866, +866,866,866,866,866,866,866,866,866,866,866,866,866,866,866,866, +866,866,866,866,866,866,866,866,866,866,866,866,867,867,867,868, +868,868,868,868,868,868,868,868,867,868,868,869,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855, -855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855, -856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856, -856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856, -857,857,857,857,857,857,857,857,857,857,858,858,858,858,858,858, -858,858,858,120,120,120,120,120,120,120,120,120,120,120,120,859, /* block 181 */ -860,860,860,860,860,860,860,120,120,860,120,120,860,860,860,860, -860,860,860,860,120,860,860,120,860,860,860,860,860,860,860,860, -860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860, -861,862,862,862,862,862,120,862,862,120,120,863,863,862,863,864, -862,864,862,863,865,865,865,120,120,120,120,120,120,120,120,120, -866,866,866,866,866,866,866,866,866,866,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +870,870,870,870,870,870,870,870,870,870,870,870,870,870,870,870, +870,870,870,870,870,870,870,870,870,870,870,870,870,870,870,870, +871,871,871,871,871,871,871,871,871,871,871,871,871,871,871,871, +871,871,871,871,871,871,871,871,871,871,871,871,871,871,871,871, +872,872,872,872,872,872,872,872,872,872,873,873,873,873,873,873, +873,873,873,120,120,120,120,120,120,120,120,120,120,120,120,874, /* block 182 */ +875,875,875,875,875,875,875,120,120,875,120,120,875,875,875,875, +875,875,875,875,120,875,875,120,875,875,875,875,875,875,875,875, +875,875,875,875,875,875,875,875,875,875,875,875,875,875,875,875, +876,877,877,877,877,877,120,877,877,120,120,878,878,877,878,879, +877,879,877,878,880,880,880,120,120,120,120,120,120,120,120,120, +881,881,881,881,881,881,881,881,881,881,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -867,867,867,867,867,867,867,867,120,120,867,867,867,867,867,867, -867,867,867,867,867,867,867,867,867,867,867,867,867,867,867,867, -867,867,867,867,867,867,867,867,867,867,867,867,867,867,867,867, -867,868,868,868,869,869,869,869,120,120,869,869,868,868,868,868, -869,867,870,867,868,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 183 */ -871,872,872,872,872,872,872,872,872,872,872,871,871,871,871,871, -871,871,871,871,871,871,871,871,871,871,871,871,871,871,871,871, -871,871,871,871,871,871,871,871,871,871,871,871,871,871,871,871, -871,871,871,872,872,872,872,872,872,873,874,872,872,872,872,875, -875,875,875,875,875,875,875,872,120,120,120,120,120,120,120,120, -876,877,877,877,877,877,877,878,878,877,877,877,876,876,876,876, -876,876,876,876,876,876,876,876,876,876,876,876,876,876,876,876, -876,876,876,876,876,876,876,876,876,876,876,876,876,876,876,876, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +882,882,882,882,882,882,882,882,120,120,882,882,882,882,882,882, +882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882, +882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882, +882,883,883,883,884,884,884,884,120,120,884,884,883,883,883,883, +884,882,885,882,883,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 184 */ -876,876,876,876,879,879,879,879,879,879,877,877,877,877,877,877, -877,877,877,877,877,877,877,878,877,877,880,880,880,876,880,880, -880,880,880,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881, -881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881, -881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881, -881,881,881,881,881,881,881,881,881,120,120,120,120,120,120,120, +886,887,887,887,887,887,887,887,887,887,887,886,886,886,886,886, +886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886, +886,886,886,886,886,886,886,886,886,886,886,886,886,886,886,886, +886,886,886,887,887,887,887,887,887,888,889,887,887,887,887,890, +890,890,890,890,890,890,890,887,120,120,120,120,120,120,120,120, +891,892,892,892,892,892,892,893,893,892,892,892,891,891,891,891, +891,891,891,891,891,891,891,891,891,891,891,891,891,891,891,891, +891,891,891,891,891,891,891,891,891,891,891,891,891,891,891,891, /* block 185 */ -882,882,882,882,882,882,882,882,882,120,882,882,882,882,882,882, -882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,882, -882,882,882,882,882,882,882,882,882,882,882,882,882,882,882,883, -884,884,884,884,884,884,884,120,884,884,884,884,884,884,883,884, -882,885,885,885,885,885,120,120,120,120,120,120,120,120,120,120, -886,886,886,886,886,886,886,886,886,886,887,887,887,887,887,887, -887,887,887,887,887,887,887,887,887,887,887,887,887,120,120,120, -888,888,889,889,889,889,889,889,889,889,889,889,889,889,889,889, +891,891,891,891,894,894,894,894,894,894,892,892,892,892,892,892, +892,892,892,892,892,892,892,893,892,892,895,895,895,891,895,895, +895,895,895,120,120,120,120,120,120,120,120,120,120,120,120,120, +370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, +896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896, +896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896, +896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896, +896,896,896,896,896,896,896,896,896,120,120,120,120,120,120,120, /* block 186 */ -889,889,889,889,889,889,889,889,889,889,889,889,889,889,889,889, -120,120,890,890,890,890,890,890,890,890,890,890,890,890,890,890, -890,890,890,890,890,890,890,890,120,891,890,890,890,890,890,890, -890,891,890,890,891,890,890,120,120,120,120,120,120,120,120,120, +897,897,897,897,897,897,897,897,897,120,897,897,897,897,897,897, +897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,897, +897,897,897,897,897,897,897,897,897,897,897,897,897,897,897,898, +899,899,899,899,899,899,899,120,899,899,899,899,899,899,898,899, +897,900,900,900,900,900,120,120,120,120,120,120,120,120,120,120, +901,901,901,901,901,901,901,901,901,901,902,902,902,902,902,902, +902,902,902,902,902,902,902,902,902,902,902,902,902,120,120,120, +903,903,904,904,904,904,904,904,904,904,904,904,904,904,904,904, + +/* block 187 */ +904,904,904,904,904,904,904,904,904,904,904,904,904,904,904,904, +120,120,905,905,905,905,905,905,905,905,905,905,905,905,905,905, +905,905,905,905,905,905,905,905,120,906,905,905,905,905,905,905, +905,906,905,905,906,905,905,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 187 */ -892,892,892,892,892,892,892,120,892,892,120,892,892,892,892,892, -892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892, -892,892,892,892,892,892,892,892,892,892,892,892,892,892,892,892, -892,893,893,893,893,893,893,120,120,120,893,120,893,893,120,893, -893,893,893,893,893,893,894,893,120,120,120,120,120,120,120,120, -895,895,895,895,895,895,895,895,895,895,120,120,120,120,120,120, -896,896,896,896,896,896,120,896,896,120,896,896,896,896,896,896, -896,896,896,896,896,896,896,896,896,896,896,896,896,896,896,896, - /* block 188 */ -896,896,896,896,896,896,896,896,896,896,897,897,897,897,897,120, -898,898,120,897,897,898,897,898,896,120,120,120,120,120,120,120, -899,899,899,899,899,899,899,899,899,899,120,120,120,120,120,120, +907,907,907,907,907,907,907,120,907,907,120,907,907,907,907,907, +907,907,907,907,907,907,907,907,907,907,907,907,907,907,907,907, +907,907,907,907,907,907,907,907,907,907,907,907,907,907,907,907, +907,908,908,908,908,908,908,120,120,120,908,120,908,908,120,908, +908,908,908,908,908,908,909,908,120,120,120,120,120,120,120,120, +910,910,910,910,910,910,910,910,910,910,120,120,120,120,120,120, +911,911,911,911,911,911,120,911,911,120,911,911,911,911,911,911, +911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911, + +/* block 189 */ +911,911,911,911,911,911,911,911,911,911,912,912,912,912,912,120, +913,913,120,912,912,913,912,913,911,120,120,120,120,120,120,120, +914,914,914,914,914,914,914,914,914,914,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 189 */ +/* block 190 */ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -900,900,900,900,900,900,900,900,900,900,900,900,900,900,900,900, -900,900,900,901,901,902,902,903,903,120,120,120,120,120,120,120, +915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915, +915,915,915,916,916,917,917,918,918,120,120,120,120,120,120,120, -/* block 190 */ +/* block 191 */ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -590,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -904,904,904,904,904,904,904,904,904,904,904,904,904,904,904,904, -293,293,904,293,904,295,295,295,295,295,295,295,295,296,296,296, -296,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295, -295,295,120,120,120,120,120,120,120,120,120,120,120,120,120,905, - -/* block 191 */ -906,906,906,906,906,906,906,906,906,906,906,906,906,906,906,906, -906,906,906,906,906,906,906,906,906,906,906,906,906,906,906,906, -906,906,906,906,906,906,906,906,906,906,906,906,906,906,906,906, -906,906,906,906,906,906,906,906,906,906,906,906,906,906,906,906, -906,906,906,906,906,906,906,906,906,906,906,906,906,906,906,906, -906,906,906,906,906,906,906,906,906,906,906,906,906,906,906,906, -906,906,906,906,906,906,906,906,906,906,906,906,906,906,906,906, -906,906,906,906,906,906,906,906,906,906,906,906,906,906,906,906, +595,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +919,919,919,919,919,919,919,919,919,919,919,919,919,919,919,919, +295,295,919,295,919,297,297,297,297,297,297,297,297,298,298,298, +298,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297, +297,297,120,120,120,120,120,120,120,120,120,120,120,120,120,920, /* block 192 */ -906,906,906,906,906,906,906,906,906,906,906,906,906,906,906,906, -906,906,906,906,906,906,906,906,906,906,120,120,120,120,120,120, +921,921,921,921,921,921,921,921,921,921,921,921,921,921,921,921, +921,921,921,921,921,921,921,921,921,921,921,921,921,921,921,921, +921,921,921,921,921,921,921,921,921,921,921,921,921,921,921,921, +921,921,921,921,921,921,921,921,921,921,921,921,921,921,921,921, +921,921,921,921,921,921,921,921,921,921,921,921,921,921,921,921, +921,921,921,921,921,921,921,921,921,921,921,921,921,921,921,921, +921,921,921,921,921,921,921,921,921,921,921,921,921,921,921,921, +921,921,921,921,921,921,921,921,921,921,921,921,921,921,921,921, + +/* block 193 */ +921,921,921,921,921,921,921,921,921,921,921,921,921,921,921,921, +921,921,921,921,921,921,921,921,921,921,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, @@ -3648,108 +3684,118 @@ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 193 */ -907,907,907,907,907,907,907,907,907,907,907,907,907,907,907,907, -907,907,907,907,907,907,907,907,907,907,907,907,907,907,907,907, -907,907,907,907,907,907,907,907,907,907,907,907,907,907,907,907, -907,907,907,907,907,907,907,907,907,907,907,907,907,907,907,907, -907,907,907,907,907,907,907,907,907,907,907,907,907,907,907,907, -907,907,907,907,907,907,907,907,907,907,907,907,907,907,907,907, -907,907,907,907,907,907,907,907,907,907,907,907,907,907,907,120, -908,908,908,908,908,120,120,120,120,120,120,120,120,120,120,120, - /* block 194 */ -906,906,906,906,906,906,906,906,906,906,906,906,906,906,906,906, -906,906,906,906,906,906,906,906,906,906,906,906,906,906,906,906, -906,906,906,906,906,906,906,906,906,906,906,906,906,906,906,906, -906,906,906,906,906,906,906,906,906,906,906,906,906,906,906,906, -906,906,906,906,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922, +922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922, +922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922, +922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922, +922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922, +922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,922, +922,922,922,922,922,922,922,922,922,922,922,922,922,922,922,120, +923,923,923,923,923,120,120,120,120,120,120,120,120,120,120,120, /* block 195 */ -909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909, -909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909, -909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909, -909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909, -909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909, -909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909, -909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909, -909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909, - -/* block 196 */ -909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909, -909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,909, -909,909,909,909,909,909,909,909,909,909,909,909,909,909,909,120, -910,910,910,910,910,910,910,910,910,120,120,120,120,120,120,120, +921,921,921,921,921,921,921,921,921,921,921,921,921,921,921,921, +921,921,921,921,921,921,921,921,921,921,921,921,921,921,921,921, +921,921,921,921,921,921,921,921,921,921,921,921,921,921,921,921, +921,921,921,921,921,921,921,921,921,921,921,921,921,921,921,921, +921,921,921,921,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, + +/* block 196 */ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924, +924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924, +924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924, +924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924, +924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924, +924,924,924,924,924,924,924,924,924,924,924,924,924,924,924,924, +924,925,925,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 197 */ -911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911, -911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911, -911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911, -911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911, -911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911, -911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911, -911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911, -911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911, +926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926, +926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926, +926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926, +926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926, +926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926, +926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926, +926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926, +926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926, /* block 198 */ -911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911, -911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911, -911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911, -911,911,911,911,911,911,911,911,911,911,911,911,911,911,911,911, -911,911,911,911,911,911,911,120,120,120,120,120,120,120,120,120, +926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926, +926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926, +926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,120, +927,927,927,927,927,927,927,927,927,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 199 */ -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, +928,928,928,928,928,928,928,928,928,928,928,928,928,928,928,928, +928,928,928,928,928,928,928,928,928,928,928,928,928,928,928,928, +928,928,928,928,928,928,928,928,928,928,928,928,928,928,928,928, +928,928,928,928,928,928,928,928,928,928,928,928,928,928,928,928, +928,928,928,928,928,928,928,928,928,928,928,928,928,928,928,928, +928,928,928,928,928,928,928,928,928,928,928,928,928,928,928,928, +928,928,928,928,928,928,928,928,928,928,928,928,928,928,928,928, +928,928,928,928,928,928,928,928,928,928,928,928,928,928,928,928, /* block 200 */ -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, -601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, -601,601,601,601,601,601,601,601,601,120,120,120,120,120,120,120, -912,912,912,912,912,912,912,912,912,912,912,912,912,912,912,912, -912,912,912,912,912,912,912,912,912,912,912,912,912,912,912,120, -913,913,913,913,913,913,913,913,913,913,120,120,120,120,914,914, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, - -/* block 201 */ +928,928,928,928,928,928,928,928,928,928,928,928,928,928,928,928, +928,928,928,928,928,928,928,928,928,928,928,928,928,928,928,928, +928,928,928,928,928,928,928,928,928,928,928,928,928,928,928,928, +928,928,928,928,928,928,928,928,928,928,928,928,928,928,928,928, +928,928,928,928,928,928,928,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915, -915,915,915,915,915,915,915,915,915,915,915,915,915,915,120,120, -916,916,916,916,916,917,120,120,120,120,120,120,120,120,120,120, + +/* block 201 */ +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, /* block 202 */ -918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918, -918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918, -918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918, -919,919,919,919,919,919,919,920,920,920,920,920,921,921,921,921, -922,922,922,922,920,921,120,120,120,120,120,120,120,120,120,120, -923,923,923,923,923,923,923,923,923,923,120,924,924,924,924,924, -924,924,120,918,918,918,918,918,918,918,918,918,918,918,918,918, -918,918,918,918,918,918,918,918,120,120,120,120,120,918,918,918, +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, +606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, +606,606,606,606,606,606,606,606,606,120,120,120,120,120,120,120, +929,929,929,929,929,929,929,929,929,929,929,929,929,929,929,929, +929,929,929,929,929,929,929,929,929,929,929,929,929,929,929,120, +930,930,930,930,930,930,930,930,930,930,120,120,120,120,931,931, +932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932, /* block 203 */ -918,918,918,918,918,918,918,918,918,918,918,918,918,918,918,918, +932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932, +932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932, +932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932, +932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,120, +933,933,933,933,933,933,933,933,933,933,120,120,120,120,120,120, +934,934,934,934,934,934,934,934,934,934,934,934,934,934,934,934, +934,934,934,934,934,934,934,934,934,934,934,934,934,934,120,120, +935,935,935,935,935,936,120,120,120,120,120,120,120,120,120,120, + +/* block 204 */ +937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, +937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, +937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, +938,938,938,938,938,938,938,939,939,939,939,939,940,940,940,940, +941,941,941,941,939,940,120,120,120,120,120,120,120,120,120,120, +942,942,942,942,942,942,942,942,942,942,120,943,943,943,943,943, +943,943,120,937,937,937,937,937,937,937,937,937,937,937,937,937, +937,937,937,937,937,937,937,937,120,120,120,120,120,937,937,937, + +/* block 205 */ +937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, @@ -3758,19 +3804,19 @@ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 204 */ +/* block 206 */ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -925,925,925,925,925,925,925,925,925,925,925,925,925,925,925,925, -925,925,925,925,925,925,925,925,925,925,925,925,925,925,925,925, -926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926, -926,926,926,926,926,926,926,926,926,926,926,926,926,926,926,926, +944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944, +944,944,944,944,944,944,944,944,944,944,944,944,944,944,944,944, +945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945, +945,945,945,945,945,945,945,945,945,945,945,945,945,945,945,945, -/* block 205 */ -927,927,927,927,927,927,927,927,927,927,927,927,927,927,927,927, -927,927,927,927,927,927,927,928,928,928,928,120,120,120,120,120, +/* block 207 */ +946,946,946,946,946,946,946,946,946,946,946,946,946,946,946,946, +946,946,946,946,946,946,946,947,947,947,947,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, @@ -3778,68 +3824,68 @@ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 206 */ -929,929,929,929,929,929,929,929,929,929,929,929,929,929,929,929, -929,929,929,929,929,929,929,929,929,929,929,929,929,929,929,929, -929,929,929,929,929,929,929,929,929,929,929,929,929,929,929,929, -929,929,929,929,929,929,929,929,929,929,929,929,929,929,929,929, -929,929,929,929,929,929,929,929,929,929,929,120,120,120,120,930, -929,931,931,931,931,931,931,931,931,931,931,931,931,931,931,931, -931,931,931,931,931,931,931,931,931,931,931,931,931,931,931,931, -931,931,931,931,931,931,931,931,931,931,931,931,931,931,931,931, +/* block 208 */ +948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948, +948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948, +948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948, +948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948, +948,948,948,948,948,948,948,948,948,948,948,120,120,120,120,949, +948,950,950,950,950,950,950,950,950,950,950,950,950,950,950,950, +950,950,950,950,950,950,950,950,950,950,950,950,950,950,950,950, +950,950,950,950,950,950,950,950,950,950,950,950,950,950,950,950, -/* block 207 */ -931,931,931,931,931,931,931,931,120,120,120,120,120,120,120,930, -930,930,930,932,932,932,932,932,932,932,932,932,932,932,932,932, +/* block 209 */ +950,950,950,950,950,950,950,950,120,120,120,120,120,120,120,949, +949,949,949,951,951,951,951,951,951,951,951,951,951,951,951,951, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -933,934, 5,111,935,120,120,120,120,120,120,120,120,120,120,120, -936,936,120,120,120,120,120,120,120,120,120,120,120,120,120,120, - -/* block 208 */ -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, - -/* block 209 */ -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, -937,937,937,937,937,937,937,937,937,937,937,937,937,937,937,937, -937,937,937,937,937,937,937,937,120,120,120,120,120,120,120,120, +952,953,954,562,955,120,120,120,120,120,120,120,120,120,120,120, +956,956,120,120,120,120,120,120,120,120,120,120,120,120,120,120, /* block 210 */ -938,938,938,938,938,938,938,938,938,938,938,938,938,938,938,938, -938,938,938,938,938,938,938,938,938,938,938,938,938,938,938,938, -938,938,938,938,938,938,938,938,938,938,938,938,938,938,938,938, -938,938,938,938,938,938,938,938,938,938,938,938,938,938,938,938, -938,938,938,938,938,938,938,938,938,938,938,938,938,938,938,938, -938,938,938,938,938,938,938,938,938,938,938,938,938,938,938,938, -938,938,938,938,938,938,938,938,938,938,938,938,938,938,938,938, -938,938,938,938,938,938,938,938,938,938,938,938,938,938,938,938, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, /* block 211 */ -938,938,938,938,938,938,938,938,938,938,938,938,938,938,938,938, -938,938,938,938,938,938,938,938,938,938,938,938,938,938,938,938, -938,938,938,938,938,938,938,938,938,938,938,938,938,938,938,938, -938,938,938,938,938,938,938,938,938,938,938,938,938,938,938,938, -938,938,938,938,938,938,938,938,938,938,938,938,938,938,938,938, -938,938,938,938,938,938,120,120,120,120,120,120,120,120,120,120, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, +957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, +957,957,957,957,957,957,957,957,120,120,120,120,120,120,120,120, + +/* block 212 */ +958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958, +958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958, +958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958, +958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958, +958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958, +958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958, +958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958, +958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958, + +/* block 213 */ +958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958, +958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958, +958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958, +958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958, +958,958,958,958,958,958,958,958,958,958,958,958,958,958,958,958, +958,958,958,958,958,958,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 212 */ -937,937,937,937,937,937,937,937,937,120,120,120,120,120,120,120, +/* block 214 */ +957,957,957,957,957,957,957,957,957,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, @@ -3848,77 +3894,107 @@ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 213 */ -578,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, - -/* block 214 */ -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, - /* block 215 */ -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, -573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -573,573,573,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,578,578,578,578,120,120,120,120,120,120,120,120, -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +584,584,584,584,120,584,584,584,584,584,584,584,120,584,584,120, /* block 216 */ -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, +583,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, /* block 217 */ -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, -939,939,939,939,939,939,939,939,939,939,939,939,939,939,939,939, -939,939,939,939,939,939,939,939,939,939,939,939,120,120,120,120, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, /* block 218 */ -940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940, -940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940, -940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940, -940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940, -940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940, -940,940,940,940,940,940,940,940,940,940,940,940,940,940,940,940, -940,940,940,940,940,940,940,940,940,940,940,120,120,120,120,120, -940,940,940,940,940,940,940,940,940,940,940,940,940,120,120,120, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, +583,583,583,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +578,578,578,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,583,583,583,583,120,120,120,120,120,120,120,120, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, /* block 219 */ -940,940,940,940,940,940,940,940,940,120,120,120,120,120,120,120, -940,940,940,940,940,940,940,940,940,940,120,120,941,942,942,943, -944,944,944,944,120,120,120,120,120,120,120,120,120,120,120,120, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, + +/* block 220 */ +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, +959,959,959,959,959,959,959,959,959,959,959,959,959,959,959,959, +959,959,959,959,959,959,959,959,959,959,959,959,120,120,120,120, + +/* block 221 */ +960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960, +960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960, +960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960, +960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960, +960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960, +960,960,960,960,960,960,960,960,960,960,960,960,960,960,960,960, +960,960,960,960,960,960,960,960,960,960,960,120,120,120,120,120, +960,960,960,960,960,960,960,960,960,960,960,960,960,120,120,120, + +/* block 222 */ +960,960,960,960,960,960,960,960,960,120,120,120,120,120,120,120, +960,960,960,960,960,960,960,960,960,960,120,120,961,962,962,963, +964,964,964,964,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 220 */ +/* block 223 */ +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,120,120, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,120,120,120,120,120,120,120,120,120, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + +/* block 224 */ + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, + +/* block 225 */ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, @@ -3928,37 +4004,37 @@ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,120,120,120,120,120,120,120,120,120,120, -/* block 221 */ +/* block 226 */ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,120,120, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20,945,946,113,113,113, 20, 20, 20,946,945,945, -945,945,945, 24, 24, 24, 24, 24, 24, 24, 24,113,113,113,113,113, + 20, 20, 20, 20, 20,965,966,113,113,113, 20, 20, 20,966,965,965, +965,965,965, 24, 24, 24, 24, 24, 24, 24, 24,113,113,113,113,113, -/* block 222 */ +/* block 227 */ 113,113,113, 20, 20,113,113,113,113,113,113,113, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,113,113,113,113, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20,120,120,120,120,120,120,120, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 223 */ -685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685, -685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685, -685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685, -685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685, -685,685,947,947,947,685,120,120,120,120,120,120,120,120,120,120, +/* block 228 */ +692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692, +692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692, +692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692, +692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692, +692,692,967,967,967,692,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 224 */ +/* block 229 */ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, @@ -3968,187 +4044,207 @@ 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 225 */ +/* block 230 */ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,120,120,120,120,120,120,120,120,120, -582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582, -582,582, 25, 25, 25, 25, 25, 25, 25,120,120,120,120,120,120,120, +587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, +587,587, 25, 25, 25, 25, 25, 25, 25,120,120,120,120,120,120,120, -/* block 226 */ -513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513, -513,513,513,513,513,513,513,513,513,513,514,514,514,514,514,514, -514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, -514,514,514,514,513,513,513,513,513,513,513,513,513,513,513,513, -513,513,513,513,513,513,513,513,513,513,513,513,513,513,514,514, -514,514,514,514,514,120,514,514,514,514,514,514,514,514,514,514, -514,514,514,514,514,514,514,514,513,513,513,513,513,513,513,513, -513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513, +/* block 231 */ +518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518, +518,518,518,518,518,518,518,518,518,518,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,518,518,518,518,518,518,518,518,518,518,518,518, +518,518,518,518,518,518,518,518,518,518,518,518,518,518,519,519, +519,519,519,519,519,120,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,518,518,518,518,518,518,518,518, +518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518, -/* block 227 */ -513,513,514,514,514,514,514,514,514,514,514,514,514,514,514,514, -514,514,514,514,514,514,514,514,514,514,514,514,513,120,513,513, -120,120,513,120,120,513,513,120,120,513,513,513,513,120,513,513, -513,513,513,513,513,513,514,514,514,514,120,514,120,514,514,514, -514,514,514,514,120,514,514,514,514,514,514,514,514,514,514,514, -513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513, -513,513,513,513,513,513,513,513,513,513,514,514,514,514,514,514, -514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, +/* block 232 */ +518,518,519,519,519,519,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,519,519,519,519,518,120,518,518, +120,120,518,120,120,518,518,120,120,518,518,518,518,120,518,518, +518,518,518,518,518,518,519,519,519,519,120,519,120,519,519,519, +519,519,519,519,120,519,519,519,519,519,519,519,519,519,519,519, +518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518, +518,518,518,518,518,518,518,518,518,518,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, -/* block 228 */ -514,514,514,514,513,513,120,513,513,513,513,120,120,513,513,513, -513,513,513,513,513,120,513,513,513,513,513,513,513,120,514,514, -514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, -514,514,514,514,514,514,514,514,513,513,120,513,513,513,513,120, -513,513,513,513,513,120,513,120,120,120,513,513,513,513,513,513, -513,120,514,514,514,514,514,514,514,514,514,514,514,514,514,514, -514,514,514,514,514,514,514,514,514,514,514,514,513,513,513,513, -513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513, +/* block 233 */ +519,519,519,519,518,518,120,518,518,518,518,120,120,518,518,518, +518,518,518,518,518,120,518,518,518,518,518,518,518,120,519,519, +519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,518,518,120,518,518,518,518,120, +518,518,518,518,518,120,518,120,120,120,518,518,518,518,518,518, +518,120,519,519,519,519,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,519,519,519,519,518,518,518,518, +518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518, -/* block 229 */ -513,513,513,513,513,513,514,514,514,514,514,514,514,514,514,514, -514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, -513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513, -513,513,513,513,513,513,513,513,513,513,514,514,514,514,514,514, -514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, -514,514,514,514,513,513,513,513,513,513,513,513,513,513,513,513, -513,513,513,513,513,513,513,513,513,513,513,513,513,513,514,514, -514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, +/* block 234 */ +518,518,518,518,518,518,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, +518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518, +518,518,518,518,518,518,518,518,518,518,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,518,518,518,518,518,518,518,518,518,518,518,518, +518,518,518,518,518,518,518,518,518,518,518,518,518,518,519,519, +519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, -/* block 230 */ -514,514,514,514,514,514,514,514,513,513,513,513,513,513,513,513, -513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513, -513,513,514,514,514,514,514,514,514,514,514,514,514,514,514,514, -514,514,514,514,514,514,514,514,514,514,514,514,513,513,513,513, -513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513, -513,513,513,513,513,513,514,514,514,514,514,514,514,514,514,514, -514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, -513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513, +/* block 235 */ +519,519,519,519,519,519,519,519,518,518,518,518,518,518,518,518, +518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518, +518,518,519,519,519,519,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,519,519,519,519,518,518,518,518, +518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518, +518,518,518,518,518,518,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, +518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518, -/* block 231 */ -513,513,513,513,513,513,513,513,513,513,514,514,514,514,514,514, -514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, -514,514,514,514,514,514,120,120,513,513,513,513,513,513,513,513, -513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513, -513, 9,514,514,514,514,514,514,514,514,514,514,514,514,514,514, -514,514,514,514,514,514,514,514,514,514,514, 9,514,514,514,514, -514,514,513,513,513,513,513,513,513,513,513,513,513,513,513,513, -513,513,513,513,513,513,513,513,513,513,513, 9,514,514,514,514, +/* block 236 */ +518,518,518,518,518,518,518,518,518,518,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,519,519,120,120,518,518,518,518,518,518,518,518, +518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518, +518, 9,519,519,519,519,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,519,519,519, 9,519,519,519,519, +519,519,518,518,518,518,518,518,518,518,518,518,518,518,518,518, +518,518,518,518,518,518,518,518,518,518,518, 9,519,519,519,519, -/* block 232 */ -514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, -514,514,514,514,514, 9,514,514,514,514,514,514,513,513,513,513, -513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513, -513,513,513,513,513, 9,514,514,514,514,514,514,514,514,514,514, -514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, 9, -514,514,514,514,514,514,513,513,513,513,513,513,513,513,513,513, -513,513,513,513,513,513,513,513,513,513,513,513,513,513,513, 9, -514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, +/* block 237 */ +519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,519, 9,519,519,519,519,519,519,518,518,518,518, +518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518, +518,518,518,518,518, 9,519,519,519,519,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, 9, +519,519,519,519,519,519,518,518,518,518,518,518,518,518,518,518, +518,518,518,518,518,518,518,518,518,518,518,518,518,518,518, 9, +519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, -/* block 233 */ -514,514,514,514,514,514,514,514,514, 9,514,514,514,514,514,514, -513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513, -513,513,513,513,513,513,513,513,513, 9,514,514,514,514,514,514, -514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, -514,514,514, 9,514,514,514,514,514,514,513,514,120,120, 11, 11, +/* block 238 */ +519,519,519,519,519,519,519,519,519, 9,519,519,519,519,519,519, +518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518, +518,518,518,518,518,518,518,518,518, 9,519,519,519,519,519,519, +519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, +519,519,519, 9,519,519,519,519,519,519,518,519,120,120, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, -/* block 234 */ -948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948, -948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948, -948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948, -948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948, -948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948, -948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948, -948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948, -948,948,948,948,948,948,948,948,948,948,948,948,948,948,948,948, +/* block 239 */ +968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968, +968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968, +968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968, +968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968, +968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968, +968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968, +968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968, +968,968,968,968,968,968,968,968,968,968,968,968,968,968,968,968, -/* block 235 */ -949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949, -949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949, -949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949, -949,949,949,949,949,949,949,948,948,948,948,949,949,949,949,949, -949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949, -949,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949, -949,949,949,949,949,949,949,949,949,949,949,949,949,948,948,948, -948,948,948,948,948,949,948,948,948,948,948,948,948,948,948,948, +/* block 240 */ +969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969, +969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969, +969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969, +969,969,969,969,969,969,969,968,968,968,968,969,969,969,969,969, +969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969, +969,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969, +969,969,969,969,969,969,969,969,969,969,969,969,969,968,968,968, +968,968,968,968,968,969,968,968,968,968,968,968,968,968,968,968, -/* block 236 */ -948,948,948,948,949,948,948,950,950,950,950,950,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,949,949,949,949,949, -120,949,949,949,949,949,949,949,949,949,949,949,949,949,949,949, +/* block 241 */ +968,968,968,968,969,968,968,970,970,970,970,970,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,969,969,969,969,969, +120,969,969,969,969,969,969,969,969,969,969,969,969,969,969,969, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 237 */ -951,951,951,951,951,951,951,120,951,951,951,951,951,951,951,951, -951,951,951,951,951,951,951,951,951,120,120,951,951,951,951,951, -951,951,120,951,951,120,951,951,951,951,951,120,120,120,120,120, +/* block 242 */ + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 22, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 238 */ -952,952,952,952,952,952,952,952,952,952,952,952,952,952,952,952, -952,952,952,952,952,952,952,952,952,952,952,952,952,952,952,952, -952,952,952,952,952,952,952,952,952,952,952,952,952,120,120,120, -953,953,953,953,953,953,953,954,954,954,954,954,954,954,120,120, -955,955,955,955,955,955,955,955,955,955,120,120,120,120,952,956, +/* block 243 */ +971,971,971,971,971,971,971,120,971,971,971,971,971,971,971,971, +971,971,971,971,971,971,971,971,971,120,120,971,971,971,971,971, +971,971,120,971,971,120,971,971,971,971,971,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 239 */ +/* block 244 */ +972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972, +972,972,972,972,972,972,972,972,972,972,972,972,972,972,972,972, +972,972,972,972,972,972,972,972,972,972,972,972,972,120,120,120, +973,973,973,973,973,973,973,974,974,974,974,974,974,974,120,120, +975,975,975,975,975,975,975,975,975,975,120,120,120,120,972,976, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, + +/* block 245 */ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +977,977,977,977,977,977,977,977,977,977,977,977,977,977,977,977, +977,977,977,977,977,977,977,977,977,977,977,977,977,977,978,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, -957,957,957,957,957,957,957,957,957,957,957,957,957,957,957,957, -957,957,957,957,957,957,957,957,957,957,957,957,958,958,958,958, -959,959,959,959,959,959,959,959,959,959,120,120,120,120,120,960, +979,979,979,979,979,979,979,979,979,979,979,979,979,979,979,979, +979,979,979,979,979,979,979,979,979,979,979,979,979,979,979,979, +979,979,979,979,979,979,979,979,979,979,979,979,980,980,980,980, +981,981,981,981,981,981,981,981,981,981,120,120,120,120,120,982, -/* block 240 */ -961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961, -961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961, -961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961, -961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961, -961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961, -961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961, -961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961, -961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961, +/* block 246 */ +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +361,361,361,361,361,361,361,120,361,361,361,361,120,361,361,120, +361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,120, -/* block 241 */ -961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961, -961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961, -961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961, -961,961,961,961,961,961,961,961,961,961,961,961,961,961,961,961, -961,961,961,961,961,120,120,962,962,962,962,962,962,962,962,962, -963,963,963,963,963,963,963,120,120,120,120,120,120,120,120,120, +/* block 247 */ +983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983, +983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983, +983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983, +983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983, +983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983, +983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983, +983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983, +983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983, + +/* block 248 */ +983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983, +983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983, +983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983, +983,983,983,983,983,983,983,983,983,983,983,983,983,983,983,983, +983,983,983,983,983,120,120,984,984,984,984,984,984,984,984,984, +985,985,985,985,985,985,985,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 242 */ -964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964, -964,964,964,964,964,964,964,964,964,964,964,964,964,964,964,964, -964,964,965,965,965,965,965,965,965,965,965,965,965,965,965,965, -965,965,965,965,965,965,965,965,965,965,965,965,965,965,965,965, -965,965,965,965,966,966,966,966,966,966,966,967,120,120,120,120, -968,968,968,968,968,968,968,968,968,968,120,120,120,120,969,969, +/* block 249 */ +986,986,986,986,986,986,986,986,986,986,986,986,986,986,986,986, +986,986,986,986,986,986,986,986,986,986,986,986,986,986,986,986, +986,986,987,987,987,987,987,987,987,987,987,987,987,987,987,987, +987,987,987,987,987,987,987,987,987,987,987,987,987,987,987,987, +987,987,987,987,988,988,988,988,988,988,988,989,120,120,120,120, +990,990,990,990,990,990,990,990,990,990,120,120,120,120,991,991, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 243 */ +/* block 250 */ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, @@ -4158,7 +4254,7 @@ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, -/* block 244 */ +/* block 251 */ 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 20, 25, 25, 25, @@ -4168,7 +4264,7 @@ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 245 */ +/* block 252 */ 120, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 20, 25, @@ -4178,47 +4274,47 @@ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 246 */ -224,224,224,224,120,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -120,224,224,120,224,120,120,224,120,224,224,224,224,224,224,224, -224,224,224,120,224,224,224,224,120,224,120,224,120,120,120,120, -120,120,224,120,120,120,120,224,120,224,120,224,120,224,224,224, -120,224,224,120,224,120,120,224,120,224,120,224,120,224,120,224, -120,224,224,120,224,120,120,224,224,224,224,120,224,224,224,224, -224,224,224,120,224,224,224,224,120,224,224,224,224,120,224,120, +/* block 253 */ +225,225,225,225,120,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +120,225,225,120,225,120,120,225,120,225,225,225,225,225,225,225, +225,225,225,120,225,225,225,225,120,225,120,225,120,120,120,120, +120,120,225,120,120,120,120,225,120,225,120,225,120,225,225,225, +120,225,225,120,225,120,120,225,120,225,120,225,120,225,120,225, +120,225,225,120,225,120,120,225,225,225,225,120,225,225,225,225, +225,225,225,120,225,225,225,225,120,225,225,225,225,120,225,120, -/* block 247 */ -224,224,224,224,224,224,224,224,224,224,120,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,120,120,120,120, -120,224,224,224,120,224,224,224,224,224,120,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,120,120,120,120, +/* block 254 */ +225,225,225,225,225,225,225,225,225,225,120,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,120,120,120,120, +120,225,225,225,120,225,225,225,225,225,120,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 217,217,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 248 */ +/* block 255 */ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,970,970,970,970, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,992,992,992,992, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, -/* block 249 */ +/* block 256 */ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21,970,970,970,970,970,970,970,970,970,970,970,970, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,970, -970, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, -970, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, -970, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21,992,992,992,992,992,992,992,992,992,992,992,992, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,992, +992, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, +992, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, +992, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21,970,970,970,970,970,970,970,970,970,970, + 21, 21, 21, 21, 21, 21,992,992,992,992,992,992,992,992,992,992, -/* block 250 */ +/* block 257 */ 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 21, 21, 21, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, @@ -4228,37 +4324,37 @@ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, -/* block 251 */ +/* block 258 */ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,971,971,971,971,971,971,971,971,971,971, -971,971,971,971,971,971,971,971,971,971,971,971,971,971,971,971, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,993,993,993,993,993,993,993,993,993,993, +993,993,993,993,993,993,993,993,993,993,993,993,993,993,993,993, -/* block 252 */ -972, 21, 21,970,970,970,970,970,970,970,970,970,970,970,970,970, +/* block 259 */ +994, 21, 21,992,992,992,992,992,992,992,992,992,992,992,992,992, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, - 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 20,970,970,970,970, - 20, 20, 20, 20, 20, 20, 20, 20, 20,970,970,970,970,970,970,970, -584,584,970,970,970,970,970,970,970,970,970,970,970,970,970,970, - 21, 21, 21, 21, 21, 21,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, + 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 20,992,992,992,992, + 20, 20, 20, 20, 20, 20, 20, 20, 20,992,992,992,992,992,992,992, +589,589,992,992,992,992,992,992,992,992,992,992,992,992,992,992, + 21, 21, 21, 21, 21, 21,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, -/* block 253 */ -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, +/* block 260 */ +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, -/* block 254 */ +/* block 261 */ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, @@ -4268,7 +4364,7 @@ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, -/* block 255 */ +/* block 262 */ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, @@ -4276,9 +4372,9 @@ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,973,973,973,973,973, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,995,995,995,995,995, -/* block 256 */ +/* block 263 */ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, @@ -4288,7 +4384,7 @@ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, -/* block 257 */ +/* block 264 */ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, @@ -4298,17 +4394,17 @@ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, -/* block 258 */ +/* block 265 */ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21,970,970,970,970,970,970,970,970, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,970,970,970, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,970,970,970, + 21, 21, 21, 21, 21, 21, 21, 21,992,992,992,992,992, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,992,992,992, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,992,992,992, -/* block 259 */ +/* block 266 */ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, @@ -4316,39 +4412,39 @@ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20,970,970,970,970,970,970,970,970,970,970,970,970, + 20, 20, 20, 20,992,992,992,992,992,992,992,992,992,992,992,992, -/* block 260 */ +/* block 267 */ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 21, 21, 21, 21,970,970,970,970,970,970,970, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, + 20, 20, 20, 20, 20, 21, 21, 21, 21,992,992,992,992,992,992,992, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,992,992,992,992, + 21,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, -/* block 261 */ - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,970,970,970,970, +/* block 268 */ + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,992,992,992,992, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20,970,970,970,970,970,970,970,970, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,970,970,970,970,970,970, + 20, 20, 20, 20, 20, 20, 20, 20,992,992,992,992,992,992,992,992, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,992,992,992,992,992,992, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, -/* block 262 */ - 20, 20, 20, 20, 20, 20, 20, 20,970,970,970,970,970,970,970,970, +/* block 269 */ + 20, 20, 20, 20, 20, 20, 20, 20,992,992,992,992,992,992,992,992, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,970,970, - 21, 21,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,992,992, + 21, 21,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, -/* block 263 */ +/* block 270 */ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, @@ -4356,39 +4452,29 @@ 21, 21, 21, 21, 21, 21, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21,970, 21, 21, 21, 21, 21, 21, - -/* block 264 */ - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,970, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, -/* block 265 */ +/* block 271 */ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21,970,970,970,970,970,970,970,970,970,970,970,970, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,970,970, - 21, 21, 21, 21, 21,970,970,970, 21, 21, 21,970,970,970,970,970, + 21, 21, 21, 21,992,992,992,992,992,992,992,992,992,992,992,992, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,992,992, + 21, 21, 21, 21, 21,992,992,992, 21, 21, 21, 21, 21,992,992,992, -/* block 266 */ - 21, 21, 21, 21, 21, 21, 21,970,970,970,970,970,970,970,970,970, +/* block 272 */ + 21, 21, 21, 21, 21, 21, 21,992,992,992,992,992,992,992,992,992, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21,970,970,970,970,970,970,970, - 21, 21, 21, 21, 21, 21, 21,970,970,970,970,970,970,970,970,970, - 21, 21, 21,970,970,970,970,970,970,970,970,970,970,970,970,970, - 21, 21, 21, 21, 21, 21, 21,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,992,992,992, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,992,992,992,992,992, + 21, 21, 21, 21, 21, 21,992,992,992,992,992,992,992,992,992,992, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,992,992,992,992,992,992, + 21, 21, 21, 21, 21, 21, 21, 21,992,992,992,992,992,992,992,992, + 21, 21, 21, 21, 21, 21, 21,992,992,992,992,992,992,992,992,992, -/* block 267 */ +/* block 273 */ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,120, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, @@ -4398,69 +4484,69 @@ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,120,120,120,120,120,120, -/* block 268 */ -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,970,970, -970,970,970,970,970,970,970,970,970,970,970,970,970,970,120,120, +/* block 274 */ +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,992,992, +992,992,992,992,992,992,992,992,992,992,992,992,992,992,120,120, -/* block 269 */ -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,120,120, +/* block 275 */ +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 270 */ -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,120,120,120,120,120,120,120,120,120,120,120, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, +/* block 276 */ +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,120,120,120,120,120,120,120, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, -/* block 271 */ -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,120,120, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, +/* block 277 */ +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,120,120, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, -/* block 272 */ -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, +/* block 278 */ +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, -/* block 273 */ -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +/* block 279 */ +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 274 */ -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,120,120, +/* block 280 */ +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, @@ -4468,37 +4554,37 @@ 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 275 */ -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, -586,586,586,586,586,586,586,586,586,586,586,120,120,120,120,120, +/* block 281 */ +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, +591,591,591,591,591,591,591,591,591,591,591,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -/* block 276 */ -511, 24,511,511,511,511,511,511,511,511,511,511,511,511,511,511, -511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511, -974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974, -974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974, -974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974, -974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974, -974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974, -974,974,974,974,974,974,974,974,974,974,974,974,974,974,974,974, +/* block 282 */ +516, 24,516,516,516,516,516,516,516,516,516,516,516,516,516,516, +516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516, +996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996, +996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996, +996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996, +996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996, +996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996, +996,996,996,996,996,996,996,996,996,996,996,996,996,996,996,996, -/* block 277 */ -511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511, -511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511, -511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511, -511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511, -511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511, -511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511, -511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511, -511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511, +/* block 283 */ +516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516, +516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516, +516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516, +516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516, +516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516, +516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516, +516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516, +516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516, -/* block 278 */ +/* block 284 */ 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, @@ -4508,7 +4594,7 @@ 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -/* block 279 */ +/* block 285 */ 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, @@ -4516,17 +4602,17 @@ 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511, +516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516, -/* block 280 */ -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, -673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, -673,673,673,673,673,673,673,673,673,673,673,673,673,673,120,120, +/* block 286 */ +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, +678,678,678,678,678,678,678,678,678,678,678,678,678,678,120,120, }; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_ucp.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_ucp.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/pcre2_ucp.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/pcre2_ucp.h 2022-11-11 15:29:17.000000000 +0800 @@ -291,7 +291,13 @@ ucp_Chorasmian, ucp_Dives_Akuru, ucp_Khitan_Small_Script, - ucp_Yezidi + ucp_Yezidi, + /* New for Unicode 14.0.0 */ + ucp_Cypro_Minoan, + ucp_Old_Uyghur, + ucp_Tangsa, + ucp_Toto, + ucp_Vithkuqi }; #endif /* PCRE2_UCP_H_IDEMPOTENT_GUARD */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitConfigInternal.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitConfigInternal.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitConfigInternal.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitConfigInternal.h 2022-11-11 15:29:17.000000000 +0800 @@ -158,6 +158,8 @@ #define SLJIT_CONFIG_MIPS_64 1 #elif defined(__sparc__) || defined(__sparc) #define SLJIT_CONFIG_SPARC_32 1 +#elif defined(__s390x__) +#define SLJIT_CONFIG_S390X 1 #else /* Unsupported architecture */ #define SLJIT_CONFIG_UNSUPPORTED 1 @@ -759,6 +761,18 @@ #define SLJIT_NUMBER_OF_SCRATCH_FLOAT_REGISTERS \ (SLJIT_NUMBER_OF_FLOAT_REGISTERS - SLJIT_NUMBER_OF_SAVED_FLOAT_REGISTERS) +/********************************/ +/* CPU status flags management. */ +/********************************/ + +#if (defined SLJIT_CONFIG_ARM_32 && SLJIT_CONFIG_ARM_32) \ + || (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64) \ + || (defined SLJIT_CONFIG_MIPS && SLJIT_CONFIG_MIPS) \ + || (defined SLJIT_CONFIG_SPARC && SLJIT_CONFIG_SPARC) \ + || (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) +#define SLJIT_HAS_STATUS_FLAGS_STATE 1 +#endif + /*************************************/ /* Debug and verbose related macros. */ /*************************************/ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitExecAllocator.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitExecAllocator.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitExecAllocator.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitExecAllocator.c 2022-11-11 15:29:17.000000000 +0800 @@ -79,6 +79,7 @@ */ #ifdef _WIN32 +#define SLJIT_UPDATE_WX_FLAGS(from, to, enable_exec) static SLJIT_INLINE void* alloc_chunk(sljit_uw size) { @@ -91,96 +92,108 @@ VirtualFree(chunk, 0, MEM_RELEASE); } -#else - -#ifdef __APPLE__ -#ifdef MAP_ANON -/* Configures TARGET_OS_OSX when appropriate */ -#include <TargetConditionals.h> - -#if TARGET_OS_OSX && defined(MAP_JIT) -#include <sys/utsname.h> -#endif /* TARGET_OS_OSX && MAP_JIT */ - -#ifdef MAP_JIT +#else /* POSIX */ +#if defined(__APPLE__) && defined(MAP_JIT) /* On macOS systems, returns MAP_JIT if it is defined _and_ we're running on a - version where it's OK to have more than one JIT block. + version where it's OK to have more than one JIT block or where MAP_JIT is + required. On non-macOS systems, returns MAP_JIT if it is defined. */ +#include <TargetConditionals.h> +#if TARGET_OS_OSX +#if defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86 +#ifdef MAP_ANON +#include <sys/utsname.h> +#include <stdlib.h> + +#define SLJIT_MAP_JIT (get_map_jit_flag()) + static SLJIT_INLINE int get_map_jit_flag() { -#if TARGET_OS_OSX - sljit_sw page_size = get_page_alignment() + 1; + sljit_sw page_size; void *ptr; + struct utsname name; static int map_jit_flag = -1; - /* - The following code is thread safe because multiple initialization - sets map_jit_flag to the same value and the code has no side-effects. - Changing the kernel version witout system restart is (very) unlikely. - */ - if (map_jit_flag == -1) { - struct utsname name; - + if (map_jit_flag < 0) { map_jit_flag = 0; uname(&name); - /* Kernel version for 10.14.0 (Mojave) */ + /* Kernel version for 10.14.0 (Mojave) or later */ if (atoi(name.release) >= 18) { + page_size = get_page_alignment() + 1; /* Only use MAP_JIT if a hardened runtime is used */ + ptr = mmap(NULL, page_size, PROT_WRITE | PROT_EXEC, + MAP_PRIVATE | MAP_ANON, -1, 0); - ptr = mmap(NULL, page_size, PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON, -1, 0); - - if (ptr == MAP_FAILED) { - map_jit_flag = MAP_JIT; - } else { + if (ptr != MAP_FAILED) munmap(ptr, page_size); - } + else + map_jit_flag = MAP_JIT; } } - return map_jit_flag; -#else /* !TARGET_OS_OSX */ - return MAP_JIT; -#endif /* TARGET_OS_OSX */ } - -#endif /* MAP_JIT */ #endif /* MAP_ANON */ -#endif /* __APPLE__ */ +#else /* !SLJIT_CONFIG_X86 */ +#if !(defined SLJIT_CONFIG_ARM && SLJIT_CONFIG_ARM) +#error Unsupported architecture +#endif /* SLJIT_CONFIG_ARM */ +#include <pthread.h> + +#define SLJIT_MAP_JIT (MAP_JIT) +#define SLJIT_UPDATE_WX_FLAGS(from, to, enable_exec) \ + apple_update_wx_flags(enable_exec) + +static SLJIT_INLINE void apple_update_wx_flags(sljit_s32 enable_exec) +{ + pthread_jit_write_protect_np(enable_exec); +} +#endif /* SLJIT_CONFIG_X86 */ +#else /* !TARGET_OS_OSX */ +#define SLJIT_MAP_JIT (MAP_JIT) +#endif /* TARGET_OS_OSX */ +#endif /* __APPLE__ && MAP_JIT */ +#ifndef SLJIT_UPDATE_WX_FLAGS +#define SLJIT_UPDATE_WX_FLAGS(from, to, enable_exec) +#endif /* !SLJIT_UPDATE_WX_FLAGS */ +#ifndef SLJIT_MAP_JIT +#define SLJIT_MAP_JIT (0) +#endif /* !SLJIT_MAP_JIT */ static SLJIT_INLINE void* alloc_chunk(sljit_uw size) { void *retval; - const int prot = PROT_READ | PROT_WRITE | PROT_EXEC; - -#ifdef MAP_ANON + int prot = PROT_READ | PROT_WRITE | PROT_EXEC; + int flags = MAP_PRIVATE; + int fd = -1; - int flags = MAP_PRIVATE | MAP_ANON; - -#ifdef MAP_JIT - flags |= get_map_jit_flag(); +#ifdef PROT_MAX + prot |= PROT_MAX(prot); #endif - retval = mmap(NULL, size, prot, flags, -1, 0); +#ifdef MAP_ANON + flags |= MAP_ANON | SLJIT_MAP_JIT; #else /* !MAP_ANON */ if (SLJIT_UNLIKELY((dev_zero < 0) && open_dev_zero())) return NULL; - retval = mmap(NULL, size, prot, MAP_PRIVATE, dev_zero, 0); + fd = dev_zero; #endif /* MAP_ANON */ + retval = mmap(NULL, size, prot, flags, fd, 0); if (retval == MAP_FAILED) - retval = NULL; - else { - if (mprotect(retval, size, prot) < 0) { - munmap(retval, size); - retval = NULL; - } + return NULL; + + if (mprotect(retval, size, PROT_READ | PROT_WRITE | PROT_EXEC) < 0) { + munmap(retval, size); + return NULL; } + SLJIT_UPDATE_WX_FLAGS(retval, (uint8_t *)retval + size, 0); + return retval; } @@ -189,7 +202,7 @@ munmap(chunk, size); } -#endif +#endif /* windows */ /* --------------------------------------------------------------------- */ /* Common functions */ @@ -261,6 +274,7 @@ while (free_block) { if (free_block->size >= size) { chunk_size = free_block->size; + SLJIT_UPDATE_WX_FLAGS(NULL, NULL, 0); if (chunk_size > size + 64) { /* We just cut a block from the end of the free block. */ chunk_size -= size; @@ -326,6 +340,7 @@ allocated_size -= header->size; /* Connecting free blocks together if possible. */ + SLJIT_UPDATE_WX_FLAGS(NULL, NULL, 0); /* If header->prev_size == 0, free_block will equal to header. In this case, free_block->header.size will be > 0. */ @@ -358,6 +373,7 @@ } } + SLJIT_UPDATE_WX_FLAGS(NULL, NULL, 1); SLJIT_ALLOCATOR_UNLOCK(); } @@ -367,6 +383,7 @@ struct free_block* next_free_block; SLJIT_ALLOCATOR_LOCK(); + SLJIT_UPDATE_WX_FLAGS(NULL, NULL, 0); free_block = free_blocks; while (free_block) { @@ -381,5 +398,6 @@ } SLJIT_ASSERT((total_size && free_blocks) || (!total_size && !free_blocks)); + SLJIT_UPDATE_WX_FLAGS(NULL, NULL, 1); SLJIT_ALLOCATOR_UNLOCK(); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitLir.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitLir.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitLir.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitLir.c 2022-11-11 15:29:17.000000000 +0800 @@ -532,13 +532,21 @@ put_label->label = label; } +#define SLJIT_CURRENT_FLAGS_ALL \ + (SLJIT_CURRENT_FLAGS_I32_OP | SLJIT_CURRENT_FLAGS_ADD_SUB | SLJIT_CURRENT_FLAGS_COMPARE) + SLJIT_API_FUNC_ATTRIBUTE void sljit_set_current_flags(struct sljit_compiler *compiler, sljit_s32 current_flags) { SLJIT_UNUSED_ARG(compiler); SLJIT_UNUSED_ARG(current_flags); +#if (defined SLJIT_HAS_STATUS_FLAGS_STATE && SLJIT_HAS_STATUS_FLAGS_STATE) + compiler->status_flags_state = current_flags; +#endif + #if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) - if ((current_flags & ~(VARIABLE_FLAG_MASK | SLJIT_I32_OP | SLJIT_SET_Z)) == 0) { + compiler->last_flags = 0; + if ((current_flags & ~(VARIABLE_FLAG_MASK | SLJIT_SET_Z | SLJIT_CURRENT_FLAGS_ALL)) == 0) { compiler->last_flags = GET_FLAG_TYPE(current_flags) | (current_flags & (SLJIT_I32_OP | SLJIT_SET_Z)); } #endif @@ -968,7 +976,7 @@ }; #define JUMP_POSTFIX(type) \ - ((type & 0xff) <= SLJIT_MUL_NOT_OVERFLOW ? ((type & SLJIT_I32_OP) ? "32" : "") \ + ((type & 0xff) <= SLJIT_NOT_OVERFLOW ? ((type & SLJIT_I32_OP) ? "32" : "") \ : ((type & 0xff) <= SLJIT_ORDERED_F64 ? ((type & SLJIT_F32_OP) ? ".f32" : ".f64") : "")) static char* jump_names[] = { @@ -978,7 +986,6 @@ (char*)"sig_less", (char*)"sig_greater_equal", (char*)"sig_greater", (char*)"sig_less_equal", (char*)"overflow", (char*)"not_overflow", - (char*)"mul_overflow", (char*)"mul_not_overflow", (char*)"carry", (char*)"", (char*)"equal", (char*)"not_equal", (char*)"less", (char*)"greater_equal", @@ -1278,7 +1285,7 @@ case SLJIT_MUL: CHECK_ARGUMENT(!(op & SLJIT_SET_Z)); CHECK_ARGUMENT(!(op & VARIABLE_FLAG_MASK) - || GET_FLAG_TYPE(op) == SLJIT_MUL_OVERFLOW); + || GET_FLAG_TYPE(op) == SLJIT_OVERFLOW); break; case SLJIT_ADD: CHECK_ARGUMENT(!(op & VARIABLE_FLAG_MASK) @@ -1601,9 +1608,7 @@ CHECK_ARGUMENT(compiler->last_flags & SLJIT_SET_Z); else CHECK_ARGUMENT((type & 0xff) == (compiler->last_flags & 0xff) - || ((type & 0xff) == SLJIT_NOT_OVERFLOW && (compiler->last_flags & 0xff) == SLJIT_OVERFLOW) - || ((type & 0xff) == SLJIT_MUL_NOT_OVERFLOW && (compiler->last_flags & 0xff) == SLJIT_MUL_OVERFLOW)); - CHECK_ARGUMENT((type & SLJIT_I32_OP) == (compiler->last_flags & SLJIT_I32_OP)); + || ((type & 0xff) == SLJIT_NOT_OVERFLOW && (compiler->last_flags & 0xff) == SLJIT_OVERFLOW)); } #endif #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) @@ -1818,8 +1823,7 @@ CHECK_ARGUMENT(compiler->last_flags & SLJIT_SET_Z); else CHECK_ARGUMENT((type & 0xff) == (compiler->last_flags & 0xff) - || ((type & 0xff) == SLJIT_NOT_OVERFLOW && (compiler->last_flags & 0xff) == SLJIT_OVERFLOW) - || ((type & 0xff) == SLJIT_MUL_NOT_OVERFLOW && (compiler->last_flags & 0xff) == SLJIT_MUL_OVERFLOW)); + || ((type & 0xff) == SLJIT_NOT_OVERFLOW && (compiler->last_flags & 0xff) == SLJIT_OVERFLOW)); FUNCTION_CHECK_DST(dst, dstw, 0); @@ -1858,8 +1862,7 @@ CHECK_ARGUMENT(compiler->last_flags & SLJIT_SET_Z); else CHECK_ARGUMENT((type & 0xff) == (compiler->last_flags & 0xff) - || ((type & 0xff) == SLJIT_NOT_OVERFLOW && (compiler->last_flags & 0xff) == SLJIT_OVERFLOW) - || ((type & 0xff) == SLJIT_MUL_NOT_OVERFLOW && (compiler->last_flags & 0xff) == SLJIT_MUL_OVERFLOW)); + || ((type & 0xff) == SLJIT_NOT_OVERFLOW && (compiler->last_flags & 0xff) == SLJIT_OVERFLOW)); #endif #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) if (SLJIT_UNLIKELY(!!compiler->verbose)) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitLir.h qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitLir.h --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitLir.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitLir.h 2022-11-11 15:29:17.000000000 +0800 @@ -412,6 +412,10 @@ /* Executable size for statistical purposes. */ sljit_uw executable_size; +#if (defined SLJIT_HAS_STATUS_FLAGS_STATE && SLJIT_HAS_STATUS_FLAGS_STATE) + sljit_s32 status_flags_state; +#endif + #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) sljit_s32 args; sljit_s32 locals_offset; @@ -460,7 +464,7 @@ #if (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) /* Need to allocate register save area to make calls. */ - sljit_s32 have_save_area; + sljit_s32 mode; #endif #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) @@ -996,7 +1000,7 @@ #define SLJIT_SUBC (SLJIT_OP2_BASE + 3) #define SLJIT_SUBC32 (SLJIT_SUBC | SLJIT_I32_OP) /* Note: integer mul - Flags: MUL_OVERFLOW */ + Flags: OVERFLOW */ #define SLJIT_MUL (SLJIT_OP2_BASE + 4) #define SLJIT_MUL32 (SLJIT_MUL | SLJIT_I32_OP) /* Flags: Z */ @@ -1141,89 +1145,69 @@ /* Integer comparison types. */ #define SLJIT_EQUAL 0 -#define SLJIT_EQUAL32 (SLJIT_EQUAL | SLJIT_I32_OP) -#define SLJIT_ZERO 0 -#define SLJIT_ZERO32 (SLJIT_ZERO | SLJIT_I32_OP) +#define SLJIT_ZERO SLJIT_EQUAL #define SLJIT_NOT_EQUAL 1 -#define SLJIT_NOT_EQUAL32 (SLJIT_NOT_EQUAL | SLJIT_I32_OP) -#define SLJIT_NOT_ZERO 1 -#define SLJIT_NOT_ZERO32 (SLJIT_NOT_ZERO | SLJIT_I32_OP) +#define SLJIT_NOT_ZERO SLJIT_NOT_EQUAL #define SLJIT_LESS 2 -#define SLJIT_LESS32 (SLJIT_LESS | SLJIT_I32_OP) #define SLJIT_SET_LESS SLJIT_SET(SLJIT_LESS) #define SLJIT_GREATER_EQUAL 3 -#define SLJIT_GREATER_EQUAL32 (SLJIT_GREATER_EQUAL | SLJIT_I32_OP) #define SLJIT_SET_GREATER_EQUAL SLJIT_SET(SLJIT_GREATER_EQUAL) #define SLJIT_GREATER 4 -#define SLJIT_GREATER32 (SLJIT_GREATER | SLJIT_I32_OP) #define SLJIT_SET_GREATER SLJIT_SET(SLJIT_GREATER) #define SLJIT_LESS_EQUAL 5 -#define SLJIT_LESS_EQUAL32 (SLJIT_LESS_EQUAL | SLJIT_I32_OP) #define SLJIT_SET_LESS_EQUAL SLJIT_SET(SLJIT_LESS_EQUAL) #define SLJIT_SIG_LESS 6 -#define SLJIT_SIG_LESS32 (SLJIT_SIG_LESS | SLJIT_I32_OP) #define SLJIT_SET_SIG_LESS SLJIT_SET(SLJIT_SIG_LESS) #define SLJIT_SIG_GREATER_EQUAL 7 -#define SLJIT_SIG_GREATER_EQUAL32 (SLJIT_SIG_GREATER_EQUAL | SLJIT_I32_OP) #define SLJIT_SET_SIG_GREATER_EQUAL SLJIT_SET(SLJIT_SIG_GREATER_EQUAL) #define SLJIT_SIG_GREATER 8 -#define SLJIT_SIG_GREATER32 (SLJIT_SIG_GREATER | SLJIT_I32_OP) #define SLJIT_SET_SIG_GREATER SLJIT_SET(SLJIT_SIG_GREATER) #define SLJIT_SIG_LESS_EQUAL 9 -#define SLJIT_SIG_LESS_EQUAL32 (SLJIT_SIG_LESS_EQUAL | SLJIT_I32_OP) #define SLJIT_SET_SIG_LESS_EQUAL SLJIT_SET(SLJIT_SIG_LESS_EQUAL) #define SLJIT_OVERFLOW 10 -#define SLJIT_OVERFLOW32 (SLJIT_OVERFLOW | SLJIT_I32_OP) #define SLJIT_SET_OVERFLOW SLJIT_SET(SLJIT_OVERFLOW) #define SLJIT_NOT_OVERFLOW 11 -#define SLJIT_NOT_OVERFLOW32 (SLJIT_NOT_OVERFLOW | SLJIT_I32_OP) - -#define SLJIT_MUL_OVERFLOW 12 -#define SLJIT_MUL_OVERFLOW32 (SLJIT_MUL_OVERFLOW | SLJIT_I32_OP) -#define SLJIT_SET_MUL_OVERFLOW SLJIT_SET(SLJIT_MUL_OVERFLOW) -#define SLJIT_MUL_NOT_OVERFLOW 13 -#define SLJIT_MUL_NOT_OVERFLOW32 (SLJIT_MUL_NOT_OVERFLOW | SLJIT_I32_OP) /* There is no SLJIT_CARRY or SLJIT_NOT_CARRY. */ -#define SLJIT_SET_CARRY SLJIT_SET(14) +#define SLJIT_SET_CARRY SLJIT_SET(12) /* Floating point comparison types. */ -#define SLJIT_EQUAL_F64 16 +#define SLJIT_EQUAL_F64 14 #define SLJIT_EQUAL_F32 (SLJIT_EQUAL_F64 | SLJIT_F32_OP) #define SLJIT_SET_EQUAL_F SLJIT_SET(SLJIT_EQUAL_F64) -#define SLJIT_NOT_EQUAL_F64 17 +#define SLJIT_NOT_EQUAL_F64 15 #define SLJIT_NOT_EQUAL_F32 (SLJIT_NOT_EQUAL_F64 | SLJIT_F32_OP) #define SLJIT_SET_NOT_EQUAL_F SLJIT_SET(SLJIT_NOT_EQUAL_F64) -#define SLJIT_LESS_F64 18 +#define SLJIT_LESS_F64 16 #define SLJIT_LESS_F32 (SLJIT_LESS_F64 | SLJIT_F32_OP) #define SLJIT_SET_LESS_F SLJIT_SET(SLJIT_LESS_F64) -#define SLJIT_GREATER_EQUAL_F64 19 +#define SLJIT_GREATER_EQUAL_F64 17 #define SLJIT_GREATER_EQUAL_F32 (SLJIT_GREATER_EQUAL_F64 | SLJIT_F32_OP) #define SLJIT_SET_GREATER_EQUAL_F SLJIT_SET(SLJIT_GREATER_EQUAL_F64) -#define SLJIT_GREATER_F64 20 +#define SLJIT_GREATER_F64 18 #define SLJIT_GREATER_F32 (SLJIT_GREATER_F64 | SLJIT_F32_OP) #define SLJIT_SET_GREATER_F SLJIT_SET(SLJIT_GREATER_F64) -#define SLJIT_LESS_EQUAL_F64 21 +#define SLJIT_LESS_EQUAL_F64 19 #define SLJIT_LESS_EQUAL_F32 (SLJIT_LESS_EQUAL_F64 | SLJIT_F32_OP) #define SLJIT_SET_LESS_EQUAL_F SLJIT_SET(SLJIT_LESS_EQUAL_F64) -#define SLJIT_UNORDERED_F64 22 +#define SLJIT_UNORDERED_F64 20 #define SLJIT_UNORDERED_F32 (SLJIT_UNORDERED_F64 | SLJIT_F32_OP) #define SLJIT_SET_UNORDERED_F SLJIT_SET(SLJIT_UNORDERED_F64) -#define SLJIT_ORDERED_F64 23 +#define SLJIT_ORDERED_F64 21 #define SLJIT_ORDERED_F32 (SLJIT_ORDERED_F64 | SLJIT_F32_OP) #define SLJIT_SET_ORDERED_F SLJIT_SET(SLJIT_ORDERED_F64) /* Unconditional jump types. */ -#define SLJIT_JUMP 24 +#define SLJIT_JUMP 22 /* Fast calling method. See sljit_emit_fast_enter / SLJIT_FAST_RETURN. */ -#define SLJIT_FAST_CALL 25 +#define SLJIT_FAST_CALL 23 /* Called function must be declared with the SLJIT_FUNC attribute. */ -#define SLJIT_CALL 26 +#define SLJIT_CALL 24 /* Called function must be declared with cdecl attribute. This is the default attribute for C functions. */ -#define SLJIT_CALL_CDECL 27 +#define SLJIT_CALL_CDECL 25 /* The target can be changed during runtime (see: sljit_set_jump_addr). */ #define SLJIT_REWRITABLE_JUMP 0x1000 @@ -1534,8 +1518,22 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_custom(struct sljit_compiler *compiler, void *instruction, sljit_s32 size); -/* Define the currently available CPU status flags. It is usually used after an - sljit_emit_op_custom call to define which flags are set. */ +/* Flags were set by a 32 bit operation. */ +#define SLJIT_CURRENT_FLAGS_I32_OP SLJIT_I32_OP + +/* Flags were set by an ADD, ADDC, SUB, SUBC, or NEG operation. */ +#define SLJIT_CURRENT_FLAGS_ADD_SUB 0x01 + +/* Flags were set by a SUB with unused destination. + Must be combined with SLJIT_CURRENT_FLAGS_ADD_SUB. */ +#define SLJIT_CURRENT_FLAGS_COMPARE 0x02 + +/* Define the currently available CPU status flags. It is usually used after + an sljit_emit_label or sljit_emit_op_custom operations to define which CPU + status flags are available. + + The current_flags must be a valid combination of SLJIT_SET_* and + SLJIT_CURRENT_FLAGS_* constants. */ SLJIT_API_FUNC_ATTRIBUTE void sljit_set_current_flags(struct sljit_compiler *compiler, sljit_s32 current_flags); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeARM_32.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeARM_32.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeARM_32.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeARM_32.c 2022-11-11 15:29:17.000000000 +0800 @@ -1197,6 +1197,8 @@ case SLJIT_ADD: SLJIT_ASSERT(!(flags & INV_IMM)); + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; + if ((flags & (UNUSED_RETURN | SET_FLAGS)) == (UNUSED_RETURN | SET_FLAGS) && !(flags & ARGS_SWAPPED)) return push_inst(compiler, CMN | SET_FLAGS | RN(src1) | ((src2 & SRC2_IMM) ? src2 : RM(src2))); return push_inst(compiler, ADD | (flags & SET_FLAGS) | RD(dst) | RN(src1) | ((src2 & SRC2_IMM) ? src2 : RM(src2))); @@ -1207,6 +1209,8 @@ case SLJIT_SUB: SLJIT_ASSERT(!(flags & INV_IMM)); + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; + if ((flags & (UNUSED_RETURN | SET_FLAGS)) == (UNUSED_RETURN | SET_FLAGS) && !(flags & ARGS_SWAPPED)) return push_inst(compiler, CMP | SET_FLAGS | RN(src1) | ((src2 & SRC2_IMM) ? src2 : RM(src2))); return push_inst(compiler, (!(flags & ARGS_SWAPPED) ? SUB : RSB) | (flags & SET_FLAGS) @@ -1220,6 +1224,7 @@ case SLJIT_MUL: SLJIT_ASSERT(!(flags & INV_IMM)); SLJIT_ASSERT(!(src2 & SRC2_IMM)); + compiler->status_flags_state = 0; if (!HAS_FLAGS(op)) return push_inst(compiler, MUL | (reg_map[dst] << 16) | (reg_map[src2] << 8) | reg_map[src1]); @@ -2153,16 +2158,14 @@ /* Conditional instructions */ /* --------------------------------------------------------------------- */ -static sljit_uw get_cc(sljit_s32 type) +static sljit_uw get_cc(struct sljit_compiler *compiler, sljit_s32 type) { switch (type) { case SLJIT_EQUAL: - case SLJIT_MUL_NOT_OVERFLOW: case SLJIT_EQUAL_F64: return 0x00000000; case SLJIT_NOT_EQUAL: - case SLJIT_MUL_OVERFLOW: case SLJIT_NOT_EQUAL_F64: return 0x10000000; @@ -2195,10 +2198,16 @@ return 0xd0000000; case SLJIT_OVERFLOW: + if (!(compiler->status_flags_state & SLJIT_CURRENT_FLAGS_ADD_SUB)) + return 0x10000000; + case SLJIT_UNORDERED_F64: return 0x60000000; case SLJIT_NOT_OVERFLOW: + if (!(compiler->status_flags_state & SLJIT_CURRENT_FLAGS_ADD_SUB)) + return 0x00000000; + case SLJIT_ORDERED_F64: return 0x70000000; @@ -2242,7 +2251,7 @@ if (type >= SLJIT_FAST_CALL) PTR_FAIL_IF(prepare_blx(compiler)); PTR_FAIL_IF(push_inst_with_unique_literal(compiler, ((EMIT_DATA_TRANSFER(WORD_SIZE | LOAD_DATA, 1, - type <= SLJIT_JUMP ? TMP_PC : TMP_REG1, TMP_PC, 0)) & ~COND_MASK) | get_cc(type), 0)); + type <= SLJIT_JUMP ? TMP_PC : TMP_REG1, TMP_PC, 0)) & ~COND_MASK) | get_cc(compiler, type), 0)); if (jump->flags & SLJIT_REWRITABLE_JUMP) { jump->addr = compiler->size; @@ -2260,7 +2269,7 @@ if (type >= SLJIT_FAST_CALL) jump->flags |= IS_BL; PTR_FAIL_IF(emit_imm(compiler, TMP_REG1, 0)); - PTR_FAIL_IF(push_inst(compiler, (((type <= SLJIT_JUMP ? BX : BLX) | RM(TMP_REG1)) & ~COND_MASK) | get_cc(type))); + PTR_FAIL_IF(push_inst(compiler, (((type <= SLJIT_JUMP ? BX : BLX) | RM(TMP_REG1)) & ~COND_MASK) | get_cc(compiler, type))); jump->addr = compiler->size; #endif return jump; @@ -2589,7 +2598,7 @@ ADJUST_LOCAL_OFFSET(dst, dstw); op = GET_OPCODE(op); - cc = get_cc(type & 0xff); + cc = get_cc(compiler, type & 0xff); dst_reg = FAST_IS_REG(dst) ? dst : TMP_REG1; if (op < SLJIT_ADD) { @@ -2629,7 +2638,7 @@ dst_reg &= ~SLJIT_I32_OP; - cc = get_cc(type & 0xff); + cc = get_cc(compiler, type & 0xff); if (SLJIT_UNLIKELY(src & SLJIT_IMM)) { tmp = get_imm(srcw); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeARM_64.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeARM_64.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeARM_64.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeARM_64.c 2022-11-11 15:29:17.000000000 +0800 @@ -644,6 +644,7 @@ imm = -imm; /* Fall through. */ case SLJIT_ADD: + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; if (imm == 0) { CHECK_FLAGS(1 << 29); return push_inst(compiler, ((op == SLJIT_ADD ? ADDI : SUBI) ^ inv_bits) | RD(dst) | RN(reg)); @@ -781,6 +782,7 @@ break; /* Set flags. */ case SLJIT_NEG: SLJIT_ASSERT(arg1 == TMP_REG1); + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; if (flags & SET_FLAGS) inv_bits |= 1 << 29; return push_inst(compiler, (SUB ^ inv_bits) | RD(dst) | RN(TMP_ZERO) | RM(arg2)); @@ -789,17 +791,20 @@ return push_inst(compiler, (CLZ ^ inv_bits) | RD(dst) | RN(arg2)); case SLJIT_ADD: CHECK_FLAGS(1 << 29); + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; return push_inst(compiler, (ADD ^ inv_bits) | RD(dst) | RN(arg1) | RM(arg2)); case SLJIT_ADDC: CHECK_FLAGS(1 << 29); return push_inst(compiler, (ADC ^ inv_bits) | RD(dst) | RN(arg1) | RM(arg2)); case SLJIT_SUB: CHECK_FLAGS(1 << 29); + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; return push_inst(compiler, (SUB ^ inv_bits) | RD(dst) | RN(arg1) | RM(arg2)); case SLJIT_SUBC: CHECK_FLAGS(1 << 29); return push_inst(compiler, (SBC ^ inv_bits) | RD(dst) | RN(arg1) | RM(arg2)); case SLJIT_MUL: + compiler->status_flags_state = 0; if (!(flags & SET_FLAGS)) return push_inst(compiler, (MADD ^ inv_bits) | RD(dst) | RN(arg1) | RM(arg2) | RT2(TMP_ZERO)); if (flags & INT_OP) { @@ -1600,16 +1605,14 @@ /* Conditional instructions */ /* --------------------------------------------------------------------- */ -static sljit_uw get_cc(sljit_s32 type) +static sljit_uw get_cc(struct sljit_compiler *compiler, sljit_s32 type) { switch (type) { case SLJIT_EQUAL: - case SLJIT_MUL_NOT_OVERFLOW: case SLJIT_EQUAL_F64: return 0x1; case SLJIT_NOT_EQUAL: - case SLJIT_MUL_OVERFLOW: case SLJIT_NOT_EQUAL_F64: return 0x0; @@ -1642,10 +1645,16 @@ return 0xc; case SLJIT_OVERFLOW: + if (!(compiler->status_flags_state & SLJIT_CURRENT_FLAGS_ADD_SUB)) + return 0x0; + case SLJIT_UNORDERED_F64: return 0x7; case SLJIT_NOT_OVERFLOW: + if (!(compiler->status_flags_state & SLJIT_CURRENT_FLAGS_ADD_SUB)) + return 0x1; + case SLJIT_ORDERED_F64: return 0x6; @@ -1685,7 +1694,7 @@ if (type < SLJIT_JUMP) { jump->flags |= IS_COND; - PTR_FAIL_IF(push_inst(compiler, B_CC | (6 << 5) | get_cc(type))); + PTR_FAIL_IF(push_inst(compiler, B_CC | (6 << 5) | get_cc(compiler, type))); } else if (type >= SLJIT_FAST_CALL) jump->flags |= IS_BL; @@ -1799,7 +1808,7 @@ CHECK(check_sljit_emit_op_flags(compiler, op, dst, dstw, type)); ADJUST_LOCAL_OFFSET(dst, dstw); - cc = get_cc(type & 0xff); + cc = get_cc(compiler, type & 0xff); dst_r = FAST_IS_REG(dst) ? dst : TMP_REG1; if (GET_OPCODE(op) < SLJIT_ADD) { @@ -1854,7 +1863,7 @@ srcw = 0; } - cc = get_cc(type & 0xff); + cc = get_cc(compiler, type & 0xff); dst_reg &= ~SLJIT_I32_OP; return push_inst(compiler, (CSEL ^ inv_bits) | (cc << 12) | RD(dst_reg) | RN(dst_reg) | RM(src)); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeARM_T2_32.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeARM_T2_32.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeARM_T2_32.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeARM_T2_32.c 2022-11-11 15:29:17.000000000 +0800 @@ -610,6 +610,7 @@ Although some clever things could be done here, "NOT IMM" does not worth the efforts. */ break; case SLJIT_ADD: + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; nimm = -(sljit_sw)imm; if (IS_2_LO_REGS(reg, dst)) { if (imm <= 0x7) @@ -643,6 +644,7 @@ break; case SLJIT_SUB: /* SUB operation can be replaced by ADD because of the negative carry flag. */ + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; if (flags & ARG1_IMM) { if (imm == 0 && IS_2_LO_REGS(reg, dst)) return push_inst16(compiler, RSBSI | RD3(dst) | RN3(reg)); @@ -801,6 +803,7 @@ FAIL_IF(push_inst32(compiler, CLZ | RN4(arg2) | RD4(dst) | RM4(arg2))); return SLJIT_SUCCESS; case SLJIT_ADD: + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; if (IS_3_LO_REGS(dst, arg1, arg2)) return push_inst16(compiler, ADDS | RD3(dst) | RN3(arg1) | RM3(arg2)); if (dst == arg1 && !(flags & SET_FLAGS)) @@ -811,6 +814,7 @@ return push_inst16(compiler, ADCS | RD3(dst) | RN3(arg2)); return push_inst32(compiler, ADC_W | (flags & SET_FLAGS) | RD4(dst) | RN4(arg1) | RM4(arg2)); case SLJIT_SUB: + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; if (flags & UNUSED_RETURN) { if (IS_2_LO_REGS(arg1, arg2)) return push_inst16(compiler, CMP | RD3(arg1) | RN3(arg2)); @@ -824,6 +828,7 @@ return push_inst16(compiler, SBCS | RD3(dst) | RN3(arg2)); return push_inst32(compiler, SBC_W | (flags & SET_FLAGS) | RD4(dst) | RN4(arg1) | RM4(arg2)); case SLJIT_MUL: + compiler->status_flags_state = 0; if (!(flags & SET_FLAGS)) return push_inst32(compiler, MUL | RD4(dst) | RN4(arg1) | RM4(arg2)); SLJIT_ASSERT(dst != TMP_REG2); @@ -1760,16 +1765,14 @@ /* Conditional instructions */ /* --------------------------------------------------------------------- */ -static sljit_uw get_cc(sljit_s32 type) +static sljit_uw get_cc(struct sljit_compiler *compiler, sljit_s32 type) { switch (type) { case SLJIT_EQUAL: - case SLJIT_MUL_NOT_OVERFLOW: case SLJIT_EQUAL_F64: return 0x0; case SLJIT_NOT_EQUAL: - case SLJIT_MUL_OVERFLOW: case SLJIT_NOT_EQUAL_F64: return 0x1; @@ -1802,10 +1805,16 @@ return 0xd; case SLJIT_OVERFLOW: + if (!(compiler->status_flags_state & SLJIT_CURRENT_FLAGS_ADD_SUB)) + return 0x1; + case SLJIT_UNORDERED_F64: return 0x6; case SLJIT_NOT_OVERFLOW: + if (!(compiler->status_flags_state & SLJIT_CURRENT_FLAGS_ADD_SUB)) + return 0x0; + case SLJIT_ORDERED_F64: return 0x7; @@ -1847,7 +1856,7 @@ PTR_FAIL_IF(emit_imm32_const(compiler, TMP_REG1, 0)); if (type < SLJIT_JUMP) { jump->flags |= IS_COND; - cc = get_cc(type); + cc = get_cc(compiler, type); jump->flags |= cc << 8; PTR_FAIL_IF(push_inst16(compiler, IT | (cc << 4) | 0x8)); } @@ -2177,7 +2186,7 @@ ADJUST_LOCAL_OFFSET(dst, dstw); op = GET_OPCODE(op); - cc = get_cc(type & 0xff); + cc = get_cc(compiler, type & 0xff); dst_r = FAST_IS_REG(dst) ? dst : TMP_REG1; if (op < SLJIT_ADD) { @@ -2229,7 +2238,7 @@ dst_reg &= ~SLJIT_I32_OP; - cc = get_cc(type & 0xff); + cc = get_cc(compiler, type & 0xff); if (!(src & SLJIT_IMM)) { FAIL_IF(push_inst16(compiler, IT | (cc << 4) | 0x8)); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_32.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_32.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_32.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_32.c 2022-11-11 15:29:17.000000000 +0800 @@ -367,7 +367,7 @@ case SLJIT_MUL: SLJIT_ASSERT(!(flags & SRC2_IMM)); - if (GET_FLAG_TYPE(op) != SLJIT_MUL_OVERFLOW) { + if (GET_FLAG_TYPE(op) != SLJIT_OVERFLOW) { #if (defined SLJIT_MIPS_REV && SLJIT_MIPS_REV >= 1) return push_inst(compiler, MUL | S(src1) | T(src2) | D(dst), DR(dst)); #else /* SLJIT_MIPS_REV < 1 */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_64.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_64.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_64.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_64.c 2022-11-11 15:29:17.000000000 +0800 @@ -458,7 +458,7 @@ case SLJIT_MUL: SLJIT_ASSERT(!(flags & SRC2_IMM)); - if (GET_FLAG_TYPE(op) != SLJIT_MUL_OVERFLOW) { + if (GET_FLAG_TYPE(op) != SLJIT_OVERFLOW) { #if (defined SLJIT_MIPS_REV && SLJIT_MIPS_REV >= 6) return push_inst(compiler, SELECT_OP(DMUL, MUL) | S(src1) | T(src2) | D(dst), DR(dst)); #elif (defined SLJIT_MIPS_REV && SLJIT_MIPS_REV >= 1) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_common.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_common.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_common.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_common.c 2022-11-11 15:29:17.000000000 +0800 @@ -1377,6 +1377,7 @@ return emit_op(compiler, op, flags, dst, dstw, TMP_REG1, 0, src, srcw); case SLJIT_NEG: + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; return emit_op(compiler, SLJIT_SUB | GET_ALL_FLAGS(op), flags | IMM_OP, dst, dstw, SLJIT_IMM, 0, src, srcw); case SLJIT_CLZ: @@ -1424,13 +1425,16 @@ switch (GET_OPCODE(op)) { case SLJIT_ADD: case SLJIT_ADDC: + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; return emit_op(compiler, op, flags | CUMULATIVE_OP | IMM_OP, dst, dstw, src1, src1w, src2, src2w); case SLJIT_SUB: case SLJIT_SUBC: + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; return emit_op(compiler, op, flags | IMM_OP, dst, dstw, src1, src1w, src2, src2w); case SLJIT_MUL: + compiler->status_flags_state = 0; return emit_op(compiler, op, flags | CUMULATIVE_OP, dst, dstw, src1, src1w, src2, src2w); case SLJIT_AND: @@ -1860,7 +1864,6 @@ case SLJIT_SIG_LESS: case SLJIT_SIG_GREATER: case SLJIT_OVERFLOW: - case SLJIT_MUL_OVERFLOW: BR_Z(OTHER_FLAG); break; case SLJIT_GREATER_EQUAL: @@ -1868,7 +1871,6 @@ case SLJIT_SIG_GREATER_EQUAL: case SLJIT_SIG_LESS_EQUAL: case SLJIT_NOT_OVERFLOW: - case SLJIT_MUL_NOT_OVERFLOW: BR_NZ(OTHER_FLAG); break; case SLJIT_NOT_EQUAL_F64: @@ -2127,8 +2129,12 @@ FAIL_IF(push_inst(compiler, SLTIU | SA(EQUAL_FLAG) | TA(dst_ar) | IMM(1), dst_ar)); src_ar = dst_ar; break; - case SLJIT_MUL_OVERFLOW: - case SLJIT_MUL_NOT_OVERFLOW: + case SLJIT_OVERFLOW: + case SLJIT_NOT_OVERFLOW: + if (compiler->status_flags_state & SLJIT_CURRENT_FLAGS_ADD_SUB) { + src_ar = OTHER_FLAG; + break; + } FAIL_IF(push_inst(compiler, SLTIU | SA(OTHER_FLAG) | TA(dst_ar) | IMM(1), dst_ar)); src_ar = dst_ar; type ^= 0x1; /* Flip type bit for the XORI below. */ @@ -2219,7 +2225,6 @@ case SLJIT_SIG_LESS: case SLJIT_SIG_GREATER: case SLJIT_OVERFLOW: - case SLJIT_MUL_OVERFLOW: ins = MOVN | TA(OTHER_FLAG); break; case SLJIT_GREATER_EQUAL: @@ -2227,7 +2232,6 @@ case SLJIT_SIG_GREATER_EQUAL: case SLJIT_SIG_LESS_EQUAL: case SLJIT_NOT_OVERFLOW: - case SLJIT_MUL_NOT_OVERFLOW: ins = MOVZ | TA(OTHER_FLAG); break; case SLJIT_EQUAL_F64: diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativePPC_32.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativePPC_32.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativePPC_32.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativePPC_32.c 2022-11-11 15:29:17.000000000 +0800 @@ -119,9 +119,10 @@ SLJIT_ASSERT(src2 == TMP_REG2); return push_inst(compiler, ADDIC | D(dst) | A(src1) | compiler->imm); } + SLJIT_ASSERT(!(flags & ALT_FORM4)); if (!(flags & ALT_SET_FLAGS)) return push_inst(compiler, ADD | D(dst) | A(src1) | B(src2)); - if (flags & ALT_FORM4) + if (flags & ALT_FORM5) return push_inst(compiler, ADDC | RC(ALT_SET_FLAGS) | D(dst) | A(src1) | B(src2)); return push_inst(compiler, ADD | RC(flags) | D(dst) | A(src1) | B(src2)); @@ -143,24 +144,29 @@ } if (flags & ALT_FORM2) { + if (flags & ALT_FORM3) { + FAIL_IF(push_inst(compiler, CMPI | CRD(0) | A(src1) | compiler->imm)); + if (!(flags & ALT_FORM4)) + return SLJIT_SUCCESS; + return push_inst(compiler, ADDI | D(dst) | A(src1) | (-compiler->imm & 0xffff)); + } + FAIL_IF(push_inst(compiler, CMP | CRD(0) | A(src1) | B(src2))); + if (!(flags & ALT_FORM4)) + return SLJIT_SUCCESS; + return push_inst(compiler, SUBF | D(dst) | A(src2) | B(src1)); + } + + if (flags & ALT_FORM3) { /* Setting XER SO is not enough, CR SO is also needed. */ return push_inst(compiler, SUBF | OE(ALT_SET_FLAGS) | RC(ALT_SET_FLAGS) | D(dst) | A(src2) | B(src1)); } - if (flags & ALT_FORM3) { + if (flags & ALT_FORM4) { /* Flags does not set: BIN_IMM_EXTS unnecessary. */ SLJIT_ASSERT(src2 == TMP_REG2); return push_inst(compiler, SUBFIC | D(dst) | A(src1) | compiler->imm); } - if (flags & ALT_FORM4) { - if (flags & ALT_FORM5) { - SLJIT_ASSERT(src2 == TMP_REG2); - return push_inst(compiler, CMPI | CRD(0) | A(src1) | compiler->imm); - } - return push_inst(compiler, CMP | CRD(0) | A(src1) | B(src2)); - } - if (!(flags & ALT_SET_FLAGS)) return push_inst(compiler, SUBF | D(dst) | A(src2) | B(src1)); if (flags & ALT_FORM5) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativePPC_64.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativePPC_64.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativePPC_64.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativePPC_64.c 2022-11-11 15:29:17.000000000 +0800 @@ -252,10 +252,17 @@ BIN_IMM_EXTS(); return push_inst(compiler, ADDIC | D(dst) | A(src1) | compiler->imm); } + if (flags & ALT_FORM4) { + if (flags & ALT_FORM5) + FAIL_IF(push_inst(compiler, ADDI | D(dst) | A(src1) | compiler->imm)); + else + FAIL_IF(push_inst(compiler, ADD | D(dst) | A(src1) | B(src2))); + return push_inst(compiler, CMPI | A(dst) | 0); + } if (!(flags & ALT_SET_FLAGS)) return push_inst(compiler, ADD | D(dst) | A(src1) | B(src2)); BIN_EXTS(); - if (flags & ALT_FORM4) + if (flags & ALT_FORM5) return push_inst(compiler, ADDC | RC(ALT_SET_FLAGS) | D(dst) | A(src1) | B(src2)); return push_inst(compiler, ADD | RC(flags) | D(dst) | A(src1) | B(src2)); @@ -278,6 +285,19 @@ } if (flags & ALT_FORM2) { + if (flags & ALT_FORM3) { + FAIL_IF(push_inst(compiler, CMPI | CRD(0 | ((flags & ALT_SIGN_EXT) ? 0 : 1)) | A(src1) | compiler->imm)); + if (!(flags & ALT_FORM4)) + return SLJIT_SUCCESS; + return push_inst(compiler, ADDI | D(dst) | A(src1) | (-compiler->imm & 0xffff)); + } + FAIL_IF(push_inst(compiler, CMP | CRD(0 | ((flags & ALT_SIGN_EXT) ? 0 : 1)) | A(src1) | B(src2))); + if (!(flags & ALT_FORM4)) + return SLJIT_SUCCESS; + return push_inst(compiler, SUBF | D(dst) | A(src2) | B(src1)); + } + + if (flags & ALT_FORM3) { if (flags & ALT_SIGN_EXT) { FAIL_IF(push_inst(compiler, RLDI(TMP_REG1, src1, 32, 31, 1))); src1 = TMP_REG1; @@ -291,20 +311,12 @@ return SLJIT_SUCCESS; } - if (flags & ALT_FORM3) { + if (flags & ALT_FORM4) { /* Flags does not set: BIN_IMM_EXTS unnecessary. */ SLJIT_ASSERT(src2 == TMP_REG2); return push_inst(compiler, SUBFIC | D(dst) | A(src1) | compiler->imm); } - if (flags & ALT_FORM4) { - if (flags & ALT_FORM5) { - SLJIT_ASSERT(src2 == TMP_REG2); - return push_inst(compiler, CMPI | CRD(0 | ((flags & ALT_SIGN_EXT) ? 0 : 1)) | A(src1) | compiler->imm); - } - return push_inst(compiler, CMP | CRD(0 | ((flags & ALT_SIGN_EXT) ? 0 : 1)) | A(src1) | B(src2)); - } - if (!(flags & ALT_SET_FLAGS)) return push_inst(compiler, SUBF | D(dst) | A(src2) | B(src1)); BIN_EXTS(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativePPC_common.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativePPC_common.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativePPC_common.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativePPC_common.c 2022-11-11 15:29:17.000000000 +0800 @@ -1324,6 +1324,25 @@ ((src) & SLJIT_IMM) #endif +#if (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) +#define TEST_ADD_FORM1(op) \ + (GET_FLAG_TYPE(op) == SLJIT_OVERFLOW \ + || (op & (SLJIT_I32_OP | SLJIT_SET_Z | VARIABLE_FLAG_MASK)) == (SLJIT_I32_OP | SLJIT_SET_Z | SLJIT_SET_CARRY)) +#define TEST_SUB_FORM2(op) \ + ((GET_FLAG_TYPE(op) >= SLJIT_SIG_LESS && GET_FLAG_TYPE(op) <= SLJIT_SIG_LESS_EQUAL) \ + || (op & (SLJIT_I32_OP | SLJIT_SET_Z | VARIABLE_FLAG_MASK)) == (SLJIT_I32_OP | SLJIT_SET_Z)) +#define TEST_SUB_FORM3(op) \ + (GET_FLAG_TYPE(op) == SLJIT_OVERFLOW \ + || (op & (SLJIT_I32_OP | SLJIT_SET_Z)) == (SLJIT_I32_OP | SLJIT_SET_Z)) +#else +#define TEST_ADD_FORM1(op) \ + (GET_FLAG_TYPE(op) == SLJIT_OVERFLOW) +#define TEST_SUB_FORM2(op) \ + (GET_FLAG_TYPE(op) >= SLJIT_SIG_LESS && GET_FLAG_TYPE(op) <= SLJIT_SIG_LESS_EQUAL) +#define TEST_SUB_FORM3(op) \ + (GET_FLAG_TYPE(op) == SLJIT_OVERFLOW) +#endif + SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op2(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src1, sljit_sw src1w, @@ -1362,7 +1381,7 @@ switch (GET_OPCODE(op)) { case SLJIT_ADD: - if (GET_FLAG_TYPE(op) == SLJIT_OVERFLOW) + if (TEST_ADD_FORM1(op)) return emit_op(compiler, SLJIT_ADD, flags | ALT_FORM1, dst, dstw, src1, src1w, src2, src2w); if (!HAS_FLAGS(op) && ((src1 | src2) & SLJIT_IMM)) { @@ -1392,6 +1411,20 @@ return emit_op(compiler, SLJIT_ADD, flags | ALT_FORM2 | ALT_FORM4, dst, dstw, src2, src2w, TMP_REG2, 0); } } + +#if (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) + if ((op & (SLJIT_I32_OP | SLJIT_SET_Z)) == (SLJIT_I32_OP | SLJIT_SET_Z)) { + if (TEST_SL_IMM(src2, src2w)) { + compiler->imm = src2w & 0xffff; + return emit_op(compiler, SLJIT_ADD, flags | ALT_FORM4 | ALT_FORM5, dst, dstw, src1, src1w, TMP_REG2, 0); + } + if (TEST_SL_IMM(src1, src1w)) { + compiler->imm = src1w & 0xffff; + return emit_op(compiler, SLJIT_ADD, flags | ALT_FORM4 | ALT_FORM5, dst, dstw, src2, src2w, TMP_REG2, 0); + } + return emit_op(compiler, SLJIT_ADD, flags | ALT_FORM4, dst, dstw, src1, src1w, src2, src2w); + } +#endif if (HAS_FLAGS(op)) { if (TEST_SL_IMM(src2, src2w)) { compiler->imm = src2w & 0xffff; @@ -1402,7 +1435,7 @@ return emit_op(compiler, SLJIT_ADD, flags | ALT_FORM3, dst, dstw, src2, src2w, TMP_REG2, 0); } } - return emit_op(compiler, SLJIT_ADD, flags | ((GET_FLAG_TYPE(op) == GET_FLAG_TYPE(SLJIT_SET_CARRY)) ? ALT_FORM4 : 0), dst, dstw, src1, src1w, src2, src2w); + return emit_op(compiler, SLJIT_ADD, flags | ((GET_FLAG_TYPE(op) == GET_FLAG_TYPE(SLJIT_SET_CARRY)) ? ALT_FORM5 : 0), dst, dstw, src1, src1w, src2, src2w); case SLJIT_ADDC: return emit_op(compiler, SLJIT_ADDC, flags, dst, dstw, src1, src1w, src2, src2w); @@ -1424,18 +1457,36 @@ return emit_op(compiler, SLJIT_SUB, flags | ALT_FORM1 | ALT_FORM3, dst, dstw, src1, src1w, src2, src2w); } - if (GET_FLAG_TYPE(op) == SLJIT_OVERFLOW) + if (dst == SLJIT_UNUSED && GET_FLAG_TYPE(op) <= SLJIT_SIG_LESS_EQUAL) { + if (TEST_SL_IMM(src2, src2w)) { + compiler->imm = src2w & 0xffff; + return emit_op(compiler, SLJIT_SUB, flags | ALT_FORM2 | ALT_FORM3, dst, dstw, src1, src1w, TMP_REG2, 0); + } return emit_op(compiler, SLJIT_SUB, flags | ALT_FORM2, dst, dstw, src1, src1w, src2, src2w); + } - if (!HAS_FLAGS(op) && ((src1 | src2) & SLJIT_IMM)) { - if (TEST_SL_IMM(src2, -src2w)) { - compiler->imm = (-src2w) & 0xffff; - return emit_op(compiler, SLJIT_ADD, flags | ALT_FORM2, dst, dstw, src1, src1w, TMP_REG2, 0); - } - if (TEST_SL_IMM(src1, src1w)) { - compiler->imm = src1w & 0xffff; - return emit_op(compiler, SLJIT_SUB, flags | ALT_FORM3, dst, dstw, src2, src2w, TMP_REG2, 0); + if (TEST_SUB_FORM2(op)) { + if ((src2 & SLJIT_IMM) && src2w >= -SIMM_MAX && src2w <= SIMM_MAX) { + compiler->imm = src2w & 0xffff; + return emit_op(compiler, SLJIT_SUB, flags | ALT_FORM2 | ALT_FORM3 | ALT_FORM4, dst, dstw, src1, src1w, TMP_REG2, 0); } + return emit_op(compiler, SLJIT_SUB, flags | ALT_FORM2 | ALT_FORM4, dst, dstw, src1, src1w, src2, src2w); + } + + if (TEST_SUB_FORM3(op)) + return emit_op(compiler, SLJIT_SUB, flags | ALT_FORM3, dst, dstw, src1, src1w, src2, src2w); + + if (TEST_SL_IMM(src2, -src2w)) { + compiler->imm = (-src2w) & 0xffff; + return emit_op(compiler, SLJIT_ADD, flags | (!HAS_FLAGS(op) ? ALT_FORM2 : ALT_FORM3), dst, dstw, src1, src1w, TMP_REG2, 0); + } + + if (TEST_SL_IMM(src1, src1w) && !(op & SLJIT_SET_Z)) { + compiler->imm = src1w & 0xffff; + return emit_op(compiler, SLJIT_SUB, flags | ALT_FORM4, dst, dstw, src2, src2w, TMP_REG2, 0); + } + + if (!HAS_FLAGS(op)) { if (TEST_SH_IMM(src2, -src2w)) { compiler->imm = ((-src2w) >> 16) & 0xffff; return emit_op(compiler, SLJIT_ADD, flags | ALT_FORM2 | ALT_FORM3, dst, dstw, src1, src1w, TMP_REG2, 0); @@ -1447,18 +1498,6 @@ } } - if (dst == SLJIT_UNUSED && GET_FLAG_TYPE(op) != GET_FLAG_TYPE(SLJIT_SET_CARRY)) { - if (TEST_SL_IMM(src2, src2w)) { - compiler->imm = src2w & 0xffff; - return emit_op(compiler, SLJIT_SUB, flags | ALT_FORM4 | ALT_FORM5, dst, dstw, src1, src1w, TMP_REG2, 0); - } - return emit_op(compiler, SLJIT_SUB, flags | ALT_FORM4, dst, dstw, src1, src1w, src2, src2w); - } - - if (TEST_SL_IMM(src2, -src2w)) { - compiler->imm = (-src2w) & 0xffff; - return emit_op(compiler, SLJIT_ADD, flags | ALT_FORM3, dst, dstw, src1, src1w, TMP_REG2, 0); - } /* We know ALT_SIGN_EXT is set if it is an SLJIT_I32_OP on 64 bit systems. */ return emit_op(compiler, SLJIT_SUB, flags | ((GET_FLAG_TYPE(op) == GET_FLAG_TYPE(SLJIT_SET_CARRY)) ? ALT_FORM5 : 0), dst, dstw, src1, src1w, src2, src2w); @@ -1536,6 +1575,10 @@ return SLJIT_SUCCESS; } +#undef TEST_ADD_FORM1 +#undef TEST_SUB_FORM2 +#undef TEST_SUB_FORM3 + SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_src(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 src, sljit_sw srcw) { @@ -1941,11 +1984,9 @@ return (4 << 21) | ((4 + 1) << 16); case SLJIT_OVERFLOW: - case SLJIT_MUL_OVERFLOW: return (12 << 21) | (3 << 16); case SLJIT_NOT_OVERFLOW: - case SLJIT_MUL_NOT_OVERFLOW: return (4 << 21) | (3 << 16); case SLJIT_EQUAL_F64: @@ -2143,12 +2184,10 @@ break; case SLJIT_OVERFLOW: - case SLJIT_MUL_OVERFLOW: cr_bit = 3; break; case SLJIT_NOT_OVERFLOW: - case SLJIT_MUL_NOT_OVERFLOW: cr_bit = 3; invert = 1; break; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeS390X.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeS390X.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeS390X.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeS390X.c 2022-11-11 15:29:17.000000000 +0800 @@ -42,10 +42,10 @@ typedef sljit_uw sljit_ins; /* Instruction tags (most significant halfword). */ -const sljit_ins sljit_ins_const = (sljit_ins)1 << 48; +static const sljit_ins sljit_ins_const = (sljit_ins)1 << 48; static const sljit_u8 reg_map[SLJIT_NUMBER_OF_REGISTERS + 4] = { - 14, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 0, 1 + 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 0, 1 }; /* there are also a[2-15] available, but they are slower to access and @@ -66,22 +66,22 @@ * will be retired ASAP (TODO: carenas) */ -const sljit_gpr r0 = 0; /* reg_map[SLJIT_NUMBER_OF_REGISTERS + 2]: 0 in address calculations; reserved */ -const sljit_gpr r1 = 1; /* reg_map[SLJIT_NUMBER_OF_REGISTERS + 3]: reserved */ -const sljit_gpr r2 = 2; /* reg_map[1]: 1st argument */ -const sljit_gpr r3 = 3; /* reg_map[2]: 2nd argument */ -const sljit_gpr r4 = 4; /* reg_map[3]: 3rd argument */ -const sljit_gpr r5 = 5; /* reg_map[4]: 4th argument */ -const sljit_gpr r6 = 6; /* reg_map[5]: 5th argument; 1st saved register */ -const sljit_gpr r7 = 7; /* reg_map[6] */ -const sljit_gpr r8 = 8; /* reg_map[7] */ -const sljit_gpr r9 = 9; /* reg_map[8] */ -const sljit_gpr r10 = 10; /* reg_map[9] */ -const sljit_gpr r11 = 11; /* reg_map[10] */ -const sljit_gpr r12 = 12; /* reg_map[11]: GOT */ -const sljit_gpr r13 = 13; /* reg_map[12]: Literal Pool pointer */ -const sljit_gpr r14 = 14; /* reg_map[0]: return address and flag register */ -const sljit_gpr r15 = 15; /* reg_map[SLJIT_NUMBER_OF_REGISTERS + 1]: stack pointer */ +static const sljit_gpr r0 = 0; /* reg_map[SLJIT_NUMBER_OF_REGISTERS + 2]: 0 in address calculations; reserved */ +static const sljit_gpr r1 = 1; /* reg_map[SLJIT_NUMBER_OF_REGISTERS + 3]: reserved */ +static const sljit_gpr r2 = 2; /* reg_map[1]: 1st argument */ +static const sljit_gpr r3 = 3; /* reg_map[2]: 2nd argument */ +static const sljit_gpr r4 = 4; /* reg_map[3]: 3rd argument */ +static const sljit_gpr r5 = 5; /* reg_map[4]: 4th argument */ +static const sljit_gpr r6 = 6; /* reg_map[5]: 5th argument; 1st saved register */ +static const sljit_gpr r7 = 7; /* reg_map[6] */ +static const sljit_gpr r8 = 8; /* reg_map[7] */ +static const sljit_gpr r9 = 9; /* reg_map[8] */ +static const sljit_gpr r10 = 10; /* reg_map[9] */ +static const sljit_gpr r11 = 11; /* reg_map[10] */ +static const sljit_gpr r12 = 12; /* reg_map[11]: GOT */ +static const sljit_gpr r13 = 13; /* reg_map[12]: Literal Pool pointer */ +static const sljit_gpr r14 = 14; /* reg_map[0]: return address and flag register */ +static const sljit_gpr r15 = 15; /* reg_map[SLJIT_NUMBER_OF_REGISTERS + 1]: stack pointer */ /* WARNING: r12 and r13 shouldn't be used as per ABI recommendation */ /* TODO(carenas): r12 might conflict in PIC code, reserve? */ @@ -100,8 +100,8 @@ /* Link registers. The normal link register is r14, but since we use that for flags we need to use r0 instead to do fast calls so that flags are preserved. */ -const sljit_gpr link_r = 14; /* r14 */ -const sljit_gpr fast_link_r = 0; /* r0 */ +static const sljit_gpr link_r = 14; /* r14 */ +static const sljit_gpr fast_link_r = 0; /* r0 */ /* Flag register layout: @@ -110,7 +110,7 @@ | ZERO | 0 | 0 | C C |///////| +---------------+---+---+-------+-------+ */ -const sljit_gpr flag_r = 14; /* r14 */ +static const sljit_gpr flag_r = 14; /* r14 */ struct sljit_s390x_const { struct sljit_const const_; /* must be first */ @@ -120,8 +120,7 @@ /* Convert SLJIT register to hardware register. */ static SLJIT_INLINE sljit_gpr gpr(sljit_s32 r) { - SLJIT_ASSERT(r != SLJIT_UNUSED); - SLJIT_ASSERT(r < (sljit_s32)(sizeof(reg_map) / sizeof(reg_map[0]))); + SLJIT_ASSERT(r >= 0 && r < (sljit_s32)(sizeof(reg_map) / sizeof(reg_map[0]))); return reg_map[r]; } @@ -172,51 +171,93 @@ return SLJIT_SUCCESS; } +#define SLJIT_ADD_SUB_NO_COMPARE(status_flags_state) \ + (((status_flags_state) & (SLJIT_CURRENT_FLAGS_ADD_SUB | SLJIT_CURRENT_FLAGS_COMPARE)) == SLJIT_CURRENT_FLAGS_ADD_SUB) + /* Map the given type to a 4-bit condition code mask. */ -static SLJIT_INLINE sljit_u8 get_cc(sljit_s32 type) { - const sljit_u8 eq = 1 << 3; /* equal {,to zero} */ - const sljit_u8 lt = 1 << 2; /* less than {,zero} */ - const sljit_u8 gt = 1 << 1; /* greater than {,zero} */ - const sljit_u8 ov = 1 << 0; /* {overflow,NaN} */ +static SLJIT_INLINE sljit_u8 get_cc(struct sljit_compiler *compiler, sljit_s32 type) { + const sljit_u8 cc0 = 1 << 3; /* equal {,to zero} */ + const sljit_u8 cc1 = 1 << 2; /* less than {,zero} */ + const sljit_u8 cc2 = 1 << 1; /* greater than {,zero} */ + const sljit_u8 cc3 = 1 << 0; /* {overflow,NaN} */ switch (type) { case SLJIT_EQUAL: + if (SLJIT_ADD_SUB_NO_COMPARE(compiler->status_flags_state)) { + sljit_s32 type = GET_FLAG_TYPE(compiler->status_flags_state); + if (type >= SLJIT_SIG_LESS && type <= SLJIT_SIG_LESS_EQUAL) + return cc0; + if (type == SLJIT_OVERFLOW) + return (cc0 | cc3); + return (cc0 | cc2); + } + case SLJIT_EQUAL_F64: - return eq; + return cc0; case SLJIT_NOT_EQUAL: + if (SLJIT_ADD_SUB_NO_COMPARE(compiler->status_flags_state)) { + sljit_s32 type = GET_FLAG_TYPE(compiler->status_flags_state); + if (type >= SLJIT_SIG_LESS && type <= SLJIT_SIG_LESS_EQUAL) + return (cc1 | cc2 | cc3); + if (type == SLJIT_OVERFLOW) + return (cc1 | cc2); + return (cc1 | cc3); + } + case SLJIT_NOT_EQUAL_F64: - return ~eq; + return (cc1 | cc2 | cc3); case SLJIT_LESS: + return cc1; + + case SLJIT_GREATER_EQUAL: + return (cc0 | cc2 | cc3); + + case SLJIT_GREATER: + if (compiler->status_flags_state & SLJIT_CURRENT_FLAGS_COMPARE) + return cc2; + return cc3; + + case SLJIT_LESS_EQUAL: + if (compiler->status_flags_state & SLJIT_CURRENT_FLAGS_COMPARE) + return (cc0 | cc1); + return (cc0 | cc1 | cc2); + case SLJIT_SIG_LESS: case SLJIT_LESS_F64: - return lt; + return cc1; - case SLJIT_LESS_EQUAL: case SLJIT_SIG_LESS_EQUAL: case SLJIT_LESS_EQUAL_F64: - return (lt | eq); + return (cc0 | cc1); - case SLJIT_GREATER: case SLJIT_SIG_GREATER: - case SLJIT_GREATER_F64: - return gt; + /* Overflow is considered greater, see SLJIT_SUB. */ + return cc2 | cc3; - case SLJIT_GREATER_EQUAL: case SLJIT_SIG_GREATER_EQUAL: - case SLJIT_GREATER_EQUAL_F64: - return (gt | eq); + return (cc0 | cc2 | cc3); case SLJIT_OVERFLOW: - case SLJIT_MUL_OVERFLOW: + if (compiler->status_flags_state & SLJIT_SET_Z) + return (cc2 | cc3); + case SLJIT_UNORDERED_F64: - return ov; + return cc3; case SLJIT_NOT_OVERFLOW: - case SLJIT_MUL_NOT_OVERFLOW: + if (compiler->status_flags_state & SLJIT_SET_Z) + return (cc0 | cc1); + case SLJIT_ORDERED_F64: - return ~ov; + return (cc0 | cc1 | cc2); + + case SLJIT_GREATER_F64: + return cc2; + + case SLJIT_GREATER_EQUAL_F64: + return (cc0 | cc2); } SLJIT_UNREACHABLE(); @@ -346,19 +387,20 @@ #define is_u32(d) (0 <= (d) && (d) <= 0xffffffffL) #define CHECK_SIGNED(v, bitlen) \ - ((v) == (((v) << (sizeof(v) * 8 - bitlen)) >> (sizeof(v) * 8 - bitlen))) + ((v) >= -(1 << ((bitlen) - 1)) && (v) < (1 << ((bitlen) - 1))) +#define is_s8(d) CHECK_SIGNED((d), 8) #define is_s16(d) CHECK_SIGNED((d), 16) #define is_s20(d) CHECK_SIGNED((d), 20) -#define is_s32(d) CHECK_SIGNED((d), 32) +#define is_s32(d) ((d) == (sljit_s32)(d)) -static SLJIT_INLINE sljit_uw disp_s20(sljit_s32 d) +static SLJIT_INLINE sljit_ins disp_s20(sljit_s32 d) { + SLJIT_ASSERT(is_s20(d)); + sljit_uw dh = (d >> 12) & 0xff; sljit_uw dl = (d << 8) & 0xfff00; - - SLJIT_ASSERT(is_s20(d)); - return dh | dl; + return (dh | dl) << 8; } /* TODO(carenas): variadic macro is not strictly needed */ @@ -372,12 +414,6 @@ return (pattern) | ((dst & 0xf) << 4) | (src & 0xf); \ } -/* ADD */ -SLJIT_S390X_RR(ar, 0x1a00) - -/* ADD LOGICAL */ -SLJIT_S390X_RR(alr, 0x1e00) - /* AND */ SLJIT_S390X_RR(nr, 0x1400) @@ -387,12 +423,6 @@ /* BRANCH ON CONDITION */ SLJIT_S390X_RR(bcr, 0x0700) /* TODO(mundaym): type for mask? */ -/* COMPARE */ -SLJIT_S390X_RR(cr, 0x1900) - -/* COMPARE LOGICAL */ -SLJIT_S390X_RR(clr, 0x1500) - /* DIVIDE */ SLJIT_S390X_RR(dr, 0x1d00) @@ -408,12 +438,6 @@ /* OR */ SLJIT_S390X_RR(or, 0x1600) -/* SUBTRACT */ -SLJIT_S390X_RR(sr, 0x1b00) - -/* SUBTRACT LOGICAL */ -SLJIT_S390X_RR(slr, 0x1f00) - #undef SLJIT_S390X_RR /* RRE form instructions */ @@ -423,25 +447,9 @@ return (pattern) | ((dst & 0xf) << 4) | (src & 0xf); \ } -/* ADD */ -SLJIT_S390X_RRE(agr, 0xb9080000) - -/* ADD LOGICAL */ -SLJIT_S390X_RRE(algr, 0xb90a0000) - -/* ADD LOGICAL WITH CARRY */ -SLJIT_S390X_RRE(alcr, 0xb9980000) -SLJIT_S390X_RRE(alcgr, 0xb9880000) - /* AND */ SLJIT_S390X_RRE(ngr, 0xb9800000) -/* COMPARE */ -SLJIT_S390X_RRE(cgr, 0xb9200000) - -/* COMPARE LOGICAL */ -SLJIT_S390X_RRE(clgr, 0xb9210000) - /* DIVIDE LOGICAL */ SLJIT_S390X_RRE(dlr, 0xb9970000) SLJIT_S390X_RRE(dlgr, 0xb9870000) @@ -482,8 +490,6 @@ SLJIT_S390X_RRE(mlgr, 0xb9860000) /* MULTIPLY SINGLE */ -SLJIT_S390X_RRE(msr, 0xb2520000) -SLJIT_S390X_RRE(msgr, 0xb90c0000) SLJIT_S390X_RRE(msgfr, 0xb91c0000) /* OR */ @@ -492,13 +498,6 @@ /* SUBTRACT */ SLJIT_S390X_RRE(sgr, 0xb9090000) -/* SUBTRACT LOGICAL */ -SLJIT_S390X_RRE(slgr, 0xb90b0000) - -/* SUBTRACT LOGICAL WITH BORROW */ -SLJIT_S390X_RRE(slbr, 0xb9990000) -SLJIT_S390X_RRE(slbgr, 0xb9890000) - #undef SLJIT_S390X_RRE /* RI-a form instructions */ @@ -509,13 +508,8 @@ } /* ADD HALFWORD IMMEDIATE */ -SLJIT_S390X_RIA(ahi, 0xa70a0000, sljit_s16) SLJIT_S390X_RIA(aghi, 0xa70b0000, sljit_s16) -/* COMPARE HALFWORD IMMEDIATE */ -SLJIT_S390X_RIA(chi, 0xa70e0000, sljit_s16) -SLJIT_S390X_RIA(cghi, 0xa70f0000, sljit_s16) - /* LOAD HALFWORD IMMEDIATE */ SLJIT_S390X_RIA(lhi, 0xa7080000, sljit_s16) SLJIT_S390X_RIA(lghi, 0xa7090000, sljit_s16) @@ -533,9 +527,6 @@ /* OR IMMEDIATE */ SLJIT_S390X_RIA(oilh, 0xa50a0000, sljit_u16) -/* TEST UNDER MASK */ -SLJIT_S390X_RIA(tmlh, 0xa7000000, sljit_u16) - #undef SLJIT_S390X_RIA /* RIL-a form instructions (requires extended immediate facility) */ @@ -547,30 +538,13 @@ } /* ADD IMMEDIATE */ -SLJIT_S390X_RILA(afi, 0xc20900000000, sljit_s32) SLJIT_S390X_RILA(agfi, 0xc20800000000, sljit_s32) /* ADD IMMEDIATE HIGH */ SLJIT_S390X_RILA(aih, 0xcc0800000000, sljit_s32) /* TODO(mundaym): high-word facility? */ -/* ADD LOGICAL IMMEDIATE */ -SLJIT_S390X_RILA(alfi, 0xc20b00000000, sljit_u32) -SLJIT_S390X_RILA(algfi, 0xc20a00000000, sljit_u32) - /* AND IMMEDIATE */ SLJIT_S390X_RILA(nihf, 0xc00a00000000, sljit_u32) -SLJIT_S390X_RILA(nilf, 0xc00b00000000, sljit_u32) - -/* COMPARE IMMEDIATE */ -SLJIT_S390X_RILA(cfi, 0xc20d00000000, sljit_s32) -SLJIT_S390X_RILA(cgfi, 0xc20c00000000, sljit_s32) - -/* COMPARE IMMEDIATE HIGH */ -SLJIT_S390X_RILA(cih, 0xcc0d00000000, sljit_s32) /* TODO(mundaym): high-word facility? */ - -/* COMPARE LOGICAL IMMEDIATE */ -SLJIT_S390X_RILA(clfi, 0xc20f00000000, sljit_u32) -SLJIT_S390X_RILA(clgfi, 0xc20e00000000, sljit_u32) /* EXCLUSIVE OR IMMEDIATE */ SLJIT_S390X_RILA(xilf, 0xc00700000000, sljit_u32) @@ -586,8 +560,8 @@ SLJIT_S390X_RILA(llihf, 0xc00e00000000, sljit_u32) SLJIT_S390X_RILA(llilf, 0xc00f00000000, sljit_u32) -/* OR IMMEDIATE */ -SLJIT_S390X_RILA(oilf, 0xc00d00000000, sljit_u32) +/* SUBTRACT LOGICAL IMMEDIATE */ +SLJIT_S390X_RILA(slfi, 0xc20500000000, sljit_u32) #undef SLJIT_S390X_RILA @@ -606,18 +580,6 @@ return (pattern) | ri | xi | bi | di; \ } -/* ADD */ -SLJIT_S390X_RXA(a, 0x5a000000) - -/* ADD LOGICAL */ -SLJIT_S390X_RXA(al, 0x5e000000) - -/* AND */ -SLJIT_S390X_RXA(n, 0x54000000) - -/* EXCLUSIVE OR */ -SLJIT_S390X_RXA(x, 0x57000000) - /* LOAD */ SLJIT_S390X_RXA(l, 0x58000000) @@ -630,9 +592,6 @@ /* MULTIPLY SINGLE */ SLJIT_S390X_RXA(ms, 0x71000000) -/* OR */ -SLJIT_S390X_RXA(o, 0x56000000) - /* STORE */ SLJIT_S390X_RXA(st, 0x50000000) @@ -642,12 +601,6 @@ /* STORE HALFWORD */ SLJIT_S390X_RXA(sth, 0x40000000) -/* SUBTRACT */ -SLJIT_S390X_RXA(s, 0x5b000000) - -/* SUBTRACT LOGICAL */ -SLJIT_S390X_RXA(sl, 0x5f000000) - #undef SLJIT_S390X_RXA /* RXY-a instructions */ @@ -660,31 +613,11 @@ ri = (sljit_ins)(r & 0xf) << 36; \ xi = (sljit_ins)(x & 0xf) << 32; \ bi = (sljit_ins)(b & 0xf) << 28; \ - di = (sljit_ins)disp_s20(d) << 8; \ + di = disp_s20(d); \ \ return (pattern) | ri | xi | bi | di; \ } -/* ADD */ -SLJIT_S390X_RXYA(ay, 0xe3000000005a, have_ldisp()) -SLJIT_S390X_RXYA(ag, 0xe30000000008, 1) - -/* ADD LOGICAL */ -SLJIT_S390X_RXYA(aly, 0xe3000000005e, have_ldisp()) -SLJIT_S390X_RXYA(alg, 0xe3000000000a, 1) - -/* ADD LOGICAL WITH CARRY */ -SLJIT_S390X_RXYA(alc, 0xe30000000098, 1) -SLJIT_S390X_RXYA(alcg, 0xe30000000088, 1) - -/* AND */ -SLJIT_S390X_RXYA(ny, 0xe30000000054, have_ldisp()) -SLJIT_S390X_RXYA(ng, 0xe30000000080, 1) - -/* EXCLUSIVE OR */ -SLJIT_S390X_RXYA(xy, 0xe30000000057, have_ldisp()) -SLJIT_S390X_RXYA(xg, 0xe30000000082, 1) - /* LOAD */ SLJIT_S390X_RXYA(ly, 0xe30000000058, have_ldisp()) SLJIT_S390X_RXYA(lg, 0xe30000000004, 1) @@ -713,10 +646,6 @@ SLJIT_S390X_RXYA(msy, 0xe30000000051, have_ldisp()) SLJIT_S390X_RXYA(msg, 0xe3000000000c, 1) -/* OR */ -SLJIT_S390X_RXYA(oy, 0xe30000000056, have_ldisp()) -SLJIT_S390X_RXYA(og, 0xe30000000081, 1) - /* STORE */ SLJIT_S390X_RXYA(sty, 0xe30000000050, have_ldisp()) SLJIT_S390X_RXYA(stg, 0xe30000000024, 1) @@ -727,41 +656,8 @@ /* STORE HALFWORD */ SLJIT_S390X_RXYA(sthy, 0xe30000000070, have_ldisp()) -/* SUBTRACT */ -SLJIT_S390X_RXYA(sy, 0xe3000000005b, have_ldisp()) -SLJIT_S390X_RXYA(sg, 0xe30000000009, 1) - -/* SUBTRACT LOGICAL */ -SLJIT_S390X_RXYA(sly, 0xe3000000005f, have_ldisp()) -SLJIT_S390X_RXYA(slg, 0xe3000000000b, 1) - -/* SUBTRACT LOGICAL WITH BORROW */ -SLJIT_S390X_RXYA(slb, 0xe30000000099, 1) -SLJIT_S390X_RXYA(slbg, 0xe30000000089, 1) - #undef SLJIT_S390X_RXYA -/* RS-a instructions */ -#define SLJIT_S390X_RSA(name, pattern) \ -SLJIT_S390X_INSTRUCTION(name, sljit_gpr reg, sljit_sw d, sljit_gpr b) \ -{ \ - sljit_ins r1 = (sljit_ins)(reg & 0xf) << 20; \ - sljit_ins b2 = (sljit_ins)(b & 0xf) << 12; \ - sljit_ins d2 = (sljit_ins)(d & 0xfff); \ - return (pattern) | r1 | b2 | d2; \ -} - -/* SHIFT LEFT SINGLE LOGICAL */ -SLJIT_S390X_RSA(sll, 0x89000000) - -/* SHIFT RIGHT SINGLE */ -SLJIT_S390X_RSA(sra, 0x8a000000) - -/* SHIFT RIGHT SINGLE LOGICAL */ -SLJIT_S390X_RSA(srl, 0x88000000) - -#undef SLJIT_S390X_RSA - /* RSY-a instructions */ #define SLJIT_S390X_RSYA(name, pattern, cond) \ SLJIT_S390X_INSTRUCTION(name, sljit_gpr dst, sljit_gpr src, sljit_sw d, sljit_gpr b) \ @@ -772,7 +668,7 @@ r1 = (sljit_ins)(dst & 0xf) << 36; \ r3 = (sljit_ins)(src & 0xf) << 32; \ b2 = (sljit_ins)(b & 0xf) << 28; \ - d2 = (sljit_ins)disp_s20(d) << 8; \ + d2 = disp_s20(d); \ \ return (pattern) | r1 | r3 | b2 | d2; \ } @@ -786,9 +682,6 @@ /* SHIFT RIGHT SINGLE */ SLJIT_S390X_RSYA(srag, 0xeb000000000a, 1) -/* SHIFT RIGHT SINGLE LOGICAL */ -SLJIT_S390X_RSYA(srlg, 0xeb000000000c, 1) - /* STORE MULTIPLE */ SLJIT_S390X_RSYA(stmg, 0xeb0000000024, 1) @@ -831,26 +724,6 @@ #undef SLJIT_S390X_RIEF -/* RRF-a instructions */ -#define SLJIT_S390X_RRFA(name, pattern, cond) \ -SLJIT_S390X_INSTRUCTION(name, sljit_gpr dst, sljit_gpr src1, sljit_gpr src2) \ -{ \ - sljit_ins r1, r2, r3; \ -\ - SLJIT_ASSERT(cond); \ - r1 = (sljit_ins)(dst & 0xf) << 4; \ - r2 = (sljit_ins)(src1 & 0xf); \ - r3 = (sljit_ins)(src2 & 0xf) << 12; \ -\ - return (pattern) | r3 | r1 | r2; \ -} - -/* MULTIPLY */ -SLJIT_S390X_RRFA(msrkc, 0xb9fd0000, have_misc2()) -SLJIT_S390X_RRFA(msgrkc, 0xb9ed0000, have_misc2()) - -#undef SLJIT_S390X_RRFA - /* RRF-c instructions (require load/store-on-condition 1 facility) */ #define SLJIT_S390X_RRFC(name, pattern) \ SLJIT_S390X_INSTRUCTION(name, sljit_gpr dst, sljit_gpr src, sljit_uw mask) \ @@ -919,6 +792,13 @@ return 0x07f0 | target; } +SLJIT_S390X_INSTRUCTION(brc, sljit_uw mask, sljit_sw target) +{ + sljit_ins m1 = (sljit_ins)(mask & 0xf) << 20; + sljit_ins ri2 = (sljit_ins)target & 0xffff; + return 0xa7040000L | m1 | ri2; +} + SLJIT_S390X_INSTRUCTION(brcl, sljit_uw mask, sljit_sw target) { sljit_ins m1 = (sljit_ins)(mask & 0xf) << 36; @@ -940,6 +820,12 @@ return 0xb2220000 | ((sljit_ins)(dst & 0xf) << 4); } +/* SET PROGRAM MASK */ +SLJIT_S390X_INSTRUCTION(spm, sljit_gpr dst) +{ + return 0x0400 | ((sljit_ins)(dst & 0xf) << 4); +} + /* ROTATE THEN INSERT SELECTED BITS HIGH (ZERO) */ SLJIT_S390X_INSTRUCTION(risbhgz, sljit_gpr dst, sljit_gpr src, sljit_u8 start, sljit_u8 end, sljit_u8 rot) { @@ -948,30 +834,20 @@ #undef SLJIT_S390X_INSTRUCTION -/* load condition code as needed to match type */ -static sljit_s32 push_load_cc(struct sljit_compiler *compiler, sljit_s32 type) +static sljit_s32 update_zero_overflow(struct sljit_compiler *compiler, sljit_s32 op, sljit_gpr dst_r) { - type &= ~SLJIT_I32_OP; - switch (type) { - case SLJIT_ZERO: - case SLJIT_NOT_ZERO: - return push_inst(compiler, cih(flag_r, 0)); - break; - default: - return push_inst(compiler, tmlh(flag_r, 0x3000)); - break; - } - return SLJIT_SUCCESS; -} - -static sljit_s32 push_store_zero_flag(struct sljit_compiler *compiler, sljit_s32 op, sljit_gpr source) -{ - /* insert low 32-bits into high 32-bits of flag register */ - FAIL_IF(push_inst(compiler, risbhgz(flag_r, source, 0, 31, 32))); - if (!(op & SLJIT_I32_OP)) { - /* OR high 32-bits with high 32-bits of flag register */ - return push_inst(compiler, rosbg(flag_r, source, 0, 31, 0)); - } + /* Condition codes: bits 18 and 19. + Transformation: + 0 (zero and no overflow) : unchanged + 1 (non-zero and no overflow) : unchanged + 2 (zero and overflow) : decreased by 1 + 3 (non-zero and overflow) : decreased by 1 if non-zero */ + FAIL_IF(push_inst(compiler, brc(0xc, 2 + 2 + ((op & SLJIT_I32_OP) ? 1 : 2) + 2 + 3 + 1))); + FAIL_IF(push_inst(compiler, ipm(flag_r))); + FAIL_IF(push_inst(compiler, (op & SLJIT_I32_OP) ? or(dst_r, dst_r) : ogr(dst_r, dst_r))); + FAIL_IF(push_inst(compiler, brc(0x8, 2 + 3))); + FAIL_IF(push_inst(compiler, slfi(flag_r, 0x10000000))); + FAIL_IF(push_inst(compiler, spm(flag_r))); return SLJIT_SUCCESS; } @@ -1088,18 +964,19 @@ #define WHEN(cond, r, i1, i2, addr) \ (cond) ? EVAL(i1, r, addr) : EVAL(i2, r, addr) +/* May clobber tmp1. */ static sljit_s32 load_word(struct sljit_compiler *compiler, sljit_gpr dst, sljit_s32 src, sljit_sw srcw, - sljit_gpr tmp /* clobbered */, sljit_s32 is_32bit) + sljit_s32 is_32bit) { struct addr addr; sljit_ins ins; SLJIT_ASSERT(src & SLJIT_MEM); if (have_ldisp() || !is_32bit) - FAIL_IF(make_addr_bxy(compiler, &addr, src, srcw, tmp)); + FAIL_IF(make_addr_bxy(compiler, &addr, src, srcw, tmp1)); else - FAIL_IF(make_addr_bx(compiler, &addr, src, srcw, tmp)); + FAIL_IF(make_addr_bx(compiler, &addr, src, srcw, tmp1)); if (is_32bit) ins = WHEN(is_u12(addr.offset), dst, l, ly, addr); @@ -1109,18 +986,19 @@ return push_inst(compiler, ins); } +/* May clobber tmp1. */ static sljit_s32 store_word(struct sljit_compiler *compiler, sljit_gpr src, sljit_s32 dst, sljit_sw dstw, - sljit_gpr tmp /* clobbered */, sljit_s32 is_32bit) + sljit_s32 is_32bit) { struct addr addr; sljit_ins ins; SLJIT_ASSERT(dst & SLJIT_MEM); if (have_ldisp() || !is_32bit) - FAIL_IF(make_addr_bxy(compiler, &addr, dst, dstw, tmp)); + FAIL_IF(make_addr_bxy(compiler, &addr, dst, dstw, tmp1)); else - FAIL_IF(make_addr_bx(compiler, &addr, dst, dstw, tmp)); + FAIL_IF(make_addr_bx(compiler, &addr, dst, dstw, tmp1)); if (is_32bit) ins = WHEN(is_u12(addr.offset), src, st, sty, addr); @@ -1132,6 +1010,358 @@ #undef WHEN +static sljit_s32 emit_move(struct sljit_compiler *compiler, + sljit_gpr dst_r, + sljit_s32 src, sljit_sw srcw) +{ + SLJIT_ASSERT(!SLOW_IS_REG(src) || dst_r != gpr(src & REG_MASK)); + + if (src & SLJIT_IMM) + return push_load_imm_inst(compiler, dst_r, srcw); + + if (src & SLJIT_MEM) + return load_word(compiler, dst_r, src, srcw, (compiler->mode & SLJIT_I32_OP) != 0); + + sljit_gpr src_r = gpr(src & REG_MASK); + return push_inst(compiler, (compiler->mode & SLJIT_I32_OP) ? lr(dst_r, src_r) : lgr(dst_r, src_r)); +} + +static sljit_s32 emit_rr(struct sljit_compiler *compiler, sljit_ins ins, + sljit_s32 dst, + sljit_s32 src1, sljit_sw src1w, + sljit_s32 src2, sljit_sw src2w) +{ + sljit_gpr dst_r = tmp0; + sljit_gpr src_r = tmp1; + sljit_s32 needs_move = 1; + + if (SLOW_IS_REG(dst)) { + dst_r = gpr(dst & REG_MASK); + + if (dst == src1) + needs_move = 0; + else if (dst == src2) { + dst_r = tmp0; + needs_move = 2; + } + } + + if (needs_move) + FAIL_IF(emit_move(compiler, dst_r, src1, src1w)); + + if (FAST_IS_REG(src2)) + src_r = gpr(src2 & REG_MASK); + else + FAIL_IF(emit_move(compiler, tmp1, src2, src2w)); + + FAIL_IF(push_inst(compiler, ins | (dst_r << 4) | src_r)); + + if (needs_move != 2) + return SLJIT_SUCCESS; + + dst_r = gpr(dst & REG_MASK); + return push_inst(compiler, (compiler->mode & SLJIT_I32_OP) ? lr(dst_r, tmp0) : lgr(dst_r, tmp0)); +} + +static sljit_s32 emit_rrf(struct sljit_compiler *compiler, sljit_ins ins, + sljit_s32 dst, + sljit_s32 src1, sljit_sw src1w, + sljit_s32 src2, sljit_sw src2w) +{ + sljit_gpr dst_r = SLOW_IS_REG(dst) ? gpr(dst & REG_MASK) : tmp0; + sljit_gpr src1_r = tmp0; + sljit_gpr src2_r = tmp1; + + if (FAST_IS_REG(src1)) + src1_r = gpr(src1 & REG_MASK); + else + FAIL_IF(emit_move(compiler, tmp0, src1, src1w)); + + if (FAST_IS_REG(src2)) + src2_r = gpr(src2 & REG_MASK); + else + FAIL_IF(emit_move(compiler, tmp1, src2, src2w)); + + return push_inst(compiler, ins | (dst_r << 4) | src1_r | (src2_r << 12)); +} + +typedef enum { + RI_A, + RIL_A, +} emit_ril_type; + +static sljit_s32 emit_ri(struct sljit_compiler *compiler, sljit_ins ins, + sljit_s32 dst, + sljit_s32 src1, sljit_sw src1w, + sljit_sw src2w, + emit_ril_type type) +{ + sljit_gpr dst_r = tmp0; + sljit_s32 needs_move = 1; + + if (SLOW_IS_REG(dst)) { + dst_r = gpr(dst & REG_MASK); + + if (dst == src1) + needs_move = 0; + } + + if (needs_move) + FAIL_IF(emit_move(compiler, dst_r, src1, src1w)); + + if (type == RIL_A) + return push_inst(compiler, ins | (dst_r << 36) | (src2w & 0xffffffff)); + return push_inst(compiler, ins | (dst_r << 20) | (src2w & 0xffff)); +} + +static sljit_s32 emit_rie_d(struct sljit_compiler *compiler, sljit_ins ins, + sljit_s32 dst, + sljit_s32 src1, sljit_sw src1w, + sljit_sw src2w) +{ + sljit_gpr dst_r = SLOW_IS_REG(dst) ? gpr(dst & REG_MASK) : tmp0; + sljit_gpr src_r = tmp0; + + if (!SLOW_IS_REG(src1)) + FAIL_IF(emit_move(compiler, tmp0, src1, src1w)); + else + src_r = gpr(src1 & REG_MASK); + + return push_inst(compiler, ins | (dst_r << 36) | (src_r << 32) | (src2w & 0xffff) << 16); +} + +typedef enum { + RX_A, + RXY_A, +} emit_rx_type; + +static sljit_s32 emit_rx(struct sljit_compiler *compiler, sljit_ins ins, + sljit_s32 dst, + sljit_s32 src1, sljit_sw src1w, + sljit_s32 src2, sljit_sw src2w, + emit_rx_type type) +{ + sljit_gpr dst_r = tmp0; + sljit_s32 needs_move = 1; + sljit_gpr base, index; + + SLJIT_ASSERT(src2 & SLJIT_MEM); + + if (SLOW_IS_REG(dst)) { + dst_r = gpr(dst); + + if (dst == src1) + needs_move = 0; + else if (dst == (src2 & REG_MASK) || (dst == OFFS_REG(src2))) { + dst_r = tmp0; + needs_move = 2; + } + } + + if (needs_move) + FAIL_IF(emit_move(compiler, dst_r, src1, src1w)); + + base = gpr(src2 & REG_MASK); + index = tmp0; + + if (src2 & OFFS_REG_MASK) { + index = gpr(OFFS_REG(src2)); + + if (src2w != 0) { + FAIL_IF(push_inst(compiler, sllg(tmp1, index, src2w & 0x3, 0))); + src2w = 0; + index = tmp1; + } + } else if ((type == RX_A && !is_u12(src2w)) || (type == RXY_A && !is_s20(src2w))) { + FAIL_IF(push_load_imm_inst(compiler, tmp1, src2w)); + + if (src2 & REG_MASK) + index = tmp1; + else + base = tmp1; + src2w = 0; + } + + if (type == RX_A) + ins |= (dst_r << 20) | (index << 16) | (base << 12) | src2w; + else + ins |= (dst_r << 36) | (index << 32) | (base << 28) | disp_s20(src2w); + + FAIL_IF(push_inst(compiler, ins)); + + if (needs_move != 2) + return SLJIT_SUCCESS; + + dst_r = gpr(dst); + return push_inst(compiler, (compiler->mode & SLJIT_I32_OP) ? lr(dst_r, tmp0) : lgr(dst_r, tmp0)); +} + +static sljit_s32 emit_siy(struct sljit_compiler *compiler, sljit_ins ins, + sljit_s32 dst, sljit_sw dstw, + sljit_sw srcw) +{ + SLJIT_ASSERT(dst & SLJIT_MEM); + + sljit_gpr dst_r = tmp1; + + if (dst & OFFS_REG_MASK) { + sljit_gpr index = tmp1; + + if ((dstw & 0x3) == 0) + index = gpr(OFFS_REG(dst)); + else + FAIL_IF(push_inst(compiler, sllg(tmp1, index, dstw & 0x3, 0))); + + FAIL_IF(push_inst(compiler, la(tmp1, 0, dst_r, index))); + dstw = 0; + } + else if (!is_s20(dstw)) { + FAIL_IF(push_load_imm_inst(compiler, tmp1, dstw)); + + if (dst & REG_MASK) + FAIL_IF(push_inst(compiler, la(tmp1, 0, dst_r, tmp1))); + + dstw = 0; + } + else + dst_r = gpr(dst & REG_MASK); + + return push_inst(compiler, ins | ((srcw & 0xff) << 32) | (dst_r << 28) | disp_s20(dstw)); +} + +struct ins_forms { + sljit_ins op_r; + sljit_ins op_gr; + sljit_ins op_rk; + sljit_ins op_grk; + sljit_ins op; + sljit_ins op_y; + sljit_ins op_g; +}; + +static sljit_s32 emit_commutative(struct sljit_compiler *compiler, const struct ins_forms *forms, + sljit_s32 dst, sljit_sw dstw, + sljit_s32 src1, sljit_sw src1w, + sljit_s32 src2, sljit_sw src2w) +{ + sljit_s32 mode = compiler->mode; + sljit_ins ins, ins_k; + + if ((src1 | src2) & SLJIT_MEM) { + sljit_ins ins12, ins20; + + if (mode & SLJIT_I32_OP) { + ins12 = forms->op; + ins20 = forms->op_y; + } + else { + ins12 = 0; + ins20 = forms->op_g; + } + + if (ins12 && ins20) { + /* Extra instructions needed for address computation can be executed independently. */ + if ((src2 & SLJIT_MEM) && (!(src1 & SLJIT_MEM) + || ((src1 & OFFS_REG_MASK) ? (src1w & 0x3) == 0 : is_s20(src1w)))) { + if ((src2 & OFFS_REG_MASK) || is_u12(src2w) || !is_s20(src2w)) + return emit_rx(compiler, ins12, dst, src1, src1w, src2, src2w, RX_A); + + return emit_rx(compiler, ins20, dst, src1, src1w, src2, src2w, RXY_A); + } + + if (src1 & SLJIT_MEM) { + if ((src1 & OFFS_REG_MASK) || is_u12(src1w) || !is_s20(src1w)) + return emit_rx(compiler, ins12, dst, src2, src2w, src1, src1w, RX_A); + + return emit_rx(compiler, ins20, dst, src2, src2w, src1, src1w, RXY_A); + } + } + else if (ins12 || ins20) { + emit_rx_type rx_type; + + if (ins12) { + rx_type = RX_A; + ins = ins12; + } + else { + rx_type = RXY_A; + ins = ins20; + } + + if ((src2 & SLJIT_MEM) && (!(src1 & SLJIT_MEM) + || ((src1 & OFFS_REG_MASK) ? (src1w & 0x3) == 0 : (rx_type == RX_A ? is_u12(src1w) : is_s20(src1w))))) + return emit_rx(compiler, ins, dst, src1, src1w, src2, src2w, rx_type); + + if (src1 & SLJIT_MEM) + return emit_rx(compiler, ins, dst, src2, src2w, src1, src1w, rx_type); + } + } + + if (mode & SLJIT_I32_OP) { + ins = forms->op_r; + ins_k = forms->op_rk; + } + else { + ins = forms->op_gr; + ins_k = forms->op_grk; + } + + SLJIT_ASSERT(ins != 0 || ins_k != 0); + + if (ins && SLOW_IS_REG(dst)) { + if (dst == src1) + return emit_rr(compiler, ins, dst, src1, src1w, src2, src2w); + + if (dst == src2) + return emit_rr(compiler, ins, dst, src2, src2w, src1, src1w); + } + + if (ins_k == 0) + return emit_rr(compiler, ins, dst, src1, src1w, src2, src2w); + + return emit_rrf(compiler, ins_k, dst, src1, src1w, src2, src2w); +} + +static sljit_s32 emit_non_commutative(struct sljit_compiler *compiler, const struct ins_forms *forms, + sljit_s32 dst, sljit_sw dstw, + sljit_s32 src1, sljit_sw src1w, + sljit_s32 src2, sljit_sw src2w) +{ + sljit_s32 mode = compiler->mode; + sljit_ins ins; + + if (src2 & SLJIT_MEM) { + sljit_ins ins12, ins20; + + if (mode & SLJIT_I32_OP) { + ins12 = forms->op; + ins20 = forms->op_y; + } + else { + ins12 = 0; + ins20 = forms->op_g; + } + + if (ins12 && ins20) { + if ((src2 & OFFS_REG_MASK) || is_u12(src2w) || !is_s20(src2w)) + return emit_rx(compiler, ins12, dst, src1, src1w, src2, src2w, RX_A); + + return emit_rx(compiler, ins20, dst, src1, src1w, src2, src2w, RXY_A); + } + else if (ins12) + return emit_rx(compiler, ins12, dst, src1, src1w, src2, src2w, RX_A); + else if (ins20) + return emit_rx(compiler, ins20, dst, src1, src1w, src2, src2w, RXY_A); + } + + ins = (mode & SLJIT_I32_OP) ? forms->op_rk : forms->op_grk; + + if (ins == 0 || (SLOW_IS_REG(dst) && dst == src1)) + return emit_rr(compiler, (mode & SLJIT_I32_OP) ? forms->op_r : forms->op_gr, dst, src1, src1w, src2, src2w); + + return emit_rrf(compiler, ins, dst, src1, src1w, src2, src2w); +} + SLJIT_API_FUNC_ATTRIBUTE void* sljit_generate_code(struct sljit_compiler *compiler) { struct sljit_label *label; @@ -1465,7 +1695,8 @@ op = GET_OPCODE(op) | (op & SLJIT_I32_OP); switch (op) { case SLJIT_BREAKPOINT: - /* TODO(mundaym): insert real breakpoint? */ + /* The following invalid instruction is emitted by gdb. */ + return push_inst(compiler, 0x0001 /* 2-byte trap */); case SLJIT_NOP: return push_inst(compiler, 0x0700 /* 2-byte nop */); case SLJIT_LMUL_UW: @@ -1559,6 +1790,7 @@ /* TODO(carenas): implement prefetch? */ return SLJIT_SUCCESS; } + if (opcode >= SLJIT_MOV && opcode <= SLJIT_MOV_P) { /* LOAD REGISTER */ if (FAST_IS_REG(dst) && FAST_IS_REG(src)) { @@ -1609,11 +1841,6 @@ SLJIT_UNREACHABLE(); } FAIL_IF(push_inst(compiler, ins)); - if (HAS_FLAGS(op)) { - /* only handle zero flag */ - SLJIT_ASSERT(!(op & VARIABLE_FLAG_MASK)); - return push_store_zero_flag(compiler, op, dst_r); - } return SLJIT_SUCCESS; } /* LOAD IMMEDIATE */ @@ -1690,11 +1917,6 @@ SLJIT_UNREACHABLE(); } FAIL_IF(push_inst(compiler, ins)); - if (HAS_FLAGS(op)) { - /* only handle zero flag */ - SLJIT_ASSERT(!(op & VARIABLE_FLAG_MASK)); - return push_store_zero_flag(compiler, op, reg); - } return SLJIT_SUCCESS; } /* STORE and STORE IMMEDIATE */ @@ -1723,11 +1945,6 @@ case SLJIT_MOV_P: case SLJIT_MOV: FAIL_IF(push_inst(compiler, LEVAL(stg))); - if (HAS_FLAGS(op)) { - /* only handle zero flag */ - SLJIT_ASSERT(!(op & VARIABLE_FLAG_MASK)); - return push_store_zero_flag(compiler, op, reg); - } return SLJIT_SUCCESS; default: SLJIT_UNREACHABLE(); @@ -1767,11 +1984,6 @@ FAIL_IF(make_addr_bxy(compiler, &mem, dst, dstw, tmp1)); FAIL_IF(push_inst(compiler, EVAL(stg, tmp0, mem))); - if (HAS_FLAGS(op)) { - /* only handle zero flag */ - SLJIT_ASSERT(!(op & VARIABLE_FLAG_MASK)); - return push_store_zero_flag(compiler, op, tmp0); - } return SLJIT_SUCCESS; default: SLJIT_UNREACHABLE(); @@ -1785,7 +1997,9 @@ dst_r = SLOW_IS_REG(dst) ? gpr(REG_MASK & dst) : tmp0; src_r = FAST_IS_REG(src) ? gpr(REG_MASK & src) : tmp0; if (src & SLJIT_MEM) - FAIL_IF(load_word(compiler, src_r, src, srcw, tmp1, src & SLJIT_I32_OP)); + FAIL_IF(load_word(compiler, src_r, src, srcw, src & SLJIT_I32_OP)); + + compiler->status_flags_state = op & (VARIABLE_FLAG_MASK | SLJIT_SET_Z); /* TODO(mundaym): optimize loads and stores */ switch (opcode | (op & SLJIT_I32_OP)) { @@ -1810,9 +2024,11 @@ } break; case SLJIT_NEG: + compiler->status_flags_state |= SLJIT_CURRENT_FLAGS_ADD_SUB; FAIL_IF(push_inst(compiler, lcgr(dst_r, src_r))); break; case SLJIT_NEG32: + compiler->status_flags_state |= SLJIT_CURRENT_FLAGS_ADD_SUB; FAIL_IF(push_inst(compiler, lcr(dst_r, src_r))); break; case SLJIT_CLZ: @@ -1839,17 +2055,12 @@ SLJIT_UNREACHABLE(); } - /* write condition code to emulated flag register */ - if (op & VARIABLE_FLAG_MASK) - FAIL_IF(push_inst(compiler, ipm(flag_r))); - - /* write zero flag to emulated flag register */ - if (op & SLJIT_SET_Z) - FAIL_IF(push_store_zero_flag(compiler, op, dst_r)); + if ((op & (SLJIT_SET_Z | VARIABLE_FLAG_MASK)) == (SLJIT_SET_Z | SLJIT_SET_OVERFLOW)) + FAIL_IF(update_zero_overflow(compiler, op, dst_r)); /* TODO(carenas): doesn't need FAIL_IF */ if ((dst != SLJIT_UNUSED) && (dst & SLJIT_MEM)) - FAIL_IF(store_word(compiler, dst_r, dst, dstw, tmp1, op & SLJIT_I32_OP)); + FAIL_IF(store_word(compiler, dst_r, dst, dstw, op & SLJIT_I32_OP)); return SLJIT_SUCCESS; } @@ -1887,530 +2098,554 @@ return 0; } -/* Report whether we have an instruction for: - op dst src imm - where dst and src are separate registers. */ -static int have_op_3_imm(sljit_s32 op, sljit_sw imm) { - return 0; /* TODO(mundaym): implement */ -} +static const struct ins_forms add_forms = { + 0x1a00, /* ar */ + 0xb9080000, /* agr */ + 0xb9f80000, /* ark */ + 0xb9e80000, /* agrk */ + 0x5a000000, /* a */ + 0xe3000000005a, /* ay */ + 0xe30000000008, /* ag */ +}; -/* Report whether we have an instruction for: - op reg imm - where reg is both a source and the destination. */ -static int have_op_2_imm(sljit_s32 op, sljit_sw imm) { - switch (GET_OPCODE(op) | (op & SLJIT_I32_OP)) { - case SLJIT_ADD32: - case SLJIT_ADD: - if (!HAS_FLAGS(op) || sets_signed_flag(op)) - return have_eimm() ? is_s32(imm) : is_s16(imm); +static const struct ins_forms logical_add_forms = { + 0x1e00, /* alr */ + 0xb90a0000, /* algr */ + 0xb9fa0000, /* alrk */ + 0xb9ea0000, /* algrk */ + 0x5e000000, /* al */ + 0xe3000000005e, /* aly */ + 0xe3000000000a, /* alg */ +}; - return have_eimm() && is_u32(imm); - case SLJIT_MUL32: - case SLJIT_MUL: - /* TODO(mundaym): general extension check */ - /* for ms{,g}fi */ - if (op & VARIABLE_FLAG_MASK) - return 0; - - return have_genext() && is_s16(imm); - case SLJIT_OR32: - case SLJIT_XOR32: - case SLJIT_AND32: - /* only use if have extended immediate facility */ - /* this ensures flags are set correctly */ - return have_eimm(); - case SLJIT_AND: - case SLJIT_OR: - case SLJIT_XOR: - /* TODO(mundaym): make this more flexible */ - /* avoid using immediate variations, flags */ - /* won't be set correctly */ - return 0; - case SLJIT_ADDC32: - case SLJIT_ADDC: - /* no ADD LOGICAL WITH CARRY IMMEDIATE */ - return 0; - case SLJIT_SUB: - case SLJIT_SUB32: - case SLJIT_SUBC: - case SLJIT_SUBC32: - /* no SUBTRACT IMMEDIATE */ - /* TODO(mundaym): SUBTRACT LOGICAL IMMEDIATE */ - return 0; +static sljit_s32 sljit_emit_add(struct sljit_compiler *compiler, sljit_s32 op, + sljit_s32 dst, sljit_sw dstw, + sljit_s32 src1, sljit_sw src1w, + sljit_s32 src2, sljit_sw src2w) +{ + int sets_overflow = (op & VARIABLE_FLAG_MASK) == SLJIT_SET_OVERFLOW; + int sets_zero_overflow = (op & (SLJIT_SET_Z | VARIABLE_FLAG_MASK)) == (SLJIT_SET_Z | SLJIT_SET_OVERFLOW); + const struct ins_forms *forms; + sljit_ins ins; + + if (src2 & SLJIT_IMM) { + if (!sets_zero_overflow && is_s8(src2w) && (src1 & SLJIT_MEM) && (dst == src1 && dstw == src1w)) { + if (sets_overflow) + ins = (op & SLJIT_I32_OP) ? 0xeb000000006a /* asi */ : 0xeb000000007a /* agsi */; + else + ins = (op & SLJIT_I32_OP) ? 0xeb000000006e /* alsi */ : 0xeb000000007e /* algsi */; + return emit_siy(compiler, ins, dst, dstw, src2w); + } + + if (is_s16(src2w)) { + if (sets_overflow) + ins = (op & SLJIT_I32_OP) ? 0xec00000000d8 /* ahik */ : 0xec00000000d9 /* aghik */; + else + ins = (op & SLJIT_I32_OP) ? 0xec00000000da /* alhsik */ : 0xec00000000db /* alghsik */; + FAIL_IF(emit_rie_d(compiler, ins, dst, src1, src1w, src2w)); + goto done; + } + + if (!sets_overflow) { + if ((op & SLJIT_I32_OP) || is_u32(src2w)) { + ins = (op & SLJIT_I32_OP) ? 0xc20b00000000 /* alfi */ : 0xc20a00000000 /* algfi */; + FAIL_IF(emit_ri(compiler, ins, dst, src1, src1w, src2w, RIL_A)); + goto done; + } + if (is_u32(-src2w)) { + FAIL_IF(emit_ri(compiler, 0xc20400000000 /* slgfi */, dst, src1, src1w, -src2w, RIL_A)); + goto done; + } + } + else if ((op & SLJIT_I32_OP) || is_s32(src2w)) { + ins = (op & SLJIT_I32_OP) ? 0xc20900000000 /* afi */ : 0xc20800000000 /* agfi */; + FAIL_IF(emit_ri(compiler, ins, dst, src1, src1w, src2w, RIL_A)); + goto done; + } } - return 0; + + forms = sets_overflow ? &add_forms : &logical_add_forms; + FAIL_IF(emit_commutative(compiler, forms, dst, dstw, src1, src1w, src2, src2w)); + +done: + if (sets_zero_overflow) + FAIL_IF(update_zero_overflow(compiler, op, SLOW_IS_REG(dst) ? gpr(dst & REG_MASK) : tmp0)); + + if (dst & SLJIT_MEM) + return store_word(compiler, tmp0, dst, dstw, op & SLJIT_I32_OP); + + return SLJIT_SUCCESS; } -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op2(struct sljit_compiler *compiler, sljit_s32 op, +static const struct ins_forms sub_forms = { + 0x1b00, /* sr */ + 0xb9090000, /* sgr */ + 0xb9f90000, /* srk */ + 0xb9e90000, /* sgrk */ + 0x5b000000, /* s */ + 0xe3000000005b, /* sy */ + 0xe30000000009, /* sg */ +}; + +static const struct ins_forms logical_sub_forms = { + 0x1f00, /* slr */ + 0xb90b0000, /* slgr */ + 0xb9fb0000, /* slrk */ + 0xb9eb0000, /* slgrk */ + 0x5f000000, /* sl */ + 0xe3000000005f, /* sly */ + 0xe3000000000b, /* slg */ +}; + +static sljit_s32 sljit_emit_sub(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w) { - CHECK_ERROR(); - CHECK(check_sljit_emit_op2(compiler, op, dst, dstw, src1, src1w, src2, src2w)); - ADJUST_LOCAL_OFFSET(dst, dstw); - ADJUST_LOCAL_OFFSET(src1, src1w); - ADJUST_LOCAL_OFFSET(src2, src2w); + int sets_signed = sets_signed_flag(op); + int sets_zero_overflow = (op & (SLJIT_SET_Z | VARIABLE_FLAG_MASK)) == (SLJIT_SET_Z | SLJIT_SET_OVERFLOW); + const struct ins_forms *forms; + sljit_ins ins; - if (dst == SLJIT_UNUSED && !HAS_FLAGS(op)) - return SLJIT_SUCCESS; + if (dst == SLJIT_UNUSED && GET_FLAG_TYPE(op) <= SLJIT_SIG_LESS_EQUAL) { + int compare_signed = GET_FLAG_TYPE(op) >= SLJIT_SIG_LESS; - sljit_gpr dst_r = SLOW_IS_REG(dst) ? gpr(dst & REG_MASK) : tmp0; + compiler->status_flags_state |= SLJIT_CURRENT_FLAGS_COMPARE; - if (is_commutative(op)) { - #define SWAP_ARGS \ - do { \ - sljit_s32 t = src1; \ - sljit_sw tw = src1w; \ - src1 = src2; \ - src1w = src2w; \ - src2 = t; \ - src2w = tw; \ - } while(0); - - /* prefer immediate in src2 */ - if (src1 & SLJIT_IMM) { - SWAP_ARGS - } - - /* prefer to have src1 use same register as dst */ - if (FAST_IS_REG(src2) && gpr(src2 & REG_MASK) == dst_r) { - SWAP_ARGS - } - - /* prefer memory argument in src2 */ - if (FAST_IS_REG(src2) && (src1 & SLJIT_MEM)) { - SWAP_ARGS - } - #undef SWAP_ARGS - } - - /* src1 must be in a register */ - sljit_gpr src1_r = FAST_IS_REG(src1) ? gpr(src1 & REG_MASK) : tmp0; - if (src1 & SLJIT_IMM) - FAIL_IF(push_load_imm_inst(compiler, src1_r, src1w)); - - if (src1 & SLJIT_MEM) - FAIL_IF(load_word(compiler, src1_r, src1, src1w, tmp1, op & SLJIT_I32_OP)); - - /* emit comparison before subtract */ - if (GET_OPCODE(op) == SLJIT_SUB && (op & VARIABLE_FLAG_MASK)) { - sljit_sw cmp = 0; - switch (GET_FLAG_TYPE(op)) { - case SLJIT_LESS: - case SLJIT_LESS_EQUAL: - case SLJIT_GREATER: - case SLJIT_GREATER_EQUAL: - cmp = 1; /* unsigned */ - break; - case SLJIT_EQUAL: - case SLJIT_SIG_LESS: - case SLJIT_SIG_LESS_EQUAL: - case SLJIT_SIG_GREATER: - case SLJIT_SIG_GREATER_EQUAL: - cmp = -1; /* signed */ - break; - } - if (cmp) { - /* clear flags - no need to generate now */ - op &= ~VARIABLE_FLAG_MASK; - sljit_gpr src2_r = FAST_IS_REG(src2) ? gpr(src2 & REG_MASK) : tmp1; - if (src2 & SLJIT_IMM) { - #define LEVAL(i) i(src1_r, src2w) - if (cmp > 0 && is_u32(src2w)) { - /* unsigned */ - FAIL_IF(push_inst(compiler, - WHEN2(op & SLJIT_I32_OP, clfi, clgfi))); - } - else if (cmp < 0 && is_s16(src2w)) { - /* signed */ - FAIL_IF(push_inst(compiler, - WHEN2(op & SLJIT_I32_OP, chi, cghi))); - } - else if (cmp < 0 && is_s32(src2w)) { - /* signed */ - FAIL_IF(push_inst(compiler, - WHEN2(op & SLJIT_I32_OP, cfi, cgfi))); - } - #undef LEVAL - #define LEVAL(i) i(src1_r, src2_r) - else { - FAIL_IF(push_load_imm_inst(compiler, src2_r, src2w)); - if (cmp > 0) { - /* unsigned */ - FAIL_IF(push_inst(compiler, - WHEN2(op & SLJIT_I32_OP, clr, clgr))); - } - if (cmp < 0) { - /* signed */ - FAIL_IF(push_inst(compiler, - WHEN2(op & SLJIT_I32_OP, cr, cgr))); - } + if (src2 & SLJIT_IMM) { + if (compare_signed || ((op & VARIABLE_FLAG_MASK) == 0 && is_s32(src2w))) + { + if ((op & SLJIT_I32_OP) || is_s32(src2w)) { + ins = (op & SLJIT_I32_OP) ? 0xc20d00000000 /* cfi */ : 0xc20c00000000 /* cgfi */; + return emit_ri(compiler, ins, src1, src1, src1w, src2w, RIL_A); } } else { - if (src2 & SLJIT_MEM) { - /* TODO(mundaym): comparisons with memory */ - /* load src2 into register */ - FAIL_IF(load_word(compiler, src2_r, src2, src2w, tmp1, op & SLJIT_I32_OP)); - } - if (cmp > 0) { - /* unsigned */ - FAIL_IF(push_inst(compiler, - WHEN2(op & SLJIT_I32_OP, clr, clgr))); + if ((op & SLJIT_I32_OP) || is_u32(src2w)) { + ins = (op & SLJIT_I32_OP) ? 0xc20f00000000 /* clfi */ : 0xc20e00000000 /* clgfi */; + return emit_ri(compiler, ins, src1, src1, src1w, src2w, RIL_A); } - if (cmp < 0) { - /* signed */ - FAIL_IF(push_inst(compiler, - WHEN2(op & SLJIT_I32_OP, cr, cgr))); - } - #undef LEVAL + if (is_s16(src2w)) + return emit_rie_d(compiler, 0xec00000000db /* alghsik */, SLJIT_UNUSED, src1, src1w, src2w); } - FAIL_IF(push_inst(compiler, ipm(flag_r))); } + else if (src2 & SLJIT_MEM) { + if ((op & SLJIT_I32_OP) && ((src2 & OFFS_REG_MASK) || is_u12(src2w))) { + ins = compare_signed ? 0x59000000 /* c */ : 0x55000000 /* cl */; + return emit_rx(compiler, ins, src1, src1, src1w, src2, src2w, RX_A); + } + + if (compare_signed) + ins = (op & SLJIT_I32_OP) ? 0xe30000000059 /* cy */ : 0xe30000000020 /* cg */; + else + ins = (op & SLJIT_I32_OP) ? 0xe30000000055 /* cly */ : 0xe30000000021 /* clg */; + return emit_rx(compiler, ins, src1, src1, src1w, src2, src2w, RXY_A); + } + + if (compare_signed) + ins = (op & SLJIT_I32_OP) ? 0x1900 /* cr */ : 0xb9200000 /* cgr */; + else + ins = (op & SLJIT_I32_OP) ? 0x1500 /* clr */ : 0xb9210000 /* clgr */; + return emit_rr(compiler, ins, src1, src1, src1w, src2, src2w); } - if (!HAS_FLAGS(op) && dst == SLJIT_UNUSED) - return SLJIT_SUCCESS; + if (src2 & SLJIT_IMM) { + sljit_sw neg_src2w = -src2w; - /* need to specify signed or logical operation */ - int signed_flags = sets_signed_flag(op); + if (sets_signed || neg_src2w != 0 || (op & (SLJIT_SET_Z | VARIABLE_FLAG_MASK)) == 0) { + if (!sets_zero_overflow && is_s8(neg_src2w) && (src1 & SLJIT_MEM) && (dst == src1 && dstw == src1w)) { + if (sets_signed) + ins = (op & SLJIT_I32_OP) ? 0xeb000000006a /* asi */ : 0xeb000000007a /* agsi */; + else + ins = (op & SLJIT_I32_OP) ? 0xeb000000006e /* alsi */ : 0xeb000000007e /* algsi */; + return emit_siy(compiler, ins, dst, dstw, neg_src2w); + } - if (is_shift(op)) { - /* handle shifts first, they have more constraints than other operations */ - sljit_sw d = 0; - sljit_gpr b = FAST_IS_REG(src2) ? gpr(src2 & REG_MASK) : r0; - if (src2 & SLJIT_IMM) - d = src2w & ((op & SLJIT_I32_OP) ? 31 : 63); - - if (src2 & SLJIT_MEM) { - /* shift amount (b) cannot be in r0 (i.e. tmp0) */ - FAIL_IF(load_word(compiler, tmp1, src2, src2w, tmp1, op & SLJIT_I32_OP)); - b = tmp1; - } - /* src1 and dst share the same register in the base 32-bit ISA */ - /* TODO(mundaym): not needed when distinct-operand facility is available */ - int workaround_alias = op & SLJIT_I32_OP && src1_r != dst_r; - if (workaround_alias) { - /* put src1 into tmp0 so we can overwrite it */ - FAIL_IF(push_inst(compiler, lr(tmp0, src1_r))); - src1_r = tmp0; - } - switch (GET_OPCODE(op) | (op & SLJIT_I32_OP)) { - case SLJIT_SHL: - FAIL_IF(push_inst(compiler, sllg(dst_r, src1_r, d, b))); - break; - case SLJIT_SHL32: - FAIL_IF(push_inst(compiler, sll(src1_r, d, b))); - break; - case SLJIT_LSHR: - FAIL_IF(push_inst(compiler, srlg(dst_r, src1_r, d, b))); - break; - case SLJIT_LSHR32: - FAIL_IF(push_inst(compiler, srl(src1_r, d, b))); - break; - case SLJIT_ASHR: - FAIL_IF(push_inst(compiler, srag(dst_r, src1_r, d, b))); - break; - case SLJIT_ASHR32: - FAIL_IF(push_inst(compiler, sra(src1_r, d, b))); - break; - default: - SLJIT_UNREACHABLE(); - } - if (workaround_alias && dst_r != src1_r) - FAIL_IF(push_inst(compiler, lr(dst_r, src1_r))); - - } - else if ((GET_OPCODE(op) == SLJIT_MUL) && HAS_FLAGS(op)) { - /* multiply instructions do not generally set flags so we need to manually */ - /* detect overflow conditions */ - /* TODO(mundaym): 64-bit overflow */ - SLJIT_ASSERT(GET_FLAG_TYPE(op) == SLJIT_MUL_OVERFLOW || - GET_FLAG_TYPE(op) == SLJIT_MUL_NOT_OVERFLOW); - sljit_gpr src2_r = FAST_IS_REG(src2) ? gpr(src2 & REG_MASK) : tmp1; - if (src2 & SLJIT_IMM) { - /* load src2 into register */ - FAIL_IF(push_load_imm_inst(compiler, src2_r, src2w)); - } - if (src2 & SLJIT_MEM) { - /* load src2 into register */ - FAIL_IF(load_word(compiler, src2_r, src2, src2w, tmp1, op & SLJIT_I32_OP)); - } - if (have_misc2()) { - #define LEVAL(i) i(dst_r, src1_r, src2_r) - FAIL_IF(push_inst(compiler, - WHEN2(op & SLJIT_I32_OP, msrkc, msgrkc))); - #undef LEVAL - } - else if (op & SLJIT_I32_OP) { - op &= ~VARIABLE_FLAG_MASK; - FAIL_IF(push_inst(compiler, lgfr(tmp0, src1_r))); - FAIL_IF(push_inst(compiler, msgfr(tmp0, src2_r))); - if (dst_r != tmp0) { - FAIL_IF(push_inst(compiler, lr(dst_r, tmp0))); + if (is_s16(neg_src2w)) { + if (sets_signed) + ins = (op & SLJIT_I32_OP) ? 0xec00000000d8 /* ahik */ : 0xec00000000d9 /* aghik */; + else + ins = (op & SLJIT_I32_OP) ? 0xec00000000da /* alhsik */ : 0xec00000000db /* alghsik */; + FAIL_IF(emit_rie_d(compiler, ins, dst, src1, src1w, neg_src2w)); + goto done; } - FAIL_IF(push_inst(compiler, aih(tmp0, 1))); - FAIL_IF(push_inst(compiler, nihf(tmp0, ~1U))); - FAIL_IF(push_inst(compiler, ipm(flag_r))); - FAIL_IF(push_inst(compiler, oilh(flag_r, 0x2000))); } - else - return SLJIT_ERR_UNSUPPORTED; + if (!sets_signed) { + if ((op & SLJIT_I32_OP) || is_u32(src2w)) { + ins = (op & SLJIT_I32_OP) ? 0xc20500000000 /* slfi */ : 0xc20400000000 /* slgfi */; + FAIL_IF(emit_ri(compiler, ins, dst, src1, src1w, src2w, RIL_A)); + goto done; + } + if (is_u32(neg_src2w)) { + FAIL_IF(emit_ri(compiler, 0xc20a00000000 /* algfi */, dst, src1, src1w, neg_src2w, RIL_A)); + goto done; + } + } + else if ((op & SLJIT_I32_OP) || is_s32(neg_src2w)) { + ins = (op & SLJIT_I32_OP) ? 0xc20900000000 /* afi */ : 0xc20800000000 /* agfi */; + FAIL_IF(emit_ri(compiler, ins, dst, src1, src1w, neg_src2w, RIL_A)); + goto done; + } } - else if ((GET_OPCODE(op) == SLJIT_SUB) && (op & SLJIT_SET_Z) && !signed_flags) { - /* subtract logical instructions do not set the right flags unfortunately */ - /* instead, negate src2 and issue an add logical */ - /* TODO(mundaym): distinct operand facility where needed */ - if (src1_r != dst_r && src1_r != tmp0) { - #define LEVAL(i) i(tmp0, src1_r) - FAIL_IF(push_inst(compiler, - WHEN2(op & SLJIT_I32_OP, lr, lgr))); - src1_r = tmp0; - #undef LEVAL + + forms = sets_signed ? &sub_forms : &logical_sub_forms; + FAIL_IF(emit_non_commutative(compiler, forms, dst, dstw, src1, src1w, src2, src2w)); + +done: + if (sets_signed) { + sljit_gpr dst_r = SLOW_IS_REG(dst) ? gpr(dst & REG_MASK) : tmp0; + + if ((op & VARIABLE_FLAG_MASK) != SLJIT_SET_OVERFLOW) { + /* In case of overflow, the sign bit of the two source operands must be different, and + - the first operand is greater if the sign bit of the result is set + - the first operand is less if the sign bit of the result is not set + The -result operation sets the corrent sign, because the result cannot be zero. + The overflow is considered greater, since the result must be equal to INT_MIN so its sign bit is set. */ + FAIL_IF(push_inst(compiler, brc(0xe, 2 + 2))); + FAIL_IF(push_inst(compiler, (op & SLJIT_I32_OP) ? lcr(tmp1, dst_r) : lcgr(tmp1, dst_r))); } - sljit_gpr src2_r = FAST_IS_REG(src2) ? gpr(src2 & REG_MASK) : tmp1; - if (src2 & SLJIT_IMM) { - /* load src2 into register */ - FAIL_IF(push_load_imm_inst(compiler, src2_r, src2w)); + else if (op & SLJIT_SET_Z) + FAIL_IF(update_zero_overflow(compiler, op, dst_r)); + } + + if (dst & SLJIT_MEM) + return store_word(compiler, tmp0, dst, dstw, op & SLJIT_I32_OP); + + return SLJIT_SUCCESS; +} + +static const struct ins_forms multiply_forms = { + 0xb2520000, /* msr */ + 0xb90c0000, /* msgr */ + 0xb9fd0000, /* msrkc */ + 0xb9ed0000, /* msgrkc */ + 0x71000000, /* ms */ + 0xe30000000051, /* msy */ + 0xe3000000000c, /* msg */ +}; + +static const struct ins_forms multiply_overflow_forms = { + 0, + 0, + 0xb9fd0000, /* msrkc */ + 0xb9ed0000, /* msgrkc */ + 0, + 0xe30000000053, /* msc */ + 0xe30000000083, /* msgc */ +}; + +static sljit_s32 sljit_emit_multiply(struct sljit_compiler *compiler, sljit_s32 op, + sljit_s32 dst, sljit_sw dstw, + sljit_s32 src1, sljit_sw src1w, + sljit_s32 src2, sljit_sw src2w) +{ + sljit_ins ins; + + if (HAS_FLAGS(op)) { + /* if have_misc2 fails, this operation should be emulated. 32 bit emulation: + FAIL_IF(push_inst(compiler, lgfr(tmp0, src1_r))); + FAIL_IF(push_inst(compiler, msgfr(tmp0, src2_r))); + if (dst_r != tmp0) { + FAIL_IF(push_inst(compiler, lr(dst_r, tmp0))); } - if (src2 & SLJIT_MEM) { - /* load src2 into register */ - FAIL_IF(load_word(compiler, src2_r, src2, src2w, tmp1, op & SLJIT_I32_OP)); - } - if (op & SLJIT_I32_OP) { - FAIL_IF(push_inst(compiler, lcr(tmp1, src2_r))); - FAIL_IF(push_inst(compiler, alr(src1_r, tmp1))); - if (src1_r != dst_r) - FAIL_IF(push_inst(compiler, lr(dst_r, src1_r))); + FAIL_IF(push_inst(compiler, aih(tmp0, 1))); + FAIL_IF(push_inst(compiler, nihf(tmp0, ~1U))); + FAIL_IF(push_inst(compiler, ipm(flag_r))); + FAIL_IF(push_inst(compiler, oilh(flag_r, 0x2000))); */ + + return emit_commutative(compiler, &multiply_overflow_forms, dst, dstw, src1, src1w, src2, src2w); + } + + if (src2 & SLJIT_IMM) { + if (is_s16(src2w)) { + ins = (op & SLJIT_I32_OP) ? 0xa70c0000 /* mhi */ : 0xa70d0000 /* mghi */; + return emit_ri(compiler, ins, dst, src1, src1w, src2w, RI_A); } - else { - FAIL_IF(push_inst(compiler, lcgr(tmp1, src2_r))); - FAIL_IF(push_inst(compiler, algr(src1_r, tmp1))); - if (src1_r != dst_r) - FAIL_IF(push_inst(compiler, lgr(dst_r, src1_r))); + + if (is_s32(src2w)) { + ins = (op & SLJIT_I32_OP) ? 0xc20100000000 /* msfi */ : 0xc20000000000 /* msgfi */; + return emit_ri(compiler, ins, dst, src1, src1w, src2w, RIL_A); } } - else if ((src2 & SLJIT_IMM) && (src1_r == dst_r) && have_op_2_imm(op, src2w)) { - switch (GET_OPCODE(op) | (op & SLJIT_I32_OP)) { - #define LEVAL(i) i(dst_r, src2w) - case SLJIT_ADD: - if (!HAS_FLAGS(op) || signed_flags) { - FAIL_IF(push_inst(compiler, - WHEN2(is_s16(src2w), aghi, agfi))); - } - else - FAIL_IF(push_inst(compiler, LEVAL(algfi))); - break; - case SLJIT_ADD32: - if (!HAS_FLAGS(op) || signed_flags) - FAIL_IF(push_inst(compiler, - WHEN2(is_s16(src2w), ahi, afi))); - else - FAIL_IF(push_inst(compiler, LEVAL(alfi))); + return emit_commutative(compiler, &multiply_forms, dst, dstw, src1, src1w, src2, src2w); +} - break; - #undef LEVAL /* TODO(carenas): move down and refactor? */ - case SLJIT_MUL: - FAIL_IF(push_inst(compiler, mhi(dst_r, src2w))); - break; - case SLJIT_MUL32: - FAIL_IF(push_inst(compiler, mghi(dst_r, src2w))); - break; - case SLJIT_OR32: - FAIL_IF(push_inst(compiler, oilf(dst_r, src2w))); - break; - case SLJIT_XOR32: - FAIL_IF(push_inst(compiler, xilf(dst_r, src2w))); - break; - case SLJIT_AND32: - FAIL_IF(push_inst(compiler, nilf(dst_r, src2w))); - break; - default: - SLJIT_UNREACHABLE(); - } - } - else if ((src2 & SLJIT_IMM) && have_op_3_imm(op, src2w)) { - abort(); /* TODO(mundaym): implement */ - } - else if ((src2 & SLJIT_MEM) && (dst_r == src1_r)) { - /* most 32-bit instructions can only handle 12-bit immediate offsets */ - int need_u12 = !have_ldisp() && - (op & SLJIT_I32_OP) && - (GET_OPCODE(op) != SLJIT_ADDC) && - (GET_OPCODE(op) != SLJIT_SUBC); - struct addr mem; - if (need_u12) - FAIL_IF(make_addr_bx(compiler, &mem, src2, src2w, tmp1)); - else - FAIL_IF(make_addr_bxy(compiler, &mem, src2, src2w, tmp1)); +static sljit_s32 sljit_emit_bitwise_imm(struct sljit_compiler *compiler, sljit_s32 type, + sljit_s32 dst, sljit_sw dstw, + sljit_s32 src1, sljit_sw src1w, + sljit_uw imm, sljit_s32 count16) +{ + sljit_s32 mode = compiler->mode; + sljit_gpr dst_r = tmp0; + sljit_s32 needs_move = 1; + + if (SLOW_IS_REG(dst)) { + dst_r = gpr(dst & REG_MASK); + if (dst == src1) + needs_move = 0; + } + + if (needs_move) + FAIL_IF(emit_move(compiler, dst_r, src1, src1w)); + + if (type == SLJIT_AND) { + if (!(mode & SLJIT_I32_OP)) + FAIL_IF(push_inst(compiler, 0xc00a00000000 /* nihf */ | (dst_r << 36) | (imm >> 32))); + return push_inst(compiler, 0xc00b00000000 /* nilf */ | (dst_r << 36) | (imm & 0xffffffff)); + } + else if (type == SLJIT_OR) { + if (count16 >= 3) { + FAIL_IF(push_inst(compiler, 0xc00c00000000 /* oihf */ | (dst_r << 36) | (imm >> 32))); + return push_inst(compiler, 0xc00d00000000 /* oilf */ | (dst_r << 36) | (imm & 0xffffffff)); + } + + if (count16 >= 2) { + if ((imm & 0x00000000ffffffffull) == 0) + return push_inst(compiler, 0xc00c00000000 /* oihf */ | (dst_r << 36) | (imm >> 32)); + if ((imm & 0xffffffff00000000ull) == 0) + return push_inst(compiler, 0xc00d00000000 /* oilf */ | (dst_r << 36) | (imm & 0xffffffff)); + } + + if ((imm & 0xffff000000000000ull) != 0) + FAIL_IF(push_inst(compiler, 0xa5080000 /* oihh */ | (dst_r << 20) | (imm >> 48))); + if ((imm & 0x0000ffff00000000ull) != 0) + FAIL_IF(push_inst(compiler, 0xa5090000 /* oihl */ | (dst_r << 20) | ((imm >> 32) & 0xffff))); + if ((imm & 0x00000000ffff0000ull) != 0) + FAIL_IF(push_inst(compiler, 0xa50a0000 /* oilh */ | (dst_r << 20) | ((imm >> 16) & 0xffff))); + if ((imm & 0x000000000000ffffull) != 0 || imm == 0) + return push_inst(compiler, 0xa50b0000 /* oill */ | (dst_r << 20) | (imm & 0xffff)); + return SLJIT_SUCCESS; + } - int can_u12 = is_u12(mem.offset) ? 1 : 0; - sljit_ins ins = 0; - switch (GET_OPCODE(op) | (op & SLJIT_I32_OP)) { - /* 64-bit ops */ - #define LEVAL(i) EVAL(i, dst_r, mem) - case SLJIT_ADD: - ins = WHEN2(signed_flags, ag, alg); - break; - case SLJIT_SUB: - ins = WHEN2(signed_flags, sg, slg); - break; - case SLJIT_ADDC: - ins = LEVAL(alcg); - break; - case SLJIT_SUBC: - ins = LEVAL(slbg); - break; - case SLJIT_MUL: - ins = LEVAL(msg); - break; - case SLJIT_OR: - ins = LEVAL(og); - break; - case SLJIT_XOR: - ins = LEVAL(xg); - break; - case SLJIT_AND: - ins = LEVAL(ng); - break; - /* 32-bit ops */ - case SLJIT_ADD32: - if (signed_flags) - ins = WHEN2(can_u12, a, ay); - else - ins = WHEN2(can_u12, al, aly); - break; - case SLJIT_SUB32: - if (signed_flags) - ins = WHEN2(can_u12, s, sy); + if ((imm & 0xffffffff00000000ull) != 0) + FAIL_IF(push_inst(compiler, 0xc00600000000 /* xihf */ | (dst_r << 36) | (imm >> 32))); + if ((imm & 0x00000000ffffffffull) != 0 || imm == 0) + return push_inst(compiler, 0xc00700000000 /* xilf */ | (dst_r << 36) | (imm & 0xffffffff)); + return SLJIT_SUCCESS; +} + +static const struct ins_forms bitwise_and_forms = { + 0x1400, /* nr */ + 0xb9800000, /* ngr */ + 0xb9f40000, /* nrk */ + 0xb9e40000, /* ngrk */ + 0x54000000, /* n */ + 0xe30000000054, /* ny */ + 0xe30000000080, /* ng */ +}; + +static const struct ins_forms bitwise_or_forms = { + 0x1600, /* or */ + 0xb9810000, /* ogr */ + 0xb9f60000, /* ork */ + 0xb9e60000, /* ogrk */ + 0x56000000, /* o */ + 0xe30000000056, /* oy */ + 0xe30000000081, /* og */ +}; + +static const struct ins_forms bitwise_xor_forms = { + 0x1700, /* xr */ + 0xb9820000, /* xgr */ + 0xb9f70000, /* xrk */ + 0xb9e70000, /* xgrk */ + 0x57000000, /* x */ + 0xe30000000057, /* xy */ + 0xe30000000082, /* xg */ +}; + +static sljit_s32 sljit_emit_bitwise(struct sljit_compiler *compiler, sljit_s32 op, + sljit_s32 dst, sljit_sw dstw, + sljit_s32 src1, sljit_sw src1w, + sljit_s32 src2, sljit_sw src2w) +{ + sljit_s32 type = GET_OPCODE(op); + const struct ins_forms *forms; + + if ((src2 & SLJIT_IMM) && (!(op & SLJIT_SET_Z) || (type == SLJIT_AND && dst == SLJIT_UNUSED))) { + sljit_s32 count16 = 0; + sljit_uw imm = (sljit_uw)src2w; + + if (op & SLJIT_I32_OP) + imm &= 0xffffffffull; + + if ((imm & 0x000000000000ffffull) != 0 || imm == 0) + count16++; + if ((imm & 0x00000000ffff0000ull) != 0) + count16++; + if ((imm & 0x0000ffff00000000ull) != 0) + count16++; + if ((imm & 0xffff000000000000ull) != 0) + count16++; + + if (type == SLJIT_AND && dst == SLJIT_UNUSED && count16 == 1) { + sljit_gpr src_r = tmp0; + + if (FAST_IS_REG(src1)) + src_r = gpr(src1 & REG_MASK); else - ins = WHEN2(can_u12, sl, sly); - break; - case SLJIT_ADDC32: - ins = LEVAL(alc); - break; - case SLJIT_SUBC32: - ins = LEVAL(slb); - break; - case SLJIT_MUL32: - ins = WHEN2(can_u12, ms, msy); - break; - case SLJIT_OR32: - ins = WHEN2(can_u12, o, oy); - break; - case SLJIT_XOR32: - ins = WHEN2(can_u12, x, xy); - break; - case SLJIT_AND32: - ins = WHEN2(can_u12, n, ny); - break; - #undef LEVAL - default: - SLJIT_UNREACHABLE(); + FAIL_IF(emit_move(compiler, tmp0, src1, src1w)); + + if ((imm & 0x000000000000ffffull) != 0 || imm == 0) + return push_inst(compiler, 0xa7010000 | (src_r << 20) | imm); + if ((imm & 0x00000000ffff0000ull) != 0) + return push_inst(compiler, 0xa7000000 | (src_r << 20) | (imm >> 16)); + if ((imm & 0x0000ffff00000000ull) != 0) + return push_inst(compiler, 0xa7030000 | (src_r << 20) | (imm >> 32)); + return push_inst(compiler, 0xa7020000 | (src_r << 20) | (imm >> 48)); } - FAIL_IF(push_inst(compiler, ins)); + + if (!(op & SLJIT_SET_Z)) + return sljit_emit_bitwise_imm(compiler, type, dst, dstw, src1, src1w, imm, count16); } + + if (type == SLJIT_AND) + forms = &bitwise_and_forms; + else if (type == SLJIT_OR) + forms = &bitwise_or_forms; + else + forms = &bitwise_xor_forms; + + return emit_commutative(compiler, forms, dst, dstw, src1, src1w, src2, src2w); +} + +static sljit_s32 sljit_emit_shift(struct sljit_compiler *compiler, sljit_s32 op, + sljit_s32 dst, sljit_sw dstw, + sljit_s32 src1, sljit_sw src1w, + sljit_s32 src2, sljit_sw src2w) +{ + sljit_s32 type = GET_OPCODE(op); + sljit_gpr dst_r = SLOW_IS_REG(dst) ? gpr(dst & REG_MASK) : tmp0; + sljit_gpr src_r = tmp0; + sljit_gpr base_r = tmp0; + sljit_ins imm = 0; + sljit_ins ins; + + if (FAST_IS_REG(src1)) + src_r = gpr(src1 & REG_MASK); + else + FAIL_IF(emit_move(compiler, tmp0, src1, src1w)); + + if (src2 & SLJIT_IMM) + imm = src2w & ((op & SLJIT_I32_OP) ? 0x1f : 0x3f); + else if (FAST_IS_REG(src2)) + base_r = gpr(src2 & REG_MASK); else { - sljit_gpr src2_r = FAST_IS_REG(src2) ? gpr(src2 & REG_MASK) : tmp1; - if (src2 & SLJIT_IMM) { - /* load src2 into register */ - FAIL_IF(push_load_imm_inst(compiler, src2_r, src2w)); - } - if (src2 & SLJIT_MEM) { - /* load src2 into register */ - FAIL_IF(load_word(compiler, src2_r, src2, src2w, tmp1, op & SLJIT_I32_OP)); - } - /* TODO(mundaym): distinct operand facility where needed */ - #define LEVAL(i) i(tmp0, src1_r) - if (src1_r != dst_r && src1_r != tmp0) { - FAIL_IF(push_inst(compiler, - WHEN2(op & SLJIT_I32_OP, lr, lgr))); - src1_r = tmp0; - } - #undef LEVAL - sljit_ins ins = 0; - switch (GET_OPCODE(op) | (op & SLJIT_I32_OP)) { - #define LEVAL(i) i(src1_r, src2_r) - /* 64-bit ops */ - case SLJIT_ADD: - ins = WHEN2(signed_flags, agr, algr); - break; - case SLJIT_SUB: - ins = WHEN2(signed_flags, sgr, slgr); - break; - case SLJIT_ADDC: - ins = LEVAL(alcgr); - break; - case SLJIT_SUBC: - ins = LEVAL(slbgr); - break; - case SLJIT_MUL: - ins = LEVAL(msgr); - break; - case SLJIT_AND: - ins = LEVAL(ngr); - break; - case SLJIT_OR: - ins = LEVAL(ogr); - break; - case SLJIT_XOR: - ins = LEVAL(xgr); - break; - /* 32-bit ops */ - case SLJIT_ADD32: - ins = WHEN2(signed_flags, ar, alr); - break; - case SLJIT_SUB32: - ins = WHEN2(signed_flags, sr, slr); - break; - case SLJIT_ADDC32: - ins = LEVAL(alcr); - break; - case SLJIT_SUBC32: - ins = LEVAL(slbr); - break; - case SLJIT_MUL32: - ins = LEVAL(msr); - break; - case SLJIT_AND32: - ins = LEVAL(nr); - break; - case SLJIT_OR32: - ins = LEVAL(or); - break; - case SLJIT_XOR32: - ins = LEVAL(xr); - break; - #undef LEVAL - default: - SLJIT_UNREACHABLE(); - } - FAIL_IF(push_inst(compiler, ins)); - #define LEVAL(i) i(dst_r, src1_r) - if (src1_r != dst_r) - FAIL_IF(push_inst(compiler, - WHEN2(op & SLJIT_I32_OP, lr, lgr))); - #undef LEVAL + FAIL_IF(emit_move(compiler, tmp1, src2, src2w)); + base_r = tmp1; } - /* write condition code to emulated flag register */ - if (op & VARIABLE_FLAG_MASK) - FAIL_IF(push_inst(compiler, ipm(flag_r))); + if ((op & SLJIT_I32_OP) && dst_r == src_r) { + if (type == SLJIT_SHL) + ins = 0x89000000 /* sll */; + else if (type == SLJIT_LSHR) + ins = 0x88000000 /* srl */; + else + ins = 0x8a000000 /* sra */; + + FAIL_IF(push_inst(compiler, ins | (dst_r << 20) | (base_r << 12) | imm)); + } + else { + if (type == SLJIT_SHL) + ins = (op & SLJIT_I32_OP) ? 0xeb00000000df /* sllk */ : 0xeb000000000d /* sllg */; + else if (type == SLJIT_LSHR) + ins = (op & SLJIT_I32_OP) ? 0xeb00000000de /* srlk */ : 0xeb000000000c /* srlg */; + else + ins = (op & SLJIT_I32_OP) ? 0xeb00000000dc /* srak */ : 0xeb000000000a /* srag */; + + FAIL_IF(push_inst(compiler, ins | (dst_r << 36) | (src_r << 32) | (base_r << 28) | (imm << 16))); + } + + if ((op & SLJIT_SET_Z) && type != SLJIT_ASHR) + return push_inst(compiler, (op & SLJIT_I32_OP) ? or(dst_r, dst_r) : ogr(dst_r, dst_r)); + + return SLJIT_SUCCESS; +} + +static const struct ins_forms addc_forms = { + 0xb9980000, /* alcr */ + 0xb9880000, /* alcgr */ + 0, + 0, + 0, + 0xe30000000098, /* alc */ + 0xe30000000088, /* alcg */ +}; + +static const struct ins_forms subc_forms = { + 0xb9990000, /* slbr */ + 0xb9890000, /* slbgr */ + 0, + 0, + 0, + 0xe30000000099, /* slb */ + 0xe30000000089, /* slbg */ +}; + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op2(struct sljit_compiler *compiler, sljit_s32 op, + sljit_s32 dst, sljit_sw dstw, + sljit_s32 src1, sljit_sw src1w, + sljit_s32 src2, sljit_sw src2w) +{ + CHECK_ERROR(); + CHECK(check_sljit_emit_op2(compiler, op, dst, dstw, src1, src1w, src2, src2w)); + ADJUST_LOCAL_OFFSET(dst, dstw); + ADJUST_LOCAL_OFFSET(src1, src1w); + ADJUST_LOCAL_OFFSET(src2, src2w); - /* write zero flag to emulated flag register */ - if (op & SLJIT_SET_Z) - FAIL_IF(push_store_zero_flag(compiler, op, dst_r)); - - /* finally write the result to memory if required */ - if (dst & SLJIT_MEM) { - SLJIT_ASSERT(dst_r != tmp1); - /* TODO(carenas): s/FAIL_IF/ return */ - FAIL_IF(store_word(compiler, dst_r, dst, dstw, tmp1, op & SLJIT_I32_OP)); + if (dst == SLJIT_UNUSED && !HAS_FLAGS(op)) + return SLJIT_SUCCESS; + + compiler->mode = op & SLJIT_I32_OP; + compiler->status_flags_state = op & (VARIABLE_FLAG_MASK | SLJIT_SET_Z); + + if (GET_OPCODE(op) >= SLJIT_ADD || GET_OPCODE(op) <= SLJIT_SUBC) + compiler->status_flags_state |= SLJIT_CURRENT_FLAGS_ADD_SUB; + + if (is_commutative(op) && (src1 & SLJIT_IMM) && !(src2 & SLJIT_IMM)) { + src1 ^= src2; + src2 ^= src1; + src1 ^= src2; + + src1w ^= src2w; + src2w ^= src1w; + src1w ^= src2w; } + switch (GET_OPCODE(op)) { + case SLJIT_ADD: + return sljit_emit_add(compiler, op, dst, dstw, src1, src1w, src2, src2w); + case SLJIT_ADDC: + FAIL_IF(emit_commutative(compiler, &addc_forms, dst, dstw, src1, src1w, src2, src2w)); + if (dst & SLJIT_MEM) + return store_word(compiler, tmp0, dst, dstw, op & SLJIT_I32_OP); + return SLJIT_SUCCESS; + case SLJIT_SUB: + return sljit_emit_sub(compiler, op, dst, dstw, src1, src1w, src2, src2w); + case SLJIT_SUBC: + FAIL_IF(emit_non_commutative(compiler, &subc_forms, dst, dstw, src1, src1w, src2, src2w)); + if (dst & SLJIT_MEM) + return store_word(compiler, tmp0, dst, dstw, op & SLJIT_I32_OP); + return SLJIT_SUCCESS; + case SLJIT_MUL: + FAIL_IF(sljit_emit_multiply(compiler, op, dst, dstw, src1, src1w, src2, src2w)); + break; + case SLJIT_AND: + case SLJIT_OR: + case SLJIT_XOR: + FAIL_IF(sljit_emit_bitwise(compiler, op, dst, dstw, src1, src1w, src2, src2w)); + break; + case SLJIT_SHL: + case SLJIT_LSHR: + case SLJIT_ASHR: + FAIL_IF(sljit_emit_shift(compiler, op, dst, dstw, src1, src1w, src2, src2w)); + break; + } + + if (dst & SLJIT_MEM) + return store_word(compiler, tmp0, dst, dstw, op & SLJIT_I32_OP); return SLJIT_SUCCESS; } @@ -2428,7 +2663,7 @@ case SLJIT_FAST_RETURN: src_r = FAST_IS_REG(src) ? gpr(src) : tmp1; if (src & SLJIT_MEM) - FAIL_IF(load_word(compiler, tmp1, src, srcw, tmp1, 0)); + FAIL_IF(load_word(compiler, tmp1, src, srcw, 0)); return push_inst(compiler, br(src_r)); case SLJIT_SKIP_FRAMES_BEFORE_FAST_RETURN: @@ -2507,7 +2742,7 @@ return push_inst(compiler, lgr(gpr(dst), fast_link_r)); /* memory */ - return store_word(compiler, fast_link_r, dst, dstw, tmp1, 0); + return store_word(compiler, fast_link_r, dst, dstw, 0); } /* --------------------------------------------------------------------- */ @@ -2532,15 +2767,11 @@ SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_jump(struct sljit_compiler *compiler, sljit_s32 type) { - sljit_u8 mask = ((type & 0xff) < SLJIT_JUMP) ? get_cc(type & 0xff) : 0xf; + sljit_u8 mask = ((type & 0xff) < SLJIT_JUMP) ? get_cc(compiler, type & 0xff) : 0xf; CHECK_ERROR_PTR(); CHECK_PTR(check_sljit_emit_jump(compiler, type)); - /* reload condition code */ - if (mask != 0xf) - PTR_FAIL_IF(push_load_cc(compiler, type & 0xff)); - /* record jump */ struct sljit_jump *jump = (struct sljit_jump *) ensure_abuf(compiler, sizeof(struct sljit_jump)); @@ -2585,7 +2816,7 @@ FAIL_IF(push_load_imm_inst(compiler, src_r, srcw)); } else if (src & SLJIT_MEM) - FAIL_IF(load_word(compiler, src_r, src, srcw, tmp1, 0 /* 64-bit */)); + FAIL_IF(load_word(compiler, src_r, src, srcw, 0 /* 64-bit */)); /* emit jump instruction */ if (type >= SLJIT_FAST_CALL) @@ -2613,7 +2844,7 @@ sljit_s32 dst, sljit_sw dstw, sljit_s32 type) { - sljit_u8 mask = get_cc(type & 0xff); + sljit_u8 mask = get_cc(compiler, type & 0xff); CHECK_ERROR(); CHECK(check_sljit_emit_op_flags(compiler, op, dst, dstw, type)); @@ -2624,9 +2855,11 @@ case SLJIT_AND: case SLJIT_OR: case SLJIT_XOR: + compiler->status_flags_state = op & SLJIT_SET_Z; + /* dst is also source operand */ if (dst & SLJIT_MEM) - FAIL_IF(load_word(compiler, dst_r, dst, dstw, tmp1, op & SLJIT_I32_OP)); + FAIL_IF(load_word(compiler, dst_r, dst, dstw, op & SLJIT_I32_OP)); break; case SLJIT_MOV: @@ -2638,9 +2871,6 @@ SLJIT_UNREACHABLE(); } - if (mask != 0xf) - FAIL_IF(push_load_cc(compiler, type & 0xff)); - /* TODO(mundaym): fold into cmov helper function? */ #define LEVAL(i) i(loc_r, 1, mask) if (have_lscond2()) { @@ -2671,14 +2901,9 @@ #undef LEVAL } - /* set zero flag if needed */ - if (op & SLJIT_SET_Z) - FAIL_IF(push_store_zero_flag(compiler, op, dst_r)); - /* store result to memory if required */ - /* TODO(carenas): s/FAIL_IF/ return */ if (dst & SLJIT_MEM) - FAIL_IF(store_word(compiler, dst_r, dst, dstw, tmp1, op & SLJIT_I32_OP)); + return store_word(compiler, dst_r, dst, dstw, op & SLJIT_I32_OP); return SLJIT_SUCCESS; } @@ -2687,16 +2912,13 @@ sljit_s32 dst_reg, sljit_s32 src, sljit_sw srcw) { - sljit_u8 mask = get_cc(type & 0xff); + sljit_u8 mask = get_cc(compiler, type & 0xff); sljit_gpr dst_r = gpr(dst_reg & ~SLJIT_I32_OP); sljit_gpr src_r = FAST_IS_REG(src) ? gpr(src) : tmp0; CHECK_ERROR(); CHECK(check_sljit_emit_cmov(compiler, type, dst_reg, src, srcw)); - if (mask != 0xf) - FAIL_IF(push_load_cc(compiler, type & 0xff)); - if (src & SLJIT_IMM) { /* TODO(mundaym): fast path with lscond2 */ FAIL_IF(push_load_imm_inst(compiler, src_r, srcw)); @@ -2750,7 +2972,7 @@ } if (dst & SLJIT_MEM) - PTR_FAIL_IF(store_word(compiler, dst_r, dst, dstw, tmp1, 0 /* always 64-bit */)); + PTR_FAIL_IF(store_word(compiler, dst_r, dst, dstw, 0 /* always 64-bit */)); return (struct sljit_const*)const_; } @@ -2797,7 +3019,7 @@ } if (dst & SLJIT_MEM) - PTR_FAIL_IF(store_word(compiler, dst_r, dst, dstw, tmp1, 0)); + PTR_FAIL_IF(store_word(compiler, dst_r, dst, dstw, 0)); return put_label; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_32.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_32.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_32.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_32.c 2022-11-11 15:29:17.000000000 +0800 @@ -93,18 +93,21 @@ return push_inst(compiler, ADD | D(dst) | S1(dst) | IMM(1), UNMOVABLE_INS); case SLJIT_ADD: + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; return push_inst(compiler, ADD | (flags & SET_FLAGS) | D(dst) | S1(src1) | ARG2(flags, src2), DR(dst) | (flags & SET_FLAGS)); case SLJIT_ADDC: return push_inst(compiler, ADDC | (flags & SET_FLAGS) | D(dst) | S1(src1) | ARG2(flags, src2), DR(dst) | (flags & SET_FLAGS)); case SLJIT_SUB: + compiler->status_flags_state = SLJIT_CURRENT_FLAGS_ADD_SUB; return push_inst(compiler, SUB | (flags & SET_FLAGS) | D(dst) | S1(src1) | ARG2(flags, src2), DR(dst) | (flags & SET_FLAGS)); case SLJIT_SUBC: return push_inst(compiler, SUBC | (flags & SET_FLAGS) | D(dst) | S1(src1) | ARG2(flags, src2), DR(dst) | (flags & SET_FLAGS)); case SLJIT_MUL: + compiler->status_flags_state = 0; FAIL_IF(push_inst(compiler, SMUL | D(dst) | S1(src1) | ARG2(flags, src2), DR(dst))); if (!(flags & SET_FLAGS)) return SLJIT_SUCCESS; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_common.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_common.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_common.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_common.c 2022-11-11 15:29:17.000000000 +0800 @@ -1275,16 +1275,14 @@ return label; } -static sljit_ins get_cc(sljit_s32 type) +static sljit_ins get_cc(struct sljit_compiler *compiler, sljit_s32 type) { switch (type) { case SLJIT_EQUAL: - case SLJIT_MUL_NOT_OVERFLOW: case SLJIT_NOT_EQUAL_F64: /* Unordered. */ return DA(0x1); case SLJIT_NOT_EQUAL: - case SLJIT_MUL_OVERFLOW: case SLJIT_EQUAL_F64: return DA(0x9); @@ -1317,10 +1315,16 @@ return DA(0x2); case SLJIT_OVERFLOW: + if (!(compiler->status_flags_state & SLJIT_CURRENT_FLAGS_ADD_SUB)) + return DA(0x9); + case SLJIT_UNORDERED_F64: return DA(0x7); case SLJIT_NOT_OVERFLOW: + if (!(compiler->status_flags_state & SLJIT_CURRENT_FLAGS_ADD_SUB)) + return DA(0x1); + case SLJIT_ORDERED_F64: return DA(0xf); @@ -1347,7 +1351,7 @@ if (((compiler->delay_slot & DST_INS_MASK) != UNMOVABLE_INS) && !(compiler->delay_slot & ICC_IS_SET)) jump->flags |= IS_MOVABLE; #if (defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32) - PTR_FAIL_IF(push_inst(compiler, BICC | get_cc(type ^ 1) | 5, UNMOVABLE_INS)); + PTR_FAIL_IF(push_inst(compiler, BICC | get_cc(compiler, type ^ 1) | 5, UNMOVABLE_INS)); #else #error "Implementation required" #endif @@ -1357,7 +1361,7 @@ if (((compiler->delay_slot & DST_INS_MASK) != UNMOVABLE_INS) && !(compiler->delay_slot & FCC_IS_SET)) jump->flags |= IS_MOVABLE; #if (defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32) - PTR_FAIL_IF(push_inst(compiler, FBFCC | get_cc(type ^ 1) | 5, UNMOVABLE_INS)); + PTR_FAIL_IF(push_inst(compiler, FBFCC | get_cc(compiler, type ^ 1) | 5, UNMOVABLE_INS)); #else #error "Implementation required" #endif @@ -1474,9 +1478,9 @@ type &= 0xff; if (type < SLJIT_EQUAL_F64) - FAIL_IF(push_inst(compiler, BICC | get_cc(type) | 3, UNMOVABLE_INS)); + FAIL_IF(push_inst(compiler, BICC | get_cc(compiler, type) | 3, UNMOVABLE_INS)); else - FAIL_IF(push_inst(compiler, FBFCC | get_cc(type) | 3, UNMOVABLE_INS)); + FAIL_IF(push_inst(compiler, FBFCC | get_cc(compiler, type) | 3, UNMOVABLE_INS)); FAIL_IF(push_inst(compiler, OR | D(reg) | S1(0) | IMM(1), UNMOVABLE_INS)); FAIL_IF(push_inst(compiler, OR | D(reg) | S1(0) | IMM(0), UNMOVABLE_INS)); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeX86_common.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeX86_common.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeX86_common.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitNativeX86_common.c 2022-11-11 15:29:17.000000000 +0800 @@ -411,11 +411,9 @@ return 0x8e /* jle */; case SLJIT_OVERFLOW: - case SLJIT_MUL_OVERFLOW: return 0x80 /* jo */; case SLJIT_NOT_OVERFLOW: - case SLJIT_MUL_NOT_OVERFLOW: return 0x81 /* jno */; case SLJIT_UNORDERED_F64: diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitUtils.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitUtils.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitUtils.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitUtils.c 2022-11-11 15:29:17.000000000 +0800 @@ -48,7 +48,7 @@ static SLJIT_INLINE void allocator_grab_lock(void) { HANDLE lock; - if (SLJIT_UNLIKELY(!allocator_lock)) { + if (SLJIT_UNLIKELY(!InterlockedCompareExchangePointer(&allocator_lock, NULL, NULL))) { lock = CreateMutex(NULL, FALSE, NULL); if (InterlockedCompareExchangePointer(&allocator_lock, lock, NULL)) CloseHandle(lock); @@ -146,9 +146,13 @@ #include <unistd.h> static SLJIT_INLINE sljit_sw get_page_alignment(void) { - static sljit_sw sljit_page_align; - if (!sljit_page_align) { + static sljit_sw sljit_page_align = -1; + if (sljit_page_align < 0) { +#ifdef _SC_PAGESIZE sljit_page_align = sysconf(_SC_PAGESIZE); +#else + sljit_page_align = getpagesize(); +#endif /* Should never happen. */ if (sljit_page_align < 0) sljit_page_align = 4096; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitWXExecAllocator.c qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitWXExecAllocator.c --- qtbase-opensource-src-5.15.3+dfsg/src/3rdparty/pcre2/src/sljit/sljitWXExecAllocator.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/3rdparty/pcre2/src/sljit/sljitWXExecAllocator.c 2022-11-11 15:29:17.000000000 +0800 @@ -121,14 +121,18 @@ static pthread_mutex_t se_lock = PTHREAD_MUTEX_INITIALIZER; #endif static int se_protected = !SLJIT_PROT_WX; + int prot = PROT_READ | PROT_WRITE | SLJIT_PROT_WX; sljit_uw* ptr; if (SLJIT_UNLIKELY(se_protected < 0)) return NULL; +#ifdef PROT_MAX + prot |= PROT_MAX(PROT_READ | PROT_WRITE | PROT_EXEC); +#endif + size += sizeof(sljit_uw); - ptr = (sljit_uw*)mmap(NULL, size, PROT_READ | PROT_WRITE | SLJIT_PROT_WX, - MAP_PRIVATE | MAP_ANON, -1, 0); + ptr = (sljit_uw*)mmap(NULL, size, prot, MAP_PRIVATE | MAP_ANON, -1, 0); if (ptr == MAP_FAILED) return NULL; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/CursorHandle.java qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/CursorHandle.java --- qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/CursorHandle.java 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/CursorHandle.java 2022-11-11 15:29:17.000000000 +0800 @@ -159,11 +159,15 @@ public void setPosition(final int x, final int y){ initOverlay(); - final int[] location = new int[2]; - m_layout.getLocationOnScreen(location); + final int[] layoutLocation = new int[2]; + m_layout.getLocationOnScreen(layoutLocation); - int x2 = x + location[0]; - int y2 = y + location[1] + m_yShift; + // This value is used for handling split screen case + final int[] activityLocation = new int[2]; + m_activity.getWindow().getDecorView().getLocationOnScreen(activityLocation); + + int x2 = x + layoutLocation[0] - activityLocation[0]; + int y2 = y + layoutLocation[1] + m_yShift - activityLocation[1]; if (m_id == QtNative.IdCursorHandle) { x2 -= m_popup.getWidth() / 2 ; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java --- qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java 2022-11-11 15:29:17.000000000 +0800 @@ -1,5 +1,6 @@ /**************************************************************************** ** +** Copyright (C) 2021 The Qt Company Ltd. ** Copyright (C) 2014 BogDan Vatra <bogdan@kde.org> ** Contact: https://www.qt.io/licensing/ ** @@ -39,21 +40,7 @@ package org.qtproject.qt5.android; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; -import org.xmlpull.v1.XmlPullParser; - +import android.annotation.SuppressLint; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Resources; @@ -64,9 +51,9 @@ import android.graphics.Canvas; import android.graphics.NinePatch; import android.graphics.Paint; -import android.graphics.Rect; -import android.graphics.RectF; import android.graphics.PorterDuff; +import android.graphics.Rect; +import android.graphics.drawable.AnimatedStateListDrawable; import android.graphics.drawable.AnimationDrawable; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ClipDrawable; @@ -77,26 +64,53 @@ import android.graphics.drawable.InsetDrawable; import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.NinePatchDrawable; +import android.graphics.drawable.RippleDrawable; import android.graphics.drawable.RotateDrawable; import android.graphics.drawable.ScaleDrawable; import android.graphics.drawable.StateListDrawable; +import android.graphics.drawable.VectorDrawable; import android.os.Build; import android.util.AttributeSet; import android.util.Log; +import android.util.TypedValue; import android.util.Xml; +import android.view.ContextThemeWrapper; import android.view.inputmethod.EditorInfo; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.xmlpull.v1.XmlPullParser; -public class ExtractStyle { +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; - native static int[] extractChunkInfo20(byte[] chunkData); - native static int[] extractNativeChunkInfo20(long nativeChunk); - Class<?> styleableClass = getClass("android.R$styleable"); - Class<?> rippleDrawableClass = getClass("android.graphics.drawable.RippleDrawable"); - Class<?> animatedStateListDrawableClass = getClass("android.graphics.drawable.AnimatedStateListDrawable"); - Class<?> vectorDrawableClass = getClass("android.graphics.drawable.VectorDrawable"); +public class ExtractStyle { + // This used to be retrieved from android.R.styleable.ViewDrawableStates field via reflection, + // but since the access to that is restricted, we need to have hard-coded here. + final int[] viewDrawableStatesState = new int[]{ + android.R.attr.state_focused, + android.R.attr.state_window_focused, + android.R.attr.state_enabled, + android.R.attr.state_selected, + android.R.attr.state_pressed, + android.R.attr.state_activated, + android.R.attr.state_accelerated, + android.R.attr.state_hovered, + android.R.attr.state_drag_can_accept, + android.R.attr.state_drag_hovered + }; final int[] EMPTY_STATE_SET = {}; final int[] ENABLED_STATE_SET = {android.R.attr.state_enabled}; final int[] FOCUSED_STATE_SET = {android.R.attr.state_focused}; @@ -109,10 +123,10 @@ final int[] FOCUSED_SELECTED_STATE_SET = stateSetUnion(FOCUSED_STATE_SET, SELECTED_STATE_SET); final int[] FOCUSED_WINDOW_FOCUSED_STATE_SET = stateSetUnion(FOCUSED_STATE_SET, WINDOW_FOCUSED_STATE_SET); final int[] SELECTED_WINDOW_FOCUSED_STATE_SET = stateSetUnion(SELECTED_STATE_SET, WINDOW_FOCUSED_STATE_SET); - final int[] ENABLED_FOCUSED_SELECTED_STATE_SET = stateSetUnion(ENABLED_FOCUSED_STATE_SET, SELECTED_STATE_SET); + final int[] ENABLED_FOCUSED_SELECTED_STATE_SET = stateSetUnion(ENABLED_FOCUSED_STATE_SET, SELECTED_STATE_SET); final int[] ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET = stateSetUnion(ENABLED_FOCUSED_STATE_SET, WINDOW_FOCUSED_STATE_SET); final int[] ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET = stateSetUnion(ENABLED_SELECTED_STATE_SET, WINDOW_FOCUSED_STATE_SET); - final int[] FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET = stateSetUnion(FOCUSED_SELECTED_STATE_SET, WINDOW_FOCUSED_STATE_SET); + final int[] FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET = stateSetUnion(FOCUSED_SELECTED_STATE_SET, WINDOW_FOCUSED_STATE_SET); final int[] ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET = stateSetUnion(ENABLED_FOCUSED_SELECTED_STATE_SET, WINDOW_FOCUSED_STATE_SET); final int[] PRESSED_WINDOW_FOCUSED_STATE_SET = stateSetUnion(PRESSED_STATE_SET, WINDOW_FOCUSED_STATE_SET); final int[] PRESSED_SELECTED_STATE_SET = stateSetUnion(PRESSED_STATE_SET, SELECTED_STATE_SET); @@ -129,230 +143,98 @@ final int[] PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET = stateSetUnion(PRESSED_ENABLED_FOCUSED_STATE_SET, WINDOW_FOCUSED_STATE_SET); final int[] PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET = stateSetUnion(PRESSED_ENABLED_FOCUSED_STATE_SET, SELECTED_STATE_SET); final int[] PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET = stateSetUnion(PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET, WINDOW_FOCUSED_STATE_SET); - - - final int View_background = getField(styleableClass,"View_background"); - final int View_padding = getField(styleableClass,"View_padding"); - final int View_paddingLeft = getField(styleableClass,"View_paddingLeft"); - final int View_paddingTop = getField(styleableClass,"View_paddingTop"); - final int View_paddingRight = getField(styleableClass,"View_paddingRight"); - final int View_paddingBottom = getField(styleableClass,"View_paddingBottom"); - final int View_scrollX = getField(styleableClass,"View_scrollX"); - final int View_scrollY = getField(styleableClass,"View_scrollY"); - final int View_id = getField(styleableClass,"View_id"); - final int View_tag = getField(styleableClass,"View_tag"); - final int View_fitsSystemWindows = getField(styleableClass,"View_fitsSystemWindows"); - final int View_focusable = getField(styleableClass,"View_focusable"); - final int View_focusableInTouchMode = getField(styleableClass,"View_focusableInTouchMode"); - final int View_clickable = getField(styleableClass,"View_clickable"); - final int View_longClickable = getField(styleableClass,"View_longClickable"); - final int View_saveEnabled = getField(styleableClass,"View_saveEnabled"); - final int View_duplicateParentState = getField(styleableClass,"View_duplicateParentState"); - final int View_visibility = getField(styleableClass,"View_visibility"); - final int View_drawingCacheQuality = getField(styleableClass,"View_drawingCacheQuality"); - final int View_contentDescription = getField(styleableClass,"View_contentDescription"); - final int View_soundEffectsEnabled = getField(styleableClass,"View_soundEffectsEnabled"); - final int View_hapticFeedbackEnabled = getField(styleableClass,"View_hapticFeedbackEnabled"); - final int View_scrollbars = getField(styleableClass,"View_scrollbars"); - final int View_fadingEdge = getField(styleableClass,"View_fadingEdge"); - final int View_scrollbarStyle = getField(styleableClass,"View_scrollbarStyle"); - final int View_scrollbarFadeDuration = getField(styleableClass,"View_scrollbarFadeDuration"); - final int View_scrollbarDefaultDelayBeforeFade = getField(styleableClass,"View_scrollbarDefaultDelayBeforeFade"); - final int View_scrollbarSize = getField(styleableClass,"View_scrollbarSize"); - final int View_scrollbarThumbHorizontal = getField(styleableClass,"View_scrollbarThumbHorizontal"); - final int View_scrollbarThumbVertical = getField(styleableClass,"View_scrollbarThumbVertical"); - final int View_scrollbarTrackHorizontal = getField(styleableClass,"View_scrollbarTrackHorizontal"); - final int View_scrollbarTrackVertical = getField(styleableClass,"View_scrollbarTrackVertical"); - final int View_isScrollContainer = getField(styleableClass,"View_isScrollContainer"); - final int View_keepScreenOn = getField(styleableClass,"View_keepScreenOn"); - final int View_filterTouchesWhenObscured = getField(styleableClass,"View_filterTouchesWhenObscured"); - final int View_nextFocusLeft = getField(styleableClass,"View_nextFocusLeft"); - final int View_nextFocusRight = getField(styleableClass,"View_nextFocusRight"); - final int View_nextFocusUp = getField(styleableClass,"View_nextFocusUp"); - final int View_nextFocusDown = getField(styleableClass,"View_nextFocusDown"); - final int View_minWidth = getField(styleableClass,"View_minWidth"); - final int View_minHeight = getField(styleableClass,"View_minHeight"); - final int View_onClick = getField(styleableClass,"View_onClick"); - final int View_overScrollMode = getField(styleableClass,"View_overScrollMode"); - final int View_paddingStart = getField(styleableClass,"View_paddingStart"); - final int View_paddingEnd = getField(styleableClass,"View_paddingEnd"); - - final int TextAppearance_textColorHighlight = getField(styleableClass,"TextAppearance_textColorHighlight"); - final int TextAppearance_textColor = getField(styleableClass,"TextAppearance_textColor"); - final int TextAppearance_textColorHint = getField(styleableClass,"TextAppearance_textColorHint"); - final int TextAppearance_textColorLink = getField(styleableClass,"TextAppearance_textColorLink"); - final int TextAppearance_textSize = getField(styleableClass,"TextAppearance_textSize"); - final int TextAppearance_typeface = getField(styleableClass,"TextAppearance_typeface"); - final int TextAppearance_textStyle = getField(styleableClass,"TextAppearance_textStyle"); - final int TextAppearance_textAllCaps = getField(styleableClass,"TextAppearance_textAllCaps"); - final int TextView_editable = getField(styleableClass,"TextView_editable"); - final int TextView_inputMethod = getField(styleableClass,"TextView_inputMethod"); - final int TextView_numeric = getField(styleableClass,"TextView_numeric"); - final int TextView_digits = getField(styleableClass,"TextView_digits"); - final int TextView_phoneNumber = getField(styleableClass,"TextView_phoneNumber"); - final int TextView_autoText = getField(styleableClass,"TextView_autoText"); - final int TextView_capitalize = getField(styleableClass,"TextView_capitalize"); - final int TextView_bufferType = getField(styleableClass,"TextView_bufferType"); - final int TextView_selectAllOnFocus = getField(styleableClass,"TextView_selectAllOnFocus"); - final int TextView_autoLink = getField(styleableClass,"TextView_autoLink"); - final int TextView_linksClickable = getField(styleableClass,"TextView_linksClickable"); - final int TextView_drawableLeft = getField(styleableClass,"TextView_drawableLeft"); - final int TextView_drawableTop = getField(styleableClass,"TextView_drawableTop"); - final int TextView_drawableRight = getField(styleableClass,"TextView_drawableRight"); - final int TextView_drawableBottom = getField(styleableClass,"TextView_drawableBottom"); - final int TextView_drawableStart = getField(styleableClass,"TextView_drawableStart"); - final int TextView_drawableEnd = getField(styleableClass,"TextView_drawableEnd"); - final int TextView_drawablePadding = getField(styleableClass,"TextView_drawablePadding"); - final int TextView_textCursorDrawable = getField(styleableClass,"TextView_textCursorDrawable"); - final int TextView_maxLines = getField(styleableClass,"TextView_maxLines"); - final int TextView_maxHeight = getField(styleableClass,"TextView_maxHeight"); - final int TextView_lines = getField(styleableClass,"TextView_lines"); - final int TextView_height = getField(styleableClass,"TextView_height"); - final int TextView_minLines = getField(styleableClass,"TextView_minLines"); - final int TextView_minHeight = getField(styleableClass,"TextView_minHeight"); - final int TextView_maxEms = getField(styleableClass,"TextView_maxEms"); - final int TextView_maxWidth = getField(styleableClass,"TextView_maxWidth"); - final int TextView_ems = getField(styleableClass,"TextView_ems"); - final int TextView_width = getField(styleableClass,"TextView_width"); - final int TextView_minEms = getField(styleableClass,"TextView_minEms"); - final int TextView_minWidth = getField(styleableClass,"TextView_minWidth"); - final int TextView_gravity = getField(styleableClass,"TextView_gravity"); - final int TextView_hint = getField(styleableClass,"TextView_hint"); - final int TextView_text = getField(styleableClass,"TextView_text"); - final int TextView_scrollHorizontally = getField(styleableClass,"TextView_scrollHorizontally"); - final int TextView_singleLine = getField(styleableClass,"TextView_singleLine"); - final int TextView_ellipsize = getField(styleableClass,"TextView_ellipsize"); - final int TextView_marqueeRepeatLimit = getField(styleableClass,"TextView_marqueeRepeatLimit"); - final int TextView_includeFontPadding = getField(styleableClass,"TextView_includeFontPadding"); - final int TextView_cursorVisible = getField(styleableClass,"TextView_cursorVisible"); - final int TextView_maxLength = getField(styleableClass,"TextView_maxLength"); - final int TextView_textScaleX = getField(styleableClass,"TextView_textScaleX"); - final int TextView_freezesText = getField(styleableClass,"TextView_freezesText"); - final int TextView_shadowColor = getField(styleableClass,"TextView_shadowColor"); - final int TextView_shadowDx = getField(styleableClass,"TextView_shadowDx"); - final int TextView_shadowDy = getField(styleableClass,"TextView_shadowDy"); - final int TextView_shadowRadius = getField(styleableClass,"TextView_shadowRadius"); - final int TextView_enabled = getField(styleableClass,"TextView_enabled"); - final int TextView_textColorHighlight = getField(styleableClass,"TextView_textColorHighlight"); - final int TextView_textColor = getField(styleableClass,"TextView_textColor"); - final int TextView_textColorHint = getField(styleableClass,"TextView_textColorHint"); - final int TextView_textColorLink = getField(styleableClass,"TextView_textColorLink"); - final int TextView_textSize = getField(styleableClass,"TextView_textSize"); - final int TextView_typeface = getField(styleableClass,"TextView_typeface"); - final int TextView_textStyle = getField(styleableClass,"TextView_textStyle"); - final int TextView_password = getField(styleableClass,"TextView_password"); - final int TextView_lineSpacingExtra = getField(styleableClass,"TextView_lineSpacingExtra"); - final int TextView_lineSpacingMultiplier = getField(styleableClass,"TextView_lineSpacingMultiplier"); - final int TextView_inputType = getField(styleableClass,"TextView_inputType"); - final int TextView_imeOptions = getField(styleableClass,"TextView_imeOptions"); - final int TextView_imeActionLabel = getField(styleableClass,"TextView_imeActionLabel"); - final int TextView_imeActionId = getField(styleableClass,"TextView_imeActionId"); - final int TextView_privateImeOptions = getField(styleableClass,"TextView_privateImeOptions"); - final int TextView_textSelectHandleLeft = getField(styleableClass,"TextView_textSelectHandleLeft"); - final int TextView_textSelectHandleRight = getField(styleableClass,"TextView_textSelectHandleRight"); - final int TextView_textSelectHandle = getField(styleableClass,"TextView_textSelectHandle"); - final int TextView_textIsSelectable = getField(styleableClass,"TextView_textIsSelectable"); - final int TextView_textAllCaps = getField(styleableClass,"TextView_textAllCaps"); - - final int ImageView_src = getField(styleableClass,"ImageView_src"); - final int ImageView_baselineAlignBottom = getField(styleableClass,"ImageView_baselineAlignBottom"); - final int ImageView_adjustViewBounds = getField(styleableClass,"ImageView_adjustViewBounds"); - final int ImageView_maxWidth = getField(styleableClass,"ImageView_maxWidth"); - final int ImageView_maxHeight = getField(styleableClass,"ImageView_maxHeight"); - final int ImageView_scaleType = getField(styleableClass,"ImageView_scaleType"); - final int ImageView_tint = getField(styleableClass,"ImageView_tint"); - final int ImageView_cropToPadding = getField(styleableClass,"ImageView_cropToPadding"); - final Resources.Theme m_theme; final String m_extractPath; - Context m_context; final int defaultBackgroundColor; final int defaultTextColor; final boolean m_minimal; + final int[] DrawableStates = { android.R.attr.state_active, android.R.attr.state_checked, + android.R.attr.state_enabled, android.R.attr.state_focused, + android.R.attr.state_pressed, android.R.attr.state_selected, + android.R.attr.state_window_focused, 16908288, android.R.attr.state_multiline, + android.R.attr.state_activated, android.R.attr.state_accelerated}; + final String[] DrawableStatesLabels = {"active", "checked", "enabled", "focused", "pressed", + "selected", "window_focused", "background", "multiline", "activated", "accelerated"}; + final String[] DisableDrawableStatesLabels = {"inactive", "unchecked", "disabled", + "not_focused", "no_pressed", "unselected", "window_not_focused", "background", + "multiline", "activated", "accelerated"}; + final String[] sScaleTypeArray = { + "MATRIX", + "FIT_XY", + "FIT_START", + "FIT_CENTER", + "FIT_END", + "CENTER", + "CENTER_CROP", + "CENTER_INSIDE" + }; + Context m_context; + private final HashMap<String, DrawableCache> m_drawableCache = new HashMap<>(); - class SimpleJsonWriter - { - private OutputStreamWriter m_writer; - private boolean m_addComma = false; - private int m_indentLevel = 0; - public SimpleJsonWriter(String filePath) throws FileNotFoundException - { - m_writer = new OutputStreamWriter(new FileOutputStream(filePath)); - } - - public void close() throws IOException - { - m_writer.close(); - } - - private void writeIndent() throws IOException - { - m_writer.write(" ", 0, m_indentLevel); - } - - SimpleJsonWriter beginObject() throws IOException - { - writeIndent(); - m_writer.write("{\n"); - ++m_indentLevel; - m_addComma = false; - return this; - } - - SimpleJsonWriter endObject() throws IOException - { - m_writer.write("\n"); - writeIndent(); - m_writer.write("}\n"); - --m_indentLevel; - m_addComma = false; - return this; - } - - SimpleJsonWriter name(String name) throws IOException - { - if (m_addComma) { - m_writer.write(",\n"); - } - writeIndent(); - m_writer.write(JSONObject.quote(name) + ": "); - m_addComma = true; - return this; - } - - SimpleJsonWriter value(JSONObject value) throws IOException - { - m_writer.write(value.toString()); - return this; - } - } + public ExtractStyle(Context context, String extractPath, boolean minimal) { + m_minimal = minimal; + m_extractPath = extractPath + "/"; + boolean dirCreated = new File(m_extractPath).mkdirs(); + if (!dirCreated) + Log.w(QtNative.QtTAG, "Cannot create Android style directory."); + m_context = context; + m_theme = context.getTheme(); + TypedArray array = m_theme.obtainStyledAttributes(new int[]{ + android.R.attr.colorBackground, + android.R.attr.textColorPrimary, + android.R.attr.textColor + }); + defaultBackgroundColor = array.getColor(0, 0); + int textColor = array.getColor(1, 0xFFFFFF); + if (textColor == 0xFFFFFF) + textColor = array.getColor(2, 0xFFFFFF); + defaultTextColor = textColor; + array.recycle(); - class FakeCanvas extends Canvas { - int[] chunkData = null; - class Size { - public int s,e; - Size(int start, int end) - { - s=start; - e=end; + try { + SimpleJsonWriter jsonWriter = new SimpleJsonWriter(m_extractPath + "style.json"); + jsonWriter.beginObject(); + try { + jsonWriter.name("defaultStyle").value(extractDefaultPalette()); + extractWindow(jsonWriter); + jsonWriter.name("buttonStyle").value(extractTextAppearanceInformation(android.R.attr.buttonStyle, "QPushButton")); + jsonWriter.name("spinnerStyle").value(extractTextAppearanceInformation(android.R.attr.spinnerStyle, "QComboBox")); + extractProgressBar(jsonWriter, android.R.attr.progressBarStyleHorizontal, "progressBarStyleHorizontal", "QProgressBar"); + extractProgressBar(jsonWriter, android.R.attr.progressBarStyleLarge, "progressBarStyleLarge", null); + extractProgressBar(jsonWriter, android.R.attr.progressBarStyleSmall, "progressBarStyleSmall", null); + extractProgressBar(jsonWriter, android.R.attr.progressBarStyle, "progressBarStyle", null); + extractAbsSeekBar(jsonWriter); + extractSwitch(jsonWriter); + extractCompoundButton(jsonWriter, android.R.attr.checkboxStyle, "checkboxStyle", "QCheckBox"); + jsonWriter.name("editTextStyle").value(extractTextAppearanceInformation(android.R.attr.editTextStyle, "QLineEdit")); + extractCompoundButton(jsonWriter, android.R.attr.radioButtonStyle, "radioButtonStyle", "QRadioButton"); + jsonWriter.name("textViewStyle").value(extractTextAppearanceInformation(android.R.attr.textViewStyle, "QWidget")); + jsonWriter.name("scrollViewStyle").value(extractTextAppearanceInformation(android.R.attr.scrollViewStyle, "QAbstractScrollArea")); + extractListView(jsonWriter); + jsonWriter.name("listSeparatorTextViewStyle").value(extractTextAppearanceInformation(android.R.attr.listSeparatorTextViewStyle, null)); + extractItemsStyle(jsonWriter); + extractCompoundButton(jsonWriter, android.R.attr.buttonStyleToggle, "buttonStyleToggle", null); + extractCalendar(jsonWriter); + extractToolBar(jsonWriter); + jsonWriter.name("actionButtonStyle").value(extractTextAppearanceInformation(android.R.attr.actionButtonStyle, "QToolButton")); + jsonWriter.name("actionBarTabTextStyle").value(extractTextAppearanceInformation(android.R.attr.actionBarTabTextStyle, null)); + jsonWriter.name("actionBarTabStyle").value(extractTextAppearanceInformation(android.R.attr.actionBarTabStyle, null)); + jsonWriter.name("actionOverflowButtonStyle").value(extractImageViewInformation(android.R.attr.actionOverflowButtonStyle, null)); + extractTabBar(jsonWriter); + } catch (Exception e) { + e.printStackTrace(); } - } - - public boolean isHardwareAccelerated() { - return true; - } - - public void drawPatch(Bitmap bmp, byte[] chunks, RectF dst, Paint paint) { - chunkData = extractChunkInfo20(chunks); + jsonWriter.endObject(); + jsonWriter.close(); + } catch (Exception e) { + e.printStackTrace(); } } + native static int[] extractNativeChunkInfo20(long nativeChunk); - - private int[] stateSetUnion(final int[] stateSet1, final int[] stateSet2) - { - try - { + private int[] stateSetUnion(final int[] stateSet1, final int[] stateSet2) { + try { final int stateSet1Length = stateSet1.length; final int stateSet2Length = stateSet2.length; final int[] newSet = new int[stateSet1Length + stateSet2Length]; @@ -361,34 +243,18 @@ int j = 0; // This is a merge of the two input state sets and assumes that the // input sets are sorted by the order imposed by ViewDrawableStates. - int[] viewDrawableStatesState=(int[]) styleableClass.getDeclaredField("ViewDrawableStates").get(null); - for (int viewState : viewDrawableStatesState) - { - if (i < stateSet1Length && stateSet1[i] == viewState) - { + for (int viewState : viewDrawableStatesState) { + if (i < stateSet1Length && stateSet1[i] == viewState) { newSet[k++] = viewState; i++; } else if (j < stateSet2Length && stateSet2[j] == viewState) { newSet[k++] = viewState; j++; } - if (k > 1) { - assert(newSet[k - 1] > newSet[k - 2]); - } + assert k <= 1 || (newSet[k - 1] > newSet[k - 2]); } return newSet; - } - catch(Exception e) - { - e.printStackTrace(); - } - return null; - } - - private Class<?> getClass(String className) { - try { - return Class.forName(className); - } catch (ClassNotFoundException e) { + } catch (Exception e) { e.printStackTrace(); } return null; @@ -423,21 +289,9 @@ return tryGetAccessibleField(clazz.getSuperclass(), fieldName); } - int getField(Class<?> clazz, String fieldName) - { - try { - return clazz.getDeclaredField(fieldName).getInt(null); - } catch (Exception e) { - e.printStackTrace(); - } - return -1; - } - - JSONObject getColorStateList(ColorStateList colorList) - { + JSONObject getColorStateList(ColorStateList colorList) { JSONObject json = new JSONObject(); - try - { + try { json.put("EMPTY_STATE_SET", colorList.getColorForState(EMPTY_STATE_SET, 0)); json.put("WINDOW_FOCUSED_STATE_SET", colorList.getColorForState(WINDOW_FOCUSED_STATE_SET, 0)); json.put("SELECTED_STATE_SET", colorList.getColorForState(SELECTED_STATE_SET, 0)); @@ -477,150 +331,70 @@ return json; } - final int [] DrawableStates ={android.R.attr.state_active, android.R.attr.state_checked - , android.R.attr.state_enabled, android.R.attr.state_focused - , android.R.attr.state_pressed, android.R.attr.state_selected - , android.R.attr.state_window_focused, 16908288, 16843597, 16843518, 16843547}; - final String[] DrawableStatesLabels = {"active", "checked", "enabled", "focused", "pressed", "selected", "window_focused", "background", "multiline", "activated", "accelerated"}; - final String[] DisableDrawableStatesLabels = {"inactive", "unchecked", "disabled", "not_focused", "no_pressed", "unselected", "window_not_focused", "background", "multiline", "activated", "accelerated"}; - - String getFileName(String file, String[] states) - { - for (String state: states) - file+="__"+state; - return file; - } - - String getStatesName(String[] states) - { - String statesName=""; - for (String state: states) - { - if (statesName.length()>0) - statesName+="__"; - statesName += state; - } - return statesName; - } - - void addDrawableItemIfNotExists(JSONObject json, ArrayList<Integer> list, Drawable item, String[] states, String filename) - { - for (Integer it : list) - { - if (it.equals(item.hashCode())) - return; - } - list.add(item.hashCode()); - try { - json.put(getStatesName(states), getDrawable(item, getFileName(filename, states), null)); - } catch (JSONException e) { - e.printStackTrace(); - } - } - - void addSolution(String filename, JSONObject json, int c, Drawable drawable, ArrayList<Integer> drawableList, int u) - { - int pos=0; - int states[] = new int[c]; - String [] statesText = new String[c]; - - for (int n= 0;u > 0;++n, u>>= 1) - if ((u & 1) > 0) - { - statesText[pos]=DrawableStatesLabels[n]; - states[pos++]=DrawableStates[n]; - } - drawable.setState(states); - addDrawableItemIfNotExists(json, drawableList, drawable.getCurrent(), statesText, filename); - } - - int bitCount(int u) - { - int n; - for (n= 0;u > 0;++n, u&= (u - 1)); - return n; - } - - JSONObject getStatesList(int [] states) throws JSONException - { + JSONObject getStatesList(int[] states) throws JSONException { JSONObject json = new JSONObject(); - for (int s : states) - { - boolean found=false; - for (int d = 0;d<DrawableStates.length;d++) - { - if (s==DrawableStates[d]) - { + for (int s : states) { + boolean found = false; + for (int d = 0; d < DrawableStates.length; d++) { + if (s == DrawableStates[d]) { json.put(DrawableStatesLabels[d], true); - found=true; + found = true; break; - } - else if (s==-DrawableStates[d]) - { + } else if (s == -DrawableStates[d]) { json.put(DrawableStatesLabels[d], false); - found=true; + found = true; break; } } - if (!found) - { - json.put("unhandled_state_"+s,s>0); + if (!found) { + json.put("unhandled_state_" + s, s > 0); } } return json; } - String getStatesName(int [] states) - { - String statesName=""; - for (int s : states) - { - boolean found=false; - for (int d = 0;d<DrawableStates.length;d++) - { - if (s==DrawableStates[d]) - { - if (statesName.length()>0) - statesName+="__"; - statesName+=DrawableStatesLabels[d]; - found=true; + String getStatesName(int[] states) { + StringBuilder statesName = new StringBuilder(); + for (int s : states) { + boolean found = false; + for (int d = 0; d < DrawableStates.length; d++) { + if (s == DrawableStates[d]) { + if (statesName.length() > 0) + statesName.append("__"); + statesName.append(DrawableStatesLabels[d]); + found = true; break; - } - else if (s==-DrawableStates[d]) - { - if (statesName.length()>0) - statesName+="__"; - statesName+=DisableDrawableStatesLabels[d]; - found=true; + } else if (s == -DrawableStates[d]) { + if (statesName.length() > 0) + statesName.append("__"); + statesName.append(DisableDrawableStatesLabels[d]); + found = true; break; } } - if (!found) - { - if (statesName.length()>0) - statesName+=";"; - statesName+=s; + if (!found) { + if (statesName.length() > 0) + statesName.append(";"); + statesName.append(s); } } - if (statesName.length()>0) - return statesName; + if (statesName.length() > 0) + return statesName.toString(); return "empty"; } - private JSONObject getLayerDrawable(Object drawable, String filename) - { + private JSONObject getLayerDrawable(Object drawable, String filename) { JSONObject json = new JSONObject(); LayerDrawable layers = (LayerDrawable) drawable; - final int nr=layers.getNumberOfLayers(); + final int nr = layers.getNumberOfLayers(); try { - JSONArray array =new JSONArray(); - for (int i = 0; i < nr; i++) - { + JSONArray array = new JSONArray(); + for (int i = 0; i < nr; i++) { int id = layers.getId(i); if (id == -1) id = i; - JSONObject layerJsonObject=getDrawable(layers.getDrawable(i), filename+"__"+id, null); + JSONObject layerJsonObject = getDrawable(layers.getDrawable(i), filename + "__" + id, null); layerJsonObject.put("id", id); array.put(layerJsonObject); } @@ -635,21 +409,23 @@ return json; } - private JSONObject getStateListDrawable(Object drawable, String filename) - { + private JSONObject getStateListDrawable(Object drawable, String filename) { JSONObject json = new JSONObject(); try { StateListDrawable stateList = (StateListDrawable) drawable; - final int numStates = (Integer) StateListDrawable.class.getMethod("getStateCount").invoke(stateList); - JSONArray array =new JSONArray(); - for (int i = 0; i < numStates; i++) - { + JSONArray array = new JSONArray(); + final int numStates; + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) + numStates = (Integer) StateListDrawable.class.getMethod("getStateCount").invoke(stateList); + else + numStates = stateList.getStateCount(); + for (int i = 0; i < numStates; i++) { JSONObject stateJson = new JSONObject(); - final Drawable d = (Drawable) StateListDrawable.class.getMethod("getStateDrawable", Integer.TYPE).invoke(stateList, i); - final int [] states = (int[]) StateListDrawable.class.getMethod("getStateSet", Integer.TYPE).invoke(stateList, i); + final Drawable d = (Drawable) StateListDrawable.class.getMethod("getStateDrawable", Integer.TYPE).invoke(stateList, i); + final int[] states = (int[]) StateListDrawable.class.getMethod("getStateSet", Integer.TYPE).invoke(stateList, i); if (states != null) stateJson.put("states", getStatesList(states)); - stateJson.put("drawable", getDrawable(d, filename+"__" + (states != null ? getStatesName(states) : ("state_pos_" + i)), null)); + stateJson.put("drawable", getDrawable(d, filename + "__" + (states != null ? getStatesName(states) : ("state_pos_" + i)), null)); array.put(stateJson); } json.put("type", "stateslist"); @@ -667,32 +443,33 @@ JSONObject json = new JSONObject(); try { json.put("type", "gradient"); - Object obj=drawable.getConstantState(); - Class<?> gradientStateClass=obj.getClass(); - json.put("shape",gradientStateClass.getField("mShape").getInt(obj)); - json.put("gradient",gradientStateClass.getField("mGradient").getInt(obj)); - GradientDrawable.Orientation orientation=(Orientation) gradientStateClass.getField("mOrientation").get(obj); - json.put("orientation",orientation.name()); - int [] intArray=(int[]) gradientStateClass.getField((Build.VERSION.SDK_INT < 23) ? "mColors" : "mGradientColors").get(obj); + Object obj = drawable.getConstantState(); + Class<?> gradientStateClass = obj.getClass(); + json.put("shape", gradientStateClass.getField("mShape").getInt(obj)); + json.put("gradient", gradientStateClass.getField("mGradient").getInt(obj)); + GradientDrawable.Orientation orientation = (Orientation) gradientStateClass.getField("mOrientation").get(obj); + if (orientation != null) + json.put("orientation", orientation.name()); + int[] intArray = (int[]) gradientStateClass.getField("mGradientColors").get(obj); if (intArray != null) - json.put("colors",getJsonArray(intArray, 0, intArray.length)); - json.put("positions",getJsonArray((float[]) gradientStateClass.getField("mPositions").get(obj))); - json.put("strokeWidth",gradientStateClass.getField("mStrokeWidth").getInt(obj)); - json.put("strokeDashWidth",gradientStateClass.getField("mStrokeDashWidth").getFloat(obj)); - json.put("strokeDashGap",gradientStateClass.getField("mStrokeDashGap").getFloat(obj)); - json.put("radius",gradientStateClass.getField("mRadius").getFloat(obj)); - float [] floatArray=(float[]) gradientStateClass.getField("mRadiusArray").get(obj); - if (floatArray!=null) - json.put("radiusArray",getJsonArray(floatArray)); - Rect rc= (Rect) gradientStateClass.getField("mPadding").get(obj); - if (rc!=null) - json.put("padding",getJsonRect(rc)); - json.put("width",gradientStateClass.getField("mWidth").getInt(obj)); - json.put("height",gradientStateClass.getField("mHeight").getInt(obj)); - json.put("innerRadiusRatio",gradientStateClass.getField("mInnerRadiusRatio").getFloat(obj)); - json.put("thicknessRatio",gradientStateClass.getField("mThicknessRatio").getFloat(obj)); - json.put("innerRadius",gradientStateClass.getField("mInnerRadius").getInt(obj)); - json.put("thickness",gradientStateClass.getField("mThickness").getInt(obj)); + json.put("colors", getJsonArray(intArray, 0, intArray.length)); + json.put("positions", getJsonArray((float[]) gradientStateClass.getField("mPositions").get(obj))); + json.put("strokeWidth", gradientStateClass.getField("mStrokeWidth").getInt(obj)); + json.put("strokeDashWidth", gradientStateClass.getField("mStrokeDashWidth").getFloat(obj)); + json.put("strokeDashGap", gradientStateClass.getField("mStrokeDashGap").getFloat(obj)); + json.put("radius", gradientStateClass.getField("mRadius").getFloat(obj)); + float[] floatArray = (float[]) gradientStateClass.getField("mRadiusArray").get(obj); + if (floatArray != null) + json.put("radiusArray", getJsonArray(floatArray)); + Rect rc = (Rect) gradientStateClass.getField("mPadding").get(obj); + if (rc != null) + json.put("padding", getJsonRect(rc)); + json.put("width", gradientStateClass.getField("mWidth").getInt(obj)); + json.put("height", gradientStateClass.getField("mHeight").getInt(obj)); + json.put("innerRadiusRatio", gradientStateClass.getField("mInnerRadiusRatio").getFloat(obj)); + json.put("thicknessRatio", gradientStateClass.getField("mThicknessRatio").getFloat(obj)); + json.put("innerRadius", gradientStateClass.getField("mInnerRadius").getInt(obj)); + json.put("thickness", gradientStateClass.getField("mThickness").getInt(obj)); } catch (Exception e) { e.printStackTrace(); } @@ -705,10 +482,7 @@ json.put("type", "rotate"); Object obj = drawable.getConstantState(); Class<?> rotateStateClass = obj.getClass(); - if (Build.VERSION.SDK_INT < 23) - json.put("drawable", getDrawable(getAccessibleField(rotateStateClass, "mDrawable").get(obj), filename, null)); - else - json.put("drawable", getDrawable(drawable.getClass().getMethod("getDrawable").invoke(drawable), filename, null)); + json.put("drawable", getDrawable(drawable.getClass().getMethod("getDrawable").invoke(drawable), filename, null)); json.put("pivotX", getAccessibleField(rotateStateClass, "mPivotX").getFloat(obj)); json.put("pivotXRel", getAccessibleField(rotateStateClass, "mPivotXRel").getBoolean(obj)); json.put("pivotY", getAccessibleField(rotateStateClass, "mPivotY").getFloat(obj)); @@ -728,11 +502,10 @@ json.put("oneshot", drawable.isOneShot()); final int count = drawable.getNumberOfFrames(); JSONArray frames = new JSONArray(); - for (int i = 0; i < count; ++i) - { + for (int i = 0; i < count; ++i) { JSONObject frame = new JSONObject(); frame.put("duration", drawable.getDuration(i)); - frame.put("drawable", getDrawable(drawable.getFrame(i), filename+"__"+i, null)); + frame.put("drawable", getDrawable(drawable.getFrame(i), filename + "__" + i, null)); frames.put(frame); } json.put("frames", frames); @@ -742,8 +515,7 @@ return json; } - private JSONObject getJsonRect(Rect rect) throws JSONException - { + private JSONObject getJsonRect(Rect rect) throws JSONException { JSONObject jsonRect = new JSONObject(); jsonRect.put("left", rect.left); jsonRect.put("top", rect.top); @@ -753,26 +525,23 @@ } - private JSONArray getJsonArray(int[] array, int pos, int len) - { + private JSONArray getJsonArray(int[] array, int pos, int len) { JSONArray a = new JSONArray(); - final int l = pos+len; - for (int i=pos; i<l;i++) + final int l = pos + len; + for (int i = pos; i < l; i++) a.put(array[i]); return a; } - private JSONArray getJsonArray(float[] array) throws JSONException - { + private JSONArray getJsonArray(float[] array) throws JSONException { JSONArray a = new JSONArray(); if (array != null) - for (float val: array) + for (float val : array) a.put(val); return a; } - private JSONObject getJsonChunkInfo(int[] chunkData) throws JSONException - { + private JSONObject getJsonChunkInfo(int[] chunkData) throws JSONException { JSONObject jsonRect = new JSONObject(); if (chunkData == null) return jsonRect; @@ -783,40 +552,31 @@ return jsonRect; } - private JSONObject findPatchesMarings(Drawable d) throws JSONException, NoSuchFieldException, IllegalAccessException - { + private JSONObject findPatchesMarings(Drawable d) throws JSONException, IllegalAccessException { NinePatch np; Field f = tryGetAccessibleField(NinePatchDrawable.class, "mNinePatch"); if (f != null) { np = (NinePatch) f.get(d); } else { Object state = getAccessibleField(NinePatchDrawable.class, "mNinePatchState").get(d); - np = (NinePatch) getAccessibleField(state.getClass(), "mNinePatch").get(state); + np = (NinePatch) getAccessibleField(Objects.requireNonNull(state).getClass(), "mNinePatch").get(state); } - return getJsonChunkInfo(extractNativeChunkInfo20(getAccessibleField(np.getClass(), "mNativeChunk").getLong(np))); - } - - class DrawableCache - { - public DrawableCache(JSONObject json, Object drawable) - { - object = json; - this.drawable = drawable; - } - JSONObject object; - Object drawable; + return getJsonChunkInfo(extractNativeChunkInfo20(getAccessibleField(Objects.requireNonNull(np).getClass(), "mNativeChunk").getLong(np))); } - private HashMap<String, DrawableCache> m_drawableCache = new HashMap<String, DrawableCache>(); - private JSONObject getRippleDrawable(Object drawable, String filename, Rect padding) - { + private JSONObject getRippleDrawable(Object drawable, String filename, Rect padding) { JSONObject json = getLayerDrawable(drawable, filename); - JSONObject ripple = new JSONObject(); + JSONObject ripple = new JSONObject(); try { + Class<?> rippleDrawableClass = Class.forName("android.graphics.drawable.RippleDrawable"); final Object mState = getAccessibleField(rippleDrawableClass, "mState").get(drawable); - ripple.put("mask", getDrawable((Drawable)getAccessibleField(rippleDrawableClass, "mMask").get(drawable), filename, padding)); - ripple.put("maxRadius", getAccessibleField(mState.getClass(), "mMaxRadius").getInt(mState)); - ripple.put("color", getColorStateList((ColorStateList)getAccessibleField(mState.getClass(), "mColor").get(mState))); + ripple.put("mask", getDrawable((Drawable) getAccessibleField(rippleDrawableClass, "mMask").get(drawable), filename, padding)); + if (mState != null) { + ripple.put("maxRadius", getAccessibleField(mState.getClass(), "mMaxRadius").getInt(mState)); + ColorStateList color = (ColorStateList) getAccessibleField(mState.getClass(), "mColor").get(mState); + if (color != null) + ripple.put("color", getColorStateList(color)); + } json.put("ripple", ripple); } catch (Exception e) { e.printStackTrace(); @@ -824,32 +584,31 @@ return json; } - private HashMap<Long, Long> getStateTransitions(Object sa) throws Exception - { - HashMap<Long, Long> transitions = new HashMap<Long, Long>(); + private HashMap<Long, Long> getStateTransitions(Object sa) throws Exception { + HashMap<Long, Long> transitions = new HashMap<>(); final int sz = getAccessibleField(sa.getClass(), "mSize").getInt(sa); long[] keys = (long[]) getAccessibleField(sa.getClass(), "mKeys").get(sa); long[] values = (long[]) getAccessibleField(sa.getClass(), "mValues").get(sa); for (int i = 0; i < sz; i++) { - transitions.put(keys[i], values[i]); + if (keys != null && values != null) + transitions.put(keys[i], values[i]); } return transitions; } - private HashMap<Integer, Integer> getStateIds(Object sa) throws Exception - { - HashMap<Integer, Integer> states = new HashMap<Integer, Integer>(); + private HashMap<Integer, Integer> getStateIds(Object sa) throws Exception { + HashMap<Integer, Integer> states = new HashMap<>(); final int sz = getAccessibleField(sa.getClass(), "mSize").getInt(sa); int[] keys = (int[]) getAccessibleField(sa.getClass(), "mKeys").get(sa); int[] values = (int[]) getAccessibleField(sa.getClass(), "mValues").get(sa); for (int i = 0; i < sz; i++) { - states.put(keys[i], values[i]); + if (keys != null && values != null) + states.put(keys[i], values[i]); } return states; } - private int findStateIndex(int id, HashMap<Integer, Integer> stateIds) - { + private int findStateIndex(int id, HashMap<Integer, Integer> stateIds) { for (Map.Entry<Integer, Integer> s : stateIds.entrySet()) { if (id == s.getValue()) return s.getKey(); @@ -857,27 +616,30 @@ return -1; } - private JSONObject getAnimatedStateListDrawable(Object drawable, String filename) - { + private JSONObject getAnimatedStateListDrawable(Object drawable, String filename) { JSONObject json = getStateListDrawable(drawable, filename); try { + Class<?> animatedStateListDrawableClass = Class.forName("android.graphics.drawable.AnimatedStateListDrawable"); Object state = getAccessibleField(animatedStateListDrawableClass, "mState").get(drawable); - HashMap<Integer, Integer> stateIds = getStateIds(getAccessibleField(state.getClass(), "mStateIds").get(state)); - HashMap<Long, Long> transitions = getStateTransitions(getAccessibleField(state.getClass(), "mTransitions").get(state)); - - for (Map.Entry<Long, Long> t : transitions.entrySet()) { - final int toState = findStateIndex(t.getKey().intValue(), stateIds); - final int fromState = findStateIndex((int) (t.getKey() >> 32), stateIds); - - JSONObject transition = new JSONObject(); - transition.put("from", fromState); - transition.put("to", toState); - transition.put("reverse", (t.getValue() >> 32) != 0); - - JSONArray stateslist = json.getJSONArray("stateslist"); - JSONObject stateobj = stateslist.getJSONObject(t.getValue().intValue()); - stateobj.put("transition", transition); + if (state != null) { + Class<?> stateClass = state.getClass(); + HashMap<Integer, Integer> stateIds = getStateIds(Objects.requireNonNull(getAccessibleField(stateClass, "mStateIds").get(state))); + HashMap<Long, Long> transitions = getStateTransitions(Objects.requireNonNull(getAccessibleField(stateClass, "mTransitions").get(state))); + + for (Map.Entry<Long, Long> t : transitions.entrySet()) { + final int toState = findStateIndex(t.getKey().intValue(), stateIds); + final int fromState = findStateIndex((int) (t.getKey() >> 32), stateIds); + + JSONObject transition = new JSONObject(); + transition.put("from", fromState); + transition.put("to", toState); + transition.put("reverse", (t.getValue() >> 32) != 0); + + JSONArray stateslist = json.getJSONArray("stateslist"); + JSONObject stateobj = stateslist.getJSONObject(t.getValue().intValue()); + stateobj.put("transition", transition); + } } } catch (Exception e) { e.printStackTrace(); @@ -885,21 +647,22 @@ return json; } - private JSONObject getVPath(Object path) throws Exception - { + private JSONObject getVPath(Object path) throws Exception { JSONObject json = new JSONObject(); final Class<?> pathClass = path.getClass(); json.put("type", "path"); json.put("name", tryGetAccessibleField(pathClass, "mPathName").get(path)); Object[] mNodes = (Object[]) tryGetAccessibleField(pathClass, "mNodes").get(path); JSONArray nodes = new JSONArray(); - for (Object n: mNodes) { - JSONObject node = new JSONObject(); - node.put("type", String.valueOf(getAccessibleField(n.getClass(), "mType").getChar(n))); - node.put("params", getJsonArray((float[])getAccessibleField(n.getClass(), "mParams").get(n))); - nodes.put(node); + if (mNodes != null) { + for (Object n : mNodes) { + JSONObject node = new JSONObject(); + node.put("type", String.valueOf(getAccessibleField(n.getClass(), "mType").getChar(n))); + node.put("params", getJsonArray((float[]) getAccessibleField(n.getClass(), "mParams").get(n))); + nodes.put(node); + } + json.put("nodes", nodes); } - json.put("nodes", nodes); json.put("isClip", (Boolean) pathClass.getMethod("isClipPath").invoke(path)); if (tryGetAccessibleField(pathClass, "mStrokeColor") == null) @@ -921,8 +684,7 @@ } @SuppressWarnings("unchecked") - private JSONObject getVGroup(Object group) throws Exception - { + private JSONObject getVGroup(Object group) throws Exception { JSONObject json = new JSONObject(); json.put("type", "group"); final Class<?> groupClass = group.getClass(); @@ -937,64 +699,63 @@ ArrayList<Object> mChildren = (ArrayList<Object>) getAccessibleField(groupClass, "mChildren").get(group); JSONArray children = new JSONArray(); - for (Object c: mChildren) { - if (groupClass.isInstance(c)) - children.put(getVGroup(c)); - else - children.put(getVPath(c)); + if (mChildren != null) { + for (Object c : mChildren) { + if (groupClass.isInstance(c)) + children.put(getVGroup(c)); + else + children.put(getVPath(c)); + } + json.put("children", children); } - json.put("children", children); return json; } - private JSONObject getVectorDrawable(Object drawable, String filename, Rect padding) - { + private JSONObject getVectorDrawable(Object drawable) { JSONObject json = new JSONObject(); try { json.put("type", "vector"); + Class<?> vectorDrawableClass = Class.forName("android.graphics.drawable.VectorDrawable"); final Object state = getAccessibleField(vectorDrawableClass, "mVectorState").get(drawable); - final Class<?> stateClass = state.getClass(); + final Class<?> stateClass = Objects.requireNonNull(state).getClass(); final ColorStateList mTint = (ColorStateList) getAccessibleField(stateClass, "mTint").get(state); if (mTint != null) { json.put("tintList", getColorStateList(mTint)); json.put("tintMode", (PorterDuff.Mode) getAccessibleField(stateClass, "mTintMode").get(state)); } final Object mVPathRenderer = getAccessibleField(stateClass, "mVPathRenderer").get(state); - final Class<?> VPathRendererClass = mVPathRenderer.getClass(); + final Class<?> VPathRendererClass = Objects.requireNonNull(mVPathRenderer).getClass(); json.put("baseWidth", getAccessibleField(VPathRendererClass, "mBaseWidth").getFloat(mVPathRenderer)); json.put("baseHeight", getAccessibleField(VPathRendererClass, "mBaseHeight").getFloat(mVPathRenderer)); json.put("viewportWidth", getAccessibleField(VPathRendererClass, "mViewportWidth").getFloat(mVPathRenderer)); json.put("viewportHeight", getAccessibleField(VPathRendererClass, "mViewportHeight").getFloat(mVPathRenderer)); json.put("rootAlpha", getAccessibleField(VPathRendererClass, "mRootAlpha").getInt(mVPathRenderer)); json.put("rootName", getAccessibleField(VPathRendererClass, "mRootName").get(mVPathRenderer)); - json.put("rootGroup", getVGroup(getAccessibleField(mVPathRenderer.getClass(), "mRootGroup").get(mVPathRenderer))); - } catch(Exception e) { + json.put("rootGroup", getVGroup(Objects.requireNonNull(getAccessibleField(VPathRendererClass, "mRootGroup").get(mVPathRenderer)))); + } catch (Exception e) { e.printStackTrace(); } return json; } - public JSONObject getDrawable(Object drawable, String filename, Rect padding) - { + public JSONObject getDrawable(Object drawable, String filename, Rect padding) { if (drawable == null || m_minimal) return null; DrawableCache dc = m_drawableCache.get(filename); - if (dc != null) - { + if (dc != null) { if (dc.drawable.equals(drawable)) return dc.object; else - Log.e(QtNative.QtTAG, "Different drawable objects points to the same file name \"" + filename +"\""); + Log.e(QtNative.QtTAG, "Different drawable objects points to the same file name \"" + filename + "\""); } JSONObject json = new JSONObject(); Bitmap bmp = null; if (drawable instanceof Bitmap) bmp = (Bitmap) drawable; - else - { + else { if (drawable instanceof BitmapDrawable) { - BitmapDrawable bitmapDrawable = (BitmapDrawable)drawable; + BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; bmp = bitmapDrawable.getBitmap(); try { json.put("gravity", bitmapDrawable.getGravity()); @@ -1009,48 +770,39 @@ } catch (Exception e) { e.printStackTrace(); } - } - else - { + } else { - if (rippleDrawableClass != null && rippleDrawableClass.isInstance(drawable)) + if (drawable instanceof RippleDrawable) return getRippleDrawable(drawable, filename, padding); - if (animatedStateListDrawableClass != null && animatedStateListDrawableClass.isInstance(drawable)) + if (drawable instanceof AnimatedStateListDrawable) return getAnimatedStateListDrawable(drawable, filename); - if (vectorDrawableClass != null && vectorDrawableClass.isInstance(drawable)) - return getVectorDrawable(drawable, filename, padding); + if (drawable instanceof VectorDrawable) + return getVectorDrawable(drawable); - if (drawable instanceof ScaleDrawable) - { - return getDrawable(((ScaleDrawable)drawable).getDrawable(), filename, null); + if (drawable instanceof ScaleDrawable) { + return getDrawable(((ScaleDrawable) drawable).getDrawable(), filename, null); } - if (drawable instanceof LayerDrawable) - { + if (drawable instanceof LayerDrawable) { return getLayerDrawable(drawable, filename); } - if (drawable instanceof StateListDrawable) - { + if (drawable instanceof StateListDrawable) { return getStateListDrawable(drawable, filename); } - if (drawable instanceof GradientDrawable) - { + if (drawable instanceof GradientDrawable) { return getGradientDrawable((GradientDrawable) drawable); } - if (drawable instanceof RotateDrawable) - { + if (drawable instanceof RotateDrawable) { return getRotateDrawable((RotateDrawable) drawable, filename); } - if (drawable instanceof AnimationDrawable) - { + if (drawable instanceof AnimationDrawable) { return getAnimationDrawable((AnimationDrawable) drawable, filename); } - if (drawable instanceof ClipDrawable) - { + if (drawable instanceof ClipDrawable) { try { json.put("type", "clipDrawable"); - Drawable.ConstantState dcs = ((ClipDrawable)drawable).getConstantState(); + Drawable.ConstantState dcs = ((ClipDrawable) drawable).getConstantState(); json.put("drawable", getDrawable(getAccessibleField(dcs.getClass(), "mDrawable").get(dcs), filename, null)); if (null != padding) json.put("padding", getJsonRect(padding)); @@ -1064,8 +816,7 @@ } return json; } - if (drawable instanceof ColorDrawable) - { + if (drawable instanceof ColorDrawable) { bmp = Bitmap.createBitmap(1, 1, Config.ARGB_8888); Drawable d = (Drawable) drawable; d.setBounds(0, 0, 1, 1); @@ -1085,36 +836,29 @@ } return json; } - if (drawable instanceof InsetDrawable) - { + if (drawable instanceof InsetDrawable) { try { - InsetDrawable d = (InsetDrawable)drawable; - // mInsetState changed to mState in Android 5.1 (22) - Object mInsetStateObject = getAccessibleField(InsetDrawable.class, (Build.VERSION.SDK_INT > 21) ? "mState" - : "mInsetState").get(d); + InsetDrawable d = (InsetDrawable) drawable; + Object mInsetStateObject = getAccessibleField(InsetDrawable.class, "mState").get(d); Rect _padding = new Rect(); boolean hasPadding = d.getPadding(_padding); - return getDrawable(getAccessibleField(mInsetStateObject.getClass(), "mDrawable").get(mInsetStateObject), filename, hasPadding ? _padding : null); + return getDrawable(getAccessibleField(Objects.requireNonNull(mInsetStateObject).getClass(), "mDrawable").get(mInsetStateObject), filename, hasPadding ? _padding : null); } catch (Exception e) { e.printStackTrace(); } - } - else - { + } else { Drawable d = (Drawable) drawable; - int w=d.getIntrinsicWidth(); - int h=d.getIntrinsicHeight(); + int w = d.getIntrinsicWidth(); + int h = d.getIntrinsicHeight(); d.setLevel(10000); - if (w<1 || h< 1) - { - w=100; - h=100; + if (w < 1 || h < 1) { + w = 100; + h = 100; } bmp = Bitmap.createBitmap(w, h, Config.ARGB_8888); d.setBounds(0, 0, w, h); d.draw(new Canvas(bmp)); - if (drawable instanceof NinePatchDrawable) - { + if (drawable instanceof NinePatchDrawable) { NinePatchDrawable npd = (NinePatchDrawable) drawable; try { json.put("type", "9patch"); @@ -1138,657 +882,690 @@ } FileOutputStream out; try { - filename = m_extractPath+filename+".png"; + filename = m_extractPath + filename + ".png"; out = new FileOutputStream(filename); - bmp.compress(Bitmap.CompressFormat.PNG, 100, out); + if (bmp != null) + bmp.compress(Bitmap.CompressFormat.PNG, 100, out); out.close(); - } catch (FileNotFoundException e) { - e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { json.put("type", "image"); json.put("path", filename); - json.put("width", bmp.getWidth()); - json.put("height", bmp.getHeight()); + if (bmp != null) { + json.put("width", bmp.getWidth()); + json.put("height", bmp.getHeight()); + } m_drawableCache.put(filename, new DrawableCache(json, drawable)); -// MinistroActivity.nativeChmode(filename, 0644); } catch (JSONException e) { e.printStackTrace(); } return json; } - public void extractViewInformations(String styleName, int styleId, JSONObject json, String qtClassName, AttributeSet attribSet) + private TypedArray obtainStyledAttributes(int styleName, int[] attributes) { - try { - int[] viewAttrs; - viewAttrs = (int[]) styleableClass.getDeclaredField("View").get(null); - TypedArray a =m_theme.obtainStyledAttributes(attribSet, viewAttrs, styleId, 0); + TypedValue typedValue = new TypedValue(); + Context ctx = new ContextThemeWrapper(m_context, m_theme); + ctx.getTheme().resolveAttribute(styleName, typedValue, true); + return ctx.obtainStyledAttributes(typedValue.data, attributes); + } + + private ArrayList<Integer> getArrayListFromIntArray(int[] attributes) { + ArrayList<Integer> sortedAttrs = new ArrayList<>(); + for (int attr : attributes) + sortedAttrs.add(attr); + return sortedAttrs; + } + + public void extractViewInformation(int styleName, JSONObject json, String qtClassName) { + extractViewInformation(styleName, json, qtClassName, null); + } + + public void extractViewInformation(int styleName, JSONObject json, String qtClassName, AttributeSet attributeSet) { + try { + TypedValue typedValue = new TypedValue(); + Context ctx = new ContextThemeWrapper(m_context, m_theme); + ctx.getTheme().resolveAttribute(styleName, typedValue, true); + + int[] attributes = new int[]{ + android.R.attr.digits, + android.R.attr.background, + android.R.attr.padding, + android.R.attr.paddingLeft, + android.R.attr.paddingTop, + android.R.attr.paddingRight, + android.R.attr.paddingBottom, + android.R.attr.scrollX, + android.R.attr.scrollY, + android.R.attr.id, + android.R.attr.tag, + android.R.attr.fitsSystemWindows, + android.R.attr.focusable, + android.R.attr.focusableInTouchMode, + android.R.attr.clickable, + android.R.attr.longClickable, + android.R.attr.saveEnabled, + android.R.attr.duplicateParentState, + android.R.attr.visibility, + android.R.attr.drawingCacheQuality, + android.R.attr.contentDescription, + android.R.attr.soundEffectsEnabled, + android.R.attr.hapticFeedbackEnabled, + android.R.attr.scrollbars, + android.R.attr.fadingEdge, + android.R.attr.scrollbarStyle, + android.R.attr.scrollbarFadeDuration, + android.R.attr.scrollbarDefaultDelayBeforeFade, + android.R.attr.scrollbarSize, + android.R.attr.scrollbarThumbHorizontal, + android.R.attr.scrollbarThumbVertical, + android.R.attr.scrollbarTrackHorizontal, + android.R.attr.scrollbarTrackVertical, + android.R.attr.isScrollContainer, + android.R.attr.keepScreenOn, + android.R.attr.filterTouchesWhenObscured, + android.R.attr.nextFocusLeft, + android.R.attr.nextFocusRight, + android.R.attr.nextFocusUp, + android.R.attr.nextFocusDown, + android.R.attr.minWidth, + android.R.attr.minHeight, + android.R.attr.onClick, + android.R.attr.overScrollMode, + android.R.attr.paddingStart, + android.R.attr.paddingEnd, + }; + + // The array must be sorted in ascending order, otherwise obtainStyledAttributes() + // might fail to find some attributes + Arrays.sort(attributes); + TypedArray array; + if (attributeSet != null) + array = m_theme.obtainStyledAttributes(attributeSet, attributes, styleName, 0); + else + array = obtainStyledAttributes(styleName, attributes); + ArrayList<Integer> sortedAttrs = getArrayListFromIntArray(attributes); if (null != qtClassName) json.put("qtClass", qtClassName); + json.put("defaultBackgroundColor", defaultBackgroundColor); json.put("defaultTextColorPrimary", defaultTextColor); - final int N = a.getIndexCount(); - for (int i = 0; i < N; i++) { - int attr = a.getIndex(i); - if (attr == View_background) - json.put("View_background", getDrawable(a.getDrawable(attr), styleName + "_View_background", null)); - else if (attr == View_padding) - json.put("View_padding", a.getDimensionPixelSize(attr, -1)); - else if (attr == View_paddingLeft) - json.put("View_paddingLeft", a.getDimensionPixelSize(attr, -1)); - else if (attr == View_paddingTop) - json.put("View_paddingTop", a.getDimensionPixelSize(attr, -1)); - else if (attr == View_paddingRight) - json.put("View_paddingRight", a.getDimensionPixelSize(attr, -1)); - else if (attr == View_paddingBottom) - json.put("View_paddingBottom", a.getDimensionPixelSize(attr, -1)); - else if (attr == View_scrollX) - json.put("View_paddingBottom", a.getDimensionPixelOffset(attr, 0)); - else if (attr == View_scrollY) - json.put("View_scrollY", a.getDimensionPixelOffset(attr, 0)); - else if (attr == View_id) - json.put("View_id", a.getResourceId(attr, -1)); - else if (attr == View_tag) - json.put("View_tag", a.getText(attr)); - else if (attr == View_fitsSystemWindows) - json.put("View_fitsSystemWindows", a.getBoolean(attr, false)); - else if (attr == View_focusable) - json.put("View_focusable", a.getBoolean(attr, false)); - else if (attr == View_focusableInTouchMode) - json.put("View_focusableInTouchMode", a.getBoolean(attr, false)); - else if (attr == View_clickable) - json.put("View_clickable", a.getBoolean(attr, false)); - else if (attr == View_longClickable) - json.put("View_longClickable", a.getBoolean(attr, false)); - else if (attr == View_saveEnabled) - json.put("View_saveEnabled", a.getBoolean(attr, true)); - else if (attr == View_duplicateParentState) - json.put("View_duplicateParentState", a.getBoolean(attr, false)); - else if (attr == View_visibility) - json.put("View_visibility", a.getInt(attr, 0)); - else if (attr == View_drawingCacheQuality) - json.put("View_drawingCacheQuality", a.getInt(attr, 0)); - else if (attr == View_drawingCacheQuality) - json.put("View_contentDescription", a.getString(attr)); - else if (attr == View_soundEffectsEnabled) - json.put("View_soundEffectsEnabled", a.getBoolean(attr, true)); - else if (attr == View_hapticFeedbackEnabled) - json.put("View_hapticFeedbackEnabled", a.getBoolean(attr, true)); - else if (attr == View_scrollbars) - json.put("View_scrollbars", a.getInt(attr, 0)); - else if (attr == View_fadingEdge) - json.put("View_fadingEdge", a.getInt(attr, 0)); - else if (attr == View_scrollbarStyle) - json.put("View_scrollbarStyle", a.getInt(attr, 0)); - else if (attr == View_scrollbarFadeDuration) - json.put("View_scrollbarFadeDuration", a.getInt(attr, 0)); - else if (attr == View_scrollbarDefaultDelayBeforeFade) - json.put("View_scrollbarDefaultDelayBeforeFade", a.getInt(attr, 0)); - else if (attr == View_scrollbarSize) - json.put("View_scrollbarSize", a.getDimensionPixelSize(attr, -1)); - else if (attr == View_scrollbarThumbHorizontal) - json.put("View_scrollbarThumbHorizontal", getDrawable(a.getDrawable(attr), styleName + "_View_scrollbarThumbHorizontal", null)); - else if (attr == View_scrollbarThumbVertical) - json.put("View_scrollbarThumbVertical", getDrawable(a.getDrawable(attr), styleName + "_View_scrollbarThumbVertical", null)); - else if (attr == View_scrollbarTrackHorizontal) - json.put("View_scrollbarTrackHorizontal", getDrawable(a.getDrawable(attr), styleName + "_View_scrollbarTrackHorizontal", null)); - else if (attr == View_scrollbarTrackVertical) - json.put("View_scrollbarTrackVertical", getDrawable(a.getDrawable(attr), styleName + "_View_scrollbarTrackVertical", null)); - else if (attr == View_isScrollContainer) - json.put("View_isScrollContainer", a.getBoolean(attr, false)); - else if (attr == View_keepScreenOn) - json.put("View_keepScreenOn", a.getBoolean(attr, false)); - else if (attr == View_filterTouchesWhenObscured) - json.put("View_filterTouchesWhenObscured", a.getBoolean(attr, false)); - else if (attr == View_nextFocusLeft) - json.put("View_nextFocusLeft", a.getResourceId(attr, -1)); - else if (attr == View_nextFocusRight) - json.put("View_nextFocusRight", a.getResourceId(attr, -1)); - else if (attr == View_nextFocusUp) - json.put("View_nextFocusUp", a.getResourceId(attr, -1)); - else if (attr == View_nextFocusDown) - json.put("View_nextFocusDown", a.getResourceId(attr, -1)); - else if (attr == View_minWidth) - json.put("View_minWidth", a.getDimensionPixelSize(attr, 0)); - else if (attr == View_minHeight) - json.put("View_minHeight", a.getDimensionPixelSize(attr, 0)); - else if (attr == View_onClick) - json.put("View_onClick", a.getString(attr)); - else if (attr == View_overScrollMode) - json.put("View_overScrollMode", a.getInt(attr, 1)); - else if (attr == View_paddingStart) - json.put("View_paddingStart", a.getDimensionPixelSize(attr, 0)); - else if (attr == View_paddingEnd) - json.put("View_paddingEnd", a.getDimensionPixelSize(attr, 0)); - } - a.recycle(); + json.put("TextView_digits", array.getText(sortedAttrs.indexOf(android.R.attr.digits))); + json.put("View_background", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.background)), styleName + "_View_background", null)); + json.put("View_padding", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.padding), -1)); + json.put("View_paddingLeft", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.paddingLeft), -1)); + json.put("View_paddingTop", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.paddingTop), -1)); + json.put("View_paddingRight", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.paddingRight), -1)); + json.put("View_paddingBottom", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.paddingBottom), -1)); + json.put("View_paddingBottom", array.getDimensionPixelOffset(sortedAttrs.indexOf(android.R.attr.scrollX), 0)); + json.put("View_scrollY", array.getDimensionPixelOffset(sortedAttrs.indexOf(android.R.attr.scrollY), 0)); + json.put("View_id", array.getResourceId(sortedAttrs.indexOf(android.R.attr.id), -1)); + json.put("View_tag", array.getText(sortedAttrs.indexOf(android.R.attr.tag))); + json.put("View_fitsSystemWindows", array.getBoolean(sortedAttrs.indexOf(android.R.attr.fitsSystemWindows), false)); + json.put("View_focusable", array.getBoolean(sortedAttrs.indexOf(android.R.attr.focusable), false)); + json.put("View_focusableInTouchMode", array.getBoolean(sortedAttrs.indexOf(android.R.attr.focusableInTouchMode), false)); + json.put("View_clickable", array.getBoolean(sortedAttrs.indexOf(android.R.attr.clickable), false)); + json.put("View_longClickable", array.getBoolean(sortedAttrs.indexOf(android.R.attr.longClickable), false)); + json.put("View_saveEnabled", array.getBoolean(sortedAttrs.indexOf(android.R.attr.saveEnabled), true)); + json.put("View_duplicateParentState", array.getBoolean(sortedAttrs.indexOf(android.R.attr.duplicateParentState), false)); + json.put("View_visibility", array.getInt(sortedAttrs.indexOf(android.R.attr.visibility), 0)); + json.put("View_drawingCacheQuality", array.getInt(sortedAttrs.indexOf(android.R.attr.drawingCacheQuality), 0)); + json.put("View_contentDescription", array.getString(sortedAttrs.indexOf(android.R.attr.contentDescription))); + json.put("View_soundEffectsEnabled", array.getBoolean(sortedAttrs.indexOf(android.R.attr.soundEffectsEnabled), true)); + json.put("View_hapticFeedbackEnabled", array.getBoolean(sortedAttrs.indexOf(android.R.attr.hapticFeedbackEnabled), true)); + json.put("View_scrollbars", array.getInt(sortedAttrs.indexOf(android.R.attr.scrollbars), 0)); + json.put("View_fadingEdge", array.getInt(sortedAttrs.indexOf(android.R.attr.fadingEdge), 0)); + json.put("View_scrollbarStyle", array.getInt(sortedAttrs.indexOf(android.R.attr.scrollbarStyle), 0)); + json.put("View_scrollbarFadeDuration", array.getInt(sortedAttrs.indexOf(android.R.attr.scrollbarFadeDuration), 0)); + json.put("View_scrollbarDefaultDelayBeforeFade", array.getInt(sortedAttrs.indexOf(android.R.attr.scrollbarDefaultDelayBeforeFade), 0)); + json.put("View_scrollbarSize", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.scrollbarSize), -1)); + json.put("View_scrollbarThumbHorizontal", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.scrollbarThumbHorizontal)), styleName + "_View_scrollbarThumbHorizontal", null)); + json.put("View_scrollbarThumbVertical", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.scrollbarThumbVertical)), styleName + "_View_scrollbarThumbVertical", null)); + json.put("View_scrollbarTrackHorizontal", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.scrollbarTrackHorizontal)), styleName + "_View_scrollbarTrackHorizontal", null)); + json.put("View_scrollbarTrackVertical", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.scrollbarTrackVertical)), styleName + "_View_scrollbarTrackVertical", null)); + json.put("View_isScrollContainer", array.getBoolean(sortedAttrs.indexOf(android.R.attr.isScrollContainer), false)); + json.put("View_keepScreenOn", array.getBoolean(sortedAttrs.indexOf(android.R.attr.keepScreenOn), false)); + json.put("View_filterTouchesWhenObscured", array.getBoolean(sortedAttrs.indexOf(android.R.attr.filterTouchesWhenObscured), false)); + json.put("View_nextFocusLeft", array.getResourceId(sortedAttrs.indexOf(android.R.attr.nextFocusLeft), -1)); + json.put("View_nextFocusRight", array.getResourceId(sortedAttrs.indexOf(android.R.attr.nextFocusRight), -1)); + json.put("View_nextFocusUp", array.getResourceId(sortedAttrs.indexOf(android.R.attr.nextFocusUp), -1)); + json.put("View_nextFocusDown", array.getResourceId(sortedAttrs.indexOf(android.R.attr.nextFocusDown), -1)); + json.put("View_minWidth", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.minWidth), 0)); + json.put("View_minHeight", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.minHeight), 0)); + json.put("View_onClick", array.getString(sortedAttrs.indexOf(android.R.attr.onClick))); + json.put("View_overScrollMode", array.getInt(sortedAttrs.indexOf(android.R.attr.overScrollMode), 1)); + json.put("View_paddingStart", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.paddingStart), 0)); + json.put("View_paddingEnd", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.paddingEnd), 0)); + array.recycle(); } catch (Exception e) { e.printStackTrace(); } } - public JSONObject extractTextAppearance(int styleId) - { + public JSONObject extractTextAppearance(int styleName) + { + return extractTextAppearance(styleName, false); + } + + @SuppressLint("ResourceType") + public JSONObject extractTextAppearance(int styleName, boolean subStyle) + { + final int[] attributes = new int[]{ + android.R.attr.textSize, + android.R.attr.textStyle, + android.R.attr.textColor, + android.R.attr.typeface, + android.R.attr.textAllCaps, + android.R.attr.textColorHint, + android.R.attr.textColorLink, + android.R.attr.textColorHighlight + }; + Arrays.sort(attributes); + TypedArray array; + if (subStyle) + array = m_theme.obtainStyledAttributes(styleName, attributes); + else + array = obtainStyledAttributes(styleName, attributes); + ArrayList<Integer> sortedAttrs = getArrayListFromIntArray(attributes); JSONObject json = new JSONObject(); - try - { - TypedArray a = m_theme.obtainStyledAttributes(styleId, (int[]) styleableClass.getDeclaredField("TextAppearance").get(null)); - int n = a.getIndexCount(); - for (int i = 0; i < n; i++) - { - int attr = a.getIndex(i); - if (attr == TextAppearance_textColorHighlight) - json.put("TextAppearance_textColorHighlight", a.getColor(attr, 0)); - else if (attr == TextAppearance_textColor) - json.put("TextAppearance_textColor", getColorStateList(a.getColorStateList(attr))); - else if (attr == TextAppearance_textColorHint) - json.put("TextAppearance_textColorHint", getColorStateList(a.getColorStateList(attr))); - else if (attr == TextAppearance_textColorLink) - json.put("TextAppearance_textColorLink", getColorStateList(a.getColorStateList(attr))); - else if (attr == TextAppearance_textSize) - json.put("TextAppearance_textSize", a.getDimensionPixelSize(attr, 15)); - else if (attr == TextAppearance_typeface) - json.put("TextAppearance_typeface", a.getInt(attr, -1)); - else if (attr == TextAppearance_textStyle) - json.put("TextAppearance_textStyle", a.getInt(attr, -1)); - else if (attr == TextAppearance_textAllCaps) - json.put("TextAppearance_textAllCaps", a.getBoolean(attr, false)); - } - a.recycle(); - } - catch (Exception e) - { + try { + int attr = sortedAttrs.indexOf(android.R.attr.textSize); + if (array.hasValue(attr)) + json.put("TextAppearance_textSize", array.getDimensionPixelSize(attr, 15)); + attr = sortedAttrs.indexOf(android.R.attr.textStyle); + if (array.hasValue(attr)) + json.put("TextAppearance_textStyle", array.getInt(attr, -1)); + ColorStateList color = array.getColorStateList(sortedAttrs.indexOf(android.R.attr.textColor)); + if (color != null) + json.put("TextAppearance_textColor", getColorStateList(color)); + attr = sortedAttrs.indexOf(android.R.attr.typeface); + if (array.hasValue(attr)) + json.put("TextAppearance_typeface", array.getInt(attr, -1)); + attr = sortedAttrs.indexOf(android.R.attr.textAllCaps); + if (array.hasValue(attr)) + json.put("TextAppearance_textAllCaps", array.getBoolean(attr, false)); + color = array.getColorStateList(sortedAttrs.indexOf(android.R.attr.textColorHint)); + if (color != null) + json.put("TextAppearance_textColorHint", getColorStateList(color)); + color = array.getColorStateList(sortedAttrs.indexOf(android.R.attr.textColorLink)); + if (color != null) + json.put("TextAppearance_textColorLink", getColorStateList(color)); + attr = sortedAttrs.indexOf(android.R.attr.textColorHighlight); + if (array.hasValue(attr)) + json.put("TextAppearance_textColorHighlight", array.getColor(attr, 0)); + array.recycle(); + } catch (Exception e) { e.printStackTrace(); } return json; } - public JSONObject extractTextAppearanceInformations(String styleName, String qtClass, AttributeSet attribSet, int textAppearance) - { + public JSONObject extractTextAppearanceInformation(int styleName, String qtClass, AttributeSet attributeSet) { + return extractTextAppearanceInformation(styleName, qtClass, android.R.attr.textAppearance, attributeSet); + } + + public JSONObject extractTextAppearanceInformation(int styleName, String qtClass) { + return extractTextAppearanceInformation(styleName, qtClass, android.R.attr.textAppearance, null); + } + + public JSONObject extractTextAppearanceInformation(int styleName, String qtClass, int textAppearance, AttributeSet attributeSet) { JSONObject json = new JSONObject(); - try - { - int textColorHighlight = 0; // - ColorStateList textColor = null; // - ColorStateList textColorHint = null; // - ColorStateList textColorLink = null; // - int textSize = 15; // - int typefaceIndex = -1; // + extractViewInformation(styleName, json, qtClass, attributeSet); + + if (textAppearance == -1) + textAppearance = android.R.attr.textAppearance; + + try { + TypedValue typedValue = new TypedValue(); + Context ctx = new ContextThemeWrapper(m_context, m_theme); + ctx.getTheme().resolveAttribute(styleName, typedValue, true); + + // Get textAppearance values + int[] textAppearanceAttr = new int[]{textAppearance}; + TypedArray textAppearanceArray = ctx.obtainStyledAttributes(typedValue.data, textAppearanceAttr); + int textAppearanceId = textAppearanceArray.getResourceId(0, -1); + textAppearanceArray.recycle(); + + int textSize = 15; int styleIndex = -1; + int typefaceIndex = -1; + int textColorHighlight = 0; boolean allCaps = false; - Class<?> attrClass= Class.forName("android.R$attr"); - int styleId = attrClass.getDeclaredField(styleName).getInt(null); - - extractViewInformations(styleName, styleId, json, qtClass, attribSet); + if (textAppearanceId != -1) { + int[] attributes = new int[]{ + android.R.attr.textSize, + android.R.attr.textStyle, + android.R.attr.typeface, + android.R.attr.textAllCaps, + android.R.attr.textColorHighlight + }; + Arrays.sort(attributes); + TypedArray array = m_theme.obtainStyledAttributes(textAppearanceId, attributes); + ArrayList<Integer> sortedAttrs = getArrayListFromIntArray(attributes); + + textSize = array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.textSize), 15); + styleIndex = array.getInt(sortedAttrs.indexOf(android.R.attr.textStyle), -1); + typefaceIndex = array.getInt(sortedAttrs.indexOf(android.R.attr.typeface), -1); + textColorHighlight = array.getColor(sortedAttrs.indexOf(android.R.attr.textColorHighlight), 0); + allCaps = array.getBoolean(sortedAttrs.indexOf(android.R.attr.textAllCaps), false); + array.recycle(); + } + // Get TextView values + int[] attributes = new int[]{ + android.R.attr.editable, + android.R.attr.inputMethod, + android.R.attr.numeric, + android.R.attr.digits, + android.R.attr.phoneNumber, + android.R.attr.autoText, + android.R.attr.capitalize, + android.R.attr.bufferType, + android.R.attr.selectAllOnFocus, + android.R.attr.autoLink, + android.R.attr.linksClickable, + android.R.attr.drawableLeft, + android.R.attr.drawableTop, + android.R.attr.drawableRight, + android.R.attr.drawableBottom, + android.R.attr.drawableStart, + android.R.attr.drawableEnd, + android.R.attr.maxLines, + android.R.attr.drawablePadding, + android.R.attr.textCursorDrawable, + android.R.attr.maxHeight, + android.R.attr.lines, + android.R.attr.height, + android.R.attr.minLines, + android.R.attr.minHeight, + android.R.attr.maxEms, + android.R.attr.maxWidth, + android.R.attr.ems, + android.R.attr.width, + android.R.attr.minEms, + android.R.attr.minWidth, + android.R.attr.gravity, + android.R.attr.hint, + android.R.attr.text, + android.R.attr.scrollHorizontally, + android.R.attr.singleLine, + android.R.attr.ellipsize, + android.R.attr.marqueeRepeatLimit, + android.R.attr.includeFontPadding, + android.R.attr.cursorVisible, + android.R.attr.maxLength, + android.R.attr.textScaleX, + android.R.attr.freezesText, + android.R.attr.shadowColor, + android.R.attr.shadowDx, + android.R.attr.shadowDy, + android.R.attr.shadowRadius, + android.R.attr.enabled, + android.R.attr.textColorHighlight, + android.R.attr.textColor, + android.R.attr.textColorHint, + android.R.attr.textColorLink, + android.R.attr.textSize, + android.R.attr.typeface, + android.R.attr.textStyle, + android.R.attr.password, + android.R.attr.lineSpacingExtra, + android.R.attr.lineSpacingMultiplier, + android.R.attr.inputType, + android.R.attr.imeOptions, + android.R.attr.imeActionLabel, + android.R.attr.imeActionId, + android.R.attr.privateImeOptions, + android.R.attr.textSelectHandleLeft, + android.R.attr.textSelectHandleRight, + android.R.attr.textSelectHandle, + android.R.attr.textIsSelectable, + android.R.attr.textAllCaps + }; + + // The array must be sorted in ascending order, otherwise obtainStyledAttributes() + // might fail to find some attributes + Arrays.sort(attributes); + TypedArray array = ctx.obtainStyledAttributes(typedValue.data, attributes); + ArrayList<Integer> sortedAttrs = getArrayListFromIntArray(attributes); + + textSize = array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.textSize), textSize); + styleIndex = array.getInt(sortedAttrs.indexOf(android.R.attr.textStyle), styleIndex); + typefaceIndex = array.getInt(sortedAttrs.indexOf(android.R.attr.typeface), typefaceIndex); + textColorHighlight = array.getColor(sortedAttrs.indexOf(android.R.attr.textColorHighlight), textColorHighlight); + allCaps = array.getBoolean(sortedAttrs.indexOf(android.R.attr.textAllCaps), allCaps); + + ColorStateList textColor = array.getColorStateList(sortedAttrs.indexOf(android.R.attr.textColor)); + ColorStateList textColorHint = array.getColorStateList(sortedAttrs.indexOf(android.R.attr.textColorHint)); + ColorStateList textColorLink = array.getColorStateList(sortedAttrs.indexOf(android.R.attr.textColorLink)); + + json.put("TextAppearance_textSize", textSize); + json.put("TextAppearance_textStyle", styleIndex); + json.put("TextAppearance_typeface", typefaceIndex); + json.put("TextAppearance_textColorHighlight", textColorHighlight); + json.put("TextAppearance_textAllCaps", allCaps); + if (textColor != null) + json.put("TextAppearance_textColor", getColorStateList(textColor)); + if (textColorHint != null) + json.put("TextAppearance_textColorHint", getColorStateList(textColorHint)); + if (textColorLink != null) + json.put("TextAppearance_textColorLink", getColorStateList(textColorLink)); + + json.put("TextView_editable", array.getBoolean(sortedAttrs.indexOf(android.R.attr.editable), false)); + json.put("TextView_inputMethod", array.getText(sortedAttrs.indexOf(android.R.attr.inputMethod))); + json.put("TextView_numeric", array.getInt(sortedAttrs.indexOf(android.R.attr.numeric), 0)); + json.put("TextView_digits", array.getText(sortedAttrs.indexOf(android.R.attr.digits))); + json.put("TextView_phoneNumber", array.getBoolean(sortedAttrs.indexOf(android.R.attr.phoneNumber), false)); + json.put("TextView_autoText", array.getBoolean(sortedAttrs.indexOf(android.R.attr.autoText), false)); + json.put("TextView_capitalize", array.getInt(sortedAttrs.indexOf(android.R.attr.capitalize), -1)); + json.put("TextView_bufferType", array.getInt(sortedAttrs.indexOf(android.R.attr.bufferType), 0)); + json.put("TextView_selectAllOnFocus", array.getBoolean(sortedAttrs.indexOf(android.R.attr.selectAllOnFocus), false)); + json.put("TextView_autoLink", array.getInt(sortedAttrs.indexOf(android.R.attr.autoLink), 0)); + json.put("TextView_linksClickable", array.getBoolean(sortedAttrs.indexOf(android.R.attr.linksClickable), true)); + json.put("TextView_drawableLeft", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.drawableLeft)), styleName + "_TextView_drawableLeft", null)); + json.put("TextView_drawableTop", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.drawableTop)), styleName + "_TextView_drawableTop", null)); + json.put("TextView_drawableRight", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.drawableRight)), styleName + "_TextView_drawableRight", null)); + json.put("TextView_drawableBottom", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.drawableBottom)), styleName + "_TextView_drawableBottom", null)); + json.put("TextView_drawableStart", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.drawableStart)), styleName + "_TextView_drawableStart", null)); + json.put("TextView_drawableEnd", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.drawableEnd)), styleName + "_TextView_drawableEnd", null)); + json.put("TextView_maxLines", array.getInt(sortedAttrs.indexOf(android.R.attr.maxLines), -1)); + json.put("TextView_drawablePadding", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.drawablePadding), 0)); - int[] textViewAttrs=(int[]) styleableClass.getDeclaredField("TextView").get(null); - TypedArray a =m_theme.obtainStyledAttributes(null, textViewAttrs, styleId, 0); + try { + json.put("TextView_textCursorDrawable", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.textCursorDrawable)), styleName + "_TextView_textCursorDrawable", null)); + } catch (Exception e_) { + json.put("TextView_textCursorDrawable", getDrawable(m_context.getResources().getDrawable(array.getResourceId(sortedAttrs.indexOf(android.R.attr.textCursorDrawable), 0), m_theme), styleName + "_TextView_textCursorDrawable", null)); + } + + json.put("TextView_maxLines", array.getInt(sortedAttrs.indexOf(android.R.attr.maxLines), -1)); + json.put("TextView_maxHeight", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.maxHeight), -1)); + json.put("TextView_lines", array.getInt(sortedAttrs.indexOf(android.R.attr.lines), -1)); + json.put("TextView_height", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.height), -1)); + json.put("TextView_minLines", array.getInt(sortedAttrs.indexOf(android.R.attr.minLines), -1)); + json.put("TextView_minHeight", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.minHeight), -1)); + json.put("TextView_maxEms", array.getInt(sortedAttrs.indexOf(android.R.attr.maxEms), -1)); + json.put("TextView_maxWidth", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.maxWidth), -1)); + json.put("TextView_ems", array.getInt(sortedAttrs.indexOf(android.R.attr.ems), -1)); + json.put("TextView_width", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.width), -1)); + json.put("TextView_minEms", array.getInt(sortedAttrs.indexOf(android.R.attr.minEms), -1)); + json.put("TextView_minWidth", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.minWidth), -1)); + json.put("TextView_gravity", array.getInt(sortedAttrs.indexOf(android.R.attr.gravity), -1)); + json.put("TextView_hint", array.getText(sortedAttrs.indexOf(android.R.attr.hint))); + json.put("TextView_text", array.getText(sortedAttrs.indexOf(android.R.attr.text))); + json.put("TextView_scrollHorizontally", array.getBoolean(sortedAttrs.indexOf(android.R.attr.scrollHorizontally), false)); + json.put("TextView_singleLine", array.getBoolean(sortedAttrs.indexOf(android.R.attr.singleLine), false)); + json.put("TextView_ellipsize", array.getInt(sortedAttrs.indexOf(android.R.attr.ellipsize), -1)); + json.put("TextView_marqueeRepeatLimit", array.getInt(sortedAttrs.indexOf(android.R.attr.marqueeRepeatLimit), 3)); + json.put("TextView_includeFontPadding", array.getBoolean(sortedAttrs.indexOf(android.R.attr.includeFontPadding), true)); + json.put("TextView_cursorVisible", array.getBoolean(sortedAttrs.indexOf(android.R.attr.maxLength), true)); + json.put("TextView_maxLength", array.getInt(sortedAttrs.indexOf(android.R.attr.maxLength), -1)); + json.put("TextView_textScaleX", array.getFloat(sortedAttrs.indexOf(android.R.attr.textScaleX), 1.0f)); + json.put("TextView_freezesText", array.getBoolean(sortedAttrs.indexOf(android.R.attr.freezesText), false)); + json.put("TextView_shadowColor", array.getInt(sortedAttrs.indexOf(android.R.attr.shadowColor), 0)); + json.put("TextView_shadowDx", array.getFloat(sortedAttrs.indexOf(android.R.attr.shadowDx), 0)); + json.put("TextView_shadowDy", array.getFloat(sortedAttrs.indexOf(android.R.attr.shadowDy), 0)); + json.put("TextView_shadowRadius", array.getFloat(sortedAttrs.indexOf(android.R.attr.shadowRadius), 0)); + json.put("TextView_enabled", array.getBoolean(sortedAttrs.indexOf(android.R.attr.enabled), true)); + json.put("TextView_password", array.getBoolean(sortedAttrs.indexOf(android.R.attr.password), false)); + json.put("TextView_lineSpacingExtra", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.lineSpacingExtra), 0)); + json.put("TextView_lineSpacingMultiplier", array.getFloat(sortedAttrs.indexOf(android.R.attr.lineSpacingMultiplier), 1.0f)); + json.put("TextView_inputType", array.getInt(sortedAttrs.indexOf(android.R.attr.inputType), EditorInfo.TYPE_NULL)); + json.put("TextView_imeOptions", array.getInt(sortedAttrs.indexOf(android.R.attr.imeOptions), EditorInfo.IME_NULL)); + json.put("TextView_imeActionLabel", array.getText(sortedAttrs.indexOf(android.R.attr.imeActionLabel))); + json.put("TextView_imeActionId", array.getInt(sortedAttrs.indexOf(android.R.attr.imeActionId), 0)); + json.put("TextView_privateImeOptions", array.getString(sortedAttrs.indexOf(android.R.attr.privateImeOptions))); - TypedArray appearance = null; - if (-1==textAppearance) - textAppearance = a.getResourceId(styleableClass.getDeclaredField("TextView_textAppearance").getInt(null), -1); - - if (textAppearance != -1) - appearance = m_theme.obtainStyledAttributes(textAppearance, (int[]) styleableClass.getDeclaredField("TextAppearance").get(null)); - - if (appearance != null) - { - int n = appearance.getIndexCount(); - for (int i = 0; i < n; i++) - { - int attr = appearance.getIndex(i); - if (attr == TextAppearance_textColorHighlight) - textColorHighlight = appearance.getColor(attr, textColorHighlight); - else if (attr == TextAppearance_textColor) - textColor = appearance.getColorStateList(attr); - else if (attr == TextAppearance_textColorHint) - textColorHint = appearance.getColorStateList(attr); - else if (attr == TextAppearance_textColorLink) - textColorLink = appearance.getColorStateList(attr); - else if (attr == TextAppearance_textSize) - textSize = appearance.getDimensionPixelSize(attr, textSize); - else if (attr == TextAppearance_typeface) - typefaceIndex = appearance.getInt(attr, -1); - else if (attr == TextAppearance_textStyle) - styleIndex = appearance.getInt(attr, -1); - else if (attr == TextAppearance_textAllCaps) - allCaps = appearance.getBoolean(attr, false); - } - appearance.recycle(); + try { + json.put("TextView_textSelectHandleLeft", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.textSelectHandleLeft)), styleName + "_TextView_textSelectHandleLeft", null)); + } catch (Exception _e) { + json.put("TextView_textSelectHandleLeft", getDrawable(m_context.getResources().getDrawable(array.getResourceId(sortedAttrs.indexOf(android.R.attr.textSelectHandleLeft), 0), m_theme), styleName + "_TextView_textSelectHandleLeft", null)); } - int n = a.getIndexCount(); - - for (int i = 0; i < n; i++) { - int attr = a.getIndex(i); + try { + json.put("TextView_textSelectHandleRight", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.textSelectHandleRight)), styleName + "_TextView_textSelectHandleRight", null)); + } catch (Exception _e) { + json.put("TextView_textSelectHandleRight", getDrawable(m_context.getResources().getDrawable(array.getResourceId(sortedAttrs.indexOf(android.R.attr.textSelectHandleRight), 0), m_theme), styleName + "_TextView_textSelectHandleRight", null)); + } - if (attr == TextView_editable) - json.put("TextView_editable", a.getBoolean(attr, false)); - else if (attr == TextView_inputMethod) - json.put("TextView_inputMethod", a.getText(attr)); - else if (attr == TextView_numeric) - json.put("TextView_numeric", a.getInt(attr, 0)); - else if (attr == TextView_digits) - json.put("TextView_digits", a.getText(attr)); - else if (attr == TextView_phoneNumber) - json.put("TextView_phoneNumber", a.getBoolean(attr, false)); - else if (attr == TextView_autoText) - json.put("TextView_autoText", a.getBoolean(attr, false)); - else if (attr == TextView_capitalize) - json.put("TextView_capitalize", a.getInt(attr, -1)); - else if (attr == TextView_bufferType) - json.put("TextView_bufferType", a.getInt(attr, 0)); - else if (attr == TextView_selectAllOnFocus) - json.put("TextView_selectAllOnFocus", a.getBoolean(attr, false)); - else if (attr == TextView_autoLink) - json.put("TextView_autoLink", a.getInt(attr, 0)); - else if (attr == TextView_linksClickable) - json.put("TextView_linksClickable", a.getBoolean(attr, true)); - else if (attr == TextView_linksClickable) - json.put("TextView_linksClickable", a.getBoolean(attr, true)); - else if (attr == TextView_drawableLeft) - json.put("TextView_drawableLeft", getDrawable(a.getDrawable(attr), styleName + "_TextView_drawableLeft", null)); - else if (attr == TextView_drawableTop) - json.put("TextView_drawableTop", getDrawable(a.getDrawable(attr), styleName + "_TextView_drawableTop", null)); - else if (attr == TextView_drawableRight) - json.put("TextView_drawableRight", getDrawable(a.getDrawable(attr), styleName + "_TextView_drawableRight", null)); - else if (attr == TextView_drawableBottom) - json.put("TextView_drawableBottom", getDrawable(a.getDrawable(attr), styleName + "_TextView_drawableBottom", null)); - else if (attr == TextView_drawableStart) - json.put("TextView_drawableStart", getDrawable(a.getDrawable(attr), styleName + "_TextView_drawableStart", null)); - else if (attr == TextView_drawableEnd) - json.put("TextView_drawableEnd", getDrawable(a.getDrawable(attr), styleName + "_TextView_drawableEnd", null)); - else if (attr == TextView_drawablePadding) - json.put("TextView_drawablePadding", a.getDimensionPixelSize(attr, 0)); - else if (attr == TextView_textCursorDrawable) { - try { - json.put("TextView_textCursorDrawable", getDrawable(a.getDrawable(attr), styleName + "_TextView_textCursorDrawable", null)); - } catch (Exception e_) { - try { - json.put("TextView_textCursorDrawable", getDrawable(m_context.getResources().getDrawable(a.getResourceId(attr, 0)), styleName + "_TextView_textCursorDrawable", null)); - } catch (Exception e) { - e.printStackTrace(); - } - } - }else if (attr == TextView_maxLines) - json.put("TextView_maxLines", a.getInt(attr, -1)); - else if (attr == TextView_maxHeight) - json.put("TextView_maxHeight", a.getDimensionPixelSize(attr, -1)); - else if (attr == TextView_lines) - json.put("TextView_lines", a.getInt(attr, -1)); - else if (attr == TextView_height) - json.put("TextView_height", a.getDimensionPixelSize(attr, -1)); - else if (attr == TextView_minLines) - json.put("TextView_minLines", a.getInt(attr, -1)); - else if (attr == TextView_minHeight) - json.put("TextView_minHeight", a.getDimensionPixelSize(attr, -1)); - else if (attr == TextView_maxEms) - json.put("TextView_maxEms", a.getInt(attr, -1)); - else if (attr == TextView_maxWidth) - json.put("TextView_maxWidth", a.getDimensionPixelSize(attr, -1)); - else if (attr == TextView_ems) - json.put("TextView_ems", a.getInt(attr, -1)); - else if (attr == TextView_width) - json.put("TextView_width", a.getDimensionPixelSize(attr, -1)); - else if (attr == TextView_minEms) - json.put("TextView_minEms", a.getInt(attr, -1)); - else if (attr == TextView_minWidth) - json.put("TextView_minWidth", a.getDimensionPixelSize(attr, -1)); - else if (attr == TextView_gravity) - json.put("TextView_gravity", a.getInt(attr, -1)); - else if (attr == TextView_hint) - json.put("TextView_hint", a.getText(attr)); - else if (attr == TextView_text) - json.put("TextView_text", a.getText(attr)); - else if (attr == TextView_scrollHorizontally) - json.put("TextView_scrollHorizontally", a.getBoolean(attr, false)); - else if (attr == TextView_singleLine) - json.put("TextView_singleLine", a.getBoolean(attr, false)); - else if (attr == TextView_ellipsize) - json.put("TextView_ellipsize", a.getInt(attr, -1)); - else if (attr == TextView_marqueeRepeatLimit) - json.put("TextView_marqueeRepeatLimit", a.getInt(attr, 3)); - else if (attr == TextView_includeFontPadding) - json.put("TextView_includeFontPadding", a.getBoolean(attr, true)); - else if (attr == TextView_cursorVisible) - json.put("TextView_cursorVisible", a.getBoolean(attr, true)); - else if (attr == TextView_maxLength) - json.put("TextView_maxLength", a.getInt(attr, -1)); - else if (attr == TextView_textScaleX) - json.put("TextView_textScaleX", a.getFloat(attr, 1.0f)); - else if (attr == TextView_freezesText) - json.put("TextView_freezesText", a.getBoolean(attr, false)); - else if (attr == TextView_shadowColor) - json.put("TextView_shadowColor", a.getInt(attr, 0)); - else if (attr == TextView_shadowDx) - json.put("TextView_shadowDx", a.getFloat(attr, 0)); - else if (attr == TextView_shadowDy) - json.put("TextView_shadowDy", a.getFloat(attr, 0)); - else if (attr == TextView_shadowRadius) - json.put("TextView_shadowRadius", a.getFloat(attr, 0)); - else if (attr == TextView_enabled) - json.put("TextView_enabled", a.getBoolean(attr,true)); - else if (attr == TextView_textColorHighlight) - textColorHighlight = a.getColor(attr, textColorHighlight); - else if (attr == TextView_textColor) - textColor = a.getColorStateList(attr); - else if (attr == TextView_textColorHint) - textColorHint = a.getColorStateList(attr); - else if (attr == TextView_textColorLink) - textColorLink = a.getColorStateList(attr); - else if (attr == TextView_textSize) - textSize = a.getDimensionPixelSize(attr, textSize); - else if (attr == TextView_typeface) - typefaceIndex = a.getInt(attr, typefaceIndex); - else if (attr == TextView_textStyle) - styleIndex = a.getInt(attr, styleIndex); - else if (attr == TextView_password) - json.put("TextView_password", a.getBoolean(attr,false)); - else if (attr == TextView_lineSpacingExtra) - json.put("TextView_lineSpacingExtra", a.getDimensionPixelSize(attr, 0)); - else if (attr == TextView_lineSpacingMultiplier) - json.put("TextView_lineSpacingMultiplier", a.getFloat(attr, 1.0f)); - else if (attr == TextView_inputType) - json.put("TextView_inputType", a.getInt(attr, EditorInfo.TYPE_NULL)); - else if (attr == TextView_imeOptions) - json.put("TextView_imeOptions", a.getInt(attr, EditorInfo.IME_NULL)); - else if (attr == TextView_imeActionLabel) - json.put("TextView_imeActionLabel", a.getText(attr)); - else if (attr == TextView_imeActionId) - json.put("TextView_imeActionId", a.getInt(attr,0)); - else if (attr == TextView_privateImeOptions) - json.put("TextView_privateImeOptions", a.getString(attr)); - else if (attr == TextView_textSelectHandleLeft && styleName.equals("textViewStyle")) { - try { - json.put("TextView_textSelectHandleLeft", getDrawable(a.getDrawable(attr), styleName + "_TextView_textSelectHandleLeft", null)); - } catch (Exception _e) { - try { - json.put("TextView_textSelectHandleLeft", getDrawable(m_context.getResources().getDrawable(a.getResourceId(attr, 0)), styleName + "_TextView_textSelectHandleLeft", null)); - } catch (Exception e) { - e.printStackTrace(); - } - } - } else if (attr == TextView_textSelectHandleRight && styleName.equals("textViewStyle")) { - try { - json.put("TextView_textSelectHandleRight", getDrawable(a.getDrawable(attr), styleName + "_TextView_textSelectHandleRight", null)); - } catch (Exception _e) { - try { - json.put("TextView_textSelectHandleRight", getDrawable(m_context.getResources().getDrawable(a.getResourceId(attr, 0)), styleName + "_TextView_textSelectHandleRight", null)); - } catch (Exception e) { - e.printStackTrace(); - } - } - } else if (attr == TextView_textSelectHandle && styleName.equals("textViewStyle")) { - try { - json.put("TextView_textSelectHandle", getDrawable(a.getDrawable(attr), styleName + "_TextView_textSelectHandle", null)); - } catch (Exception _e) { - try { - json.put("TextView_textSelectHandle", getDrawable(m_context.getResources().getDrawable(a.getResourceId(attr, 0)), styleName + "_TextView_textSelectHandle", null)); - } catch (Exception e) { - e.printStackTrace(); - } - } - } else if (attr == TextView_textIsSelectable) - json.put("TextView_textIsSelectable", a.getBoolean(attr, false)); - else if (attr == TextView_textAllCaps) - allCaps = a.getBoolean(attr, false); - } - a.recycle(); - - json.put("TextAppearance_textColorHighlight",textColorHighlight); - json.put("TextAppearance_textColor", getColorStateList(textColor)); - json.put("TextAppearance_textColorHint", getColorStateList(textColorHint)); - json.put("TextAppearance_textColorLink", getColorStateList(textColorLink)); - json.put("TextAppearance_textSize",textSize); - json.put("TextAppearance_typeface",typefaceIndex); - json.put("TextAppearance_textStyle",styleIndex); - json.put("TextAppearance_textAllCaps",allCaps); - } - catch(Exception e) - { + try { + json.put("TextView_textSelectHandle", getDrawable(array.getDrawable(sortedAttrs.indexOf(android.R.attr.textSelectHandle)), styleName + "_TextView_textSelectHandle", null)); + } catch (Exception _e) { + json.put("TextView_textSelectHandle", getDrawable(m_context.getResources().getDrawable(array.getResourceId(sortedAttrs.indexOf(android.R.attr.textSelectHandle), 0), m_theme), styleName + "_TextView_textSelectHandle", null)); + } + json.put("TextView_textIsSelectable", array.getBoolean(sortedAttrs.indexOf(android.R.attr.textIsSelectable), false)); + array.recycle(); + } catch (Exception e) { e.printStackTrace(); } return json; } - final String[] sScaleTypeArray = { - "MATRIX", - "FIT_XY", - "FIT_START", - "FIT_CENTER", - "FIT_END", - "CENTER", - "CENTER_CROP", - "CENTER_INSIDE" - }; - - public JSONObject extractImageViewInformations(String styleName, String qtClassName ) - { + public JSONObject extractImageViewInformation(int styleName, String qtClassName) { JSONObject json = new JSONObject(); - try - { - Class<?> attrClass= Class.forName("android.R$attr"); - int styleId = attrClass.getDeclaredField(styleName).getInt(null); - - extractViewInformations(styleName, styleId, json, qtClassName, null); - - int[] imageViewAttrs=(int[]) styleableClass.getDeclaredField("ImageView").get(null); - TypedArray a =m_theme.obtainStyledAttributes(null, imageViewAttrs, styleId, 0); - Drawable d = a.getDrawable(ImageView_src); - if (d != null) - json.put("ImageView_src", getDrawable(d, styleName + "_ImageView_src", null)); + try { + extractViewInformation(styleName, json, qtClassName); - json.put("ImageView_baselineAlignBottom", a.getBoolean(ImageView_baselineAlignBottom, false)); - json.put("ImageView_adjustViewBounds", a.getBoolean(ImageView_adjustViewBounds, false)); - json.put("ImageView_maxWidth", a.getDimensionPixelSize(ImageView_maxWidth, Integer.MAX_VALUE)); - json.put("ImageView_maxHeight", a.getDimensionPixelSize(ImageView_maxHeight, Integer.MAX_VALUE)); - int index = a.getInt(ImageView_scaleType, -1); + int[] attributes = new int[]{ + android.R.attr.src, + android.R.attr.baselineAlignBottom, + android.R.attr.adjustViewBounds, + android.R.attr.maxWidth, + android.R.attr.maxHeight, + android.R.attr.scaleType, + android.R.attr.cropToPadding, + android.R.attr.tint + + }; + Arrays.sort(attributes); + TypedArray array = obtainStyledAttributes(styleName, attributes); + ArrayList<Integer> sortedAttrs = getArrayListFromIntArray(attributes); + + Drawable drawable = array.getDrawable(sortedAttrs.indexOf(android.R.attr.src)); + if (drawable != null) + json.put("ImageView_src", getDrawable(drawable, styleName + "_ImageView_src", null)); + + json.put("ImageView_baselineAlignBottom", array.getBoolean(sortedAttrs.indexOf(android.R.attr.baselineAlignBottom), false)); + json.put("ImageView_adjustViewBounds", array.getBoolean(sortedAttrs.indexOf(android.R.attr.baselineAlignBottom), false)); + json.put("ImageView_maxWidth", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.maxWidth), Integer.MAX_VALUE)); + json.put("ImageView_maxHeight", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.maxHeight), Integer.MAX_VALUE)); + int index = array.getInt(sortedAttrs.indexOf(android.R.attr.scaleType), -1); if (index >= 0) json.put("ImageView_scaleType", sScaleTypeArray[index]); - int tint = a.getInt(ImageView_tint, 0); + int tint = array.getInt(sortedAttrs.indexOf(android.R.attr.tint), 0); if (tint != 0) json.put("ImageView_tint", tint); - - json.put("ImageView_cropToPadding",a.getBoolean(ImageView_cropToPadding, false)); - a.recycle(); - } - catch(Exception e) - { + json.put("ImageView_cropToPadding", array.getBoolean(sortedAttrs.indexOf(android.R.attr.cropToPadding), false)); + array.recycle(); + } catch (Exception e) { e.printStackTrace(); } return json; - } - void extractCompoundButton(SimpleJsonWriter jsonWriter, String styleName, String qtClass) - { - JSONObject json = extractTextAppearanceInformations(styleName, qtClass, null, -1); - Class<?> attrClass; - try { - attrClass = Class.forName("android.R$attr"); - int styleId = attrClass.getDeclaredField(styleName).getInt(null); - int[] compoundButtonAttrs=(int[]) styleableClass.getDeclaredField("CompoundButton").get(null); + void extractCompoundButton(SimpleJsonWriter jsonWriter, int styleName, String className, String qtClass) { + JSONObject json = extractTextAppearanceInformation(styleName, qtClass); - TypedArray a = m_theme.obtainStyledAttributes( - null, compoundButtonAttrs, styleId, 0); - - Drawable d = a.getDrawable(getField(styleableClass,"CompoundButton_button")); - if (d != null) - json.put("CompoundButton_button", getDrawable(d, styleName + "_CompoundButton_button", null)); + TypedValue typedValue = new TypedValue(); + Context ctx = new ContextThemeWrapper(m_context, m_theme); + ctx.getTheme().resolveAttribute(styleName, typedValue, true); + final int[] attributes = new int[]{android.R.attr.button}; + TypedArray array = ctx.obtainStyledAttributes(typedValue.data, attributes); + Drawable drawable = array.getDrawable(0); + array.recycle(); - a.recycle(); - jsonWriter.name(styleName).value(json); + try { + if (drawable != null) + json.put("CompoundButton_button", getDrawable(drawable, styleName + "_CompoundButton_button", null)); + jsonWriter.name(className).value(json); } catch (Exception e) { e.printStackTrace(); } } - void extractProgressBarInfo(JSONObject json, String styleName) - { - Class<?> attrClass; + void extractProgressBarInfo(JSONObject json, int styleName) { try { - attrClass = Class.forName("android.R$attr"); - int styleId = attrClass.getDeclaredField(styleName).getInt(null); - int[] progressBarAttrs=(int[]) styleableClass.getDeclaredField("ProgressBar").get(null); - - TypedArray a = m_theme.obtainStyledAttributes(null, progressBarAttrs, styleId, 0); - int mMinWidth = 24; - int mMaxWidth = 48; - int mMinHeight = 24; - int mMaxHeight = 48; - mMinWidth = a.getDimensionPixelSize(getField(styleableClass, "ProgressBar_minWidth"), mMinWidth); - mMaxWidth = a.getDimensionPixelSize(getField(styleableClass, "ProgressBar_maxWidth"), mMaxWidth); - mMinHeight = a.getDimensionPixelSize(getField(styleableClass, "ProgressBar_minHeight"), mMinHeight); - mMaxHeight = a.getDimensionPixelSize(getField(styleableClass, "ProgressBar_maxHeight"), mMaxHeight); - - json.put("ProgressBar_indeterminateDuration", a.getInt(getField(styleableClass, "ProgressBar_indeterminateDuration"), 4000)); - json.put("ProgressBar_minWidth", mMinWidth); - json.put("ProgressBar_maxWidth", mMaxWidth); - json.put("ProgressBar_minHeight", mMinHeight); - json.put("ProgressBar_maxHeight", mMaxHeight); + final int[] attributes = new int[]{ + android.R.attr.minWidth, + android.R.attr.maxWidth, + android.R.attr.minHeight, + android.R.attr.maxHeight, + android.R.attr.indeterminateDuration, + android.R.attr.progressDrawable, + android.R.attr.indeterminateDrawable + }; + + // The array must be sorted in ascending order, otherwise obtainStyledAttributes() + // might fail to find some attributes + Arrays.sort(attributes); + TypedArray array = obtainStyledAttributes(styleName, attributes); + ArrayList<Integer> sortedAttrs = getArrayListFromIntArray(attributes); + + json.put("ProgressBar_indeterminateDuration", array.getInt(sortedAttrs.indexOf(android.R.attr.indeterminateDuration), 4000)); + json.put("ProgressBar_minWidth", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.minWidth), 24)); + json.put("ProgressBar_maxWidth", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.maxWidth), 48)); + json.put("ProgressBar_minHeight", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.minHeight), 24)); + json.put("ProgressBar_maxHeight", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.maxHeight), 28)); json.put("ProgressBar_progress_id", android.R.id.progress); json.put("ProgressBar_secondaryProgress_id", android.R.id.secondaryProgress); - Drawable d = a.getDrawable(getField(styleableClass,"ProgressBar_progressDrawable")); - if (d != null) - json.put("ProgressBar_progressDrawable", getDrawable(d, styleName + "_ProgressBar_progressDrawable", null)); + Drawable drawable = array.getDrawable(sortedAttrs.indexOf(android.R.attr.progressDrawable)); + if (drawable != null) + json.put("ProgressBar_progressDrawable", getDrawable(drawable, + styleName + "_ProgressBar_progressDrawable", null)); - d = a.getDrawable(getField(styleableClass,"ProgressBar_indeterminateDrawable")); - if (d != null) - json.put("ProgressBar_indeterminateDrawable", getDrawable(d, styleName + "_ProgressBar_indeterminateDrawable", null)); + drawable = array.getDrawable(sortedAttrs.indexOf(android.R.attr.indeterminateDrawable)); + if (drawable != null) + json.put("ProgressBar_indeterminateDrawable", getDrawable(drawable, + styleName + "_ProgressBar_indeterminateDrawable", null)); - a.recycle(); + array.recycle(); } catch (Exception e) { e.printStackTrace(); } } - void extractProgressBar(SimpleJsonWriter writer, String styleName, String qtClass) - { - JSONObject json = extractTextAppearanceInformations(styleName, qtClass, null, -1); + void extractProgressBar(SimpleJsonWriter writer, int styleName, String className, String qtClass) { + JSONObject json = extractTextAppearanceInformation(android.R.attr.progressBarStyle, qtClass); try { extractProgressBarInfo(json, styleName); - writer.name(styleName).value(json); + writer.name(className).value(json); } catch (Exception e) { e.printStackTrace(); } } - void extractAbsSeekBar(SimpleJsonWriter jsonWriter, String styleName, String qtClass) - { - JSONObject json = extractTextAppearanceInformations(styleName, qtClass, null, -1); - extractProgressBarInfo(json, styleName); - Class<?> attrClass; - try { - attrClass = Class.forName("android.R$attr"); - int styleId = attrClass.getDeclaredField(styleName).getInt(null); - int[] compoundButtonAttrs=(int[]) styleableClass.getDeclaredField("SeekBar").get(null); - - TypedArray a = m_theme.obtainStyledAttributes( - null, compoundButtonAttrs, styleId, 0); + void extractAbsSeekBar(SimpleJsonWriter jsonWriter) { + JSONObject json = extractTextAppearanceInformation(android.R.attr.seekBarStyle, "QSlider"); + extractProgressBarInfo(json, android.R.attr.seekBarStyle); + try { + int[] attributes = new int[]{ + android.R.attr.thumb, + android.R.attr.thumbOffset + }; + Arrays.sort(attributes); + TypedArray array = obtainStyledAttributes(android.R.attr.seekBarStyle, attributes); + ArrayList<Integer> sortedAttrs = getArrayListFromIntArray(attributes); - Drawable d = a.getDrawable(getField(styleableClass,"SeekBar_thumb")); + Drawable d = array.getDrawable(sortedAttrs.indexOf(android.R.attr.thumb)); if (d != null) - json.put("SeekBar_thumb", getDrawable(d, styleName + "_SeekBar_thumb", null)); - - try { - json.put("SeekBar_thumbOffset", styleableClass.getDeclaredField("SeekBar_thumbOffset").getInt(null)); - } catch (Exception e) { - e.printStackTrace(); - } - - a.recycle(); - jsonWriter.name(styleName).value(json); + json.put("SeekBar_thumb", getDrawable(d, android.R.attr.seekBarStyle + "_SeekBar_thumb", null)); + json.put("SeekBar_thumbOffset", array.getDimensionPixelOffset(sortedAttrs.indexOf(android.R.attr.thumbOffset), -1)); + array.recycle(); + jsonWriter.name("seekBarStyle").value(json); } catch (Exception e) { e.printStackTrace(); } } - void extractSwitch(SimpleJsonWriter jsonWriter, String styleName, String qtClass) - { + void extractSwitch(SimpleJsonWriter jsonWriter) { JSONObject json = new JSONObject(); try { - Class<?> attrClass = Class.forName("com.android.internal.R$attr"); - int styleId = attrClass.getDeclaredField(styleName).getInt(null); + int[] attributes = new int[]{ + android.R.attr.thumb, + android.R.attr.track, + android.R.attr.switchTextAppearance, + android.R.attr.textOn, + android.R.attr.textOff, + android.R.attr.switchMinWidth, + android.R.attr.switchPadding, + android.R.attr.thumbTextPadding, + android.R.attr.showText, + android.R.attr.splitTrack + }; + Arrays.sort(attributes); + TypedArray array = obtainStyledAttributes(android.R.attr.switchStyle, attributes); + ArrayList<Integer> sortedAttrs = getArrayListFromIntArray(attributes); - int[] switchAttrs = (int[]) styleableClass.getDeclaredField("Switch").get(null); - TypedArray a = m_theme.obtainStyledAttributes(null, switchAttrs, styleId, 0); - - Drawable thumb = a.getDrawable(getField(styleableClass,"Switch_thumb")); + Drawable thumb = array.getDrawable(sortedAttrs.indexOf(android.R.attr.thumb)); if (thumb != null) - json.put("Switch_thumb", getDrawable(thumb, styleName + "_Switch_thumb", null)); + json.put("Switch_thumb", getDrawable(thumb, android.R.attr.switchStyle + "_Switch_thumb", null)); - Drawable track = a.getDrawable(getField(styleableClass,"Switch_track")); + Drawable track = array.getDrawable(sortedAttrs.indexOf(android.R.attr.track)); if (track != null) - json.put("Switch_track", getDrawable(track, styleName + "_Switch_track", null)); - - int textAppearance = a.getResourceId(styleableClass.getDeclaredField("Switch_switchTextAppearance").getInt(null), -1); - json.put("Switch_switchTextAppearance", extractTextAppearance(textAppearance)); + json.put("Switch_track", getDrawable(track, android.R.attr.switchStyle + "_Switch_track", null)); - json.put("Switch_textOn", a.getText(getField(styleableClass, "Switch_textOn"))); - json.put("Switch_textOff", a.getText(getField(styleableClass, "Switch_textOff"))); - json.put("Switch_switchMinWidth", a.getDimensionPixelSize(getField(styleableClass, "Switch_switchMinWidth"), 0)); - json.put("Switch_switchPadding", a.getDimensionPixelSize(getField(styleableClass, "Switch_switchPadding"), 0)); - json.put("Switch_thumbTextPadding", a.getDimensionPixelSize(getField(styleableClass, "Switch_thumbTextPadding"), 0)); + json.put("Switch_textOn", array.getText(sortedAttrs.indexOf(android.R.attr.textOn))); + json.put("Switch_textOff", array.getText(sortedAttrs.indexOf(android.R.attr.textOff))); + json.put("Switch_switchMinWidth", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.switchMinWidth), 0)); + json.put("Switch_switchPadding", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.switchPadding), 0)); + json.put("Switch_thumbTextPadding", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.thumbTextPadding), 0)); + json.put("Switch_showText", array.getBoolean(sortedAttrs.indexOf(android.R.attr.showText), true)); + json.put("Switch_splitTrack", array.getBoolean(sortedAttrs.indexOf(android.R.attr.splitTrack), false)); - json.put("Switch_showText", a.getBoolean(getField(styleableClass, "Switch_showText"), true)); - json.put("Switch_splitTrack", a.getBoolean(getField(styleableClass, "Switch_splitTrack"), false)); + // Get textAppearance values + final int textAppearanceId = array.getResourceId(sortedAttrs.indexOf(android.R.attr.switchTextAppearance), -1); + json.put("Switch_switchTextAppearance", extractTextAppearance(textAppearanceId, true)); - a.recycle(); - jsonWriter.name(styleName).value(json); + array.recycle(); + jsonWriter.name("switchStyle").value(json); } catch (Exception e) { e.printStackTrace(); } } - JSONObject extractCheckedTextView(AttributeSet attribSet, String itemName) - { - JSONObject json = extractTextAppearanceInformations("textViewStyle", itemName, attribSet, -1); + JSONObject extractCheckedTextView(String itemName) { + JSONObject json = extractTextAppearanceInformation(android.R.attr.checkedTextViewStyle, itemName); try { - Class<?> attrClass= Class.forName("android.R$attr"); - int styleId = attrClass.getDeclaredField("textViewStyle").getInt(null); - int[] compoundButtonAttrs=(int[]) styleableClass.getDeclaredField("CheckedTextView").get(null); + int[] attributes = new int[]{ + android.R.attr.checkMark, + }; - TypedArray a = m_theme.obtainStyledAttributes(attribSet, compoundButtonAttrs, styleId, 0); + Arrays.sort(attributes); + TypedArray array = obtainStyledAttributes(android.R.attr.switchStyle, attributes); + ArrayList<Integer> sortedAttrs = getArrayListFromIntArray(attributes); - Drawable d = a.getDrawable(getField(styleableClass,"CheckedTextView_checkMark")); - if (d != null) - json.put("CheckedTextView_checkMark", getDrawable(d, itemName+"_CheckedTextView_checkMark", null)); - - a.recycle(); + Drawable drawable = array.getDrawable(sortedAttrs.indexOf(android.R.attr.checkMark)); + if (drawable != null) + json.put("CheckedTextView_checkMark", getDrawable(drawable, itemName + "_CheckedTextView_checkMark", null)); + array.recycle(); } catch (Exception e) { e.printStackTrace(); } return json; } - private JSONObject extractItemStyle(int resourceId, String itemName, int textAppearance) { - try - { + private JSONObject extractItemStyle(int resourceId, String itemName) + { + try { XmlResourceParser parser = m_context.getResources().getLayout(resourceId); - int type; - while ((type = parser.next()) != XmlPullParser.START_TAG && - type != XmlPullParser.END_DOCUMENT) { - // Empty - } + int type = parser.next(); + while (type != XmlPullParser.START_TAG && type != XmlPullParser.END_DOCUMENT) + type = parser.next(); - if (type != XmlPullParser.START_TAG) { + if (type != XmlPullParser.START_TAG) return null; - } AttributeSet attributes = Xml.asAttributeSet(parser); String name = parser.getName(); if (name.equals("TextView")) - return extractTextAppearanceInformations("textViewStyle", itemName, attributes, textAppearance); - if (name.equals("CheckedTextView")) - return extractCheckedTextView(attributes, itemName); + return extractTextAppearanceInformation(android.R.attr.textViewStyle, itemName, android.R.attr.textAppearanceListItem, attributes); + else if (name.equals("CheckedTextView")) + return extractCheckedTextView(itemName); } catch (Exception e) { e.printStackTrace(); } @@ -1796,243 +1573,258 @@ } private void extractItemsStyle(SimpleJsonWriter jsonWriter) { - try - { - jsonWriter.name("simple_list_item").value(extractItemStyle(android.R.layout.simple_list_item_1, "simple_list_item", android.R.style.TextAppearance_Large)); - jsonWriter.name("simple_list_item_checked").value(extractItemStyle(android.R.layout.simple_list_item_checked, "simple_list_item_checked", android.R.style.TextAppearance_Large)); - jsonWriter.name("simple_list_item_multiple_choice").value(extractItemStyle(android.R.layout.simple_list_item_multiple_choice, "simple_list_item_multiple_choice", android.R.style.TextAppearance_Large)); - jsonWriter.name("simple_list_item_single_choice").value(extractItemStyle(android.R.layout.simple_list_item_single_choice, "simple_list_item_single_choice", android.R.style.TextAppearance_Large)); - jsonWriter.name("simple_spinner_item").value(extractItemStyle(android.R.layout.simple_spinner_item, "simple_spinner_item", -1)); - jsonWriter.name("simple_spinner_dropdown_item").value(extractItemStyle(android.R.layout.simple_spinner_dropdown_item, "simple_spinner_dropdown_item",android.R.style.TextAppearance_Large)); - jsonWriter.name("simple_dropdown_item_1line").value(extractItemStyle(android.R.layout.simple_dropdown_item_1line, "simple_dropdown_item_1line",android.R.style.TextAppearance_Large)); - jsonWriter.name("simple_selectable_list_item").value(extractItemStyle(android.R.layout.simple_selectable_list_item, "simple_selectable_list_item",android.R.style.TextAppearance_Large)); + try { + JSONObject itemStyle = extractItemStyle(android.R.layout.simple_list_item_1, "simple_list_item"); + if (itemStyle != null) + jsonWriter.name("simple_list_item").value(itemStyle); + itemStyle = extractItemStyle(android.R.layout.simple_list_item_checked, "simple_list_item_checked"); + if (itemStyle != null) + jsonWriter.name("simple_list_item_checked").value(itemStyle); + itemStyle = extractItemStyle(android.R.layout.simple_list_item_multiple_choice, "simple_list_item_multiple_choice"); + if (itemStyle != null) + jsonWriter.name("simple_list_item_multiple_choice").value(itemStyle); + itemStyle = extractItemStyle(android.R.layout.simple_list_item_single_choice, "simple_list_item_single_choice"); + if (itemStyle != null) + jsonWriter.name("simple_list_item_single_choice").value(itemStyle); + itemStyle = extractItemStyle(android.R.layout.simple_spinner_item, "simple_spinner_item"); + if (itemStyle != null) + jsonWriter.name("simple_spinner_item").value(itemStyle); + itemStyle = extractItemStyle(android.R.layout.simple_spinner_dropdown_item, "simple_spinner_dropdown_item"); + if (itemStyle != null) + jsonWriter.name("simple_spinner_dropdown_item").value(itemStyle); + itemStyle = extractItemStyle(android.R.layout.simple_dropdown_item_1line, "simple_dropdown_item_1line"); + if (itemStyle != null) + jsonWriter.name("simple_dropdown_item_1line").value(itemStyle); + itemStyle = extractItemStyle(android.R.layout.simple_selectable_list_item, "simple_selectable_list_item"); + if (itemStyle != null) + jsonWriter.name("simple_selectable_list_item").value(itemStyle); } catch (Exception e) { e.printStackTrace(); } } - void extractListView(SimpleJsonWriter writer, String styleName, String qtClass) - { - JSONObject json = extractTextAppearanceInformations(styleName, qtClass, null, -1); - try { - Class<?> attrClass = Class.forName("android.R$attr"); - int styleId = attrClass.getDeclaredField(styleName).getInt(null); + void extractListView(SimpleJsonWriter writer) { + JSONObject json = extractTextAppearanceInformation(android.R.attr.listViewStyle, "QListView"); + try { + int[] attributes = new int[]{ + android.R.attr.divider, + android.R.attr.dividerHeight + }; + Arrays.sort(attributes); + TypedArray array = obtainStyledAttributes(android.R.attr.listViewStyle, attributes); + ArrayList<Integer> sortedAttrs = getArrayListFromIntArray(attributes); - int[] styleAttrs = (int[]) styleableClass.getDeclaredField("ListView").get(null); - TypedArray a = m_theme.obtainStyledAttributes(null, styleAttrs, styleId, 0); - - Drawable divider = a.getDrawable(getField(styleableClass,"ListView_divider")); + Drawable divider = array.getDrawable(sortedAttrs.indexOf(android.R.attr.divider)); if (divider != null) - json.put("ListView_divider", getDrawable(divider, styleName + "_ListView_divider", null)); + json.put("ListView_divider", getDrawable(divider, android.R.attr.listViewStyle + "_ListView_divider", null)); - json.put("ListView_dividerHeight", a.getDimensionPixelSize(getField(styleableClass, "ListView_dividerHeight"), 0)); + json.put("ListView_dividerHeight", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.dividerHeight), 0)); - a.recycle(); - writer.name(styleName).value(json); + array.recycle(); + writer.name("listViewStyle").value(json); } catch (Exception e) { e.printStackTrace(); } } - void extractCalendar(SimpleJsonWriter writer, String styleName, String qtClass) - { - JSONObject json = extractTextAppearanceInformations(styleName, qtClass, null, -1); + void extractCalendar(SimpleJsonWriter writer) { + JSONObject json = extractTextAppearanceInformation(android.R.attr.calendarViewStyle, "QCalendarWidget"); try { - Class<?> attrClass = Class.forName("android.R$attr"); - int styleId = attrClass.getDeclaredField(styleName).getInt(null); + int[] attributes = new int[]{ + android.R.attr.firstDayOfWeek, + android.R.attr.focusedMonthDateColor, + android.R.attr.selectedWeekBackgroundColor, + android.R.attr.showWeekNumber, + android.R.attr.shownWeekCount, + android.R.attr.unfocusedMonthDateColor, + android.R.attr.weekNumberColor, + android.R.attr.weekSeparatorLineColor, + android.R.attr.selectedDateVerticalBar, + android.R.attr.dateTextAppearance, + android.R.attr.weekDayTextAppearance + }; + Arrays.sort(attributes); + TypedArray array = obtainStyledAttributes(android.R.attr.calendarViewStyle, attributes); + ArrayList<Integer> sortedAttrs = getArrayListFromIntArray(attributes); - int[] styleAttrs = (int[]) styleableClass.getDeclaredField("CalendarView").get(null); - TypedArray a = m_theme.obtainStyledAttributes(null, styleAttrs, styleId, 0); - - Drawable d = a.getDrawable(getField(styleableClass,"CalendarView_selectedDateVerticalBar")); + Drawable d = array.getDrawable(sortedAttrs.indexOf(android.R.attr.selectedDateVerticalBar)); if (d != null) - json.put("CalendarView_selectedDateVerticalBar", getDrawable(d, styleName + "_CalendarView_selectedDateVerticalBar", null)); - - int dateTextAppearance = a.getResourceId(styleableClass.getDeclaredField("CalendarView_dateTextAppearance").getInt(null), -1); - json.put("CalendarView_dateTextAppearance", extractTextAppearance(dateTextAppearance)); + json.put("CalendarView_selectedDateVerticalBar", getDrawable(d, android.R.attr.calendarViewStyle + "_CalendarView_selectedDateVerticalBar", null)); - int weekDayTextAppearance = a.getResourceId(styleableClass.getDeclaredField("CalendarView_weekDayTextAppearance").getInt(null), -1); - json.put("CalendarView_weekDayTextAppearance", extractTextAppearance(weekDayTextAppearance)); + int textAppearanceId = array.getResourceId(sortedAttrs.indexOf(android.R.attr.dateTextAppearance), -1); + json.put("CalendarView_dateTextAppearance", extractTextAppearance(textAppearanceId, true)); + textAppearanceId = array.getResourceId(sortedAttrs.indexOf(android.R.attr.weekDayTextAppearance), -1); + json.put("CalendarView_weekDayTextAppearance", extractTextAppearance(textAppearanceId, true)); - json.put("CalendarView_firstDayOfWeek", a.getInt(getField(styleableClass, "CalendarView_firstDayOfWeek"), 0)); - json.put("CalendarView_focusedMonthDateColor", a.getColor(getField(styleableClass, "CalendarView_focusedMonthDateColor"), 0)); - json.put("CalendarView_selectedWeekBackgroundColor", a.getColor(getField(styleableClass, "CalendarView_selectedWeekBackgroundColor"), 0)); - json.put("CalendarView_showWeekNumber", a.getBoolean(getField(styleableClass, "CalendarView_showWeekNumber"), true)); - json.put("CalendarView_shownWeekCount", a.getInt(getField(styleableClass, "CalendarView_shownWeekCount"), 6)); - json.put("CalendarView_unfocusedMonthDateColor", a.getColor(getField(styleableClass, "CalendarView_unfocusedMonthDateColor"), 0)); - json.put("CalendarView_weekNumberColor", a.getColor(getField(styleableClass, "CalendarView_weekNumberColor"), 0)); - json.put("CalendarView_weekSeparatorLineColor", a.getColor(getField(styleableClass, "CalendarView_weekSeparatorLineColor"), 0)); - a.recycle(); - writer.name(styleName).value(json); + json.put("CalendarView_firstDayOfWeek", array.getInt(sortedAttrs.indexOf(android.R.attr.firstDayOfWeek), 0)); + json.put("CalendarView_focusedMonthDateColor", array.getColor(sortedAttrs.indexOf(android.R.attr.focusedMonthDateColor), 0)); + json.put("CalendarView_selectedWeekBackgroundColor", array.getColor(sortedAttrs.indexOf(android.R.attr.selectedWeekBackgroundColor), 0)); + json.put("CalendarView_showWeekNumber", array.getBoolean(sortedAttrs.indexOf(android.R.attr.showWeekNumber), true)); + json.put("CalendarView_shownWeekCount", array.getInt(sortedAttrs.indexOf(android.R.attr.shownWeekCount), 6)); + json.put("CalendarView_unfocusedMonthDateColor", array.getColor(sortedAttrs.indexOf(android.R.attr.unfocusedMonthDateColor), 0)); + json.put("CalendarView_weekNumberColor", array.getColor(sortedAttrs.indexOf(android.R.attr.weekNumberColor), 0)); + json.put("CalendarView_weekSeparatorLineColor", array.getColor(sortedAttrs.indexOf(android.R.attr.weekSeparatorLineColor), 0)); + array.recycle(); + writer.name("calendarViewStyle").value(json); } catch (Exception e) { e.printStackTrace(); } } - void extractToolBar(SimpleJsonWriter writer, String styleName, String qtClass) - { - JSONObject json = extractTextAppearanceInformations(styleName, qtClass, null, -1); + void extractToolBar(SimpleJsonWriter writer) { + JSONObject json = extractTextAppearanceInformation(android.R.attr.toolbarStyle, "QToolBar"); try { - Class<?> attrClass = Class.forName("com.android.internal.R$attr"); - int styleId = attrClass.getDeclaredField(styleName).getInt(null); + int[] attributes = new int[]{ + android.R.attr.background, + android.R.attr.backgroundStacked, + android.R.attr.backgroundSplit, + android.R.attr.divider, + android.R.attr.itemPadding + }; + Arrays.sort(attributes); + TypedArray array = obtainStyledAttributes(android.R.attr.toolbarStyle, attributes); + ArrayList<Integer> sortedAttrs = getArrayListFromIntArray(attributes); - int[] styleAttrs = (int[]) styleableClass.getDeclaredField("ActionBar").get(null); - TypedArray a = m_theme.obtainStyledAttributes(null, styleAttrs, styleId, 0); - - Drawable d = a.getDrawable(getField(styleableClass,"ActionBar_background")); + Drawable d = array.getDrawable(sortedAttrs.indexOf(android.R.attr.background)); if (d != null) - json.put("ActionBar_background", getDrawable(d, styleName + "_ActionBar_background", null)); + json.put("ActionBar_background", getDrawable(d, android.R.attr.toolbarStyle + "_ActionBar_background", null)); - d = a.getDrawable(getField(styleableClass,"ActionBar_backgroundStacked")); + d = array.getDrawable(sortedAttrs.indexOf(android.R.attr.backgroundStacked)); if (d != null) - json.put("ActionBar_backgroundStacked", getDrawable(d, styleName + "_ActionBar_backgroundStacked", null)); + json.put("ActionBar_backgroundStacked", getDrawable(d, android.R.attr.toolbarStyle + "_ActionBar_backgroundStacked", null)); - d = a.getDrawable(getField(styleableClass,"ActionBar_backgroundSplit")); + d = array.getDrawable(sortedAttrs.indexOf(android.R.attr.backgroundSplit)); if (d != null) - json.put("ActionBar_backgroundSplit", getDrawable(d, styleName + "_ActionBar_backgroundSplit", null)); + json.put("ActionBar_backgroundSplit", getDrawable(d, android.R.attr.toolbarStyle + "_ActionBar_backgroundSplit", null)); - d = a.getDrawable(getField(styleableClass,"ActionBar_divider")); + d = array.getDrawable(sortedAttrs.indexOf(android.R.attr.divider)); if (d != null) - json.put("ActionBar_divider", getDrawable(d, styleName + "_ActionBar_divider", null)); + json.put("ActionBar_divider", getDrawable(d, android.R.attr.toolbarStyle + "_ActionBar_divider", null)); - json.put("ActionBar_itemPadding", a.getDimensionPixelSize(getField(styleableClass, "ActionBar_itemPadding"), 0)); + json.put("ActionBar_itemPadding", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.itemPadding), 0)); - a.recycle(); - writer.name(styleName).value(json); + array.recycle(); + writer.name("actionBarStyle").value(json); } catch (Exception e) { e.printStackTrace(); } } - void extractTabBar(SimpleJsonWriter writer, String styleName, String qtClass) - { - JSONObject json = extractTextAppearanceInformations(styleName, qtClass, null, -1); + void extractTabBar(SimpleJsonWriter writer) { + JSONObject json = extractTextAppearanceInformation(android.R.attr.actionBarTabBarStyle, "QTabBar"); try { - Class<?> attrClass = Class.forName("android.R$attr"); - int styleId = attrClass.getDeclaredField(styleName).getInt(null); - - int[] styleAttrs = (int[]) styleableClass.getDeclaredField("LinearLayout").get(null); - TypedArray a = m_theme.obtainStyledAttributes(null, styleAttrs, styleId, 0); + int[] attributes = new int[]{ + android.R.attr.showDividers, + android.R.attr.dividerPadding, + android.R.attr.divider + }; + Arrays.sort(attributes); + TypedArray array = obtainStyledAttributes(android.R.attr.actionBarTabStyle, attributes); + ArrayList<Integer> sortedAttrs = getArrayListFromIntArray(attributes); - Drawable d = a.getDrawable(getField(styleableClass,"LinearLayout_divider")); + Drawable d = array.getDrawable(sortedAttrs.indexOf(android.R.attr.divider)); if (d != null) - json.put("LinearLayout_divider", getDrawable(d, styleName + "_LinearLayout_divider", null)); - json.put("LinearLayout_showDividers", a.getInt(getField(styleableClass, "LinearLayout_showDividers"), 0)); - json.put("LinearLayout_dividerPadding", a.getDimensionPixelSize(getField(styleableClass, "LinearLayout_dividerPadding"), 0)); + json.put("LinearLayout_divider", getDrawable(d, android.R.attr.actionBarTabStyle + "_LinearLayout_divider", null)); + json.put("LinearLayout_showDividers", array.getInt(sortedAttrs.indexOf(android.R.attr.showDividers), 0)); + json.put("LinearLayout_dividerPadding", array.getDimensionPixelSize(sortedAttrs.indexOf(android.R.attr.dividerPadding), 0)); - a.recycle(); - writer.name(styleName).value(json); + array.recycle(); + writer.name("actionBarTabBarStyle").value(json); } catch (Exception e) { e.printStackTrace(); } } - private void extractWindow(SimpleJsonWriter writer, String styleName) { + private void extractWindow(SimpleJsonWriter writer) { JSONObject json = new JSONObject(); - try - { - Class<?> attrClass = Class.forName("android.R$attr"); - int[] windowAttrs = (int[]) styleableClass.getDeclaredField("Window").get(null); - - int backgroundId = attrClass.getDeclaredField("windowBackground").getInt(null); - TypedArray a = m_theme.obtainStyledAttributes(null, windowAttrs, backgroundId, 0); - Drawable background = a.getDrawable(getField(styleableClass, "Window_windowBackground")); + try { + int[] attributes = new int[]{ + android.R.attr.windowBackground, + android.R.attr.windowFrame + }; + Arrays.sort(attributes); + TypedArray array = obtainStyledAttributes(android.R.attr.popupWindowStyle, attributes); + ArrayList<Integer> sortedAttrs = getArrayListFromIntArray(attributes); + + Drawable background = array.getDrawable(sortedAttrs.indexOf(android.R.attr.windowBackground)); if (background != null) - json.put("Window_windowBackground", getDrawable(background, styleName + "_Window_windowBackground", null)); - a.recycle(); + json.put("Window_windowBackground", getDrawable(background, android.R.attr.popupWindowStyle + "_Window_windowBackground", null)); - int frameId = attrClass.getDeclaredField("windowFrame").getInt(null); - a = m_theme.obtainStyledAttributes(null, windowAttrs, frameId, 0); - Drawable frame = a.getDrawable(getField(styleableClass, "Window_windowFrame")); + Drawable frame = array.getDrawable(sortedAttrs.indexOf(android.R.attr.windowFrame)); if (frame != null) - json.put("Window_windowFrame", getDrawable(frame, styleName + "_Window_windowFrame", null)); - a.recycle(); - - writer.name(styleName).value(json); + json.put("Window_windowFrame", getDrawable(frame, android.R.attr.popupWindowStyle + "_Window_windowFrame", null)); + array.recycle(); + writer.name("windowStyle").value(json); } catch (Exception e) { e.printStackTrace(); } } - private JSONObject extractDefaultPalette() - { - TypedArray array = m_theme.obtainStyledAttributes(new int[]{ - android.R.attr.textAppearance - }); - int pos = 0; - JSONObject json = extractTextAppearance(array.getResourceId(pos++, -1)); + private JSONObject extractDefaultPalette() { + JSONObject json = extractTextAppearance(android.R.attr.textAppearance); try { json.put("defaultBackgroundColor", defaultBackgroundColor); json.put("defaultTextColorPrimary", defaultTextColor); } catch (Exception e) { e.printStackTrace(); } - array.recycle(); return json; } - public ExtractStyle(Context context, String extractPath, boolean minimal) - { -// Log.i(MinistroService.TAG, "Extract " + extractPath); - m_minimal = minimal; - m_extractPath = extractPath + "/"; - new File(m_extractPath).mkdirs(); -// MinistroActivity.nativeChmode(m_extractPath, 0755); - m_context = context; - m_theme = context.getTheme(); - TypedArray array = m_theme.obtainStyledAttributes(new int[]{ - android.R.attr.colorBackground, - android.R.attr.textColorPrimary, - android.R.attr.textColor - }); - defaultBackgroundColor = array.getColor(0, 0); - int textColor = array.getColor(1, 0xFFFFFF); - if (textColor == 0xFFFFFF) - textColor = array.getColor(2, 0xFFFFFF); - defaultTextColor = textColor; - array.recycle(); + static class SimpleJsonWriter { + private final OutputStreamWriter m_writer; + private boolean m_addComma = false; + private int m_indentLevel = 0; + + public SimpleJsonWriter(String filePath) throws FileNotFoundException { + m_writer = new OutputStreamWriter(new FileOutputStream(filePath)); + } - try - { - SimpleJsonWriter jsonWriter = new SimpleJsonWriter(m_extractPath+"style.json"); - jsonWriter.beginObject(); - try { - jsonWriter.name("defaultStyle").value(extractDefaultPalette()); - extractWindow(jsonWriter, "windowStyle"); - jsonWriter.name("buttonStyle").value(extractTextAppearanceInformations("buttonStyle", "QPushButton", null, -1)); - jsonWriter.name("spinnerStyle").value(extractTextAppearanceInformations("spinnerStyle", "QComboBox", null, -1)); - extractProgressBar(jsonWriter, "progressBarStyleHorizontal", "QProgressBar"); - extractProgressBar(jsonWriter, "progressBarStyleLarge", null); - extractProgressBar(jsonWriter, "progressBarStyleSmall", null); - extractProgressBar(jsonWriter, "progressBarStyle", null); - extractAbsSeekBar(jsonWriter, "seekBarStyle", "QSlider"); - extractSwitch(jsonWriter, "switchStyle", null); - extractCompoundButton(jsonWriter, "checkboxStyle", "QCheckBox"); - jsonWriter.name("editTextStyle").value(extractTextAppearanceInformations("editTextStyle", "QLineEdit", null, -1)); - extractCompoundButton(jsonWriter, "radioButtonStyle", "QRadioButton"); - jsonWriter.name("textViewStyle").value(extractTextAppearanceInformations("textViewStyle", "QWidget", null, -1)); - jsonWriter.name("scrollViewStyle").value(extractTextAppearanceInformations("scrollViewStyle", "QAbstractScrollArea", null, -1)); - extractListView(jsonWriter, "listViewStyle", "QListView"); - jsonWriter.name("listSeparatorTextViewStyle").value(extractTextAppearanceInformations("listSeparatorTextViewStyle", null, null, -1)); - extractItemsStyle(jsonWriter); - extractCompoundButton(jsonWriter, "buttonStyleToggle", null); - extractCalendar(jsonWriter, "calendarViewStyle", "QCalendarWidget"); - extractToolBar(jsonWriter, "actionBarStyle", "QToolBar"); - jsonWriter.name("actionButtonStyle").value(extractTextAppearanceInformations("actionButtonStyle", "QToolButton", null, -1)); - jsonWriter.name("actionBarTabTextStyle").value(extractTextAppearanceInformations("actionBarTabTextStyle", null, null, -1)); - jsonWriter.name("actionBarTabStyle").value(extractTextAppearanceInformations("actionBarTabStyle", null, null, -1)); - jsonWriter.name("actionOverflowButtonStyle").value(extractImageViewInformations("actionOverflowButtonStyle", null)); - extractTabBar(jsonWriter, "actionBarTabBarStyle", "QTabBar"); - } catch (Exception e) { - e.printStackTrace(); - } - jsonWriter.endObject(); - jsonWriter.close(); -// MinistroActivity.nativeChmode(m_extractPath+"style.json", 0644); + public void close() throws IOException { + m_writer.close(); } - catch (Exception e) { - e.printStackTrace(); + + private void writeIndent() throws IOException { + m_writer.write(" ", 0, m_indentLevel); + } + + void beginObject() throws IOException { + writeIndent(); + m_writer.write("{\n"); + ++m_indentLevel; + m_addComma = false; + } + + void endObject() throws IOException { + m_writer.write("\n"); + writeIndent(); + m_writer.write("}\n"); + --m_indentLevel; + m_addComma = false; + } + + SimpleJsonWriter name(String name) throws IOException { + if (m_addComma) { + m_writer.write(",\n"); + } + writeIndent(); + m_writer.write(JSONObject.quote(name) + ": "); + m_addComma = true; + return this; + } + + void value(JSONObject value) throws IOException { + m_writer.write(value.toString()); + } + } + + static class DrawableCache { + JSONObject object; + Object drawable; + public DrawableCache(JSONObject json, Object drawable) { + object = json; + this.drawable = drawable; } } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java --- qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java 2022-11-11 15:29:17.000000000 +0800 @@ -154,6 +154,7 @@ private CursorHandle m_leftSelectionHandle; private CursorHandle m_rightSelectionHandle; private EditPopupMenu m_editPopupMenu; + private boolean m_isPluginRunning = false; public void setFullScreen(boolean enterFullScreen) { @@ -190,6 +191,11 @@ } } + public boolean isKeyboardVisible() + { + return m_keyboardIsVisible; + } + // input method hints - must be kept in sync with QTDIR/src/corelib/global/qnamespace.h private final int ImhHiddenText = 0x1; private final int ImhSensitiveData = 0x2; @@ -233,7 +239,6 @@ private QtAccessibilityDelegate m_accessibilityDelegate = null; - public boolean setKeyboardVisibility(boolean visibility, long timeStamp) { if (m_showHideTimeStamp > timeStamp) @@ -243,7 +248,7 @@ if (m_keyboardIsVisible == visibility) return false; m_keyboardIsVisible = visibility; - QtNative.keyboardVisibilityChanged(m_keyboardIsVisible); + QtNative.keyboardVisibilityUpdated(m_keyboardIsVisible); if (visibility == false) updateFullScreen(); // Hiding the keyboard clears the immersive mode, so we need to set it again. @@ -352,8 +357,12 @@ inputType |= android.text.InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS; } - if ((inputHints & ImhMultiLine) != 0) + if ((inputHints & ImhMultiLine) != 0) { inputType |= android.text.InputType.TYPE_TEXT_FLAG_MULTI_LINE; + // Clear imeOptions for Multi-Line Type + // User should be able to insert new line in such case + imeOptions = android.view.inputmethod.EditorInfo.IME_ACTION_DONE; + } if ((inputHints & (ImhNoPredictiveText | ImhSensitiveData | ImhHiddenText)) != 0) inputType |= android.text.InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS; @@ -811,6 +820,10 @@ DisplayMetrics metrics = new DisplayMetrics(); m_activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); final int kbHeight = metrics.heightPixels - r.bottom; + if (kbHeight < 0) { + setKeyboardVisibility(false, System.nanoTime()); + return true; + } final int[] location = new int[2]; m_layout.getLocationOnScreen(location); QtNative.keyboardGeometryChanged(location[0], r.bottom - location[1], @@ -876,6 +889,11 @@ m_accessibilityDelegate.notifyObjectFocus(viewId); } + public void notifyQtAndroidPluginRunning(boolean running) + { + m_isPluginRunning = running; + } + public void initializeAccessibility() { m_accessibilityDelegate = new QtAccessibilityDelegate(m_activity, m_layout, this); @@ -983,7 +1001,7 @@ public boolean onKeyDown(int keyCode, KeyEvent event) { - if (!m_started) + if (!m_started || !m_isPluginRunning) return false; m_metaState = MetaKeyKeyListener.handleKeyDown(m_metaState, keyCode, event); @@ -1017,7 +1035,7 @@ public boolean onKeyUp(int keyCode, KeyEvent event) { - if (!m_started) + if (!m_started || !m_isPluginRunning) return false; if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java --- qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java 2022-11-11 15:29:17.000000000 +0800 @@ -257,6 +257,29 @@ // If the sendKeyEvent was invoked, it means that the button not related with composingText was used // In such case composing text (if it exists) should be finished immediately finishComposingText(); + if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER && m_view != null) { + KeyEvent fakeEvent; + switch (m_view.m_imeOptions) { + case android.view.inputmethod.EditorInfo.IME_ACTION_NEXT: + fakeEvent = new KeyEvent(event.getDownTime(), + event.getEventTime(), + event.getAction(), + KeyEvent.KEYCODE_TAB, + event.getRepeatCount(), + event.getMetaState()); + return super.sendKeyEvent(fakeEvent); + case android.view.inputmethod.EditorInfo.IME_ACTION_PREVIOUS: + fakeEvent = new KeyEvent(event.getDownTime(), + event.getEventTime(), + event.getAction(), + KeyEvent.KEYCODE_TAB, + event.getRepeatCount(), + KeyEvent.META_SHIFT_ON); + return super.sendKeyEvent(fakeEvent); + default: + break; + } + } return super.sendKeyEvent(event); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java --- qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java 2022-11-11 15:29:17.000000000 +0800 @@ -46,10 +46,13 @@ import android.util.DisplayMetrics; import android.view.View; import android.view.ViewGroup; +import android.graphics.Rect; public class QtLayout extends ViewGroup { private Runnable m_startApplicationRunnable; + private int m_bottomDisplayFrame = -1; + public QtLayout(Context context, Runnable startRunnable) { super(context); @@ -66,13 +69,32 @@ super(context, attrs, defStyle); } - @Override - protected void onSizeChanged (int w, int h, int oldw, int oldh) + private void handleSizeChanged (int w, int h, int oldw, int oldh) { DisplayMetrics metrics = new DisplayMetrics(); ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics); - QtNative.setApplicationDisplayMetrics(metrics.widthPixels, metrics.heightPixels, w, h, - metrics.xdpi, metrics.ydpi, metrics.scaledDensity, metrics.density); + + Rect r = new Rect(); + ((Activity) getContext()).getWindow().getDecorView().getWindowVisibleDisplayFrame(r); + + if (m_bottomDisplayFrame != r.bottom || oldh == -1) { + m_bottomDisplayFrame = r.bottom; + QtNative.setApplicationDisplayMetrics(metrics.widthPixels, metrics.heightPixels, w, h, + metrics.xdpi, + metrics.ydpi, + metrics.scaledDensity, + metrics.density, + ((metrics.heightPixels == h) + || (metrics.heightPixels == h + r.top) + || (m_bottomDisplayFrame > metrics.heightPixels + r.top))); + } + } + + @Override + protected void onSizeChanged (int w, int h, int oldw, int oldh) + { + handleSizeChanged (w, h, oldw, oldh); + if (m_startApplicationRunnable != null) { m_startApplicationRunnable.run(); m_startApplicationRunnable = null; @@ -150,6 +172,8 @@ } } + + handleSizeChanged (r, b, 0, -1); } // Override to allow type-checking of LayoutParams. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtNative.java qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtNative.java --- qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtNative.java 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtNative.java 2022-11-11 15:29:17.000000000 +0800 @@ -65,6 +65,7 @@ import android.content.ClipboardManager; import android.content.ClipboardManager.OnPrimaryClipChangedListener; import android.content.ClipData; +import android.content.ClipDescription; import android.os.ParcelFileDescriptor; import android.util.Log; import android.view.ContextMenu; @@ -97,6 +98,7 @@ public static final String QtTAG = "Qt JAVA"; // string used for Log.x private static ArrayList<Runnable> m_lostActions = new ArrayList<Runnable>(); // a list containing all actions which could not be performed (e.g. the main activity is destroyed, etc.) private static boolean m_started = false; + private static boolean m_isKeyboardHiding = false; private static int m_displayMetricsScreenWidthPixels = 0; private static int m_displayMetricsScreenHeightPixels = 0; private static int m_displayMetricsDesktopWidthPixels = 0; @@ -611,7 +613,8 @@ m_displayMetricsXDpi, m_displayMetricsYDpi, m_displayMetricsScaledDensity, - m_displayMetricsDensity); + m_displayMetricsDensity, + true); } }); m_qtThread.post(new Runnable() { @@ -633,7 +636,8 @@ double XDpi, double YDpi, double scaledDensity, - double density) + double density, + boolean forceUpdate) { /* Fix buggy dpi report */ if (XDpi < android.util.DisplayMetrics.DENSITY_LOW) @@ -650,7 +654,8 @@ XDpi, YDpi, scaledDensity, - density); + density, + forceUpdate); } else { m_displayMetricsScreenWidthPixels = screenWidthPixels; m_displayMetricsScreenHeightPixels = screenHeightPixels; @@ -907,6 +912,7 @@ private static void hideSoftwareKeyboard() { + m_isKeyboardHiding = true; runAction(new Runnable() { @Override public void run() { @@ -929,6 +935,13 @@ }); } + public static boolean isSoftwareKeyboardVisible() + { + if (m_activityDelegate == null) + return false; + return m_activityDelegate.isKeyboardVisible() && !m_isKeyboardHiding; + } + private static void notifyAccessibilityLocationChange() { runAction(new Runnable() { @@ -965,6 +978,11 @@ }); } + public static void notifyQtAndroidPluginRunning(final boolean running) + { + m_activityDelegate.notifyQtAndroidPluginRunning(running); + } + private static void registerClipboardManager() { if (m_service == null || m_activity != null) { // Avoid freezing if only service @@ -996,6 +1014,7 @@ { if (Build.VERSION.SDK_INT >= 28 && m_clipboardManager != null) m_clipboardManager.clearPrimaryClip(); + m_usePrimaryClip = false; } private static void setClipboardText(String text) { @@ -1009,10 +1028,8 @@ { try { if (m_clipboardManager != null && m_clipboardManager.hasPrimaryClip()) { - ClipData primaryClip = m_clipboardManager.getPrimaryClip(); - for (int i = 0; i < primaryClip.getItemCount(); ++i) - if (primaryClip.getItemAt(i).getText() != null) - return true; + ClipDescription primaryClipDescription = m_clipboardManager.getPrimaryClipDescription(); + return primaryClipDescription.hasMimeType("text/*"); } } catch (Exception e) { Log.e(QtTAG, "Failed to get clipboard data", e); @@ -1067,10 +1084,8 @@ { try { if (m_clipboardManager != null && m_clipboardManager.hasPrimaryClip()) { - ClipData primaryClip = m_clipboardManager.getPrimaryClip(); - for (int i = 0; i < Objects.requireNonNull(primaryClip).getItemCount(); ++i) - if (primaryClip.getItemAt(i).getHtmlText() != null) - return true; + ClipDescription primaryClipDescription = m_clipboardManager.getPrimaryClipDescription(); + return primaryClipDescription.hasMimeType("text/html"); } } catch (Exception e) { Log.e(QtTAG, "Failed to get clipboard data", e); @@ -1106,10 +1121,8 @@ { try { if (m_clipboardManager != null && m_clipboardManager.hasPrimaryClip()) { - ClipData primaryClip = m_clipboardManager.getPrimaryClip(); - for (int i = 0; i < primaryClip.getItemCount(); ++i) - if (primaryClip.getItemAt(i).getUri() != null) - return true; + ClipDescription primaryClipDescription = m_clipboardManager.getPrimaryClipDescription(); + return primaryClipDescription.hasMimeType("text/uri-list"); } } catch (Exception e) { Log.e(QtTAG, "Failed to get clipboard data", e); @@ -1293,6 +1306,12 @@ }); } + public static void keyboardVisibilityUpdated(boolean visibility) + { + m_isKeyboardHiding = false; + keyboardVisibilityChanged(visibility); + } + private static String[] listAssetContent(android.content.res.AssetManager asset, String path) { String [] list; ArrayList<String> res = new ArrayList<String>(); @@ -1324,7 +1343,8 @@ double XDpi, double YDpi, double scaledDensity, - double density); + double density, + boolean forceUpdate); public static native void handleOrientationChanged(int newRotation, int nativeOrientation); // screen methods diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java --- qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java 2022-11-11 15:29:17.000000000 +0800 @@ -115,7 +115,7 @@ QtNative.setService(m_service, this); QtNative.setClassLoader(classLoader); - QtNative.setApplicationDisplayMetrics(10, 10, 10, 10, 120, 120, 1.0, 1.0); + QtNative.setApplicationDisplayMetrics(10, 10, 10, 10, 120, 120, 1.0, 1.0, false); if (loaderParams.containsKey(STATIC_INIT_CLASSES_KEY)) { for (String className: loaderParams.getStringArray(STATIC_INIT_CLASSES_KEY)) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java --- qtbase-opensource-src-5.15.3+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java 2022-11-11 15:29:17.000000000 +0800 @@ -101,6 +101,11 @@ @Override public boolean onTouchEvent(MotionEvent event) { + // QTBUG-65927 + // Fix event positions depending on Surface position. + // In case when Surface is moved, we should also add this move to event position + event.setLocation(event.getX() + getX(), event.getY() + getY()); + QtNative.sendTouchEvent(event, getId()); m_gestureDetector.onTouchEvent(event); return true; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java qtbase-opensource-src-5.15.8+dfsg/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java --- qtbase-opensource-src-5.15.3+dfsg/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java 2022-11-11 15:29:17.000000000 +0800 @@ -1136,4 +1136,13 @@ { QtNative.activityDelegate().notifyObjectFocus(viewId); } + public boolean isKeyboardVisible() + { + return QtNative.activityDelegate().isKeyboardVisible(); + } + + public void notifyQtAndroidPluginRunning(boolean running) + { + QtNative.activityDelegate().notifyQtAndroidPluginRunning(running); + } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java qtbase-opensource-src-5.15.8+dfsg/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java --- qtbase-opensource-src-5.15.3+dfsg/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java 2022-11-11 15:29:17.000000000 +0800 @@ -102,9 +102,7 @@ } } } - } catch (Exception e) { - e.printStackTrace(); - } + } catch (Exception e) { } } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/android/java/src/org/qtproject/qt5/android/bindings/QtService.java qtbase-opensource-src-5.15.8+dfsg/src/android/java/src/org/qtproject/qt5/android/bindings/QtService.java --- qtbase-opensource-src-5.15.3+dfsg/src/android/java/src/org/qtproject/qt5/android/bindings/QtService.java 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/android/java/src/org/qtproject/qt5/android/bindings/QtService.java 2022-11-11 15:29:17.000000000 +0800 @@ -39,8 +39,11 @@ import android.app.Service; import android.content.Intent; import android.content.res.Configuration; +import android.os.Bundle; import android.os.IBinder; +import org.qtproject.qt5.android.QtNative; + public class QtService extends Service { QtServiceLoader m_loader = new QtServiceLoader(this); @@ -153,4 +156,14 @@ return super.onUnbind(intent); } //--------------------------------------------------------------------------- + + public boolean loadApplication(Service service, ClassLoader classLoader, Bundle loaderParams) + { + return QtNative.serviceDelegate().loadApplication(service, classLoader, loaderParams); + } + + public boolean startApplication() + { + return QtNative.serviceDelegate().startApplication(); + } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/android/templates/AndroidManifest.xml qtbase-opensource-src-5.15.8+dfsg/src/android/templates/AndroidManifest.xml --- qtbase-opensource-src-5.15.3+dfsg/src/android/templates/AndroidManifest.xml 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/android/templates/AndroidManifest.xml 2022-11-11 15:29:17.000000000 +0800 @@ -9,7 +9,7 @@ <!-- %%INSERT_FEATURES --> <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> - <application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --" android:extractNativeLibs="true"> + <application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --" android:extractNativeLibs="true" android:allowNativeHeapPointerTagging="false"> <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop"> <intent-filter> <action android:name="android.intent.action.MAIN"/> @@ -73,7 +73,7 @@ * minimal - useful for Quick Controls 2 apps, it is much faster than "full" * none - useful for apps that don't use any of the above Qt modules --> - <meta-data android:name="android.app.extract_android_style" android:value="default"/> + <meta-data android:name="android.app.extract_android_style" android:value="minimal"/> <!-- extract android style --> </activity> diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/android/templates/build.gradle qtbase-opensource-src-5.15.8+dfsg/src/android/templates/build.gradle --- qtbase-opensource-src-5.15.3+dfsg/src/android/templates/build.gradle 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/android/templates/build.gradle 2022-11-11 15:29:17.000000000 +0800 @@ -5,7 +5,7 @@ } dependencies { - classpath 'com.android.tools.build:gradle:3.6.0' + classpath 'com.android.tools.build:gradle:7.0.2' } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/concurrent/qtconcurrentfilter.h qtbase-opensource-src-5.15.8+dfsg/src/concurrent/qtconcurrentfilter.h --- qtbase-opensource-src-5.15.3+dfsg/src/concurrent/qtconcurrentfilter.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/concurrent/qtconcurrentfilter.h 2022-11-11 15:29:17.000000000 +0800 @@ -136,7 +136,9 @@ template <typename Sequence, typename KeepFunctor> void blockingFilter(Sequence &sequence, KeepFunctor keep) { - filterInternal(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::PushBackWrapper()).startBlocking(); + QFuture<void> future = + filterInternal(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::PushBackWrapper()); + future.waitForFinished(); } // blocking filteredReduced() on sequences @@ -146,8 +148,9 @@ ReduceFunctor reduce, ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce)) { - return startFilteredReduced<ResultType>(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::createFunctionWrapper(reduce), options) - .startBlocking(); + QFuture<ResultType> future = + startFilteredReduced<ResultType>(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::createFunctionWrapper(reduce), options); + return future.result(); } #ifndef Q_CLANG_QDOC @@ -173,12 +176,11 @@ ReduceFunctor reduce, ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce)) { - return startFilteredReduced<ResultType> - (begin, end, + QFuture<ResultType> future = startFilteredReduced<ResultType>(begin, end, QtPrivate::createFunctionWrapper(keep), QtPrivate::createFunctionWrapper(reduce), - options) - .startBlocking(); + options); + return future.result(); } #ifndef Q_CLANG_QDOC @@ -189,12 +191,13 @@ ReduceFunctor reduce, ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce)) { - return startFilteredReduced<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> + QFuture<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> future = + startFilteredReduced<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> (begin, end, QtPrivate::createFunctionWrapper(keep), QtPrivate::createFunctionWrapper(reduce), - options) - .startBlocking(); + options); + return future.result(); } #endif @@ -202,17 +205,20 @@ template <typename Sequence, typename KeepFunctor> Sequence blockingFiltered(const Sequence &sequence, KeepFunctor keep) { - return startFilteredReduced<Sequence>(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::PushBackWrapper(), OrderedReduce).startBlocking(); + QFuture<Sequence> future = + startFilteredReduced<Sequence>(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::PushBackWrapper(), OrderedReduce); + return future.result(); } // blocking filtered() on iterators template <typename OutputSequence, typename Iterator, typename KeepFunctor> OutputSequence blockingFiltered(Iterator begin, Iterator end, KeepFunctor keep) { - return startFilteredReduced<OutputSequence>(begin, end, + QFuture<OutputSequence> future = startFilteredReduced<OutputSequence>(begin, end, QtPrivate::createFunctionWrapper(keep), QtPrivate::PushBackWrapper(), - OrderedReduce).startBlocking(); + OrderedReduce); + return future.result(); } } // namespace QtConcurrent diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/concurrent/qtconcurrentmap.h qtbase-opensource-src-5.15.8+dfsg/src/concurrent/qtconcurrentmap.h --- qtbase-opensource-src-5.15.3+dfsg/src/concurrent/qtconcurrentmap.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/concurrent/qtconcurrentmap.h 2022-11-11 15:29:17.000000000 +0800 @@ -143,14 +143,16 @@ template <typename Sequence, typename MapFunctor> void blockingMap(Sequence &sequence, MapFunctor map) { - startMap(sequence.begin(), sequence.end(), QtPrivate::createFunctionWrapper(map)).startBlocking(); + QFuture<void> future = startMap(sequence.begin(), sequence.end(), QtPrivate::createFunctionWrapper(map)); + future.waitForFinished(); } // blockingMap() for iterator ranges template <typename Iterator, typename MapFunctor> void blockingMap(Iterator begin, Iterator end, MapFunctor map) { - startMap(begin, end, QtPrivate::createFunctionWrapper(map)).startBlocking(); + QFuture<void> future = startMap(begin, end, QtPrivate::createFunctionWrapper(map)); + future.waitForFinished(); } // blockingMappedReduced() for sequences @@ -160,12 +162,13 @@ ReduceFunctor reduce, ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce)) { - return QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, ResultType> + QFuture<ResultType> future = + QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, ResultType> (sequence, QtPrivate::createFunctionWrapper(map), QtPrivate::createFunctionWrapper(reduce), - options) - .startBlocking(); + options); + return future.result(); } template <typename MapFunctor, typename ReduceFunctor, typename Sequence> @@ -174,12 +177,13 @@ ReduceFunctor reduce, ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce)) { - return QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> + QFuture<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> future = + QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> (sequence, QtPrivate::createFunctionWrapper(map), QtPrivate::createFunctionWrapper(reduce), - options) - .startBlocking(); + options); + return future.result(); } // blockingMappedReduced() for iterator ranges @@ -190,12 +194,13 @@ ReduceFunctor reduce, QtConcurrent::ReduceOptions options = QtConcurrent::ReduceOptions(QtConcurrent::UnorderedReduce | QtConcurrent::SequentialReduce)) { - return QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, ResultType> + QFuture<ResultType> future = + QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, ResultType> (begin, end, QtPrivate::createFunctionWrapper(map), QtPrivate::createFunctionWrapper(reduce), - options) - .startBlocking(); + options); + return future.result(); } template <typename Iterator, typename MapFunctor, typename ReduceFunctor> @@ -205,12 +210,13 @@ ReduceFunctor reduce, QtConcurrent::ReduceOptions options = QtConcurrent::ReduceOptions(QtConcurrent::UnorderedReduce | QtConcurrent::SequentialReduce)) { - return QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> + QFuture<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> future = + QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> (begin, end, QtPrivate::createFunctionWrapper(map), QtPrivate::createFunctionWrapper(reduce), - options) - .startBlocking(); + options); + return future.result(); } // mapped() for sequences with a different putput sequence type. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/concurrent/qtconcurrentthreadengine.cpp qtbase-opensource-src-5.15.8+dfsg/src/concurrent/qtconcurrentthreadengine.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/concurrent/qtconcurrentthreadengine.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/concurrent/qtconcurrentthreadengine.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -176,39 +176,6 @@ finish(); } -void ThreadEngineBase::startBlocking() -{ - start(); - barrier.acquire(); - startThreads(); - - bool throttled = false; -#ifndef QT_NO_EXCEPTIONS - try { -#endif - while (threadFunction() == ThrottleThread) { - if (threadThrottleExit()) { - throttled = true; - break; - } - } -#ifndef QT_NO_EXCEPTIONS - } catch (QException &e) { - handleException(e); - } catch (...) { - handleException(QUnhandledException()); - } -#endif - - if (throttled == false) { - barrier.release(); - } - - barrier.wait(); - finish(); - exceptionStore.throwPossibleException(); -} - void ThreadEngineBase::startThread() { startThreadInternal(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/concurrent/qtconcurrentthreadengine.h qtbase-opensource-src-5.15.8+dfsg/src/concurrent/qtconcurrentthreadengine.h --- qtbase-opensource-src-5.15.3+dfsg/src/concurrent/qtconcurrentthreadengine.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/concurrent/qtconcurrentthreadengine.h 2022-11-11 15:29:17.000000000 +0800 @@ -91,7 +91,6 @@ ThreadEngineBase(); virtual ~ThreadEngineBase(); void startSingleThreaded(); - void startBlocking(); void startThread(); bool isCanceled(); void waitForResume(); @@ -145,15 +144,6 @@ } // Runs the user algorithm using multiple threads. - // This function blocks until the algorithm is finished, - // and then returns the result. - T *startBlocking() - { - ThreadEngineBase::startBlocking(); - return result(); - } - - // Runs the user algorithm using multiple threads. // Does not block, returns a future. QFuture<T> startAsynchronously() { @@ -233,13 +223,6 @@ public: ThreadEngineStarter(TypedThreadEngine *eng) : Base(eng) { } - - T startBlocking() - { - T t = *this->threadEngine->startBlocking(); - delete this->threadEngine; - return t; - } }; // Full template specialization where T is void. @@ -247,14 +230,8 @@ class ThreadEngineStarter<void> : public ThreadEngineStarterBase<void> { public: - ThreadEngineStarter<void>(ThreadEngine<void> *_threadEngine) - :ThreadEngineStarterBase<void>(_threadEngine) {} - - void startBlocking() - { - this->threadEngine->startBlocking(); - delete this->threadEngine; - } + ThreadEngineStarter(ThreadEngine<void> *_threadEngine) + : ThreadEngineStarterBase<void>(_threadEngine) {} }; //! [qtconcurrentthreadengine-1] diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/Qt5AndroidSupport.cmake qtbase-opensource-src-5.15.8+dfsg/src/corelib/Qt5AndroidSupport.cmake --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/Qt5AndroidSupport.cmake 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/Qt5AndroidSupport.cmake 2022-11-11 15:29:17.000000000 +0800 @@ -19,7 +19,7 @@ endif() endforeach() option(ANDROID_MIN_SDK_VERSION "Android minimum SDK version" "21") - option(ANDROID_TARGET_SDK_VERSION "Android target SDK version" "29") + option(ANDROID_TARGET_SDK_VERSION "Android target SDK version" "30") # Make sure to delete the "android-build" directory, which contains all the # build artefacts, and also the androiddeployqt/gradle artefacts @@ -123,24 +123,28 @@ set(android_deploy_qt_platform "--android-platform ${ANDROID_SDK_PLATFORM}") endif() - add_custom_target(apk - COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=${JAVA_HOME} ${ANDROID_DEPLOY_QT} - --input "${CMAKE_BINARY_DIR}/android_deployment_settings.json" - --output "${CMAKE_BINARY_DIR}/android-build" - --apk "${CMAKE_BINARY_DIR}/android-build/${PROJECT_NAME}.apk" - ${android_deploy_qt_platform} - ${android_deploy_qt_jdk} - VERBATIM) - - add_custom_target(aab - COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=${JAVA_HOME} ${ANDROID_DEPLOY_QT} - --input "${CMAKE_BINARY_DIR}/android_deployment_settings.json" - --output "${CMAKE_BINARY_DIR}/android-build" - --apk "${CMAKE_BINARY_DIR}/android-build/${PROJECT_NAME}.apk" - --aab - ${android_deploy_qt_platform} - ${android_deploy_qt_jdk} - VERBATIM) + if(NOT TARGET apk) + add_custom_target(apk + COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=${JAVA_HOME} ${ANDROID_DEPLOY_QT} + --input "${CMAKE_BINARY_DIR}/android_deployment_settings.json" + --output "${CMAKE_BINARY_DIR}/android-build" + --apk "${CMAKE_BINARY_DIR}/android-build/${PROJECT_NAME}.apk" + ${android_deploy_qt_platform} + ${android_deploy_qt_jdk} + VERBATIM) + endif() + + if(NOT TARGET aab) + add_custom_target(aab + COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=${JAVA_HOME} ${ANDROID_DEPLOY_QT} + --input "${CMAKE_BINARY_DIR}/android_deployment_settings.json" + --output "${CMAKE_BINARY_DIR}/android-build" + --apk "${CMAKE_BINARY_DIR}/android-build/${PROJECT_NAME}.apk" + --aab + ${android_deploy_qt_platform} + ${android_deploy_qt_jdk} + VERBATIM) + endif() include(ExternalProject) macro (setup_library library_name android_abi) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/Qt5CoreMacros.cmake qtbase-opensource-src-5.15.8+dfsg/src/corelib/Qt5CoreMacros.cmake --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/Qt5CoreMacros.cmake 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/Qt5CoreMacros.cmake 2022-11-11 15:29:17.000000000 +0800 @@ -400,6 +400,9 @@ add_library(rcc_object_${outfilename} OBJECT ${tmpoutfile}) set_target_properties(rcc_object_${outfilename} PROPERTIES AUTOMOC OFF) set_target_properties(rcc_object_${outfilename} PROPERTIES AUTOUIC OFF) + + target_link_libraries(rcc_object_${outfilename} PUBLIC Qt5::Core) + add_dependencies(rcc_object_${outfilename} big_resources_${outfilename}) # The modification of TARGET_OBJECTS needs the following change in cmake # https://gitlab.kitware.com/cmake/cmake/commit/93c89bc75ceee599ba7c08b8fe1ac5104942054f diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/codecs/qicucodec.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/codecs/qicucodec.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/codecs/qicucodec.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/codecs/qicucodec.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -565,6 +565,32 @@ { } +/*! + \internal + + Custom callback for the ICU from Unicode conversion. It's invoked when the + conversion from Unicode detects illegal or unrecognized character. + + Assumes that context contains a pointer to QTextCodec::ConverterState + structure. Updates its invalid characters count and calls a default + callback, that replaces the invalid characters properly. +*/ +static void customFromUnicodeSubstitutionCallback(const void *context, + UConverterFromUnicodeArgs *fromUArgs, + const UChar *codeUnits, + int32_t length, + UChar32 codePoint, + UConverterCallbackReason reason, + UErrorCode *err) +{ + auto *state = reinterpret_cast<QTextCodec::ConverterState *>(const_cast<void *>(context)); + if (state) + state->invalidChars++; + // Call the default callback that replaces all illegal or unrecognized + // sequences with the substitute string + UCNV_FROM_U_CALLBACK_SUBSTITUTE(nullptr, fromUArgs, codeUnits, length, codePoint, reason, err); +} + UConverter *QIcuCodec::getConverter(QTextCodec::ConverterState *state) const { UConverter *conv = nullptr; @@ -577,8 +603,18 @@ state->d = ucnv_open(m_name, &error); ucnv_setSubstChars(static_cast<UConverter *>(state->d), state->flags & QTextCodec::ConvertInvalidToNull ? "\0" : "?", 1, &error); - if (U_FAILURE(error)) + if (!U_FAILURE(error)) { + error = U_ZERO_ERROR; + ucnv_setFromUCallBack(static_cast<UConverter *>(state->d), + customFromUnicodeSubstitutionCallback, state, nullptr, + nullptr, &error); + if (U_FAILURE(error)) { + qDebug("getConverter(state) failed to install custom callback. " + "canEncode() may report incorrect results."); + } + } else { qDebug("getConverter(state) ucnv_open failed %s %s", m_name, u_errorName(error)); + } } conv = static_cast<UConverter *>(state->d); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/configure.json qtbase-opensource-src-5.15.8+dfsg/src/corelib/configure.json --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/configure.json 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/configure.json 2022-11-11 15:29:17.000000000 +0800 @@ -355,7 +355,7 @@ "std::future<int> f = std::async([]() { return 42; });", "(void)f.get();" ], - "qmake": "unix:LIBS += -lpthread" + "qmake": "unix:!vxworks:LIBS += -lpthread" } }, "cxx11_random": { @@ -1045,6 +1045,7 @@ "label": "QTimeZone", "purpose": "Provides support for time-zone handling.", "section": "Utilities", + "condition": "!config.wasm", "output": [ "publicFeature" ] }, "datetimeparser": { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/doc/snippets/code/doc_src_qset.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/doc/snippets/code/doc_src_qset.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/doc/snippets/code/doc_src_qset.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/doc/snippets/code/doc_src_qset.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -156,23 +156,3 @@ if (it != set.constEnd()) cout << "Found Jeanette" << endl; //! [12] - - -//! [13] -QSet<QString> set; -set << "red" << "green" << "blue" << ... << "black"; - -QList<QString> list = set.toList(); -std::sort(list.begin(), list.end()); -//! [13] - - -//! [14] -QStringList list; -list << "Julia" << "Mike" << "Mike" << "Julia" << "Julia"; - -QSet<QString> set = QSet<QString>::fromList(list); -set.contains("Julia"); // returns true -set.contains("Mike"); // returns true -set.size(); // returns 2 -//! [14] diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/doc/snippets/code/src_corelib_global_qrandom.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/doc/snippets/code/src_corelib_global_qrandom.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/doc/snippets/code/src_corelib_global_qrandom.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/doc/snippets/code/src_corelib_global_qrandom.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -127,5 +127,5 @@ //! [15] //! [16] - qint64 value = QRandomGenerator64::generate() & std::numeric_limits<qint64>::max(); + qint64 value = QRandomGenerator64::global()->generate() & std::numeric_limits<qint64>::max(); //! [16] diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/doc/snippets/code/src_corelib_io_qdir.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/doc/snippets/code/src_corelib_io_qdir.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/doc/snippets/code/src_corelib_io_qdir.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/doc/snippets/code/src_corelib_io_qdir.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -182,4 +182,17 @@ Q_CLEANUP_RESOURCE(myapp); //! [15] +//! [16] +QString absolute = "/local/bin"; +QString relative = "local/bin"; +QFileInfo absFile(absolute); +QFileInfo relFile(relative); + +QDir::setCurrent(QDir::rootPath()); +// absFile and relFile now point to the same file + +QDir::setCurrent("/tmp"); +// absFile now points to "/local/bin", +// while relFile points to "/tmp/local/bin" +//! [16] } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/doc/snippets/code/src_corelib_io_qfileinfo.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/doc/snippets/code/src_corelib_io_qfileinfo.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/doc/snippets/code/src_corelib_io_qfileinfo.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/doc/snippets/code/src_corelib_io_qfileinfo.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -90,19 +90,16 @@ //! [2] -QString absolute = "/local/bin"; -QString relative = "local/bin"; -QFileInfo absFile(absolute); -QFileInfo relFile(relative); - -QDir::setCurrent(QDir::rootPath()); -// absFile and relFile now point to the same file - -QDir::setCurrent("/tmp"); -// absFile now points to "/local/bin", -// while relFile points to "/tmp/local/bin" -//! [2] +QFileInfo info("/usr/bin/env"); + +QString path = info.absolutePath(); // path = /usr/bin +QString base = info.baseName(); // base = env +info.setFile("/etc/hosts"); + +path = info.absolutePath(); // path = /etc +base = info.baseName(); // base = hosts +//! [2] //! [3] QFileInfo fi("/tmp/archive.tar.gz"); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/doc/snippets/code/src_corelib_tools_qlistdata.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/doc/snippets/code/src_corelib_tools_qlistdata.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/doc/snippets/code/src_corelib_tools_qlistdata.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/doc/snippets/code/src_corelib_tools_qlistdata.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -228,7 +228,7 @@ QVector<double> vect; vect << 20.0 << 30.0 << 40.0 << 50.0; -QList<double> list = QVector<T>::fromVector(vect); +QList<double> list = QList<double>::fromVector(vect); // list: [20.0, 30.0, 40.0, 50.0] //! [21] @@ -240,41 +240,3 @@ QVector<QString> vect = list.toVector(); // vect: ["Sven", "Kim", "Ola"] //! [22] - - -//! [23] -QSet<int> set; -set << 20 << 30 << 40 << ... << 70; - -QList<int> list = QList<int>::fromSet(set); -std::sort(list.begin(), list.end()); -//! [23] - - -//! [24] -QStringList list; -list << "Julia" << "Mike" << "Mike" << "Julia" << "Julia"; - -QSet<QString> set = list.toSet(); -set.contains("Julia"); // returns true -set.contains("Mike"); // returns true -set.size(); // returns 2 -//! [24] - - -//! [25] -std::list<double> stdlist; -list.push_back(1.2); -list.push_back(0.5); -list.push_back(3.14); - -QList<double> list = QList<double>::fromStdList(stdlist); -//! [25] - - -//! [26] -QList<double> list; -list << 1.2 << 0.5 << 3.14; - -std::list<double> stdlist = list.toStdList(); -//! [26] diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/doc/src/includes/qfile-copy.qdocinc qtbase-opensource-src-5.15.8+dfsg/src/corelib/doc/src/includes/qfile-copy.qdocinc --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/doc/src/includes/qfile-copy.qdocinc 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/doc/src/includes/qfile-copy.qdocinc 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,11 @@ +This file is closed before it is copied. + +If the copied file is a symbolic link (symlink), the +file it refers to is copied, not the link itself. With the +exception of permissions, which are copied, no other file metadata +is copied. + +Returns \c true if successful; otherwise returns \c false. + +Note that if a file with the name \a newName already exists, +copy() returns \c false. This means QFile will not overwrite it. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/global/qcompilerdetection.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/global/qcompilerdetection.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/global/qcompilerdetection.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/global/qcompilerdetection.h 2022-11-11 15:29:17.000000000 +0800 @@ -1371,6 +1371,7 @@ # undef QT_COMPILER_SUPPORTS_SSE4_2 # undef QT_COMPILER_SUPPORTS_AVX # undef QT_COMPILER_SUPPORTS_AVX2 +# undef QT_COMPILER_SUPPORTS_F16C #endif #if !defined(Q_PROCESSOR_ARM) # undef QT_COMPILER_SUPPORTS_NEON diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/global/qfloat16_f16c.c qtbase-opensource-src-5.15.8+dfsg/src/corelib/global/qfloat16_f16c.c --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/global/qfloat16_f16c.c 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/global/qfloat16_f16c.c 2022-11-11 15:29:17.000000000 +0800 @@ -40,13 +40,8 @@ #include "private/qsimd_p.h" // The x86 F16C instructions operate on AVX registers, so AVX support is -// required. We don't need to check for __F16C__ because we this file wouldn't -// have been compiled if the support was missing in the first place, and not -// all compilers define it. Technically, we didn't need to check for __AVX__ -// either. -#if !QT_COMPILER_SUPPORTS_HERE(AVX) -# error "AVX support required" -#endif +// required. +#if QT_COMPILER_SUPPORTS_HERE(AVX) #ifdef __cplusplus QT_BEGIN_NAMESPACE @@ -89,3 +84,5 @@ } // extern "C" QT_END_NAMESPACE #endif + +#endif // QT_COMPILER_SUPPORTS_HERE(AVX) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/global/qglobal.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/global/qglobal.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/global/qglobal.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/global/qglobal.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -499,6 +499,14 @@ \since 4.2 Returns \c true if the flag \a flag is set, otherwise \c false. + + \note if \a flag contains multiple bits set to 1 (for instance, if + it's an enumerator equal to the bitwise-OR of other enumerators) + then this function will return \c true if and only if all the bits + are set in this flags object. On the other hand, if \a flag contains + no bits set to 1 (that is, its value as a integer is 0), then this + function will return \c true if and only if this flags object also + has no bits set to 1. */ /*! @@ -2256,7 +2264,17 @@ case Q_WINVER(6, 3): return workstation ? "8.1" : "Server 2012 R2"; case Q_WINVER(10, 0): - return workstation ? "10" : "Server 2016"; + if (workstation) { + if (osver.dwBuildNumber >= 22000) + return "11"; + return "10"; + } + // else: Server + if (osver.dwBuildNumber >= 20348) + return "Server 2022"; + if (osver.dwBuildNumber >= 17763) + return "Server 2019"; + return "Server 2016"; } #undef Q_WINVER // unknown, future version diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/global/qglobal.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/global/qglobal.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/global/qglobal.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/global/qglobal.h 2022-11-11 15:29:17.000000000 +0800 @@ -1102,13 +1102,16 @@ } +#define Q_FOREACH_JOIN(A, B) Q_FOREACH_JOIN_IMPL(A, B) +#define Q_FOREACH_JOIN_IMPL(A, B) A ## B + #if __cplusplus >= 201703L // Use C++17 if statement with initializer. User's code ends up in a else so // scoping of different ifs is not broken -#define Q_FOREACH(variable, container) \ -for (auto _container_ = QtPrivate::qMakeForeachContainer(container); \ - _container_.i != _container_.e; ++_container_.i) \ - if (variable = *_container_.i; false) {} else +#define Q_FOREACH_IMPL(variable, name, container) \ + for (auto name = QtPrivate::qMakeForeachContainer(container); \ + name.i != name.e; ++name.i) \ + if (variable = *name.i; false) {} else #else // Explanation of the control word: // - it's initialized to 1 @@ -1119,12 +1122,15 @@ // the outer loop to continue executing // - if there was a break inside the inner loop, it will exit with control still // set to 1; in that case, the outer loop will invert it to 0 and will exit too -#define Q_FOREACH(variable, container) \ -for (auto _container_ = QtPrivate::qMakeForeachContainer(container); \ - _container_.control && _container_.i != _container_.e; \ - ++_container_.i, _container_.control ^= 1) \ - for (variable = *_container_.i; _container_.control; _container_.control = 0) +#define Q_FOREACH_IMPL(variable, name, container) \ +for (auto name = QtPrivate::qMakeForeachContainer(container); \ + name.control && name.i != name.e; \ + ++name.i, name.control ^= 1) \ + for (variable = *name.i; name.control; name.control = 0) #endif + +#define Q_FOREACH(variable, container) \ + Q_FOREACH_IMPL(variable, Q_FOREACH_JOIN(_container_, __LINE__), container) #endif // QT_NO_FOREACH #define Q_FOREVER for(;;) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/global/qglobalstatic.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/global/qglobalstatic.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/global/qglobalstatic.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/global/qglobalstatic.h 2022-11-11 15:29:17.000000000 +0800 @@ -44,6 +44,8 @@ #include <QtCore/qatomic.h> +#include <type_traits> + QT_BEGIN_NAMESPACE namespace QtGlobalStatic { @@ -86,7 +88,7 @@ static struct Holder : public HolderBase { \ Type value; \ Holder() \ - noexcept(noexcept(Type ARGS)) \ + noexcept(noexcept(typename std::remove_cv<Type>::type ARGS)) \ : value ARGS \ { guard.storeRelaxed(QtGlobalStatic::Initialized); } \ } holder; \ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/global/qlibraryinfo.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/global/qlibraryinfo.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/global/qlibraryinfo.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/global/qlibraryinfo.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -333,8 +333,10 @@ # define COMPILER_STRING "MSVC 2015" # elif _MSC_VER < 1917 # define COMPILER_STRING "MSVC 2017" -# elif _MSC_VER < 2000 +# elif _MSC_VER < 1930 # define COMPILER_STRING "MSVC 2019" +# elif _MSC_VER < 2000 +# define COMPILER_STRING "MSVC 2022" # else # define COMPILER_STRING "MSVC _MSC_VER " QT_STRINGIFY(_MSC_VER) # endif diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/global/qnamespace.qdoc qtbase-opensource-src-5.15.8+dfsg/src/corelib/global/qnamespace.qdoc --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/global/qnamespace.qdoc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/global/qnamespace.qdoc 2022-11-11 15:29:17.000000000 +0800 @@ -117,7 +117,9 @@ \value AA_DontShowShortcutsInContextMenus Actions with the Shortcut property won't be shown in any shortcut menus unless specifically set by the QAction::shortcutVisibleInContextMenu property. This value was added - in Qt 5.10. + in Qt 5.10, and defaults to the preference reported by the implementation + of QPlatformIntegration::styleHint. To override the platform integration, + set this attribute after QCoreApplication has been instantiated. \value AA_NativeWindows Ensures that widgets have native windows. @@ -768,10 +770,26 @@ /*! \enum Qt::TimeSpec - \value LocalTime Locale dependent time (Timezones and Daylight Savings Time). - \value UTC Coordinated Universal Time, replaces Greenwich Mean Time. + \value LocalTime Local time, controlled by a system time-zone setting. + \value UTC Coordinated Universal Time. \value OffsetFromUTC An offset in seconds from Coordinated Universal Time. - \value TimeZone A named time zone using a specific set of Daylight Savings rules. + \value TimeZone A named time zone. + + Both LocalTime and TimeZone will take care of transitions, such as + the start and end of daylight-saving time. UTC is the standard + time relative to which time-zones are usually specified: Greenwich + Mean Time has zero offset from it. Neither UTC nor OffsetFromUTC + has any transitions. + + \note After a change to the system time-zone setting, the behavior + of LocalTime-based QDateTime objects created before the change is + undefined: QDateTime may have cached data that the change + invalidates. (This is not triggered by transitions of the system + time-zone.) In long-running processes, updates to the system's + time-zone data (e.g. when politicians change the rules for a zone) + may likewise lead to conflicts between the updated time-zone + information and data cached by QDateTime objects created before + the update, using either LocalTime or TimeZone. */ /*! @@ -2897,6 +2915,11 @@ the first item and continues until all items have been examined. \value MatchRecursive Searches the entire hierarchy. + \note Qt::MatchExactly, Qt::MatchContains, Qt::MatchStartsWith, + Qt::MatchEndsWith, Qt::MatchRegularExpression, Qt::MatchWildcard, and + Qt::MatchFixedString are mutually exclusive. The behavior achieved by + setting several of them in a Qt::MatchFlags argument is undefined. + \sa QString::compare(), QRegExp, QRegularExpression */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qabstractfileengine.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qabstractfileengine.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qabstractfileengine.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qabstractfileengine.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -101,7 +101,7 @@ \sa QAbstractFileEngine, QAbstractFileEngine::create() */ -static bool qt_file_engine_handlers_in_use = false; +static QBasicAtomicInt qt_file_engine_handlers_in_use = Q_BASIC_ATOMIC_INITIALIZER(false); /* All application-wide handlers are stored in this list. The mutex must be @@ -132,7 +132,7 @@ QAbstractFileEngineHandler::QAbstractFileEngineHandler() { QWriteLocker locker(fileEngineHandlerMutex()); - qt_file_engine_handlers_in_use = true; + qt_file_engine_handlers_in_use.storeRelaxed(true); fileEngineHandlers()->prepend(this); } @@ -148,7 +148,7 @@ QAbstractFileEngineHandlerList *handlers = fileEngineHandlers(); handlers->removeOne(this); if (handlers->isEmpty()) - qt_file_engine_handlers_in_use = false; + qt_file_engine_handlers_in_use.storeRelaxed(false); } } @@ -161,7 +161,7 @@ { QAbstractFileEngine *engine = nullptr; - if (qt_file_engine_handlers_in_use) { + if (qt_file_engine_handlers_in_use.loadRelaxed()) { QReadLocker locker(fileEngineHandlerMutex()); // check for registered handlers that can load the file diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qdir.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qdir.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qdir.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qdir.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -2011,6 +2011,8 @@ Returns \c true if the directory was successfully changed; otherwise returns \c false. + \snippet code/src_corelib_io_qdir.cpp 16 + \sa current(), currentPath(), home(), root(), temp() */ bool QDir::setCurrent(const QString &path) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qfile.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qfile.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qfile.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qfile.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -829,13 +829,9 @@ } /*! - Copies the file currently specified by fileName() to a file called - \a newName. Returns \c true if successful; otherwise returns \c false. + Copies the file named fileName() to \a newName. - Note that if a file with the name \a newName already exists, - copy() returns \c false (i.e. QFile will not overwrite it). - - The source file is closed before it is copied. + \include qfile-copy.qdocinc \sa setFileName() */ @@ -910,7 +906,7 @@ if (!error) { // Sync to disk if possible. Ignore errors (e.g. not supported). - d->fileEngine->syncToDisk(); + out.d_func()->fileEngine->syncToDisk(); if (!out.rename(newName)) { error = true; @@ -941,11 +937,9 @@ /*! \overload - Copies the file \a fileName to \a newName. Returns \c true if successful; - otherwise returns \c false. + Copies the file named \a fileName to \a newName. - If a file with the name \a newName already exists, copy() returns \c false - (i.e., QFile will not overwrite it). + \include qfile-copy.qdocinc \sa rename() */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qfilesystemengine_unix.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qfilesystemengine_unix.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qfilesystemengine_unix.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qfilesystemengine_unix.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -312,7 +312,7 @@ static int qt_real_statx(int fd, const char *pathname, int flags, struct statx *statxBuffer) { unsigned mask = STATX_BASIC_STATS | STATX_BTIME; - int ret = statx(fd, pathname, flags, mask, statxBuffer); + int ret = statx(fd, pathname, flags | AT_NO_AUTOMOUNT, mask, statxBuffer); return ret == -1 ? -errno : 0; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qsettings_mac.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qsettings_mac.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qsettings_mac.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qsettings_mac.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -274,7 +274,15 @@ } const QString str = QString::fromUtf8(byteArray.constData(), byteArray.size()); - return QSettingsPrivate::stringToVariant(str); + QVariant variant = QSettingsPrivate::stringToVariant(str); + if (variant == QVariant(str)) { + // We did not find an encoded variant in the string, + // so return the raw byte array instead. + byteArray.detach(); + return byteArray; + } + + return variant; } else if (typeId == CFDictionaryGetTypeID()) { CFDictionaryRef cfdict = static_cast<CFDictionaryRef>(cfvalue); CFTypeID arrayTypeId = CFArrayGetTypeID(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qt_attribution.json qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qt_attribution.json --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qt_attribution.json 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qt_attribution.json 2022-11-11 15:29:17.000000000 +0800 @@ -20,7 +20,7 @@ "Homepage": "Consult https://github.com/publicsuffix/list for the sha1 but download from ...", "Homepage": "http://publicsuffix.org/", - "Version": "f2cce86a42f38265c67caa32c6e0ff61793bb534, fetched on 2021-01-21", + "Version": "d4e247a71d1b6da08dad906b098c818493166fcc, fetched on 2021-06-11", "License": "Mozilla Public License 2.0", "LicenseFile": "PSL-LICENSE.txt", "LicenseId": "MPL-2.0", diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qurl.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qurl.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qurl.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qurl.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -413,7 +413,6 @@ #include "qstringlist.h" #include "qdebug.h" #include "qhash.h" -#include "qdir.h" // for QDir::fromNativeSeparators #include "qdatastream.h" #if QT_CONFIG(topleveldomain) // ### Qt6: Remove section #include "qtldurl_p.h" @@ -3641,6 +3640,8 @@ /*! Returns \c true if this URL and the given \a url are equal; otherwise returns \c false. + + \sa matches() */ bool QUrl::operator ==(const QUrl &url) const { @@ -3748,6 +3749,8 @@ /*! Returns \c true if this URL and the given \a url are not equal; otherwise returns \c false. + + \sa matches() */ bool QUrl::operator !=(const QUrl &url) const { @@ -3816,6 +3819,25 @@ return !d || d->ref.loadRelaxed() == 1; } +static QString fromNativeSeparators(const QString &pathName) +{ +#if defined(Q_OS_WIN) + QString result(pathName); + const QChar nativeSeparator = u'\\'; + auto i = result.indexOf(nativeSeparator); + if (i != -1) { + QChar * const data = result.data(); + const auto length = result.length(); + for (; i < length; ++i) { + if (data[i] == nativeSeparator) + data[i] = u'/'; + } + } + return result; +#else + return pathName; +#endif +} /*! Returns a QUrl representation of \a localFile, interpreted as a local @@ -3854,7 +3876,7 @@ if (localFile.isEmpty()) return url; QString scheme = fileScheme(); - QString deslashified = QDir::fromNativeSeparators(localFile); + QString deslashified = fromNativeSeparators(localFile); // magic for drives on windows if (deslashified.length() > 1 && deslashified.at(1) == QLatin1Char(':') && deslashified.at(0) != QLatin1Char('/')) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qurltlds_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qurltlds_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/io/qurltlds_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/io/qurltlds_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -61,14843 +61,14953 @@ // for instructions see the program at // util/corelib/qurl-generateTLDs/ -static const quint16 tldCount = 9117; +static const quint16 tldCount = 9177; static const quint32 tldIndices[] = { 0, -39, -64, -81, -81, -81, +17, +36, +56, +62, +62, +69, +69, +69, +75, 87, -113, -134, -134, -152, -152, -160, -177, -183, -218, -244, -244, +153, +174, +174, +174, +198, +198, +198, +215, +215, +240, +255, 264, -271, -284, -306, -336, -360, -360, -383, -394, -394, -394, -394, -394, -399, -399, -399, -416, -443, +288, +314, +328, +328, +344, +344, +396, +396, +420, +449, +449, 454, -454, -454, -479, -500, -507, -507, -507, -541, -541, -541, -548, -562, -562, -593, +463, +463, +469, +475, +498, +516, +523, +523, +550, +561, 597, -635, -641, -641, -652, -665, -665, -680, -680, -699, -699, -709, -709, -709, -724, -730, -776, -785, -791, +608, +608, +626, +636, +636, +647, +647, +647, +647, +675, +715, +715, +732, +732, +745, +753, +768, +787, 799, -805, -828, -834, -843, -853, -853, -882, -882, -882, -882, -892, -897, -903, -913, +799, +806, +814, +840, +849, +849, +860, +881, +881, +881, 913, -930, -936, -948, -977, -1032, -1048, -1061, -1061, -1067, -1095, -1095, -1121, -1121, -1130, -1146, -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1178, -1178, -1197, -1225, -1225, -1235, -1254, -1254, -1280, -1302, +926, +946, +946, +946, +946, +946, +952, +971, +971, +978, +996, +1002, +1019, +1019, +1025, +1059, +1059, +1059, +1082, +1082, +1082, +1110, +1117, +1117, +1123, +1139, +1139, +1160, +1170, +1191, +1191, +1191, +1207, +1217, +1217, +1232, +1238, +1245, +1279, +1299, 1319, -1346, -1354, -1391, -1395, -1411, -1436, -1452, -1458, -1458, -1477, -1481, -1481, -1481, -1481, -1492, -1499, -1499, -1515, -1543, -1543, -1543, -1543, -1555, -1559, -1574, -1574, -1598, -1630, -1642, -1654, -1654, -1670, -1670, -1686, -1710, -1710, -1726, -1726, -1742, -1756, -1756, -1756, -1769, -1804, +1336, +1336, +1342, +1357, +1363, +1370, +1370, +1380, +1400, +1405, +1424, +1430, +1430, +1430, +1438, +1438, +1457, +1475, +1493, +1493, +1529, +1541, +1556, +1556, +1563, +1563, +1563, +1576, +1618, +1656, +1685, +1706, +1721, +1741, +1761, +1781, +1797, +1797, +1797, 1804, 1810, 1816, -1832, -1832, -1832, -1838, -1854, -1854, -1854, +1816, +1816, 1854, -1858, -1885, -1924, -1952, -1967, -1967, -1977, -2005, -2024, +1860, +1860, +1899, +1899, +1933, +1945, +1945, +1958, +1986, +1986, +1992, +2007, +2013, +2013, +2019, +2019, +2025, 2036, -2084, -2100, -2126, -2126, -2138, -2174, -2201, -2246, -2246, -2279, -2286, -2330, -2366, -2366, -2372, -2415, -2424, -2443, -2462, -2482, -2488, -2534, -2534, -2557, -2587, -2597, -2623, -2623, -2642, -2686, -2698, -2717, -2754, -2754, +2036, +2036, +2036, +2036, +2036, +2111, +2111, +2111, +2147, +2147, +2158, +2163, +2176, +2176, +2195, +2202, +2216, +2222, +2254, +2284, +2284, +2297, +2319, +2319, +2325, +2340, +2350, +2357, +2362, +2362, +2362, +2380, +2387, +2400, +2400, +2400, +2448, +2448, +2455, +2463, +2478, +2501, +2520, +2538, +2565, +2584, +2591, +2610, +2610, +2651, +2651, +2667, +2667, +2695, +2704, +2716, +2716, +2716, +2723, +2723, +2759, +2759, +2765, 2771, -2795, -2828, -2855, -2884, -2944, +2799, +2818, +2836, +2836, +2848, +2848, +2848, +2859, +2869, +2878, +2878, +2902, +2902, +2902, +2919, +2954, +2954, +2954, +2965, 2980, 2980, -3042, -3042, -3110, -3117, -3127, -3140, -3154, -3164, -3164, -3164, -3169, -3213, -3231, -3253, -3260, -3298, +3012, +3018, +3025, +3062, +3062, +3092, +3104, +3104, +3116, +3122, +3141, +3165, +3165, +3199, +3242, +3273, +3273, +3291, 3322, -3322, -3365, -3376, -3386, -3386, -3393, -3401, -3417, -3417, -3430, -3488, +3336, +3375, +3375, +3381, +3412, +3412, +3412, +3434, +3448, +3482, +3482, +3482, 3488, -3516, +3497, +3510, +3521, +3558, 3563, -3578, +3563, +3581, +3581, +3581, +3587, +3587, +3587, 3593, -3609, -3624, -3624, -3638, -3675, -3721, -3731, -3731, +3616, +3616, +3654, +3670, +3670, +3676, +3688, +3715, 3736, -3751, -3780, -3820, -3820, -3858, -3868, -3920, -3926, -3947, -3947, -3961, -3961, -3961, -3978, -3978, -3987, -4006, -4015, -4031, -4037, -4056, -4067, -4067, -4067, -4067, -4091, -4091, -4099, -4099, -4117, -4153, -4170, -4170, -4187, -4187, -4187, -4205, -4205, -4205, -4205, -4226, -4226, -4226, -4226, -4234, -4252, -4252, -4260, -4260, -4260, -4278, -4313, -4313, -4331, -4344, -4390, -4390, -4390, -4414, -4435, -4435, -4435, -4450, -4467, -4467, -4467, -4467, -4467, -4479, +3763, +3799, +3806, +3813, +3822, +3828, +3871, +3881, +3897, +3897, +3897, +3897, +3897, +3906, +3906, +3916, +3933, +3943, +3943, +3963, +3970, +3996, +4010, +4063, +4063, +4081, +4081, +4092, +4097, +4097, +4097, +4136, +4136, +4146, +4175, +4183, +4183, +4183, +4183, +4199, +4199, +4206, +4206, +4206, +4216, +4224, +4231, +4236, +4236, +4236, +4243, +4243, +4256, +4256, +4262, +4262, +4262, +4272, +4294, +4298, +4298, +4304, +4314, +4314, +4314, +4333, +4357, +4384, +4384, +4384, +4389, +4419, +4419, +4425, +4425, +4446, +4485, +4501, +4535, 4535, -4584, -4595, -4595, -4595, -4654, -4669, -4669, -4669, -4713, -4734, -4776, -4776, -4811, -4811, -4828, +4555, +4555, +4555, +4577, +4577, +4594, +4594, +4594, +4594, +4594, +4594, +4594, +4594, +4594, +4594, +4604, +4604, +4604, +4604, +4623, +4623, +4648, +4658, +4658, +4665, +4695, +4719, +4742, +4742, +4763, +4763, +4784, +4788, +4794, +4794, +4810, +4827, +4827, 4839, 4839, 4839, -4857, -4887, -4887, -4921, -4932, +4839, +4875, +4884, +4884, +4914, +4933, +4948, 4948, -4953, -4953, -4965, -4970, -4970, -4970, -4998, -5013, -5013, -5013, -5013, -5013, -5013, -5030, -5048, -5048, -5048, -5048, -5048, -5048, -5078, -5078, -5078, -5078, -5078, -5103, -5127, -5127, +4992, +5018, +5043, +5058, +5068, +5068, +5090, +5090, +5096, +5117, +5117, +5117, +5123, +5132, +5150, 5150, -5164, -5164, -5164, -5175, -5183, -5211, -5211, -5227, -5239, -5239, -5249, +5166, +5172, +5172, +5184, +5184, +5188, +5209, +5245, +5245, +5245, 5261, -5277, -5277, -5277, -5277, -5296, -5296, -5336, -5336, -5336, -5342, -5342, -5342, -5386, -5419, -5441, -5466, -5466, -5466, -5488, -5488, -5507, -5511, -5511, -5528, -5545, -5545, -5573, -5573, -5588, -5614, -5624, -5624, -5634, -5634, -5661, -5661, -5661, -5679, -5679, -5679, -5689, -5709, -5709, -5747, -5759, -5759, -5759, -5759, -5759, -5759, -5777, -5794, -5834, -5854, -5854, -5873, +5261, +5269, +5269, +5319, +5319, +5319, +5319, +5319, +5334, +5334, +5344, +5381, +5402, +5411, +5446, +5482, +5482, +5498, +5506, +5513, +5531, +5531, +5551, +5555, +5555, +5555, +5577, +5581, +5609, +5609, +5609, +5627, +5627, +5627, +5650, +5667, +5671, +5671, +5677, +5698, +5705, +5705, +5721, +5738, +5755, +5762, +5762, +5762, +5785, +5822, +5822, +5860, +5894, 5894, -5918, -5993, -5993, -5993, -6020, -6020, -6020, -6039, -6039, -6062, -6062, -6067, -6067, -6067, -6074, -6088, -6105, -6118, -6138, -6138, -6161, -6161, -6161, -6169, -6169, -6169, -6175, -6175, -6196, -6215, -6280, +5913, +5913, +5926, +5932, +5932, +5932, +5943, +5963, +5963, +5963, +5986, +5986, +6002, +6012, +6012, +6012, +6012, +6019, +6019, +6023, +6079, +6079, +6083, +6094, +6094, +6111, +6117, +6117, +6117, +6124, +6134, +6147, +6147, +6147, +6153, +6157, +6157, +6157, +6173, +6185, +6205, +6216, +6216, +6248, +6259, +6269, +6269, 6297, -6317, -6321, -6357, -6399, -6420, -6420, -6420, -6420, -6420, +6320, +6336, +6336, +6356, +6362, +6396, +6396, +6413, 6420, -6456, -6482, -6482, -6482, -6536, -6541, -6554, -6578, -6578, -6602, -6602, -6618, -6618, -6618, -6618, -6618, -6626, -6626, -6626, -6626, -6626, +6444, +6444, +6444, +6500, +6512, +6512, +6512, +6512, +6518, +6526, +6526, +6539, +6539, +6557, +6557, +6557, +6571, +6583, +6628, +6628, +6628, 6640, 6640, 6640, -6656, -6656, -6656, 6662, -6662, -6662, -6662, -6678, -6678, -6725, -6744, -6744, -6744, -6753, -6762, -6775, -6799, -6812, -6826, -6836, -6836, -6858, -6914, -6914, -6949, -6989, -6989, -6999, -6999, -7008, -7008, -7014, -7040, -7078, -7096, -7113, -7113, -7130, -7130, -7130, -7130, -7153, -7153, -7153, -7159, -7159, -7159, -7175, -7175, -7175, -7190, -7222, -7222, -7222, -7240, -7240, -7276, -7283, -7310, -7310, -7310, -7310, -7323, -7341, -7341, -7366, -7366, -7366, -7415, -7415, -7415, -7420, -7420, -7438, -7446, -7457, -7475, -7493, -7493, -7528, -7569, -7569, -7569, -7584, -7584, -7593, -7593, -7593, -7593, -7601, -7622, -7633, -7670, -7670, -7701, -7701, -7725, -7764, -7764, -7783, -7783, -7783, -7806, -7806, -7806, -7849, -7854, -7887, -7887, -7894, -7901, -7921, -7921, -7928, -7934, -7934, -7971, -7995, -8010, -8010, -8029, -8067, +6674, +6693, +6693, +6693, +6693, +6718, +6729, +6751, +6751, +6751, +6801, +6811, +6831, +6831, +6831, +6831, +6850, +6869, +6869, +6911, +6922, +6922, +6951, +6951, +6978, +7027, +7027, +7027, +7033, +7033, +7033, +7033, +7057, +7063, +7063, +7081, +7098, +7098, +7098, +7108, +7108, +7108, +7145, +7145, +7145, +7162, +7162, +7162, +7162, +7162, +7162, +7220, +7232, +7239, +7264, +7264, +7268, +7268, +7299, +7299, +7299, +7327, +7346, +7346, +7363, +7377, +7377, +7377, +7392, +7419, +7419, +7419, +7428, +7455, +7455, +7476, +7476, +7501, +7501, +7501, +7501, +7501, +7552, +7574, +7585, +7595, +7595, +7630, +7659, +7659, +7659, +7663, +7663, +7683, +7683, +7711, +7748, +7748, +7772, +7772, +7782, +7794, +7819, +7833, +7840, +7861, +7879, +7910, +7943, +7965, +7979, +7989, +7989, +7989, +8012, +8038, +8058, 8081, -8095, -8114, -8137, -8137, -8137, -8160, -8160, -8167, -8180, -8184, -8237, -8250, -8268, -8268, +8081, +8085, +8107, +8143, +8143, +8151, +8151, +8151, +8193, +8193, +8193, +8193, +8203, +8221, +8221, +8221, +8221, +8251, +8251, +8256, +8286, 8286, -8306, -8313, -8320, -8320, -8337, -8359, -8389, -8403, -8470, -8470, -8470, -8483, -8498, -8527, -8531, -8531, -8551, -8563, -8581, -8588, +8351, +8351, +8367, +8367, +8367, +8392, +8392, +8392, +8392, +8398, +8398, +8398, +8437, +8467, +8472, +8495, +8510, +8517, +8517, +8539, +8570, +8570, 8594, -8601, -8601, -8608, -8608, -8646, -8694, -8705, -8705, -8712, -8716, -8744, -8770, -8783, -8794, -8804, -8820, -8827, +8594, +8594, +8594, +8594, +8604, +8604, +8638, +8670, +8720, +8720, +8749, +8749, +8765, +8765, +8765, +8776, +8786, +8795, +8795, +8795, +8795, +8795, +8812, 8827, -8837, -8866, -8866, -8883, -8910, -8910, -8925, -8925, -8925, -8948, -8964, -8971, -8986, -8986, -8986, -9001, -9001, -9019, +8841, +8841, +8848, +8848, +8848, +8855, +8867, +8867, +8867, +8867, +8867, +8867, +8900, +8900, +8900, +8915, +8953, +8987, +9011, +9032, +9043, +9043, +9043, +9043, 9043, -9074, -9081, -9117, -9117, +9043, +9043, +9043, +9043, +9053, +9053, +9068, +9079, +9089, +9094, +9099, +9099, 9126, -9155, -9159, -9159, -9168, -9186, -9217, -9249, -9262, -9262, -9275, -9296, -9319, -9319, -9355, -9371, -9378, -9419, -9448, -9448, -9455, -9472, -9492, -9492, -9530, -9551, -9573, -9598, -9598, -9631, -9671, -9671, -9676, -9676, -9686, -9691, -9725, -9737, -9752, -9757, -9788, -9788, -9788, -9788, -9795, -9815, -9822, -9822, -9822, -9838, -9845, -9852, -9862, -9869, -9884, -9893, -9893, -9893, +9126, +9150, +9150, +9150, +9150, +9171, +9171, +9171, +9196, +9196, +9233, +9233, +9261, +9261, +9261, +9261, +9280, +9294, +9307, +9307, +9342, +9342, +9373, +9384, +9384, +9384, +9384, +9384, +9394, +9394, +9410, +9410, +9410, +9425, +9442, +9442, +9442, +9442, +9471, +9471, +9471, +9500, +9500, +9510, +9531, +9531, +9561, +9577, +9612, +9642, +9657, +9657, +9657, +9692, +9692, +9692, +9696, +9696, +9714, +9714, +9714, +9730, +9739, +9739, +9739, +9749, +9749, +9770, +9770, +9770, +9775, +9789, +9818, +9818, +9818, +9834, +9834, +9834, +9841, +9868, +9868, +9868, +9875, 9893, -9934, -9934, -9941, -9941, -9948, -9948, -9993, -9993, -9993, -9993, -10013, -10013, -10020, -10020, -10044, -10056, -10056, -10062, -10077, -10119, -10161, -10183, -10190, -10208, -10232, -10245, -10289, -10296, -10303, -10329, -10336, -10366, -10391, -10407, -10407, -10427, -10459, -10482, -10489, -10496, -10503, -10516, -10533, -10551, -10558, -10558, -10565, -10581, -10595, -10602, -10602, -10602, -10609, -10609, -10622, -10622, -10636, +9905, +9905, +9909, +9921, +9938, +9958, +9983, +9983, +10000, +10016, +10016, +10030, +10030, +10030, +10030, +10046, +10066, +10094, +10104, +10118, +10137, +10154, +10177, +10225, +10246, +10264, +10272, +10280, +10299, +10299, +10299, +10304, +10304, +10325, +10344, +10372, +10406, +10424, +10424, +10429, +10429, +10444, +10487, +10500, +10525, +10525, +10525, +10540, +10545, +10554, +10554, +10554, +10554, +10564, +10596, +10617, +10623, +10629, +10643, +10651, 10684, -10710, -10724, -10738, -10745, -10763, -10770, -10797, -10817, -10844, -10858, -10881, -10898, -10909, -10916, -10916, -10916, -10916, -10941, -10951, -10951, -10978, -10995, -10995, -11011, -11036, -11058, -11065, -11065, -11099, -11115, -11154, -11154, -11168, -11199, -11199, -11206, -11214, -11245, -11277, -11304, -11329, -11347, -11356, -11356, -11381, -11407, -11414, -11437, -11482, -11526, -11526, -11562, -11569, -11584, -11628, -11660, -11690, -11699, -11728, -11738, -11738, -11738, -11750, -11767, -11767, -11806, -11816, -11848, -11867, -11871, -11903, -11920, -11932, -11943, -11979, -11994, -12012, -12055, -12062, -12075, -12092, -12098, -12146, -12153, -12153, -12164, -12172, -12197, -12197, -12197, -12204, -12204, -12204, -12235, -12253, -12267, -12304, -12311, -12335, -12354, -12378, -12427, -12437, -12437, -12479, -12486, -12522, -12535, -12542, -12549, +10684, +10704, +10726, +10746, +10758, +10762, +10791, +10806, +10823, +10870, +10877, +10900, +10900, +10922, +10928, +10928, +10949, +11008, +11008, +11048, +11066, +11103, +11103, +11103, +11103, +11103, +11103, +11103, +11103, +11120, +11120, +11120, +11120, +11120, +11120, +11135, +11135, +11135, +11135, +11135, +11155, +11155, +11167, +11167, +11176, +11176, +11187, +11217, +11217, +11225, +11235, +11243, +11262, +11267, +11294, +11307, +11324, +11333, +11343, +11357, +11357, +11357, +11373, +11391, +11408, +11461, +11481, +11500, +11500, +11507, +11511, +11523, +11530, +11571, +11588, +11617, +11639, +11639, +11639, +11664, +11671, +11676, +11708, +11708, +11708, +11708, +11724, +11724, +11731, +11731, +11731, +11731, +11769, +11769, +11769, +11779, +11779, +11791, +11807, +11813, +11813, +11820, +11835, +11847, +11877, +11912, +11917, +11924, +11941, +11953, +11973, +11973, +11983, +12001, +12028, +12042, +12042, +12095, +12095, +12095, +12095, +12095, +12095, +12102, +12112, +12126, +12126, +12145, +12152, +12189, +12205, +12214, +12214, +12231, +12247, +12247, +12293, +12348, +12361, +12389, +12389, +12423, +12423, +12423, +12439, +12439, +12439, +12439, +12439, +12439, +12447, +12447, +12507, +12512, +12512, +12512, +12528, +12528, +12528, +12528, +12528, 12559, 12566, -12578, -12611, -12628, -12652, -12665, -12671, -12712, -12712, -12712, -12712, -12729, -12729, -12746, -12751, -12779, -12779, -12786, -12824, -12841, -12848, -12869, -12876, -12876, -12876, -12898, -12930, -12951, -12969, -13013, -13019, -13019, -13019, -13026, -13026, +12592, +12592, +12597, +12603, +12603, +12603, +12620, +12644, +12644, +12644, +12644, +12666, +12714, +12731, +12731, +12745, +12782, +12791, +12791, +12816, +12832, +12854, +12892, +12892, +12892, +12907, +12928, +12939, +12977, +12996, +12996, +13022, +13027, +13039, +13039, +13039, +13039, +13039, 13049, -13073, -13105, -13125, -13141, -13141, -13182, -13192, -13192, -13228, -13228, -13241, -13282, -13282, -13282, -13282, -13297, -13297, -13297, -13315, -13324, -13335, -13382, -13391, -13391, -13417, -13417, -13440, -13469, -13476, -13496, -13530, -13530, -13548, -13548, -13570, -13580, -13580, -13599, -13609, -13627, -13627, -13634, -13634, -13634, -13634, -13634, -13663, -13663, -13663, -13674, -13674, -13686, -13686, +13088, +13116, +13116, +13156, +13156, +13156, +13156, +13164, +13174, +13174, +13184, +13229, +13229, +13267, +13267, +13267, +13272, +13299, +13299, +13316, +13338, +13338, +13338, +13370, +13370, +13370, +13374, +13394, +13410, +13416, +13459, +13459, +13468, +13468, +13472, +13477, +13488, +13488, +13516, +13528, +13528, +13568, +13579, +13583, +13583, +13608, +13608, +13618, +13676, +13681, +13690, +13690, +13707, 13707, -13714, -13714, -13714, -13733, -13733, -13781, -13793, -13793, -13793, -13809, -13809, -13825, -13876, -13886, -13896, -13925, -13958, -13958, -13999, -13999, -13999, -13999, -14018, -14039, -14039, -14046, -14055, -14055, -14059, -14100, -14115, -14129, -14142, -14142, -14148, -14173, -14209, -14209, -14209, -14224, -14224, -14224, -14224, -14224, -14224, -14229, -14244, -14263, -14263, -14271, -14271, -14271, -14288, -14288, -14288, -14335, -14335, -14344, -14363, -14363, -14363, -14394, -14415, -14446, -14495, -14512, -14512, -14518, -14535, -14535, -14548, -14557, -14571, -14582, -14614, -14614, -14635, -14649, -14649, -14656, -14663, -14684, -14689, -14689, -14689, -14689, -14689, -14689, -14689, -14701, -14701, -14713, -14713, -14725, -14725, -14725, -14725, -14762, -14807, -14807, -14814, -14834, -14846, -14846, -14857, -14864, -14864, -14871, -14879, -14879, -14892, -14892, -14932, -14932, +13707, +13707, +13726, +13726, +13764, +13775, +13775, +13775, +13811, +13842, +13858, +13873, +13885, +13924, +13924, +13924, +13924, +13969, +13984, +13991, +13991, +13991, +13991, +13991, +13991, +14000, +14000, +14000, +14038, +14057, +14057, +14057, +14057, +14057, +14087, +14095, +14106, +14116, +14159, +14167, +14199, +14199, +14199, +14211, +14211, +14217, +14230, +14251, +14251, +14261, +14286, +14290, +14300, +14300, +14300, +14327, +14342, +14356, +14381, +14381, +14381, +14381, +14381, +14402, +14409, +14409, +14419, +14419, +14440, +14444, +14444, +14467, +14467, +14477, +14493, +14511, +14519, +14519, +14576, +14605, +14620, +14647, +14688, +14688, +14719, +14728, +14728, +14732, +14741, +14741, +14741, +14741, +14805, +14805, +14805, +14810, +14810, +14891, +14915, 14942, -14949, -14949, -14961, -14961, -14976, -14990, -14990, -15038, -15038, -15057, -15078, -15078, -15078, -15078, -15091, -15091, +14954, +14954, +14964, +15008, +15008, +15018, +15050, +15063, +15081, 15098, 15098, 15098, -15105, -15105, -15105, -15105, -15105, -15105, -15105, -15113, -15128, -15140, -15140, -15140, -15152, -15164, -15178, -15195, -15207, -15223, +15110, +15110, +15110, +15119, +15119, +15126, +15133, +15133, +15133, +15133, +15166, +15166, +15166, +15166, +15166, +15166, +15166, +15166, +15166, +15173, +15173, +15215, +15215, +15215, +15215, +15215, 15234, -15251, -15251, -15251, -15271, -15287, -15287, -15297, -15328, -15345, -15345, -15383, -15412, -15412, -15412, -15412, -15437, -15470, -15470, -15490, -15490, -15490, -15490, -15495, -15504, -15514, -15514, -15514, -15514, -15522, -15528, -15528, -15528, -15528, -15528, -15539, -15539, -15575, -15575, -15575, -15575, -15575, +15243, +15264, +15264, +15264, +15264, +15284, +15284, +15284, +15284, +15308, +15308, +15326, +15346, +15346, +15346, +15377, +15377, +15389, +15389, +15429, +15429, +15448, +15448, +15457, +15457, +15457, +15483, +15501, +15501, +15511, +15531, +15545, 15595, -15610, -15628, -15641, -15651, -15664, -15675, -15675, -15680, -15690, -15690, -15704, -15719, -15740, -15740, -15740, -15740, -15740, -15740, -15740, -15740, -15752, -15759, -15759, -15816, -15844, -15844, -15844, -15844, -15852, -15859, -15867, -15888, -15936, -15936, -15989, -16014, -16014, -16028, -16028, +15629, +15629, +15646, +15654, +15654, +15668, +15668, +15668, +15697, +15709, +15709, +15709, +15724, +15742, +15742, +15761, +15774, +15811, +15838, +15838, +15838, +15855, +15855, +15865, +15865, +15865, +15865, +15865, +15865, +15872, +15872, +15872, +15896, +15921, +15921, +15921, +15947, +15947, +15947, +15947, +15947, +15978, +15978, +15978, +16009, +16025, +16042, +16042, 16042, -16069, -16076, -16076, +16052, +16052, +16078, +16078, +16082, 16092, -16099, -16108, -16118, -16118, -16123, -16123, -16141, -16158, -16178, -16193, -16205, -16223, -16223, -16223, -16233, -16233, -16233, -16256, -16271, -16271, -16283, -16302, -16310, -16310, -16316, -16338, -16358, -16358, -16358, -16368, -16376, -16409, -16409, -16442, -16442, -16451, -16451, -16451, -16451, -16472, -16487, -16506, -16558, -16579, -16579, -16593, -16593, -16593, -16607, -16607, -16607, -16623, -16661, -16684, -16742, -16742, -16742, -16762, -16762, -16762, -16778, -16815, -16844, -16922, -16922, -16922, +16102, +16102, +16102, +16102, +16102, +16102, +16116, +16126, +16138, +16144, +16144, +16164, +16164, +16174, +16196, +16203, +16214, +16234, +16234, +16261, +16297, +16297, +16319, +16347, +16347, +16347, +16380, +16380, +16380, +16380, +16396, +16396, +16396, +16396, +16415, +16423, +16467, +16514, +16514, +16518, +16568, +16578, +16617, +16637, +16637, +16637, +16657, +16683, +16683, +16704, +16704, +16732, +16737, +16758, +16758, +16797, +16836, +16836, +16883, +16883, +16890, +16890, +16890, +16905, +16905, +16905, +16905, +16905, +16905, +16905, +16929, 16950, -16968, -16968, -16987, -17003, -17003, -17015, -17015, -17015, -17035, -17035, -17035, -17063, -17079, -17079, -17079, +16961, +16961, +17030, +17050, +17062, +17080, +17093, 17093, 17110, -17127, -17140, -17158, -17178, -17192, -17219, -17219, -17219, -17238, -17254, -17254, -17264, -17264, -17279, -17279, -17279, -17279, -17279, -17293, -17293, -17293, -17293, -17304, -17331, -17331, -17347, -17366, -17366, -17391, -17423, -17427, -17427, -17427, -17432, -17432, -17432, -17451, -17451, +17138, +17138, +17148, +17148, +17216, +17228, +17239, +17239, +17269, +17298, +17298, +17312, +17312, +17312, +17312, +17312, +17312, +17312, +17345, +17360, +17360, +17369, +17369, +17389, +17408, +17408, +17416, +17416, +17416, +17440, 17458, -17462, -17462, -17477, -17488, -17515, -17568, -17580, -17580, -17603, -17603, -17615, -17615, -17638, -17668, -17677, -17714, -17714, -17746, -17746, -17762, -17771, -17771, -17771, -17771, -17771, -17793, -17793, -17826, -17826, -17826, -17837, -17861, -17881, -17889, -17889, -17889, -17889, -17889, -17889, -17889, -17889, -17889, -17889, -17904, -17904, -17917, -17917, -17917, -17917, -17935, -17956, -17973, -18008, -18008, -18017, -18027, -18027, -18048, -18065, -18065, -18065, -18071, -18075, -18075, -18103, -18103, -18103, -18168, -18168, -18201, -18213, -18225, -18264, -18274, -18292, +17458, +17458, +17458, +17458, +17458, +17458, +17474, +17499, +17499, +17499, +17499, +17506, +17506, +17512, +17512, +17512, +17512, +17532, +17546, +17569, +17569, +17579, +17583, +17583, +17583, +17591, +17604, +17604, +17604, +17604, +17628, +17685, +17693, +17707, +17707, +17734, +17753, +17753, +17770, +17770, +17780, +17798, +17814, +17814, +17820, +17855, +17855, +17855, +17855, +17894, +17921, +17942, +17950, +17969, +17986, +17986, +17999, +18031, +18040, +18053, +18077, +18086, +18129, +18159, +18159, +18159, +18169, +18169, +18169, +18169, +18211, +18234, +18234, +18242, +18242, +18259, +18262, 18292, -18298, -18298, -18327, -18338, -18390, -18390, -18390, -18410, -18410, -18410, -18410, -18417, -18417, -18432, -18432, +18304, +18307, +18317, +18317, +18320, +18320, +18342, +18380, +18403, 18432, -18438, -18451, -18451, +18435, +18455, +18461, 18467, -18467, -18481, -18485, -18502, -18502, +18480, +18483, +18529, 18532, -18548, -18548, -18564, -18564, -18564, -18575, -18591, -18591, -18637, -18663, -18680, -18680, -18691, -18691, -18691, -18691, -18691, -18691, -18699, -18699, -18715, -18715, -18715, -18715, -18715, -18715, -18715, -18715, -18715, -18728, -18728, -18741, -18741, -18741, -18771, -18789, -18795, -18813, -18825, -18825, -18864, -18880, -18880, -18880, -18880, -18896, -18896, -18896, -18896, -18901, -18931, -18953, -18964, -18964, -18984, -18984, -18993, -19016, -19025, -19036, +18555, +18561, +18592, +18598, +18598, +18598, +18601, +18604, +18607, +18607, +18616, +18619, +18643, +18649, +18649, +18655, +18674, +18677, +18693, +18729, +18729, +18752, +18775, +18802, +18805, +18805, +18805, +18816, +18829, +18838, +18872, +18893, +18921, +18941, +18950, +18967, +18970, +18991, +19004, +19030, 19051, -19072, -19089, -19114, -19121, -19121, -19121, -19141, -19141, -19158, -19158, -19203, -19203, -19203, -19242, -19242, -19242, -19287, -19287, -19287, -19301, -19316, -19338, -19338, -19338, -19358, -19391, -19419, -19419, -19443, -19443, -19456, -19468, -19468, +19051, +19083, +19090, +19093, +19105, +19132, +19147, +19150, +19207, +19227, +19230, +19230, +19262, +19271, +19280, +19291, +19299, +19299, +19317, +19327, +19330, +19333, +19353, +19377, +19389, +19408, +19418, +19418, +19418, +19427, +19427, +19430, +19436, +19445, +19451, 19468, -19479, -19479, -19495, -19512, -19512, -19512, -19540, -19540, -19552, -19552, -19552, -19586, -19586, -19586, -19586, -19594, -19605, -19605, +19471, +19504, +19507, +19532, +19535, +19557, +19569, +19588, +19591, +19614, +19617, +19617, +19627, 19630, -19634, -19634, -19644, -19673, -19694, -19714, +19633, +19655, +19658, +19661, +19685, +19703, +19703, +19706, 19714, -19733, -19743, -19759, -19766, -19778, -19797, -19811, -19825, -19842, -19842, -19878, -19878, -19878, -19887, -19887, -19905, -19905, -19905, -19905, -19922, -19940, -19959, -19959, -19995, -20003, -20018, -20068, -20076, -20092, -20101, -20117, -20148, -20151, -20199, -20199, -20219, -20219, -20225, -20231, +19727, +19727, +19737, +19786, +19795, +19810, +19827, +19830, +19845, +19858, +19864, +19864, +19872, +19889, +19915, +19951, +19951, +19965, +19974, +19994, +20021, +20021, +20036, +20039, +20042, +20052, +20055, +20055, +20055, +20077, +20091, +20119, +20130, +20160, +20160, +20160, +20163, +20166, +20183, +20217, +20228, 20242, -20262, -20268, -20294, -20307, -20313, -20325, -20351, -20351, -20374, -20391, -20407, -20433, -20443, -20446, -20453, -20466, -20472, -20558, +20245, +20245, +20248, +20267, +20270, +20270, +20306, +20327, +20362, +20365, +20365, +20368, +20406, +20412, +20435, +20441, +20441, +20464, +20496, +20515, +20527, 20564, -20599, -20621, -20627, -20630, -20630, -20653, -20669, -20672, -20675, -20682, -20682, -20685, -20696, -20696, -20756, -20759, -20781, -20805, -20808, -20843, -20859, -20859, -20862, -20890, -20916, -20936, -20936, -20936, +20567, +20567, +20575, +20605, +20605, +20605, +20608, +20611, +20634, +20640, +20677, +20680, +20717, +20729, +20754, +20754, +20770, +20773, +20773, +20776, +20779, +20782, +20817, +20820, +20872, +20887, +20904, +20910, +20923, 20946, -20968, -20971, -20982, -20985, -20985, -20998, -21001, -21001, -21010, -21026, -21047, -21073, -21073, -21104, -21113, +20952, +20988, +20988, +20991, +21016, +21032, +21035, +21035, +21035, +21038, +21038, +21053, +21056, +21056, +21056, +21067, +21077, +21080, +21080, +21106, 21129, +21129, +21129, +21144, +21147, +21158, +21158, 21158, -21182, -21182, +21177, 21198, -21206, -21221, -21224, -21224, -21224, -21227, -21235, -21259, -21266, -21275, -21281, -21281, -21298, -21315, -21332, -21335, -21338, -21341, -21341, -21360, -21363, -21366, -21382, -21382, -21385, -21402, -21405, -21428, -21431, -21449, -21449, -21452, -21472, -21481, +21238, +21302, +21302, +21339, +21371, +21374, +21394, +21407, +21407, +21417, +21420, +21437, +21451, +21454, +21454, +21496, 21514, -21544, -21569, +21514, +21517, +21517, +21535, +21535, +21535, +21554, +21580, +21580, 21602, -21605, +21609, 21623, 21623, -21627, -21630, -21643, -21649, -21684, -21684, -21691, +21626, +21636, +21662, +21677, +21686, +21686, 21691, 21697, -21704, -21718, +21713, 21727, -21784, -21793, -21813, -21813, +21751, +21776, +21786, +21812, 21829, -21832, -21835, -21838, -21841, -21841, -21852, -21904, -21922, -21922, -21935, -21935, -21945, -21945, -21981, -21984, -21997, -22018, -22046, +21882, +21895, +21902, +21926, +21951, +21970, +21980, +21990, +22002, +22011, +22021, +22031, +22052, +22062, 22065, -22068, -22068, -22108, +22071, +22082, 22114, -22117, -22121, -22148, -22148, -22151, -22174, -22189, -22204, -22240, -22273, +22127, +22135, +22141, +22144, +22157, +22180, +22183, +22209, +22255, 22289, -22304, -22318, -22342, -22378, -22383, -22404, -22407, -22425, -22425, -22461, -22493, -22493, -22493, -22503, -22528, -22534, -22540, -22546, -22549, -22575, -22608, -22617, -22617, +22325, +22363, +22374, +22413, +22431, +22431, +22434, +22445, +22465, +22472, +22475, +22491, +22523, +22538, +22557, +22581, +22581, +22591, +22591, +22604, +22604, +22607, 22620, -22635, -22640, -22673, -22713, -22746, -22752, -22755, -22791, -22831, -22873, -22904, -22910, +22623, +22634, +22669, +22672, +22672, +22684, +22703, +22724, +22738, +22784, +22788, +22803, +22803, +22803, +22844, +22863, +22898, +22898, +22913, 22913, -22925, -22928, -22946, -22969, -23005, -23005, -23008, -23042, -23055, -23058, -23079, -23079, -23098, -23119, -23119, -23129, -23154, -23173, -23185, -23199, -23202, -23202, -23202, -23208, +22913, +22933, +22933, +22967, +22977, +23017, +23044, +23044, +23047, +23054, +23061, +23066, +23077, +23084, +23094, +23101, +23113, +23120, +23163, +23170, +23170, +23189, +23196, +23196, 23221, 23221, -23233, -23240, -23243, -23246, -23258, -23267, -23267, -23282, -23307, -23327, -23340, -23343, -23343, -23343, -23346, -23349, -23358, -23361, -23409, -23439, -23442, -23442, -23445, -23464, +23261, +23271, +23278, +23278, +23315, +23322, +23354, +23365, +23365, +23388, +23393, +23419, +23424, +23424, +23424, +23449, 23464, -23476, -23482, -23504, -23525, +23471, +23490, +23509, +23509, +23516, 23540, -23540, -23547, -23553, -23553, -23563, -23587, -23605, -23611, -23631, -23631, -23657, -23677, -23677, -23677, -23693, -23700, -23728, -23731, -23746, -23763, -23789, -23789, -23814, -23830, -23853, -23872, -23875, -23885, -23914, -23939, -23942, -23942, -23949, -23971, -23984, -23999, -24002, -24040, -24043, -24110, -24120, -24133, -24136, -24146, -24174, -24184, -24203, -24207, -24210, -24228, -24235, -24251, -24258, -24268, -24274, -24281, -24288, -24298, -24301, -24389, -24454, -24478, -24478, -24478, -24488, -24514, -24549, -24565, -24578, -24606, -24609, -24626, -24646, -24678, -24678, -24684, -24701, +23567, +23577, +23584, +23613, +23620, +23620, +23620, +23620, +23620, +23635, +23642, +23645, +23645, +23654, +23654, +23668, +23684, +23706, +23727, +23745, +23758, +23773, +23784, +23791, +23821, +23849, +23849, +23862, +23891, +23917, +23924, +23933, +23965, +23982, +23989, +24001, +24011, +24049, +24057, +24080, +24096, +24125, +24159, +24173, +24186, +24186, +24200, +24229, +24255, +24255, +24262, +24295, +24305, +24329, +24336, +24372, +24372, +24379, +24413, +24430, +24448, +24453, +24471, +24484, +24484, +24496, +24496, +24529, +24553, +24553, +24560, +24593, +24619, +24667, +24674, +24687, +24705, +24705, 24733, -24745, -24773, -24773, -24780, -24794, -24807, -24817, -24827, -24833, -24833, -24839, -24864, -24871, -24882, -24888, -24910, -24917, -24917, -24955, -24955, -24979, -24986, -24986, -24993, -25000, -25007, -25019, -25049, -25056, -25056, -25073, -25086, -25093, -25100, -25107, -25120, -25133, -25140, -25161, -25161, -25189, -25206, -25206, -25213, -25222, -25267, -25304, -25345, -25345, -25345, -25363, -25363, -25370, -25373, -25373, -25373, -25395, -25411, -25425, -25445, -25445, -25452, -25462, -25475, -25511, -25535, -25560, -25575, -25582, -25589, -25601, -25607, -25610, -25654, -25679, -25698, -25705, -25711, -25711, -25718, -25724, -25724, -25724, -25766, -25766, -25809, -25828, -25852, -25852, -25867, -25867, -25891, -25934, -25969, -25986, -26015, -26041, -26070, -26095, -26109, -26129, -26129, -26150, -26157, -26175, -26189, -26229, -26244, -26244, -26244, -26244, -26263, -26263, -26288, -26326, -26340, -26340, -26347, -26382, -26412, -26448, -26468, -26474, -26481, -26488, -26524, -26563, -26596, -26596, -26613, -26627, -26671, -26710, -26722, -26729, -26773, -26812, -26826, -26844, -26861, -26876, -26905, -26905, -26905, -26919, -26938, -26970, -26970, -26970, -26988, -27001, -27025, -27025, -27025, -27054, +24740, +24757, +24757, +24764, +24793, +24810, +24810, +24824, +24824, +24859, +24859, +24883, +24897, +24897, +24913, +24919, +24919, +24919, +24926, +24938, +24938, +24943, +24954, +24987, +25010, +25017, +25041, +25041, +25067, +25118, +25122, +25129, +25149, +25171, +25185, +25211, +25239, +25262, +25262, +25262, +25287, +25293, +25319, +25347, +25347, +25347, +25356, +25382, +25382, +25397, +25397, +25405, +25405, +25405, +25405, +25420, +25432, +25432, +25471, +25507, +25531, +25541, +25563, +25591, +25591, +25591, +25605, +25612, +25626, +25648, +25671, +25692, +25726, +25739, +25746, +25750, +25774, +25785, +25805, +25812, +25843, +25843, +25843, +25843, +25850, +25888, +25898, +25905, +25905, +25942, +25949, +25956, +25973, +25984, +25991, +26074, +26091, +26101, +26108, +26115, +26125, +26168, +26185, +26192, +26206, +26216, +26223, +26245, +26245, +26245, +26257, +26261, +26283, +26310, +26328, +26350, +26370, +26370, +26383, +26413, +26461, +26475, +26506, +26529, +26529, +26529, +26529, +26543, +26566, +26566, +26579, +26638, +26638, +26638, +26660, +26660, +26678, +26678, +26725, +26725, +26739, +26754, +26754, +26761, +26774, +26774, +26774, +26781, +26788, +26795, +26811, +26817, +26833, +26833, +26833, +26847, +26847, +26880, +26886, +26899, +26899, +26899, +26906, +26928, +26933, +26933, +26964, +26973, +26995, +26995, +26995, +27011, +27011, +27031, +27048, +27048, +27055, 27060, -27073, -27099, -27133, -27140, -27157, -27184, -27231, -27257, -27271, -27293, -27312, -27330, -27392, -27401, -27401, -27426, -27433, -27445, -27482, -27489, -27489, -27524, +27074, +27090, +27090, +27110, +27137, +27137, +27137, +27159, +27175, +27187, +27205, +27205, +27225, +27225, +27255, +27264, +27264, +27264, +27264, +27264, +27264, +27288, +27292, +27292, +27326, +27333, +27337, +27375, +27387, +27403, +27415, +27430, +27446, +27462, +27483, +27514, +27540, +27547, 27556, -27563, -27570, -27570, -27587, -27600, -27600, -27623, -27623, -27673, -27673, -27688, -27688, -27688, -27688, -27694, -27701, -27706, -27706, -27728, -27775, -27782, -27806, -27828, -27828, -27834, +27566, +27573, +27580, +27586, +27586, +27590, +27597, +27657, +27679, +27702, +27724, +27740, +27740, +27768, +27783, +27790, +27790, +27809, +27816, 27840, -27853, -27862, -27868, -27899, -27906, -27923, +27847, +27847, +27872, +27894, +27910, +27937, 27937, -27956, -27963, -27974, -27981, -28010, -28046, -28050, -28078, -28085, -28085, -28092, -28099, -28105, -28128, -28146, -28153, -28170, +27954, +27977, +27977, +27984, +27998, +28032, +28079, +28093, +28100, +28107, +28154, +28160, +28166, +28166, +28176, 28190, -28197, -28215, -28225, -28232, -28251, -28251, -28251, -28258, -28271, -28278, -28278, -28285, -28300, -28300, -28325, -28325, -28325, -28332, -28362, -28392, -28401, -28401, -28416, -28423, -28468, -28475, -28488, -28495, -28504, -28511, -28558, -28565, -28588, -28588, -28622, -28629, -28629, -28647, -28660, -28672, -28683, -28683, -28698, -28705, -28712, -28712, -28730, -28761, -28776, +28217, +28260, +28260, +28305, +28305, +28326, +28361, +28422, +28439, +28455, +28465, +28465, +28465, +28494, +28500, +28516, +28524, +28531, +28538, +28552, +28576, +28576, +28581, +28581, +28581, +28593, +28593, +28593, +28648, +28668, +28675, +28675, +28685, +28700, +28700, +28700, +28707, +28725, +28725, +28732, +28747, +28781, +28781, 28800, -28826, -28832, -28870, -28882, -28905, -28926, -28926, -28933, -28933, -28933, -28958, -28965, -28981, -28981, -28988, -29022, -29034, -29034, -29056, -29070, -29086, +28812, +28833, +28858, +28865, +28891, +28908, +28942, +28959, +28959, +28959, +28975, +28982, +28989, +28989, +28996, +29017, +29035, +29035, +29047, +29063, +29087, 29093, -29099, -29099, -29111, -29118, -29118, -29138, +29093, +29114, +29114, +29121, +29121, 29138, -29155, -29155, -29188, -29231, -29231, -29231, -29245, -29245, -29251, -29263, -29284, -29290, -29313, -29313, -29349, -29362, -29362, -29393, -29393, +29208, +29213, +29213, +29213, +29228, +29238, +29257, +29257, +29257, +29257, +29257, +29300, +29318, +29337, +29344, +29382, +29389, 29407, 29407, -29447, -29453, -29453, -29470, -29470, -29498, -29530, -29530, -29570, -29570, -29576, -29576, -29597, -29610, -29610, -29620, -29620, -29620, -29636, -29661, -29665, -29665, -29665, -29680, +29414, +29421, +29457, +29457, +29471, +29494, +29510, +29510, +29522, +29538, +29544, +29544, +29544, +29544, +29558, +29580, +29589, +29589, +29589, +29589, +29626, +29644, +29671, 29680, -29693, -29693, -29693, -29693, -29698, -29705, -29738, -29747, -29765, -29765, -29775, -29795, -29795, -29818, -29818, -29833, -29885, -29885, -29919, -29919, -29953, -29980, -29988, -30004, -30023, -30027, -30040, -30057, -30064, -30064, -30073, -30098, -30098, -30110, -30110, -30110, -30130, -30138, -30164, -30164, -30168, -30181, -30185, -30210, -30223, -30223, -30251, -30307, -30346, -30346, -30359, -30365, -30365, -30375, -30408, -30408, -30416, -30416, -30422, -30422, -30422, -30422, -30422, -30422, -30444, -30469, -30506, -30506, -30514, -30514, -30540, -30561, -30575, -30601, -30601, -30601, -30617, -30617, -30652, -30663, +29702, +29713, +29713, +29713, +29724, +29731, +29731, +29757, +29764, +29771, +29800, +29815, +29815, +29831, +29870, +29896, +29940, +29947, +29954, +29954, +29954, +29992, +30006, +30035, +30058, +30079, +30086, +30099, +30122, +30166, +30221, +30238, +30245, +30245, +30259, +30266, +30287, +30316, +30323, +30332, +30332, +30341, +30348, +30355, +30366, +30385, +30419, +30426, +30473, +30518, +30551, +30579, +30579, +30596, +30615, +30615, +30615, +30622, +30626, +30643, +30661, +30661, +30661, +30661, 30667, -30674, -30688, -30695, -30725, -30725, -30749, -30760, -30778, -30786, -30786, -30799, -30805, -30809, -30809, -30845, -30845, -30845, -30871, -30871, -30911, -30932, -30932, -30947, -30953, -30957, +30699, +30699, +30721, +30746, +30746, +30758, +30783, +30801, +30824, +30824, +30843, +30876, +30909, +30929, 30976, -30976, -30985, -30991, +30986, 30991, -31008, -31024, -31055, -31055, -31072, -31112, -31120, -31128, -31137, -31181, -31205, -31205, -31205, -31205, -31205, -31227, -31227, -31234, -31273, -31273, -31273, -31273, -31281, -31317, -31327, -31348, -31384, -31392, -31409, -31409, -31417, -31446, -31446, -31446, -31446, -31446, -31463, -31463, -31463, -31463, -31463, -31483, -31490, -31490, -31500, -31500, -31500, -31525, -31584, -31584, -31594, -31594, -31594, -31636, -31647, -31647, -31667, -31667, -31688, -31692, -31692, -31704, -31719, -31734, -31734, -31739, -31739, -31739, -31755, +31005, +31026, +31026, +31045, +31113, +31153, +31160, +31167, +31183, +31210, +31225, +31231, +31247, +31247, +31265, +31288, +31359, +31365, +31376, +31376, +31391, +31391, +31391, +31395, +31395, +31408, +31414, +31434, +31448, +31474, +31491, +31511, +31520, +31548, +31578, +31578, +31578, +31578, +31602, +31609, +31645, +31652, +31671, +31677, +31712, +31726, +31737, +31737, +31737, +31744, +31744, +31744, +31751, +31751, +31762, +31762, +31769, +31776, 31786, -31807, -31807, -31807, -31807, -31822, -31834, -31838, -31856, -31856, -31876, -31884, -31908, -31908, -31908, -31912, -31932, -31954, -31960, -31960, -31990, -31990, -32000, -32000, -32029, -32054, -32094, -32101, -32101, -32111, -32111, +31802, +31802, +31817, +31832, +31852, +31852, +31852, +31859, +31866, +31889, +31889, +31896, +31903, +31903, +31910, +31920, +31945, +31952, +31952, +31969, +31969, +31985, +31985, +31985, +31985, +31985, +31985, +31985, +32009, +32025, +32025, +32058, +32071, +32114, +32114, +32128, +32152, +32159, +32159, +32159, +32166, +32187, +32187, +32200, 32200, -32217, 32226, -32230, -32230, -32230, -32230, -32244, -32270, -32270, -32295, -32311, -32311, -32311, -32325, -32329, -32341, -32350, -32387, -32404, -32414, -32422, -32443, -32449, -32449, +32226, +32233, +32233, +32233, +32242, +32242, +32242, +32282, +32282, +32282, +32282, +32282, +32282, +32289, +32305, +32312, +32312, +32317, +32357, +32357, +32378, +32378, +32393, +32393, +32400, +32423, +32423, +32423, +32431, +32431, +32431, 32449, -32469, -32489, -32489, -32496, -32496, -32502, -32502, -32507, -32524, -32542, -32551, -32571, -32604, -32620, -32639, -32663, -32668, -32674, -32689, -32710, -32710, -32710, -32710, -32720, -32720, -32720, -32775, -32775, -32775, -32775, -32828, -32864, -32864, -32864, -32864, -32880, -32901, -32928, -32953, -32964, -32964, -32976, -32976, -32976, -32976, -32976, -32997, -33013, -33043, -33043, -33075, -33107, -33122, -33168, -33182, -33193, -33193, -33218, -33218, -33234, -33240, -33264, -33304, -33347, -33359, -33359, -33359, -33359, -33368, -33384, -33384, -33428, -33428, -33428, -33428, -33450, -33459, +32470, +32494, +32494, +32494, +32501, +32501, +32543, +32561, +32581, +32581, +32629, +32644, +32662, +32673, +32673, +32696, +32705, +32722, +32722, +32728, +32763, +32787, +32803, +32803, +32818, +32865, +32865, +32875, +32882, +32911, +32911, +32943, +32973, +33000, +33018, +33018, +33024, +33060, +33060, +33071, +33071, +33071, +33071, +33085, +33110, +33149, +33149, +33157, +33157, +33206, +33206, +33206, +33206, +33222, +33242, +33242, +33252, +33252, +33252, +33252, +33271, +33285, +33301, +33301, +33301, +33332, +33360, +33360, +33360, +33360, +33398, +33398, +33398, +33398, +33412, +33412, +33412, +33412, +33412, 33459, -33478, -33489, -33489, -33489, -33496, -33496, -33507, -33541, -33577, -33577, -33587, -33587, -33604, -33616, -33642, -33642, -33642, -33642, -33642, -33642, -33654, -33662, -33662, -33662, -33679, -33679, -33716, -33716, -33726, -33726, -33733, -33733, -33766, -33766, -33766, -33770, -33770, -33782, -33806, -33815, -33815, -33834, -33834, -33834, -33834, -33850, -33864, -33885, -33885, -33895, -33895, -33895, -33931, +33482, +33486, +33486, +33499, +33514, +33514, +33545, +33545, +33545, +33567, +33567, +33567, +33584, +33589, +33605, +33620, +33635, +33667, +33695, +33706, +33722, +33751, +33758, +33758, +33764, +33764, +33764, +33781, +33793, +33804, +33804, +33819, +33826, +33826, +33826, +33826, +33826, +33835, +33835, +33835, +33848, +33862, +33862, +33862, +33866, +33938, +33938, 33938, 33938, -33944, +33955, 33971, -33977, -34000, -34000, -34032, -34036, -34036, -34053, -34053, -34068, -34082, -34082, -34099, -34110, -34110, -34115, -34148, -34148, -34148, -34148, -34161, +33971, +33971, +33983, +33983, +33990, +33990, +34027, +34050, +34050, +34054, +34079, +34079, +34079, +34109, +34124, +34140, +34140, +34140, +34140, +34152, +34163, +34163, 34175, -34194, -34194, -34194, -34249, -34249, -34253, -34253, -34253, +34214, +34214, +34221, +34221, +34231, +34231, +34231, 34253, 34253, -34264, -34264, -34264, -34272, -34272, -34279, -34284, -34292, -34317, -34323, -34323, -34323, -34360, -34360, -34380, -34411, -34411, -34433, -34433, -34454, -34454, -34454, -34477, -34477, -34481, -34481, -34498, -34504, -34504, -34521, -34521, -34556, -34566, -34572, -34593, -34593, -34617, -34617, -34617, -34640, -34640, -34640, -34658, +34270, +34270, +34270, +34303, +34303, +34319, +34325, +34335, +34344, +34357, +34373, +34393, +34393, +34431, +34461, +34471, +34471, +34471, +34492, +34527, +34527, +34535, +34547, +34547, +34554, +34558, +34558, +34558, +34558, +34613, +34613, +34613, +34647, 34665, -34680, -34698, -34698, -34698, -34723, -34723, -34723, -34723, -34729, -34753, -34768, -34768, -34768, -34768, -34768, -34768, -34768, -34768, -34786, -34799, -34824, -34824, -34839, -34859, -34897, -34897, -34897, -34906, -34945, -34945, -34987, -34987, -34987, -34987, +34691, +34695, +34713, +34727, +34760, +34760, +34760, +34765, +34765, +34787, +34787, +34787, +34814, +34820, +34834, +34834, +34866, +34881, +34881, +34881, +34881, +34881, +34881, +34902, +34907, +34907, +34917, +34917, +34917, +34917, +34928, +34933, +34960, +34972, +34972, +34981, 34993, -35016, -35025, -35035, -35035, +35003, +35003, +35003, +35013, +35013, +35054, +35067, +35067, +35067, 35074, -35074, -35080, -35080, -35091, -35098, -35119, -35147, -35147, -35147, -35159, -35165, -35165, -35165, -35177, -35204, -35211, -35211, -35211, -35233, -35233, -35233, -35241, -35241, -35241, -35273, -35273, -35273, -35296, -35303, -35303, -35308, -35308, -35308, -35336, +35081, +35105, +35120, +35120, +35120, +35120, +35142, +35148, +35148, +35173, +35205, +35205, +35214, +35234, +35266, +35266, +35266, +35276, +35290, +35320, 35344, -35355, -35360, -35360, -35385, -35403, -35403, -35436, -35436, -35436, -35447, -35447, -35470, -35476, -35517, -35528, -35537, -35537, -35537, -35563, -35611, -35622, -35622, -35631, -35631, -35655, -35655, -35661, -35661, -35674, -35687, -35687, -35693, -35693, -35702, -35711, -35711, -35722, -35722, -35741, -35759, -35759, -35775, -35775, -35775, -35775, -35782, -35782, -35845, -35845, -35865, -35903, +35373, +35408, +35435, +35463, +35500, +35500, +35500, +35511, +35516, +35516, +35516, +35522, +35522, +35544, +35544, +35566, +35566, +35582, +35594, +35594, +35594, +35594, +35594, +35636, +35636, +35654, +35660, +35680, +35708, +35708, +35729, +35729, +35729, +35734, +35751, +35751, +35766, +35766, +35791, +35791, +35809, +35809, +35809, +35825, +35875, +35875, +35888, 35927, -35949, -35955, -35961, -35961, -35974, -35998, -36040, -36040, -36058, -36058, -36058, -36093, -36093, -36093, -36093, -36135, -36143, -36160, -36171, -36180, -36189, -36196, -36196, -36196, -36224, -36255, -36262, -36337, -36337, -36337, -36349, -36356, -36370, -36401, +35927, +35933, +35933, +35942, +35960, +35960, +35972, +35991, +35991, +36005, +36041, +36041, +36091, +36091, +36115, +36136, +36152, +36168, +36179, +36209, +36227, +36236, +36263, +36263, +36263, +36263, +36263, +36281, +36292, +36292, +36301, +36301, +36372, +36372, +36377, 36401, 36420, -36420, -36434, 36434, -36462, -36462, -36474, -36481, -36481, -36481, -36481, -36481, -36481, -36481, -36488, -36488, -36488, -36505, -36544, -36571, -36571, -36587, +36442, +36442, +36442, +36476, +36515, +36536, +36570, +36570, +36580, +36580, +36580, +36580, +36580, +36598, +36598, +36598, 36616, -36616, -36628, -36680, -36690, -36690, -36711, -36732, -36732, -36736, -36754, -36754, -36761, -36761, -36794, -36812, -36849, -36860, -36860, -36898, -36918, -36927, -36944, -36957, -36957, -36962, -36977, +36635, +36641, +36641, +36641, +36641, +36641, +36641, +36651, +36685, +36685, +36689, +36689, +36689, +36689, +36689, +36694, +36723, +36735, +36757, +36757, +36757, +36757, +36757, +36783, +36783, +36807, +36835, +36835, +36866, +36879, +36885, +36900, +36919, +36961, +36978, +36987, 37000, -37017, -37017, -37017, -37017, -37032, -37032, -37038, -37054, -37054, -37063, -37063, -37063, -37088, -37135, -37145, -37156, +37044, +37076, +37087, +37103, +37117, +37117, +37128, +37151, 37169, -37181, -37210, -37254, -37254, -37285, -37316, -37333, -37378, -37391, -37422, -37444, -37444, -37444, -37444, -37444, -37460, -37460, -37518, -37518, -37541, -37576, -37593, -37610, -37614, -37619, -37625, -37625, -37629, -37649, -37670, -37698, -37714, -37727, -37739, -37739, -37739, -37762, -37762, -37790, -37790, -37807, -37807, -37807, -37862, -37878, -37893, -37900, -37920, -37951, -37951, +37196, +37226, +37226, +37252, +37252, +37252, +37275, +37292, +37292, +37292, +37292, +37292, +37292, +37292, +37292, +37292, +37324, +37335, +37335, +37352, +37358, +37377, +37399, +37410, +37445, +37445, +37451, +37451, +37451, +37462, +37510, +37510, +37555, +37555, +37555, +37555, +37555, +37569, +37620, +37631, +37648, +37656, +37666, +37673, +37697, +37697, +37723, +37769, +37769, +37769, +37788, +37826, +37851, +37851, +37851, +37851, +37873, +37873, +37873, +37891, +37891, +37891, +37904, +37909, +37909, +37909, +37909, +37916, +37943, +37954, +37954, +37964, 37976, -37985, -37985, -38021, -38051, -38065, -38065, -38065, -38065, -38081, -38081, -38112, -38112, -38150, -38150, -38150, -38150, -38150, -38150, -38150, -38167, -38178, -38206, -38238, -38238, -38261, -38296, -38296, -38321, -38321, -38363, -38389, -38389, -38389, -38403, -38403, -38415, -38431, -38431, -38445, -38473, -38525, -38571, -38578, -38578, -38578, -38589, -38589, +37976, +37989, +37989, +38018, +38018, +38018, +38018, +38025, +38025, +38037, +38074, +38091, +38091, +38091, +38104, +38104, +38104, +38136, +38136, +38163, +38163, +38199, +38218, +38218, +38218, +38218, +38258, +38258, +38258, +38258, +38287, +38308, +38323, +38323, +38323, +38340, +38375, +38419, +38419, +38419, +38419, +38419, +38419, +38435, +38471, +38471, +38504, +38526, +38526, +38582, 38589, 38589, -38604, -38618, -38618, -38618, -38624, -38624, -38634, -38640, -38640, -38647, -38685, -38685, -38694, -38714, -38729, -38729, -38729, -38755, -38755, +38609, +38619, +38633, +38633, +38667, +38667, +38667, +38667, +38680, +38709, +38709, +38709, +38709, +38737, +38737, +38737, 38760, 38760, -38778, -38778, -38814, -38814, -38830, -38842, -38857, -38857, -38867, -38882, -38882, -38893, -38893, -38893, -38911, -38911, -38911, -38925, -38925, -38932, -38939, -38939, -38945, -38953, -38953, -38953, -38960, -38960, -38994, -39004, -39004, -39004, -39004, -39014, -39019, -39051, -39073, -39073, -39095, +38760, +38760, +38760, +38779, +38833, +38833, +38883, +38883, +38883, +38889, +38908, +38956, +38967, +38988, +38988, +39028, +39047, +39047, 39095, -39137, -39162, -39162, -39167, -39167, -39188, -39205, -39210, -39223, -39223, -39223, -39237, -39255, -39280, -39280, -39311, -39358, -39406, -39406, -39406, +39149, +39158, +39158, +39158, +39182, +39233, +39262, +39277, +39313, +39313, +39345, +39362, +39369, +39369, +39378, +39395, +39395, 39429, -39444, -39454, -39487, -39487, -39503, -39516, -39516, -39516, -39522, -39540, -39540, -39559, -39559, -39559, -39569, -39591, -39591, -39611, -39611, -39611, -39611, -39619, -39619, -39619, -39619, -39631, -39646, -39646, -39651, -39657, -39657, -39657, -39657, -39674, -39729, -39729, -39758, -39772, -39789, -39875, -39887, -39887, -39887, -39887, -39944, -39944, -39983, -39999, -39999, -40015, -40019, -40049, -40064, -40064, -40073, -40073, -40080, -40089, -40089, -40089, -40089, -40094, -40094, -40101, -40112, -40128, -40155, -40187, -40187, -40187, -40194, -40194, -40221, -40258, -40258, -40265, -40272, -40272, -40279, -40283, -40290, -40290, -40307, -40336, -40370, -40370, -40370, -40389, -40389, -40406, -40429, -40429, -40429, -40429, -40429, -40429, -40429, +39438, +39453, +39502, +39502, +39539, +39539, +39593, +39618, +39644, +39689, +39712, +39712, +39712, +39736, +39736, +39736, +39746, +39759, +39777, +39777, +39802, +39802, +39812, +39812, +39825, +39825, +39832, +39832, +39847, +39847, +39872, +39911, +39957, +39991, +39991, +40009, +40026, +40026, +40035, +40035, +40035, +40035, +40039, +40039, +40039, +40061, +40069, +40086, +40086, +40091, +40111, +40150, +40179, +40199, +40215, +40215, +40215, +40238, +40238, +40238, +40252, +40252, +40252, +40259, +40259, +40321, +40321, +40328, +40328, +40346, +40346, +40369, +40380, +40388, +40388, +40388, +40407, +40423, +40423, +40423, 40436, -40447, -40447, -40447, -40464, -40478, -40487, -40487, -40520, -40520, -40526, -40526, -40531, -40531, -40549, -40568, -40574, +40436, +40443, +40449, +40457, +40473, +40473, +40496, +40502, +40534, +40556, 40574, -40616, -40623, -40630, +40595, +40613, +40613, 40630, +40637, +40637, 40644, -40666, -40666, -40695, -40703, -40703, -40711, -40711, -40718, -40723, -40736, -40736, -40736, -40746, -40785, -40795, -40804, -40804, -40816, -40835, -40851, -40877, -40891, -40931, -40938, -40976, -40986, -41006, -41006, -41013, -41025, -41031, -41045, -41045, -41097, -41118, -41118, -41143, -41157, -41183, -41194, -41194, -41236, -41264, -41286, -41286, -41327, -41334, -41334, -41334, -41334, -41352, -41352, -41358, -41358, -41358, -41375, -41383, +40650, +40675, +40686, +40686, +40686, +40752, +40781, +40802, +40815, +40821, +40838, +40838, +40838, +40855, +40887, +40930, +40949, +40965, +40969, +40988, +40988, +40988, +40988, +40988, +40988, +41020, +41036, +41059, +41074, +41074, +41093, +41098, +41098, +41104, +41156, +41184, +41184, +41200, +41223, +41238, +41244, +41244, +41244, +41267, +41267, +41267, +41273, +41273, +41273, +41297, +41297, +41303, +41324, +41335, +41354, +41360, +41360, +41360, +41360, +41367, +41367, 41383, -41398, -41423, -41423, -41467, -41467, -41474, -41490, -41490, -41521, -41521, -41521, -41559, -41566, -41576, -41598, -41643, +41408, +41449, +41486, +41514, +41514, +41514, +41514, +41514, +41529, +41548, +41548, +41589, +41608, +41608, +41628, +41628, 41667, -41680, -41703, -41703, -41703, -41714, -41752, -41761, -41768, -41775, -41789, -41789, -41825, -41841, -41841, -41841, -41871, -41906, -41906, -41936, +41701, +41701, +41719, +41719, +41732, +41754, +41785, +41810, +41845, +41860, +41860, +41860, +41873, +41890, +41921, +41942, +41942, +41952, 41975, -41990, -41990, -41990, -41990, -42030, -42030, -42056, -42056, -42066, -42066, -42097, -42097, -42124, -42141, -42141, -42141, -42147, -42154, -42161, -42177, -42177, -42203, -42210, -42210, -42210, -42210, -42210, -42222, -42222, -42222, -42244, -42244, -42300, -42300, -42322, -42346, -42356, -42356, -42387, -42387, -42387, -42413, -42413, -42434, -42434, -42487, -42507, -42514, -42528, -42528, -42528, -42548, -42582, -42582, -42588, -42631, -42649, +42000, +42000, +42000, +42021, +42034, +42034, +42034, +42034, +42034, +42049, +42049, +42096, +42096, +42096, +42096, +42107, +42107, +42122, +42173, +42208, +42214, +42231, +42231, +42238, +42252, +42252, +42266, +42292, +42316, +42331, +42331, +42331, +42350, +42365, +42371, +42378, +42389, +42395, +42395, +42435, +42446, +42446, +42458, +42458, +42476, +42476, +42476, +42486, +42506, +42510, +42559, +42565, +42583, +42600, +42643, +42650, 42656, -42676, -42684, -42704, -42718, -42743, -42764, -42777, -42783, -42802, -42829, -42855, -42869, -42869, -42869, -42869, -42879, -42879, -42891, -42891, -42919, -42919, -42934, -42950, -42950, -42992, -43012, -43012, -43021, -43033, -43033, -43056, -43066, -43079, -43079, -43079, +42668, +42688, +42698, +42738, +42761, +42761, +42800, +42806, +42847, +42851, +42877, +42881, +42917, +42929, +42945, +42945, +42945, +42951, +42951, +42967, +43009, +43009, +43028, +43040, +43040, +43046, +43046, +43072, 43088, -43095, -43163, -43163, -43163, -43163, -43171, -43171, -43194, -43217, -43217, -43223, -43252, -43252, -43267, -43281, -43304, -43322, -43348, -43359, -43392, -43402, -43441, -43441, +43097, +43139, +43146, +43172, +43192, +43192, +43192, +43220, +43232, +43238, +43238, +43256, +43256, +43256, +43277, +43295, +43313, +43325, +43325, +43349, +43367, +43380, +43387, +43425, 43441, -43468, -43468, -43468, -43485, -43489, -43519, +43484, +43484, +43507, +43507, 43526, -43526, -43564, -43564, -43564, -43583, -43583, -43605, -43609, -43621, -43640, -43651, -43651, -43655, -43662, -43662, -43685, -43712, -43728, -43733, -43752, -43760, -43775, -43786, -43786, -43796, -43811, +43537, +43572, +43577, +43577, +43587, +43591, +43591, +43619, +43626, +43646, +43646, +43674, +43704, +43704, +43751, +43781, +43798, +43824, +43846, 43846, 43862, 43862, -43892, -43930, -43930, -43956, +43878, +43878, +43884, +43911, +43911, +43911, +43911, +43911, +43925, +43933, +43943, +43949, +43949, +43976, +43976, +43976, 43986, -44006, -44006, -44016, -44059, -44059, -44084, -44091, -44091, -44105, -44113, -44128, -44157, -44167, -44173, -44195, -44195, -44195, -44213, -44213, -44213, -44238, -44255, -44316, -44316, +44000, +44000, +44012, +44035, +44053, +44053, +44053, +44068, +44090, +44118, +44130, +44130, +44130, +44130, +44142, +44149, +44155, +44155, +44155, +44155, +44174, +44174, +44174, +44190, +44190, +44215, +44215, +44215, +44231, +44263, +44273, +44273, +44273, +44273, +44296, +44311, +44311, +44311, +44327, 44327, 44327, -44335, -44335, -44335, -44335, -44372, -44372, -44372, -44372, -44379, -44402, -44431, -44454, -44470, -44486, -44486, -44512, -44512, -44525, -44538, -44555, -44574, -44574, -44574, -44583, -44583, -44583, -44583, -44597, -44617, -44627, -44627, -44666, -44666, -44666, -44673, -44673, -44673, -44736, -44736, -44736, -44736, -44743, -44763, -44787, -44804, -44819, -44819, -44835, -44848, -44886, -44886, -44915, -44944, -44949, -44949, -44949, -44949, -44976, -44976, -45008, -45008, -45028, -45028, +44345, +44368, +44368, +44368, +44368, +44368, +44380, +44414, +44414, +44422, +44439, +44459, +44459, +44484, +44484, +44484, +44503, +44503, +44520, +44520, +44520, +44520, +44524, +44557, +44557, +44564, +44584, +44584, +44606, +44614, +44614, +44614, +44614, +44634, +44648, +44679, +44685, +44728, +44778, +44785, +44792, +44792, +44803, +44814, +44829, +44845, +44863, +44870, +44895, +44910, +44919, +44960, +44960, +44972, +44972, +44972, +44972, +44985, +45017, +45036, 45062, 45062, -45069, -45069, -45095, -45095, -45095, +45074, +45088, 45105, -45122, -45143, -45153, -45153, -45153, -45153, -45153, -45153, -45153, -45153, -45158, -45158, -45158, +45136, +45142, +45142, +45174, 45186, -45198, -45225, -45225, -45243, -45270, -45287, -45287, -45287, -45316, -45348, -45365, -45372, -45381, -45381, -45402, -45402, +45193, +45193, +45203, +45203, +45203, +45213, +45232, +45232, +45236, +45277, +45297, +45297, +45297, +45302, +45315, +45315, +45361, +45385, 45420, -45420, -45435, -45435, -45448, -45448, -45499, -45507, -45507, -45529, -45547, -45547, -45547, -45556, -45573, -45583, -45593, -45609, -45620, -45620, -45663, -45688, -45705, -45705, -45711, -45729, -45752, -45766, -45772, -45782, -45799, -45811, -45866, -45866, -45903, -45903, -45903, -45903, -45924, -45974, -45978, -45994, -45994, +45455, +45455, +45455, +45455, +45464, +45486, +45490, +45490, +45508, +45524, +45524, +45524, +45543, +45543, +45543, +45589, +45613, +45629, +45641, +45669, +45681, +45698, +45698, +45698, +45698, +45723, +45723, +45723, +45735, +45742, +45763, +45787, +45791, +45791, +45818, +45831, +45843, +45861, +45861, +45877, +45877, +45892, +45892, +45901, +45916, +45935, +45935, +45935, +45953, +45953, +45967, +45967, 45998, -46045, -46060, -46083, -46083, -46114, -46123, -46130, -46180, -46186, -46201, -46201, -46201, -46259, -46280, -46291, -46295, -46301, -46347, -46347, -46396, -46412, -46455, -46455, -46455, -46460, -46487, -46509, -46509, -46509, -46523, -46565, -46578, -46578, -46578, -46584, -46594, -46594, -46638, -46659, -46659, -46671, -46671, -46691, -46691, -46691, -46718, -46718, -46732, +46007, +46007, +46011, +46024, +46047, +46047, +46047, +46053, +46053, +46067, +46078, +46098, +46126, +46169, +46194, +46225, +46240, +46240, +46256, +46279, +46279, +46308, +46308, +46308, +46330, +46373, +46383, +46407, +46407, +46425, +46425, +46441, +46476, +46498, +46512, +46525, +46525, +46525, +46540, +46557, +46574, +46590, +46609, +46609, +46632, +46632, +46647, +46655, +46697, 46742, -46759, -46759, -46787, -46803, -46803, -46816, -46844, -46867, -46867, -46898, +46742, +46742, +46742, +46742, +46752, +46780, +46780, +46807, +46807, +46807, +46807, +46820, +46829, +46864, +46864, +46894, +46894, 46898, -46920, -46963, -46991, -47006, -47016, -47016, -47028, -47043, -47047, -47047, -47047, -47078, -47093, -47100, -47120, -47125, -47139, -47139, -47143, -47162, -47162, +46938, +46938, +46938, +46945, +46945, +46971, +46977, +46999, +47012, +47026, +47026, +47044, +47059, +47059, +47104, +47104, +47104, +47104, +47104, +47104, +47104, +47121, +47121, +47121, +47131, +47160, +47170, 47182, 47182, -47204, -47204, -47223, -47223, -47234, -47234, -47234, -47239, -47239, -47247, -47247, -47253, -47287, -47287, -47287, -47287, -47287, -47306, -47346, -47376, -47376, -47412, -47412, -47412, -47412, -47412, -47412, -47420, -47429, -47438, -47438, -47438, -47438, -47449, -47449, -47465, +47182, +47209, +47209, +47280, +47302, +47362, +47374, +47389, +47398, +47398, +47418, +47425, +47435, +47452, +47459, +47459, +47459, 47465, -47479, -47498, -47498, -47498, -47498, -47510, -47532, -47540, +47486, +47486, +47506, +47522, +47541, 47547, -47553, -47553, -47553, -47553, -47569, -47569, -47589, -47589, -47589, +47557, +47603, +47621, +47631, 47631, -47637, -47637, -47637, -47637, -47653, -47653, -47653, -47672, -47672, -47672, -47703, -47703, -47703, -47711, -47725, -47725, -47748, -47778, -47790, -47790, -47815, -47815, -47815, -47842, -47842, -47858, -47880, -47880, -47880, -47880, -47910, -47910, -47921, -47948, -47959, -47959, -47959, -47979, -47979, +47662, +47662, +47683, +47689, +47706, +47731, +47736, +47736, +47736, +47736, +47750, +47780, +47780, +47785, +47792, +47803, +47810, +47837, +47837, +47852, +47852, +47890, +47890, +47890, +47902, +47924, +47968, 47984, -48010, -48019, +48002, +48002, +48002, +48002, +48002, +48002, +48014, +48020, +48020, +48020, 48035, -48035, -48054, -48054, -48089, -48089, -48105, -48115, -48121, -48135, -48159, -48169, -48169, -48169, -48169, +48045, +48045, +48045, +48053, +48053, +48092, +48092, +48117, +48117, +48143, +48143, +48150, +48160, 48187, 48187, 48187, -48227, -48244, -48256, -48272, -48272, -48287, -48287, -48287, -48287, -48287, -48309, -48341, -48341, -48351, -48351, -48351, -48380, -48380, -48380, -48386, -48414, -48439, -48455, -48491, -48505, -48517, -48517, -48517, -48517, -48562, -48577, -48577, -48589, -48594, -48631, -48631, -48644, -48644, -48644, -48648, +48203, +48203, +48239, +48250, +48250, +48250, +48250, +48250, +48269, +48284, +48288, +48288, +48288, +48303, +48303, +48303, +48303, +48303, +48322, +48322, +48322, +48335, +48347, +48347, +48347, +48360, +48360, +48360, +48360, +48360, +48379, +48379, +48392, +48392, +48392, +48392, +48409, +48425, +48459, +48459, +48466, +48483, +48504, +48504, +48536, +48536, +48536, +48550, +48564, +48606, +48626, 48660, -48667, -48685, -48685, -48695, -48695, -48695, -48695, -48710, -48710, -48710, -48727, -48753, -48753, -48769, -48769, -48775, -48788, -48788, -48802, -48830, -48834, -48873, -48873, -48882, -48886, -48898, -48915, -48915, -48950, -49002, -49019, -49019, -49029, -49029, -49068, -49068, -49068, -49090, -49090, -49106, -49106, -49106, -49113, -49148, -49163, -49163, -49206, -49229, -49253, -49281, -49281, -49281, -49281, +48677, +48677, +48677, +48689, +48689, +48689, +48697, +48697, +48728, +48739, +48757, +48757, +48777, +48793, +48793, +48815, +48815, +48829, +48852, +48860, +48860, +48899, +48899, +48912, +48963, +48963, +48992, +48992, +48992, +48992, +49006, +49014, +49042, +49042, +49055, +49055, +49055, +49071, +49077, +49108, +49108, +49120, +49120, +49120, +49120, +49127, +49127, +49131, +49145, +49162, +49162, +49179, +49207, +49207, +49207, +49207, +49207, +49207, +49207, +49207, +49207, +49218, +49218, +49235, +49250, +49260, +49270, +49270, +49286, 49295, -49307, -49311, -49327, -49343, -49360, -49403, +49295, +49295, +49295, +49337, +49347, +49358, +49358, +49390, 49403, 49403, -49429, -49429, -49434, -49434, -49434, -49434, -49444, -49444, -49460, -49460, -49496, -49503, -49538, -49574, -49574, -49574, -49574, +49413, +49423, +49423, +49423, +49455, +49471, +49471, +49477, +49477, +49477, +49494, +49512, +49521, +49521, +49552, +49582, 49612, -49612, -49651, -49661, -49686, -49686, -49695, -49710, -49710, -49725, -49742, -49742, -49742, -49742, -49742, -49757, -49757, -49762, -49815, -49835, -49863, -49863, -49869, -49888, -49907, -49907, -49917, -49940, -49940, -49946, -49963, -49998, -50017, -50031, -50052, -50074, -50074, -50085, -50085, -50105, -50105, -50123, -50123, -50136, -50152, -50192, -50192, -50212, -50212, -50226, -50226, -50259, -50259, -50259, -50282, -50287, -50315, -50320, +49641, +49653, +49653, +49653, +49675, +49680, +49690, +49724, +49724, +49755, +49773, +49795, +49795, +49795, +49795, +49795, +49801, +49822, +49822, +49850, +49850, +49878, +49897, +49897, +49897, +49897, +49897, +49919, +49942, +49947, +49956, +49956, +49956, +49975, +49975, +49990, +50000, +50000, +50000, +50008, +50034, +50034, +50050, +50050, +50059, +50059, +50075, +50075, +50075, +50104, +50112, +50112, +50112, +50112, +50149, +50158, +50158, +50198, +50232, +50248, +50262, +50262, +50272, +50272, +50281, +50281, +50281, +50288, +50295, +50295, +50305, 50320, -50320, -50320, -50379, -50396, -50412, -50412, -50412, -50412, -50443, -50466, -50466, -50489, -50489, -50503, -50503, +50363, +50363, +50400, +50410, +50410, +50423, +50435, +50448, +50453, +50467, +50467, +50467, +50485, +50485, 50503, -50503, -50521, -50529, -50529, -50556, -50575, -50575, -50581, -50581, -50581, -50585, -50585, -50598, -50598, -50598, -50598, -50598, -50611, -50636, -50636, -50646, -50661, -50661, -50661, -50680, -50680, -50713, -50713, -50729, -50753, -50753, -50759, -50791, -50806, -50806, -50806, -50806, -50806, -50814, -50831, -50831, -50831, -50878, -50897, -50897, -50921, -50943, -50949, -50960, -50981, -50991, -51008, -51020, -51020, -51035, -51045, -51045, -51085, -51110, -51123, -51123, -51142, -51176, -51204, -51204, -51214, -51214, -51214, -51214, -51232, +50513, +50535, +50535, +50542, +50583, +50589, +50597, +50602, +50627, +50640, +50682, +50689, +50708, +50712, +50712, +50712, +50728, +50746, +50774, +50774, +50790, +50802, +50802, +50802, +50834, +50847, +50865, +50880, +50880, +50880, +50880, +50899, +50908, +50923, +50955, +50993, +51005, +51005, +51016, +51025, +51043, +51064, +51064, +51081, +51109, +51126, +51178, +51178, +51178, +51187, +51220, +51220, 51239, 51239, -51279, -51279, -51279, -51279, -51279, -51295, -51295, -51314, -51340, -51358, -51383, -51414, -51434, -51434, -51434, -51440, +51239, +51258, +51274, +51274, +51311, +51311, +51311, +51325, +51336, +51336, +51336, +51336, +51336, +51336, +51336, +51336, +51349, +51349, +51369, +51375, +51375, +51375, +51375, +51375, +51398, +51417, +51417, +51427, +51427, 51440, -51459, 51465, -51484, -51502, -51502, -51519, -51536, -51536, -51551, -51551, -51557, -51557, -51557, -51564, -51573, -51573, -51573, -51580, -51580, -51594, -51594, -51610, -51610, -51625, -51625, -51669, -51669, -51669, -51720, -51720, -51720, -51720, -51730, -51730, -51730, -51730, +51465, +51465, +51465, +51465, +51478, +51478, +51485, +51503, +51511, +51517, +51528, +51550, +51550, +51569, +51569, +51586, +51586, +51586, +51595, +51601, +51608, +51633, +51650, +51650, +51650, +51650, +51650, +51650, +51670, +51670, +51690, +51714, +51714, +51732, 51750, -51793, -51800, -51810, -51821, -51827, +51750, +51782, +51791, +51799, +51799, +51805, +51820, +51820, +51820, 51852, -51865, -51869, +51856, +51856, +51856, +51856, 51869, -51875, -51911, -51911, -51911, -51934, -51953, -51953, -51953, -51967, -51967, -51967, -51980, -51985, -51985, -51985, -51985, -51985, -51985, -51996, -52044, -52044, -52044, -52065, -52065, -52079, -52093, -52105, -52105, -52112, -52136, -52136, +51884, +51884, +51925, +51936, +51936, +51941, +51954, +51954, +51954, +51954, +51976, +51976, +51999, +51999, +52008, +52038, +52038, +52055, +52055, +52070, +52087, +52094, +52129, +52145, +52145, 52158, -52167, -52194, -52211, +52165, +52198, +52225, +52225, 52232, -52266, +52245, +52262, +52262, +52262, +52269, +52269, +52269, +52281, +52281, 52290, -52321, -52321, -52338, -52371, -52371, -52371, -52371, -52376, -52401, -52415, -52415, -52425, -52425, -52435, -52435, -52443, -52443, -52455, -52491, -52506, -52547, -52567, -52567, -52584, -52588, -52598, -52638, -52643, -52664, -52664, -52664, -52664, -52664, -52693, -52701, -52701, -52740, -52775, -52775, -52813, -52824, -52849, -52849, -52862, -52877, -52890, -52890, -52890, -52906, -52931, -52952, -52952, -52952, -52952, -52968, -52977, -52995, -52995, -52995, -53010, -53010, -53039, -53039, -53039, -53056, -53056, -53065, -53077, -53095, -53113, -53142, -53142, -53151, -53151, -53167, -53167, -53192, -53192, -53198, -53198, -53198, -53226, -53226, +52290, +52290, +52290, +52316, +52316, +52341, +52379, +52417, +52417, +52426, +52433, +52446, +52450, +52463, +52467, +52467, +52467, +52479, +52487, +52502, +52522, +52522, +52558, +52574, +52574, +52574, +52574, +52612, +52612, +52633, +52655, +52714, +52722, +52731, +52736, +52765, +52778, +52778, +52819, +52874, +52891, +52891, +52903, +52903, +52903, +52926, +52965, +52982, +53003, +53003, +53023, +53031, +53048, +53062, +53062, +53109, +53115, +53115, +53115, +53125, +53125, +53125, +53132, +53140, +53156, +53156, +53165, +53176, +53183, 53226, -53232, -53276, -53288, -53288, -53301, -53301, -53301, -53301, -53301, -53301, -53301, -53301, +53256, +53256, +53275, +53293, +53293, +53293, +53293, +53293, 53313, -53336, -53345, -53363, -53384, -53384, -53413, -53413, -53421, -53421, -53428, -53450, -53472, -53510, -53510, -53510, -53540, -53540, -53546, -53558, -53558, -53558, -53558, -53558, +53323, +53323, +53323, +53323, +53330, +53355, +53355, +53362, +53368, +53374, +53374, +53374, +53374, +53374, +53374, +53374, +53381, +53381, +53381, +53381, +53391, +53400, +53412, +53412, +53412, +53440, +53440, +53448, +53448, +53466, +53481, +53481, +53481, +53481, +53481, +53481, +53491, +53505, +53521, +53550, +53559, +53559, 53570, -53570, -53591, -53611, -53650, -53664, -53671, -53710, -53722, -53722, -53741, -53771, -53780, -53827, -53833, -53863, -53868, -53880, -53893, -53893, -53907, -53919, -53939, -53939, -53956, -54004, -54004, -54004, -54021, -54021, -54045, -54045, -54060, -54060, -54060, -54060, -54060, -54060, -54077, -54077, -54091, -54115, -54124, -54175, -54175, -54175, -54194, -54194, -54221, -54272, -54302, -54314, -54324, -54324, -54324, -54336, -54349, -54369, -54369, -54369, -54431, -54431, -54451, -54479, -54526, -54526, -54568, -54577, -54577, -54577, -54587, -54609, -54609, -54616, -54637, -54658, -54665, -54665, -54681, -54692, -54692, -54705, -54705, -54738, -54750, -54764, -54764, -54770, -54770, -54779, -54779, -54779, -54810, -54810, -54843, -54874, -54874, -54874, -54874, -54900, -54913, -54913, -54929, -54956, -54985, -54991, -55048, -55048, -55069, -55069, -55105, -55105, -55112, -55127, -55127, -55133, -55153, -55171, -55203, -55215, -55250, -55262, -55262, -55272, -55272, -55272, -55286, -55286, -55296, -55336, -55336, -55390, -55390, -55390, -55390, -55421, -55421, -55428, -55460, -55487, -55487, -55505, -55505, -55521, +53577, +53577, +53628, +53644, +53665, +53665, +53665, +53675, +53675, +53675, +53675, +53698, +53698, +53719, +53719, +53731, +53753, +53753, +53759, +53777, +53793, +53814, +53838, +53849, +53884, +53884, +53884, +53899, +53899, +53915, +53915, +53925, +53953, +53983, +53993, +53993, +54029, +54053, +54053, +54063, +54063, +54063, +54075, +54094, +54094, +54094, +54104, +54110, +54127, +54127, +54127, +54127, +54158, +54158, +54195, +54208, +54215, +54232, +54232, +54249, +54259, +54278, +54278, +54278, +54284, +54284, +54284, +54294, +54294, +54294, +54310, +54359, +54372, +54372, +54372, +54372, +54377, +54383, +54415, +54415, +54415, +54426, +54447, +54474, +54499, +54499, +54509, +54514, +54514, +54514, +54536, +54547, +54547, +54553, +54578, +54590, +54590, +54603, +54603, +54603, +54619, +54626, +54645, +54645, +54660, +54676, +54704, +54704, +54704, +54721, +54721, +54721, +54729, +54729, +54755, +54755, +54755, +54755, +54755, +54755, +54771, +54812, +54836, +54836, +54846, +54919, +54919, +54937, +54962, +54962, +54962, +55003, +55023, +55023, +55037, +55037, +55037, +55044, +55050, +55050, +55061, +55061, +55061, +55061, +55061, +55092, +55113, +55130, +55142, +55185, +55196, +55196, +55196, +55196, +55196, +55202, +55261, +55278, +55278, +55298, +55298, +55315, +55315, +55354, +55354, +55354, +55382, +55389, +55405, +55410, +55410, +55416, +55416, +55416, +55416, +55416, +55416, +55416, +55416, +55422, +55458, +55465, +55465, +55479, +55508, +55508, +55514, 55521, -55525, -55530, -55541, -55551, -55551, -55551, -55564, -55564, -55585, -55585, -55585, -55585, -55610, -55661, -55661, +55540, +55540, +55540, +55540, +55553, +55563, +55577, +55577, +55595, +55595, +55617, +55617, +55617, +55621, +55640, +55640, +55640, +55640, +55663, +55681, 55681, -55698, -55716, -55716, -55725, -55734, -55751, -55812, -55823, -55832, -55832, -55832, -55871, -55889, -55889, -55905, -55905, -55905, -55948, -55956, -55971, -55971, -55971, -56009, -56037, -56037, -56037, -56044, -56044, -56044, -56044, -56044, -56044, +55726, +55746, +55746, +55762, +55762, +55774, +55825, +55838, +55854, +55864, +55864, +55864, +55886, +55897, +55917, +55917, +55931, +55961, +55961, +55961, +55985, +56003, +56003, +56003, +56025, +56025, 56074, 56074, 56074, -56078, -56119, -56131, -56152, -56159, -56186, -56248, -56252, -56252, -56256, -56256, -56256, -56256, -56283, -56295, -56342, -56367, -56367, -56367, -56382, -56394, -56415, -56415, -56421, -56421, -56421, -56486, -56499, -56499, -56531, -56531, -56531, -56560, -56597, -56604, -56612, -56621, -56656, -56656, -56656, -56671, -56671, -56671, -56684, -56684, -56684, -56684, -56684, -56684, -56684, -56702, -56710, -56718, -56738, -56738, -56755, -56770, +56105, +56118, +56141, +56141, +56141, +56141, +56141, +56169, +56203, +56203, +56203, +56203, +56221, +56225, +56258, +56272, +56278, +56321, +56321, +56339, +56372, +56372, +56397, +56411, +56428, +56437, +56437, +56458, +56469, +56538, +56544, +56562, +56562, +56579, +56579, +56593, +56593, +56593, +56613, +56613, +56619, +56670, +56676, +56705, +56705, +56705, +56723, +56733, +56733, +56733, +56733, +56739, +56739, +56739, +56758, +56758, +56758, +56775, 56785, -56821, -56821, -56832, -56832, -56832, -56832, -56880, -56906, -56914, -56914, -56914, -56914, -56914, -56914, -56922, -56922, -56931, -56940, -56940, -56950, -56972, -56990, -57000, -57006, -57006, -57006, -57030, -57054, -57063, -57095, -57095, -57095, -57095, -57100, -57100, -57100, -57100, -57100, -57129, -57129, -57129, -57147, -57147, -57184, -57203, -57203, -57215, +56793, +56793, +56819, +56837, +56862, +56862, +56862, +56868, +56868, +56917, +56917, +56942, +56942, +56968, +57007, +57007, +57039, +57043, +57043, +57043, +57043, +57049, +57049, +57075, +57075, +57103, +57118, +57143, +57150, +57165, +57180, +57180, +57187, +57234, +57234, +57252, +57258, +57258, 57258, -57286, -57308, -57308, -57308, -57335, -57352, -57352, -57382, -57403, -57415, -57450, -57457, -57478, -57499, -57506, -57506, -57523, -57545, -57545, +57271, +57285, +57285, +57285, +57294, +57294, +57294, +57304, +57321, +57343, +57374, +57386, +57386, +57428, +57436, +57449, +57449, +57455, +57471, +57482, +57491, +57528, +57550, +57560, +57560, +57560, 57566, -57579, -57589, -57597, -57632, -57659, -57667, -57696, -57696, -57705, -57743, -57751, -57798, -57818, -57830, -57857, -57865, -57865, -57895, -57940, -57976, -57976, -57976, -57976, -57976, -57976, -57976, -57976, -57976, -58011, -58016, -58016, -58052, +57584, +57584, +57611, +57627, +57627, +57656, +57656, +57656, +57656, +57675, +57692, +57727, +57727, +57727, +57727, +57733, +57744, +57780, +57790, +57790, +57790, +57804, +57810, +57810, +57810, +57831, +57855, +57863, +57874, +57887, +57887, +57896, +57938, +57938, +57938, +57938, +57963, +57963, +57963, +57967, +57967, +57990, +57990, +57990, +58012, +58023, +58023, 58066, -58066, -58066, -58066, -58089, -58089, -58089, -58105, -58105, -58123, -58160, -58179, -58179, -58179, -58179, -58179, -58187, -58187, -58187, -58210, -58227, -58227, -58254, -58254, -58254, -58254, -58254, -58254, -58271, -58290, -58305, -58318, -58336, -58336, -58353, -58353, -58353, -58365, -58365, -58365, -58377, -58425, -58425, -58446, -58446, -58446, -58446, -58456, -58456, +58119, +58119, +58144, +58154, +58167, +58189, +58203, +58203, +58217, +58217, +58234, +58234, +58234, +58246, +58259, +58285, +58322, +58322, +58362, +58378, +58386, +58393, +58430, +58430, +58430, +58430, +58451, +58451, 58470, -58495, -58495, -58495, -58495, -58495, -58508, -58508, +58479, +58479, +58479, 58530, -58564, -58574, -58574, -58574, -58615, -58658, -58658, -58686, -58686, +58544, +58544, +58570, +58570, +58570, +58583, +58583, +58592, +58592, +58606, +58618, +58618, +58628, +58648, +58648, +58663, 58686, -58686, -58686, -58686, -58703, -58703, -58738, -58767, -58767, -58767, -58767, -58774, -58774, -58774, -58781, -58781, -58781, -58781, -58781, -58781, -58781, -58795, -58795, -58812, -58836, -58836, -58844, -58844, -58865, -58865, -58871, -58881, -58908, -58908, -58908, -58927, -58927, -58927, -58941, -58941, -58941, -58941, -58941, -58941, -58941, -58959, -58959, -58959, -58959, -58966, -58966, -58980, -58980, -59006, -59016, -59016, -59032, -59055, -59067, -59067, -59092, -59092, -59097, -59116, -59135, -59154, -59154, -59164, -59181, -59209, -59268, -59268, -59281, -59281, -59294, -59310, -59329, -59329, -59329, -59360, -59367, +58702, +58717, +58727, +58734, +58744, +58744, +58776, +58776, +58810, +58810, +58810, +58821, +58834, +58845, +58845, +58857, +58874, +58913, +58913, +58913, +58939, +58945, +58955, +58968, +58992, +58992, +59002, +59002, +59035, +59064, +59076, +59120, +59150, +59169, +59169, +59176, +59176, +59193, +59200, +59232, +59232, +59247, +59261, +59284, +59312, +59338, +59338, +59345, +59355, 59367, -59378, 59385, -59385, -59385, -59385, -59385, -59385, -59385, -59385, -59385, -59409, -59413, -59413, -59413, -59420, -59420, -59449, -59449, -59449, -59467, -59467, -59486, +59392, +59419, +59419, +59431, +59438, 59501, -59507, -59507, -59533, -59540, -59553, -59553, -59553, -59553, -59553, -59553, -59572, -59572, -59592, -59601, -59618, -59654, -59659, -59659, -59659, -59659, -59659, -59669, -59687, -59717, -59717, -59717, -59717, -59717, -59744, +59515, +59546, +59566, +59580, +59587, +59594, +59619, +59638, +59652, +59652, +59696, +59709, +59716, +59716, +59716, +59723, +59764, +59764, 59771, -59803, -59813, -59836, -59876, -59899, -59899, -59899, -59899, -59919, -59919, -59927, +59822, +59859, +59859, +59866, +59891, +59898, +59923, +59937, +59949, 59956, -59975, -59975, -59975, -59993, -60046, -60068, +59956, +59963, +59985, +59992, +59992, +59992, +60017, +60041, +60054, 60087, 60087, -60117, -60117, -60117, -60117, -60127, -60127, -60127, -60142, -60163, -60163, -60179, -60202, -60211, -60245, -60245, -60245, -60245, -60263, -60282, -60294, -60294, -60294, -60318, -60318, -60318, -60318, -60327, -60327, -60327, -60390, -60390, -60395, -60395, -60395, -60395, -60410, -60424, -60444, -60502, -60502, -60502, -60529, -60546, -60573, -60573, -60588, -60609, -60609, -60613, -60613, -60613, -60659, -60700, -60714, -60714, -60714, -60723, -60739, -60739, -60739, -60753, -60753, -60753, -60759, -60759, -60766, -60781, -60810, -60835, -60835, -60835, -60835, -60882, -60891, -60891, -60909, -60927, -60927, -60927, -60927, -60927, -60927, -60927, -60927, -60953, -60959, -60970, -60970, -60991, -60991, -61001, -61037, -61074, -61074, -61093, -61102, -61102, -61112, -61124, -61132, -61141, -61141, -61141, -61141, -61172, -61172, -61172, -61184, -61200, -61200, -61200, -61222, -61237, -61247, -61247, -61261, -61261, -61269, -61269, -61269, -61269, -61269, -61269, -61274, -61274, -61292, -61320, -61320, -61327, -61355, -61368, -61368, -61368, -61379, -61386, -61386, -61386, -61403, -61425, -61453, -61469, -61480, -61487, -61487, -61487, -61487, -61487, -61487, -61487, -61514, -61514, -61522, -61532, -61532, -61532, -61568, -61587, -61599, -61622, -61622, -61622, -61627, -61627, -61627, -61647, -61647, -61652, -61652, -61652, -61652, -61676, -61692, -61692, -61692, -61732, -61732, -61732, -61732, -61732, -61732, -61755, -61755, -61755, -61755, -61755, -61788, -61788, -61788, -61788, -61788, -61826, -61826, -61836, -61849, -61889, -61934, -61934, -61934, -61949, -61949, -61949, -61955, -61955, -61955, -61955, -61955, -61955, -61955, -61966, -61974, -61974, -61974, -61981, -61981, -61981, -61998, -62018, +60094, +60118, +60164, +60178, +60178, +60178, +60207, +60207, +60216, +60234, +60247, +60265, +60272, +60279, +60279, +60279, +60313, +60313, +60320, +60345, +60374, +60382, +60394, +60394, +60394, +60394, +60394, +60449, +60449, +60458, +60483, +60483, +60496, +60503, +60519, +60526, +60540, +60554, +60554, +60570, +60578, +60592, +60592, +60599, +60607, +60624, +60631, +60638, +60638, +60708, +60715, +60722, +60729, +60729, +60729, +60736, +60736, +60736, +60747, +60765, +60789, +60832, +60839, +60839, +60839, +60858, +60858, +60858, +60858, +60873, +60880, +60902, +60924, +60931, +60938, +60945, +60952, +60982, +60989, +61009, +61066, +61078, +61078, +61078, +61078, +61105, +61105, +61144, +61165, +61165, +61165, +61180, +61180, +61180, +61224, +61231, +61258, +61268, +61275, +61295, +61295, +61295, +61302, +61316, +61316, +61351, +61369, +61410, +61428, +61450, +61450, +61463, +61493, +61511, +61552, +61579, +61603, +61617, +61617, +61624, +61624, +61624, +61631, +61656, +61682, +61689, +61707, +61714, +61721, +61735, +61742, +61753, +61760, +61774, +61800, +61838, +61850, +61856, +61863, +61900, +61917, +61932, +61939, +61946, +61960, +61979, +62000, +62026, +62033, +62040, +62052, +62052, 62061, -62080, -62088, -62122, -62133, -62149, -62166, -62182, +62068, +62077, +62084, +62096, +62140, +62140, +62147, +62153, +62153, 62182, -62188, -62188, -62188, -62197, -62205, -62211, -62211, -62211, -62234, -62234, +62195, +62195, +62195, +62213, +62213, 62239, -62247, -62267, -62267, -62286, -62286, -62286, -62286, -62286, -62308, -62308, -62308, -62308, -62323, -62334, -62375, -62383, -62393, -62414, -62427, -62494, -62504, -62525, -62525, -62525, -62525, -62525, -62525, -62563, -62563, -62571, -62583, -62583, -62583, -62594, -62608, -62636, -62648, -62648, -62648, -62648, -62680, -62693, -62693, +62265, +62279, +62304, +62313, +62320, +62327, +62352, +62359, +62366, +62371, +62404, +62434, +62477, +62477, +62484, +62499, +62515, +62522, +62529, +62544, +62565, +62565, +62588, +62588, +62593, +62618, +62618, +62624, +62624, +62624, +62624, +62642, +62660, +62684, +62688, +62688, 62702, 62702, -62702, -62720, -62732, -62757, -62772, -62778, -62793, -62813, -62830, -62847, -62862, -62888, -62888, -62900, -62924, -62934, -62934, -62934, -62953, -63001, -63006, -63006, -63006, -63006, -63006, -63012, -63012, -63025, -63025, -63025, -63057, -63063, -63063, -63081, -63081, -63098, -63118, -63135, -63135, -63135, -63135, -63154, -63170, -63183, -63183, -63183, -63183, -63183, -63183, -63202, -63202, -63202, -63202, -63231, -63242, -63248, -63248, -63265, -63265, -63265, -63265, -63265, -63277, -63287, -63311, -63321, -63336, -63336, -63348, +62716, +62738, +62763, +62763, +62782, +62812, +62829, +62858, +62858, +62887, +62887, +62908, +62915, +62929, +62968, +62982, +62982, +62996, +63014, +63024, +63054, +63065, +63082, +63082, +63107, +63143, +63159, +63176, +63176, +63213, +63250, +63250, +63291, +63324, 63348, -63366, -63366, -63366, -63366, -63366, -63373, -63373, -63373, +63355, 63384, 63384, -63389, -63394, -63407, -63407, -63425, -63444, -63492, -63515, -63542, -63542, -63542, -63569, -63569, -63586, -63586, -63613, -63613, -63626, -63654, -63659, -63659, -63659, -63693, -63693, -63710, -63710, -63737, -63741, -63741, -63778, -63778, -63778, -63784, -63806, -63833, -63846, -63879, -63887, -63887, -63887, -63887, -63916, -63926, -63933, -63952, -63956, -63990, -64002, -64017, -64028, -64028, -64045, -64097, -64130, -64130, -64140, -64148, -64154, -64168, +63390, +63397, +63432, +63439, +63439, +63459, +63497, +63497, +63519, +63519, +63535, +63549, +63582, +63601, +63601, +63608, +63619, +63655, +63662, +63678, +63678, +63678, +63684, +63718, +63745, +63765, +63773, +63779, +63779, +63811, +63818, +63859, +63886, +63892, +63947, +63947, +63988, +64025, +64034, +64058, +64067, +64090, +64106, +64106, +64106, +64111, +64111, +64129, +64129, +64135, +64152, +64189, +64189, +64189, +64189, +64196, 64196, -64218, -64225, -64225, -64231, -64256, -64277, -64294, -64308, -64313, -64320, -64320, -64325, -64325, -64345, -64345, -64345, -64345, -64345, -64386, -64386, -64393, -64399, -64405, -64420, +64209, +64222, +64222, +64235, +64235, +64263, +64270, +64270, +64270, +64296, +64314, +64321, +64321, +64321, +64321, +64321, +64328, +64347, +64359, +64359, +64359, +64359, +64359, +64388, 64427, -64435, -64435, -64435, -64445, -64445, -64445, -64472, -64472, +64434, +64434, +64461, +64468, +64499, +64506, 64513, -64528, -64528, -64539, -64562, -64562, -64568, -64568, +64513, +64513, +64513, +64513, +64522, +64522, +64558, 64568, -64586, -64624, -64650, -64650, -64662, -64662, -64668, -64677, -64677, -64677, -64677, -64677, -64677, -64677, -64698, -64715, +64602, +64615, +64621, +64627, +64627, +64627, +64627, +64627, +64654, +64654, +64661, +64661, +64675, +64675, +64675, +64675, +64685, +64685, +64704, +64730, 64746, -64760, -64774, -64794, -64794, -64819, -64836, -64836, -64862, -64874, -64880, -64899, -64916, -64916, -64916, -64948, -64965, -64965, -64990, -65011, +64761, +64768, +64768, +64811, +64811, +64811, +64811, +64811, +64832, +64844, +64844, +64859, +64878, +64888, +64902, +64933, +64933, +64976, +64987, +65004, +65004, +65013, +65013, +65023, +65023, +65047, +65047, +65047, +65047, +65054, 65060, -65067, -65081, -65081, -65081, -65097, -65097, -65113, -65133, -65152, -65152, -65179, -65196, -65234, -65253, -65272, -65272, -65279, -65279, -65318, -65318, -65364, -65364, -65424, -65493, -65493, -65499, -65499, -65499, +65078, +65104, +65104, +65116, +65127, +65127, +65137, +65156, +65178, +65178, +65178, +65214, +65214, +65214, +65238, +65238, +65266, +65266, +65266, +65266, +65274, +65294, +65294, +65294, +65294, +65306, +65306, +65306, +65363, +65363, +65363, +65363, +65390, +65402, +65408, +65408, +65408, +65408, +65408, +65408, +65454, +65454, +65454, +65464, +65464, +65484, +65491, +65505, 65518, -65525, -65525, -65534, -65534, -65534, -65534, -65541, -65566, -65595, -65595, -65595, -65613, -65681, -65690, -65690, +65518, +65518, +65530, +65554, +65572, +65592, +65639, +65639, +65648, +65655, +65665, +65665, +65665, +65699, +65699, 65711, -65728, -65747, -65762, -65785, -65785, -65809, -65809, -65820, -65826, -65835, -65861, -65883, -65912, -65918, -65918, -65936, -65936, -65936, +65731, +65731, +65731, +65731, +65767, +65787, +65787, +65787, +65808, +65828, +65866, +65878, +65878, +65889, +65889, +65930, +65930, +65930, +65930, +65930, +65930, +65930, 65936, -65941, -65941, 65951, -65967, +65957, +65957, 65973, 65979, -65979, -66008, -66008, -66008, -66013, -66013, -66030, -66030, -66045, -66045, -66045, -66052, -66052, -66052, -66052, -66094, -66098, -66105, -66105, -66143, -66143, -66191, -66196, -66196, -66226, -66226, -66253, -66268, -66268, -66305, -66305, -66305, -66317, -66324, -66324, -66324, -66330, -66330, -66346, -66346, -66346, -66369, -66408, -66408, -66408, -66426, -66426, -66426, -66435, -66443, -66443, -66443, -66443, -66443, -66443, -66443, -66443, -66450, -66450, -66450, -66466, -66471, -66492, -66507, -66507, -66530, -66543, -66564, -66576, -66576, -66576, -66591, -66628, -66628, -66628, -66628, -66628, -66667, -66691, -66691, -66698, -66748, -66760, -66777, -66777, -66795, -66817, -66817, +66004, +66004, +66050, +66050, +66097, +66113, +66140, +66140, +66149, +66175, +66204, +66213, +66213, +66229, +66229, +66263, +66271, +66293, +66293, +66320, +66320, +66339, +66339, +66339, +66339, +66339, +66349, +66355, +66363, +66363, +66407, +66407, +66407, +66416, +66416, +66425, +66425, +66444, +66470, +66470, +66490, +66490, +66490, +66506, +66506, +66521, +66521, +66557, +66557, +66557, +66557, +66557, +66557, +66565, +66565, +66565, +66596, +66632, +66641, +66641, +66641, +66641, +66641, +66655, +66655, +66663, +66663, +66663, +66674, +66684, +66703, +66717, +66734, +66734, +66774, +66800, 66836, -66854, -66854, -66854, -66866, -66888, -66904, -66914, -66924, +66853, +66863, +66863, 66924, 66924, -66953, -66968, -66999, -66999, -67011, -67011, -67011, -67031, -67031, -67031, -67042, -67092, -67107, -67126, -67132, -67143, -67151, -67160, -67160, -67166, -67180, -67180, -67180, -67180, -67180, -67195, -67195, -67195, -67195, -67195, -67206, -67211, -67217, -67217, -67234, -67234, -67276, -67276, -67276, -67287, -67287, -67287, -67297, -67310, -67343, -67360, -67370, -67370, -67386, -67427, -67460, -67480, -67480, -67480, +66937, +66951, +66970, +66970, +66970, +67005, +67005, +67005, +67039, +67067, +67067, +67090, +67097, +67097, +67113, +67119, +67119, +67150, +67170, +67170, +67182, +67188, +67253, +67268, +67295, +67311, +67311, +67311, +67319, +67335, +67340, +67356, +67356, +67368, +67368, +67368, +67377, +67383, +67383, +67383, +67383, +67383, +67396, +67396, +67408, +67426, +67456, +67470, +67494, +67494, +67494, +67494, +67506, +67506, +67506, +67506, +67506, 67511, 67529, 67529, -67546, -67579, -67617, -67617, -67634, -67634, -67658, -67658, -67665, -67679, -67679, -67696, -67732, -67748, -67748, -67748, -67758, -67758, -67758, -67758, -67758, -67758, -67765, -67780, -67791, -67791, -67791, -67791, -67812, -67822, -67822, -67844, -67844, -67844, -67858, -67884, -67884, -67884, -67897, -67897, -67905, -67905, -67939, -67950, -67950, -67950, -67950, -67965, -67977, -67977, -67977, -67977, -68005, -68025, -68025, -68025, -68036, -68036, -68046, -68060, -68106, -68124, -68140, -68162, -68162, -68162, -68162, -68174, -68212, -68212, -68212, -68212, -68239, -68239, -68265, -68265, -68272, -68290, -68290, -68323, -68323, -68332, -68332, -68332, -68332, -68342, -68359, -68359, -68359, -68387, -68387, -68387, -68387, -68387, -68402, -68402, -68402, -68417, -68440, +67551, +67557, +67565, +67581, +67587, +67604, +67604, +67611, +67611, +67611, +67621, +67621, +67628, +67628, +67672, +67693, +67693, +67705, +67712, +67724, +67724, +67724, +67724, +67740, +67749, +67771, +67781, +67781, +67781, +67808, +67808, +67808, +67815, +67862, +67873, +67873, +67873, +67882, +67882, +67888, +67906, +67912, +67931, +67931, +67931, +67941, +67973, +67973, +68011, +68045, +68045, +68062, +68062, +68068, +68068, +68080, +68091, +68091, +68127, +68151, +68151, +68172, +68172, +68172, +68172, +68179, +68189, +68204, +68224, +68233, +68251, +68251, +68258, +68258, +68258, +68270, +68270, +68270, +68307, +68307, +68326, +68326, +68366, +68366, +68366, +68385, +68385, +68385, +68391, +68391, +68391, +68420, +68427, +68427, +68427, +68427, +68437, +68437, +68437, +68437, 68445, -68454, -68454, -68461, -68461, -68482, -68482, -68482, -68512, -68553, -68563, -68563, -68563, -68563, +68445, +68462, +68462, +68462, +68475, +68475, +68475, +68488, +68497, +68504, +68504, +68527, +68550, 68563, 68563, -68583, -68583, -68618, -68627, -68627, -68645, -68645, -68645, -68660, -68666, -68676, -68676, -68697, -68697, -68697, -68702, -68715, -68752, -68767, -68787, -68787, -68808, -68808, -68808, -68827, -68857, -68857, -68871, -68895, -68895, -68910, -68924, -68955, -68968, -68989, +68582, +68582, +68582, +68582, +68622, +68622, +68651, +68656, +68669, +68682, +68682, +68693, +68693, +68701, +68701, +68701, +68701, +68701, +68701, +68729, +68743, +68743, +68757, +68757, +68773, +68789, +68801, +68833, +68833, +68833, +68833, +68840, +68866, +68866, +68866, +68881, +68909, +68925, +68946, 68989, 68989, -69014, -69014, -69035, -69035, -69035, -69062, -69062, -69069, -69077, -69077, -69092, -69107, -69127, -69127, -69127, -69145, -69157, -69157, -69164, -69164, -69171, -69171, +69005, +69015, +69029, +69044, +69076, +69076, +69095, +69095, +69102, +69125, +69125, +69125, +69125, +69139, +69161, +69161, +69166, +69172, +69172, 69178, -69178, -69256, -69270, -69270, -69322, -69322, -69336, -69344, -69344, -69375, -69394, -69452, -69452, -69452, -69452, -69465, -69488, -69508, -69508, -69514, -69514, -69524, -69552, -69552, -69552, -69552, -69569, -69575, -69595, -69595, -69602, -69643, +69186, +69215, +69215, +69243, +69243, +69243, +69273, +69273, +69273, +69273, +69283, +69299, +69299, +69299, +69299, +69299, +69340, +69381, +69388, +69398, +69398, +69398, +69398, +69398, +69438, +69438, +69438, +69445, +69445, +69476, +69476, +69476, +69481, +69503, +69541, +69541, +69541, +69573, +69593, +69593, +69593, +69609, +69619, 69661, -69667, -69681, -69681, -69692, -69699, -69699, -69721, -69721, -69721, -69740, -69740, -69760, -69766, -69774, -69774, -69783, -69815, -69838, -69848, -69848, -69848, -69848, -69848, -69861, -69871, -69871, -69881, -69924, -69940, -69947, -69947, -69977, -69989, -69989, -70005, +69661, +69700, +69706, +69736, +69736, +69770, +69770, +69776, +69799, +69840, +69840, +69875, +69894, +69894, +69917, +69933, +69949, +69949, +69949, +69954, +69965, +69965, +69965, +69965, +69965, +69979, +69986, 70005, +70010, 70016, -70016, -70058, -70058, -70068, -70098, -70098, -70110, -70126, -70137, -70146, -70165, -70177, -70177, +70035, +70035, +70072, +70082, +70119, +70158, +70168, 70177, -70177, -70183, -70183, -70183, -70196, -70223, -70223, -70239, -70258, -70258, -70258, +70202, +70230, +70242, +70242, +70275, +70282, +70282, +70282, +70296, +70296, 70296, 70296, -70306, -70314, -70330, -70345, -70369, -70369, -70369, -70369, -70369, -70413, -70430, -70430, -70463, -70463, -70479, -70479, -70479, -70486, -70520, -70546, -70559, -70559, -70570, -70619, -70685, -70723, -70742, -70742, +70296, +70302, +70302, +70302, +70302, +70302, +70324, +70324, +70341, +70367, +70392, +70425, +70467, +70467, +70504, +70504, +70522, +70522, +70522, +70561, +70561, +70580, +70601, +70612, +70612, +70663, +70663, +70669, +70669, +70669, +70669, +70698, +70698, +70722, +70734, +70750, 70756, -70784, -70784, -70784, -70791, +70794, +70794, 70809, -70816, -70823, -70830, -70837, -70837, -70856, -70863, +70819, +70819, +70819, +70853, 70870, -70877, -70877, -70877, -70884, -70903, -70915, -70925, -70925, -70925, -70954, -70968, -70975, -70975, -70975, -70982, -70989, -71010, -71027, -71036, -71036, -71065, -71065, -71079, -71104, -71111, -71119, -71162, +70906, +70917, +70922, +70935, +70950, +70977, +70990, +71014, +71024, +71041, +71076, +71076, +71090, +71090, +71100, +71125, +71125, +71131, +71131, +71137, +71157, +71169, +71181, 71181, 71181, -71196, -71238, -71269, -71276, -71281, -71281, -71298, -71311, -71311, -71352, -71352, -71359, -71359, +71193, +71201, +71210, +71216, +71243, +71253, +71253, +71290, +71306, 71372, -71395, -71395, -71395, -71404, +71391, +71391, +71405, +71423, +71423, 71428, 71428, -71428, -71449, -71449, -71471, -71478, -71478, -71478, -71478, -71487, -71487, -71494, -71494, -71525, -71532, -71532, -71544, -71544, -71544, -71567, -71584, -71584, -71591, -71591, -71618, -71631, -71638, -71648, -71648, -71655, -71677, -71684, -71699, -71706, -71706, -71713, -71713, -71740, -71763, -71768, -71784, -71812, -71830, -71864, -71882, -71882, -71882, -71910, -71928, -71939, -71977, -71984, -71984, -71999, -71999, -71999, -72023, -72023, -72023, -72037, -72037, -72037, -72081, -72112, -72158, -72177, -72229, -72229, -72253, -72263, -72263, -72278, -72283, -72283, -72283, -72283, -72294, +71443, +71460, +71460, +71460, +71460, +71460, +71460, +71460, +71460, +71460, +71460, +71511, +71511, +71521, +71535, +71543, +71548, +71548, +71553, +71553, +71573, +71573, +71596, +71625, +71625, +71625, +71639, +71667, +71674, +71674, +71698, +71705, +71705, +71705, +71725, +71732, +71750, +71773, +71773, +71773, +71780, +71787, +71805, +71805, +71805, +71835, +71869, +71880, +71885, +71892, +71914, +71921, +71950, +71976, +71993, +71993, +72005, +72012, +72019, +72026, +72062, +72093, +72100, +72125, +72146, +72146, +72146, +72195, +72233, +72270, 72294, -72315, -72330, -72350, -72350, -72375, -72388, -72388, -72388, -72408, -72434, -72462, -72482, -72524, -72530, -72530, -72585, -72600, -72636, -72672, -72679, +72307, +72317, +72345, +72377, +72384, +72413, +72426, +72426, +72449, +72449, +72463, +72463, +72479, +72479, +72486, +72505, +72511, +72531, +72538, +72558, +72565, +72565, +72565, +72591, +72598, +72608, +72640, +72658, 72686, -72717, -72749, -72749, -72749, -72749, -72756, -72762, -72798, -72824, -72843, -72867, -72867, -72885, -72897, +72700, +72736, +72743, +72743, +72743, +72743, +72771, +72803, +72819, +72832, +72832, +72857, +72864, +72874, 72897, -72903, -72916, -72938, -72983, -72983, -73006, -73020, -73036, -73065, -73084, -73103, -73110, -73110, +72910, +72918, +72918, +72941, +72964, +72964, +72976, +72976, +72990, +73023, +73023, +73030, +73038, +73044, +73070, +73079, +73079, +73086, +73093, +73120, +73139, +73146, 73146, 73153, -73153, -73160, -73160, -73177, -73184, -73191, -73205, -73248, -73290, -73304, -73355, -73355, -73355, +73164, +73213, +73262, +73277, +73277, +73292, +73325, +73325, 73355, 73361, -73361, -73367, -73367, -73374, 73390, -73408, -73408, -73420, -73431, -73438, -73448, -73448, -73455, -73455, -73482, -73482, -73493, -73516, -73554, -73591, -73600, -73600, -73607, -73632, -73646, -73674, -73680, -73690, -73697, -73704, -73727, -73744, -73761, -73767, -73774, -73801, -73819, -73826, -73826, -73826, +73390, +73407, +73414, +73414, +73421, +73440, +73479, +73487, +73502, +73511, +73527, +73549, +73556, +73576, +73576, +73576, +73586, +73595, +73595, +73602, +73602, +73621, +73663, +73670, +73684, +73691, +73724, +73743, +73771, +73783, +73783, +73783, +73783, +73800, +73800, +73805, +73811, +73828, +73828, 73833, -73840, -73859, -73888, -73912, -73919, -73930, -73937, +73853, +73870, +73875, +73875, +73894, +73935, 73959, -73959, -73966, -73990, +73979, 74000, 74000, -74012, -74019, -74045, -74045, -74070, -74077, -74077, -74094, -74119, -74139, -74153, -74169, -74176, -74229, -74263, -74277, -74314, -74314, -74344, -74358, -74365, -74411, -74441, -74455, -74461, -74475, -74489, -74489, -74489, -74489, -74503, -74524, -74543, -74550, -74568, -74580, -74596, -74610, +74006, +74013, +74013, +74013, +74042, +74055, +74062, +74069, +74069, +74069, +74069, +74076, +74082, +74107, +74114, +74121, +74141, +74146, +74166, +74166, +74184, +74205, +74219, +74259, +74259, +74259, +74288, +74329, +74329, +74336, +74336, +74376, +74383, +74383, +74383, +74390, +74410, +74417, +74417, +74424, +74431, +74453, +74467, +74481, +74514, +74537, +74552, +74552, +74552, +74561, +74561, +74571, +74571, +74571, +74578, +74597, +74597, 74621, -74628, -74657, -74684, +74641, +74641, +74648, +74685, 74709, 74709, -74716, -74744, -74744, -74783, -74845, -74850, -74887, -74904, -74904, -74918, +74724, +74758, +74758, +74772, +74782, +74805, +74811, +74841, +74899, +74912, +74925, 74933, -74961, -74961, -74995, -75002, +74940, +74959, +74975, +74982, +74989, 75002, -75023, -75023, -75030, -75072, -75079, -75079, -75110, -75117, -75138, -75170, -75179, -75193, -75213, -75220, -75227, -75238, -75246, -75253, -75278, -75285, -75292, -75292, -75311, -75311, -75341, -75358, -75358, -75392, -75421, -75438, -75450, -75456, -75474, -75480, -75501, -75514, -75521, -75521, -75546, -75574, -75600, -75623, -75623, -75642, -75655, -75662, -75694, -75701, -75724, -75724, -75740, -75769, -75801, -75808, -75826, -75826, -75841, -75865, -75879, -75879, -75879, -75910, -75919, -75938, -75945, -75952, -76008, -76018, -76057, -76064, -76071, -76078, -76078, -76100, -76100, -76100, +75036, +75036, +75076, +75083, +75119, +75133, +75155, +75169, +75174, +75195, +75195, +75224, +75224, +75224, +75239, +75269, +75284, +75284, +75312, +75329, +75383, +75383, +75404, +75451, +75451, +75473, +75473, +75482, +75488, +75488, +75488, +75517, +75527, +75534, +75534, +75558, +75581, +75604, +75644, +75666, +75666, +75673, +75706, +75706, +75725, +75757, +75764, +75764, +75783, +75807, +75827, +75866, +75899, +75906, +75913, +75913, +75943, +75955, +75967, +75995, +76031, +76072, +76072, +76079, +76095, +76112, +76112, +76119, +76126, +76126, 76133, -76177, -76177, -76187, -76222, -76222, -76222, -76246, -76286, -76309, -76318, -76346, -76346, -76346, -76354, -76371, -76371, -76412, -76421, -76436, -76446, -76453, -76475, -76506, -76513, -76520, -76543, -76570, -76577, +76144, +76144, +76166, +76186, +76186, +76203, +76203, +76234, +76234, +76249, +76263, +76305, +76316, +76325, +76343, +76361, +76368, +76368, +76368, +76434, +76466, +76473, +76481, +76481, +76499, +76536, +76536, +76536, +76536, +76567, +76567, +76567, +76574, +76574, +76582, +76582, +76582, +76582, +76593, +76608, +76608, +76608, +76608, 76615, -76615, -76639, -76672, -76706, -76713, -76720, -76736, -76736, -76736, -76768, -76775, -76788, -76805, -76827, -76843, -76850, -76857, -76880, -76895, -76902, -76929, -76969, -76976, -76982, -77036, -77043, -77043, -77050, -77050, -77057, -77071, -77087, -77100, +76632, +76661, +76668, +76694, +76701, +76701, +76701, +76718, +76738, +76772, +76780, +76780, +76780, +76780, +76794, +76808, +76808, +76808, +76825, +76841, +76867, +76885, +76912, +76912, +76912, +76939, +76939, +76957, +76957, +76973, +77001, +77015, +77015, +77027, +77027, +77060, +77070, +77070, +77093, +77104, 77114, -77128, -77142, -77159, -77192, -77206, -77213, -77226, -77226, -77292, -77292, -77310, -77310, -77326, -77346, -77375, -77402, -77402, -77425, -77456, -77467, -77467, -77474, -77484, -77484, -77491, -77505, -77505, -77520, -77520, -77541, -77555, -77569, -77576, -77576, -77589, -77603, +77129, +77129, +77129, +77136, +77136, +77136, +77184, +77199, +77221, +77229, +77236, +77236, +77249, +77276, +77309, +77332, +77362, +77362, +77388, +77398, +77404, +77404, +77450, +77460, +77487, +77487, +77504, +77519, +77539, +77549, +77549, +77556, +77556, +77572, +77572, +77580, 77610, -77649, -77681, -77681, -77688, -77724, -77751, -77758, -77792, -77792, -77792, -77798, -77813, -77820, -77853, -77860, -77860, -77897, -77945, -77954, -77954, -77980, -77993, -78011, -78011, -78011, -78027, -78054, -78085, -78085, -78105, -78112, -78119, -78152, -78173, -78188, -78188, -78195, -78223, -78242, -78249, -78300, -78300, -78332, -78339, -78339, -78354, -78354, -78394, -78394, -78418, -78425, -78448, -78455, -78489, -78507, -78532, +77631, +77631, +77631, +77631, +77650, +77659, +77659, +77659, +77670, +77670, +77682, +77682, +77682, +77730, +77730, +77730, +77738, +77738, +77738, +77738, +77738, +77748, +77748, +77761, +77789, +77808, +77808, +77824, +77824, +77824, +77824, +77824, +77824, +77835, +77835, +77867, +77895, +77895, +77914, +77914, +77933, +77966, +78003, +78039, +78057, +78071, +78098, +78122, +78122, +78128, +78159, +78159, +78169, +78201, +78201, +78208, +78226, +78247, +78257, +78268, +78268, +78280, +78280, +78280, +78280, +78293, +78319, +78319, +78342, +78356, +78372, +78381, +78381, +78396, +78396, +78396, +78396, +78434, +78453, +78453, +78459, +78477, +78477, +78477, +78477, +78487, +78492, +78492, 78532, -78549, -78563, -78585, -78592, -78606, -78613, -78613, -78620, -78648, -78692, -78714, +78542, +78570, +78587, +78603, +78633, +78644, +78644, +78644, +78644, +78650, +78693, +78693, +78735, 78758, -78805, -78825, -78839, -78885, -78934, -78979, +78787, +78824, +78838, +78838, +78838, +78838, +78838, +78838, +78849, +78869, +78869, +78869, +78869, +78891, +78891, +78891, +78891, +78898, +78898, +78898, +78918, +78944, +78944, +78958, +78965, +78965, +78972, 78984, -79016, -79016, -79030, -79050, +78998, +78998, +78998, +79034, 79057, -79070, -79070, -79070, -79070, -79070, -79077, -79095, +79064, +79084, +79090, +79090, +79090, 79102, -79102, -79110, -79148, -79176, -79183, -79195, -79195, -79195, -79202, -79202, -79254, -79268, -79268, -79276, -79300, -79315, -79332, -79332, -79340, -79359, -79378, -79390, +79116, +79123, +79132, +79155, +79180, +79180, +79194, +79194, +79217, +79217, +79217, +79224, +79243, +79243, +79243, +79250, +79257, +79264, +79301, +79331, +79339, +79339, +79339, +79346, +79353, +79361, +79368, +79375, +79397, 79404, -79429, -79441, -79453, -79462, -79462, -79485, -79492, -79492, -79492, -79492, -79492, -79512, -79530, -79542, -79552, -79552, -79560, -79588, -79595, -79623, -79652, -79661, -79661, -79696, -79721, -79721, -79731, -79731, -79738, -79749, -79749, -79778, -79796, -79796, -79804, -79804, -79811, -79811, -79811, -79846, -79857, -79865, -79890, -79890, -79890, -79897, -79916, -79916, -79923, -79948, -79987, -79987, -79987, -79987, -80003, +79415, +79428, +79428, +79436, +79448, +79455, +79455, +79487, +79504, +79511, +79534, +79548, +79566, +79573, +79583, +79602, +79633, +79648, +79670, +79677, +79677, +79684, +79684, +79706, +79706, +79725, +79764, +79764, +79770, +79793, +79793, +79809, +79809, +79809, +79809, +79830, +79837, +79843, +79876, +79899, +79899, +79899, +79936, +79942, +79952, +79967, +79998, 80047, -80060, -80068, -80098, -80098, -80098, -80098, -80098, -80127, -80136, -80136, -80136, -80157, -80177, -80177, -80212, -80237, -80237, +80088, +80137, +80144, +80164, +80171, +80178, +80178, +80178, +80185, +80192, +80239, 80247, -80265, -80278, -80278, -80278, -80290, -80308, -80341, -80348, -80356, -80356, -80356, -80387, -80387, -80403, -80418, -80447, -80447, -80453, -80453, -80453, -80479, -80479, -80495, -80495, -80495, -80495, -80495, -80507, -80507, -80507, -80507, -80507, -80507, -80513, -80542, -80573, -80573, -80579, -80579, -80579, -80610, -80620, -80620, -80620, -80636, -80636, -80636, -80663, -80672, -80672, -80672, -80689, -80734, -80734, -80734, -80743, -80771, -80780, -80780, -80789, -80789, -80820, -80828, +80302, +80302, +80326, +80350, +80357, +80357, +80385, +80396, +80417, +80455, +80455, +80455, +80480, +80514, +80531, +80543, +80543, +80543, +80571, +80618, +80618, +80625, +80685, +80690, +80711, +80718, +80741, +80755, +80776, +80776, +80776, +80776, +80790, +80790, +80797, +80815, +80838, +80856, +80863, 80870, -80897, -80908, -80934, -80947, -80947, -80959, -80996, -81025, -81025, -81025, -81037, -81037, -81037, -81037, -81037, -81037, -81044, -81057, -81057, -81091, -81099, -81109, -81126, -81142, -81142, -81157, -81157, -81189, -81189, -81217, -81248, -81248, -81255, +80877, +80877, +80877, +80885, +80904, +80948, +80965, +80986, +81006, +81006, +81027, +81041, +81041, +81062, +81062, +81087, +81094, +81094, +81094, +81108, +81117, +81124, +81143, +81150, +81173, +81192, +81210, +81210, +81227, +81266, 81279, -81289, -81289, -81316, -81316, -81316, -81334, -81334, -81345, -81350, -81378, -81391, -81415, -81426, -81446, -81446, -81488, -81523, -81523, -81533, -81533, -81551, -81580, -81593, -81605, -81605, -81605, -81605, -81612, -81631, -81661, -81681, -81697, -81733, -81733, -81733, -81745, -81770, -81770, -81781, -81781, -81781, -81794, -81805, -81805, -81805, -81837, -81837, -81848, -81866, -81866, -81866, -81866, -81872, +81302, +81302, +81309, +81309, +81337, +81348, +81355, +81362, +81386, +81411, +81421, +81421, +81456, +81480, +81504, +81529, +81555, +81590, +81597, +81604, +81621, +81621, +81628, +81628, +81652, +81680, +81680, +81707, +81714, +81738, +81738, +81763, +81776, +81801, +81808, +81830, +81844, +81865, 81872, -81880, -81891, -81891, -81912, -81912, -81937, -81937, -81943, -81959, -81971, -82016, -82029, -82071, -82071, -82071, -82071, -82071, -82082, -82082, -82094, -82101, -82101, -82108, -82121, -82141, -82154, -82154, -82154, -82154, -82166, -82166, -82173, -82204, -82230, -82249, -82298, -82320, -82348, -82348, -82348, -82373, -82389, -82389, -82405, -82405, +81884, +81884, +81896, +81896, +81896, +81903, +81903, +81917, +81924, +81939, +81995, +82003, +82026, +82056, +82056, +82056, +82078, +82078, +82086, +82109, +82150, +82165, +82165, +82186, +82186, +82186, +82186, +82186, +82208, +82208, +82226, +82226, +82239, +82284, +82291, +82301, +82322, +82339, +82361, +82368, +82396, 82412, -82426, -82433, -82433, +82425, +82425, +82425, 82440, -82463, -82492, -82499, -82499, -82525, -82542, -82560, +82457, +82489, +82503, +82522, +82522, +82541, +82550, +82567, +82567, 82576, -82600, -82613, -82613, -82628, -82642, -82664, -82713, -82747, -82747, -82754, -82763, -82787, -82808, -82808, -82828, -82835, -82842, -82863, -82880, -82880, -82880, -82891, -82891, -82918, -82923, -82958, -82965, -82972, -82972, -82972, -82972, -82979, -82989, -83011, -83021, -83021, -83021, -83028, -83028, -83035, -83059, -83066, -83066, -83066, -83082, -83082, -83082, -83100, -83100, -83100, -83126, -83126, -83126, -83126, -83157, -83157, -83157, -83157, -83168, -83186, -83210, -83210, -83210, -83229, -83235, -83243, -83279, -83307, -83316, -83325, -83353, -83374, -83374, -83384, -83405, +82594, +82601, +82601, +82616, +82616, +82616, +82616, +82634, +82634, +82634, +82655, +82662, +82676, +82676, +82703, +82737, +82744, +82774, +82816, +82839, +82839, +82869, +82894, +82913, +82929, +82941, +82954, +82954, +82954, +82978, +82983, +82983, +83017, +83024, +83024, +83024, +83024, +83024, +83031, +83049, +83092, +83111, +83118, +83131, +83138, +83162, +83182, +83202, +83209, +83209, +83216, +83216, +83216, +83251, +83251, +83251, +83251, +83258, +83272, +83314, +83314, +83314, +83354, +83366, +83366, +83397, +83412, +83419, 83419, -83425, -83455, -83471, -83483, -83490, -83510, -83515, -83515, -83549, -83555, -83555, -83595, -83595, -83595, -83595, -83602, -83668, -83696, -83696, -83696, -83696, -83696, -83702, -83718, -83734, -83734, -83771, -83810, -83818, -83836, -83836, -83836, -83867, -83867, -83874, -83874, -83900, -83923, -83923, -83958, -83982, -84022, -84029, -84044, -84044, -84051, -84051, -84067, -84084, -84134, -84149, -84192, -84198, -84205, -84211, -84241, -84259, -84270, -84288, -84310, -84339, -84346, -84353, -84400, -84400, -84400, -84400, -84421, -84428, -84444, -84487, -84507, -84539, -84575, -84575, -84587, -84587, -84602, -84614, -84621, -84628, -84642, -84653, -84653, -84663, -84690, -84699, -84706, -84731, -84738, -84767, +83434, +83440, +83464, +83464, +83497, +83497, +83497, +83524, +83542, +83556, +83611, +83611, +83611, +83611, +83616, +83616, +83667, +83675, +83681, +83704, +83730, +83730, +83749, +83767, +83784, +83789, +83823, +83823, +83858, +83872, +83872, +83877, +83893, +83893, +83912, +83912, +83934, +83934, +83941, +83957, +83957, +83968, +83984, +83990, +84001, +84016, +84023, +84048, +84073, +84073, +84098, +84140, +84140, +84140, +84160, +84203, +84233, +84233, +84245, +84268, +84304, +84304, +84304, +84309, +84315, +84340, +84376, +84388, +84437, +84455, +84462, +84482, +84502, +84516, +84516, +84516, +84532, +84542, +84542, +84542, +84588, +84588, +84608, +84635, +84635, +84635, +84649, +84681, +84698, +84735, +84756, +84774, +84774, 84774, -84781, -84799, -84816, -84823, -84836, -84843, -84850, -84872, +84774, +84797, +84797, +84815, +84832, +84832, +84832, +84842, +84842, +84869, +84869, +84869, 84879, -84886, -84886, -84886, -84893, -84900, -84921, -84946, -84953, -84967, -84974, -84981, -84988, -85004, -85004, -85004, -85022, -85050, -85050, -85050, -85057, -85071, -85071, -85115, -85135, -85135, -85154, -85174, -85190, -85217, -85243, -85250, -85250, -85276, -85284, -85295, -85313, -85313, -85330, -85330, -85330, -85330, -85337, -85344, -85354, -85374, -85381, -85393, -85400, -85414, -85429, -85452, -85459, -85496, -85520, -85520, -85534, -85534, -85540, -85547, -85547, -85547, -85594, +84899, +84906, +84906, +84906, +84920, +84925, +84950, +84965, +84982, +84982, +84994, +84999, +85011, +85041, +85041, +85062, +85062, +85062, +85062, +85086, +85096, +85096, +85121, +85121, +85140, +85140, +85178, +85178, +85196, +85215, +85235, +85235, +85235, +85257, +85257, +85257, +85266, +85279, +85293, +85293, +85293, +85299, +85325, +85325, +85331, +85358, +85358, +85358, +85366, +85379, +85391, +85419, +85419, +85436, +85442, +85465, +85471, +85495, +85495, +85495, +85505, +85505, +85517, +85517, +85517, +85517, +85561, +85577, +85577, 85594, -85611, -85611, -85633, -85679, -85716, -85732, -85732, -85767, -85782, -85791, -85804, -85818, -85828, -85828, -85828, -85855, -85855, -85855, -85878, -85902, -85909, -85923, -85930, -85973, -85996, -86028, +85599, +85599, +85621, +85635, +85651, +85681, +85689, +85689, +85689, +85689, +85708, +85708, +85718, +85718, +85733, +85733, +85733, +85754, +85774, +85789, +85789, +85811, +85811, +85821, +85821, +85821, +85861, +85882, +85882, +85920, +85920, +85935, +85942, +85962, +85970, +85970, +85994, +85994, +86024, +86035, 86070, -86117, -86117, -86137, -86144, -86144, -86152, -86159, -86181, -86195, -86195, -86202, -86220, -86239, -86239, -86239, -86246, +86098, +86103, +86113, +86134, +86165, +86176, +86176, +86176, +86176, +86176, +86176, +86176, +86189, +86189, +86189, +86189, +86189, +86207, +86217, +86228, +86248, 86265, -86272, -86272, -86296, -86303, -86317, -86340, -86340, -86356, -86368, -86386, -86419, -86419, -86448, -86475, -86482, -86482, -86497, -86520, -86520, -86520, -86530, -86530, -86544, -86576, -86576, -86583, -86583, -86637, -86651, -86668, -86668, -86668, -86679, -86679, -86679, -86701, -86735, -86772, -86772, -86779, -86779, -86798, -86841, -86848, -86848, -86848, -86882, -86903, -86903, -86912, -86924, -86924, -86924, -86950, -86957, -86973, -86982, -86989, -86989, -87009, -87036, -87036, -87036, -87045, -87058, -87094, -87094, -87094, -87120, -87120, -87168, -87174, -87174, -87195, -87211, -87239, -87239, -87239, -87239, -87282, -87282, -87307, -87307, -87307, -87307, -87312, -87338, -87345, -87354, -87382, -87390, -87422, -87440, -87447, -87457, -87472, -87472, -87489, -87489, -87512, -87556, -87556, -87575, -87599, -87599, -87610, -87610, -87610, -87631, -87668, -87680, -87680, -87680, -87693, -87719, -87736, -87787, -87818, -87825, -87831, -87831, -87831, -87831, +86290, +86329, +86329, +86329, +86329, +86329, +86329, +86346, +86346, +86346, +86346, +86375, +86375, +86394, +86394, +86394, +86402, +86418, +86444, +86455, +86455, +86499, +86499, +86518, +86518, +86539, +86554, +86554, +86554, +86581, +86581, +86581, +86591, +86611, +86611, +86650, +86650, +86650, +86693, +86693, +86693, +86716, +86732, +86752, +86752, +86767, +86767, +86767, +86777, +86794, +86794, +86803, +86803, +86803, +86803, +86822, +86827, +86827, +86861, +86880, +86880, +86908, +86908, +86908, +86936, +86936, +86936, +86936, +86945, +86945, +86967, +86990, +87003, +87015, +87029, +87061, +87080, +87080, +87098, +87129, +87129, +87129, +87173, +87184, +87209, +87209, +87262, +87279, +87331, +87331, +87331, +87362, +87378, +87387, +87387, +87398, +87398, +87405, +87405, +87425, +87425, +87425, +87425, +87425, +87449, +87449, +87454, +87516, +87567, +87577, +87577, +87577, +87595, +87616, +87652, +87657, +87657, +87657, +87666, +87676, +87732, +87748, +87748, +87772, +87772, +87793, +87793, +87793, +87793, +87806, +87806, +87812, +87836, +87836, 87843, -87880, -87892, -87909, -87909, -87909, -87929, -87951, -87951, -87973, -87973, -87997, -88019, -88031, -88031, -88040, -88040, -88060, -88067, -88074, -88081, -88111, -88137, -88144, -88144, -88156, -88163, -88163, -88192, -88192, -88192, -88192, -88192, -88192, -88192, -88192, -88211, -88218, -88218, -88245, -88245, -88271, -88286, -88293, -88306, -88336, -88336, -88336, -88336, -88348, -88370, -88370, -88370, -88394, -88394, +87843, +87843, +87843, +87859, +87859, +87902, +87918, +87918, +87928, +87941, +87975, +87975, +88007, +88007, +88050, +88065, +88108, +88128, +88141, +88146, +88167, +88174, +88181, +88197, +88219, +88219, +88244, +88244, +88262, +88278, +88278, +88285, +88304, +88325, +88325, +88338, +88338, +88349, +88365, +88365, +88365, +88365, +88371, 88394, -88409, -88409, -88434, -88448, -88462, -88484, -88512, -88525, -88551, -88584, -88592, -88599, -88611, -88667, -88667, -88684, -88696, -88696, -88728, -88728, -88728, -88744, -88744, -88771, -88792, -88814, -88814, -88814, -88832, -88832, -88832, -88842, -88849, -88849, -88854, +88414, +88414, +88414, +88423, +88452, +88464, +88485, +88505, +88552, +88552, +88552, +88552, +88563, +88563, +88578, +88585, +88585, +88604, +88629, +88629, +88635, +88646, +88676, +88689, +88706, +88706, +88706, +88733, +88740, +88754, +88774, +88791, +88835, +88851, +88851, +88851, +88861, 88868, -88876, -88916, -88916, -88941, -88941, -88976, -88976, -88985, -88993, -89008, +88893, +88905, +88924, +88930, +88930, +88937, +88953, +88966, +88987, 89008, -89008, -89027, -89027, -89027, -89040, -89064, -89064, -89064, -89064, -89105, -89113, -89120, -89142, -89142, -89142, -89150, -89197, +89028, +89050, +89069, +89069, +89069, +89069, +89096, +89107, +89114, +89114, +89114, +89139, +89163, +89178, +89191, +89191, 89197, -89197, -89204, -89210, -89210, -89230, -89248, -89275, -89303, -89303, -89310, -89310, -89321, -89321, -89339, -89374, -89374, -89374, -89391, -89417, -89442, -89442, -89451, -89461, -89461, -89461, -89471, -89471, -89525, -89525, -89541, -89541, -89561, -89592, -89602, -89614, -89636, -89636, -89650, -89684, -89684, -89707, -89733, -89733, -89733, -89746, -89746, -89746, -89746, -89746, -89785, -89785, -89785, -89802, -89802, -89802, -89812, -89819, -89819, -89826, -89826, -89826, -89826, -89826, -89826, -89826, -89844, -89851, +89217, +89217, +89239, +89249, +89249, +89302, +89302, +89312, +89328, +89328, +89328, +89328, +89328, +89328, +89344, +89344, +89344, +89344, +89351, +89351, +89361, +89377, +89377, +89377, +89377, +89384, +89403, +89403, +89409, +89433, +89433, +89440, +89466, +89478, +89518, +89565, +89565, +89581, +89581, +89593, +89598, +89631, +89646, +89646, +89646, +89646, +89669, +89669, +89694, +89694, +89718, +89743, +89743, +89774, +89774, +89811, +89831, +89855, +89855, +89855, 89866, -89876, -89917, -89929, -89948, -89973, -89987, -90013, -90013, -90020, -90020, -90051, -90060, -90070, -90070, -90077, -90088, -90096, -90096, -90096, -90096, -90116, -90142, -90156, -90168, -90175, -90186, -90192, -90212, -90238, -90265, -90277, -90301, -90301, -90301, -90306, -90306, -90384, -90384, -90398, -90418, -90438, -90467, -90474, -90486, -90504, -90513, -90513, -90513, -90529, -90538, +89879, +89886, +89893, +89893, +89902, +89902, +89912, +89928, +89928, +89938, +89966, +89966, +89966, +89966, +89966, +89988, +90001, +90001, +90001, +90019, +90036, +90036, +90036, +90067, +90067, +90104, +90122, +90136, +90177, +90199, +90206, +90206, +90216, +90240, +90240, +90271, +90300, +90322, +90322, +90346, +90346, +90380, +90391, +90403, +90412, +90424, +90424, +90424, +90446, +90446, +90446, +90458, +90458, +90458, +90490, +90490, +90546, 90546, -90557, +90554, +90564, +90564, 90564, -90585, 90592, -90604, -90622, -90627, -90642, -90642, -90652, -90659, -90659, -90666, -90666, -90666, -90686, -90706, -90743, -90743, -90750, -90750, -90750, -90770, -90786, -90830, -90849, -90856, -90856, -90856, -90881, -90896, -90910, -90956, -90969, -90991, -90999, -91007, -91021, -91036, -91036, -91054, +90592, +90592, +90592, +90592, +90600, +90616, +90626, +90650, +90658, +90668, +90692, +90701, +90701, +90701, +90701, +90718, +90725, +90725, +90749, +90749, +90767, +90779, +90779, +90779, +90779, +90797, +90797, +90828, +90869, +90880, +90880, +90909, +90916, +90916, +90928, +90928, +90928, +90928, +90928, +90928, +90928, +90928, +90928, +90937, +90937, +90937, +90946, +90946, +90960, +91009, +91009, +91017, 91059, -91101, -91120, -91159, -91177, +91078, +91078, +91086, +91127, +91145, +91145, +91145, +91155, +91168, +91178, +91185, +91185, +91205, +91205, +91205, 91217, -91236, +91225, +91246, +91268, 91268, -91285, -91293, -91300, -91300, -91300, -91300, -91310, -91348, +91281, +91291, +91291, +91305, +91320, +91333, +91333, +91333, +91345, +91345, +91345, +91345, 91379, -91386, -91386, -91408, -91415, -91438, -91455, -91455, -91474, -91474, -91485, -91485, -91492, -91513, -91546, -91546, -91553, -91553, -91553, -91566, -91566, -91566, -91581, -91596, -91596, -91615, -91615, -91629, -91629, +91399, +91411, +91411, +91442, +91442, +91467, +91482, +91501, +91543, +91543, +91561, +91573, +91598, +91610, 91637, -91637, -91644, -91658, -91673, -91688, -91705, -91705, -91723, -91741, -91759, -91759, -91759, -91759, -91771, -91825, -91825, -91842, +91680, +91680, +91680, +91680, +91711, +91711, +91711, +91730, +91744, +91744, +91762, +91762, +91839, +91847, +91847, 91860, -91870, -91870, -91870, -91888, -91888, -91914, -91940, -91955, -91962, -91962, -91994, -92009, -92036, -92036, -92043, -92054, -92054, -92086, -92086, -92086, -92095, -92125, -92125, -92138, -92138, -92147, -92173, -92234, -92249, -92256, -92277, -92293, -92322, -92322, -92322, -92322, -92322, -92322, -92328, -92339, -92348, -92348, -92348, +91894, +91912, +91928, +91937, +91954, +91966, +91978, +91990, +92021, +92021, +92021, +92039, +92072, +92105, +92105, +92105, +92126, +92133, +92165, +92202, +92244, +92250, +92250, +92261, +92261, +92304, +92315, +92315, +92315, +92341, +92341, 92357, -92400, -92400, -92400, -92415, -92425, -92432, -92432, -92432, -92432, -92438, -92462, -92492, -92499, -92499, -92499, -92499, -92520, -92534, -92560, -92560, -92587, -92587, -92596, -92613, -92642, -92676, -92699, -92699, -92699, -92712, -92712, -92712, -92732, +92373, +92396, +92405, +92405, +92405, +92411, +92411, +92430, +92441, +92441, +92441, +92451, +92451, +92451, +92470, +92497, +92526, +92526, +92526, +92526, +92558, +92576, +92576, +92576, +92576, +92588, +92595, +92595, +92622, +92633, +92650, +92650, +92662, +92679, +92708, +92708, +92716, +92716, +92716, 92732, -92754, -92769, -92795, -92845, -92857, -92857, -92879, -92879, -92879, -92898, -92931, -92943, -92952, -92952, -92952, -92961, -92961, -92969, -92969, -92969, -92969, -93001, -93001, -93001, -93001, -93017, -93017, -93033, -93054, -93054, -93061, -93061, -93061, -93070, -93070, -93070, -93099, -93099, -93112, -93112, -93121, -93153, -93153, -93153, +92759, +92771, +92771, +92790, +92790, +92837, +92891, +92908, +92920, +92920, +92950, +92984, +93000, +93000, +93011, +93011, +93035, +93047, +93077, +93077, +93089, +93089, +93089, +93101, +93101, +93101, +93114, +93148, +93148, +93169, 93187, -93208, -93214, -93220, -93231, -93231, -93231, -93231, -93231, -93256, -93256, -93256, -93262, -93262, -93270, -93270, -93270, -93270, -93270, -93277, -93326, -93344, -93362, -93362, -93362, -93362, -93376, -93408, -93408, -93415, -93415, -93415, -93427, -93427, -93427, -93433, -93445, -93464, -93503, -93513, -93525, -93525, -93547, -93564, -93595, -93595, -93623, -93653, -93662, -93662, -93678, -93678, -93678, -93742, -93763, -93770, -93777, -93790, -93796, -93814, -93823, -93830, -93843, +93207, +93219, +93233, +93233, +93240, +93249, +93249, +93274, +93296, +93333, +93356, +93356, +93356, +93368, +93437, +93465, +93491, +93501, +93519, +93560, +93560, +93560, +93574, +93587, +93619, +93648, +93688, +93700, +93712, +93739, +93739, +93779, +93779, +93797, +93826, 93856, -93864, -93908, -93935, -93935, -93935, -93944, -93952, -93952, +93895, +93911, +93911, +93943, +93943, +93968, +93968, +93968, +93968, +93968, +93977, +93977, +93977, +93986, 93997, -94035, -94054, -94054, -94065, -94065, -94079, -94125, -94138, -94155, -94170, -94182, -94208, -94243, -94253, -94271, -94283, -94295, -94312, -94326, -94326, -94364, -94382, -94382, +94008, +94008, +94031, +94049, +94064, +94064, +94074, +94082, +94099, +94099, +94109, +94128, +94145, +94163, +94169, +94169, +94181, +94181, +94181, +94181, +94181, +94181, +94181, +94203, +94203, +94203, +94203, +94221, +94221, +94221, +94221, +94221, +94241, +94241, +94241, +94241, +94241, +94257, +94270, +94270, +94289, +94289, +94311, +94311, +94311, +94338, +94352, +94352, +94352, +94366, +94366, +94388, +94388, +94388, +94398, +94398, +94398, 94410, -94432, -94432, -94453, -94453, -94479, -94487, -94514, -94529, -94529, -94540, -94540, -94547, -94601, -94601, -94631, -94669, -94669, -94680, -94680, -94706, -94742, -94782, -94782, -94792, -94802, -94824, -94824, -94834, -94834, -94851, -94871, -94878, -94878, -94906, -94906, -94913, -94957, -94980, -94989, -94995, -95008, -95024, -95068, -95089, -95089, -95099, -95099, -95140, -95146, -95146, -95146, -95173, -95185, -95185, -95185, -95185, -95185, -95208, -95208, -95208, +94410, +94436, +94436, +94452, +94483, +94489, +94501, +94528, +94548, +94571, +94571, +94584, +94604, +94604, +94604, +94604, +94614, +94614, +94614, +94626, +94655, +94670, +94691, +94697, +94712, +94712, +94736, +94743, +94767, +94803, +94862, +94907, +94907, +94907, +94907, +94907, +94914, +94924, +94951, +94951, +94951, +94951, +94962, +94962, +94969, +94969, +94988, +94988, +94988, +95002, +95021, +95021, +95058, +95058, +95058, +95085, +95085, +95096, +95112, +95112, +95112, +95125, +95125, +95152, +95152, +95183, +95183, 95208, -95214, -95214, -95214, -95248, -95254, -95261, -95288, -95288, -95300, -95326, -95326, -95344, -95360, -95360, -95360, -95360, -95360, -95360, -95369, -95369, -95381, -95393, -95414, -95414, -95414, -95414, -95420, -95427, -95474, -95474, -95474, -95516, -95516, -95516, -95562, -95569, -95611, -95611, -95611, -95652, -95664, -95664, -95671, -95671, -95716, -95716, -95741, -95741, +95213, +95213, +95253, +95271, +95291, +95332, +95332, +95332, +95332, +95357, +95373, +95383, +95383, +95397, +95407, +95407, +95407, +95407, +95407, +95428, +95435, +95435, +95442, +95442, +95450, +95478, +95492, +95492, +95492, +95492, +95492, +95492, +95521, +95521, +95521, +95589, +95589, +95599, +95623, +95623, +95637, +95651, +95662, +95702, +95702, +95702, +95711, +95718, +95718, +95734, 95741, -95757, -95781, -95781, -95781, -95781, -95792, -95810, -95836, -95836, -95836, -95841, -95860, -95860, -95871, -95871, -95871, -95923, -95923, -95938, +95751, +95751, +95764, +95771, +95771, +95788, +95800, +95804, +95804, +95809, +95826, +95826, +95859, +95859, +95859, +95875, +95875, +95919, +95919, +95919, +95929, +95929, 95956, -95968, -95990, -96000, -96007, -96017, -96017, -96017, -96029, -96047, -96064, -96064, -96078, -96078, -96078, -96085, -96085, -96097, -96097, -96106, -96106, -96128, -96152, -96152, -96152, -96152, -96201, -96217, -96237, -96237, -96237, +95964, +95978, +95992, +96019, +96019, +96019, +96056, +96056, +96056, +96056, +96075, +96075, +96100, +96100, +96158, +96176, 96247, -96255, -96287, -96293, -96301, -96325, -96331, -96331, -96349, -96359, -96375, -96406, -96406, -96412, -96440, -96451, -96451, -96463, -96463, -96488, -96507, -96519, -96519, -96531, -96537, -96558, -96570, -96585, -96604, -96622, -96638, -96638, -96638, -96668, -96668, -96668, -96668, -96668, -96702, -96702, -96725, -96735, -96735, -96735, -96747, -96758, -96777, -96777, -96777, -96777, -96795, -96795, -96804, -96816, -96844, -96844, -96844, -96892, -96904, -96916, -96916, -96935, -96935, -96972, -96972, -96972, -96972, -96989, -97005, -97013, -97013, -97013, -97013, -97013, -97043, -97061, -97061, -97071, -97108, -97124, -97124, -97178, -97178, -97178, -97178, +96247, +96275, +96317, +96317, +96317, +96337, +96337, +96337, +96348, +96348, +96348, +96383, +96383, +96403, +96449, +96449, +96458, +96470, +96481, +96481, +96525, +96536, +96543, +96543, +96564, +96564, +96572, +96605, +96643, +96643, +96653, +96659, +96673, +96677, +96685, +96685, +96697, +96706, +96706, +96706, +96740, +96756, +96766, +96782, +96782, +96792, +96839, +96849, +96866, +96866, +96902, +96945, +96945, +96953, +96953, +97000, +97015, +97034, +97038, +97046, +97056, +97104, +97117, +97155, +97155, +97155, 97178, -97183, -97215, -97235, -97242, -97242, -97273, -97273, -97325, -97325, -97325, -97325, -97366, -97366, -97366, -97377, -97377, -97383, -97390, -97422, -97422, -97434, -97459, -97490, -97490, -97530, +97199, +97199, +97217, +97247, +97262, +97269, +97269, +97269, +97269, +97277, +97289, +97322, +97339, +97389, +97409, +97409, +97409, +97432, +97448, +97448, +97448, +97448, +97456, +97510, 97530, 97530, -97530, -97530, -97541, -97541, -97541, -97541, -97541, -97558, -97571, -97571, -97597, -97608, -97622, -97639, -97639, -97639, -97646, -97646, -97646, -97646, -97668, -97668, -97685, -97711, -97744, -97764, -97764, -97776, -97788, -97817, -97817, -97817, -97817, -97833, -97846, -97846, -97866, -97866, -97866, -97878, -97878, -97878, -97901, -97925, -97931, -97949, -97949, -97957, -97965, -97965, -97965, -97965, -97965, -97980, -97991, -98004, -98023, -98034, -98034, -98045, -98045, -98045, -98056, -98085, -98085, -98085, -98106, -98132, -98141, -98141, -98166, -98183, -98183, -98189, -98189, -98195, -98252, -98252, -98252, -98274, -98278, -98288, -98288, -98309, -98330, -98330, -98336, -98356, -98356, -98411, -98427, -98427, -98448, -98448, -98448, -98448, -98464, -98464, -98495, -98510, -98510, -98510, -98510, -98510, -98510, -98525, -98553, -98553, -98580, -98610, -98610, -98626, -98626, -98637, -98637, -98652, -98662, -98662, -98662, -98662, -98662, -98678, -98691, -98706, -98716, -98732, -98732, -98759, -98774, -98778, -98792, -98792, -98801, -98819, -98819, -98844, -98866, -98886, -98886, -98886, -98886, -98906, -98915, -98915, -98915, -98947, -98947, -98947, -98947, -98995, -99001, -99031, -99031, -99031, -99035, -99035, -99035, -99053, -99053, -99059, -99059, -99059, -99059, -99081, -99097, -99109, -99109, -99116, -99116, -99134, -99134, -99144, -99144, -99187, -99193, -99193, -99193, -99193, -99193, -99234, -99268, -99296, -99313, -99322, -99353, -99353, -99359, -99359, -99359, -99368, -99379, -99379, -99379, -99385, -99385, -99400, -99400, -99404, -99404, -99404, -99422, -99422, -99422, -99447, -99469, +97544, +97561, +97581, +97581, +97616, +97616, +97647, +97656, +97660, +97660, +97660, +97683, +97706, +97754, +97775, +97780, +97787, +97787, +97799, +97813, +97813, +97855, +97855, +97855, +97855, +97879, +97919, +97919, +97934, +97945, +97971, +97999, +98016, +98016, +98024, +98024, +98046, +98046, +98053, +98060, +98060, +98060, +98079, +98079, +98089, +98112, +98122, +98151, +98151, +98165, +98172, +98172, +98182, +98211, +98226, +98257, +98275, +98310, +98328, +98343, +98343, +98360, +98360, +98388, +98409, +98418, +98423, +98423, +98444, +98444, +98469, +98469, +98505, +98515, +98515, +98536, +98536, +98536, +98546, +98552, +98552, +98559, +98559, +98576, +98594, +98607, +98607, +98632, +98632, +98663, +98663, +98676, +98692, +98692, +98692, +98707, +98727, +98744, +98744, +98775, +98775, +98811, +98833, +98853, +98877, +98928, +98928, +98932, +98962, +98984, +98996, +98996, +99017, +99017, +99017, +99030, +99030, +99030, +99051, +99100, +99120, +99120, +99125, +99149, +99149, +99149, +99158, +99158, +99170, +99179, +99215, +99246, +99287, +99305, +99316, +99316, +99333, +99342, +99367, +99367, +99376, +99376, +99376, +99412, +99412, +99429, +99429, 99469, -99469, -99497, -99522, -99544, -99544, -99544, -99544, -99562, -99583, -99603, -99603, -99609, -99609, -99609, -99619, -99654, -99673, +99473, +99483, +99506, +99506, +99506, +99506, +99535, +99541, +99541, +99554, +99567, +99567, +99579, +99579, +99579, +99594, +99617, +99657, +99657, +99657, +99668, +99668, +99668, 99673, -99683, -99683, -99720, -99731, -99747, -99754, -99795, -99805, -99817, -99817, -99841, -99854, -99872, -99885, -99885, -99907, -99939, -99944, -99961, -99988, -100011, -100011, -100011, -100011, -100011, -100011, -100011, -100011, -100011, -100087, -100103, -100103, -100125, -100149, -100157, -100157, -100169, -100169, -100169, -100169, -100184, +99679, +99679, +99679, +99700, +99759, +99772, +99780, +99780, +99780, +99786, +99803, +99803, +99809, +99820, +99839, +99847, +99859, +99859, +99859, +99881, +99881, +99903, +99903, +99903, +99903, +99903, +99909, +99909, +99909, +99929, +99954, +99964, +99964, +99964, +99980, +99980, +99980, +100021, +100029, +100035, +100041, +100045, +100063, +100104, +100136, +100136, +100136, +100144, +100180, +100186, 100196, -100196, -100196, -100196, -100204, -100204, -100217, -100246, -100258, -100284, -100300, -100315, -100338, -100355, -100355, -100361, -100361, -100361, -100387, -100387, -100387, -100387, -100404, -100422, -100428, -100428, -100437, -100443, -100458, -100491, -100529, -100542, -100555, -100559, -100559, -100559, -100575, -100593, -100593, -100593, -100593, -100593, -100615, -100615, -100623, -100641, -100647, -100666, -100690, -100690, -100708, -100724, -100737, -100741, -100770, -100789, -100810, -100810, -100810, -100827, -100827, -100885, -100885, -100885, -100885, -100908, -100918, -100939, -100939, -100939, -100953, -100957, -100987, -101008, -101008, -101008, -101008, -101008, -101008, -101034, -101050, -101050, -101070, -101070, -101079, -101079, -101087, -101087, -101087, -101095, -101116, -101129, -101148, -101148, -101148, -101148, -101148, -101148, -101162, -101215, -101215, -101215, -101215, -101236, -101241, -101267, -101267, -101272, -101272, -101272, -101281, -101296, -101296, -101296, -101296, -101296, -101296, -101296, -101325, -101330, -101330, -101378, -101378, +100238, +100254, +100272, +100296, +100309, +100341, +100341, +100393, +100425, +100425, +100425, +100449, +100449, +100449, +100482, +100482, +100482, +100501, +100535, +100556, +100556, +100573, +100588, +100618, +100618, +100635, +100653, +100653, +100653, +100695, +100695, +100695, +100742, +100742, +100781, +100816, +100816, +100816, +100874, +100874, +100915, +100915, +100923, +100923, +100948, +100948, +100962, +100962, +100962, +100966, +100971, +100979, +100979, +100979, +100979, +100993, +101014, +101029, +101047, +101054, +101086, +101086, +101086, +101094, +101115, +101121, +101140, +101150, +101180, +101180, +101180, +101201, +101201, +101213, +101218, +101226, +101234, +101253, +101260, +101275, +101284, +101284, +101300, +101320, +101364, +101372, +101372, +101380, +101380, +101392, +101392, 101392, 101399, -101406, -101419, -101419, -101469, -101469, -101469, -101494, -101511, -101528, -101528, -101535, -101535, -101539, -101551, -101551, -101571, -101571, -101586, -101608, -101620, -101630, -101630, -101630, -101670, -101670, -101679, -101696, -101728, -101741, -101747, -101758, -101790, -101790, -101804, -101804, +101415, +101415, +101433, +101441, +101451, +101458, +101458, +101466, +101498, +101518, +101553, +101553, +101589, +101615, +101629, +101629, +101629, +101645, +101680, +101680, +101680, +101698, +101719, +101727, +101756, +101767, +101772, +101789, +101805, +101805, 101816, 101816, -101852, -101862, -101876, -101876, -101925, -101939, +101816, +101816, +101816, +101840, +101848, +101868, +101868, +101868, +101884, +101903, +101903, +101903, +101909, +101909, +101926, +101932, 101959, -101978, -101988, +101959, +101977, +101984, 101988, 101988, 101988, -102026, +102001, +102007, +102011, +102011, +102011, +102022, +102044, 102054, -102120, +102054, +102061, +102061, +102061, +102061, +102061, +102093, +102113, +102129, +102147, +102147, 102155, -102166, -102184, -102184, -102198, -102211, -102221, +102174, +102217, 102237, -102248, -102254, -102254, -102277, -102277, -102288, +102259, +102272, +102279, 102297, -102314, -102324, -102382, -102382, -102397, -102404, -102418, -102418, -102431, -102431, -102447, -102455, -102455, -102468, -102468, -102502, -102523, -102532, -102542, -102562, -102598, -102598, -102617, -102617, -102658, -102658, -102675, -102694, -102711, -102750, -102750, -102760, +102320, +102351, +102351, +102351, +102365, +102369, +102394, +102420, +102420, +102465, +102492, +102492, +102492, +102492, +102492, +102512, +102512, +102516, +102534, +102534, +102534, +102534, +102576, +102597, +102615, +102615, +102632, +102661, +102674, +102700, +102700, +102727, +102753, 102760, -102774, -102786, -102833, -102844, -102866, -102881, -102913, -102928, -102952, -102982, -103002, -103021, -103048, -103064, -103083, -103098, -103098, -103098, -103132, -103138, -103152, -103152, -103152, -103174, -103185, -103185, -103197, -103228, -103228, -103228, -103262, -103262, -103296, -103296, -103296, -103317, -103330, -103330, -103343, -103357, -103357, -103411, -103418, -103422, -103436, -103447, -103478, -103478, -103513, -103522, -103557, -103562, -103594, -103607, -103635, -103635, -103635, -103649, -103658, -103664, -103678, -103699, -103699, -103712, -103726, -103730, -103730, -103734, -103756, -103756, -103763, -103782, +102782, +102802, +102802, +102832, +102857, +102868, +102868, +102868, +102868, +102882, +102905, +102956, +102986, +102986, +102986, +102986, +102986, +102997, +102997, +102997, +103003, +103013, +103013, +103013, +103013, +103025, +103043, +103059, +103097, +103097, +103104, +103122, +103126, +103137, +103141, +103141, +103165, +103198, +103204, +103227, +103250, +103263, +103267, +103267, +103275, +103308, +103327, +103344, +103344, +103344, +103350, +103350, +103350, +103379, +103406, +103406, +103406, +103424, +103439, +103484, +103490, +103506, +103533, +103533, +103550, +103581, +103601, +103601, +103601, +103613, +103666, +103666, +103666, +103681, +103681, +103702, +103702, +103702, +103733, +103749, 103786, -103805, -103818, -103832, -103836, -103836, -103848, -103855, -103855, -103855, -103878, -103878, -103878, -103878, -103903, -103903, -103918, -103940, -103945, -103945, -103962, -103973, -103973, -103973, -103987, -104026, -104026, +103786, +103798, +103807, +103820, +103820, +103838, +103838, +103861, +103872, +103880, +103880, +103887, +103894, +103894, +103902, +103922, +103941, +103949, +103949, +103970, +103970, +103976, +103976, +103992, +104021, 104041, -104075, -104079, -104089, -104105, -104109, -104109, -104109, -104109, -104127, -104172, -104188, -104188, -104203, -104203, -104225, -104239, -104254, -104276, +104068, +104073, +104073, +104073, +104083, +104083, +104083, +104093, +104103, +104121, +104121, +104121, +104121, +104121, +104148, +104154, +104166, +104166, +104166, +104189, +104189, +104189, +104189, +104201, +104201, +104201, +104241, +104269, +104281, +104281, 104301, -104338, -104349, -104371, -104390, -104390, -104407, -104421, -104434, -104441, -104441, -104441, -104441, -104441, -104441, -104441, +104331, +104331, +104331, +104348, +104348, +104365, +104393, +104415, +104429, +104436, +104442, +104442, 104448, -104461, -104493, -104511, -104519, -104519, -104527, -104552, -104562, -104581, -104598, -104598, -104598, -104598, -104615, +104466, +104474, +104474, +104474, +104490, +104490, +104508, +104524, +104536, +104536, +104544, +104576, +104576, +104596, +104622, +104622, +104639, 104648, -104675, -104691, -104701, -104737, -104737, -104737, -104737, -104737, -104737, -104737, -104737, -104754, -104775, -104779, -104792, -104796, -104801, -104801, -104816, -104829, -104829, -104845, -104865, -104869, -104869, -104887, -104887, -104887, -104887, -104902, +104665, +104665, +104665, +104672, +104672, +104687, +104703, +104719, +104727, +104751, +104751, +104777, +104815, +104893, +104912, +104912, +104939, +104951, +104951, +104951, +104963, +104967, 104967, -104977, -104977, -104984, -104995, -105048, -105048, -105055, -105055, -105055, -105055, -105063, -105063, -105063, -105100, -105130, -105178, -105178, -105206, -105206, +104999, +105032, +105036, +105050, +105050, +105050, +105066, +105066, +105087, +105087, +105117, +105117, +105117, +105165, +105200, 105228, -105245, -105245, -105245, -105245, -105245, -105245, -105245, -105245, -105245, -105245, -105245, -105257, -105257, -105257, -105257, -105306, -105306, -105328, +105234, +105253, +105253, +105253, +105287, +105310, 105333, -105333, -105351, -105370, -105378, -105378, -105388, -105410, -105410, +105348, +105348, +105364, +105364, +105371, +105381, +105391, +105406, +105406, 105415, -105438, -105438, -105438, -105438, -105438, -105446, -105482, -105486, -105516, -105516, -105516, -105526, -105544, -105544, -105558, +105422, +105448, +105448, +105455, +105455, +105466, +105490, +105504, +105504, +105543, +105551, +105551, 105558, -105570, -105603, -105610, -105610, -105610, -105624, -105670, -105670, -105670, +105565, +105575, +105575, +105575, +105575, +105581, +105643, +105643, +105653, +105653, +105664, +105664, +105680, 105680, -105690, -105698, -105709, -105709, -105709, -105729, -105729, -105737, -105742, -105764, -105805, -105836, -105846, -105846, -105890, -105890, -105902, -105920, -105957, -105968, -105968, -105968, -105975, -105975, +105680, +105701, +105718, +105726, +105726, +105751, +105760, +105803, +105803, +105803, +105803, +105803, +105803, +105803, +105809, +105842, +105842, +105848, +105848, +105866, +105873, +105873, +105882, +105882, +105886, +105886, +105886, +105912, +105919, +105940, +105947, +105956, +105963, +105963, +105963, +105963, +105963, +105963, +105970, +105996, 105996, 105996, 105996, -106001, -106001, -106019, -106019, -106043, -106064, -106107, -106153, -106190, -106208, -106208, -106208, -106220, -106220, -106220, -106220, -106220, -106254, -106254, -106254, -106264, -106296, +106035, +106035, +106035, +106050, +106071, +106082, +106123, +106146, +106167, +106167, +106187, +106197, +106197, +106197, +106197, +106226, +106250, +106250, +106269, +106275, +106281, +106281, +106281, +106304, +106304, 106304, -106309, -106328, 106333, -106348, -106366, -106384, -106384, -106408, -106408, -106424, -106424, -106424, -106443, -106459, -106474, -106474, -106499, -106522, -106545, -106558, -106625, -106630, -106642, -106665, -106684, -106697, -106703, -106703, -106737, -106743, -106743, -106766, -106782, -106782, -106782, -106782, -106788, -106816, -106816, -106834, -106857, -106863, -106889, -106906, -106925, -106925, -106935, -106961, -106971, -106971, -107004, -107004, -107023, -107023, -107023, -107029, -107035, -107041, -107096, -107119, -107123, -107144, -107144, -107165, -107185, -107185, -107234, -107259, -107278, -107294, -107308, -107319, -107319, -107319, -107319, -107333, -107372, -107385, -107385, -107385, -107385, -107405, -107405, -107405, -107405, -107405, -107421, -107427, -107432, -107432, -107432, -107441, -107446, -107446, -107466, -107466, -107466, -107466, -107518, -107528, -107528, -107528, -107544, -107561, -107567, -107567, -107572, -107582, -107594, -107635, -107675, -107675, -107675, -107697, -107703, -107703, -107741, -107751, -107751, -107768, -107773, -107796, -107796, -107828, -107828, -107828, -107828, -107848, -107863, -107873, -107880, -107880, -107886, -107922, -107958, -107981, -107981, -107981 +106355, +106373, +106382, +106382, +106382, +106412, +106419, +106464, +106464, +106464, +106464, +106468, +106489, +106489, +106496, +106528, +106528, +106549, +106549, +106576, +106582, +106591, +106591, +106597, +106597, +106597, +106615, +106651, +106726, +106726, +106736, +106779, +106793, +106793, +106818, +106818, +106818, +106824, +106853, +106868, +106872, +106872, +106872, +106879, +106879, +106897, +106913, +106930, +106940, +106940, +106952, +106980, +106993, +107006, +107006, +107047, +107087, +107087, +107094, +107113, +107139, +107139, +107139, +107139, +107192, +107229, +107237, +107237, +107237, +107263, +107295, +107312, +107337, +107344, +107351, +107371, +107371, +107387, +107429, +107436, +107450, +107471, +107514, +107514, +107553, +107560, +107573, +107573, +107647, +107666, +107671, +107671, +107678, +107678, +107704, +107711, +107711, +107746, +107746, +107776, +107776, +107781, +107827, +107859, +107879, +107879, +107879, +107879, +107925, +107948, +107955, +107959, +108004, +108014, +108038, +108045, +108045, +108079, +108103, +108110, +108139, +108154, +108173, +108188, +108208, +108221, +108231, +108231, +108231, +108239, +108275, +108315, +108329, +108346, +108346, +108375, +108375, +108409, +108409, +108457, +108468, +108468, +108468, +108468, +108468, +108484, +108492, +108492, +108492, +108518, +108535, +108535, +108547, +108594, +108594, +108600, +108600, +108619, +108639, +108655, +108663, +108686, +108686, +108706, +108744, +108794, +108824, +108824, +108830, +108837 }; static const char *tldData[] = { -"misasa.tottori.jp\0is-into-cartoons.com\0" -"pistoia.it\0indian.museum\0" -"traeumtgerade.de\0" -"co.id\0" -"arq.br\0co.hu\0salem.museum\0" -"fukuchiyama.kyoto.jp\0" -"laz.it\0ts.it\0\xd0\xb1\xd0\xb3\0" -"tickets\0" -"pn.it\0gorlice.pl\0" -"co.il\0" -"co.im\0communications.museum\0de.com\0" -"magazine.aero\0co.in\0li.it\0" -"aibetsu.hokkaido.jp\0" -"lk3.ru\0" -"co.ir\0uwu.ai\0" -"trysil.no\0is-gone.com\0" -"co.it\0notteroy.no\0lviv.ua\0dhl\0" -"co.je\0endofinternet.net\0" -"dupont\0kerryproperties\0" -"unjarga.no\0" -"asia\0" -"co.jp\0vercel.dev\0" -"fuel.aero\0ibara.okayama.jp\0" +"frankfurt.museum\0" +"writesthisblog.com\0" +"mil.gh\0leadpages.co\0" +"co.bi\0" +"london\0" +"co.bn\0" +"jevnaker.no\0" +"kihoku.ehime.jp\0cc.ga.us\0lib.tx.us\0fi.cloudplatform.fi\0loginto.me\0" +"aisai.aichi.jp\0co.ca\0" +"mil.gt\0mn.us\0bplaced.de\0" +"co.bw\0wiw.gov.pl\0" +"co.ci\0avocat.fr\0attorney\0" +"eco\0goupile.fr\0" +"anani.br\0" +"co.cl\0sagae.yamagata.jp\0" +"co.cm\0*.sendai.jp\0college\0" +"mil.hn\0sec.ps\0" +"development.run\0" +"co.cr\0nakama.fukuoka.jp\0from-wi.com\0noticeable.news\0" +"mil.id\0kijo.miyazaki.jp\0" +"\xe0\xb8\xad\xe0\xb8\x87\xe0\xb8\x84\xe0\xb9\x8c\xe0\xb8\x81\xe0\xb8\xa3.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"name\0" +"press.ma\0" +"co.cz\0" +"co.dk\0" +"uruma.okinawa.jp\0za.bz\0" +"savannahga.museum\0" +"mil.in\0" +"edu\0termez.su\0vps-host.net\0" +"mil.iq\0dtv\0" +"s3-website.ap-south-1.amazonaws.com\0" +"deporte.bo\0" +"*.bzz.dapps.earth\0" +"allfinanz\0" "ciencia.bo\0" -"marche.it\0co.ke\0\xc3\xa5mot.no\0" -"shimodate.ibaraki.jp\0" -"jor.br\0" -"celtic.museum\0contractors\0mycd.eu\0" -"moscow\0" -"tosa.kochi.jp\0" -"aizumisato.fukushima.jp\0rocher\0" -"diy\0" -"takanezawa.tochigi.jp\0co.kr\0travel.tt\0" +"journalism.museum\0dnsup.net\0" +"minamata.kumamoto.jp\0is-a-socialist.com\0" +"mil.jo\0zapto.org\0" +"\xe3\x82\xb0\xe3\x83\xbc\xe3\x82\xb0\xe3\x83\xab\0" +"digital\0" +"vestv\xc3\xa5g\xc3\xb8y.no\0" +"association.museum\0" +"cloudns.pro\0" +"mil.kg\0" +"capital\0" +"aikawa.kanagawa.jp\0inf.ua\0" +"cc.nj.us\0" +"gloppen.no\0" +"\xe5\xb2\xa1\xe5\xb1\xb1.jp\0mil.km\0dvr\0" +"hanamigawa.chiba.jp\0from-pa.com\0" +"student.aero\0" +"o.bg\0mil.kr\0jeju.kr\0" +"co.gg\0" +"jx.cn\0\xe3\x82\xaf\xe3\x83\xa9\xe3\x82\xa6\xe3\x83\x89\0" +"mil.kz\0" +"humanities.museum\0" +"co.gl\0" +"kusatsu.gunma.jp\0" +"promo\0" +"bauern.museum\0chiropractic.museum\0" +"weibo\0is-a-caterer.com\0" +"kamoenai.hokkaido.jp\0mil.lv\0" +"mil.mg\0" +"co.gy\0" +"fundacio.museum\0" +"shibecha.hokkaido.jp\0" +"beardu.no\0" +"florist\0is-slick.com\0" +"missoula.museum\0" +"lib.nh.us\0" +"co.id\0tgory.pl\0" +"co.hu\0" +"mil.mv\0" +"uwajima.ehime.jp\0mil.ng\0narvik.no\0" +"tkmaxx\0sells-it.net\0" +"sa.au\0mil.my\0mil.ni\0" +"\xe9\x95\xb7\xe9\x87\x8e.jp\0mil.mz\0" +"co.il\0" +"co.im\0opole.pl\0" +"co.in\0" +"mil.no\0" +"of.london\0" +"co.ir\0oyodo.nara.jp\0" +"7.bg\0" +"co.it\0onrender.com\0" +"co.je\0" +"sumy.ua\0" +"boavista.br\0mil.nz\0" +"sera.hiroshima.jp\0" +"targi.pl\0download\0" +"fujiyoshida.yamanashi.jp\0vaapste.no\0" +"glug.org.uk\0" +"co.jp\0football\0" +"aju.br\0" +"co.ke\0mil.pe\0" +"sa.cr\0fineart.museum\0sel.no\0theworkpc.com\0" +"ise.mie.jp\0iheya.okinawa.jp\0snoasa.no\0" +"aomori.aomori.jp\0mil.ph\0\xd1\x80\xd1\x84\0" +"shimogo.fukushima.jp\0" +"shiso.hyogo.jp\0" +"inashiki.ibaraki.jp\0" +"baths.museum\0mil.pl\0" +"sasaguri.fukuoka.jp\0" +"scotland.museum\0" +"mil.qa\0" +"co.kr\0" "co.lc\0" -"gorizia.it\0" -"shima.mie.jp\0" -"village.museum\0" -"ujitawara.kyoto.jp\0" -"rj.gov.br\0" -"*.moonscale.io\0" -"reise\0" -"yamakita.kanagawa.jp\0co.ma\0oster\xc3\xb8y.no\0\xe8\xb0\xb7\xe6\xad\x8c\0" -"sampa.br\0" +"accident-investigation.aero\0nt.edu.au\0" +"tushu\0" +"public.museum\0mil.py\0boutir.com\0qc.com\0" +"ca-central-1.elasticbeanstalk.com\0" +"cechire.com\0" +"ama.aichi.jp\0" +"doshi.yamanashi.jp\0cipriani\0" +"co.ma\0" +"airbus\0mine.nu\0" "co.ls\0" -"express\0" "co.me\0" -"mamurogawa.yamagata.jp\0" "co.mg\0" -"engineer\0" -"algard.no\0" -"sasayama.hyogo.jp\0memset.net\0" -"pi.leg.br\0" -"meme\0" -"co.na\0" -"*.otap.co\0" -"fjaler.no\0\xd9\x83\xd9\x88\xd9\x85\0" -"co.mu\0" -"kids.museum\0" -"childrensgarden.museum\0co.mw\0" -"okawa.fukuoka.jp\0mishima.shizuoka.jp\0historisch.museum\0" -"df.gov.br\0co.ni\0" -"co.mz\0locker\0" -"co.nl\0" -"akashi.hyogo.jp\0sorreisa.no\0" -"kibichuo.okayama.jp\0co.no\0" -"lutsk.ua\0" -"toyota.aichi.jp\0" -"ulsan.kr\0uppo.gov.pl\0\xd0\xb5\xd1\x8e\0" -"co.nz\0" -"writesthisblog.com\0" -"co.om\0fastvps.site\0co.place\0" -"tr.eu.org\0" -"jewish.museum\0menu\0" -"music.museum\0freemyip.com\0" -"handson.museum\0degree\0" -"is-a-caterer.com\0" -"steiermark.museum\0valle.no\0" -"android\0" -"toscana.it\0nara.nara.jp\0for-some.biz\0" -"dnp\0" -"building.museum\0" -"paderborn.museum\0berg.no\0" -"fuchu.toyama.jp\0" -"co.pl\0" -"co.pn\0hepforge.org\0" -"dog\0" -"skierva.no\0" -"\xec\x82\xbc\xec\x84\xb1\0" -"shinto.gunma.jp\0" -"nakagawa.tokushima.jp\0co.pw\0" -"blogdns.com\0" -"dot\0" -"so.it\0cleaning\0" -"himi.toyama.jp\0gs.fm.no\0" -"monzaebrianza.it\0hobby-site.com\0" -"co.business\0" -"mydatto.net\0" -"platter-app.dev\0" -"lib.as.us\0earth\0" -"\xe6\x8b\x9b\xe8\x81\x98\0futurehosting.at\0" -"como.it\0walmart\0" -"nishio.aichi.jp\0" -"ueno.gunma.jp\0" -"no.com\0co.ro\0" -"kawara.fukuoka.jp\0arao.kumamoto.jp\0" -"nf.ca\0" -"co.rs\0" -"aya.miyazaki.jp\0" +"elverum.no\0" +"misato.akita.jp\0otoyo.kochi.jp\0corporation.museum\0historicalsociety.museum\0" +"emb.kw\0co.na\0s\xc3\xa1l\xc3\xa1t.no\0uk0.bigv.io\0" +"\xc3\xb8rland.no\0" +"f.se\0" +"co.mu\0mil.ru\0" +"vi.it\0co.mw\0mil.rw\0" +"mil.sh\0" +"co.ni\0exposed\0" +"co.mz\0" +"her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0navy\0" +"zj.cn\0ebino.miyazaki.jp\0co.nl\0" +"kolobrzeg.pl\0" +"izu.shizuoka.jp\0co.no\0" +"apple\0" +"kami.miyagi.jp\0" +"ooguy.com\0" +"mil.st\0" +"wang\0" +"!city.yokohama.jp\0" +"mil.sy\0" +"co.nz\0mil.tj\0" +"kaho.fukuoka.jp\0co.om\0mil.tm\0lib.ri.us\0panel.gg\0" +"mil.to\0" +"tiffany\0" +"sakai.osaka.jp\0" +"chosei.chiba.jp\0mil.tr\0" +"educational.museum\0" +"losangeles.museum\0" +"veg\xc3\xa5rshei.no\0h\xc3\xa4kkinen.fi\0" +"yamamoto.miyagi.jp\0" +"mil.tw\0" +"stjordalshalsen.no\0" +"iwakura.aichi.jp\0kusatsu.shiga.jp\0mil.tz\0" +"sp.leg.br\0co.pl\0" +"x.bg\0nyuzen.toyama.jp\0co.pn\0" +"natal.br\0" +"\xe6\xbe\xb3\xe9\x96\x80\0bofa\0" +"mil.vc\0" +"mil.ve\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x8b\xe0\xa4\xa4\0dattoweb.com\0" +"co.pw\0" +"sa.it\0" +"hekinan.aichi.jp\0mil.uy\0fan\0" +"funabashi.chiba.jp\0" +"kamijima.ehime.jp\0" +"from-sc.com\0" +"barsy.site\0" +"torino.it\0" +"tjome.no\0" +"us-east-1.amazonaws.com\0" +"forsand.no\0music\0" +"taiki.hokkaido.jp\0community-pro.de\0" +"krasnik.pl\0" +"hobby-site.com\0" +"egyptian.museum\0\xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\0" +"co.ro\0" +"jus.br\0" +"toyama.jp\0tsu.mie.jp\0shiftcrypto.dev\0" +"ikeda.gifu.jp\0co.rs\0k12.pr.us\0" +"myphotos.cc\0" +"nagasaki.jp\0" "co.rw\0" -"vic.gov.au\0spot\0" -"eat\0" -"anjo.aichi.jp\0mo-i-rana.no\0" -"katsuyama.fukui.jp\0akabira.hokkaido.jp\0" -"homebuilt.aero\0kinghost.net\0" -"stor-elvdal.no\0" -"horten.no\0" -"diamonds\0is-an-engineer.com\0" -"co.st\0loginline.io\0" -"griw.gov.pl\0" -"fukudomi.saga.jp\0mashiko.tochigi.jp\0nowaruda.pl\0" -"ozu.kumamoto.jp\0" -"encyclopedic.museum\0co.th\0" -"co.sz\0co.tj\0" -"reggiocalabria.it\0est-le-patron.com\0" -"aizuwakamatsu.fukushima.jp\0" -"friulive-giulia.it\0yamagata.ibaraki.jp\0co.tm\0" -"environmentalconservation.museum\0" -"dunlop\0" -"yamanashi.yamanashi.jp\0burghof.museum\0co.ua\0" -"muroran.hokkaido.jp\0blogspot.com.cy\0" -"co.tt\0" -"kadena.okinawa.jp\0barrel-of-knowledge.info\0" -"softbank\0" -"rodoy.no\0co.ug\0eco\0" -"takasu.hokkaido.jp\0" -"\xc3\xb8yer.no\0loginto.me\0" +"yusui.kagoshima.jp\0" +"aparecida.br\0cupcake.is\0" +"shingo.aomori.jp\0bergen.no\0\xe5\xbe\xae\xe5\x8d\x9a\0" +"esq\0net.eu.org\0paas.datacenter.fi\0no-ip.ca\0" +"toyoura.hokkaido.jp\0nhlfan.net\0" +"uk.primetel.cloud\0" +"us-east-1.elasticbeanstalk.com\0" +"mock.pstmn.io\0" +"tottori.jp\0hofu.yamaguchi.jp\0bievat.no\0" +"co.st\0" +"hi.cn\0warabi.saitama.jp\0mil.ye\0" +"soja.okayama.jp\0co.th\0" +"user.srcf.net\0" +"presidio.museum\0co.sz\0co.tj\0smile\0" +"co.tm\0" +"gs.ol.no\0" +"\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0" +"muos\xc3\xa1t.no\0" +"hitra.no\0mil.za\0for-better.biz\0co.ua\0" +"ggee\0" +"flesberg.no\0co.tt\0" +"co.ug\0" "co.tz\0" -"yashio.saitama.jp\0kautokeino.no\0co.uk\0realtor\0" -"ohira.tochigi.jp\0ky.us\0" -"aktyubinsk.su\0blogspot.com.ee\0" -"pe.leg.br\0" -"b\xc3\xb8mlo.no\0blogspot.com.eg\0" -"freemasonry.museum\0" -"co.us\0s3-website.ca-central-1.amazonaws.com\0" -"siracusa.it\0" -"co.ve\0ftpaccess.cc\0" -"kunneppu.hokkaido.jp\0sumida.tokyo.jp\0" -"hachijo.tokyo.jp\0" -"takahama.aichi.jp\0co.vi\0" -"kochi.kochi.jp\0co.uz\0edgeapp.net\0" -"budejju.no\0blogspot.com.ar\0" -"toyoake.aichi.jp\0silk.museum\0" -"edu\0yabu.hyogo.jp\0kashihara.nara.jp\0wloclawek.pl\0square7.de\0" -"dtv\0misconfused.org\0blogspot.com.au\0" -"ichikawa.chiba.jp\0setouchi.okayama.jp\0\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0photography\0" -"pesaro-urbino.it\0cartoonart.museum\0missoula.museum\0cloudaccess.host\0" -"fin.ci\0" -"k12.sc.us\0" -"basel.museum\0" -"servehttp.com\0" -"k12.oh.us\0" -"l.se\0" -"garden.museum\0dynathome.net\0blogspot.com.br\0" -"maniwa.okayama.jp\0" -"trentinosued-tirol.it\0" -"uwu.nu\0" -"imperia.it\0milano.it\0onojo.fukuoka.jp\0" -"muko.kyoto.jp\0tr\xc3\xa6na.no\0" -"mimata.miyazaki.jp\0exposed\0blogspot.com.by\0" -"belluno.it\0" -"sicily.it\0" -"amazon\0" -"hs.zone\0" -"blogspot.com.co\0" -"bomlo.no\0dvr\0" -"casino.hu\0nishinoshima.shimane.jp\0omaha.museum\0in-dsl.org\0" -"fin.ec\0is-a-hard-worker.com\0" -"ap-southeast-1.elasticbeanstalk.com\0dscloud.me\0" -"country\0eu.com\0" -"luxe\0ddnss.org\0" -"corvette.museum\0" -"miyake.nara.jp\0" -"dontexist.org\0" -"kahoku.ishikawa.jp\0linkyard-cloud.ch\0" -"\xe5\xb1\xb1\xe5\x8f\xa3.jp\0*.sendai.jp\0agakhan\0dyndns-wiki.com\0" -"microsoft\0" -"\xd1\x80\xd1\x84\0" -"filegear-gb.me\0" -"\xe1\x83\x92\xe1\x83\x94\0is-a-conservative.com\0" -"shakotan.hokkaido.jp\0loginline.services\0" -"trani-andria-barletta.it\0\xe5\x8c\x97\xe6\xb5\xb7\xe9\x81\x93.jp\0" -"sa.gov.au\0" -"oslo.no\0\xd9\x85\xd8\xb5\xd8\xb1\0plumbing\0square7.ch\0virtualserver.io\0" +"andoy.no\0co.uk\0lacaixa\0" +"iwafune.tochigi.jp\0mil.zm\0cloudns.org\0" +"stargard.pl\0eus\0" +"pb.ao\0" +"mer\xc3\xa5ker.no\0" +"greta.fr\0dyndns-office.com\0" +"bo.nordland.no\0co.us\0" +"forl\xc3\xac-cesena.it\0k12.nj.us\0" +"or.at\0rendalen.no\0co.ve\0calvinklein\0" +"social\0" +"mil.zw\0" +"cuneo.it\0" +"co.vi\0" +"or.bi\0westfalen.museum\0namdalseid.no\0co.uz\0" +"cyon.link\0" +"dyndns-pics.com\0" +"cc.sd.us\0" +"jp.eu.org\0" +"kameoka.kyoto.jp\0" +"kozow.com\0" +"balsan-s\xc3\xbc""dtirol.it\0" +"\xe6\xbe\xb3\xe9\x97\xa8\0" +"hirosaki.aomori.jp\0pub.sa\0" +"or.ci\0fitness\0" +"trentinoaadige.it\0matsubushi.saitama.jp\0rackmaze.com\0" +"vic.edu.au\0udi.br\0" +"lezajsk.pl\0" +"o.se\0" +"or.cr\0lom.it\0vr.it\0uchihara.ibaraki.jp\0" +"shangrila\0" +"luroy.no\0datsun\0ftpaccess.cc\0" +"myds.me\0" +"kh.ua\0analytics\0" +"mobile\0" +"lib.ga.us\0" +"for.one\0" +"casino\0" +"bond\0" +"now.sh\0" +"porsgrunn.no\0" +"globo\0" +"dd-dns.de\0" +"trentinos\xc3\xbc""d-tirol.it\0" +"fit\0" "co.za\0" -"taishin.fukushima.jp\0" -"castle.museum\0" -"azure-mobile.net\0" -"clothing\0" -"yoshida.saitama.jp\0" -"delivery\0" -"blogspot.com.es\0" +"iris.arpa\0" +"lodingen.no\0dni.us\0" +"toyonaka.osaka.jp\0vi.us\0" +"ina.saitama.jp\0porsangu.no\0" +"book\0" +"coloradoplateau.museum\0sydney\0" "co.zm\0" -"ag.it\0myiphost.com\0" -"vestnes.no\0" -"\xc3\xa5seral.no\0xs4all.space\0" -"hamburg\0" -"mb.ca\0co.zw\0za.bz\0" -"fujisawa.iwate.jp\0is-a-designer.com\0" -"biei.hokkaido.jp\0" -"shitara.aichi.jp\0" -"anan.tokushima.jp\0" -"trentinoaltoadige.it\0" -"booking\0" -"bjark\xc3\xb8y.no\0tools\0" -"odda.no\0" -"rr.gov.br\0publ.pt\0" -"kitahata.saga.jp\0heroy.nordland.no\0" -"automotive.museum\0" -"fastlylb.net\0" -"udi.br\0fujioka.gunma.jp\0rag-cloud.hosteur.com\0" -"hiji.oita.jp\0jolster.no\0" -"takamori.kumamoto.jp\0" -"gs.svalbard.no\0" -"kijo.miyazaki.jp\0" -"from-sd.com\0" -"venice.it\0kamikoani.akita.jp\0b\xc3\xb8.telemark.no\0associates\0" -"kunimi.fukushima.jp\0santabarbara.museum\0barefoot\0" -"university\0" -"bolzano-altoadige.it\0nago.okinawa.jp\0sciencehistory.museum\0" -"dnsiskinky.com\0" -"ginowan.okinawa.jp\0in-vpn.org\0onthewifi.com\0" -"living.museum\0madrid\0" -"ariake.saga.jp\0narvik.no\0nieruchomosci.pl\0" -"rs.gov.br\0sc.gov.br\0usercontent.jp\0" -"niki.hokkaido.jp\0" -"vaapste.no\0" -"cc.ms.us\0cc.nc.us\0" -"social\0mein-iserv.de\0bar1.net\0" -"brindisi.it\0sosnowiec.pl\0cc.in.us\0" -"jeonbuk.kr\0" -"figueres.museum\0" -"u.bg\0" -"bern.museum\0" -"0.bg\0" -"misato.akita.jp\0dyndns.info\0" -"talk\0pr.leg.br\0" -"cam.it\0k12.ak.us\0" -"tamamura.gunma.jp\0" -"kyotanabe.kyoto.jp\0opoczno.pl\0" -"nakatombetsu.hokkaido.jp\0" -"malatvuopmi.no\0zarow.pl\0" -"kvitsoy.no\0enscaled.sg\0" -"aprendemas.cl\0" -"r\xc3\xb8""d\xc3\xb8y.no\0" -"farmers\0" -"abira.hokkaido.jp\0alvdal.no\0" -"massacarrara.it\0" -"design.aero\0" -"uk.eu.org\0" -"ingatlan.hu\0" -"pharmacy.museum\0" -"is-a-therapist.com\0" -"yokote.akita.jp\0from-ms.com\0from-nc.com\0" -"mb.it\0" -"abruzzo.it\0lib.ct.us\0norton\0blogspot.com.mt\0" -"togitsu.nagasaki.jp\0zachpomor.pl\0" -"okinoshima.shimane.jp\0" -"blogspot.com.ng\0ddns.net\0" -"vaga.no\0\xe5\x80\x8b\xe4\xba\xba.\xe9\xa6\x99\xe6\xb8\xaf\0" -"vip.jelastic.cloud\0" -"fan\0" -"brother\0etisalat\0" -"a.ssl.fastly.net\0" -"ayase.kanagawa.jp\0in.london\0" -"nsn.us\0comcast\0" -"press.aero\0s\xc3\xb8r-aurdal.no\0" -"mypsx.net\0" -"afjord.no\0" -"sx.cn\0trentino-sudtirol.it\0" -"home-webserver.de\0" -"kalisz.pl\0" -"kitamoto.saitama.jp\0" -"rn.gov.br\0saigawa.fukuoka.jp\0orsta.no\0" -"agents.aero\0" -"takayama.gunma.jp\0" -"vestre-slidre.no\0" -"khmelnitskiy.ua\0cloud.fedoraproject.org\0" -"inatsuki.fukuoka.jp\0" -"doshi.yamanashi.jp\0" -"mizunami.gifu.jp\0esq\0" -"tsurugashima.saitama.jp\0" -"noto.ishikawa.jp\0s3.dualstack.ap-southeast-2.amazonaws.com\0blogspot.com.tr\0" -"dnsdojo.com\0webspace.rocks\0" -"certification.aero\0" -"seki.gifu.jp\0richardli\0" -"audi\0" -"url.tw\0" -"realestate.pl\0" -"\xe4\xba\xac\xe9\x83\xbd.jp\0estate\0" -"tr\xc3\xb8gstad.no\0" -"ro.gov.br\0aquarelle\0" -"ikeda.osaka.jp\0sandvik\0" -"neustar\0" -"radio\0" -"est-mon-blogueur.com\0" -"kommunalforbund.se\0" -"abashiri.hokkaido.jp\0kitagawa.miyazaki.jp\0hm.no\0\xc3\xa1lt\xc3\xa1.no\0pub.sa\0" -"fujimi.nagano.jp\0" -"ichinoseki.iwate.jp\0" -"eus\0" -"ap-northeast-3.elasticbeanstalk.com\0" -"a.bg\0kofu.yamanashi.jp\0cc.de.us\0in-dsl.de\0" -"kazo.saitama.jp\0beer\0" -"notodden.no\0szczytno.pl\0flir\0in.net\0" -"radom.pl\0blackbaudcdn.net\0" -"matsumoto.kagoshima.jp\0fauske.no\0fin.tn\0serveblog.net\0" -"host\0" -"krasnodar.su\0" -"nsw.au\0monza-brianza.it\0" -"devices.resinstaging.io\0" -"dyndns-pics.com\0" -"i234.me\0" -"services.aero\0" -"maritime.museum\0" -"koeln\0" -"perspecta.cloud\0" -"fredrikstad.no\0s3-ap-southeast-2.amazonaws.com\0" -"\xe6\x89\x8b\xe6\x9c\xba\0freeddns.us\0" -"agrar.hu\0" -"volyn.ua\0" -"leirfjord.no\0" -"pc.it\0ravenna.it\0js.org\0" -"bjerkreim.no\0" -"panama.museum\0" -"\xe7\xbd\x91\xe7\xbb\x9c.cn\0" -"piemonte.it\0barsy.net\0" -"sanda.hyogo.jp\0stuttgart.museum\0vang.no\0blogspot.com.uy\0" -"s3-website-sa-east-1.amazonaws.com\0" -"bt.it\0\xe9\xa3\x9f\xe5\x93\x81\0s3-us-west-1.amazonaws.com\0" -"\xe7\xb5\x84\xe7\xb9\x94.tw\0" -"lecce.it\0" -"eu.ax\0" -"fit\0health-carereform.com\0" -"taxi\0winners\0is-a-personaltrainer.com\0" -"dyndns-remote.com\0" +"nakanoto.ishikawa.jp\0" +"fie.ee\0gs.hl.no\0is-a-cubicle-slave.com\0" +"muenster.museum\0" +"iamallama.com\0outsystemscloud.com\0" +"shopping\0barsy.shop\0" +"konsulat.gov.pl\0co.zw\0" +"tsuruga.fukui.jp\0" +"ddnss.org\0" +"tsuwano.shimane.jp\0" +"alaska.museum\0bukhara.su\0" +"lib.nv.us\0" +"credit\0" +"sakai.fukui.jp\0\xd8\xa7\xd9\x84\xd8\xac\xd8\xb2\xd8\xa7\xd8\xa6\xd8\xb1\0" +"monza-brianza.it\0lom.no\0" +"schweiz.museum\0na4u.ru\0" +"koshigaya.saitama.jp\0" +"rana.no\0gentapps.com\0" +"fly\0" +"or.id\0" +"mitane.akita.jp\0" "kitagata.saga.jp\0" -"sanjo.niigata.jp\0" -"boldlygoingnowhere.org\0" -"sd.cn\0" -"dyndns-free.com\0" -"knx-server.net\0" -"kraanghke.no\0cloudfunctions.net\0" -"rebun.hokkaido.jp\0" -"obuse.nagano.jp\0wpenginepowered.com\0" -"shw.io\0" -"nakatsugawa.gifu.jp\0mutual\0" -"freeboxos.fr\0" -"dh.bytemark.co.uk\0" -"esashi.hokkaido.jp\0cx.ua\0" -"posts-and-telecommunications.museum\0rakkestad.no\0" -"diet\0" -"us-4.evennode.com\0" -"auspost\0" -"barsy.menu\0" -"endofinternet.org\0" -"*.bzz.dapps.earth\0" -"kimitsu.chiba.jp\0pittsburgh.museum\0" -"bedzin.pl\0eu-west-1.elasticbeanstalk.com\0" -"ggf.br\0systems\0" -"fly\0kddi\0" -"stat.no\0" -"*.spectrum.myjino.ru\0" -"selfip.net\0" -"chesapeakebay.museum\0dinosaur.museum\0" -"avocat.pro\0\xe3\x82\xaf\xe3\x83\xa9\xe3\x82\xa6\xe3\x83\x89\0hu.com\0" -"aircraft.aero\0\xe7\xbd\x91\xe7\xbb\x9c.hk\0" -"friuli-v-giulia.it\0k12.wy.us\0tec.mi.us\0" -"koshu.yamanashi.jp\0" -"ullensaker.no\0cc.ca.us\0" -"kokubunji.tokyo.jp\0olkusz.pl\0nz.basketball\0" -"u.se\0" -"net.ac\0veneto.it\0hostyhosting.io\0" -"net.ae\0" -"net.af\0" -"gliding.aero\0net.ag\0" -"net.ai\0" -"paris\0" -"net.al\0ako.hyogo.jp\0oarai.ibaraki.jp\0" -"net.am\0cesena-forl\xc3\xac.it\0" -"aisho.shiga.jp\0" -"control.aero\0pc.pl\0" -"net.ba\0otsuchi.iwate.jp\0kawai.nara.jp\0" -"net.ar\0net.bb\0" -"amsterdam\0foo\0" -"customer.enonic.io\0" -"net.au\0kyuragi.saga.jp\0" -"net.bh\0stufftoread.com\0" -"net.az\0" -"\xe3\x82\xb0\xe3\x83\xbc\xe3\x82\xb0\xe3\x83\xab\0" -"fox\0" -"net.bm\0satsumasendai.kagoshima.jp\0yamato.kanagawa.jp\0" -"net.bn\0iz.hr\0" -"net.bo\0g\xc3\xa1ls\xc3\xa1.no\0" -"us-3.evennode.com\0" -"net.br\0dynalias.net\0" -"net.bs\0" -"net.bt\0" -"gs.nl.no\0fl\xc3\xa5.no\0" -"hiratsuka.kanagawa.jp\0" -"se.gov.br\0hikari.yamaguchi.jp\0" -"net.ci\0inc.hk\0" -"championship.aero\0net.bz\0koori.fukushima.jp\0touch.museum\0lib.mo.us\0" -"net.cm\0no.it\0" -"net.cn\0ddns.me\0" -"net.co\0canada.museum\0lincoln\0" +"my-vigor.de\0" +"tc.br\0histoire.museum\0ravpage.co.il\0" +"caa.aero\0" +"indianmarket.museum\0pdns.page\0" +"akune.kagoshima.jp\0" +"tome.miyagi.jp\0" +"or.it\0sakurai.nara.jp\0\xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\0" +"b\xc3\xa1hcavuotna.no\0aejrie.no\0" +"nsw.edu.au\0sandefjord.no\0" +"project.museum\0" +"tr\xc3\xa6na.no\0" +"imb.br\0aus.basketball\0" +"cx.ua\0" +"etajima.hiroshima.jp\0" +"or.jp\0" +"mcdir.me\0" +"sakado.saitama.jp\0" +"asmatart.museum\0" +"or.ke\0" +"from-ne.com\0" +"foo\0" +"ishinomaki.miyagi.jp\0" +"tachiarai.fukuoka.jp\0okawa.kochi.jp\0" +"is-uberleet.com\0" +"comcast\0" +"chikujo.fukuoka.jp\0or.kr\0fox\0it1.jenv-aruba.cloud\0" +"ny.us\0noop.app\0" +"rj.gov.br\0" +"bolzano-altoadige.it\0mansions.museum\0" +"tsubetsu.hokkaido.jp\0" +"tokyo.jp\0" +"childrens.museum\0saltdal.no\0webcam\0" +"ap-northeast-1.elasticbeanstalk.com\0" +"wildlife.museum\0" +"orx.biz\0" +"rnu.tn\0" +"hakui.ishikawa.jp\0" +"mashike.hokkaido.jp\0" "gal\0" -"kikonai.hokkaido.jp\0" -"fe.it\0gives\0" -"boston.museum\0gap\0" -"net.cu\0" -"ap.it\0" -"net.cw\0" -"net.cy\0" -"otoineppu.hokkaido.jp\0kasuga.hyogo.jp\0" -"chikuhoku.nagano.jp\0fantasyleague.cc\0dyn-vpn.de\0" -"net.dm\0gay\0" -"net.do\0" -"frl\0" -"kyotango.kyoto.jp\0miasta.pl\0" -"kitahiroshima.hokkaido.jp\0" -"zj.cn\0net.ec\0" -"in-dsl.net\0" -"ba.gov.br\0" -"kosaka.akita.jp\0" -"net.eg\0" -"habmer.no\0" -"net.dz\0morotsuka.miyazaki.jp\0" -"gaular.no\0villas\0" -"mobara.chiba.jp\0fuoisku.no\0" -"even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0" -"uni5.net\0meteorapp.com\0" -"yandexcloud.net\0" -"net.et\0" -"b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0" -"vardo.no\0lixil\0" -"net.fj\0hamaroy.no\0" -"\xe7\xbb\x84\xe7\xbb\x87.hk\0nature.museum\0" -"ponpes.id\0sayama.osaka.jp\0best\0" -"net.fm\0" -"toyoura.hokkaido.jp\0barsycenter.com\0" -"dynu.net\0" -"usa.museum\0us-2.evennode.com\0" +"shimotsuke.tochigi.jp\0" +"gap\0" +"heritage.museum\0x.se\0bostik\0" +"koebenhavn.museum\0" +"or.na\0valer.hedmark.no\0" +"\xe7\x9f\xb3\xe5\xb7\x9d.jp\0co.com\0" +"gay\0" +"or.mu\0" +"frl\0official.academy\0" +"\xc3\xa5l.no\0" +"oshima.tokyo.jp\0" +"tonami.toyama.jp\0" +"is-a-liberal.com\0" +"gallup\0" +"stalbans.museum\0fin.ci\0" +"iwaizumi.iwate.jp\0kainan.wakayama.jp\0" +"witd.gov.pl\0njs.jelastic.vps-host.net\0" +"ogose.saitama.jp\0cambridge.museum\0" +"\xe7\xa5\x9e\xe5\xa5\x88\xe5\xb7\x9d.jp\0mc.ax\0" +"servebbs.net\0" +"la.us\0" +"kherson.ua\0" +"chijiwa.nagasaki.jp\0" +"direct.quickconnect.to\0" +"nagi.okayama.jp\0" +"hadsel.no\0" +"office\0" "gdn\0" -"cityeats\0" -"net.ge\0tra.kp\0gea\0" -"s\xc3\xa1lat.no\0ftr\0at-band-camp.net\0" -"net.gg\0architecture.museum\0auto\0" -"diadem.cloud\0" -"isa-geek.org\0" -"tsuchiura.ibaraki.jp\0" -"net.gl\0toda.saitama.jp\0" -"net.gn\0hongo.hiroshima.jp\0ooguy.com\0" -"navigation.aero\0" -"net.gp\0" -"higashinaruse.akita.jp\0kurate.fukuoka.jp\0" -"net.gr\0fun\0thingdustdata.com\0" -"net.gt\0" -"net.gu\0kozow.com\0" -"outsystemscloud.com\0" -"asahi.yamagata.jp\0oksnes.no\0barsy.pro\0" -"net.gy\0zao.miyagi.jp\0" -"sukagawa.fukushima.jp\0" -"net.hk\0kasama.ibaraki.jp\0" -"virtual-user.de\0woltlab-demo.com\0" -"net.hn\0otake.hiroshima.jp\0anthro.museum\0" -"cyou\0" -"sa.gov.pl\0" -"9.bg\0" -"net.ht\0net.id\0k12.ms.us\0k12.nc.us\0" -"grosseto.it\0" -"nedre-eiker.no\0" -"a.se\0" -"balsan-suedtirol.it\0bielawa.pl\0" -"net.il\0" -"net.im\0holt\xc3\xa5len.no\0" -"net.in\0" -"net.iq\0clan.rip\0" -"net.ir\0" -"net.is\0" -"odessa.ua\0" -"net.je\0" -"buyshouses.net\0" -"odesa.ua\0" -"modern.museum\0transport.museum\0barsy.pub\0" -"viajes\0" -"net.jo\0" -"sardegna.it\0otoyo.kochi.jp\0us-1.evennode.com\0" -"iitate.fukushima.jp\0" -"net.kg\0" -"mie.jp\0net.ki\0lib.vi.us\0" -"calabria.it\0" -"ve.it\0" -"fyi\0lolipop.io\0" -"net.kn\0s3-website-us-west-2.amazonaws.com\0" -"minamiise.mie.jp\0ocelot.mythic-beasts.com\0" -"shirahama.wakayama.jp\0" -"net.la\0" -"net.lb\0foundation\0" -"net.lc\0dish\0nfshost.com\0" -"trainer.aero\0" -"sorocaba.br\0morimachi.shizuoka.jp\0spdns.org\0" -"log.br\0" -"net.kw\0" -"sg-1.paas.massivegrid.net\0" -"net.ky\0" -"minokamo.gifu.jp\0net.kz\0parts\0" -"tomisato.chiba.jp\0net.lk\0" -"adachi.tokyo.jp\0" -"gop.pk\0gentapps.com\0" -"horology.museum\0salzburg.museum\0" -"yaita.tochigi.jp\0party\0" -"net.ma\0" -"net.lr\0" -"net.ls\0" -"dscloud.mobi\0" -"am.gov.br\0net.me\0" -"erotica.hu\0net.lv\0" -"travel\0" -"net.ly\0" -"gotpantheon.com\0" -"net.mk\0select\0" -"net.ml\0" -"net.mo\0" -"joinville.br\0" -"net.ms\0fam.pk\0" -"hb.cn\0gosen.niigata.jp\0net.mt\0builtwithdark.com\0" -"mutsuzawa.chiba.jp\0net.mu\0" -"net.mv\0net.nf\0" -"net.mw\0net.ng\0" -"net.mx\0" -"net.my\0net.ni\0gle\0" -"net.mz\0" -"yamashina.kyoto.jp\0roan.no\0" -"bandai.fukushima.jp\0" -"kawanishi.nara.jp\0\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0" -"kirovograd.ua\0" -"*.elb.amazonaws.com.cn\0" -"caltanissetta.it\0" -"wiw.gov.pl\0" -"net.nr\0" -"hirado.nagasaki.jp\0wi.us\0" -"\xe7\xb5\x84\xe7\xb9\x94.hk\0" -"assassination.museum\0sd.us\0" -"bamble.no\0net.nz\0" -"doesntexist.org\0" -"nogata.fukuoka.jp\0net.om\0" -"culturalcenter.museum\0" -"ryukyu\0" -"mantova.it\0maryland.museum\0net.pa\0" -"epilepsy.museum\0" -"kashima.saga.jp\0interactive.museum\0gmo\0" -"net.pe\0lancia\0" -"isumi.chiba.jp\0bato.tochigi.jp\0" -"net.ph\0" -"jewelry\0" -"us-west-1.elasticbeanstalk.com\0" -"ranzan.saitama.jp\0net.pk\0coffee\0" -"tajiri.osaka.jp\0net.pl\0gmx\0" -"shinshinotsu.hokkaido.jp\0" -"net.pn\0donetsk.ua\0" -"ilawa.pl\0" -"hirakata.osaka.jp\0net.qa\0" -"entertainment.aero\0net.pr\0" -"net.ps\0" -"s\xc3\xb8gne.no\0net.pt\0guide\0" -"j.bg\0nishiaizu.fukushima.jp\0toyooka.hyogo.jp\0" -"higashihiroshima.hiroshima.jp\0oshu.iwate.jp\0" -"yamanashi.jp\0hokksund.no\0svelvik.no\0" -"net.py\0" -"servequake.com\0" -"psc.br\0okayama.jp\0vodka\0j.scaleforce.com.cy\0" -"\xe7\xa6\x8f\xe5\xb3\xb6.jp\0utah.museum\0k12.il.us\0" -"date.hokkaido.jp\0folkebibl.no\0" -"daegu.kr\0" -"mikawa.yamagata.jp\0k12.de.us\0" -"jele.site\0" -"vega.no\0goo\0" -"vegarshei.no\0gop\0" -"monzaedellabrianza.it\0futuremailing.at\0" -"\xe5\x95\x86\xe6\xa5\xad.tw\0" -"journalism.museum\0got\0solutions\0" -"wales.museum\0toray\0" -"gov\0" -"global.ssl.fastly.net\0ms.leg.br\0" -"br\xc3\xb8nn\xc3\xb8ysund.no\0" -"tank.museum\0" -"onyourside\0" -"terni.it\0nakagawa.fukuoka.jp\0co.krd\0" -"lillehammer.no\0" -"net.sa\0in-vpn.net\0" -"net.sb\0\xe9\xa6\x99\xe6\xb8\xaf\0kosher\0ch.trendhosting.cloud\0" -"net.sc\0" -"net.sd\0nikon\0" -"ap.gov.br\0net.ru\0" -"store\0" -"tsumagoi.gunma.jp\0airguard.museum\0net.rw\0net.sg\0" -"net.sh\0" -"sn\xc3\xa5""ase.no\0" -"website\0" -"zoological.museum\0net.sl\0" -"net.so\0" -"karikatur.museum\0international\0" -"enebakk.no\0net.ss\0" -"ass.km\0net.st\0" -"fukuchi.fukuoka.jp\0sherbrooke.museum\0" -"fhs.no\0" -"from-mt.com\0from-nd.com\0" -"net.th\0pcloud.host\0" -"net.sy\0ollo\0productions\0" -"belem.br\0gr.it\0jeju.kr\0konin.pl\0net.tj\0lib.ca.us\0" -"mt.leg.br\0" -"bodo.no\0net.tm\0lon-1.paas.massivegrid.net\0" -"net.tn\0" -"f\xc3\xb8rde.no\0ap.gov.pl\0olawa.pl\0net.to\0" -"isa-geek.com\0" -"net.ua\0" -"net.tr\0" -"lg.jp\0hbo\0" -"net.tt\0" -"limanowa.pl\0" -"bologna.it\0gr.jp\0wake.okayama.jp\0" -"tranoy.no\0net.tw\0" -"web.bo\0hosting\0""4lima.de\0" -"apps.lair.io\0" -"aetna\0" -"hirono.fukushima.jp\0net.uk\0\xd2\x9b\xd0\xb0\xd0\xb7\0abbott\0" -"hobol.no\0fashion\0" -"try-snowplow.com\0" -"star\0" -"nx.cn\0olbiatempio.it\0net.vc\0" -"net.ve\0" -"js.cn\0estate.museum\0malbork.pl\0target\0" -"feira.br\0lanxess\0" -"web.co\0" -"net.uy\0net.vi\0\xe6\x85\x88\xe5\x96\x84\0" -"net.uz\0" -"gitapp.si\0now-dns.net\0" -"net.vn\0is-lost.org\0appchizi.com\0" -"seaport.museum\0mk.ua\0" -"hiranai.aomori.jp\0" -"trieste.it\0usui.fukuoka.jp\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd9\x87\0" -"if.ua\0" -"net.vu\0" -"likes-pie.com\0""4lima.at\0" -"web.do\0uk.reclaim.cloud\0" -"yatsushiro.kumamoto.jp\0forde.no\0" -"yotsukaido.chiba.jp\0" -"mansions.museum\0" -"prato.it\0urausu.hokkaido.jp\0force.museum\0" -"mielec.pl\0" -"aoste.it\0ofunato.iwate.jp\0barsy.org\0" -"ome.tokyo.jp\0" -"ono.hyogo.jp\0hoyanger.no\0molde.no\0net.ws\0" -"cancerresearch\0" -"uk.primetel.cloud\0" -"4lima.ch\0" -"cloud66.ws\0" -"matsumoto.nagano.jp\0ishikawa.okinawa.jp\0clinic\0" -"cc.tn.us\0" -"flor\xc3\xb8.no\0nes.buskerud.no\0" -"siellak.no\0uzhgorod.ua\0" -"lodingen.no\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0" -"abo.pa\0" -"net.ye\0rugby\0\xe9\xa4\x90\xe5\x8e\x85\0" -"muenster.museum\0aukra.no\0no-ip.ca\0" -"macys\0selfip.info\0" -"godo.gifu.jp\0romsa.no\0" -"k12.or.us\0" -"kimino.wakayama.jp\0" -"\xe6\xa0\x83\xe6\x9c\xa8.jp\0" -"portlligat.museum\0" -"net.za\0" -"tsukui.kanagawa.jp\0termez.su\0" -"extraspace\0" -"wios.gov.pl\0" -"g\xc3\xa1ivuotna.no\0net.zm\0" -"web.gu\0" -"kaisei.kanagawa.jp\0" -"tas.edu.au\0kasuga.fukuoka.jp\0aure.no\0boehringer\0" -"lans.museum\0" -"sakae.nagano.jp\0" -"delaware.museum\0" -"!city.kitakyushu.jp\0okegawa.saitama.jp\0synology.me\0" -"ybo.faith\0" -"recht.pro\0" -"web.id\0d\xc3\xb8nna.no\0rzgw.gov.pl\0" -"tosashimizu.kochi.jp\0from-hi.com\0" -"tsurugi.ishikawa.jp\0cloud-de.unispace.io\0" -"bifuka.hokkaido.jp\0" -"shell.museum\0flowers\0" -"web.in\0" -"klabu.no\0" -"hiv\0" -"trentino-s\xc3\xbc""d-tirol.it\0gamagori.aichi.jp\0" -"*.banzai.cloud\0" -"movimiento.bo\0" -"hornindal.no\0" -"ua.rs\0" -"cechire.com\0co.financial\0" -"bi.it\0brussel.museum\0history.museum\0" -"trustee.museum\0" -"qpon\0" -"\xd8\xa7\xd9\x84\xd8\xac\xd8\xb2\xd8\xa7\xd8\xa6\xd8\xb1\0" -"showa.yamanashi.jp\0" -"conf.au\0" -"eiheiji.fukui.jp\0" -"bihoro.hokkaido.jp\0hara.nagano.jp\0field.museum\0" -"donna.no\0" -"\xd9\xbe\xd8\xa7\xda\xa9\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0hkt\0" -"is-an-accountant.com\0kurgan.su\0" -"oita.jp\0drayddns.com\0" -"isen.kagoshima.jp\0bydgoszcz.pl\0" -"honbetsu.hokkaido.jp\0oregon.museum\0square.museum\0" -"inagawa.hyogo.jp\0" -"pl.ua\0" -"tsuruga.fukui.jp\0" -"web.lk\0lg.ua\0" -"ardal.no\0" -"dontexist.com\0" -"dr\xc3\xb8""bak.no\0" -"tone.ibaraki.jp\0is-a-techie.com\0" -"kiyokawa.kanagawa.jp\0" -"webhosting.be\0" -"hs.run\0" -"\xe7\xa7\xbb\xe5\x8a\xa8\0" -"takikawa.hokkaido.jp\0" -"mini\0" -"bill.museum\0" -"from-ks.com\0" -"mint\0gsj.bz\0" -"ichikawa.hyogo.jp\0axis.museum\0web.nf\0" -"s3.eu-west-3.amazonaws.com\0is-a-musician.com\0" -"web.ni\0" -"historisches.museum\0" -"laspezia.it\0" -"pescara.it\0" -"market\0" -"reisen\0" -"for.men\0" -"charter.aero\0" -"elasticbeanstalk.com\0dyndns.dappnode.io\0" -"k12.nv.us\0" -"vgs.no\0" -"*.owo.codes\0" -"groks-the.info\0" -"oxford.museum\0" -"from.hr\0gyeongnam.kr\0umig.gov.pl\0hot\0syno-ds.de\0" -"fuchu.hiroshima.jp\0" -"kurobe.toyama.jp\0how\0" -"versicherung\0" -"alipay\0" -"web.pk\0" -"tcp4.me\0" -"fuchu.tokyo.jp\0" -"coal.museum\0" -"myfast.host\0" -"mircloud.us\0" -"tarnobrzeg.pl\0" -"iide.yamagata.jp\0" -"farm.museum\0" -"chino.nagano.jp\0" -"selfip.org\0" -"oumu.hokkaido.jp\0" -"shiroishi.miyagi.jp\0" -"ri.it\0lib.nh.us\0" -"under.one\0" -"mt.it\0kanegasaki.iwate.jp\0zone\0" -"sanuki.kagawa.jp\0" -"gs.jan-mayen.no\0\xc3\xb8ystre-slidre.no\0ibm\0" -"owani.aomori.jp\0oppeg\xc3\xa5rd.no\0" -"dyn-o-saur.com\0ntdll.top\0" -"andasuolo.no\0dyndns.biz\0forte.id\0" -"\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0ice\0" -"team\0" -"\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\0" -"police.uk\0" -"riik.ee\0" -"io.kg\0" -"coupon\0icu\0" -"deals\0s3-eu-central-1.amazonaws.com\0" -"hk.cn\0koryo.nara.jp\0" -"matera.it\0raid\0" -"shari.hokkaido.jp\0" -"web.tj\0sm.ua\0" -"hsbc\0icbc\0" -"dynalias.org\0" -"swiftcover\0" -"tech\0" -"online.th\0" -"web.tr\0toyota\0" -"baghdad.museum\0" -"miyoshi.hiroshima.jp\0" -"loans\0phone\0" -"\xd0\xb1\xd0\xb5\xd0\xbb\0" -"semboku.akita.jp\0gotemba.shizuoka.jp\0sebastopol.ua\0oh.us\0" -"nogi.tochigi.jp\0oygarden.no\0" -"fly.dev\0" -"web.ve\0" -"oyer.no\0" -"other.nf\0nissedal.no\0" -"lazio.it\0kunitomi.miyazaki.jp\0ifm\0mo-siemens.io\0" -"\xe5\x80\x8b\xe4\xba\xba.hk\0mesaverde.museum\0hammerfest.no\0mircloud.ru\0" -"poivron.org\0edgestack.me\0" -"gildesk\xc3\xa5l.no\0" -"kami.kochi.jp\0" -"genkai.saga.jp\0from-wv.com\0" -"isa.us\0" -"okaya.nagano.jp\0" -"etc.br\0" -"cc.il.us\0" -"k12.ut.us\0" -"s.bg\0" -"emilia-romagna.it\0" -"flynnhosting.net\0" -"k12.nj.us\0\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\0" -"veterinaire.km\0" -"vercelli.it\0" -"kamigori.hyogo.jp\0" -"ro.eu.org\0" -"minamidaito.okinawa.jp\0" -"loseyourip.com\0" -"kumamoto.jp\0" -"shiojiri.nagano.jp\0" -"2000.hu\0" -"nowtv\0" -"lodi.it\0tobe.ehime.jp\0" -"\xe6\x94\xbf\xe5\xba\x9c\0isa-geek.net\0" -"stange.no\0" -"pisa.it\0" -"kamitonda.wakayama.jp\0bajddar.no\0" -"schools.nsw.edu.au\0bieszczady.pl\0" -"vefsn.no\0" -"is-a-libertarian.com\0" -"filegear-de.me\0" -"showa.fukushima.jp\0" -"lucania.it\0minamiyamashiro.kyoto.jp\0platter-app.com\0" -"alesund.no\0ac.leg.br\0" -"\xc3\xa5l.no\0web.za\0" -"yasu.shiga.jp\0" -"pu.it\0wnext.app\0" -"ide.kyoto.jp\0jelastic.regruhosting.ru\0" -"pagespeedmobilizer.com\0" -"kamifurano.hokkaido.jp\0hidaka.kochi.jp\0photography.museum\0" -"ichinomiya.chiba.jp\0" -"soka.saitama.jp\0" -"onomichi.hiroshima.jp\0leangaviika.no\0" -"veterinaire.fr\0meeres.museum\0" -"larsson.museum\0nordkapp.no\0us-gov-west-1.elasticbeanstalk.com\0internet-dns.de\0" -"kawanabe.kagoshima.jp\0gg.ax\0" -"friuli-vgiulia.it\0" -"mining.museum\0food\0" -"is-very-bad.org\0" -"abkhazia.su\0" -"kamikawa.saitama.jp\0" -"yuasa.wakayama.jp\0si.eu.org\0" -"aviation.museum\0" -"photo\0conf.se\0" +"fin.ec\0mishima.fukushima.jp\0nesseby.no\0framercanvas.com\0" +"gea\0" +"ftr\0xihuan\0" +"fujimi.nagano.jp\0" +"ss.it\0" +"fed.us\0" +"in-brb.de\0" +"ringsaker.no\0" +"or.pw\0" +"fun\0" +"wallonie.museum\0" +"edgeapp.net\0" +"yabuki.fukushima.jp\0" +"bajddar.no\0" +"higashi.fukuoka.jp\0vestvagoy.no\0" +"art.museum\0" +"df.gov.br\0" +"florence.it\0miasa.nagano.jp\0" +"viking.museum\0cc.al.us\0" +"hinode.tokyo.jp\0" +"shikaoi.hokkaido.jp\0" +"hi.us\0" +"loginline.site\0serveminecraft.net\0" +"kakuda.miyagi.jp\0" +"quebec\0" +"webhop.biz\0cloudapp.net\0" +"hioki.kagoshima.jp\0is-an-engineer.com\0eu-4.evennode.com\0" +"wpmucdn.com\0" +"gallo\0" +"eng.pro\0" +"s\xc3\xb8r-fron.no\0" +"dyndns-remote.com\0" +"boston\0kosher\0" +"co.business\0" +"ina.nagano.jp\0eu-west-3.elasticbeanstalk.com\0" +"from-az.net\0" +"szczecin.pl\0leczna.pl\0" +"potager.org\0" +"ringerike.no\0or.th\0" +"barrel-of-knowledge.info\0" +"kaszuby.pl\0" +"\xed\x95\x9c\xea\xb5\xad\0map.fastly.net\0" +"\xe7\xb6\xb2\xe7\xb5\xa1.cn\0chiyoda.gunma.jp\0misugi.mie.jp\0mcdir.ru\0" +"k12.ca.us\0" +"delaware.museum\0fyi\0" +"bsb.br\0or.ug\0es.ax\0" +"gemological.museum\0" +"ashiya.fukuoka.jp\0notogawa.shiga.jp\0or.tz\0" +"prudential\0" +"usgarden.museum\0yolasite.com\0" +"maizuru.kyoto.jp\0lib.vt.us\0" +"leasing.aero\0ayase.kanagawa.jp\0settlement.museum\0" +"or.us\0" +"fuchu.tokyo.jp\0cityeats\0" +"ar.it\0" +"shikatsu.aichi.jp\0" +"miyota.nagano.jp\0" +"fauske.no\0" +"mc.it\0alstahaug.no\0eu-3.evennode.com\0" +"matsudo.chiba.jp\0" +"oirase.aomori.jp\0furudono.fukushima.jp\0satosho.okayama.jp\0" +"kanagawa.jp\0" +"villas\0" +"yokoshibahikari.chiba.jp\0" +"gle\0" +"campinagrande.br\0london.museum\0" +"nord-aurdal.no\0vegarshei.no\0" +"bulsan-sudtirol.it\0" +"valle-d-aosta.it\0" +"nz.basketball\0" +"umaji.kochi.jp\0" +"matsusaka.mie.jp\0\xe3\x82\xb9\xe3\x83\x88\xe3\x82\xa2\0" +"gulen.no\0" +"kanra.gunma.jp\0holtalen.no\0" +"selfip.net\0is.eu.org\0" +"naturhistorisches.museum\0" +"inami.wakayama.jp\0kvinesdal.no\0gmo\0is-an-actor.com\0" +"saitama.jp\0l\xc3\xa6rdal.no\0" +"q-a.eu.org\0" +"sa.gov.au\0" +"\xe7\xb6\xb2\xe7\xb5\xa1.hk\0uwu.ai\0trycloudflare.com\0" +"m\xc3\xa5lselv.no\0wphostedmail.com\0" +"gmx\0" +"ashikaga.tochigi.jp\0" +"hara.nagano.jp\0kusu.oita.jp\0" +"kumakogen.ehime.jp\0kakogawa.hyogo.jp\0" +"v\xc3\xa1rgg\xc3\xa1t.no\0\xd8\xb3\xd9\x88\xd8\xaf\xd8\xa7\xd9\x86\0" +"to.leg.br\0" +"warszawa.pl\0" +"hatsukaichi.hiroshima.jp\0" +"elburg.museum\0" +"\xe6\x97\xb6\xe5\xb0\x9a\0" +"yanaizu.fukushima.jp\0" +"eu-2.evennode.com\0" +"conf.au\0it.eu.org\0ddnslive.com\0" +"inzai.chiba.jp\0shika.ishikawa.jp\0" +"chintai\0herokussl.com\0" +"karate.museum\0" +"\xe8\xaf\xba\xe5\x9f\xba\xe4\xba\x9a\0" +"it.ao\0goo\0hepforge.org\0" +"crew.aero\0gop\0*.owo.codes\0" +"localhost.daplie.me\0" +"\xe7\xae\x87\xe4\xba\xba.hk\0scholarships\0" +"got\0" +"otoineppu.hokkaido.jp\0" +"gov\0rauma.no\0apartments\0vladimir.su\0" +"bokn.no\0" +"palmas.br\0novara.it\0ghost.io\0serveftp.com\0" +"rr.gov.br\0" +"engine.aero\0games\0" +"s3-ca-central-1.amazonaws.com\0" +"duck\0" +"trentino-stirol.it\0bryansk.su\0" +"fc.it\0suita.osaka.jp\0arakawa.saitama.jp\0gop.pk\0cafe\0myeffect.net\0" +"forgeblocks.com\0" +"midtre-gauldal.no\0crd.co\0" +"pt.it\0" +"kumejima.okinawa.jp\0kahoku.yamagata.jp\0" +"eastcoast.museum\0drayddns.com\0" +"kpmg\0" +"ind.br\0dyndns-work.com\0" +"kawai.iwate.jp\0" +"hzc.io\0" +"verbania.it\0dst.mi.us\0" +"chikuma.nagano.jp\0homelink.one\0" +"rs.gov.br\0sc.gov.br\0hbo\0" +"k12.ct.us\0" +"assn.lk\0jewish.museum\0vladimir.ru\0" +"es.kr\0netbank\0eu-1.evennode.com\0" +"kure.hiroshima.jp\0jolster.no\0siellak.no\0in.eu.org\0" +"tsuyama.okayama.jp\0komvux.se\0" +"asahi.toyama.jp\0" +"czeladz.pl\0" +"sirdal.no\0" +"cc.in.us\0" "jerusalem.museum\0" -"sakuho.nagano.jp\0" -"skole.museum\0" -"can.museum\0dealer\0" -"ohtawara.tochigi.jp\0" -"!www.ck\0vn.ua\0" -"osakikamijima.hiroshima.jp\0" -"aogashima.tokyo.jp\0" -"g\xc3\xa1\xc5\x8bgaviika.no\0" -"lahppi.no\0" -"orangecloud.tn\0" -"sydney.museum\0" -"inc\0spb.ru\0" -"oiso.kanagawa.jp\0ee.eu.org\0" -"presse.km\0ri.us\0" -"missile.museum\0ing\0" -"mt.us\0nd.us\0paris.eu.org\0" -"slz.br\0shibata.niigata.jp\0irish\0" -"ink\0" -"ford\0" -"sells-for-less.com\0" +"diskstation.me\0" +"za.com\0rdv.to\0" +"fin.tn\0" +"c66.me\0" +"synology.me\0" +"toyotomi.hokkaido.jp\0griw.gov.pl\0" +"diskstation.eu\0" +"ebetsu.hokkaido.jp\0midatlantic.museum\0" +"saroma.hokkaido.jp\0kerrylogistics\0" +"hoylandet.no\0ostroda.pl\0" +"yamakita.kanagawa.jp\0" +"group.aero\0" +"k12.al.us\0" +"is-a-llama.com\0" +"beskidy.pl\0" +"lib.id.us\0" +"town\0" +"imdb\0" +"ar.us\0paas.massivegrid.com\0" +"otsuki.kochi.jp\0oyer.no\0" +"hakodate.hokkaido.jp\0" +"sobetsu.hokkaido.jp\0gift\0" +"trentinos-tirol.it\0saka.hiroshima.jp\0" +"*.nom.br\0ind.gt\0ishikawa.jp\0" +"mihama.wakayama.jp\0" +"museet.museum\0" +"call\0corsica\0" +"tananger.no\0stord.no\0parliament.nz\0" +"ascoli-piceno.it\0bitbridge.net\0" +"nflfan.org\0" +"afjord.no\0" +"masaki.ehime.jp\0" +"rn.gov.br\0toys\0" +"nagawa.nagano.jp\0" +"ind.in\0akagi.shimane.jp\0camp\0" +"fukudomi.saga.jp\0skierv\xc3\xa1.no\0" +"kl\xc3\xa6""bu.no\0" +"vinnica.ua\0lib.fl.us\0" +"minamiaiki.nagano.jp\0lubin.pl\0" +"nes.akershus.no\0" +"lazio.it\0shinjo.okayama.jp\0aaa.pro\0" +"vallee-aoste.it\0gangaviika.no\0" +"amusement.aero\0" +"s3-website-eu-west-1.amazonaws.com\0" +"hiv\0" +"cartoonart.museum\0" +"otaki.nagano.jp\0" +"cc.mo.us\0" +"ro.gov.br\0" +"kudoyama.wakayama.jp\0" +"d.bg\0" +"dnsupdater.de\0" +"r\xc3\xa1isa.no\0appspacehosted.com\0" +"koga.ibaraki.jp\0" +"\xe3\x82\xb3\xe3\x83\xa0\0" +"varese.it\0ind.kw\0bamble.no\0" +"uwu.nu\0" +"\xe5\x85\xb5\xe5\xba\xab.jp\0samsung\0" +"poivron.org\0" +"hkt\0" +"ena.gifu.jp\0" +"morioka.iwate.jp\0" +"friuli-ve-giulia.it\0" +"esp.br\0yonago.tottori.jp\0" +"sakaki.nagano.jp\0" +"kristiansund.no\0" +"vantaa.museum\0" +"\xc3\xa1k\xc5\x8boluokta.no\0" +"kagamino.okayama.jp\0" +"nanao.ishikawa.jp\0frosta.no\0" +"lib.me.us\0" +"omasvuotna.no\0" +"hasami.nagasaki.jp\0" +"ogimi.okinawa.jp\0" +"kongsvinger.no\0careers\0" +"care\0george\0s3-fips-us-gov-west-1.amazonaws.com\0" +"sciencecenter.museum\0" +"static-access.net\0" +"qa2.com\0" +"gallery\0" +"gokase.miyazaki.jp\0" +"pics\0" +"mysecuritycamera.com\0" +"shimamoto.osaka.jp\0" +"bananarepublic\0casa\0jele.io\0" +"bt.it\0cc.tx.us\0customer.enonic.io\0" +"cars\0rackmaze.net\0" +"case\0" +"bahcavuotna.no\0" +"cymru.museum\0cash\0filegear-au.me\0github.io\0" +"holt\xc3\xa5len.no\0" +"yamada.toyama.jp\0lviv.ua\0" +"primetel.cloud\0" +"dvag\0" +"services\0" +"luster.no\0" +"valleaosta.it\0naturbruksgymn.se\0" +"trentin-s\xc3\xbc""dtirol.it\0" +"tatar\0" +"ne.jp\0" +"kuwana.mie.jp\0" +"hoteles\0" +"varggat.no\0alpha-myqnapcloud.com\0" +"ne.ke\0valley.museum\0" +"air-surveillance.aero\0" +"higashiura.aichi.jp\0" +"bjark\xc3\xb8y.no\0" +"hot\0" +"trafficplex.cloud\0draydns.de\0" +"oharu.aichi.jp\0" +"how\0mytuleap.com\0" +"oceanographic.museum\0kmpsp.gov.pl\0immo\0conf.se\0" +"coupon\0" +"clinton.museum\0cruises\0" +"american.museum\0gmail\0" +"ne.kr\0" +"asakawa.fukushima.jp\0" +"harima.hyogo.jp\0artanddesign.museum\0kvafjord.no\0sand\xc3\xb8y.no\0" +"balsan-suedtirol.it\0philadelphia.museum\0" +"toyokawa.aichi.jp\0" +"osakasayama.osaka.jp\0my-firewall.org\0" +"sanjo.niigata.jp\0" +"forlicesena.it\0" +"naganohara.gunma.jp\0" +"rzgw.gov.pl\0" +"volda.no\0" +"hiphop\0ibm\0" +"\xe6\xbb\x8b\xe8\xb3\x80.jp\0gs.va.no\0volkswagen\0" +"realtor\0" +"ruovat.no\0" +"de.cool\0" +"iwaki.fukushima.jp\0" +"land\0" +"nishiaizu.fukushima.jp\0ice\0" +"yao.osaka.jp\0" +"bmd.br\0meland.no\0" +"perso.ht\0" +"lebork.pl\0" +"se.net\0ru.net\0" +"nesoddtangen.no\0" +"matsue.shimane.jp\0" +"lib.pr.us\0viajes\0" +"shiojiri.nagano.jp\0suwa.nagano.jp\0hapmir.no\0wlocl.pl\0" +"kutchan.hokkaido.jp\0" +"shibata.niigata.jp\0" +"ind.tn\0" +"icu\0" +"now-dns.top\0" +"spb.ru\0" +"niigata.jp\0yamagata.yamagata.jp\0cc.nh.us\0" +"arakawa.tokyo.jp\0" +"hachioji.tokyo.jp\0vpndns.net\0" +"nishihara.kumamoto.jp\0" +"lahppi.no\0filegear-ie.me\0" +"coffee\0" +"m.bg\0" +"ge.it\0*.nodebalancer.linode.com\0" +"monzabrianza.it\0" "spb.su\0" +"inami.toyama.jp\0shirahama.wakayama.jp\0" +"fresenius\0" +"c.cdn77.org\0" +"donostia.museum\0" +"ne.pw\0" +"eti.br\0" +"*.stgstage.dev\0" +"from-in.com\0" +"oshino.yamanashi.jp\0fitjar.no\0" +"genting\0s3-eu-west-1.amazonaws.com\0" +"rmit\0" +"chanel\0" +"hanggliding.aero\0" +"badaddja.no\0" +"ozu.kumamoto.jp\0ifm\0" +"se.gov.br\0" +"desa.id\0lib.nj.us\0" +"ambulance.aero\0ogi.saga.jp\0" +"botany.museum\0" +"ulm.museum\0fl.us\0deals\0olayan\0onza.mythic-beasts.com\0" +"sar.it\0" +"fnwk.site\0" +"servegame.com\0" +"aosta.it\0f\xc3\xb8rde.no\0" +"\xe4\xb8\xad\xe4\xbf\xa1\0" +"kwp.gov.pl\0servebbs.org\0blogsite.xyz\0" +"5.bg\0dvrdns.org\0" +"cc.va.us\0" +"komoro.nagano.jp\0" +"biev\xc3\xa1t.no\0ping\0" +"noticias.bo\0wada.nagano.jp\0j.layershift.co.uk\0" +"isehara.kanagawa.jp\0assassination.museum\0assisi.museum\0" +"publ.pt\0pink\0" +"cesena-forl\xc3\xac.it\0mantova.it\0" +"togakushi.nagano.jp\0family.museum\0" +"kadoma.osaka.jp\0" +"krym.ua\0" +"yawatahama.ehime.jp\0gyokuto.kumamoto.jp\0*.azurecontainer.io\0" +"info\0" +"uki.kumamoto.jp\0" +"bas.it\0minamisanriku.miyagi.jp\0" +"\xe4\xb8\x96\xe7\x95\x8c\0" +"og.ao\0brumunddal.no\0ne.ug\0" +"kred\0" +"ne.tz\0" +"nakagyo.kyoto.jp\0" +"toho.fukuoka.jp\0conf.lv\0" +"obanazawa.yamagata.jp\0" +"kamikoani.akita.jp\0plaza.museum\0lowicz.pl\0ne.us\0" +"baltimore.museum\0" +"servepics.com\0" +"shichinohe.aomori.jp\0dyndns-blog.com\0" +"cc.ri.us\0" +"amakusa.kumamoto.jp\0weir\0" +"national.museum\0" +"takanezawa.tochigi.jp\0" +"hino.tottori.jp\0cherkasy.ua\0wnext.app\0" +"chita.aichi.jp\0" +"minamimaki.nagano.jp\0" +"gjesdal.no\0" +"nagasaki.nagasaki.jp\0ibara.okayama.jp\0" +"saikai.nagasaki.jp\0" +"khmelnitskiy.ua\0firestone\0" +"d.se\0" +"platterp.us\0" +"ba.gov.br\0" +"hikone.shiga.jp\0sa.gov.pl\0\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0" +"tas.gov.au\0nagiso.nagano.jp\0" +"fujisawa.kanagawa.jp\0reserve-online.com\0" +"flowers\0" +"ask\xc3\xb8y.no\0" +"napoli.it\0" +"yoshimi.saitama.jp\0broadcast.museum\0feedback\0" +"yamagata.nagano.jp\0cloudsite.builders\0" +"cbre\0" +"s3-us-east-2.amazonaws.com\0" +"tomioka.gunma.jp\0" +"sciencehistory.museum\0" +"mihara.hiroshima.jp\0is-leet.com\0" +"inc\0" +"wajiki.tokushima.jp\0" +"dev.static.land\0" +"space\0" +"niteroi.br\0setouchi.okayama.jp\0cooking\0ing\0" +"ngrok.io\0" +"ink\0" +"v.bg\0" +"arendal.no\0" +"ro.im\0mein-iserv.de\0tcp4.me\0" +"nissedal.no\0" +"nogata.fukuoka.jp\0takehara.hiroshima.jp\0" +"kafjord.no\0" "int\0" -"suita.osaka.jp\0" -"etnedal.no\0" -"carbonia-iglesias.it\0total\0" -"ina.nagano.jp\0cadaques.museum\0cc.pr.us\0hasura-app.io\0" -"notaires.km\0" -"qsl.br\0chiryu.aichi.jp\0" -"kopervik.no\0" -"porsgrunn.no\0k12.tx.us\0" -"trentinosud-tirol.it\0giske.no\0" -"cc.dc.us\0" -"mashiki.kumamoto.jp\0k12.pa.us\0design\0" -"presse.ml\0narviika.no\0s\xc3\xb8rum.no\0" -"poker\0sk.eu.org\0" -"mytis.ru\0" -"selbu.no\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\0" -"sciencesnaturelles.museum\0datsun\0" -"hasura.app\0" -"newholland\0yolasite.com\0" -"nombre.bo\0strand.no\0" -"for.mom\0" -"kanra.gunma.jp\0" -"yamaguchi.jp\0" -"tsuno.miyazaki.jp\0" -"shintomi.miyazaki.jp\0" -"sakahogi.gifu.jp\0" -"kaho.fukuoka.jp\0haebaru.okinawa.jp\0" -"somna.no\0" -"kuokgroup\0" -"kitakata.miyazaki.jp\0" -"sv.it\0sandnes.no\0" -"pa.it\0" +"ro.it\0e12.ve\0from-wa.com\0" +"pt.eu.org\0" +"control.aero\0discovery.museum\0ssl.origin.cdn77-secure.org\0" +"news\0" +"klepp.no\0" +"gosen.niigata.jp\0" +"freetls.fastly.net\0" +"m\xc3\xa1tta-v\xc3\xa1rjjat.no\0\xe3\x83\x95\xe3\x82\xa1\xe3\x83\x83\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\0" +"ybo.review\0" +"ap-southeast-2.elasticbeanstalk.com\0" +"it1.eur.aruba.jenv-aruba.cloud\0" +"\xe0\xb0\xad\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\xa4\xe0\xb1\x8d\0" +"kiryu.gunma.jp\0" +"next\0hk.org\0" +"ohkura.yamagata.jp\0lib.ms.us\0lib.nc.us\0" +"nirasaki.yamanashi.jp\0hareid.no\0l-o-g-i-n.de\0" +"eu.platform.sh\0" +"vision\0" +"frana.no\0" +"daito.osaka.jp\0selfip.org\0forumz.info\0" +"ryokami.saitama.jp\0" +"gildeskal.no\0paroch.k12.ma.us\0" +"schwarz\0" +"dscloud.me\0" +"myftp.biz\0" +"toda.saitama.jp\0ichiba.tokushima.jp\0pfizer\0" +"drud.io\0" +"modena.it\0og.it\0aogaki.hyogo.jp\0" +"chungbuk.kr\0" +"sh.cn\0" +"charter.aero\0" +"fastly-terrarium.com\0" +"\xe6\xa0\x83\xe6\x9c\xa8.jp\0" +"higashimurayama.tokyo.jp\0" "jcb\0" -"lancashire.museum\0jambyl.su\0" -"a\xc3\xa9roport.ci\0ama.shimane.jp\0eurovision\0from-nm.com\0game-host.org\0" -"trentino-stirol.it\0exeter.museum\0" -"br.it\0cb.it\0" -"sauherad.no\0" -"alto-adige.it\0misato.saitama.jp\0vision\0" -"osasco.br\0" -"usantiques.museum\0" -"es.ax\0" -"higashikagawa.kagawa.jp\0surf\0" -"skedsmo.no\0" -"tananger.no\0evenes.no\0ist\0is-a-financialadvisor.com\0" -"ru.eu.org\0se.eu.org\0" -"dep.no\0" -"skydiving.aero\0" -"nm.cn\0" -"council.aero\0" -"os.hordaland.no\0" -"credit\0cya.gg\0" +"sigdal.no\0" +"r\xc3\xa6lingen.no\0localzone.xyz\0" +"emergency.aero\0" +"krodsherad.no\0" +"sondre-land.no\0wegrow.pl\0" +"nakayama.yamagata.jp\0" +"sanofi\0" +"dynns.com\0" +"uchinada.ishikawa.jp\0" +"ist\0" +"tamatsukuri.ibaraki.jp\0" +"am.gov.br\0" +"\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0" +"scrapper-site.net\0" +"time.no\0" +"fuchu.hiroshima.jp\0\xc3\xa5lg\xc3\xa5rd.no\0family\0here-for-more.info\0" +"kouzushima.tokyo.jp\0\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0" +"aerodrome.aero\0" +"higashichichibu.saitama.jp\0" +"parliament.cy\0zama.kanagawa.jp\0rj.leg.br\0" +"saijo.ehime.jp\0lcube-server.de\0" +"gs.aa.no\0" "itv\0" -"omigawa.chiba.jp\0" -"rsc.cdn77.org\0pantheonsite.io\0" -"suli.hu\0gifu.jp\0" -"tahara.aichi.jp\0" -"nhlfan.net\0" -"*.alces.network\0" -"philadelphiaarea.museum\0cv.ua\0sells-for-u.com\0" -"higashisumiyoshi.osaka.jp\0" -"nagawa.nagano.jp\0" -"barsy.mobi\0" -"conf.lv\0" -"kiyose.tokyo.jp\0" -"press.museum\0" -"hiroshima.jp\0" -"kumiyama.kyoto.jp\0psse.gov.pl\0" -"bialystok.pl\0teva\0" -"lamer\0" -"tagami.niigata.jp\0" -"from-md.com\0" -"kikuchi.kumamoto.jp\0educational.museum\0" -"pulawy.pl\0build\0" -"ent.platform.sh\0" -"s.se\0" -"eniwa.hokkaido.jp\0now-dns.org\0" -"ternopil.ua\0passagens\0" -"\xd9\x87\xd9\x85\xd8\xb1\xd8\xa7\xd9\x87\0" -"north-kazakhstan.su\0" -"hurum.no\0" -"*.oci.customer-oci.com\0" -"natal.br\0" -"poltava.ua\0" -"komae.tokyo.jp\0" -"yukuhashi.fukuoka.jp\0" -"dynamic-dns.info\0" -"baidu\0northwesternmutual\0" -"cat.ax\0" +"\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\0" +"yoshikawa.saitama.jp\0natuurwetenschappen.museum\0nebraska.museum\0" +"m.se\0" +"aeroport.fr\0iijima.nagano.jp\0jcloud-ver-jpc.ik-server.com\0*.cloud.metacentrum.cz\0" +"incheon.kr\0tokyo\0\xe5\xae\xb6\xe9\x9b\xbb\0" +"marylhurst.museum\0perso.sn\0" +"katowice.pl\0" +"\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\0" +"higashikagawa.kagawa.jp\0is-a-bookkeeper.com\0" +"nohost.me\0" +"hatogaya.saitama.jp\0linz.museum\0" +"jan-mayen.no\0" +"tsugaru.aomori.jp\0" +"vall\xc3\xa9""e-aoste.it\0" +"from-tx.com\0" +"perso.tn\0" +"fst.br\0" +"odo.br\0" +"sicilia.it\0ariake.saga.jp\0\xe8\x87\xba\xe7\x81\xa3\0" +"csx.cc\0" +"fujioka.gunma.jp\0telekommunikation.museum\0" +"grandrapids.museum\0" +"konin.pl\0" +"kamikitayama.nara.jp\0" +"taketomi.okinawa.jp\0" +"shichikashuku.miyagi.jp\0" +"capebreton.museum\0" +"securitytactics.com\0" +"satte.saitama.jp\0jdevcloud.com\0" +"dscloud.biz\0" +"cranbrook.museum\0balestrand.no\0snasa.no\0" +"omachi.saga.jp\0jio\0" +"tbits.me\0" +"loten.no\0fedorapeople.org\0" +"tran\xc3\xb8y.no\0church\0" +"aquila.it\0" +"ap.gov.br\0lib.oh.us\0" +"plants.museum\0" +"showa.fukushima.jp\0shintomi.miyazaki.jp\0df.leg.br\0" +"wiki.bo\0arts.co\0wakasa.tottori.jp\0" +"ookuwa.nagano.jp\0" +"wiki.br\0" +"leitungsen.de\0" +"azumino.nagano.jp\0suwalki.pl\0" +"curitiba.br\0" +"georgia.museum\0" +"zoological.museum\0" +"cieszyn.pl\0mycd.eu\0" +"hita.oita.jp\0" +"fujishiro.ibaraki.jp\0minami.kyoto.jp\0" +"medizinhistorisches.museum\0" +"iiyama.nagano.jp\0" +"ap.gov.pl\0" +"lab.ms\0" +"ikeda.hokkaido.jp\0cv.ua\0" +"matsuura.nagasaki.jp\0jll\0" +"aostavalley.it\0norddal.no\0" +"emr.it\0nationalheritage.museum\0" +"kita.osaka.jp\0*.cns.joyent.com\0" +"m\xc3\xa1latvuopmi.no\0" +"omiya.saitama.jp\0" +"oksnes.no\0" +"nishikatsura.yamanashi.jp\0" +"jmp\0" +"fuel.aero\0" +"lib.va.us\0" +"xen.prgmr.com\0" +"community\0" +"jnj\0drud.us\0" +"ag.it\0" +"yokaichiba.chiba.jp\0" +"genova.it\0" +"katano.osaka.jp\0drive\0" +"rns.tn\0" +"jc.neen.it\0" +"localhistory.museum\0" +"asn.au\0hisayama.fukuoka.jp\0" +"internet-dns.de\0north-kazakhstan.su\0" +"shirataka.yamagata.jp\0" +"\xe5\xb3\xb6\xe6\xa0\xb9.jp\0yuzawa.niigata.jp\0" +"toba.mie.jp\0hirogawa.wakayama.jp\0" +"dinosaur.museum\0" +"british.museum\0jot\0" +"neko.am\0" +"s3.eu-central-1.amazonaws.com\0*.dapps.earth\0" +"otsuki.yamanashi.jp\0berlin.museum\0pomorskie.pl\0" +"joy\0" +"miyako.fukuoka.jp\0ninomiya.kanagawa.jp\0lebesby.no\0" +"dyr\xc3\xb8y.no\0" +"sakae.nagano.jp\0touch.museum\0lublin.pl\0" +"nagato.yamaguchi.jp\0" +"firewall-gateway.de\0" +"tonosho.kagawa.jp\0grue.no\0" +"firewall-gateway.com\0" +"nanbu.yamanashi.jp\0hdfcbank\0" +"v.ua\0" +"kiyosato.hokkaido.jp\0" +"tuscany.it\0mugi.tokushima.jp\0tromsa.no\0" +"nanporo.hokkaido.jp\0showa.yamanashi.jp\0" +"shimoichi.nara.jp\0okinawa.okinawa.jp\0school.na\0" +"lel.br\0" +"linkyard.cloud\0" +"imabari.ehime.jp\0fhs.no\0" +"minamiawaji.hyogo.jp\0" +"commune.am\0" +"hashima.gifu.jp\0toyako.hokkaido.jp\0uscountryestate.museum\0tourism.tn\0" "mochizuki.nagano.jp\0" -"repbody.aero\0jio\0" -"\xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\0nordeste-idc.saveincloud.net\0" -"timekeeping.museum\0verran.no\0iopsys.se\0" -"trentino-a-adige.it\0shimonoseki.yamaguchi.jp\0" -"bhz.br\0doctor\0" -"api.stdlib.com\0" -"archaeological.museum\0" -"higashiomi.shiga.jp\0" -"app.br\0skj\xc3\xa5k.no\0visa\0pubtls.org\0" -"ce.gov.br\0!city.kawasaki.jp\0" -"nanao.ishikawa.jp\0ninja\0" -"\xe0\xaa\xad\xe0\xaa\xbe\xe0\xaa\xb0\xe0\xaa\xa4\0" -"zakopane.pl\0" -"bike\0us.ax\0" -"children.museum\0" -"fc.it\0l\xc3\xa6rdal.no\0" -"id.au\0an.it\0otari.nagano.jp\0" -"piedmont.it\0" -"flesberg.no\0tashkent.su\0al.leg.br\0" -"dentist\0" -"group.aero\0" -"\xe9\x9b\x86\xe5\x9b\xa2\0ilovecollege.info\0" -"jll\0" -"sa.edu.au\0" -"marugame.kagawa.jp\0v\xc3\xa5gan.no\0" -"horonobe.hokkaido.jp\0" -"yonaguni.okinawa.jp\0" -"incheon.kr\0rost.no\0" -"\xe5\xa5\x88\xe8\x89\xaf.jp\0" -"katano.osaka.jp\0" -"vet.br\0" -"dali.museum\0" -"trentinsudtirol.it\0" -"school.museum\0" -"es.kr\0game.tw\0" -"jab.br\0skodje.no\0" -"siena.it\0fentiger.mythic-beasts.com\0" -"jmp\0viva\0" -"a.prod.fastly.net\0" -"santacruz.museum\0" -"university.museum\0" -"hakone.kanagawa.jp\0" -"ac\0kharkov.ua\0jnj\0homeoffice.gov.uk\0" -"ad\0bing\0" -"ae\0jevnaker.no\0" -"accident-investigation.aero\0af\0saitama.saitama.jp\0" -"ag\0vivo\0" -"togane.chiba.jp\0" -"ai\0pa.us\0" -"alp1.ae.flow.ch\0" -"westeurope.azurestaticapps.net\0" -"al\0" -"am\0obanazawa.yamagata.jp\0report\0forgot.her.name\0" -"ao\0kurotaki.nara.jp\0" +"ta.it\0trade\0" +"sugito.saitama.jp\0" +"stadt.museum\0" +"iwama.ibaraki.jp\0" +"gs.st.no\0is-a-anarchist.com\0" +"school.nz\0" +"nordre-land.no\0\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0appspaceusercontent.com\0a.ssl.fastly.net\0" +"chungnam.kr\0" +"aremark.no\0" +"takarazuka.hyogo.jp\0gdynia.pl\0" +"takahata.yamagata.jp\0voss.no\0" +"mo-siemens.io\0" +"kamisu.ibaraki.jp\0theater.museum\0" +"dyn.cosidns.de\0" +"sopot.pl\0" +"xfinity\0from-pr.com\0" +"trentino-aadige.it\0" +"sula.no\0" +"nextdirect\0cloud66.zone\0" +"arts.ve\0rr.leg.br\0" +"trana.no\0uy.com\0" +"tmp.br\0hakata.fukuoka.jp\0" +"psc.br\0" +"pi.it\0" +"matsuda.kanagawa.jp\0" +"tj.cn\0oslo.no\0" +"fra1-de.cloudjiffy.net\0" +"venice.it\0" +"kfh\0" +"latrobe\0" +"lima-city.de\0" +"sorocaba.br\0balashov.su\0" +"anthropology.museum\0impertrixcdn.com\0rs.leg.br\0sc.leg.br\0" +"windows\0" +"aprendemas.cl\0" +"lib.ky.us\0is-into-cars.com\0" +"vestby.no\0pymnt.uk\0" +"fuji.shizuoka.jp\0" +"naples.it\0" +"kamikawa.hyogo.jp\0" +"vibovalentia.it\0" +"oy.lc\0" +"kagami.kochi.jp\0kuroiso.tochigi.jp\0" +"rankoshi.hokkaido.jp\0yuasa.wakayama.jp\0" +"algard.no\0dielddanuorri.no\0" +"communication.museum\0" +"oldnavy\0" +"ap.it\0*.sapporo.jp\0" +"podhale.pl\0miami\0" +"otago.museum\0" +"kaita.hiroshima.jp\0lima-city.at\0" +"bradesco\0" +"gifu.gifu.jp\0" +"toscana.it\0omaha.museum\0" +"vikna.no\0" +"garden.museum\0geelvinck.museum\0nittedal.no\0" +"kitanakagusuku.okinawa.jp\0kia\0" +"evenes.no\0" +"s3.dualstack.ap-northeast-2.amazonaws.com\0" +"oceanographique.museum\0" +"arts.ro\0" +"randaberg.no\0kim\0" +"ac\0" +"ad\0tenri.nara.jp\0lima-city.ch\0" +"ae\0bryne.no\0" +"af\0" +"ag\0\xc3\xa5s.no\0" +"ai\0" +"asn.lv\0americanfamily\0" +"al\0akkeshi.hokkaido.jp\0konan.shiga.jp\0" +"am\0hotel.tz\0mmafan.biz\0" +"\xe7\xa6\x8f\xe5\xb3\xb6.jp\0ashoro.hokkaido.jp\0" +"ao\0" +"katsushika.tokyo.jp\0" "aq\0ba\0" "ar\0bb\0" -"as\0amot.no\0" -"at\0yaese.okinawa.jp\0" -"au\0be\0" -"bf\0miners.museum\0cc.vt.us\0" -"aw\0bg\0app.gp\0" +"as\0fbx-os.fr\0" +"at\0" +"au\0be\0date.fukushima.jp\0is-a-conservative.com\0" +"bf\0" +"aw\0bg\0eisenbahn.museum\0" "ax\0bh\0" -"bi\0sejny.pl\0" -"az\0bj\0*.landing.myjino.ru\0" -"cc.nj.us\0mydissent.net\0" -"bm\0jot\0cn.eu.org\0" -"bn\0walbrzych.pl\0" -"bo\0botanicalgarden.museum\0" -"daplie.me\0" -"ca\0" -"br\0joy\0" -"bs\0cc\0hk.com\0" +"bi\0artgallery.museum\0k12.vi.us\0" +"az\0bj\0" +"bm\0" +"bn\0" +"bo\0" +"ca\0wi.us\0" +"br\0" +"bs\0cc\0eniwa.hokkaido.jp\0" "bt\0cd\0" -"7.bg\0shirako.chiba.jp\0biratori.hokkaido.jp\0tabayama.yamanashi.jp\0nittedal.no\0cc.ak.us\0" "bv\0cf\0" -"bw\0cg\0b\xc3\xa1hcavuotna.no\0l\xc3\xb8""dingen.no\0" -"ch\0yamamoto.miyagi.jp\0" -"by\0ci\0" -"bz\0" -"cl\0friuli-ve-giulia.it\0" -"cm\0blogsyte.com\0" -"cn\0" +"bw\0cg\0netflix\0room\0" +"ch\0" +"by\0ci\0\xc3\xb8rsta.no\0" +"bz\0kira.aichi.jp\0aurskog-h\xc3\xb8land.no\0" +"cl\0play\0read-books.org\0" +"cm\0state.museum\0monash\0" +"cn\0gleeze.com\0fastvps.site\0" "co\0" -"pictet\0" -"cr\0" -"s\xc3\xa1l\xc3\xa1t.no\0" -"cu\0de\0sakegawa.yamagata.jp\0science-fiction.museum\0sirdal.no\0" -"cv\0" -"cw\0kitaaiki.nagano.jp\0" -"cx\0kakamigahara.gifu.jp\0" -"cy\0" -"cz\0dj\0kwp.gov.pl\0trafficplex.cloud\0" -"dk\0fukushima.jp\0" -"dm\0" -"oketo.hokkaido.jp\0solund.no\0" -"show.aero\0do\0meiwa.mie.jp\0" -"kumano.hiroshima.jp\0" -"ec\0crd.co\0" -"teshikaga.hokkaido.jp\0" -"ee\0" -"liguria.it\0" +"cr\0bari.it\0" +"clock.museum\0" +"gs.tm.no\0" +"cu\0de\0nesodden.no\0\xe0\xb4\xad\xe0\xb4\xbe\xe0\xb4\xb0\xe0\xb4\xa4\xe0\xb4\x82\0" +"cv\0geek.nz\0rn.leg.br\0" +"cw\0arts.nf\0flynnhosting.net\0" +"cx\0towada.aomori.jp\0" +"cy\0ubank\0" +"cz\0dj\0leirvik.no\0" +"dk\0" +"higashiyama.kyoto.jp\0" +"dm\0baidar.no\0" +"copenhagen.museum\0hosp.uk\0" +"do\0hikimi.shimane.jp\0" +"onjuku.chiba.jp\0chino.nagano.jp\0" +"cbg.ru\0" +"ec\0" +"skanland.no\0" +"ee\0cc.as.us\0*.moonscale.io\0" +"zoology.museum\0" "eg\0" -"is-saved.org\0" +"kawanabe.kagoshima.jp\0computerhistory.museum\0nfshost.com\0" +"chitose.hokkaido.jp\0" "dz\0" -"hemne.no\0" -"tempio-olbia.it\0" -"vc.it\0sabae.fukui.jp\0" -"vall\xc3\xa9""eaoste.it\0iserv.dev\0" -"livorno.it\0lib.me.us\0statebank\0" -"stcgroup\0" -"es\0krellian.net\0" -"et\0mi.it\0tsubata.ishikawa.jp\0" -"eu\0id.ir\0bergbau.museum\0" -"oz.au\0lib.co.us\0" -"watches\0" -"fi\0fireweb.app\0" -"fj\0" -"fm\0" -"gran.no\0" -"fo\0palermo.it\0marker.no\0" -"gon.pk\0" -"ga\0us.kg\0" +"ouda.nara.jp\0schokoladen.museum\0" +"\xd9\x85\xd9\x88\xd9\x82\xd8\xb9\0" +"cc.md.us\0" +"tourism.pl\0" +"auto.pl\0" +"ozora.hokkaido.jp\0" +"es\0otsuka\0" +"et\0" +"eu\0" +"r\xc3\xb8ros.no\0ro.leg.br\0" +"inuyama.aichi.jp\0gon.pk\0" +"mydatto.com\0" +"fi\0komaki.aichi.jp\0" +"fj\0fet.no\0" +"fm\0crown\0" +"fo\0" +"pr.it\0" +"ga\0nexus\0" "fr\0gb\0" -"gd\0vao.it\0vxl.sh\0" -"ge\0online.museum\0" -"gf\0myravendb.com\0" -"gg\0" +"semboku.akita.jp\0" +"gd\0" +"ge\0\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa7\0members.linode.com\0" +"gf\0" +"gg\0vaksdal.no\0\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa9\0" "gh\0" -"gi\0" -"yurihonjo.akita.jp\0" +"gi\0narashino.chiba.jp\0" +"silk.museum\0" +"hadano.kanagawa.jp\0" "gl\0" -"gm\0" -"gn\0ono.fukui.jp\0" -"gp\0" -"gq\0onfabrica.com\0" +"gm\0tsurugi.ishikawa.jp\0" +"gn\0" +"pvt.ge\0gp\0" +"gq\0" "gr\0" -"gs\0museumcenter.museum\0" +"gs\0pharmaciens.km\0kpn\0" "gt\0" -"gu\0jamison.museum\0" -"gw\0" -"balsan-s\xc3\xbc""dtirol.it\0" -"gy\0sb.ua\0" -"midatlantic.museum\0portal.museum\0" -"presse.ci\0hk\0ogimi.okinawa.jp\0" -"ibaraki.osaka.jp\0reviews\0" -"hm\0anamizu.ishikawa.jp\0cy.eu.org\0" -"hn\0" -"settlement.museum\0" -"kfh\0" +"gu\0" +"nationalfirearms.museum\0" +"gw\0dattorelay.com\0" +"gy\0" +"kitchen\0" +"hk\0k12.ny.us\0" +"hm\0red.sv\0" +"hn\0!city.sendai.jp\0shikokuchuo.ehime.jp\0hotel.lk\0" +"cc.il.us\0" +"filegear-sg.me\0" +"recht.pro\0uk.com\0" "hr\0" -"airport.aero\0" -"ht\0id\0" -"crew.aero\0hu\0ie\0freetls.fastly.net\0" -"eu.int\0" -"id.lv\0" -"plo.ps\0" -"us.na\0storage\0" -"il\0id.ly\0" -"im\0shinyoshitomi.fukuoka.jp\0asahi.nagano.jp\0paris.museum\0" -"in\0nm.us\0" -"io\0iwakura.aichi.jp\0" -"iq\0bashkiria.ru\0" +"amscompute.com\0" +"tur.ar\0ht\0id\0" +"hu\0ie\0" +"juniper\0" +"bi.it\0nyc.museum\0" +"krd\0lat\0git-pages.rit.edu\0" +"ap-northeast-3.elasticbeanstalk.com\0" +"il\0law\0\xd0\xba\xd0\xbe\xd0\xbc\0" +"fj.cn\0im\0" +"in\0edogawa.tokyo.jp\0" +"io\0gmbh\0pythonanywhere.com\0" +"iq\0\xc3\xa5lesund.no\0" "ir\0" "is\0" -"it\0" +"tur.br\0it\0" "je\0" -"os\xc3\xb8yro.no\0" -"chikujo.fukuoka.jp\0mugi.tokushima.jp\0newyork.museum\0" -"democrat\0fbxos.fr\0" -"etne.no\0ieee\0" -"cz.eu.org\0" -"jo\0historicalsociety.museum\0bar.pro\0" +"nativeamerican.museum\0" +"yasu.shiga.jp\0" +"potenza.it\0ono.fukushima.jp\0" +"gotdns.org\0" +"jeonnam.kr\0oregontrail.museum\0" +"jo\0" "jp\0" -"bashkiria.su\0" -"kaneyama.yamagata.jp\0" -"naturalhistorymuseum.museum\0" -"cc.ia.us\0fairwinds\0" +"\xe6\x84\x9b\xe5\xaa\x9b.jp\0travel\0" +"fukuyama.hiroshima.jp\0sdscloud.pl\0" +"olsztyn.pl\0" +"umb.it\0taipei\0" "ke\0" -"h.bg\0beppu.oita.jp\0kg\0is-into-games.com\0" -"crown\0" +"kg\0" +"barsy.club\0""32-b.it\0" "ki\0" -"kia\0" -"tsuruta.aomori.jp\0bradesco\0" -"km\0" -"kn\0jls-sto3.elastx.net\0" -"abeno.osaka.jp\0" -"kp\0blackfriday\0" -"miyakonojo.miyazaki.jp\0la\0k12.dc.us\0" -"nic.in\0kr\0lb\0stryn.no\0gliwice.pl\0" -"lc\0iki.fi\0to.gt\0" -"phoenix.museum\0" -"museum\0ru.com\0" -"newhampshire.museum\0kim\0" -"ogawara.miyagi.jp\0kw\0lucerne.museum\0" -"game\0" -"ky\0li\0alwaysdata.net\0" -"kz\0" -"lk\0nord-aurdal.no\0" -"badajoz.museum\0gloppen.no\0dk.eu.org\0" -"alsace\0selfip.biz\0\xd0\xba\xd0\xbe\xd0\xbc.\xd1\x80\xd1\x83\xd1\x81\0" -"ma\0center\0" -"lr\0heimatunduhren.museum\0" -"ls\0mc\0" +"noboribetsu.hokkaido.jp\0syncloud.it\0" +"trentins\xc3\xbc""d-tirol.it\0" +"geo.br\0minamifurano.hokkaido.jp\0km\0" +"kn\0" +"kp\0" +"\xe7\xbe\xa4\xe9\xa6\xac.jp\0la\0madrid\0staging.onred.one\0" +"kr\0lb\0" +"kunigami.okinawa.jp\0lc\0" +"ma.us\0" +"tromso.no\0mydobiss.com\0" +"cci.fr\0tra.kp\0kw\0textile.museum\0" +"kiso.nagano.jp\0lds\0" +"ky\0li\0build\0" +"des.br\0kz\0gaivuotna.no\0novecore.site\0" +"lk\0" +"temasek\0" +"\xe9\x9d\x99\xe5\xb2\xa1.jp\0preservation.museum\0" +"ma\0" +"lr\0" +"ls\0mc\0r\xc3\xa1hkker\xc3\xa1vju.no\0" "lt\0md\0" -"lu\0me\0" +"lu\0me\0podlasie.pl\0homesecuritypc.com\0" "lv\0" -"mg\0uw.gov.pl\0smushcdn.com\0" -"notaires.fr\0shikatsu.aichi.jp\0mh\0" -"ly\0sucks\0" -"mk\0" -"ml\0tree.museum\0" -"open\0" -"mn\0santafe.museum\0filegear-ie.me\0" -"iwaizumi.iwate.jp\0mo\0sm\xc3\xb8la.no\0\xd8\xa8\xd9\x8a\xd8\xaa\xd9\x83\0" -"fukuoka.jp\0kamiichi.toyama.jp\0mp\0" -"mq\0na\0" +"kawajima.saitama.jp\0mg\0dallas.museum\0" +"hotel.hu\0mh\0" +"ly\0naturalhistory.museum\0" +"ts.it\0plc.ly\0mk\0" +"ml\0" +"mn\0" +"mo\0" +"mp\0" +"gliding.aero\0taishi.hyogo.jp\0mq\0na\0" "mr\0" -"to.it\0ms\0bilbao.museum\0nc\0lib.or.us\0" -"kanazawa.ishikawa.jp\0mt\0instantcloud.cn\0" -"minoh.osaka.jp\0kitayama.wakayama.jp\0mu\0ne\0" -"mv\0nf\0vossevangen.no\0lib.ky.us\0" -"mw\0ng\0" -"mx\0" -"le.it\0my\0ni\0" -"mz\0" -"v\xc3\xa5ler.hedmark.no\0" -"nl\0x.mythic-beasts.com\0" -"azumino.nagano.jp\0savannahga.museum\0" +"minobu.yamanashi.jp\0ms\0anthro.museum\0nc\0augustow.pl\0" +"mt\0hashbang.sh\0" +"mu\0ne\0gs.oslo.no\0" +"mv\0nf\0" +"mw\0ng\0\xe8\xb4\xad\xe7\x89\xa9\0" +"barreau.bj\0mx\0sklep.pl\0" +"my\0ni\0" +"kiyokawa.kanagawa.jp\0mz\0b\xc3\xa1jddar.no\0" +"nl\0" +"mibu.tochigi.jp\0partners\0" +"opensocial.site\0" "no\0" -"s3-eu-west-2.amazonaws.com\0us.org\0" -"trading.aero\0" "nr\0" -"leg.br\0servebeer.com\0" -"sk.ca\0nu\0gdansk.pl\0" -"communication.museum\0" -"in-vpn.de\0" -"app.os.fedoraproject.org\0" -"nz\0mincom.tn\0locus\0" -"from-nv.com\0" -"snillfjord.no\0" -"om\0" -"of.by\0" -"voagat.no\0pa\0" -"krager\xc3\xb8.no\0" -"dental\0" -"pe\0" -"pf\0" -"murmansk.su\0" -"ph\0mi.th\0" -"kasai.hyogo.jp\0" -"ishikawa.fukushima.jp\0pk\0" -"niihama.ehime.jp\0pl\0" -"pm\0de.eu.org\0" -"pn\0" +"ami.ibaraki.jp\0" +"nu\0" +"\xc3\xb8rskog.no\0" +"travel.pl\0" +"nz\0" +"scienceandindustry.museum\0" +"hachinohe.aomori.jp\0om\0" +"western.museum\0" +"pa\0" +"b.bg\0money\0" +"pe\0*.vps.myjino.ru\0" +"kurogi.fukuoka.jp\0pf\0" +"s3-website-ap-southeast-2.amazonaws.com\0" +"vgs.no\0gs.fm.no\0ph\0redumbrella\0static.observableusercontent.com\0" +"shimoda.shizuoka.jp\0uzs.gov.pl\0vodka\0" +"cheltenham.museum\0pk\0foundation\0" +"pl\0" +"b.br\0taki.mie.jp\0pm\0" +"\xe9\xab\x98\xe7\x9f\xa5.jp\0pn\0" +"rybnik.pl\0" "qa\0" -"pr\0" -"ps\0to.md\0" +"pr\0kilatiron.com\0" +"ps\0selfip.biz\0" "pt\0" -"aeroport.fr\0bungoono.oita.jp\0fishing\0istmein.de\0" -"sakai.ibaraki.jp\0ine.kyoto.jp\0" -"pw\0" +"vercelli.it\0sue.fukuoka.jp\0ikeda.osaka.jp\0" +"kin.okinawa.jp\0pw\0" "py\0" -"go.gov.br\0security\0" -"bahn.museum\0" -"actor\0" -"teramo.it\0ishikawa.jp\0" -"osakasayama.osaka.jp\0" -"valledaosta.it\0" -"edu.ac\0" -"mi.us\0" -"edu.af\0re\0" -"molise.it\0id.us\0for.one\0" -"allstate\0yokohama\0" -"gallo\0" -"natural.bo\0football\0" -"edu.al\0*.on-rancher.cloud\0" -"yonabaru.okinawa.jp\0" -"ro\0remotewd.com\0" -"edu.ba\0" -"edu.ar\0edu.bb\0sa\0karacol.su\0" -"sb\0" -"rs\0sc\0copro.uk\0" -"edu.au\0sd\0\xd7\xa7\xd7\x95\xd7\x9d\0" -"ru\0se\0wales\0nh-serv.co.uk\0" -"edu.bh\0rw\0sg\0kpn\0zsew.ru\0" -"edu.bi\0sh\0tours\0" -"edu.az\0turystyka.pl\0si\0" -"loyalist.museum\0sj\0" -"sk\0" -"edu.bm\0sl\0" -"edu.bn\0campidano-medio.it\0sm\0" -"edu.bo\0abiko.chiba.jp\0sn\0" -"so\0" -"edu.br\0" -"edu.bs\0sr\0from-ar.com\0" -"edu.bt\0ss\0tc\0" -"ulvik.no\0st\0td\0" -"su\0" -"narita.chiba.jp\0lubin.pl\0sv\0tf\0\xeb\x8b\xb7\xec\xbb\xb4\0" -"tg\0" -"edu.ci\0lakas.hu\0hamatonbetsu.hokkaido.jp\0judaica.museum\0sx\0th\0free\0" -"edu.bz\0sy\0" -"mil.ac\0sz\0tj\0" -"tk\0" -"mil.ae\0tl\0" -"edu.cn\0tozsde.hu\0tm\0krd\0lat\0" -"edu.co\0tn\0" -"oizumi.gunma.jp\0to\0" -"law\0" -"ua\0" -"tomika.gifu.jp\0tr\0" -"mil.al\0" -"edu.cu\0tt\0drive\0" -"per.la\0" -"edu.cw\0tv\0" -"tw\0ug\0" -"mil.ba\0" -"mil.ar\0" -"tz\0vuelos\0" -"uk\0" -"exchange.aero\0edu.dm\0shizukuishi.iwate.jp\0\xd9\x85\xd9\x88\xd9\x82\xd8\xb9\0s3.dualstack.us-east-1.amazonaws.com\0" -"mashike.hokkaido.jp\0is-a-cubicle-slave.com\0githubusercontent.com\0" -"edu.do\0nishi.fukuoka.jp\0" -"mil.az\0va\0" -"edu.ec\0user.aseinet.ne.jp\0" -"kira.aichi.jp\0detroit.museum\0us\0vc\0" -"edu.ee\0dedyn.io\0" -"lib.sc.us\0ve\0" -"mil.bo\0edu.eg\0tarui.gifu.jp\0" +"kawanishi.nara.jp\0" +"sodegaura.chiba.jp\0" +"edu.ac\0sdn.gov.pl\0android\0" +"agro.bo\0surrey.museum\0" +"edu.af\0" +"noda.chiba.jp\0" +"re\0" +"se.leg.br\0" +"yachiyo.ibaraki.jp\0hu.com\0" +"edu.al\0pioneer\0" +"genoa.it\0" +"nico\0" +"gc.ca\0" +"edu.ba\0agrar.hu\0" +"edu.ar\0edu.bb\0" +"sologne.museum\0ro\0pr.us\0" +"*.bd\0nagatoro.saitama.jp\0" +"edu.au\0sa\0" +"yashio.saitama.jp\0sb\0aarp\0" +"rs\0sc\0golffan.us\0" +"edu.bh\0br.it\0cb.it\0mutsuzawa.chiba.jp\0sd\0\xd0\xbe\xd0\xb4.\xd1\x81\xd1\x80\xd0\xb1\0" +"edu.bi\0ru\0se\0" +"edu.az\0" +"rw\0sg\0cloudapps.digital\0" +"katsuura.chiba.jp\0sh\0llc\0" +"edu.bm\0gs.bu.no\0si\0" +"edu.bn\0sj\0" +"edu.bo\0sk\0" +"sl\0barefoot\0" +"ms.it\0sm\0" +"edu.br\0sn\0" +"edu.bs\0so\0" +"edu.bt\0j\xc3\xb8rpeland.no\0" +"travel.tt\0" +"sr\0" +"ss\0tc\0" +"st\0td\0lego\0" +"edu.ci\0su\0llp\0adobeaemcloud.com\0" +"edu.bz\0sv\0tf\0" +"*.ck\0tg\0" +"sx\0th\0" +"sy\0" +"edu.cn\0sz\0tj\0" +"edu.co\0tk\0servebbs.com\0" +"tl\0" +"malatvuopmi.no\0tm\0weather\0" +"ichikawamisato.yamanashi.jp\0tvedestrand.no\0tn\0" +"to\0s3-us-gov-west-1.amazonaws.com\0" +"trentin-suedtirol.it\0ina.ibaraki.jp\0" +"edu.cu\0iyo.ehime.jp\0ua\0blogspot.co.at\0" +"tr\0wanggou\0" +"edu.cw\0onojo.fukuoka.jp\0simple-url.com\0" +"sakae.chiba.jp\0tt\0" +"tv\0" +"tw\0ug\0cern\0" +"inatsuki.fukuoka.jp\0" +"edu.dm\0" +"tz\0" +"edu.do\0ms.kr\0uk\0" +"yachiyo.chiba.jp\0iida.nagano.jp\0" +"plc.uk\0farmers\0" +"ibaraki.ibaraki.jp\0" +"edu.ec\0honjo.saitama.jp\0" +"edu.ee\0va\0" +"edu.eg\0us\0vc\0" +"ve\0" +"nl.ca\0edu.dz\0" "vg\0" -"lib.nv.us\0school\0" -"mil.br\0edu.dz\0uy\0vi\0" -"ac.ae\0uz\0tiffany\0service.gov.uk\0" -"of.je\0" -"valer.ostfold.no\0" -"karasuyama.tochigi.jp\0nic.tj\0vn\0" -"uvic.museum\0" -"mil.by\0osteroy.no\0rybnik.pl\0" -"edu.es\0" -"mil.cl\0edu.et\0" -"bg.it\0ngo.lk\0" -"mil.cn\0vu\0" -"mil.co\0wf\0" -"globo\0" -"ac.at\0" -"ac.be\0per.nf\0*.on-k3s.io\0" -"nyc.mn\0" -"edu.fm\0lds\0" -"nb.ca\0" -"naturalhistory.museum\0" -"nhs.uk\0" -"agematsu.nagano.jp\0kazimierz-dolny.pl\0" -"edu.gd\0ws\0servepics.com\0" -"edu.ge\0" -"mil.do\0" +"dnsking.ch\0" +"urn.arpa\0namegawa.saitama.jp\0uy\0vi\0" +"uz\0" +"gjerstad.no\0" +"pl.eu.org\0navoi.su\0" +"*.er\0vn\0intuit\0nl.ci\0" +"edu.es\0google\0" +"edu.et\0fermo.it\0bato.tochigi.jp\0game-host.org\0" +"lol\0" +"govt.nz\0br.com\0" +"vu\0s3.dualstack.ap-south-1.amazonaws.com\0" +"daejeon.kr\0wf\0plus\0" +"*.fk\0anan.tokushima.jp\0investments\0" +"edu.fm\0systems\0" +"nagareyama.chiba.jp\0" +"shiiba.miyazaki.jp\0afamilycompany\0" +"ba.leg.br\0" +"edu.gd\0samegawa.fukushima.jp\0psp.gov.pl\0" +"edu.ge\0salzburg.museum\0lpl\0" +"ws\0" "edu.gh\0" "edu.gi\0" -"tysfjord.no\0" -"mil.ec\0kawaminami.miyazaki.jp\0" +"tube\0" +"royrvik.no\0" "edu.gl\0" -"edu.gn\0ca.eu.org\0" -"ac.ci\0mil.eg\0" +"k12.il.us\0" +"edu.gn\0" +"tank.museum\0" "edu.gp\0" -"ngo.ng\0" +"airtraffic.aero\0s3.us-east-2.amazonaws.com\0" "edu.gr\0" -"trust.museum\0" -"ac.cn\0edu.gt\0" +"edu.gt\0zhytomyr.ua\0" "edu.gu\0" -"ye\0virtueeldomein.nl\0" -"ac.cr\0essex.museum\0bykle.no\0" -"edu.gy\0lifestyle\0" +"man\0mel.cloudlets.com.au\0" +"edu.gy\0gateway.museum\0ye\0map\0vlaanderen\0" +"mba\0quest\0" "edu.hk\0" -"gunma.jp\0" -"nakadomari.aomori.jp\0sagae.yamagata.jp\0ck.ua\0" -"edu.hn\0monza-e-della-brianza.it\0gbiz\0" -"ac.cy\0mel\xc3\xb8y.no\0porsanger.no\0from-az.net\0" -"mil.fj\0selfip.com\0" -"edu.ht\0" -"yt\0" -"lab.ms\0us.platform.sh\0" -"yamada.iwate.jp\0" -"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0" -"obihiro.hokkaido.jp\0" -"mil.ge\0" -"edu.in\0zm\0" -"texas.museum\0" -"mil.gh\0bushey.museum\0app.render.com\0" -"edu.iq\0kusatsu.gunma.jp\0" -"ngo.ph\0adobeaemcloud.net\0" -"edu.is\0singles\0" +"nozawaonsen.nagano.jp\0miyake.nara.jp\0" +"edu.hn\0" +"kiho.mie.jp\0architecture.museum\0" +"donetsk.ua\0" +"int.ar\0k.bg\0granvin.no\0" +"safe\0" +"edu.ht\0dyndns-at-work.com\0" +"nike\0" +"comunica\xc3\xa7\xc3\xb5""es.museum\0yt\0" +"tselinograd.su\0" +"int.az\0" +"kasaoka.okayama.jp\0" +"saitama.saitama.jp\0" +"edu.in\0" +"int.bo\0bizen.okayama.jp\0" +"s3-sa-east-1.amazonaws.com\0" +"edu.iq\0zm\0" +"hockey\0" +"edu.is\0from-fl.com\0hopto.org\0" "edu.it\0" -"supply\0" -"rennesoy.no\0" -"of.no\0" +"int.ci\0surgery\0" +"bhz.br\0" "zw\0" -"hachirogata.akita.jp\0nakamichi.yamanashi.jp\0" -"mibu.tochigi.jp\0bar2.net\0" -"furano.hokkaido.jp\0" -"mil.gt\0" -"games\0" -"edu.jo\0" -"ac.fj\0" -"ichinomiya.aichi.jp\0rahkkeravju.no\0health\0" -"yugawa.fukushima.jp\0tokushima.tokushima.jp\0" -"mil.hn\0h.se\0nic.za\0" -"edu.kg\0jefferson.museum\0" -"name.hr\0edu.ki\0" -"cesena-forli.it\0ferrari\0" -"mil.id\0ooshika.nagano.jp\0per.sg\0nflfan.org\0" -"edu.km\0paroch.k12.ma.us\0bnpparibas\0" -"\xe5\xa4\xa7\xe9\x98\xaa.jp\0edu.kn\0" -"podhale.pl\0finance\0marine.ru\0" -"shingu.wakayama.jp\0edu.kp\0" -"edu.la\0winb.gov.pl\0sp.leg.br\0" -"edu.lb\0eu-4.evennode.com\0" -"edu.lc\0ens.tn\0" -"ac.gn\0\xd8\xa8\xd8\xa7\xd8\xb1\xd8\xaa\0docs\0" -"mil.in\0servegame.com\0" -"edu.kw\0" -"taiki.hokkaido.jp\0" -"mil.iq\0edu.ky\0" -"tomakomai.hokkaido.jp\0edu.kz\0gleeze.com\0" -"name.et\0edu.lk\0" -"sodegaura.chiba.jp\0" -"name.fj\0karumai.iwate.jp\0" -"bmd.br\0edu.lr\0dst.mi.us\0isteingeek.de\0" -"edu.ls\0\xe5\x95\x86\xe6\xa0\x87\0" -"edu.me\0" -"\xe5\xb1\xb1\xe5\xbd\xa2.jp\0inami.wakayama.jp\0edu.lv\0" -"mil.jo\0edu.mg\0lima-city.rocks\0" -"munakata.fukuoka.jp\0\xd1\x81\xd0\xbe\xd1\x87\xd0\xb8.\xd1\x80\xd1\x83\xd1\x81\0" -"edu.ly\0kvinesdal.no\0" -"ac.id\0" -"edu.mk\0" -"edu.ml\0" -"taketa.oita.jp\0nikko.tochigi.jp\0llc\0" -"rg.it\0edu.mn\0lib.nj.us\0cisco\0cd.eu.org\0" -"ibaraki.ibaraki.jp\0mil.kg\0edu.mo\0" -"lib.ia.us\0google\0" -"ac.il\0markets\0" -"ac.im\0ukiha.fukuoka.jp\0gamo.shiga.jp\0edu.ms\0" -"ac.in\0bulsan-s\xc3\xbc""dtirol.it\0im.it\0edu.mt\0" -"mil.km\0page\0" +"*.jm\0ltd\0" +"int.co\0edu.jo\0" +"chiryu.aichi.jp\0" +"ce.gov.br\0konyvelo.hu\0" +"chesapeakebay.museum\0" +"tochio.niigata.jp\0" +"dnsalias.net\0" +"blogspot.co.id\0" +"modalen.no\0" +"edu.kg\0" +"*.kh\0meraker.no\0aetna\0yamaxun\0" +"edu.ki\0fedorainfracloud.org\0" +"able\0flights\0" +"virtueeldomein.nl\0hra.health\0" +"edu.km\0med\0blogspot.co.il\0" +"edu.kn\0" +"nuoro.it\0" +"isernia.it\0edu.kp\0masfjorden.no\0" +"edu.la\0mosvik.no\0" +"edu.lb\0" +"3.bg\0edu.lc\0" +"\xe3\x82\xbb\xe3\x83\xbc\xe3\x83\xab\0" +"\xe7\xa6\x8f\xe4\xba\x95.jp\0cdn-edges.net\0servehttp.com\0" +"bugatti\0" +"edu.kw\0men\0gets-it.net\0" +"bounty-full.com\0" +"edu.ky\0cust.dev.thingdust.io\0" +"edu.kz\0s3-us-west-2.amazonaws.com\0" +"edu.lk\0abo.pa\0" +"poniatowa.pl\0" +"design.museum\0" +"indianapolis.museum\0asker.no\0" +"seika.kyoto.jp\0and.museum\0" +"edu.lr\0" +"edu.ls\0\xe0\xb8\xa8\xe0\xb8\xb6\xe0\xb8\x81\xe0\xb8\xa9\xe0\xb8\xb2.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"sa.edu.au\0" +"niiza.saitama.jp\0edu.me\0" +"edu.lv\0" +"nishiawakura.okayama.jp\0edu.mg\0buzz\0" +"edu.ly\0" +"kashihara.nara.jp\0wien\0selfip.com\0" +"edu.mk\0nesset.no\0" +"edu.ml\0co.network\0" +"*.mm\0" +"edu.mn\0tatamotors\0" +"edu.mo\0nc.tr\0" +"tree.museum\0" +"edu.ms\0is-a-financialadvisor.com\0" +"edu.mt\0oystre-slidre.no\0" "edu.mv\0" -"edu.mw\0edu.ng\0lib.ak.us\0read\0dattolocal.net\0" -"ac.ir\0edu.mx\0chernihiv.ua\0ddnsking.com\0" -"edu.my\0edu.ni\0" -"mil.kr\0edu.mz\0llp\0" -"arboretum.museum\0" -"kin.okinawa.jp\0" -"app.os.stg.fedoraproject.org\0" -"qc.ca\0name.cy\0" -"atsuma.hokkaido.jp\0" -"mil.kz\0historical.museum\0edu.nr\0" -"hinohara.tokyo.jp\0" -"ac.jp\0col.ng\0" -"kunst.museum\0dnshome.de\0" -"campinas.br\0uruma.okinawa.jp\0" -"ac.ke\0" -"h\xc3\xb8yanger.no\0" -"trentinoa-adige.it\0edu.om\0" -"name.eg\0kasaoka.okayama.jp\0mil.lv\0" -"mil.mg\0" -"ln.cn\0tochigi.jp\0" -"contemporary.museum\0edu.pa\0" -"nagiso.nagano.jp\0sortland.no\0eu-3.evennode.com\0" -"hi.cn\0kutchan.hokkaido.jp\0" -"theworkpc.com\0" -"edu.pe\0weatherchannel\0" -"berlevag.no\0edu.pf\0" -"rollag.no\0banamex\0" -"tenei.fukushima.jp\0ac.kr\0edu.ph\0um.gov.pl\0cloudcontrolapp.com\0" -"cnpy.gdn\0" -"kure.hiroshima.jp\0edu.pk\0" -"edu.pl\0" -"broker.aero\0" -"yokawa.hyogo.jp\0mil.mv\0edu.pn\0c66.me\0" -"mil.ng\0" -"name.az\0ac.lk\0mil.my\0mil.ni\0edu.qa\0" -"mil.mz\0edu.pr\0anquan\0republican\0" -"edu.ps\0" -"edu.pt\0" -"ama.aichi.jp\0lol\0" -"ac.ma\0mil.no\0" -"rovigo.it\0ac.ls\0edu.py\0" -"ac.me\0jfk.museum\0scotland.museum\0\xc3\xb8rskog.no\0nv.us\0" -"itami.hyogo.jp\0" -"fl.us\0" -"mil.nz\0" -"kiwi\0" -"custom.metacentrum.cz\0" -"lpl\0dnsalias.com\0github.io\0fi.cloudplatform.fi\0" -"qld.au\0" -"bahcavuotna.no\0cc.vi.us\0" -"tas.gov.au\0karelia.su\0" -"ac.mu\0" -"mr.no\0" -"ac.mw\0mil.pe\0" -"cc.mo.us\0" -"ac.ni\0" -"hidaka.saitama.jp\0ac.mz\0mil.ph\0" -"edu.sa\0" -"edu.sb\0\xe0\xa4\xa8\xe0\xa5\x87\xe0\xa4\x9f\0" +"numata.hokkaido.jp\0edu.mw\0edu.ng\0" +"hakone.kanagawa.jp\0edu.mx\0" +"shoo.okayama.jp\0suginami.tokyo.jp\0edu.my\0edu.ni\0" +"edu.mz\0" +"trainer.aero\0" +"is-into-games.com\0" +"catania.it\0arboretum.museum\0" +"slz.br\0" +"*.np\0ms.us\0nc.us\0" +"edu.nr\0" +"java\0sale\0am.leg.br\0iobb.net\0" +"uk.reclaim.cloud\0" +"nu.ca\0mypi.co\0" +"s3-eu-west-3.amazonaws.com\0ddns.me\0" +"yamanakako.yamanashi.jp\0" +"engineer.aero\0" +"video.hu\0edu.om\0" +"tools\0" +"edu.pa\0" +"gyeonggi.kr\0" +"b.se\0" +"mil\0edu.pe\0" +"kitahiroshima.hokkaido.jp\0edu.pf\0" +"piemonte.it\0ve.it\0*.pg\0" +"edu.ph\0" +"salud.bo\0\xd9\x83\xd8\xa7\xd8\xab\xd9\x88\xd9\x84\xd9\x8a\xd9\x83\0" +"namie.fukushima.jp\0edu.pk\0" +"ip6.arpa\0\xe7\xb6\xb2\xe7\xbb\x9c.hk\0edu.pl\0jpn.com\0workisboring.com\0" +"mit\0" +"edu.pn\0" +"iwatsuki.saitama.jp\0" +"historichouses.museum\0" +"edu.qa\0tattoo\0" +"edu.pr\0pages.wiardweb.com\0" +"int.is\0tono.iwate.jp\0edu.ps\0" +"mizuho.tokyo.jp\0edu.pt\0" +"kuzumaki.iwate.jp\0mutual\0" +"nl.no\0" +"takashima.shiga.jp\0edu.py\0" +"shizuoka.shizuoka.jp\0agency\0" +"yokohama\0" +"support\0lpusercontent.com\0" +"sabae.fukui.jp\0" +"komatsu\0" +"kuleuven.cloud\0" +"aarborte.no\0" +"tec.br\0setagaya.tokyo.jp\0celtic.museum\0" +"trentinosudtirol.it\0bellevue.museum\0" +"trentino-a-adige.it\0mlb\0" +"pueblo.bo\0" +"aridagawa.wakayama.jp\0" +"t.bg\0shirakawa.fukushima.jp\0" +"int.la\0edu.sa\0" +"edu.sb\0" "edu.rs\0edu.sc\0" -"q.bg\0mil.pl\0edu.sd\0" -"edu.ru\0" -"draydns.de\0" -"edu.sg\0" -"padova.it\0man\0geekgalaxy.com\0" -"imakane.hokkaido.jp\0mil.qa\0feedback\0" -"map\0" -"miyota.nagano.jp\0ngo.za\0mba\0" -"edu.sl\0" +"edu.sd\0arkhangelsk.su\0" +"wiki\0edu.ru\0cistron.nl\0" +"cnpy.gdn\0for-the.biz\0" +"toyama.toyama.jp\0stange.no\0edu.sg\0" +"rm.it\0emerck\0" +"\xe9\x80\x9a\xe8\xb2\xa9\0" +"mma\0" +"iizuna.nagano.jp\0int.lk\0" +"edu.sl\0mls\0" +"azurestaticapps.net\0" "edu.sn\0" -"edu.so\0" -"ac.nz\0" -"kanzaki.saga.jp\0mil.py\0" -"eu-2.evennode.com\0" +"edu.so\0*.dev.adobeaemcloud.com\0" "edu.ss\0" -"rad\xc3\xb8y.no\0edu.st\0" -"tokigawa.saitama.jp\0" +"sannohe.aomori.jp\0edu.st\0t3l3p0rt.net\0" +"school.za\0" "edu.sv\0" -"ac.pa\0events\0tiaa\0" -"us.gov.pl\0" +"\xe7\xa6\x8f\xe5\xb2\xa1.jp\0!city.kitakyushu.jp\0\xd0\xbc\xd0\xba\xd0\xb4\0" "edu.sy\0" -"edu.tj\0telebit.app\0" +"edu.tj\0" +"nieruchomosci.pl\0" +"moareke.no\0" "edu.tm\0" -"arvo.network\0" -"edu.to\0" +"nomi.ishikawa.jp\0nagaokakyo.kyoto.jp\0nishihara.okinawa.jp\0lib.ne.us\0\xd0\xba\xd0\xb0\xd1\x82\xd0\xbe\xd0\xbb\xd0\xb8\xd0\xba\0" +"edu.to\0hisamitsu\0" +"hurdal.no\0" "edu.ua\0" -"edu.tr\0jele.io\0" -"hikawa.shimane.jp\0edu.tt\0" -"edu.tw\0" -"ac.pr\0cooking\0firebaseapp.com\0" -"minnesota.museum\0paleo.museum\0" -"lundbeck\0" -"quicksytes.com\0" -"mil.ru\0" -"morena.br\0towada.aomori.jp\0l\xc3\xb8renskog.no\0ltd\0" -"mil.rw\0" -"mil.sh\0study\0" -"nowruz\0" -"computer\0" -"edu.vc\0" -"\xe4\xbd\x9b\xe5\xb1\xb1\0s3-website-ap-southeast-1.amazonaws.com\0" -"edu.ve\0" -"pordenone.it\0lib.gu.us\0" -"kristiansund.no\0folionetwork.site\0" -"edu.uy\0" -"sand\xc3\xb8y.no\0airbus\0" -"ct.it\0mil.st\0" -"service.one\0" -"edu.vn\0med\0" -"dattorelay.com\0" -"mil.sy\0" -"mil.tj\0" -"nakama.fukuoka.jp\0" -"mil.tm\0edu.vu\0b.ssl.fastly.net\0" -"oto.fukuoka.jp\0" -"bonn.museum\0mil.to\0reit\0" -"coastaldefence.museum\0men\0" -"ac.rs\0" -"oamishirasato.chiba.jp\0kvam.no\0mil.tr\0" -"ac.se\0ac.ru\0" -"shirakawa.fukushima.jp\0" -"kawai.iwate.jp\0ac.rw\0" -"mil.tw\0" -"mil.tz\0eu-1.evennode.com\0" +"edu.tr\0" +"ap.leg.br\0" +"posts-and-telecommunications.museum\0edu.tt\0" +"iruma.saitama.jp\0" +"int.mv\0" +"int.mw\0edu.tw\0" +"fr\xc3\xb8ya.no\0" +"int.ni\0" +"oumu.hokkaido.jp\0sarl\0" +"urown.cloud\0" +"moe\0" +"fashion\0loginline.dev\0" +"ct.it\0saga.jp\0my-router.de\0" +"wine\0for-our.info\0" +"ranzan.saitama.jp\0moi\0" +"edu.vc\0crafting.xyz\0" +"he.cn\0edu.ve\0" +"kirkenes.no\0mom\0lebtimnetz.de\0" +"industries\0s3.dualstack.us-east-1.amazonaws.com\0" +"servegame.org\0" +"nu.it\0elvendrell.museum\0edu.uy\0" +"sakaiminato.tottori.jp\0" +"pmn.it\0edu.vn\0" +"market\0mov\0williamhill\0" +"ck.ua\0col.ng\0" +"kunneppu.hokkaido.jp\0okuizumo.shimane.jp\0agro.pl\0uw.gov.pl\0" +"ama.shimane.jp\0edu.vu\0" +"iwanuma.miyagi.jp\0" +"skydiving.aero\0karatsu.saga.jp\0blogspot.com.cy\0" +"k12.as.us\0nab\0" +"blogspot.co.uk\0" +"nic.in\0" +"yufu.oita.jp\0" +"abbott\0" "edu.ws\0" -"sado.niigata.jp\0" -"\xe3\x82\xb3\xe3\x83\xa0\0" -"nakamura.kochi.jp\0montreal.museum\0" -"engineering\0" -"s\xc3\xb8r-odal.no\0brussels\0" -"elk.pl\0mil.vc\0" -"iki.nagasaki.jp\0" -"mil.ve\0" -"ac.th\0" -"ac.sz\0ac.tj\0" -"mil.uy\0" -"jls-sto1.elastx.net\0" -"loabat.no\0edu.ye\0" -"sakyo.kyoto.jp\0toyonaka.osaka.jp\0" -"fukumitsu.toyama.jp\0hembygdsforbund.museum\0" -"muncie.museum\0" -"ac.ug\0" -"mill.museum\0" -"hayashima.okayama.jp\0" -"ac.tz\0" -"wa.gov.au\0ac.uk\0edu.za\0" -"pars\0eu-west-3.elasticbeanstalk.com\0" -"t3l3p0rt.net\0" -"it1.eur.aruba.jenv-aruba.cloud\0" -"joyo.kyoto.jp\0" -"matsushima.miyagi.jp\0kainan.wakayama.jp\0" -"praxi\0" -"edu.zm\0xnbay.com\0" -"lombardia.it\0konan.aichi.jp\0" -"johana.toyama.jp\0kerrylogistics\0" -"scientist.aero\0broadway\0dyndns-mail.com\0" -"ac.vn\0" -"shibuya.tokyo.jp\0mil\0" -"fastblog.net\0" -"cyon.link\0" -"asmatart.museum\0" -"fukaya.saitama.jp\0mil.ye\0" -"mit\0" -"kanie.aichi.jp\0" -"toki.gifu.jp\0" -"rent\0" -"alt.za\0" -"\xe0\xb8\xa8\xe0\xb8\xb6\xe0\xb8\x81\xe0\xb8\xa9\xe0\xb8\xb2.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0mil.za\0" -"ddnss.de\0" -"nakanojo.gunma.jp\0" -"accenture\0" -"n\xc3\xa5\xc3\xa5mesjevuemie.no\0" -"theater\0readmyblog.org\0" -"*.uberspace.de\0" -"etajima.hiroshima.jp\0kamaishi.iwate.jp\0familyds.com\0" -"name.vn\0mil.zm\0paas.datacenter.fi\0" -"workinggroup.aero\0s\xc3\xb8ndre-land.no\0" -"tottori.jp\0svizzera.museum\0" -"digital\0" -"miyako.iwate.jp\0" -"nakijin.okinawa.jp\0" -"mlb\0" -"space.museum\0" -"maibara.shiga.jp\0" -"mil.zw\0" -"gs.ol.no\0" -"artcenter.museum\0shiksha\0" -"campania.it\0" -"vindafjord.no\0ac.za\0" -"12hp.de\0" -"hasuda.saitama.jp\0osen.no\0" -"mma\0" -"git-repos.de\0" -"mls\0" -"ge.it\0uchinomi.kagawa.jp\0" -"kani.gifu.jp\0" -"nagato.yamaguchi.jp\0name.tj\0" -"koto.shiga.jp\0marburg.museum\0\xc3\xb8stre-toten.no\0golffan.us\0" -"kawaue.gifu.jp\0kamisu.ibaraki.jp\0ac.zm\0" -"ringsaker.no\0" -"we.bs\0" -"dyndns.tv\0" -"shinkamigoto.nagasaki.jp\0name.tr\0" -"name.tt\0" -"ac.zw\0" -"\xc4\x8d\xc3\xa1hcesuolo.no\0boats\0" -"tur.ar\0mizusawa.iwate.jp\0" -"manchester.museum\0dyndns-at-work.com\0" -"12hp.at\0" -"kitanakagusuku.okinawa.jp\0" -"cust.retrosnub.co.uk\0" -"ogaki.gifu.jp\0" -"tennis\0here-for-more.info\0" -"mer\xc3\xa5ker.no\0moe\0" -"act.edu.au\0\xe9\x9d\x99\xe5\xb2\xa1.jp\0fuso.aichi.jp\0" -"psp.gov.pl\0" -"moi\0" -"tur.br\0" -"lucca.it\0blog\0" -"sic.it\0" -"kr\xc3\xa5""anghke.no\0kep.tr\0mom\0rest\0" -"shichikashuku.miyagi.jp\0" -"gotdns.com\0" -"vads\xc3\xb8.no\0""12hp.ch\0" -"asti.it\0" -"feste-ip.net\0" -"tx.us\0" -"mov\0" -"muni.il\0ohda.shimane.jp\0mazowsze.pl\0" -"toho.fukuoka.jp\0dyndns.ws\0" -"shimada.shizuoka.jp\0funahashi.toyama.jp\0" -"society.museum\0hi.us\0" -"rifu.miyagi.jp\0" -"ct.us\0" -"nab\0" -"takamori.nagano.jp\0" -"cc.wv.us\0" -"st.no\0" -"shimane.jp\0citic\0" -"sakurai.nara.jp\0" -"reklam.hu\0\xe6\x84\x9b\xe7\x9f\xa5.jp\0aurland.no\0" -"trentino.it\0mobi\0" -"iijima.nagano.jp\0direct.quickconnect.to\0" -"name.qa\0" -"name.pr\0" -"flora.no\0" -"nba\0s3-website.ap-northeast-2.amazonaws.com\0" -"fortworth.museum\0\xe6\xb8\xb8\xe6\x88\x8f\0" -"matsubushi.saitama.jp\0" -"sld.do\0" -"insure\0s3-ap-southeast-1.amazonaws.com\0" -"name.na\0" -"yachiyo.ibaraki.jp\0tips\0my-vigor.de\0" -"\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" -"moareke.no\0bloger.id\0" -"office-on-the.net\0demo.jelastic.com\0" -"name.mv\0" -"name.ng\0moda\0msd\0" -"name.my\0" -"hirosaki.aomori.jp\0fr\xc3\xb8ya.no\0" -"cranbrook.museum\0" -"gyokuto.kumamoto.jp\0" -"eun.eg\0" -"ch.eu.org\0" -"barletta-trani-andria.it\0" -"jogasz.hu\0tamatsukuri.ibaraki.jp\0ny-2.paas.massivegrid.net\0" -"lib.wi.us\0" -"s3.dualstack.ap-northeast-2.amazonaws.com\0" -"mattel\0mtn\0" -"lib.ms.us\0lib.nc.us\0" -"mtr\0*.svc.firenet.ch\0" -"nec\0" -"r\xc3\xb8mskog.no\0" -"bearalvahki.no\0" -"ogata.akita.jp\0" -"blue\0" -"al.it\0marshalls\0" -"tsukiyono.gunma.jp\0from-fl.com\0" -"furubira.hokkaido.jp\0" -"synology-ds.de\0" -"nagasaki.jp\0" -"net\0" -"humanities.museum\0" -"sakawa.kochi.jp\0new\0" -"name.mk\0" -"americana.museum\0gda.pl\0" -"nfl\0" -"stavanger.no\0caseih\0" -"koriyama.fukushima.jp\0" +"int.pt\0" +"blogspot.com.ee\0" +"cisco\0" +"blogspot.com.eg\0" +"nba\0lima.zone\0" +"seranishi.hiroshima.jp\0institute\0" "cymru\0" -"tomioka.gunma.jp\0sykkylven.no\0" -"snaase.no\0" -"uki.kumamoto.jp\0storfjord.no\0" -"redumbrella\0tempurl.host\0" -"\xe0\xb8\xad\xe0\xb8\x87\xe0\xb8\x84\xe0\xb9\x8c\xe0\xb8\x81\xe0\xb8\xa3.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0mycloud.by\0" -"abbvie\0" -"e164.arpa\0" -"name.jo\0miyako.fukuoka.jp\0miyazaki.miyazaki.jp\0taira.toyama.jp\0ventures\0*.cns.joyent.com\0" -"iiyama.nagano.jp\0" -"fukui.jp\0" -"ngo\0" -"public.museum\0" -"union.aero\0denmark.museum\0" -"telekommunikation.museum\0" -"wy.us\0to.leg.br\0" -"circus.museum\0" -"nhk\0" -"barsy.co.uk\0" -"salud.bo\0" -"noticias.bo\0shingu.fukuoka.jp\0\xe6\x9c\xba\xe6\x9e\x84\0" +"taiki.mie.jp\0" +"\xd0\xbc\xd0\xbe\xd0\xbd\0" +"on.ca\0blogspot.com.ar\0" +"save\0" +"edu.ye\0blogspot.com.au\0repl.co\0" +"etisalat\0" +"enebakk.no\0bss.design\0" +"storebase.store\0" +"isahaya.nagasaki.jp\0" +"skjerv\xc3\xb8y.no\0msd\0" +"agr.br\0" +"k.se\0" +"edu.za\0\xe7\xbd\x91\xe7\xab\x99\0" +"blogspot.com.br\0" +"emp.br\0soundcast.me\0" +"illustration.museum\0int.ru\0" +"pug.it\0umi.fukuoka.jp\0" +"blogspot.com.by\0" +"lavangen.no\0" +"kumiyama.kyoto.jp\0" +"edu.zm\0lplfinancial\0" +"landes.museum\0blogspot.com.co\0" +"roros.no\0" +"uozu.toyama.jp\0maserati\0" +"mtn\0" +"kawaguchi.saitama.jp\0oppeg\xc3\xa5rd.no\0" +"int.tj\0" +"mtr\0" +"nec\0weatherchannel\0sells-for-less.com\0" +"camera\0saxo\0" +"olbia-tempio.it\0" +"salangen.no\0" +"net.ac\0bentley\0" +"lotte\0no.eu.org\0" +"net.ae\0cc.oh.us\0" +"educator.aero\0net.af\0" +"net.ag\0australia.museum\0int.tt\0" +"force.museum\0thruhere.net\0" +"net.ai\0" +"slask.pl\0" +"v\xc3\xa5g\xc3\xa5.no\0" +"net.al\0" +"net.am\0" +"lotto\0" +"net\0" +"net.ba\0" +"net.ar\0net.bb\0kuju.oita.jp\0karaganda.su\0\xd1\x81\xd0\xb0\xd0\xbc\xd0\xb0\xd1\x80\xd0\xb0.\xd1\x80\xd1\x83\xd1\x81\0" +"tomobe.ibaraki.jp\0new\0" +"fuchu.toyama.jp\0sa.com\0" +"net.au\0cloudjiffy.net\0" +"blogspot.com.es\0" +"net.bh\0int.ve\0nfl\0\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xae\0" +"blogspot.co.ke\0" +"net.az\0" +"turin.it\0halden.no\0" +"net.bm\0" +"net.bn\0farmstead.museum\0" +"net.bo\0" +"trentinostirol.it\0int.vn\0" +"net.br\0damnserver.com\0" +"net.bs\0\xd8\xa8\xd9\x8a\xd8\xaa\xd9\x83\0" +"net.bt\0tr\xc3\xb8gstad.no\0\xe7\xbd\x91\xe5\x9d\x80\0" +"isa.kagoshima.jp\0" +"\xe7\xbb\x84\xe7\xb9\x94.hk\0kppsp.gov.pl\0" +"net.ci\0" +"foz.br\0net.bz\0" +"higashihiroshima.hiroshima.jp\0ngo\0" +"sayama.saitama.jp\0hagebostad.no\0vipsinaapp.com\0" +"net.cm\0clinic\0" +"net.cn\0" +"net.co\0" +"\xe0\xae\x9a\xe0\xae\xbf\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x82\xe0\xae\xb0\xe0\xaf\x8d\0clubmed\0lgbt\0" +"lease\0" +"baidu\0" +"go.gov.br\0" +"net.cu\0cal.it\0" +"stockholm.museum\0in-dsl.de\0" +"net.cw\0heimatunduhren.museum\0nhk\0\xe4\xba\x9a\xe9\xa9\xac\xe9\x80\x8a\0" +"net.cy\0joyo.kyoto.jp\0higashiizumo.shimane.jp\0" +"nishiizu.shizuoka.jp\0" +"kitami.hokkaido.jp\0onna.okinawa.jp\0" +"net.dm\0s3-website.us-east-2.amazonaws.com\0es-1.axarnet.cloud\0" +"monzaebrianza.it\0" +"net.do\0cc.wa.us\0" +"hob\xc3\xb8l.no\0" +"net.ec\0culturalcenter.museum\0" +"hn.cn\0" +"toyone.aichi.jp\0" +"64-b.it\0" +"net.eg\0" +"gb.com\0" +"myshopify.com\0" +"net.dz\0massa-carrara.it\0" +"adac\0" +"stjordal.no\0" +"shingu.fukuoka.jp\0kushiro.hokkaido.jp\0santacruz.museum\0" +"shimizu.shizuoka.jp\0" +"net.et\0" +"show.aero\0" +"net-freaks.com\0" +"net.fj\0" +"naka.hiroshima.jp\0" +"net.fm\0" +"blogspot.co.nz\0" +"sanuki.kagawa.jp\0asaka.saitama.jp\0" +"shimoji.okinawa.jp\0" +"sf.no\0ct.us\0" +"spy.museum\0k12.nm.us\0" +"saku.nagano.jp\0nz.eu.org\0" +"net.ge\0" +"reggiocalabria.it\0watches\0" +"net.gg\0aseral.no\0" +"kobayashi.miyazaki.jp\0iraq.museum\0" +"is-a-student.com\0" +"net.gl\0seoul.kr\0" +"nic.tj\0" +"net.gn\0" +"net.gp\0" +"nakadomari.aomori.jp\0" +"net.gr\0gold\0nokia\0" +"net.gt\0golf\0" +"net.gu\0gs.ah.no\0" +"webhop.org\0tn.oxa.cloud\0" +"dubai\0" +"net.gy\0mayfirst.info\0" +"net.hk\0" +"locker\0al.eu.org\0" +"net.hn\0erotica.hu\0horokanai.hokkaido.jp\0mj\xc3\xb8ndalen.no\0nhs.uk\0ipiranga\0" +"t.se\0" +"costume.museum\0" +"orland.no\0" +"net.ht\0net.id\0chat\0" +"yamaga.kumamoto.jp\0walbrzych.pl\0memset.net\0" +"km.ua\0blogdns.com\0" +"yamato.kumamoto.jp\0" +"net.il\0" +"net.im\0tokushima.jp\0misaki.okayama.jp\0" +"net.in\0" +"appengine.flow.ch\0" +"net.iq\0" +"net.ir\0" +"net.is\0money.museum\0vn.ua\0zapto.xyz\0" +"lib.ee\0net.je\0" +"ingatlan.hu\0bolzano.it\0" +"blogspot.com.mt\0" +"politica.bo\0" +"blogspot.com.ng\0" +"rehab\0" +"net.jo\0tec.ve\0" +"ishikawa.fukushima.jp\0" +"cc.pa.us\0" +"miyazu.kyoto.jp\0goog\0id.forgerock.io\0" +"oketo.hokkaido.jp\0" +"kamisato.saitama.jp\0net.kg\0" +"rodoy.no\0" +"valledaosta.it\0net.ki\0" +"cloud66.ws\0" +"gwangju.kr\0" +"net.kn\0" +"chuo.tokyo.jp\0roma.museum\0" +"net.la\0" +"net.lb\0" +"so.it\0net.lc\0now\0from-vt.com\0" +"\xc3\xb8vre-eiker.no\0" +"bahccavuotna.no\0" +"net.kw\0bmoattachments.org\0fastblog.net\0" +"trondheim.no\0definima.net\0" +"daisen.akita.jp\0net.ky\0flora.no\0krager\xc3\xb8.no\0" +"net.kz\0" +"net.lk\0" +"shimofusa.chiba.jp\0shibukawa.gunma.jp\0" +"konskowola.pl\0" +"matta-varjjat.no\0wuoz.gov.pl\0" +"ballooning.aero\0net.ma\0" +"net.lr\0myravendb.com\0" +"net.ls\0" +"rv.ua\0nic.za\0" +"net.me\0blogspot.com.tr\0" +"midori.gunma.jp\0net.lv\0upaas.kazteleport.kz\0" +"esan.hokkaido.jp\0cust.prod.thingdust.io\0dnsupdate.info\0" "miyoshi.aichi.jp\0" -"travelers\0" -"amsw.nl\0" -"ishinomaki.miyagi.jp\0" -"swiss\0" -"huissier-justice.fr\0" -"kushima.miyazaki.jp\0" -"pug.it\0" -"amfam\0" -"pccw\0" -"tagajo.miyagi.jp\0" -"onagawa.miyagi.jp\0" -"cc.nh.us\0" -"localhistory.museum\0" -"mosvik.no\0yali.mythic-beasts.com\0" -"joso.ibaraki.jp\0" -"sanok.pl\0k12.va.us\0" -"inazawa.aichi.jp\0circle\0" -"z.bg\0" -"al.no\0" -"cloudjiffy.net\0" -"5.bg\0forli-cesena.it\0" -"on-web.fr\0" -"shimizu.hokkaido.jp\0shonai.yamagata.jp\0myqnapcloud.com\0" -"basilicata.it\0ozora.hokkaido.jp\0tokamachi.niigata.jp\0" -"gen.mi.us\0adygeya.su\0basicserver.io\0" -"volda.no\0reg.dk\0" -"\xe7\x9f\xb3\xe5\xb7\x9d.jp\0bplaced.de\0" -"nichinan.miyazaki.jp\0gmail\0" -"fujiyoshida.yamanashi.jp\0" -"utwente.io\0" -"from-wi.com\0" -"m\xc3\xa5s\xc3\xb8y.no\0at.eu.org\0" -"dyndns.ddnss.de\0" -"is-an-actor.com\0\xd0\xbc\xd1\x81\xd0\xba.\xd1\x80\xd1\x83\xd1\x81\0" -"rochester.museum\0gol.no\0lier.no\0" -"izumi.kagoshima.jp\0nord-odal.no\0" -"mitake.gifu.jp\0" -"toyako.hokkaido.jp\0skedsmokorset.no\0ic.gov.pl\0" -"small-web.org\0" -"arendal.no\0" -"sakado.saitama.jp\0\xc3\xa5s.no\0" -"topology.museum\0" -"va.it\0" -"rishirifuji.hokkaido.jp\0" -"s3.dualstack.ca-central-1.amazonaws.com\0" -"aju.br\0warabi.saitama.jp\0olecko.pl\0hangout\0" -"from-il.com\0" -"*.nom.br\0" -"sld.pa\0graphics\0" -"shiiba.miyazaki.jp\0nagai.yamagata.jp\0yandex\0" -"shimotsuma.ibaraki.jp\0" -"samsclub\0" -"takatsuki.shiga.jp\0" -"adygeya.ru\0" -"vic.au\0" -"uzs.gov.pl\0" -"modalen.no\0lynx.mythic-beasts.com\0" -"calvinklein\0we.tc\0community-pro.net\0" -"lowicz.pl\0" -"eu.meteorapp.com\0" -"platterp.us\0" -"scholarships\0pimienta.org\0" -"safety.aero\0" -"theatre\0" -"tm.cy\0viterbo.it\0" -"akaiwa.okayama.jp\0travelersinsurance\0" -"lebork.pl\0" -"gen.in\0" -"andria-barletta-trani.it\0run.app\0" -"now\0" -"*.stolos.io\0" -"mad.museum\0cloud66.zone\0" -"fidelity\0" -"tm.dz\0autos\0wbq.me\0" -"ibigawa.gifu.jp\0" -"cleverapps.io\0" -"ena.gifu.jp\0turek.pl\0" -"marketing\0" -"sennan.osaka.jp\0pruszkow.pl\0edu.krd\0" -"seg.br\0" -"al.us\0" -"is-very-nice.org\0dynvpn.de\0" -"va.no\0" -"asaminami.hiroshima.jp\0" -"miho.ibaraki.jp\0bellevue.museum\0" -"nra\0" -"saltdal.no\0click\0" -"tm.fr\0cc.md.us\0" -"\xd0\xbc\xd0\xb8\xd1\x80.\xd1\x80\xd1\x83\xd1\x81\0" -"guovdageaidnu.no\0" -"pro.az\0obi\0" -"f.bg\0" -"art.museum\0k12.pr.us\0from-me.org\0" -"myddns.rocks\0" -"pro.br\0rnu.tn\0" -"trentino-aadige.it\0" -"matsuzaki.shizuoka.jp\0elvendrell.museum\0ostre-toten.no\0" +"net.ly\0" +"mod.gi\0net.mk\0" +"net.ml\0" +"crotone.it\0gu.us\0nra\0" +"\xe6\x95\x8e\xe8\x82\xb2.hk\0yachimata.chiba.jp\0" +"net.mo\0" +"repl.run\0" +"cc.ky.us\0" +"net.ms\0" +"net.mt\0" +"net.mu\0obi\0" +"net.mv\0net.nf\0pohl\0" +"yoshinogari.saga.jp\0net.mw\0net.ng\0" +"net.mx\0" +"campidanomedio.it\0net.my\0net.ni\0faststacks.net\0" +"veterinaire.km\0net.mz\0radom.pl\0barsy.support\0" +"taiwa.miyagi.jp\0fantasyleague.cc\0" +"mitaka.tokyo.jp\0magnet.page\0" +"semine.miyagi.jp\0" +"itano.tokushima.jp\0" +"net.nr\0" "nrw\0" -"fuossko.no\0" -"weather\0" -"hol.no\0" -"moto\0" -"32-b.it\0" -"muosat.no\0ae.org\0""2038.io\0" -"lexus\0" -"pro.cy\0tm.hu\0trapani.it\0blogspot.com\0" -"hirata.fukushima.jp\0" -"center.museum\0lur\xc3\xb8y.no\0gen.ng\0" -"christiansburg.museum\0" -"minamiawaji.hyogo.jp\0" -"pro.ec\0kihoku.ehime.jp\0" -"ntt\0" -"kitagata.gifu.jp\0" -"chase\0" -"vibo-valentia.it\0" -"milan.it\0fujieda.shizuoka.jp\0sport\0" -"equipment\0" -"lc.it\0" -"mat.br\0gen.nz\0kaufen\0" -"nt.au\0neyagawa.osaka.jp\0" -"ci.it\0kaizuka.osaka.jp\0" -"off\0mangyshlak.su\0" -"expert\0" -"tokai.aichi.jp\0" -"deporte.bo\0pro.fj\0" -"nt.ca\0*.advisor.ws\0be.ax\0" -"tm.km\0" -"es.gov.br\0pvt.ge\0giving\0" -"heguri.nara.jp\0" -"cloudycluster.net\0" -"berlev\xc3\xa5g.no\0" -"sande.more-og-romsdal.no\0" -"bc.platform.sh\0" -"fj.cn\0county.museum\0" -"oseto.nagasaki.jp\0preservation.museum\0" -"skaun.no\0" -"gonohe.aomori.jp\0nakatane.kagoshima.jp\0" -"hatoyama.saitama.jp\0tm.mc\0ownprovider.com\0" -"tm.mg\0" -"kharkiv.ua\0zhytomyr.ua\0" -"ip6.arpa\0" -"\xe5\x8d\x83\xe8\x91\x89.jp\0" -"vald-aosta.it\0national.museum\0barum.no\0" -"va.us\0" -"pro.ht\0nyc\0" +"pg.it\0stranda.no\0" +"tonaki.okinawa.jp\0" +"sx.cn\0" +"\xe5\x85\xac\xe5\x8f\xb8.cn\0gallery.museum\0net.nz\0" +"higashitsuno.kochi.jp\0" +"tsuno.miyazaki.jp\0net.om\0" +"iron.museum\0" +"cust.disrec.thingdust.io\0" +"net.pa\0mlbfan.org\0" +"hembygdsforbund.museum\0" +"hokuto.hokkaido.jp\0" +"iki.nagasaki.jp\0net.pe\0um.gov.pl\0" +"moseushi.hokkaido.jp\0hjartdal.no\0" +"\xe5\x85\xac\xe5\x8f\xb8.hk\0rollag.no\0" +"net.ph\0s3.dualstack.ca-central-1.amazonaws.com\0" +"olecko.pl\0" +"itau\0" +"net.pk\0co.krd\0" +"net.pl\0\xe6\x95\x99\xe8\x82\xb2.\xe9\xa6\x99\xe6\xb8\xaf\0" +"net.pn\0from-ak.com\0" +"bando.ibaraki.jp\0cultural.museum\0s3-website-us-east-1.amazonaws.com\0" +"fukushima.jp\0vevelstad.no\0homesense\0ntt\0" +"net.qa\0" +"net.pr\0" +"net.ps\0cc.ia.us\0" +"shimizu.hokkaido.jp\0net.pt\0" +"blogspot.co.za\0" +"pp.az\0" +"discourse.group\0" +"sn\xc3\xa5""ase.no\0net.py\0" +"andriabarlettatrani.it\0" +"groundhandling.aero\0bbs.tr\0lon-2.paas.massivegrid.net\0wellbeingzone.eu\0" +"an.it\0" +"avocat.pro\0" +"veterinaire.fr\0" +"off\0" +"obu.aichi.jp\0" +"lo.it\0" +"nakatsugawa.gifu.jp\0" +"luzern.museum\0" +"misasa.tottori.jp\0amli.no\0" +"ojiya.niigata.jp\0" +"iitate.fukushima.jp\0" +"vardo.no\0" +"flight.aero\0blogspot.com.uy\0" +"citic\0square7.net\0dvrcam.info\0" +"furniture.museum\0net.sa\0" +"net.sb\0" +"tomika.gifu.jp\0net.sc\0kicks-ass.net\0" +"net.sd\0" +"egersund.no\0net.ru\0" +"kv.ua\0" +"h\xc3\xa1""bmer.no\0net.rw\0net.sg\0aquarelle\0" +"net.sh\0tel.tr\0" +"gliwice.pl\0" +"net.sl\0" +"net.so\0" +"bjarkoy.no\0" +"net.ss\0" +"net.st\0" +"us.gov.pl\0" +"instantcloud.cn\0" +"hole.no\0net.th\0" +"net.sy\0edu.krd\0" +"net.tj\0dnsalias.org\0" +"net.tm\0" +"net.tn\0" +"tonsberg.no\0net.to\0nyc\0" +"net.ua\0" +"net.tr\0" +"net.tt\0" +"*.lcl.dev\0" +"froland.no\0sor-aurdal.no\0" +"net.tw\0" +"yura.wakayama.jp\0" +"net.uk\0baseball\0" +"bo.telemark.no\0cleaning\0" +"net.vc\0\xd8\xa8\xd8\xa7\xd8\xb1\xd8\xaa\0" +"lea\xc5\x8bgaviika.no\0net.ve\0*.stg.dev\0" +"consulado.st\0" +"hidaka.hokkaido.jp\0nayoro.hokkaido.jp\0yoga\0" +"net.uy\0net.vi\0" +"!city.sapporo.jp\0net.uz\0" +"gol.no\0" +"net.vn\0" +"nishinomiya.hyogo.jp\0" +"pixolino.com\0" +"dynalias.com\0for-some.biz\0" +"net.vu\0" +"tydal.no\0" +"is-a-chef.org\0ric.jelastic.vps-host.net\0" +"srv.br\0" +"yatomi.aichi.jp\0" +"net.ws\0" +"scot\0" +"university.museum\0ebiz.tw\0cdn77-ssl.net\0" +"minato.osaka.jp\0porn\0" +"akita.akita.jp\0" +"\xe8\x81\x94\xe9\x80\x9a\0" +"marche.it\0rakkestad.no\0" +"nysa.pl\0" +"ravendb.community\0" +"namerikawa.toyama.jp\0" +"transport.museum\0net.ye\0" +"mormon\0" +"aizubange.fukushima.jp\0nishitosa.kochi.jp\0" +"!city.kawasaki.jp\0" +"moskenes.no\0auspost\0" +"wa.gov.au\0larsson.museum\0aurskog-holand.no\0post\0" +"service.gov.uk\0" +"naamesjevuemie.no\0" +"net.za\0one\0" +"fnd.br\0shizuoka.jp\0ong\0" +"catholic\0" +"cloudaccess.host\0" +"toray\0" +"kitamoto.saitama.jp\0onl\0homeip.net\0" +"west1-us.cloudjiffy.net\0" +"myqnapcloud.com\0" +"kr\xc3\xb8""dsherad.no\0" +"chuo.chiba.jp\0net.zm\0ny-1.paas.massivegrid.net\0" +"lib.wa.us\0" "nissan\0" -"nishihara.okinawa.jp\0" -"aosta.it\0grandrapids.museum\0" -"karasjok.no\0" -"sener\0" -"oji.nara.jp\0" -"matsuno.ehime.jp\0l\xc3\xb8ten.no\0" -"nissay\0" -"mihara.kochi.jp\0tm.no\0" -"ismaili\0" -"frogn.no\0fnwk.site\0dyn.ddnss.de\0" -"virginia.museum\0taipei\0" -"far.br\0" -"fund\0" -"okinawa.okinawa.jp\0skjak.no\0" -"rome.it\0" -"sdn.gov.pl\0" -"z.se\0" -"notogawa.shiga.jp\0gen.tr\0" -"joetsu.niigata.jp\0" -"stj\xc3\xb8rdalshalsen.no\0\xe9\xa6\x99\xe6\xa0\xbc\xe9\x87\x8c\xe6\x8b\x89\0" -"tcm.museum\0" -"seihi.nagasaki.jp\0gent\0" -"tm.pl\0" -"trentinosuedtirol.it\0tobetsu.hokkaido.jp\0" -"*.awdev.ca\0" -"capetown\0" -"atlanta.museum\0mmafan.biz\0" -"s3-fips-us-gov-west-1.amazonaws.com\0balashov.su\0" -"restaurant\0" -"zagan.pl\0" -"kamagaya.chiba.jp\0sharp\0" -"be.gy\0" -"definima.net\0" -"mjondalen.no\0" -"rocks\0" -"reliance\0" -"gs.sf.no\0" -"bygland.no\0" -"nagaoka.niigata.jp\0" -"myforum.community\0" -"si.it\0lib.oh.us\0" -"pro.na\0" -"tm.ro\0naturbruksgymn.se\0oncilla.mythic-beasts.com\0*.sys.qcx.io\0" -"au.eu.org\0be.eu.org\0" -"aostavalley.it\0linz.museum\0pro.mv\0one\0" -"usa.oita.jp\0levanger.no\0" -"ikeda.hokkaido.jp\0ong\0" -"tm.se\0" -"ox.rs\0" -"przeworsk.pl\0" -"chitose.hokkaido.jp\0onl\0" -"tomobe.ibaraki.jp\0usuki.oita.jp\0analytics\0" -"matsue.shimane.jp\0" -"mp.br\0tokuyama.yamaguchi.jp\0hzc.io\0" -"*.compute.amazonaws.com.cn\0damnserver.com\0" -"kids.us\0" -"maintenance.aero\0" -"creditcard\0" -"barsy.me\0" -"fedje.no\0" -"pro.om\0" -"nishiawakura.okayama.jp\0ooo\0" -"ibaraki.jp\0akkeshi.hokkaido.jp\0" -"maison\0" -"\xe7\xa7\x8b\xe7\x94\xb0.jp\0obama.nagasaki.jp\0hagi.yamaguchi.jp\0troitsk.su\0wien.funkfeuer.at\0" -"stargard.pl\0" -"bostik\0" -"g.vbrplsbx.io\0" -"us-east-2.elasticbeanstalk.com\0" -"gifu.gifu.jp\0ks.ua\0" -"azerbaijan.su\0" -"westus2.azurestaticapps.net\0" -"hjartdal.no\0" -"pro.pr\0" -"\xe5\xbe\xae\xe5\x8d\x9a\0" -"enna.it\0goodyear\0" -"association.aero\0consulting.aero\0ks.us\0" -"jewelry.museum\0bridgestone\0" -"wakasa.fukui.jp\0" -"maceio.br\0ryd.wafaicloud.com\0" -"tado.mie.jp\0" -"\xe0\xb4\xad\xe0\xb4\xbe\xe0\xb4\xb0\xe0\xb4\xa4\xe0\xb4\x82\0motorcycles\0okinawa\0\xe5\x98\x89\xe9\x87\x8c\xe5\xa4\xa7\xe9\x85\x92\xe5\xba\x97\0" -"bg.eu.org\0" -"au.cloudswitches.com\0" -"goshiki.hyogo.jp\0org\0" +"columbus.museum\0is-saved.org\0" +"s3-ap-northeast-1.amazonaws.com\0" +"tinn.no\0pinb.gov.pl\0mt.eu.org\0" +"tksat.bo\0kariwa.niigata.jp\0" +"ichinohe.iwate.jp\0" +"bg.it\0" +"friuliveneziagiulia.it\0blogsite.org\0" +"nissay\0ooo\0" +"alto-adige.it\0" +"kamisunagawa.hokkaido.jp\0" +"ichikawa.chiba.jp\0kamikawa.hokkaido.jp\0" +"storage\0" +"morotsuka.miyazaki.jp\0wake.okayama.jp\0karelia.su\0" +"is-a-knight.org\0" +"takamatsu.kagawa.jp\0" +"oxa.cloud\0" +"\xe9\xb3\xa5\xe5\x8f\x96.jp\0varoy.no\0" +"is-a-chef.com\0" +"arna.no\0law.pro\0" +"kawaue.gifu.jp\0naha.okinawa.jp\0" +"h\xc3\xa1mm\xc3\xa1rfeasta.no\0wielun.pl\0" +"unzen.nagasaki.jp\0itoigawa.niigata.jp\0" +"research.aero\0" +"andria-trani-barletta.it\0akaiwa.okayama.jp\0org\0" +"\xe0\xb8\x97\xe0\xb8\xab\xe0\xb8\xb2\xe0\xb8\xa3.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" "pay\0" -"nt.no\0from-wy.com\0" -"rep.br\0" -"itoman.okinawa.jp\0theater.museum\0" -"flt.cloud.muni.cz\0" -"seiyo.ehime.jp\0vanylven.no\0k12.vt.us\0" -"apartments\0" -"halloffame.museum\0is-a-linux-user.org\0" -"okuizumo.shimane.jp\0" -"cc.ar.us\0" -"maizuru.kyoto.jp\0" -"\xe7\xbb\x84\xe7\xbb\x87\xe6\x9c\xba\xe6\x9e\x84\0" -"f.se\0" -"eco.br\0assn.lk\0" -"ppg.br\0izu.shizuoka.jp\0" -"valer.hedmark.no\0" -"with.marketing\0" -"dubai\0" -"mito.ibaraki.jp\0" -"akita.jp\0" -"tanabe.wakayama.jp\0sling\0" -"hanggliding.aero\0nakai.kanagawa.jp\0graz.museum\0" -"in-brb.de\0" -"bryansk.su\0" -"kviteseid.no\0" -"b\xc3\xa1jddar.no\0" -"glass.museum\0pasadena.museum\0" -"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xd8\xa9\0jls-sto2.elastx.net\0now.sh\0" -"shimonita.gunma.jp\0gjerstad.no\0" -"meraker.no\0\xd1\x81\xd0\xb0\xd0\xbc\xd0\xb0\xd1\x80\xd0\xb0.\xd1\x80\xd1\x83\xd1\x81\0" -"frosta.no\0pro.tt\0" -"trentinos\xc3\xbc""d-tirol.it\0vestvagoy.no\0tm.za\0ott\0" -"temp-dns.com\0" -"\xe7\xa6\x8f\xe4\xba\x95.jp\0mysecuritycamera.net\0" -"avocat.fr\0swidnica.pl\0" -"ogawa.nagano.jp\0" -"trentin-sud-tirol.it\0lib.ri.us\0is-leet.com\0from.marketing\0" -"osaka.jp\0kilatiron.com\0" -"tv.bb\0re.it\0realm.cz\0*.transurl.be\0" -"soeda.fukuoka.jp\0" -"matsudo.chiba.jp\0" -"pet\0" -"bofa\0" -"skype\0" -"ovh\0" -"boston\0wpmudev.host\0" -"nt.ro\0collegefan.org\0" -"aso.kumamoto.jp\0blockbuster\0" -"inami.toyama.jp\0" -"yk.ca\0pro.vn\0" -"tv.bo\0rodeo\0" -"tv.br\0\xe9\xab\x98\xe7\x9f\xa5.jp\0ath.cx\0" -"\xe8\x8c\xa8\xe5\x9f\x8e.jp\0tokoname.aichi.jp\0" -"myshopblocks.com\0" -"nishikatsura.yamanashi.jp\0\xe0\xb8\x98\xe0\xb8\xb8\xe0\xb8\xa3\xe0\xb8\x81\xe0\xb8\xb4\xe0\xb8\x88.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" -"is-a-player.com\0" -"anan.nagano.jp\0" -"agency\0" -"odawara.kanagawa.jp\0" -"numata.gunma.jp\0chtr.k12.ma.us\0" -"kawakami.nagano.jp\0re.kr\0" -"barsy.uk\0" -"tsuru.yamanashi.jp\0dielddanuorri.no\0" -"kujukuri.chiba.jp\0york.museum\0" -"phd\0hr.eu.org\0" -"hamura.tokyo.jp\0" -"geometre-expert.fr\0from-ak.com\0" -"friuli-venezia-giulia.it\0od.ua\0natura\0" -"shiki.saitama.jp\0" -"fvg.it\0pid\0" -"s3-ap-south-1.amazonaws.com\0" -"arteducation.museum\0foodnetwork\0" -"sologne.museum\0sund.no\0" -"mifune.kumamoto.jp\0sano.tochigi.jp\0" -"kalmykia.su\0*.firenet.ch\0" -"takahama.fukui.jp\0direct\0is-an-artist.com\0" -"shimokitayama.nara.jp\0pin\0" -"*.transurl.eu\0" -"wiih.gov.pl\0" -"american.museum\0" -"co.technology\0" -"toyota.yamaguchi.jp\0ferrero\0" -"higashiizu.shizuoka.jp\0ivano-frankivsk.ua\0mypets.ws\0" -"inashiki.ibaraki.jp\0balsfjord.no\0khakassia.su\0" -"nagoya\0" -"karlsoy.no\0" -"textile.museum\0" -"pors\xc3\xa1\xc5\x8bgu.no\0" -"volvo\0" -"*.bd\0o.bg\0" -"aa.no\0" -"rep.kp\0" -"matsuda.kanagawa.jp\0shiroishi.saga.jp\0" -"sklep.pl\0" -"bungotakada.oita.jp\0" -"gateway.museum\0" -"cust.testing.thingdust.io\0" -"vote\0" -"minakami.gunma.jp\0" -"kitaakita.akita.jp\0name\0webhop.info\0" -"asahi.toyama.jp\0" -"kalmykia.ru\0" -"omachi.saga.jp\0" -"*.ck\0voto\0" -"hobby-site.org\0" +"construction\0" +"culture.museum\0" +"koori.fukushima.jp\0kiwa.mie.jp\0" +"iwamizawa.hokkaido.jp\0" +"kaga.ishikawa.jp\0" +"rsvp\0" +"horology.museum\0" +"gsm.pl\0neustar\0" +"chtr.k12.ma.us\0" +"cesenaforl\xc3\xac.it\0indowapblog.com\0" +"ureshino.mie.jp\0manx.museum\0" "consulting\0" -"dnipropetrovsk.ua\0" -"\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x81\xd1\x80\xd0\xb1\0" -"oya.to\0" -"ski.no\0" -"tv.im\0" -"alibaba\0" -"art.br\0" -"resistance.museum\0is-a-lawyer.com\0" -"tv.it\0pnc\0" -"rj.leg.br\0" -"bond\0" -"orkdal.no\0overhalla.no\0stord.no\0" -"tomigusuku.okinawa.jp\0" -"hamamatsu.shizuoka.jp\0" -"nishiwaki.hyogo.jp\0watch-and-clock.museum\0" -"cr.it\0shinshiro.aichi.jp\0" -"rich\0" -"nat.tn\0servegame.org\0" -"omiya.saitama.jp\0" -"*.er\0" -"bel.tr\0tv.kg\0" -"durham.museum\0" -"collection.museum\0" -"\xe5\xb2\x90\xe9\x98\x9c.jp\0iwate.iwate.jp\0" -"art.do\0nationalfirearms.museum\0" -"empresa.bo\0saobernardo.br\0gc.ca\0*.fk\0hemnes.no\0" -"riobranco.br\0hanawa.fukushima.jp\0hurdal.no\0book\0" -"sagamihara.kanagawa.jp\0" -"idnblogger.com\0" -"df.leg.br\0" -"chikugo.fukuoka.jp\0impertrix.com\0" -"forl\xc3\xac""cesena.it\0" -"jx.cn\0art.dz\0" -"uz.ua\0" -"chikuma.nagano.jp\0" -"aurskog-h\xc3\xb8land.no\0" -"melhus.no\0" -"qld.edu.au\0bronnoy.no\0" -"williamsburg.museum\0" -"hyundai\0" +"muroto.kochi.jp\0" +"tsuruoka.yamagata.jp\0reviews\0" +"\xd0\xbe\xd1\x80\xd0\xb3\0" +"click\0" +"*.northflank.app\0" "from-ri.com\0" -"boleslawiec.pl\0" -"ggee\0" -"tv.na\0" -"izena.okinawa.jp\0" -"flog.br\0okuma.fukushima.jp\0asahi.mie.jp\0primetel.cloud\0" -"florence.it\0chiyoda.gunma.jp\0" -"*.transurl.nl\0" -"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xdb\x83\0" -"kayabe.hokkaido.jp\0memorial\0ham-radio-op.net\0customer.speedpartner.de\0diskstation.org\0" -"duckdns.org\0" -"pro\0s3.dualstack.ap-south-1.amazonaws.com\0uk.com\0mine.nu\0" -"shimogo.fukushima.jp\0yasugi.shimane.jp\0" -"uto.kumamoto.jp\0" -"sandnessjoen.no\0" -"pru\0" -"herad.no\0cc.ky.us\0vapor.cloud\0" -"kr\xc3\xb8""dsherad.no\0" -"jpmorgan\0" -"enf.br\0" -"cc.co.us\0" -"*.jm\0" -"art.ht\0" -"loab\xc3\xa1t.no\0" -"shiroi.chiba.jp\0" -"vlog.br\0americanart.museum\0" -"yamatotakada.nara.jp\0\xc3\xb8rland.no\0" -"hu.net\0" -"ashiya.hyogo.jp\0*.kh\0press\0" -"kawahara.tottori.jp\0d.gv.vc\0barsy.bg\0" -"csx.cc\0" -"biz.bb\0" -"biz.at\0" +"budejju.no\0" +"otaki.chiba.jp\0" +"aid.pl\0" +"odesa.ua\0" +"sarpsborg.no\0" +"kasserver.com\0" +"ott\0" +"kashima.ibaraki.jp\0kosuge.yamanashi.jp\0russia.museum\0cc.az.us\0lib.pa.us\0" +"toya.hokkaido.jp\0" +"akashi.hyogo.jp\0" +"academia.bo\0" +"cri.br\0" +"friuli-vgiulia.it\0\xe5\xb1\xb1\xe5\xbd\xa2.jp\0lukow.pl\0" +"leirfjord.no\0my-wan.de\0" +"pet\0" +"ora.gunma.jp\0pp.se\0pp.ru\0" +"kumamoto.jp\0kvinnherad.no\0ovh\0" +"better-than.tv\0" +"cable-modem.org\0" +"boats\0wales\0" +"salerno.it\0" +"sauherad.no\0" +"trani-barletta-andria.it\0county.museum\0" +"toyota\0" +"cuiaba.br\0" +"\xc3\xa5mot.no\0kongsberg.no\0" +"starostwo.gov.pl\0" +"yamato.fukushima.jp\0hornindal.no\0" +"gmina.pl\0jp.net\0" +"pp.ua\0" +"k12.co.us\0" +"\xd0\xb4\xd0\xb5\xd1\x82\xd0\xb8\0" +"prato.it\0phd\0" +"osaki.miyagi.jp\0" +"\xe7\xb5\x84\xe7\xbb\x87.hk\0lib.mi.us\0" +"kuriyama.hokkaido.jp\0is-very-evil.org\0" +"mihara.kochi.jp\0jeep\0marriott\0" +"ce.leg.br\0" +"askvoll.no\0mincom.tn\0" +"financial\0casacam.net\0smushcdn.com\0" +"mex.com\0" +"mordovia.su\0" +"safety\0" +"pid\0" +"civilisation.museum\0my.eu.org\0app.os.fedoraproject.org\0" +"recife.br\0gotsu.shimane.jp\0\xe4\xb8\xad\xe5\x9b\xbd\0" +"lidl\0hostedpi.com\0" +"cooperativa.bo\0sunndal.no\0" +"pin\0" +"ryukyu\0twmail.net\0" +"loginline.app\0" +"na.it\0karlsoy.no\0daemon.panel.gg\0" +"hair\0" +"from-sd.com\0in.london\0" +"hatoyama.saitama.jp\0\xe4\xb8\xad\xe5\x9c\x8b\0" +"pizza\0" +"ueno.gunma.jp\0" +"friuli-venezia-giulia.it\0ras.ru\0" +"loseyourip.com\0" +"higashi.fukushima.jp\0" +"life\0" +"lib.ia.us\0" +"dyndns1.de\0" +"aero\0" +"busan.kr\0*.hosting.ovh.net\0" +"troandin.no\0" +"grainger\0" +"mordovia.ru\0" +"gitlab.io\0" +"k12.wi.us\0" +"balsfjord.no\0is-a-geek.com\0*.transurl.be\0" +"mayfirst.org\0" +"us.com\0" +"reisen\0" +"wy.us\0sellsyourhome.org\0" +"diamonds\0ua.rs\0" +"showa.gunma.jp\0stream\0" +"yk.ca\0" +"sande.more-og-romsdal.no\0" +"tosa.kochi.jp\0resistance.museum\0" +"carrd.co\0" +"kakinoki.shimane.jp\0" +"vic.au\0dr\xc3\xb8""bak.no\0swiebodzin.pl\0" +"gen.mi.us\0" +"aeroclub.aero\0" +"\xe8\x8c\xa8\xe5\x9f\x8e.jp\0est-a-la-masion.com\0" +"labor.museum\0eurodir.ru\0" +"ohda.shimane.jp\0edgestack.me\0" +"wakasa.fukui.jp\0vip.jelastic.cloud\0" +"taira.toyama.jp\0ngo.lk\0pnc\0" +"indigena.bo\0uto.kumamoto.jp\0" +"okegawa.saitama.jp\0lancashire.museum\0" +"sorfold.no\0" +"seat\0" +"chase\0" +"forex\0phx.enscaled.us\0" +"trentinosued-tirol.it\0" +"kazo.saitama.jp\0" +"notaires.km\0" +"yoka.hyogo.jp\0fh.se\0kerryhotels\0nl.eu.org\0" +"cc.mt.us\0cc.nd.us\0" +"us.ax\0" +"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86\0copro.uk\0" +"stryn.no\0citi\0""1337.pictures\0" +"\xd0\xbe\xd0\xb1\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0ngo.ng\0" +"i.bg\0" +"hamatama.saga.jp\0" +"mazury.pl\0like\0" +"webhop.net\0*.transurl.eu\0" +"championship.aero\0" +"dyndns-wiki.com\0" +"kommune.no\0city\0eu-central-1.elasticbeanstalk.com\0" +"kviteseid.no\0" +"berg.no\0jcloud.ik-server.com\0""1kapp.com\0" +"reise\0" +"naroy.no\0" +"monticello.museum\0" +"v-info.info\0" +"interactive.museum\0" +"azerbaijan.su\0" +"sande.m\xc3\xb8re-og-romsdal.no\0sytes.net\0" +"fishing\0s3.dualstack.ap-southeast-2.amazonaws.com\0" +"from-ms.com\0from-nc.com\0" +"ngo.ph\0seek\0fbxos.fr\0" +"federation.aero\0" +"figueres.museum\0" +"eidskog.no\0" +"graz.museum\0store\0enscaled.sg\0" +"obama.nagasaki.jp\0" +"kyoto.jp\0" +"cri.nz\0abogado\0asso.eu.org\0" +"jgora.pl\0dyn53.io\0" +"defense.tn\0" +"pro\0limo\0" +"salvador.br\0minamioguni.kumamoto.jp\0minano.saitama.jp\0lifestyle\0n4t.co\0" +"1.bg\0" +"ci.it\0kamigori.hyogo.jp\0" +"pru\0discourse.team\0" +"\xd0\xbc\xd1\x81\xd0\xba.\xd1\x80\xd1\x83\xd1\x81\0" +"etne.no\0" +"parma.it\0sk\xc3\xa1nit.no\0kicks-ass.org\0" +"itayanagi.aomori.jp\0kobierzyce.pl\0link\0" +"nakagawa.hokkaido.jp\0" +"ichinomiya.aichi.jp\0portal.museum\0" +"police.uk\0" +"zamami.okinawa.jp\0" +"motoyama.kochi.jp\0" +"okagaki.fukuoka.jp\0" +"actor\0" +"k12.az.us\0" +"ogano.saitama.jp\0estate\0statefarm\0" "pub\0" -"mol.it\0" -"westfalen.museum\0" -"takahagi.ibaraki.jp\0barsy.ca\0" -"biz.az\0kashima.ibaraki.jp\0godaddy\0" -"schokoladen.museum\0" -"ogano.saitama.jp\0" -"otaki.nagano.jp\0sakura\0" -"realty\0" -"nationwide\0" -"sr.it\0properties\0" -"tamaki.mie.jp\0" -"barsy.de\0" -"urbinopesaro.it\0navy\0certmgr.org\0" -"it.ao\0" -"*.mm\0" -"hakui.ishikawa.jp\0" -"tv.sd\0pwc\0software\0" -"bn.it\0" -"biz.cy\0trentin-sudtirol.it\0taito.tokyo.jp\0" -"\xe4\xb8\xad\xe4\xbf\xa1\0" -"biz.dk\0" -"brasil.museum\0" -"asnes.no\0scrapping.cc\0" -"jcloud-ver-jpc.ik-server.com\0" -"nyan.to\0" -"pisz.pl\0" -"prd.fr\0" -"*.np\0" -"karaganda.su\0" -"co.events\0" -"gemological.museum\0intelligence.museum\0" -"hapmir.no\0" -"barsy.eu\0" -"pleskns.com\0" -"nanbu.yamanashi.jp\0" -"undersea.museum\0" -"kita.kyoto.jp\0progressive\0" -"1337.pictures\0" -"biz.et\0tsuga.tochigi.jp\0tv.tr\0dynns.com\0" -"sch.ae\0" -"higashiyodogawa.osaka.jp\0gratangen.no\0" -"ma.gov.br\0" -"yabuki.fukushima.jp\0" -"biz.fj\0" -"nerdpol.ovh\0" -"tv.tz\0" -"anani.br\0*.pg\0" -"decorativearts.museum\0gallery.museum\0tokke.no\0cr.ua\0" -"yamagata.yamagata.jp\0" -"tenri.nara.jp\0homeip.net\0" -"mymediapc.net\0" -"tochigi.tochigi.jp\0eu.org\0" -"ostroda.pl\0" -"cherkasy.ua\0s3.ca-central-1.amazonaws.com\0" -"googlecode.com\0co.education\0" -"shiranuka.hokkaido.jp\0" -"yokosuka.kanagawa.jp\0hokuto.yamanashi.jp\0" -"biz.gl\0" -"kyoto.jp\0curv.dev\0" -"amica\0" -"sk\xc3\xa1nit.no\0style\0" -"corsica\0" -"amusement.aero\0" -"ogose.saitama.jp\0science\0" -"toyotsu.fukuoka.jp\0ostrowwlkp.pl\0suwalki.pl\0" -"art.pl\0" -"mymailer.com.tw\0" -"aizumi.tokushima.jp\0sunndal.no\0" -"unazuki.toyama.jp\0cloudcontrolled.com\0" -"biz.id\0" -"k12.ny.us\0" -"clic2000.net\0barsy.in\0" -"togura.nagano.jp\0\xd1\x81\xd0\xb0\xd0\xb9\xd1\x82\0il.eu.org\0barsy.io\0" -"miyoshi.saitama.jp\0o.se\0" -"*.sapporo.jp\0" -"yamatokoriyama.nara.jp\0" +"ruhr\0" +"feira.br\0k12.la.us\0ng.eu.org\0" +"progressive\0" +"trentino-altoadige.it\0" +"gamagori.aichi.jp\0tula.su\0" +"ukiha.fukuoka.jp\0shw.io\0" +"saintlouis.museum\0ic.gov.pl\0" +"ullensaker.no\0stuff-4-sale.org\0" +"courses\0haus\0" +"ns.ca\0" +"\xd9\xbe\xd8\xa7\xd9\x83\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0" +"agematsu.nagano.jp\0" +"workshop.museum\0mail.pl\0est-le-patron.com\0" +"tsuga.tochigi.jp\0" +"engineer\0" +"servemp3.com\0" +"dell-ogliastra.it\0higashikagura.hokkaido.jp\0" +"trentino-sued-tirol.it\0klabu.no\0" +"gniezno.pl\0" +"lima-city.rocks\0" +"is-a-geek.org\0" +"cruise\0pwc\0" +"wazuka.kyoto.jp\0\xe4\xbf\xa1\xe6\x81\xaf\0" +"portlligat.museum\0" +"palermo.it\0bearalv\xc3\xa1hki.no\0" +"vc.it\0oguni.kumamoto.jp\0lilly\0" +"saobernardo.br\0barsy.menu\0" +"gs.vf.no\0is-a-chef.net\0" +"isleofman.museum\0" +"childrensgarden.museum\0turek.pl\0" +"vercel.app\0" +"ushistory.museum\0" +"us.kg\0" +"nishiazai.shiga.jp\0" +"trentin-s\xc3\xbc""d-tirol.it\0" +"inderoy.no\0" +"honbetsu.hokkaido.jp\0*.transurl.nl\0" +"omega\0" +"university\0" +"tsubame.niigata.jp\0ris\xc3\xb8r.no\0couk.me\0pgafan.net\0" +"matsuzaki.shizuoka.jp\0vindafjord.no\0cc.nm.us\0" +"mein-vigor.de\0" +"hidaka.saitama.jp\0hikawa.shimane.jp\0myfirewall.org\0" +"goiania.br\0" +"r.bg\0from-de.com\0" +"port.fr\0" +"savona.it\0" +"log.br\0" +"americanantiques.museum\0" +"wolomin.pl\0game-server.cc\0" +"midori.chiba.jp\0suzaka.nagano.jp\0mintere.site\0" +"trentinoa-adige.it\0" +"shinagawa.tokyo.jp\0s\xc3\xb8rum.no\0ulvik.no\0" +"\xc3\xa5seral.no\0os.hedmark.no\0" +"katsuragi.wakayama.jp\0" +"nakai.kanagawa.jp\0" +"vet.br\0us.na\0" +"live\0" +"ngo.za\0" +"kofu.yamanashi.jp\0froya.no\0" +"swidnik.pl\0" +"veneto.it\0" +"lamborghini\0" +"bashkiria.ru\0" +"yoshioka.gunma.jp\0i.ng\0ga.us\0" +"bayern\0" +"*.dweb.link\0" +"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0" +"eid.no\0go.leg.br\0" +"industria.bo\0" +"cr.it\0bashkiria.su\0remotewd.com\0" +"reggioemilia.it\0\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86\0" +"kozaki.chiba.jp\0sekikawa.niigata.jp\0" +"gs.cn\0clic2000.net\0" +"eu-west-2.elasticbeanstalk.com\0radio.am\0" +"musashino.tokyo.jp\0byen.site\0" +"sd.cn\0gs.of.no\0total\0" +"scientist.aero\0" +"itakura.gunma.jp\0" +"rome.it\0i.ph\0forum\0yandexcloud.net\0" +"kasumigaura.ibaraki.jp\0gran.no\0\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0" +"misaki.osaka.jp\0" +"nishimera.miyazaki.jp\0\xe5\xb9\xbf\xe4\xb8\x9c\0caa.li\0" +"bungotakada.oita.jp\0myfast.space\0" +"radio.br\0benevento.it\0" +"kadogawa.miyazaki.jp\0oishida.yamagata.jp\0cancerresearch\0" +"hs.run\0" +"rishiri.hokkaido.jp\0" +"k12.md.us\0" +"arita.saga.jp\0" +"nanmoku.gunma.jp\0ogawa.ibaraki.jp\0" +"homeunix.net\0" +"toki.gifu.jp\0nj.us\0\xe3\x81\xbf\xe3\x82\x93\xe3\x81\xaa\0" +"taxi.br\0dev-myqnapcloud.com\0" +"lynx.mythic-beasts.com\0" +"es.gov.br\0shiga.jp\0" +"bible.museum\0naumburg.museum\0imamat\0verm\xc3\xb6gensberater\0" +"tingvoll.no\0s3-website.ca-central-1.amazonaws.com\0" +"ac.ae\0" +"fuettertdasnetz.de\0" +"kitakata.miyazaki.jp\0nakagawa.tokushima.jp\0i.se\0" +"leksvik.no\0" +"philips\0krellian.net\0" +"hachirogata.akita.jp\0otake.hiroshima.jp\0" +"shimane.shimane.jp\0" +"trentinsud-tirol.it\0horonobe.hokkaido.jp\0report\0" +"arq.br\0s3-website-sa-east-1.amazonaws.com\0r.cdn77.net\0" +"allstate\0" +"mill.museum\0upow.gov.pl\0" +"ac.at\0ashiya.hyogo.jp\0loyalist.museum\0vinnytsia.ua\0" +"ac.be\0yamatokoriyama.nara.jp\0" +"redirectme.net\0" +"miyoshi.tokushima.jp\0vossevangen.no\0" +"council.aero\0kawasaki.miyagi.jp\0" +"karikatur.museum\0" +"sex.hu\0" +"delivery\0" +"nanjo.okinawa.jp\0" +"sakura.chiba.jp\0cc.de.us\0radio.fm\0" +"fjell.no\0" +"fudai.iwate.jp\0" +"mishima.shizuoka.jp\0privatizehealthinsurance.net\0" +"fylkesbibl.no\0\xe0\xb2\xad\xe0\xb2\xbe\xe0\xb2\xb0\xe0\xb2\xa4\0cyon.site\0" +"tokai.ibaraki.jp\0kanuma.tochigi.jp\0dyndns.dappnode.io\0" +"chikuho.fukuoka.jp\0""0e.vc\0" +"ac.ci\0alesund.no\0cc.nv.us\0" +"tahara.aichi.jp\0karumai.iwate.jp\0mydatto.net\0" +"guitars\0hobby-site.org\0" +"ac.cn\0kurate.fukuoka.jp\0" +"skanit.no\0" +"ac.cr\0\xe7\xbd\x91\xe7\xbb\x9c\0" +"sakura.tochigi.jp\0" +"assabu.hokkaido.jp\0we.bs\0" +"reklam.hu\0" +"biz.bb\0ac.cy\0" +"biz.at\0" +"jamison.museum\0" +"gangwon.kr\0onavstack.net\0" +"daiwa.hiroshima.jp\0*.magentosite.cloud\0" +"biz.az\0baseball.museum\0\xe5\x95\x86\xe6\xa5\xad.tw\0freeboxos.fr\0" +"serveexchange.com\0gotpantheon.com\0" +"sherbrooke.museum\0" +"arai.shizuoka.jp\0" +"lundbeck\0" +"red\0" +"teshikaga.hokkaido.jp\0" +"lier.no\0" +"cs.keliweb.cloud\0" +"zara\0" +"hokuto.yamanashi.jp\0" +"medecin.km\0santafe.museum\0spydeberg.no\0" +"fukumitsu.toyama.jp\0ren\0sexy\0" +"odawara.kanagawa.jp\0" +"servehumour.com\0" +"ac.fj\0kraanghke.no\0qvc\0" +"\xe7\xb5\x84\xe7\xb9\x94.\xe9\xa6\x99\xe6\xb8\xaf\0" +"biz.cy\0" +"kitashiobara.fukushima.jp\0minato.tokyo.jp\0youth.museum\0biz.dk\0" +"expert\0" +"exhibition.museum\0" +"hl.cn\0americana.museum\0" "graphox.us\0" -"kagamiishi.fukushima.jp\0hizen.saga.jp\0" -"shopping\0" -"prd.km\0" -"living\0" -"kuji.iwate.jp\0" -"matsuura.nagasaki.jp\0england.museum\0" -"cloudaccess.net\0" -"newport.museum\0clubmed\0\xe4\xb8\x96\xe7\x95\x8c\0" -"komono.mie.jp\0is-not-certified.com\0" -"pharmaciens.km\0*.futurecms.at\0" -"\xd8\xa7\xd8\xa8\xd9\x88\xd8\xb8\xd8\xa8\xd9\x8a\0njs.jelastic.vps-host.net\0" -"konan.shiga.jp\0" -"vestre-toten.no\0us-east-1.amazonaws.com\0" -"my.id\0paas.leviracloud.eu\0" -"lpages.co\0" -"klodzko.pl\0hu.eu.org\0ie.eu.org\0" -"hatogaya.saitama.jp\0biz.ki\0" -"prd.mg\0rr.leg.br\0" -"vs.it\0" -"4u.com\0" -"art.sn\0" -"rn.it\0lib.ne.us\0" -"nose.osaka.jp\0roma.museum\0" -"agr.br\0" -"wmcloud.org\0" -"tokorozawa.saitama.jp\0" -"latina.it\0tranibarlettaandria.it\0\xc3\xa1laheadju.no\0mortgage\0" -"iwamizawa.hokkaido.jp\0" -"komoro.nagano.jp\0\xeb\x8b\xb7\xeb\x84\xb7\0" -"fujixerox\0" -"biz.ls\0s\xc3\xb8mna.no\0go.dyndns.org\0" -"trento.it\0sukumo.kochi.jp\0" -"tachiarai.fukuoka.jp\0" -"makurazaki.kagoshima.jp\0rs.leg.br\0sc.leg.br\0spdns.eu\0" -"schule\0barsy.online\0" -"\xe6\xbe\xb3\xe9\x96\x80\0" -"santamaria.br\0" -"isehara.kanagawa.jp\0" -"motosu.gifu.jp\0delmenhorst.museum\0" +"noho.st\0" +"photography.museum\0" +"ac.gn\0jogasz.hu\0" +"basel.museum\0" +"\xd1\x80\xd1\x83\xd1\x81\0" +"cr.ua\0" +"winners\0" +"pesarourbino.it\0" +"sennan.osaka.jp\0oracle\0" +"autos\0" +"ed.ao\0abeno.osaka.jp\0immobilien\0" +"biz.et\0omi.niigata.jp\0" +"plantation.museum\0" +"shobara.hiroshima.jp\0" +"kujukuri.chiba.jp\0" +"nishi.fukuoka.jp\0" +"biz.fj\0" +"\xd8\xb9\xd8\xb1\xd8\xa8\0" +"ac.id\0" +"boehringer\0meinforum.net\0" +"cosenza.it\0" +"tsukumi.oita.jp\0nachikatsuura.wakayama.jp\0prod\0poznan.pl\0gov.scot\0" +"ascolipiceno.it\0familyds.com\0" +"topology.museum\0prof\0" +"ac.il\0physio\0" +"ac.im\0" +"ac.in\0romskog.no\0" +"newjersey.museum\0" +"ac.ir\0delmenhorst.museum\0sex.pl\0" +"\xc4\x8d\xc3\xa1hcesuolo.no\0ril\0biz.gl\0ditchyourip.com\0" +"ed.ci\0chambagri.fr\0" +"pe.ca\0karmoy.no\0" +"rio\0" +"rip\0torproject.net\0" +"ed.cr\0tama.tokyo.jp\0mosj\xc3\xb8""en.no\0" +"zaporizhzhia.ua\0" +"notaires.fr\0lavagis.no\0" +"ac.jp\0rovno.ua\0" +"natural.bo\0hotmail\0" +"r.se\0" +"ac.ke\0" +"cloud.fedoraproject.org\0vs.mythic-beasts.com\0za.net\0" +"eng.br\0shijonawate.osaka.jp\0" +"yasuda.kochi.jp\0" +"sci.eg\0nogi.tochigi.jp\0" +"biz.id\0cpa.pro\0" "dabur\0" -"sch.id\0kadogawa.miyazaki.jp\0myfirewall.org\0" -"ayagawa.kagawa.jp\0" +"frog.museum\0grajewo.pl\0" +"ac.kr\0" +"safety.aero\0cloudns.biz\0" +"ol.no\0" +"endoftheinternet.org\0" +"tochigi.jp\0" +"nango.fukushima.jp\0" +"ac.lk\0" +"museum\0" +"ac.ma\0k12.tn.us\0" +"matera.it\0alstom\0ferrari\0" +"ono.fukui.jp\0shimokitayama.nara.jp\0ac.ls\0" +"kitagawa.kochi.jp\0tachikawa.tokyo.jp\0" +"ac.me\0hawaii.museum\0coupons\0" +"phoenix.museum\0" +"fastvps-server.com\0" +"tozawa.yamagata.jp\0uenohara.yamanashi.jp\0" +"kamiichi.toyama.jp\0" +"biz.ki\0loginline.io\0" +"furubira.hokkaido.jp\0servehalflife.com\0" +"nagai.yamagata.jp\0washtenaw.mi.us\0" +"ac.mu\0bale.museum\0" +"ac.mw\0lefrak\0" +"eu.pythonanywhere.com\0" +"suzuka.mie.jp\0ac.ni\0twmail.org\0" +"ac.mz\0linde\0togliatti.su\0" +"friuli-veneziagiulia.it\0square7.de\0" +"ikata.ehime.jp\0" +"lindesnes.no\0" +"b.ssl.fastly.net\0" +"hikari.yamaguchi.jp\0opoczno.pl\0" +"shirosato.ibaraki.jp\0" +"lib.ct.us\0" +"fujinomiya.shizuoka.jp\0" +"itoman.okinawa.jp\0\xd5\xb0\xd5\xa1\xd5\xb5\0" +"fujikawa.shizuoka.jp\0" +"biz.ls\0ac.nz\0" +"filegear-jp.me\0" +"consultant.aero\0ferrara.it\0ac.pa\0serveblog.net\0" +"africa.com\0" +"valle.no\0amfam\0" +"watchandclock.museum\0is-a-nurse.com\0miniserver.com\0" +"hamamatsu.shizuoka.jp\0drangedal.no\0" +"sd.us\0" +"ham-radio-op.net\0" "biz.mv\0" -"biz.mw\0cloudns.club\0" -"taxi.br\0" -"suedtirol.it\0biz.ni\0" -"\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x80\xd1\x83\xd1\x81\0" -"kusu.oita.jp\0dray-dns.de\0" -"mysecuritycamera.org\0" -"alaheadju.no\0" -"kh.ua\0" -"chikuho.fukuoka.jp\0" -"filatelia.museum\0museum.tt\0" -"suzu.ishikawa.jp\0askim.no\0" -"sch.ir\0biz.nr\0" -"\xe6\xb2\x96\xe7\xb8\x84.jp\0" -"gyeonggi.kr\0" -"!city.sapporo.jp\0skoczow.pl\0" -"wpdevcloud.com\0" -"koge.tottori.jp\0" -"val-d-aosta.it\0sch.jo\0pilots.museum\0xerox\0" -"claims\0app.lmpm.com\0" -"smola.no\0" -"homeftp.org\0" -"kasumigaura.ibaraki.jp\0" -"school.na\0" -"langev\xc3\xa5g.no\0" -"pharmacy\0" -"biz.pk\0" -"tatsuno.hyogo.jp\0biz.pl\0homedepot\0ca-central-1.elasticbeanstalk.com\0" -"agro.bo\0" -"biz.pr\0freedesktop.org\0" -"mulhouse.museum\0tattoo\0" -"cheap\0" -"x.bg\0gotdns.ch\0*.telebit.xyz\0" -"jl.serv.net.mx\0" -"3.bg\0media.hu\0" -"consulado.st\0k12.nm.us\0" -"sch.lk\0storj.farm\0" -"nagano.jp\0nakano.tokyo.jp\0" -"vaksdal.no\0" -"akagi.shimane.jp\0berkeley.museum\0" -"school.nz\0" -"shinjo.yamagata.jp\0franziskaner.museum\0" -"gushikami.okinawa.jp\0mango\0" -"soc.dz\0apigee.io\0" -"red\0" -"fujinomiya.shizuoka.jp\0emb.kw\0" -"sch.ly\0" -"skiptvet.no\0barrell-of-knowledge.info\0" -"yamagata.nagano.jp\0" -"shinichi.hiroshima.jp\0" -"ren\0" -"mordovia.su\0" -"zentsuji.kagawa.jp\0" -"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86\0" -"qvc\0" -"sch.ng\0" -"wang\0*.ex.futurecms.at\0" -"bauhaus\0rn.leg.br\0spdns.de\0" -"is-a-soxfan.org\0" -"cafe\0" -"bozen-suedtirol.it\0" -"hole.no\0" -"point2this.com\0" -"farsund.no\0" -"lib.pr.us\0" -"biz.ss\0aero.tt\0" -"shimamoto.osaka.jp\0gs.hm.no\0\xe6\xbe\xb3\xe9\x97\xa8\0" -"pz.it\0lib.mi.us\0" -"research.aero\0pol.dz\0grane.no\0" -"lu.it\0me.it\0lib.il.us\0voorloper.cloud\0" -"izumisano.osaka.jp\0biz.tj\0" -"trentins\xc3\xbc""dtirol.it\0lib.dc.us\0" -"karuizawa.nagano.jp\0" -"leczna.pl\0" -"samukawa.kanagawa.jp\0video\0home.dyndns.org\0" -"hamada.shimane.jp\0biz.ua\0" -"biz.tr\0" -"biz.tt\0\xe6\x97\xb6\xe5\xb0\x9a\0" -"aero.mv\0" -"ambulance.aero\0" -"fuettertdasnetz.de\0gr.eu.org\0" -"lyngen.no\0" -"me.ke\0" -"szczecin.pl\0ro.leg.br\0" -"yakumo.shimane.jp\0" -"dnsdojo.org\0ddnslive.com\0" -"lunner.no\0sch.qa\0" -"shibata.miyagi.jp\0takahata.yamagata.jp\0hareid.no\0mordovia.ru\0" -"kartuzy.pl\0" -"lapy.pl\0" -"sandvikcoromant\0vs.mythic-beasts.com\0" -"biz.vn\0" -"akune.kagoshima.jp\0ril\0" -"oe.yamagata.jp\0wolterskluwer\0" -"sassari.it\0from-al.com\0" -"stjordal.no\0rio\0" -"rip\0from-mo.com\0" -"nishikata.tochigi.jp\0duck\0" -"s\xc3\xb8r-fron.no\0" -"vevelstad.no\0" -"us.reclaim.cloud\0" -"avianca\0edu.eu.org\0" -"uri.arpa\0" -"pol.ht\0sch.sa\0" -"museum.mv\0sigdal.no\0" -"museum.mw\0" -"matsusaka.mie.jp\0orkanger.no\0skanit.no\0" -"its.me\0" -"kumenan.okayama.jp\0museum.no\0insurance\0oldnavy\0backplaneapp.io\0" -"sch.so\0" -"drammen.no\0media.pl\0" -"observer\0vladikavkaz.ru\0" -"ascoli-piceno.it\0" -"equipment.aero\0" -"yahaba.iwate.jp\0" -"koeln.museum\0" -"ninohe.iwate.jp\0soc.lk\0casino\0xfinity\0" -"arakawa.saitama.jp\0museum.om\0" -"assisi.museum\0bo.telemark.no\0" -"d.bg\0" -"takayama.gifu.jp\0k12.la.us\0" -"wa.edu.au\0rns.tn\0vladikavkaz.su\0" -"geology.museum\0call\0" -"palace.museum\0skien.no\0industries\0" -"beauty\0" -"alfaromeo\0nv.elastyco.com\0" -"meldal.no\0" -"biz.zm\0frontdoor\0" -"tatebayashi.gunma.jp\0" -"bindal.no\0" -"camp\0" -"australia.museum\0lezajsk.pl\0" -"salangen.no\0" -"kiryu.gunma.jp\0netlify.app\0" -"kakogawa.hyogo.jp\0" -"puglia.it\0nisshin.aichi.jp\0" -"esan.hokkaido.jp\0" -"izumi.osaka.jp\0gallup\0photos\0" -"leikanger.no\0meland.no\0demon.nl\0" -"wanouchi.gifu.jp\0" -"\xd0\xba\xd0\xbe\xd0\xbc\0" -"airforce\0" -"nakayama.yamagata.jp\0" -"himeshima.oita.jp\0" -"alabama.museum\0" -"nannestad.no\0" -"urakawa.hokkaido.jp\0yoita.niigata.jp\0homelinux.com\0" -"cpa.pro\0" -"kaneyama.fukushima.jp\0" -"birthplace.museum\0" -"turin.it\0" -"asaka.saitama.jp\0" -"us.eu.org\0" -"tynset.no\0" -"is-a-hunter.com\0" -"ivanovo.su\0" -"inuyama.aichi.jp\0tsuno.kochi.jp\0muos\xc3\xa1t.no\0" -"augustow.pl\0serveirc.com\0" -"vall\xc3\xa9""edaoste.it\0" -"me.so\0" -"gjesdal.no\0ar.com\0" -"bc.ca\0baltimore.museum\0" -"ullensvang.no\0" -"me.tc\0" -"\xe6\xb7\xa1\xe9\xa9\xac\xe9\x94\xa1\0" -"tires\0africa.com\0" -"juif.museum\0" -"s3-website.eu-west-3.amazonaws.com\0*.azurecontainer.io\0" -"tendo.yamagata.jp\0parti.se\0onred.one\0" -"prochowice.pl\0racing\0" -"inf.br\0kota.aichi.jp\0ikeda.nagano.jp\0\xd8\xa7\xd9\x84\xd9\x85\xd8\xba\xd8\xb1\xd8\xa8\0" +"pro.az\0biz.mw\0" +"biz.my\0biz.ni\0" +"shinonsen.hyogo.jp\0url.tw\0" +"tsumagoi.gunma.jp\0ac.pr\0" +"giessen.museum\0" +"pro.br\0ravendb.run\0" +"ritto.shiga.jp\0" +"pe.it\0" +"biz.nr\0" +"camdvr.org\0" +"ed.jp\0" +"s3-website.ap-northeast-2.amazonaws.com\0" +"square7.ch\0" +"sinaapp.com\0" +"tohnosho.chiba.jp\0" +"lib.al.us\0" +"wpenginepowered.com\0" "sap\0" -"cesenaforl\xc3\xac.it\0" -"sas\0" -"nesoddtangen.no\0afamilycompany\0dev.static.land\0" -"kongsvinger.no\0" -"trd.br\0yono.saitama.jp\0" -"\xe9\x95\xb7\xe9\x87\x8e.jp\0fujikawa.shizuoka.jp\0" -"care\0sbi\0" -"sch.zm\0" -"\xe7\xbb\x84\xe7\xb9\x94.hk\0agano.niigata.jp\0newmexico.museum\0me.tz\0" -"me.uk\0" -"convent.museum\0" -"ecologia.bo\0gose.nara.jp\0yosemite.museum\0czest.pl\0neko.am\0" -"stockholm.museum\0sca\0" -"inf.cu\0scb\0" +"ravenna.it\0marugame.kagawa.jp\0atsugi.kanagawa.jp\0" +"hl.no\0" +"software.aero\0sas\0" +"unnan.shimane.jp\0" +"miyama.fukuoka.jp\0toride.ibaraki.jp\0mattel\0" +"pro.cy\0" +"rugby\0" +"doomdns.com\0" +"aso.kumamoto.jp\0sbi\0" +"xnbay.com\0" +"navigation.aero\0divttasvuotna.no\0biz.pk\0" +"biz.pl\0ac.rs\0k12.mn.us\0" +"ac.se\0energy\0radio\0ac.ru\0is-a-geek.net\0" +"pe.kr\0" +"pro.ec\0kisarazu.chiba.jp\0drobak.no\0ac.rw\0" +"sca\0" +"heguri.nara.jp\0biz.pr\0scb\0" "sbs\0" -"me.us\0" -"ogasawara.tokyo.jp\0\xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\0casa\0" -"kagoshima.kagoshima.jp\0cars\0politie\0servemp3.com\0" -"nes.akershus.no\0" -"trentinsuedtirol.it\0keisen.fukuoka.jp\0case\0" -"cash\0" -"s3-us-east-2.amazonaws.com\0" -"honjo.saitama.jp\0gift\0" -"bauern.museum\0" -"kizu.kyoto.jp\0loginline.dev\0mein-vigor.de\0" -"vps.mcdir.ru\0" -"me.vu\0" -"se.leg.br\0" -"saga.jp\0castres.museum\0beta.bounty-full.com\0" -"firewall-gateway.com\0" -"moskenes.no\0" -"arte.bo\0arts.museum\0" -"suwa.nagano.jp\0x.se\0nis.za\0" -"my-gateway.de\0" -"mg.gov.br\0" -"hamatama.saga.jp\0" -"kamiizumi.saitama.jp\0jaguar\0" -"nikaho.akita.jp\0" -"applinzi.com\0" -"oyabe.toyama.jp\0s\xc3\xb8rfold.no\0" -"sakaiminato.tottori.jp\0" -"passenger-association.aero\0run\0" -"air-surveillance.aero\0" -"ritto.shiga.jp\0j\xc3\xb8rpeland.no\0mj\xc3\xb8ndalen.no\0" -"mlbfan.org\0community-pro.de\0" -"nextdirect\0ses\0" -"ba.leg.br\0" -"dynserv.org\0" -"kpmg\0sew\0shell\0" +"homebuilt.aero\0miyoshi.hiroshima.jp\0" +"karasjok.no\0" +"soka.saitama.jp\0" +"al.it\0" +"sumoto.hyogo.jp\0" +"friulivenezia-giulia.it\0\xd1\x81\xd1\x80\xd0\xb1\0*.0emm.com\0" +"amagasaki.hyogo.jp\0" +"rhcloud.com\0" +"ac.th\0" +"eco.br\0ac.sz\0ac.tj\0juegos\0" +"windmill.museum\0" +"forum.hu\0" +"tarama.okinawa.jp\0artdeco.museum\0ilawa.pl\0" +"pro.fj\0" +"oncilla.mythic-beasts.com\0" +"accountants\0avianca\0" +"ikusaka.nagano.jp\0b\xc3\xb8mlo.no\0" +"author.aero\0" +"we.tc\0" +"fyresdal.no\0ac.ug\0" +"lincoln.museum\0ac.tz\0" +"ac.uk\0from-va.com\0" +"kawara.fukuoka.jp\0" +"webhop.info\0" +"kr\xc3\xa5""anghke.no\0lib.gu.us\0" +"utah.museum\0be.ax\0" +"kvanangen.no\0" +"soc.dz\0" +"h\xc3\xa5.no\0s3.cn-north-1.amazonaws.com.cn\0" +"sciences.museum\0" +"takazaki.miyazaki.jp\0and\xc3\xb8y.no\0limited\0run\0" +"mycloud.by\0bloxcms.com\0" +"misato.wakayama.jp\0" +"biz.ss\0ses\0" +"watch-and-clock.museum\0akrehamn.no\0" +"hdfc\0" +"ac.vn\0sew\0" "sex\0" -"shinjo.nara.jp\0monmouth.museum\0" -"pol.tr\0bugatti\0" -"mar.it\0" -"otofuke.hokkaido.jp\0" -"imdb\0" -"bio.br\0tjmaxx\0" -"sfr\0" -"naoshima.kagawa.jp\0" -"nantan.kyoto.jp\0rwe\0" -"shirataka.yamagata.jp\0" -"is-a-candidate.org\0" -"mitsubishi\0" -"dvag\0" -"cologne\0" -"ed.ao\0" -"kanonji.kagawa.jp\0coach\0education\0" -"association.museum\0" -"kunigami.okinawa.jp\0haibara.shizuoka.jp\0" -"meloy.no\0br.com\0cdn77-ssl.net\0" -"nakagyo.kyoto.jp\0kahoku.yamagata.jp\0" -"grocery\0" -"bozen.it\0" -"tgory.pl\0" -"h\xc3\xa1""bmer.no\0" -"kiwi.nz\0agro.pl\0" -"ed.ci\0geek.nz\0" -"eating-organic.net\0" -"evenassi.no\0" -"kitakata.fukushima.jp\0" -"nara.jp\0" -"imb.br\0" -"ed.cr\0" -"kazuno.akita.jp\0" -"shimizu.shizuoka.jp\0" -"izumiotsu.osaka.jp\0cymru.museum\0pgfog.com\0" -"tirol\0" -"honjyo.akita.jp\0" -"\xd8\xa8\xda\xbe\xd8\xa7\xd8\xb1\xd8\xaa\0fujitsu\0" -"kembuchi.hokkaido.jp\0la.us\0ski\0" -"rade.no\0" -"brunel.museum\0" -"memorial.museum\0unicom\0" -"mediocampidano.it\0from-de.com\0" -"dvrcam.info\0" -"kawaba.gunma.jp\0cc.wi.us\0" -"yaizu.shizuoka.jp\0cc.sd.us\0" -"inf.mk\0loten.no\0" -"kitagawa.kochi.jp\0sky\0" -"judygarland.museum\0ulm.museum\0" -"norddal.no\0" -"cloud.jelastic.open.tim.it\0" -"krasnik.pl\0" -"iglesiascarbonia.it\0" -"d.se\0" -"jinsekikogen.hiroshima.jp\0" -"adult.ht\0" -"\xd0\xba\xd1\x80\xd1\x8b\xd0\xbc.\xd1\x80\xd1\x83\xd1\x81\0" -"tozawa.yamagata.jp\0" -"brandywinevalley.museum\0kherson.ua\0" -"baseball.museum\0" -"edunet.tn\0" -"watch\0" -"babia-gora.pl\0" -"cri.br\0is-a-teacher.com\0" -"am.leg.br\0" -"television.museum\0" -"nishinoomote.kagoshima.jp\0omi.nagano.jp\0" +"takamori.kumamoto.jp\0biz.tj\0" +"def.br\0" +"legal\0platform0.app\0" +"itabashi.tokyo.jp\0\xe9\xa3\x9e\xe5\x88\xa9\xe6\xb5\xa6\0" +"takahagi.ibaraki.jp\0yodobashi\0" +"pro.ht\0kyotanabe.kyoto.jp\0kautokeino.no\0biz.ua\0" +"kuroishi.aomori.jp\0biz.tr\0sfr\0" +"niimi.okayama.jp\0" +"agriculture.museum\0biz.tt\0" +"versailles.museum\0rwe\0" +"!city.nagoya.jp\0" +"platter-app.dev\0" +"ed.pw\0" +"sv.it\0biratori.hokkaido.jp\0" +"nose.osaka.jp\0" +"lasalle\0" +"krakow.pl\0" +"al.no\0" +"olawa.pl\0wien.funkfeuer.at\0" +"lur\xc3\xb8y.no\0" +"chernovtsy.ua\0" +"\xd0\xb0\xd0\xba.\xd1\x81\xd1\x80\xd0\xb1\0" +"bruxelles.museum\0sm.ua\0" +"biz.vn\0\xd8\xa7\xd9\x84\xd9\x8a\xd9\x85\xd9\x86\0" +"operaunite.com\0" +"medecin.fr\0mywire.org\0" +"nakano.tokyo.jp\0skiptvet.no\0" +"netlify.app\0" +"limanowa.pl\0" +"yandex\0" +"ac.za\0" +"her\xc3\xb8y.nordland.no\0" +"in-the-band.net\0" +"kyowa.hokkaido.jp\0""611.to\0" +"ac.zm\0travelers\0" +"funahashi.toyama.jp\0tysfjord.no\0" +"oppdal.no\0" +"minamiminowa.nagano.jp\0" +"pn.it\0pictures\0" +"ac.zw\0gitapp.si\0" +"miura.kanagawa.jp\0" +"uslivinghistory.museum\0" +"ski\0""12hp.de\0" +"zachpomor.pl\0is-a-green.com\0be.gy\0" +"hamburg\0" +"blackbaudcdn.net\0" +"pro.na\0homeunix.org\0" +"aisho.shiga.jp\0verdal.no\0" +"pro.mv\0foodnetwork\0" "servesarcasm.com\0" -"homeftp.net\0" -"otsuki.kochi.jp\0" -"shiwa.iwate.jp\0" -"tondabayashi.osaka.jp\0" -"better-than.tv\0impertrixcdn.com\0" -"lib.ut.us\0" -"mitsuke.niigata.jp\0\xe4\xba\x9a\xe9\xa9\xac\xe9\x80\x8a\0" -"rc.it\0" -"aurskog-holand.no\0stokke.no\0" -"chrome\0ravendb.community\0" -"mn.it\0spa\0xy.ax\0" -"chippubetsu.hokkaido.jp\0lavangen.no\0" -"taifun-dns.de\0" -"witd.gov.pl\0" -"mitane.akita.jp\0chijiwa.nagasaki.jp\0wlocl.pl\0" -"barueri.br\0soy\0" -"*.dweb.link\0" -"immo\0" -"omachi.nagano.jp\0n\xc3\xa1vuotna.no\0gos.pk\0" -"jan-mayen.no\0" +"sky\0" +"miharu.fukushima.jp\0\xd0\xbc\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0\0" +"soc.lk\0" +"depot.museum\0biz.zm\0" +"insurance.aero\0waw.pl\0" +"tana.no\0" +"okinawa.jp\0forde.no\0" +"ginan.gifu.jp\0" +"tokigawa.saitama.jp\0gitpage.si\0" +"cheap\0" +"takinoue.hokkaido.jp\0sydney.museum\0""12hp.at\0" +"otobe.hokkaido.jp\0kaisei.kanagawa.jp\0versicherung\0" +"pro.om\0" +"ass.km\0" +"vercel.dev\0" +"georgia.su\0" +"shopitsite.com\0" +"sukumo.kochi.jp\0" +"agdenes.no\0own.pm\0" +"off.ai\0" +"london.cloudapps.digital\0" +"cloudfront.net\0" +"training\0" +"wakuya.miyagi.jp\0brandywinevalley.museum\0" +"orsites.com\0" +"shaw\0""12hp.ch\0" +"monzaedellabrianza.it\0melhus.no\0" +"matsubara.osaka.jp\0" +"ma.gov.br\0dovre.no\0pro.pr\0" +"oygarden.no\0" +"\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x81\xd1\x80\xd0\xb1\0" +"misawa.aomori.jp\0" +"maibara.shiga.jp\0health.museum\0" +"tours\0" +"s3-ap-northeast-2.amazonaws.com\0" +"al.us\0to.gt\0" +"\xec\x82\xbc\xec\x84\xb1\0" +"\xe5\x80\x8b\xe4\xba\xba.hk\0" +"pulawy.pl\0" +"sorum.no\0no-ip.org\0" +"spa\0" +"okoppe.hokkaido.jp\0sosnowiec.pl\0holdings\0" +"higashiomi.shiga.jp\0" +"club\0" +"wloclawek.pl\0" +"kosai.shizuoka.jp\0nasushiobara.tochigi.jp\0soy\0" +"aland.fi\0altervista.org\0" +"sor-odal.no\0global.prod.fastly.net\0" +"s3-website-us-west-2.amazonaws.com\0" +"clinique\0" +"udine.it\0turystyka.pl\0" "tab\0" -"ed.jp\0fh.se\0" -"hotels\0" -"pippu.hokkaido.jp\0" -"\xe6\xbb\x8b\xe8\xb3\x80.jp\0" -"openair.museum\0" -"is-into-cars.com\0" -"higashikagura.hokkaido.jp\0" -"soja.okayama.jp\0" -"he.cn\0" -"shiftedit.io\0" -"herokuapp.com\0" -"midtre-gauldal.no\0directory\0" -"tax\0" -"friulivenezia-giulia.it\0\xe7\xbe\xa4\xe9\xa6\xac.jp\0cbre\0" -"pymnt.uk\0" +"mo.cn\0dnsdojo.com\0" +"*.developer.app\0" +"to.it\0bydgoszcz.pl\0" +"aioi.hyogo.jp\0tsunan.niigata.jp\0nsupdate.info\0" +"tsurugashima.saitama.jp\0" +"sld.do\0gs.tr.no\0" +"workers.dev\0" +"philately.museum\0pomorze.pl\0" +"brindisi.it\0" +"natori.miyagi.jp\0" +"naustdal.no\0fastlylb.net\0" +"athleta\0tax\0" +"nis.za\0" +"miyashiro.saitama.jp\0" +"kisofukushima.nagano.jp\0" "srl\0" -"nyny.museum\0" -"s3.amazonaws.com\0" -"minami-alps.yamanashi.jp\0enonic.io\0" -"nishitosa.kochi.jp\0naustdal.no\0paas.massivegrid.com\0" -"publishproxy.com\0" -"halden.no\0" -"narusawa.yamanashi.jp\0astronomy.museum\0" -"tci\0\xe5\xae\xb6\xe9\x9b\xbb\0armenia.su\0" -"yasuda.kochi.jp\0" -"inf.ua\0" -"sjc.br\0yoshimi.saitama.jp\0radoy.no\0" -"meiwa.gunma.jp\0" -"toyotomi.hokkaido.jp\0utashinai.hokkaido.jp\0" -"hokuto.hokkaido.jp\0stc\0" -"film.hu\0as.us\0ap.leg.br\0" -"bo.nordland.no\0elastyco.com\0" -"suisse.museum\0" -"dnsdojo.net\0" -"tdk\0" -"servehumour.com\0" -"\xe0\xb0\xad\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\xa4\xe0\xb1\x8d\0" -"chizu.tottori.jp\0" -"tanabe.kyoto.jp\0jp.net\0azurestaticapps.net\0" -"hjelmeland.no\0investments\0" -"m.bg\0" -"k12.md.us\0" -"citadel\0and.mom\0" -"tamakawa.fukushima.jp\0oppdal.no\0tel\0" -"poa.br\0" -"air-traffic-control.aero\0genova.it\0" -"haboro.hokkaido.jp\0muika.niigata.jp\0" -"yamanobe.yamagata.jp\0divttasvuotna.no\0" -"sa.com\0homelinux.net\0isa-hockeynut.com\0" -"sandoy.no\0" -"\xe5\x85\xac\xe5\x8f\xb8.\xe9\xa6\x99\xe6\xb8\xaf\0boomla.net\0" -"lomza.pl\0" -"chofu.tokyo.jp\0" -"map.fastly.net\0" -"omuta.fukuoka.jp\0" -"seika.kyoto.jp\0" -"land\0" -"higashimatsushima.miyagi.jp\0playstation\0togliatti.su\0" -"abr.it\0plaza.museum\0" -"oshima.yamaguchi.jp\0ebiz.tw\0" -"tt.im\0" -"ota.gunma.jp\0ed.pw\0" -"mail.pl\0\xd8\xa7\xd9\x84\xd9\x8a\xd9\x85\xd9\x86\0" -"lib.tx.us\0" -"caserta.it\0aarborte.no\0" -"ud.it\0" +"kawanishi.hyogo.jp\0rade.no\0" +"appchizi.com\0" +"spacekit.io\0" +"torsken.no\0pro.tt\0" +"kashima.saga.jp\0" +"tsuno.kochi.jp\0" +"cc.mi.us\0" +"society.museum\0" +"ogata.akita.jp\0tci\0" +"royken.no\0academy\0" +"jampa.br\0work\0" +"film.museum\0gos.pk\0definima.io\0" +"milan.it\0" +"stc\0" +"xs4all.space\0" +"spjelkavik.no\0stcgroup\0" +"to.md\0" +"mining.museum\0" +"pro.vn\0tdk\0" +"nature.museum\0in.na\0" +"friulivegiulia.it\0miyagi.jp\0" +"kamioka.akita.jp\0harstad.no\0jotelulu.cloud\0" +"engineering\0\xe9\x9b\xbb\xe8\xa8\x8a\xe7\x9b\x88\xe7\xa7\x91\0" +"nantan.kyoto.jp\0bindal.no\0fage\0" +"*.uberspace.de\0" +"kristiansand.no\0" +"okawa.fukuoka.jp\0in.ni\0" +"transporte.bo\0lib.az.us\0shia\0" +"sciencecenters.museum\0" +"kasamatsu.gifu.jp\0abbvie\0wroc.pl\0srht.site\0" +"k12.de.us\0" +"tel\0cloudcontrolapp.com\0" +"*.ex.futurecms.at\0" +"cloudaccess.net\0" +"ohi.fukui.jp\0cloud-fr1.unispace.io\0" +"rag-cloud.hosteur.com\0" +"!city.kobe.jp\0" +"coach\0voyage\0" +"likescandy.com\0" +"jewishart.museum\0" "yashiro.hyogo.jp\0" -"ogawa.ibaraki.jp\0embroidery.museum\0" -"po.it\0bremanger.no\0" -"thd\0fr.eu.org\0" +"kerryproperties\0" +"kahoku.ishikawa.jp\0" +"\xe0\xb9\x80\xe0\xb8\x99\xe0\xb9\x87\xe0\xb8\x95.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"jewelry\0\xe6\x9b\xb8\xe7\xb1\x8d\0" +"flog.br\0" +"conference.aero\0bn.it\0ostroleka.pl\0eu.com\0" +"stpetersburg.museum\0xerox\0omniwe.site\0za.org\0" +"fail\0guge\0" +"co.technology\0tuxfamily.org\0" +"mo.it\0firewall-gateway.net\0" +"nord-odal.no\0" +"gs.mr.no\0" +"hokuryu.hokkaido.jp\0itami.hyogo.jp\0" +"minami.fukuoka.jp\0sor-fron.no\0" +"thd\0" +"koshimizu.hokkaido.jp\0arida.wakayama.jp\0" +"voting\0" +"la-spezia.it\0pordenone.it\0" +"lv.ua\0" +"kitakata.fukushima.jp\0" +"servep2p.com\0" +"mihama.mie.jp\0" +"vlog.br\0directory\0" +"taito.tokyo.jp\0" +"vibo-valentia.it\0mito.ibaraki.jp\0ashgabad.su\0" +"education.museum\0" +"lancaster\0" +"barlettatraniandria.it\0in.rs\0" +"musica.ar\0" +"r\xc3\xb8mskog.no\0" +"yonezawa.yamagata.jp\0xy.ax\0" +"yokosuka.kanagawa.jp\0sumida.tokyo.jp\0h\xc3\xb8ylandet.no\0jls-sto2.elastx.net\0" +"shimabara.nagasaki.jp\0" +"trentino-alto-adige.it\0tenei.fukushima.jp\0events\0lolipop.io\0" +"from-or.com\0" +"hamburg.museum\0" +"frontier\0" +"musica.bo\0casino.hu\0" +"mat.br\0" +"\xe4\xb8\xaa\xe4\xba\xba.hk\0" +"yuza.yamagata.jp\0" +"walter\0" +"in.th\0" +"carbonia-iglesias.it\0" +"trentino-s-tirol.it\0" +"svizzera.museum\0" +"birdart.museum\0tjx\0" +"movie\0" +"vard\xc3\xb8.no\0" +"takasago.hyogo.jp\0tatsuno.hyogo.jp\0gorlice.pl\0" +"in.ua\0myfast.host\0" +"raholt.no\0" +"haboro.hokkaido.jp\0from-mn.com\0" "botanicgarden.museum\0" -"navuotna.no\0lib.hi.us\0" -"tsu.mie.jp\0" -"matsukawa.nagano.jp\0" -"wakasa.tottori.jp\0" -"cloudns.info\0" -"kristiansand.no\0" -"lel.br\0uhren.museum\0midsund.no\0hotel.tz\0" -"yoshinogari.saga.jp\0" -"*.kawasaki.jp\0" -"catering.aero\0assabu.hokkaido.jp\0" -"monticello.museum\0pics\0" -"town\0" -"media.aero\0minowa.nagano.jp\0" -"info\0" -"friuli-veneziagiulia.it\0kamikawa.hokkaido.jp\0torino.museum\0" -"yokkaichi.mie.jp\0" -"imizu.toyama.jp\0" -"soma.fukushima.jp\0sells-it.net\0" -"andriabarlettatrani.it\0" -"contemporaryart.museum\0" -"cri.nz\0\xd0\xbc\xd0\xba\xd0\xb4\0" -"cloud.unispace.io\0" -"news.hu\0" -"yamada.toyama.jp\0vestby.no\0" -"yatsuka.shimane.jp\0" +"sucks\0" +"shirako.chiba.jp\0" +"shinshinotsu.hokkaido.jp\0" +"shop\0" +"ogaki.gifu.jp\0" +"takanabe.miyazaki.jp\0cc.ca.us\0" +"show\0" +"broker\0" +"in.us\0fans\0" +"sld.pa\0" +"iglesiascarbonia.it\0\xe5\x9c\xa8\xe7\xba\xbf\0" +"help\0scjohnson\0" +"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0paris.museum\0barsy.mobi\0" +"wskr.gov.pl\0" +"chikushino.fukuoka.jp\0" +"tosashimizu.kochi.jp\0jewelry.museum\0cologne\0" +"creation.museum\0" +"g.bg\0myiphost.com\0" +"trader.aero\0" "delta\0" -"tjx\0" -"s\xc3\xbc""dtirol.it\0" -"nome.pt\0toys\0" -"toyohashi.aichi.jp\0mn.us\0" -"b\xc3\xa6rum.no\0" -"readthedocs.io\0" -"chattanooga.museum\0" -"urayasu.chiba.jp\0hirono.iwate.jp\0" -"*.vps.myjino.ru\0" -"bruxelles.museum\0fhv.se\0" -"archi\0" -"narashino.chiba.jp\0broke-it.net\0" -"okawa.kochi.jp\0" -"test.tj\0" -"hiraya.nagano.jp\0" -"nyc.museum\0ap-northeast-2.elasticbeanstalk.com\0" -"shimoji.okinawa.jp\0" -"musica.ar\0miyama.mie.jp\0" -"kushimoto.wakayama.jp\0" -"prime\0" -"ybo.review\0" -"fujisawa.kanagawa.jp\0" -"k12.ga.us\0" -"deno-staging.dev\0" -"from-in.com\0" -"chieti.it\0kred\0" -"krakow.pl\0" -"s3-website-ap-southeast-2.amazonaws.com\0" -"musica.bo\0florida.museum\0" -"house.museum\0" -"yoichi.hokkaido.jp\0" -"futbol\0s3.eu-west-2.amazonaws.com\0" -"misugi.mie.jp\0london.museum\0" -"\xe9\x95\xb7\xe5\xb4\x8e.jp\0" -"isla.pr\0school.za\0" -"\xd0\xbc\xd0\xbe\xd0\xbd\0" -"journal.aero\0bsb.br\0kawajima.saitama.jp\0" -"webredirect.org\0" -"homesecuritypc.com\0" -"time.museum\0fylkesbibl.no\0" -"lib.wy.us\0test.ru\0" -"wakayama.wakayama.jp\0top\0" -"hotel.lk\0shouji\0on-aptible.com\0" -"mizumaki.fukuoka.jp\0" -"sp.it\0" -"urn.arpa\0mc.eu.org\0" -"wa.au\0" -"builders\0\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0\0" -"versailles.museum\0" -"naie.hokkaido.jp\0" -"eastcoast.museum\0" -"\xd8\xa7\xd9\x84\xd8\xb9\xd9\x84\xd9\x8a\xd8\xa7\xd9\x86\0" -"bl.it\0" -"611.to\0" -"woodside\0" -"vda.it\0" -"hb.cldmail.ru\0" -"mallorca.museum\0" -"aerobatic.aero\0" -"moriyama.shiga.jp\0sande.m\xc3\xb8re-og-romsdal.no\0" -"dgca.aero\0rikuzentakata.iwate.jp\0tsunan.niigata.jp\0" -"lt.eu.org\0" -"is-a-bookkeeper.com\0" -"cesenaforli.it\0kamioka.akita.jp\0and.museum\0" -"otsuka\0" -"is.gov.pl\0" -"iveland.no\0" -"ah.cn\0" -"hatsukaichi.hiroshima.jp\0" -"obu.aichi.jp\0" -"ubs\0" -"forex\0" -"gouv.fr\0kvinnherad.no\0siljan.no\0trv\0" -"lamborghini\0pgafan.net\0" -"elverum.no\0hitachi\0" -"halsa.no\0ping\0" -"nordreisa.no\0" -"pink\0" -"rzeszow.pl\0" -"gu.us\0eu-west-2.elasticbeanstalk.com\0ravendb.me\0" -"hotel.hu\0filegear.me\0" -"campobasso.it\0" -"ouchi.saga.jp\0" -"ravendb.run\0" -"fnd.br\0" -"soni.nara.jp\0qbuser.com\0" -"\xc3\xb8rsta.no\0cloudns.pro\0" -"cc.oh.us\0" -"susaki.kochi.jp\0technology\0" -"pagefrontapp.com\0" -"gouv.ht\0homeunix.net\0" -"k12.wa.us\0tui\0is-a-landscaper.com\0" -"monza.it\0inagi.tokyo.jp\0" -"indigena.bo\0mitou.yamaguchi.jp\0" -"rmit\0from-mi.com\0" -"kyowa.akita.jp\0setagaya.tokyo.jp\0" -"m.se\0" -"toyono.osaka.jp\0selje.no\0" -"platform0.app\0" -"stockholm\0" -"k12.ar.us\0" -"caravan\0" -"tonsberg.no\0" -"\xe7\xae\x87\xe4\xba\xba.hk\0iwi.nz\0\xe3\x83\x95\xe3\x82\xa1\xe3\x83\x83\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\0" -"gouv.bj\0gb.com\0" -"omotego.fukushima.jp\0taketomi.okinawa.jp\0" -"tama.tokyo.jp\0salon\0" -"isesaki.gunma.jp\0" -"tvs\0" -"cuiaba.br\0" -"watari.miyagi.jp\0grong.no\0dyndns-ip.com\0" -"news\0" -"livinghistory.museum\0" -"okutama.tokyo.jp\0kustanai.ru\0" -"gouv.ci\0" -"kawachinagano.osaka.jp\0fribourg.museum\0" -"higashikawa.hokkaido.jp\0steigen.no\0" -"toyokawa.aichi.jp\0ishigaki.okinawa.jp\0" -"firenze.it\0" -"ato.br\0tonaki.okinawa.jp\0" -"vinnytsia.ua\0" -"recife.br\0next\0" -"steam.museum\0" -"\xe4\xbd\x90\xe8\xb3\x80.jp\0onion\0" -"north.museum\0kustanai.su\0" -"trentinsued-tirol.it\0" -"hinode.tokyo.jp\0" -"raisa.no\0" -"miura.kanagawa.jp\0" -"showtime\0mc.ax\0" -"eastasia.azurestaticapps.net\0" -"*.compute.estate\0" -"galsa.no\0" -"moma.museum\0" -"tsugaru.aomori.jp\0" -"dyndns-office.com\0" -"sn\xc3\xa5sa.no\0is-a-anarchist.com\0" -"dyn53.io\0" -"freiburg.museum\0" -"kamisunagawa.hokkaido.jp\0" -"qh.cn\0" -"sera.hiroshima.jp\0malvik.no\0" -"hn.cn\0" -"obira.hokkaido.jp\0dyndns.org\0miniserver.com\0" -"sor-fron.no\0" -"ballangen.no\0" -"sor-odal.no\0" -"minato.tokyo.jp\0pfizer\0" -"caa.aero\0" -"adobeaemcloud.com\0" -"\xe5\xb2\xa9\xe6\x89\x8b.jp\0legnica.pl\0" -"southcarolina.museum\0juniper\0" -"frei.no\0" -"srv.br\0" -"nishikawa.yamagata.jp\0" -"fundacio.museum\0ok.us\0" -"uchinada.ishikawa.jp\0botanical.museum\0" -"nishiarita.saga.jp\0int.eu.org\0" -"ga.us\0" -"ogi.saga.jp\0" -"konyvelo.hu\0" -"mansion.museum\0rl.no\0" -"bestbuy\0from-ky.com\0" -"soo.kagoshima.jp\0kppsp.gov.pl\0cc.ri.us\0" -"saiki.oita.jp\0" -"yachts\0" -"rec.br\0cc.mt.us\0cc.nd.us\0\xe7\xb6\xb2\xe7\xb5\xa1.\xe9\xa6\x99\xe6\xb8\xaf\0" -"protonet.io\0" -"kitami.hokkaido.jp\0" -"centralus.azurestaticapps.net\0" -"ra-ru.ru\0" -"v.bg\0s3.dualstack.ap-southeast-1.amazonaws.com\0" -"ah.no\0" -"britishcolumbia.museum\0aid.pl\0" -"1.bg\0" -"ybo.science\0" -"poniatowa.pl\0" -"rec.co\0gr.com\0" -"k\xc3\xa5""fjord.no\0" -"washingtondc.museum\0" -"kamimine.saga.jp\0" -"ichiba.tokushima.jp\0luzern.museum\0loginline.app\0" -"tosu.saga.jp\0uno\0" -"des.br\0myoko.niigata.jp\0" -"otaki.chiba.jp\0" -"is-very-good.org\0" -"kicks-ass.net\0" -"otsuki.yamanashi.jp\0uol\0" -"frontier\0" -"handa.aichi.jp\0sweetpepper.org\0wellbeingzone.co.uk\0" -"g\xc3\xbcnstigliefern.de\0" -"gildeskal.no\0se.net\0ru.net\0" -"ikeda.fukui.jp\0community.museum\0osaka\0serveftp.net\0" -"culture.museum\0fineart.museum\0" -"from-pr.com\0" -"mk.eu.org\0" -"for-the.biz\0" -"aki.kochi.jp\0" -"yamato.fukushima.jp\0" -"fuefuki.yamanashi.jp\0*.in.futurecms.at\0fra1-de.cloudjiffy.net\0" -"sanfrancisco.museum\0" -"mc.it\0kyonan.chiba.jp\0yahoo\0" -"otsu.shiga.jp\0hoylandet.no\0konsulat.gov.pl\0ups\0" -"nanporo.hokkaido.jp\0honefoss.no\0lib.de.us\0" +"watarai.mie.jp\0" +"sm\xc3\xb8la.no\0" +"aure.no\0" +"yame.fukuoka.jp\0otari.nagano.jp\0\xd1\x83\xd0\xba\xd1\x80\0" +"tsukiyono.gunma.jp\0kyoto\0" +"etc.br\0saigawa.fukuoka.jp\0" +"\xe5\xa8\xb1\xe4\xb9\x90\0" +"lib.as.us\0" +"ozu.ehime.jp\0\xd0\xb1\xd0\xb8\xd0\xb7.\xd1\x80\xd1\x83\xd1\x81\0" +"nago.okinawa.jp\0" +"*.sch.uk\0walmart\0\xe4\xbc\x81\xe4\xb8\x9a\0adimo.co.uk\0" +"works.aero\0" +"iwanai.hokkaido.jp\0" +"orangecloud.tn\0" +"top\0" +"farmers.museum\0" +"farm\0international\0" +"skole.museum\0" +"filegear.me\0" +"eigersund.no\0" +"matsuyama.ehime.jp\0" +"\xe9\xb9\xbf\xe5\x85\x90\xe5\xb3\xb6.jp\0" +"kitagata.gifu.jp\0" +"joso.ibaraki.jp\0" +"yokawa.hyogo.jp\0uppo.gov.pl\0green\0" +"ing.pa\0" +"grimstad.no\0fast\0" +"beeldengeluid.museum\0" +"ishigaki.okinawa.jp\0mykolaiv.ua\0" +"travelchannel\0" +"\xd1\x81\xd0\xbf\xd0\xb1.\xd1\x80\xd1\x83\xd1\x81\0" +"shingu.hyogo.jp\0air.museum\0here\0ybo.faith\0" +"santabarbara.museum\0" +"fujimi.saitama.jp\0hammarfeasta.no\0" +"okazaki.aichi.jp\0" +"inder\xc3\xb8y.no\0" +"d.gv.vc\0" +"brussels\0charity\0\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x80\xd1\x83\xd1\x81\0" +"doctor\0ubs\0" +"masuda.shimane.jp\0" +"trv\0\xe5\x98\x89\xe9\x87\x8c\xe5\xa4\xa7\xe9\x85\x92\xe5\xba\x97\0" +"sondrio.it\0guru\0" +"mo.us\0doesntexist.com\0" +"mydissent.net\0" +"naturalsciences.museum\0" +"vang.no\0" +"kosaka.akita.jp\0stateofdelaware.museum\0" +"bjerkreim.no\0" +"utazu.kagawa.jp\0paderborn.museum\0ilovecollege.info\0" +"journalist.aero\0tlon.network\0" +"ikoma.nara.jp\0" +"oita.jp\0" +"es.leg.br\0myforum.community\0" +"polkowice.pl\0" +"pasadena.museum\0" +"va.it\0" +"us-west-1.elasticbeanstalk.com\0" +"mx.na\0volvo\0" +"qsl.br\0" +"tui\0" +"frogans\0jp.kg\0" +"izumo.shimane.jp\0" +"itako.ibaraki.jp\0" +"sampa.br\0miyoshi.saitama.jp\0" +"h\xc3\xa1pmir.no\0" +"*.svc.firenet.ch\0" +"freebox-os.com\0" +"wa.edu.au\0" +"edunet.tn\0" +"is-a-lawyer.com\0" +"budapest\0" +"*.yokohama.jp\0tanohata.iwate.jp\0tx.us\0tvs\0" +"\xe6\x94\xbf\xe5\xba\x9c.hk\0" +"perugia.it\0" +"p.bg\0murayama.yamagata.jp\0jp.md\0" +"*.advisor.ws\0" +"dynv6.net\0" +"verran.no\0" +"yokote.akita.jp\0freiburg.museum\0" +"kyonan.chiba.jp\0" +"ri.it\0" +"yorii.saitama.jp\0" +"vallee-d-aoste.it\0" +"gs.rl.no\0" +"balat.no\0prochowice.pl\0forsale\0" +"\xe7\xb6\xb2\xe7\xb5\xa1.\xe9\xa6\x99\xe6\xb8\xaf\0diskstation.org\0" +"\xe5\xbe\xb3\xe5\xb3\xb6.jp\0*.landing.myjino.ru\0" +"seiyo.ehime.jp\0austin.museum\0" +"oristano.it\0" +"bio.br\0leangaviika.no\0" +"silk\0" +"tr.eu.org\0" +"ebina.kanagawa.jp\0obuse.nagano.jp\0" +"sa-east-1.elasticbeanstalk.com\0" +"television.museum\0" +"karasuyama.tochigi.jp\0" +"va.no\0" +"fukagawa.hokkaido.jp\0" +"shakotan.hokkaido.jp\0ae.org\0" +"baghdad.museum\0*.sys.qcx.io\0" +"bozen-s\xc3\xbc""dtirol.it\0" +"mitoyo.kagawa.jp\0sina\0" +"asnes.no\0homelinux.com\0" +"8.bg\0" +"cc.ut.us\0" +"civilaviation.aero\0" +"ha.cn\0hurum.no\0" +"mg.gov.br\0" +"flap.id\0" +"*.compute-1.amazonaws.com\0" +"guernsey.museum\0" +"gs.nt.no\0" +"is-a-player.com\0" +"yamashina.kyoto.jp\0no-ip.net\0" +"jur.pro\0" +"asahikawa.hokkaido.jp\0bristol.museum\0" "ericsson\0" -"beiarn.no\0" -"fujikawa.yamanashi.jp\0" -"gsm.pl\0" -"trentin-suedtirol.it\0" -"mel.cloudlets.com.au\0" -"ven.it\0" -"cieszyn.pl\0weir\0" -"messina.it\0" -"\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa6\xa4\0" -"static.observableusercontent.com\0" -"mosj\xc3\xb8""en.no\0" -"homelinux.org\0" -"forum\0" -"\xc3\xa5mli.no\0" -"takasago.hyogo.jp\0eigersund.no\0" -"trader.aero\0nakagawa.hokkaido.jp\0" -"onjuku.chiba.jp\0americanfamily\0" -"komatsushima.tokushima.jp\0" -"lima-city.de\0" -"heritage.museum\0" -"kuju.oita.jp\0kv\xc3\xa6nangen.no\0" -"\xe7\xa5\x9e\xe5\xa5\x88\xe5\xb7\x9d.jp\0columbia.museum\0" -"cloud\0" -"\xe5\xba\x83\xe5\xb3\xb6.jp\0hayakawa.yamanashi.jp\0scienceandhistory.museum\0" -"couchpotatofries.org\0" -"takamatsu.kagawa.jp\0oshima.tokyo.jp\0" -"sar.it\0" -"aus.basketball\0" -"wa.us\0" -"lu.eu.org\0me.eu.org\0" -"nanae.hokkaido.jp\0" -"rokunohe.aomori.jp\0naval.museum\0" -"fyresdal.no\0" -"asahi.chiba.jp\0murakami.niigata.jp\0" -"cloudns.org\0" -"christmas\0" -"kumano.mie.jp\0" -"savona.it\0" -"naples.it\0chigasaki.kanagawa.jp\0blog.gt\0" -"airline.aero\0paas.hosted-by-previder.com\0lima-city.at\0" -"us-west-2.elasticbeanstalk.com\0" -"oracle\0" -"katagami.akita.jp\0oyodo.nara.jp\0" -"ugim.gov.pl\0operaunite.com\0" -"luroy.no\0yombo.me\0" -"kuki.saitama.jp\0" +"erni\0is-a-bruinsfan.org\0barsyonline.com\0" +"campobasso.it\0museumcenter.museum\0" +"grong.no\0durban\0" +"likes-pie.com\0" +"myjino.ru\0" +"nesna.no\0" +"ggf.br\0" +"\xe7\xbd\x91\xe5\xba\x97\0" +"lib.tn.us\0" +"station.museum\0" +"minamiyamashiro.kyoto.jp\0*.platformsh.site\0" +"kumamoto.kumamoto.jp\0orkdal.no\0nh.us\0" +"k12.wy.us\0" +"batsfjord.no\0" +"pleskns.com\0" +"gorge.museum\0" +"akdn\0" +"wolterskluwer\0" +"torahime.shiga.jp\0" +"fukusaki.hyogo.jp\0" +"\xe5\xa4\xa9\xe4\xb8\xbb\xe6\x95\x99\0" +"kanna.gunma.jp\0career\0" +"moscow\0" +"shimotsuma.ibaraki.jp\0is-a-candidate.org\0" +"lipsy\0" +"youtube\0" +"g.se\0" +"sphinx.mythic-beasts.com\0" +"neues.museum\0" +"chizu.tottori.jp\0jelastic.regruhosting.ru\0" +"\xe5\x98\x89\xe9\x87\x8c\0" +"kawazu.shizuoka.jp\0" +"uno\0" +"chieti.it\0media\0" +"katsuragi.nara.jp\0" +"*.kobe.jp\0tsuruta.aomori.jp\0" +"meguro.tokyo.jp\0" +"calabria.it\0" +"minnesota.museum\0googleapis.com\0" +"hiroshima.jp\0" +"tarnobrzeg.pl\0uol\0" +"honjo.akita.jp\0" +"shinjo.yamagata.jp\0" +"cc.dc.us\0" +"alabama.museum\0" +"maison\0jelastic.saveincloud.net\0" +"takayama.gifu.jp\0brand.se\0productions\0" +"oji.nara.jp\0" +"abruzzo.it\0" +"meloy.no\0" +"site\0\xe9\xa6\x99\xe6\xa0\xbc\xe9\x87\x8c\xe6\x8b\x89\0" +"homes\0dnsiskinky.com\0" +"ambulance.museum\0" +"konan.aichi.jp\0tara.saga.jp\0" +"ibaraki.jp\0va.us\0" +"annaka.gunma.jp\0misato.miyagi.jp\0kommunalforbund.se\0" +"y.bg\0ups\0" +"sandiego.museum\0amica\0extraspace\0" +"toyohashi.aichi.jp\0" +"americanart.museum\0" +"barsycenter.com\0" +"republican\0fr-1.paas.massivegrid.net\0" +"\xd0\xba\xd0\xbe\xd0\xbc.\xd1\x80\xd1\x83\xd1\x81\0" +"dyndns.biz\0" +"gratangen.no\0" +"kalisz.pl\0lib.ca.us\0" +"fedex\0" +"higashiyoshino.nara.jp\0" +"archaeology.museum\0" +"lib.mn.us\0" +"ino.kochi.jp\0" +"meiwa.mie.jp\0from-ia.com\0" +"marnardal.no\0" +"coz.br\0" +"foundation.museum\0" +"kids.us\0" +"ri.us\0" +"plesk.page\0" +"kimobetsu.hokkaido.jp\0" +"zentsuji.kagawa.jp\0" +"sk.ca\0klodzko.pl\0" +"catering\0" +"gz.cn\0" +"rogers\0" +"higashishirakawa.gifu.jp\0" +"ogawa.saitama.jp\0" +"in-addr.arpa\0taobao\0" +"levanger.no\0rnrt.tn\0" +"tamba.hyogo.jp\0romsa.no\0" +"lombardy.it\0study\0" +"kadena.okinawa.jp\0" +"kasahara.gifu.jp\0*.lclstage.dev\0" +"sveio.no\0" +"asso.fr\0" +"ha.no\0" +"oe.yamagata.jp\0" +"tochigi.tochigi.jp\0freemyip.com\0" "vet\0" -"b.bg\0" -"ise.mie.jp\0" -"lv.eu.org\0" -"lima-city.ch\0" -"kawaguchi.saitama.jp\0" -"b.br\0miharu.fukushima.jp\0" -"koshimizu.hokkaido.jp\0minato.osaka.jp\0flatanger.no\0" -"wassamu.hokkaido.jp\0" -"gotsu.shimane.jp\0" -"tohnosho.chiba.jp\0" -"bytom.pl\0" -"tokyo.jp\0" -"coz.br\0rindal.no\0" -"macapa.br\0kitakami.iwate.jp\0london.cloudapps.digital\0nyaa.am\0" -"n\xc3\xa6r\xc3\xb8y.no\0" -"saarland\0" -"blog.bo\0kotoura.tottori.jp\0from-or.com\0" -"yakage.okayama.jp\0" -"blog.br\0gouv.sn\0" -"upaas.kazteleport.kz\0alpha.bounty-full.com\0" -"ukco.me\0" -"game-server.cc\0" -"hakata.fukuoka.jp\0yanagawa.fukuoka.jp\0" -"mihama.wakayama.jp\0lukow.pl\0" -"rec.nf\0" -"ot.it\0pd.it\0saka.hiroshima.jp\0" -"vig\0" -"kamitsue.oita.jp\0krodsherad.no\0dnsup.net\0" -"grimstad.no\0" -"shintoku.hokkaido.jp\0" -"cruise\0" -"verdal.no\0global\0panasonic\0" -"ce.it\0illustration.museum\0rauma.no\0lon-2.paas.massivegrid.net\0" +"stavanger.no\0" +"k12.ma.us\0zero\0" +"asso.gp\0honjyo.akita.jp\0oiso.kanagawa.jp\0" +"mitsubishi\0" +"loan\0" +"kani.gifu.jp\0" +"dyn.home-webserver.de\0" +"gifts\0us.reclaim.cloud\0" +"siena.it\0" +"abudhabi\0cust.retrosnub.co.uk\0" +"kasugai.aichi.jp\0" +"val-d-aosta.it\0" +"kaizuka.osaka.jp\0" +"garden\0" +"asso.ht\0kr.it\0omaezaki.shizuoka.jp\0" +"kariya.aichi.jp\0" +"a\xc3\xa9roport.ci\0" +"uk.net\0" +"modelling.aero\0hyuga.miyazaki.jp\0" +"fukushima.hokkaido.jp\0p.se\0" +"isa.us\0" +"vs.it\0tienda\0" +"teaches-yoga.com\0" +"prd.fr\0" +"kalmykia.su\0" +"lomza.pl\0" +"asso.bj\0dnipropetrovsk.ua\0" +"tokamachi.niigata.jp\0vig\0" +"sosa.chiba.jp\0from-il.com\0static.land\0" +"tagawa.fukuoka.jp\0uz.ua\0dyn-berlin.de\0" +"hyogo.jp\0" +"ntr.br\0" +"s\xc3\xbc""dtirol.it\0" "vin\0" +"shell.museum\0" "vip\0" -"yachiyo.chiba.jp\0es.eu.org\0" -"now-dns.top\0" -"settlers.museum\0cn-north-1.eb.amazonaws.com.cn\0" -"parma.it\0kameyama.mie.jp\0" -"awaji.hyogo.jp\0" -"from-la.net\0" -"tsuruoka.yamagata.jp\0" -"codes\0" -"trentin-s\xc3\xbc""d-tirol.it\0yuzawa.niigata.jp\0nord-fron.no\0scrysec.com\0" -"mino.gifu.jp\0" -"roros.no\0js.wpenginepowered.com\0" -"\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x90\xe0\xb8\x9a\xe0\xb8\xb2\xe0\xb8\xa5.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" -"kawatana.nagasaki.jp\0aquarium.museum\0" -"durban\0" -"info.gu\0" -"lenug.su\0" -"ind.br\0farmequipment.museum\0search\0" -"whaling.museum\0" -"mydobiss.com\0" -"info.ht\0\xe0\xb8\x84\xe0\xb8\xad\xe0\xb8\xa1\0" -"info.hu\0" -"origins\0" -"tec.br\0\xe0\xac\xad\xe0\xac\xbe\xe0\xac\xb0\xe0\xac\xa4\0" -"rana.no\0sochi.su\0" -"holmestrand.no\0" -"\xc3\xb8vre-eiker.no\0" -"sakai.osaka.jp\0aarp\0dyndns-work.com\0" -"schaeffler\0" -"shibecha.hokkaido.jp\0niyodogawa.kochi.jp\0rec.ro\0" -"hattfjelldal.no\0\xe3\x82\xb9\xe3\x83\x88\xe3\x82\xa2\0" -"info.et\0" -"info.fj\0" -"cc.pa.us\0" -"navoi.su\0" -"ce.leg.br\0" -"takehara.hiroshima.jp\0" -"futsu.nagasaki.jp\0" -"kr.eu.org\0" -"bu.no\0" -"yamanakako.yamanashi.jp\0" -"roma.it\0bounty-full.com\0" -"guardian\0" -"stpetersburg.museum\0enterprises\0" -"gmbh\0" -"canon\0square7.net\0prvcy.page\0" -"hachioji.tokyo.jp\0" -"iwanuma.miyagi.jp\0kawasaki.miyagi.jp\0" -"info.cx\0seidat.net\0" -"potager.org\0" -"business\0sydney\0s3-us-west-2.amazonaws.com\0" -"shikabe.hokkaido.jp\0gouv.km\0" -"furudono.fukushima.jp\0" -"s3.us-east-2.amazonaws.com\0" -"wellbeingzone.eu\0" -"info.ec\0ina.saitama.jp\0sanofi\0" -"moseushi.hokkaido.jp\0" -"\xd0\xbe\xd1\x80\xd0\xb3\0v.ua\0" -"civilization.museum\0filegear-au.me\0" -"secure\0" -"hellas.museum\0rec.ve\0" -"ind.gt\0masfjorden.no\0" -"act.au\0" -"massa-carrara.it\0" -"ashibetsu.hokkaido.jp\0" -"place\0resindevice.io\0" -"servebbs.net\0" +"engerdal.no\0" +"asso.ci\0" +"quicksytes.com\0" +"ichinoseki.iwate.jp\0" +"pisa.it\0oki.fukuoka.jp\0jorpeland.no\0" +"vall\xc3\xa9""eaoste.it\0" +"sg-1.paas.massivegrid.net\0wixsite.com\0" +"design.aero\0discover\0" +"hakuba.nagano.jp\0cool\0" +"shikama.miyagi.jp\0meldal.no\0sko.gov.pl\0uk.eu.org\0grozny.su\0" +"pila.pl\0" +"commbank\0" +"coop\0" +"encyclopedic.museum\0gs.hm.no\0" +"app.lmpm.com\0" +"nakamura.kochi.jp\0ostrowiec.pl\0ownip.net\0" +"osakikamijima.hiroshima.jp\0samnanger.no\0tele.amune.org\0" +"iide.yamagata.jp\0" +"barclaycard\0" +"vestnes.no\0kalmykia.ru\0" +"trani-andria-barletta.it\0muko.kyoto.jp\0" +"cargo.aero\0aa.no\0" +"nichinan.miyazaki.jp\0" +"loft\0*.paywhirl.com\0" +"asso.dz\0" +"stage.nodeart.io\0" +"stjohn.museum\0" +"southcarolina.museum\0komforb.se\0dyndns-web.com\0" +"sb.ua\0" +"\xe5\xba\x83\xe5\xb3\xb6.jp\0" +"airtel\0" +"ferrero\0" +"backplaneapp.io\0" +"for.sale\0" +"pescara.it\0" +"vxl.sh\0" +"iizuka.fukuoka.jp\0kamaishi.iwate.jp\0prd.km\0" +"balsan.it\0fujieda.shizuoka.jp\0" +"yurihonjo.akita.jp\0" +"keisen.fukuoka.jp\0" +"hashikami.aomori.jp\0" +"grozny.ru\0" +"\xe6\x94\xbf\xe5\x8a\xa1\0" +"accident-prevention.aero\0" +"eun.eg\0" +"honda\0" +"pc.it\0" +"prd.mg\0" "half.host\0" -"info.bb\0" -"s3-website.eu-west-2.amazonaws.com\0" -"tsubame.niigata.jp\0info.at\0" -"info.au\0" -"haga.tochigi.jp\0homeunix.org\0" -"naklo.pl\0" -"port.fr\0izunokuni.shizuoka.jp\0goip.de\0" -"info.az\0" -"noboribetsu.hokkaido.jp\0gouv.ml\0sondre-land.no\0" -"yoshida.shizuoka.jp\0" -"aq.it\0ba.it\0" -"shonai.fukuoka.jp\0gulen.no\0" -"info.bo\0" -"saito.miyazaki.jp\0mykolaiv.ua\0" -"kaminokawa.tochigi.jp\0arna.no\0schulserver.de\0" -"ind.in\0ogawa.saitama.jp\0from-ok.com\0" -"harvestcelebration.museum\0fjell.no\0" -"cern\0" -"info.co\0sec.ps\0on-the-web.tv\0hk.org\0" -"chernovtsy.ua\0" -"kochi.jp\0health.museum\0" -"gojome.akita.jp\0" -"cincinnati.museum\0" -"midori.chiba.jp\0kouyama.kagoshima.jp\0" -"vanguard\0gitlab.io\0" -"blog.vu\0" -"oceanographique.museum\0" -"yorii.saitama.jp\0" -"mobile\0is-an-anarchist.com\0" -"\xe5\x9f\xbc\xe7\x8e\x89.jp\0ind.kw\0" -"sekigahara.gifu.jp\0" -"coldwar.museum\0" -"express.aero\0" -"namikata.ehime.jp\0" -"edogawa.tokyo.jp\0" -"manx.museum\0" -"saogonca.br\0" -"tksat.bo\0batsfjord.no\0karpacz.pl\0bananarepublic\0" -"nishinomiya.hyogo.jp\0" -"fi.eu.org\0" -"cc.nm.us\0able\0" -"sphinx.mythic-beasts.com\0" -"\xc3\xa5krehamn.no\0" -"gwangju.kr\0finn\xc3\xb8y.no\0" -"obama.fukui.jp\0tsukuba.ibaraki.jp\0" -"k12.mn.us\0" -"kunstunddesign.museum\0landes.museum\0b.se\0" -"amber.museum\0annefrank.museum\0\xe0\xb2\xad\xe0\xb2\xbe\xe0\xb2\xb0\xe0\xb2\xa4\0" -"tsushima.aichi.jp\0k12.fl.us\0" -"kusatsu.shiga.jp\0" -"microlight.aero\0trentinos-tirol.it\0" -"skierv\xc3\xa1.no\0skanland.no\0play\0" -"g12.br\0" -"cim.br\0" -"is-a-geek.com\0" -"s\xc3\xb8r-varanger.no\0" -"kamishihoro.hokkaido.jp\0" -"sola.no\0" -"pa.gov.br\0telebit.io\0" -"seven\0" -"luster.no\0" -"okayama.okayama.jp\0organic\0" -"ra.it\0polkowice.pl\0" -"\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0win\0" -"akishima.tokyo.jp\0" -"eid.no\0" -"balestrand.no\0" -"caracal.mythic-beasts.com\0" -"\xe5\x85\xac\xe5\x8f\xb8.cn\0" -"nasu.tochigi.jp\0" -"idf.il\0miasa.nagano.jp\0" -"cagliari.it\0" -"pb.gov.br\0rentals\0za.com\0" -"room\0" -"dyndns-at-home.com\0" -"floripa.br\0orx.biz\0" -"balsan-sudtirol.it\0" -"\xe5\x85\xac\xe5\x8f\xb8.hk\0" -"urbino-pesaro.it\0" -"oguchi.aichi.jp\0kirkenes.no\0" -"mombetsu.hokkaido.jp\0\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0buzz\0kicks-ass.org\0" -"jdf.br\0gs.cn\0" -"h\xc3\xb8nefoss.no\0" -"is-a-knight.org\0" -"rawa-maz.pl\0e12.ve\0" -"us-east-1.elasticbeanstalk.com\0" -"rel.ht\0" -"kragero.no\0" -"kr.com\0" -"pueblo.bo\0santoandre.br\0" -"wme\0" -"ind.tn\0" -"iwakuni.yamaguchi.jp\0info.ve\0" -"router.management\0" -"doomdns.org\0qcx.io\0" -"daito.osaka.jp\0" +"pharmacy\0" +"wmflabs.org\0" +"takko.aomori.jp\0zhitomir.ua\0" +"prof.pr\0" +"maniwa.okayama.jp\0" +"geology.museum\0" +"k12.mt.us\0" +"omi.nagano.jp\0" +"forli-cesena.it\0" +"friuli-v-giulia.it\0a.run.app\0" +"lecce.it\0" +"appudo.net\0" +"grp.lk\0" +"ohtawara.tochigi.jp\0ethnology.museum\0homelinux.net\0" +"ikeda.nagano.jp\0" +"rahkkeravju.no\0paris\0" +"vagsoy.no\0" +"\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0for-more.biz\0" +"hu.net\0onfabrica.com\0" +"suzuki\0xbox\0" +"tondabayashi.osaka.jp\0" "dr.na\0" -"vf.no\0info.vn\0pokrovsk.su\0" -"foz.br\0" -"bible.museum\0" -"wielun.pl\0cc.mi.us\0" -"nobeoka.miyazaki.jp\0" -"cc.id.us\0" -"nakano.nagano.jp\0" -"miyama.fukuoka.jp\0*.cryptonomic.net\0" -"k.bg\0" -"\xe5\xa4\xa7\xe5\x88\x86.jp\0" -"bozen-sudtirol.it\0" -"hirogawa.wakayama.jp\0bargains\0" -"nuoro.it\0minami.fukuoka.jp\0" -"achi.nagano.jp\0egersund.no\0" -"suzaka.nagano.jp\0tec.ve\0omg.lol\0" -"health.nz\0" -"higashiyamato.tokyo.jp\0" -"kuriyama.hokkaido.jp\0dynamisches-dns.de\0" -"info.tn\0skygearapp.com\0" -"info.tr\0wow\0blog.kg\0" -"info.tt\0" -"ivgu.no\0cbg.ru\0jelastic.team\0" -"gokase.miyazaki.jp\0" -"u.channelsdvr.net\0" -"parachuting.aero\0sanagochi.tokushima.jp\0info.tz\0lego\0" -"madrid.museum\0network\0" -"r\xc3\xb8yrvik.no\0\xe8\x87\xba\xe7\x81\xa3\0" -"shizuoka.shizuoka.jp\0abudhabi\0" -"and\xc3\xb8y.no\0" -"ueda.nagano.jp\0" -"ishikari.hokkaido.jp\0" -"tr.it\0lib.pa.us\0" -"*.ocs.customer-oci.com\0" -"haram.no\0" -"fastly-terrarium.com\0familyds.net\0" -"info.ro\0go.leg.br\0" -"ohkura.yamagata.jp\0" -"contagem.br\0" -"\xe4\xb8\xaa\xe4\xba\xba.hk\0cn.it\0info.sd\0" -"lecco.it\0" -"s3-website-eu-west-1.amazonaws.com\0eastus2.azurestaticapps.net\0" -"nico\0" -"hamburg.museum\0" -"is-a-geek.org\0" -"nagaokakyo.kyoto.jp\0" -"abu.yamaguchi.jp\0kudamatsu.yamaguchi.jp\0git-pages.rit.edu\0" -"sn.cn\0omihachiman.shiga.jp\0" -"tomiya.miyagi.jp\0" -"morioka.iwate.jp\0tj\xc3\xb8me.no\0" -"info.pk\0rel.pl\0" -"tokushima.jp\0info.pl\0" -"wtc\0" -"wtf\0cloudfront.net\0ghost.io\0appengine.flow.ch\0" -"mihara.hiroshima.jp\0info.pr\0serveftp.org\0" -"bj.cn\0med.pro\0" -"firmdale\0" -"sowa.ibaraki.jp\0" -"konskowola.pl\0" -"dr.tr\0" -"zappos\0" -"googleapis.com\0" -"trentins\xc3\xbc""d-tirol.it\0info.na\0" -"botany.museum\0""001www.com\0" -"yanaizu.fukushima.jp\0info.mv\0info.nf\0landrover\0" -"fermo.it\0" -"info.ni\0myvnc.com\0" -"aremark.no\0xihuan\0" -"tatsuno.nagano.jp\0info.nr\0" -"tr.no\0" -"rennebu.no\0" -"beeldengeluid.museum\0" -"cyon.site\0" -"klepp.no\0r\xc3\xb8st.no\0is-very-sweet.org\0" -"randaberg.no\0west1-us.cloudjiffy.net\0" -"iwafune.tochigi.jp\0" -"floro.no\0" -"health.vn\0" -"myphotos.cc\0" -"info.la\0" -"ustka.pl\0" -"embetsu.hokkaido.jp\0\xc3\xa5""fjord.no\0" -"avellino.it\0" -"\xc3\xa1k\xc5\x8boluokta.no\0" -"trentin-sued-tirol.it\0" -"nesna.no\0trust\0" -"secaas.hk\0" -"cahcesuolo.no\0" -"info.ls\0" -"java\0" -"exhibition.museum\0" -"orland.no\0vm.bytemark.co.uk\0" -"\xe4\xb8\xad\xe5\x9b\xbd\0" -"pi.gov.br\0yokoze.saitama.jp\0" -"author\0smart\0" -"works.aero\0" -"viking\0" -"sel.no\0komvux.se\0" -"asahikawa.hokkaido.jp\0" -"gs.of.no\0xin\0net-freaks.com\0" -"karatsu.saga.jp\0" -"georgia.su\0" -"\xe4\xb8\xad\xe5\x9c\x8b\0" -"adm.br\0nordre-land.no\0nike\0" -"info.ke\0" -"lib.ar.us\0" -"info.ki\0frankfurt.museum\0healthcare\0" -"tateyama.toyama.jp\0" -"ribeirao.br\0" -"fusa.no\0zaporizhzhe.ua\0" -"adac\0" -"komatsu.ishikawa.jp\0" -"plus\0" -"riopreto.br\0from-co.net\0" -"withyoutube.com\0" -"kiyosato.hokkaido.jp\0numata.hokkaido.jp\0" -"higashiyoshino.nara.jp\0" -"otama.fukushima.jp\0cdn-edges.net\0" -"s3-website.eu-central-1.amazonaws.com\0" -"barcelona\0" -"hita.oita.jp\0" -"nonoichi.ishikawa.jp\0jelastic.dogado.eu\0" -"itoigawa.niigata.jp\0cn.ua\0is-a-socialist.com\0" +"kasuya.fukuoka.jp\0" +"qualifioapp.com\0" +"finearts.museum\0y.se\0" +"broker.aero\0bern.museum\0" +"media.aero\0" +"mino.gifu.jp\0is-an-entertainer.com\0" +"fh-muenster.io\0" +"b\xc3\xb8.nordland.no\0" +"olkusz.pl\0" +"hattfjelldal.no\0kr.ua\0yahoo\0" +"s3-eu-central-1.amazonaws.com\0" +"solutions\0" +"takaishi.osaka.jp\0space-to-rent.com\0" +"sandnessj\xc3\xb8""en.no\0fam.pk\0" +"finnoy.no\0" +"svalbard.no\0" +"ichikai.tochigi.jp\0" +"lib.sd.us\0" +"bc.ca\0" +"futurehosting.at\0" +"abashiri.hokkaido.jp\0lardal.no\0" +"erimo.hokkaido.jp\0nishiwaki.hyogo.jp\0" +"uji.kyoto.jp\0" +"reg.dk\0" +"kai.yamanashi.jp\0" +"bungoono.oita.jp\0" +"enonic.io\0" +"\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0" +"md.ci\0" +"giize.com\0" +"pc.pl\0\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0\0" +"higashiizu.shizuoka.jp\0hitachi\0*.in.futurecms.at\0" +"s\xc3\xb8r-odal.no\0" +"hgtv\0" +"cloud\0" +"pippu.hokkaido.jp\0ikano\0toshiba\0" +"gjemnes.no\0" +"frei.no\0*.firenet.ch\0" +"cinema.museum\0is-a-cpa.com\0" +"act.edu.au\0tobe.ehime.jp\0" +"lib.co.us\0" +"skin\0" +"starnberg.museum\0ally\0" +"obninsk.su\0" +"swiss\0" +"friuli-vegiulia.it\0hs.kr\0" +"flakstad.no\0" +"nara.nara.jp\0" +"mihama.fukui.jp\0" +"\xe5\x95\x86\xe5\x9f\x8e\0" +"fukuchi.fukuoka.jp\0" +"virtualuser.de\0" +"krokstadelva.no\0" +"westus2.azurestaticapps.net\0" +"gonohe.aomori.jp\0" +"cricket\0" +"cloudns.club\0temp-dns.com\0" +"*.statics.cloud\0" +"hitachiota.ibaraki.jp\0kinko.kagoshima.jp\0" +"lig.it\0amsterdam.museum\0" +"from.work\0" +"koriyama.fukushima.jp\0kawachinagano.osaka.jp\0hasuda.saitama.jp\0is.gov.pl\0" +"embroidery.museum\0" +"andria-barletta-trani.it\0" +"bill.museum\0guovdageaidnu.no\0dr.tr\0codes\0" +"hokksund.no\0asso.re\0" +"koka.shiga.jp\0" +"fhv.se\0" +"tm.cy\0" +"tas.edu.au\0" +"portland.museum\0point2this.com\0" +"tolga.no\0win\0beep.pl\0" +"ohira.tochigi.jp\0" +"st.no\0zt.ua\0" +"antiques.museum\0k12.ok.us\0myshopblocks.com\0" +"hamaroy.no\0" +"tm.dz\0" +"pesaro-urbino.it\0gushikami.okinawa.jp\0salat.no\0creditunion\0" +"s3.amazonaws.com\0" +"minamiboso.chiba.jp\0" +"isshiki.aichi.jp\0" +"kakamigahara.gifu.jp\0birthplace.museum\0" +"avellino.it\0virginia.museum\0" +"nyc.mn\0" +"stufftoread.com\0" +"love\0" +"lt.it\0" +"tm.fr\0" +"lerdal.no\0parts\0*.elb.amazonaws.com\0" +"bnr.la\0" +"dynathome.net\0" +"bergamo.it\0tomisato.chiba.jp\0" +"party\0" +"rep.br\0" +"shimonita.gunma.jp\0" +"saga.saga.jp\0" +"lib.il.us\0" +"asso.nc\0video\0" +"is-an-actress.com\0" +"narusawa.yamanashi.jp\0" +"wme\0" +"moriyoshi.akita.jp\0" +"kaminoyama.yamagata.jp\0" +"oseto.nagasaki.jp\0" +"belluno.it\0kurotaki.nara.jp\0averoy.no\0www.ro\0" +"franziskaner.museum\0" +"kanmaki.nara.jp\0" +"tm.hu\0jetzt\0" +"shiwa.iwate.jp\0motobu.okinawa.jp\0atami.shizuoka.jp\0" +"tosu.saga.jp\0" +"katori.chiba.jp\0" +"fortal.br\0" +"shimokawa.hokkaido.jp\0" +"lyngdal.no\0" +"trd.br\0flatanger.no\0" +"miyama.mie.jp\0" +"ryugasaki.ibaraki.jp\0skien.no\0" +"numata.gunma.jp\0amsw.nl\0" +"zushi.kanagawa.jp\0" +"friulivgiulia.it\0amex\0" +"taishi.osaka.jp\0floro.no\0\xc3\xa1laheadju.no\0onred.one\0" +"kitahata.saga.jp\0ski.no\0gr.com\0" +"ddnsgeek.com\0" +"settlers.museum\0\xe5\x81\xa5\xe5\xba\xb7\0" +"s3.ap-south-1.amazonaws.com\0" +"entertainment.aero\0handson.museum\0" +"hiroo.hokkaido.jp\0" +"wow\0" +"stj\xc3\xb8rdalshalsen.no\0ddnsking.com\0" +"ostrowwlkp.pl\0" +"tm.km\0" +"tv.bb\0atsuma.hokkaido.jp\0lund.no\0under.one\0" +"kurume.fukuoka.jp\0" +"bilbao.museum\0balena-devices.com\0" +"halsa.no\0platter-app.com\0" +"democracia.bo\0" +"isesaki.gunma.jp\0" +"res.aero\0" +"omihachiman.shiga.jp\0" +"troms\xc3\xb8.no\0" +"mamurogawa.yamagata.jp\0north.museum\0salvadordali.museum\0alaheadju.no\0" +"tv.bo\0" +"moriya.ibaraki.jp\0" +"tv.br\0saotome.st\0" +"miners.museum\0" +"tm.mc\0estate.museum\0" +"pu.it\0" +"sumoto.kumamoto.jp\0coastaldefence.museum\0trysil.no\0" +"tm.mg\0" +"\xe0\xb8\x98\xe0\xb8\xb8\xe0\xb8\xa3\xe0\xb8\x81\xe0\xb8\xb4\xe0\xb8\x88.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"e164.arpa\0asso.km\0" +"rindal.no\0" +"final\0" +"mukawa.hokkaido.jp\0" +"venezia.it\0pl.ua\0" +"k12.dc.us\0" +"sandvik\0" +"evje-og-hornnes.no\0select\0" +"toyosato.shiga.jp\0" +"vestre-slidre.no\0club.tw\0" +"tm.no\0" +"ine.kyoto.jp\0higashimatsushima.miyagi.jp\0asso.mc\0" +"england.museum\0gotdns.ch\0" +"pharmacien.fr\0dsmynas.org\0" +"fm.br\0paleo.museum\0slupsk.pl\0watch\0wtc\0" +"divtasvuodna.no\0groks-this.info\0" +"wtf\0" +"bl.it\0" +"sanda.hyogo.jp\0uber.space\0" +"pubol.museum\0b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0" "ryuoh.shiga.jp\0" -"ws.na\0" -"accountant\0" -"firm.ht\0" -"emr.it\0" +"express.aero\0pcloud.host\0" +"ppg.br\0" +"dattolocal.net\0" +"handa.aichi.jp\0" +"rep.kp\0" +"paragliding.aero\0burghof.museum\0sibenik.museum\0" +"steiermark.museum\0" +"tm.pl\0" +"chernihiv.ua\0" +"gamo.shiga.jp\0" +"uni5.net\0" +"skj\xc3\xa5k.no\0" +"kartuzy.pl\0lt.ua\0" +"k12.ak.us\0from-ut.com\0" +"chiyoda.tokyo.jp\0panama.museum\0" +"time.museum\0" +"aerobatic.aero\0*.compute.amazonaws.com.cn\0" +"bodo.no\0" +"soc.srcf.net\0" +"as.us\0" +"oyabe.toyama.jp\0" +"trapani.it\0" +"galsa.no\0" +"kawagoe.saitama.jp\0is-very-sweet.org\0" +"nishikawa.yamagata.jp\0" +"hvaler.no\0" +"md.us\0" +"maebashi.gunma.jp\0" +"katagami.akita.jp\0store.nf\0" +"dyndns-free.com\0" +"dev.br\0nf.ca\0tm.ro\0marshalls\0" +"politie\0lelux.site\0" "buzen.fukuoka.jp\0" -"knightpoint.systems\0" -"iwatsuki.saitama.jp\0leirvik.no\0vennesla.no\0" -"yamato.kumamoto.jp\0" -"firm.in\0" -"campinagrande.br\0yuu.yamaguchi.jp\0" -"crotone.it\0" -"onga.fukuoka.jp\0" -"alta.no\0cc.nv.us\0" -"yazu.tottori.jp\0" -"azure\0" -"cc.fl.us\0" -"cricket\0" -"cn.vu\0" -"chungnam.kr\0royrvik.no\0" -"k.se\0" -"sumy.ua\0" -"tateshina.nagano.jp\0" -"youtube\0jele.cloud\0" -"tsukigata.hokkaido.jp\0" -"shiso.hyogo.jp\0" -"vicenza.it\0" -"andriatranibarletta.it\0campidanomedio.it\0" -"firm.co\0" -"baidar.no\0" -"kinokawa.wakayama.jp\0" -"lplfinancial\0" -"shinanomachi.nagano.jp\0voss.no\0is-certified.com\0enterprisecloud.nu\0" +"val-daosta.it\0badajoz.museum\0tm.se\0" +"tv.im\0" +"ibestad.no\0" +"onga.fukuoka.jp\0kumagaya.saitama.jp\0" +"kuokgroup\0" +"sevastopol.ua\0" +"tv.it\0" +"kurashiki.okayama.jp\0" +"umig.gov.pl\0chimkent.su\0" +"moss.no\0" +"mypep.link\0" +"homeunix.com\0" +"vagan.no\0" +"trentino-s\xc3\xbc""d-tirol.it\0travelersinsurance\0" +"nakatombetsu.hokkaido.jp\0" +"xin\0" +"inagawa.hyogo.jp\0tv.kg\0" +"trentino-sud-tirol.it\0" +"gj\xc3\xb8vik.no\0" +"yotsukaido.chiba.jp\0shishikui.tokushima.jp\0" +"wassamu.hokkaido.jp\0il.us\0*.compute.estate\0dnsfor.me\0" +"kuromatsunai.hokkaido.jp\0" +"\xc3\xa5rdal.no\0" +"agrigento.it\0" +"ipifony.net\0hicam.net\0" +"bushey.museum\0" +"toei.aichi.jp\0" +"mesaverde.museum\0" +"nom.ad\0e.bg\0" +"fm.it\0nom.ae\0" +"haebaru.okinawa.jp\0nom.af\0" +"nom.ag\0mymailer.com.tw\0pyatigorsk.ru\0" +"wanouchi.gifu.jp\0poker\0ntdll.top\0nom.ai\0" +"archi\0homedepot\0" +"holiday\0" +"nom.al\0" +"ooshika.nagano.jp\0mashiko.tochigi.jp\0" +"\xe5\x8f\xb0\xe6\xb9\xbe\0jelastic.team\0" +"shinshiro.aichi.jp\0" +"democrat\0" +"norfolk.museum\0phone\0office-on-the.net\0shacknet.nu\0" +"pilots.museum\0" +"tv.na\0knightpoint.systems\0" +"\xe0\xac\xad\xe0\xac\xbe\xe0\xac\xb0\xe0\xac\xa4\0" +"vefsn.no\0" +"homelinux.org\0" +"fireweb.app\0" +"beiarn.no\0" +"shikabe.hokkaido.jp\0" +"shiftcrypto.io\0" +"yatsushiro.kumamoto.jp\0" +"virtual-user.de\0" +"nom.bz\0nyan.to\0" +"\xe0\xba\xa5\xe0\xba\xb2\xe0\xba\xa7\0" +"nom.cl\0" +"sicily.it\0" +"nom.co\0sayama.osaka.jp\0verisign\0" +"yakumo.hokkaido.jp\0withgoogle.com\0" +"realestate\0" +"law.za\0sport\0" +"ce.it\0maif\0" +"telebit.app\0" +"miyada.nagano.jp\0" +"\xd9\x85\xd9\x84\xd9\x8a\xd8\xb3\xd9\x8a\xd8\xa7\0awsmppl.com\0nh-serv.co.uk\0" +"toyono.osaka.jp\0pony.club\0" +"tm.za\0" +"museum.tt\0" +"sk\xc3\xa5nland.no\0" +"website.yandexcloud.net\0" +"health.nz\0" +"yamanouchi.nagano.jp\0circle\0data\0" +"org.ac\0trentino-suedtirol.it\0" +"contractors\0" +"org.ae\0mar.it\0wakkanai.hokkaido.jp\0store.ve\0" +"org.af\0date\0is-a-designer.com\0" +"org.ag\0is-lost.org\0" +"org.ai\0" +"otaki.saitama.jp\0" +"org.al\0" +"org.am\0fm.no\0\xe5\xa4\xa7\xe6\x8b\xbf\0freeddns.us\0" +"stor-elvdal.no\0" +"nom.es\0gb.net\0" +"org.ba\0giving\0istanbul\0" +"org.ar\0org.bb\0mymediapc.net\0" +"caracal.mythic-beasts.com\0" +"org.au\0" +"alfaromeo\0" +"ugim.gov.pl\0" +"org.bh\0pup.gov.pl\0" +"org.bi\0" +"org.az\0ide.kyoto.jp\0hol.no\0" +"uvic.museum\0" +"org.bm\0" +"org.bn\0rebun.hokkaido.jp\0choyo.kumamoto.jp\0kasukabe.saitama.jp\0" +"org.bo\0nom.fr\0" +"taranto.it\0washingtondc.museum\0" +"airport.aero\0nom.gd\0" +"org.br\0nom.ge\0" +"org.bs\0" +"org.bt\0" +"sic.it\0builtwithdark.com\0" +"izumisano.osaka.jp\0" +"the.br\0org.bw\0" +"org.ci\0kuji.iwate.jp\0yahaba.iwate.jp\0nom.gl\0" +"org.bz\0tv.sd\0" +"sos.pl\0" +"org.cn\0" +"org.co\0sport.hu\0monza-e-della-brianza.it\0" +"nom.gt\0" +"gyeongbuk.kr\0planetarium.museum\0equipment\0redstone\0" +"naie.hokkaido.jp\0obihiro.hokkaido.jp\0" +"org.cu\0" +"azurewebsites.net\0qcx.io\0" +"org.cw\0" +"minami-alps.yamanashi.jp\0" +"org.cy\0abr.it\0" +"nerdpol.ovh\0" +"nom.hn\0" +"org.dm\0" +"bu.no\0\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0photo\0" +"org.do\0" +"ushiku.ibaraki.jp\0claims\0" +"org.ec\0br\xc3\xb8nn\xc3\xb8ysund.no\0" +"chernigov.ua\0" +"org.ee\0kamo.niigata.jp\0marker.no\0" +"org.eg\0" +"iwade.wakayama.jp\0tv.tr\0" +"tanabe.wakayama.jp\0nordreisa.no\0webhosting.be\0" +"org.dz\0nom.im\0" +"bolivia.bo\0canon\0from-tn.com\0" +"store.ro\0" +"principe.st\0tv.tz\0" +"codespot.com\0" +"demo.jelastic.com\0" +"org.es\0" +"org.et\0" +"tako.chiba.jp\0kanegasaki.iwate.jp\0" +"hermes\0" +"org.fj\0shari.hokkaido.jp\0" +"l\xc3\xa1hppi.no\0sande.vestfold.no\0" +"goip.de\0" +"n.bg\0org.fm\0" +"cloud.interhostsolutions.be\0nom.ke\0*.s5y.io\0editorx.io\0" +"store.st\0" +"org.ge\0bulsan.it\0intl.tn\0" +"org.gg\0rg.it\0" +"org.gh\0" +"org.gi\0askim.no\0" +"nom.km\0" +"sayo.hyogo.jp\0" +"org.gl\0viking\0" +"org.gn\0giske.no\0" +"origins\0" +"org.gp\0plo.ps\0" +"org.gr\0" +"bauhaus\0" +"org.gt\0health.vn\0" +"org.gu\0" +"nom.li\0" +"miyawaka.fukuoka.jp\0oshu.iwate.jp\0ap-southeast-1.elasticbeanstalk.com\0" +"org.gy\0" +"vao.it\0" +"org.hk\0" +"org.hn\0" +"\xc3\xa5""fjord.no\0" +"emilia-romagna.it\0" +"is-certified.com\0nom.lv\0" +"org.ht\0nom.mg\0axis.museum\0bci.dnstrace.pro\0" +"org.hu\0" +"from-la.net\0nom.mk\0" +"org.il\0wedding\0" +"org.im\0" +"6.bg\0org.in\0museum.mv\0" +"go.ci\0cn.it\0museum.mw\0" +"nom.nc\0" +"org.iq\0" +"org.ir\0" +"org.is\0" +"frosinone.it\0stuttgart.museum\0" +"org.je\0" +"godo.gifu.jp\0nom.ni\0" +"seihi.nagasaki.jp\0museum.no\0domains\0*.kunden.ortsinfo.at\0" +"go.cr\0no.it\0" +"s3-eu-west-2.amazonaws.com\0" +"naturalhistorymuseum.museum\0ufcfan.org\0" +"org.jo\0meeres.museum\0" +"roma.it\0nom.nu\0" +"kanazawa.ishikawa.jp\0museum.om\0\xda\x80\xd8\xa7\xd8\xb1\xd8\xaa\0xxx\0" +"kr.com\0" +"matsumoto.nagano.jp\0org.kg\0" +"lierne.no\0" +"org.ki\0" +"oga.akita.jp\0\xe6\x96\xb0\xe9\x97\xbb\0" +"org.km\0" +"org.kn\0nom.pa\0" +"org.kp\0nrw.museum\0clicketcloud.com\0" +"org.la\0r\xc3\xb8""d\xc3\xb8y.no\0" +"org.lb\0n\xc3\xa6r\xc3\xb8y.no\0nom.pe\0home.dyndns.org\0" +"org.lc\0lind\xc3\xa5s.no\0" +"kushimoto.wakayama.jp\0" +"\xc3\xb8ygarden.no\0" +"imperia.it\0org.kw\0dentist\0xyz\0" +"homeoffice.gov.uk\0" +"fussa.tokyo.jp\0org.ky\0nom.pl\0*.on-rio.io\0" +"anamizu.ishikawa.jp\0org.kz\0" +"noto.ishikawa.jp\0org.lk\0" +"is-a-guru.com\0" +"nom.qa\0" +"org.ma\0" +"yahiko.niigata.jp\0org.lr\0" +"bihoro.hokkaido.jp\0org.ls\0" +"nom.pw\0" +"org.me\0skedsmo.no\0" +"org.lv\0" +"org.mg\0" +"kota.aichi.jp\0" +"org.ly\0" +"gausdal.no\0" +"org.mk\0" +"org.ml\0dev.vu\0" +"club.aero\0nasu.tochigi.jp\0" +"nx.cn\0idf.il\0takahama.aichi.jp\0org.mn\0" +"org.mo\0e.se\0" +"gripe\0" +"org.na\0" +"nom.re\0centralus.azurestaticapps.net\0" +"org.ms\0mypets.ws\0" +"org.mt\0""2038.io\0" +"org.mu\0" +"org.mv\0" +"org.mw\0org.ng\0" +"org.mx\0unj\xc3\xa1rga.no\0" +"nsw.au\0org.my\0org.ni\0" +"org.mz\0vana\0g.vbrplsbx.io\0" +"\xe8\xb0\xb7\xe6\xad\x8c\0" +"nom.ro\0" +"psse.gov.pl\0" +"masoy.no\0" +"nom.rs\0" +"vanguard\0" +"org.nr\0" +"from-al.com\0" +"web.bo\0kouhoku.saga.jp\0farmequipment.museum\0" +"nom.si\0" +"kg.kr\0" +"\xe5\x9f\xbc\xe7\x8e\x89.jp\0mosjoen.no\0qoto.io\0" +"go.id\0org.nz\0" +"drammen.no\0org.om\0" +"wa.au\0owariasahi.aichi.jp\0" +"oregon.museum\0from-co.net\0" +"org.pa\0nom.st\0" +"act.au\0shirakawa.gifu.jp\0" +"samsclub\0" +"web.co\0" +"org.pe\0" +"org.pf\0opencraft.hosting\0" +"nom.tj\0" +"org.ph\0" +"w.bg\0" +"go.it\0murakami.niigata.jp\0nom.tm\0" +"2000.hu\0ueda.nagano.jp\0org.pk\0" +"pa.gov.br\0harvestcelebration.museum\0org.pl\0" +"org.pn\0" +"flekkefjord.no\0" +"ninohe.iwate.jp\0" +"org.qa\0" +"org.pr\0" +"org.ps\0science\0" +"web.do\0org.pt\0nom.ug\0" +"go.jp\0muika.niigata.jp\0" +"sncf\0" +"org.py\0community-pro.net\0" +"go.ke\0" +"yamada.fukuoka.jp\0" +"r\xc3\xb8yken.no\0nom.vc\0" +"ketrzyn.pl\0u2.xnbay.com\0" +"you\0" +"zlg.br\0nom.vg\0" +"fot.br\0nom.uy\0" +"higashiosaka.osaka.jp\0" +"go.kr\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\xe0\xa4\xae\xe0\xa5\x8d\0" +"jelastic.dogado.eu\0" +"tamakawa.fukushima.jp\0leka.no\0" +"pb.gov.br\0swatch\0" +"genkai.saga.jp\0cloudera.site\0" +"tokuyama.yamaguchi.jp\0org.ro\0" +"noda.iwate.jp\0org.sa\0" +"org.sb\0" +"org.rs\0org.sc\0" +"org.sd\0s3.ap-northeast-2.amazonaws.com\0" +"org.se\0org.ru\0" +"org.rw\0org.sg\0" +"viterbo.it\0org.sh\0" +"\xe5\x8d\x83\xe8\x91\x89.jp\0" +"izumizaki.fukushima.jp\0bel.tr\0" +"eurovision\0" +"org.sl\0twmail.cc\0" +"alta.no\0zp.gov.pl\0org.sn\0" +"shinto.gunma.jp\0ando.nara.jp\0org.so\0" +"gx.cn\0ybo.trade\0" +"yoita.niigata.jp\0" +"ogliastra.it\0kui.hiroshima.jp\0org.ss\0" +"kawakami.nagano.jp\0org.st\0dnshome.de\0" +"shonai.fukuoka.jp\0maritimo.museum\0org.sv\0" +"saogonca.br\0basketball\0apigee.io\0" +"omachi.nagano.jp\0realty\0" +"org.sy\0" +"web.gu\0org.sz\0org.tj\0jobs.tt\0" +"cn.ua\0" +"org.tm\0" +"tohma.hokkaido.jp\0org.tn\0ro.eu.org\0" +"org.to\0" +"org.ua\0cloudns.info\0" +"store.bb\0sarufutsu.hokkaido.jp\0org.tr\0" +"yaotsu.gifu.jp\0org.tt\0" +"ibigawa.gifu.jp\0" +"org.tw\0org.ug\0" +"muncie.museum\0schoenbrunn.museum\0" +"web.id\0macerata.it\0" +"org.uk\0" +"ivanovo.su\0" +"\xe7\xbb\x84\xe7\xbb\x87.hk\0porsanger.no\0in-butter.de\0" +"nom.za\0" +"sweetpepper.org\0" +"sharp\0" +"snaase.no\0lib.vi.us\0org.vc\0web.in\0" +"miyako.iwate.jp\0farsund.no\0" +"org.ve\0in-berlin.de\0" +"game.tw\0" +"sling\0" +"org.uy\0org.vi\0usr.cloud.muni.cz\0" +"org.uz\0" +"\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\x82\xe0\xa6\xb2\xe0\xa6\xbe\0iserv.dev\0shopware.store\0" +"motorcycle.museum\0cc.sc.us\0" +"sener\0" +"org.vn\0khakassia.su\0chirurgiens-dentistes-en-france.fr\0" +"kyotamba.kyoto.jp\0annefrank.museum\0cn.vu\0" +"jambyl.su\0customer.mythic-beasts.com\0" +"ventures\0" +"nishiokoppe.hokkaido.jp\0" +"hemne.no\0" +"nerima.tokyo.jp\0org.vu\0" +"catholic.edu.au\0" +"jobs\0" +"n.se\0yun\0store.dk\0" +"go.pw\0" +"niki.hokkaido.jp\0" +"tsubata.ishikawa.jp\0oyama.tochigi.jp\0" +"org.ws\0" +"eu.int\0skype\0" +"ballangen.no\0" +"joinville.br\0" +"cody.museum\0maryland.museum\0" +"nsn.us\0" +"softbank\0si.eu.org\0nov.ru\0" +"nagahama.shiga.jp\0" +"web.lk\0" +"org.ye\0" +"yoichi.hokkaido.jp\0" +"honefoss.no\0" +"trentino.it\0dclk\0dsmynas.net\0" +"surgeonshall.museum\0cc.ok.us\0cog.mi.us\0" +"nov.su\0" +"teo.br\0homesecuritymac.com\0" +"org.za\0" +"ah.cn\0bluebite.io\0dscloud.mobi\0" +"\xe9\xa3\x9f\xe5\x93\x81\0" +"org.yt\0" +"chiba.jp\0" +"adm.br\0shiranuka.hokkaido.jp\0web.nf\0" +"dyndns.tv\0" +"tado.mie.jp\0org.zm\0with.marketing\0" +"web.ni\0go.th\0" +"si.it\0" +"go.tj\0" +"kyowa.akita.jp\0kustanai.ru\0" +"org.zw\0" +"basilicata.it\0" +"go.ug\0zip\0" +"volkenkunde.museum\0" +"tabuse.yamaguchi.jp\0go.tz\0" +"government.aero\0" +"motosu.gifu.jp\0" +"\xe5\x8f\xb0\xe7\x81\xa3\0" +"funagata.yamagata.jp\0lib.ny.us\0kustanai.su\0" +"est-mon-blogueur.com\0" +"moma.museum\0" +"nedre-eiker.no\0" +"cc.ks.us\0sk.eu.org\0" +"secaas.hk\0" +"web.pk\0joburg\0" +"kawanehon.shizuoka.jp\0bykle.no\0" +"sano.tochigi.jp\0s3.eu-west-3.amazonaws.com\0" +"ski.museum\0" +"aomori.jp\0lk3.ru\0" +"cc.vt.us\0" +"dyndns.ws\0" +"soma.fukushima.jp\0nikon\0" +"comsec\0" +"pa.it\0" +"notodden.no\0style\0" +"mobara.chiba.jp\0\xe7\xb6\xb2\xe8\xb7\xaf.tw\0" +"blockbuster\0" +"lugansk.ua\0" +"ee.eu.org\0" +"unjarga.no\0sola.no\0" +"kaneyama.fukushima.jp\0" +"takayama.nagano.jp\0deno-staging.dev\0" +"tokke.no\0translate.goog\0" +"sakuho.nagano.jp\0war.museum\0" +"hangout\0" +"property\0debian.net\0" +"k\xc3\xa5""fjord.no\0" +"oz.au\0kamiizumi.saitama.jp\0research.museum\0pvt.k12.ma.us\0" +"cloud.jelastic.open.tim.it\0" +"from-hi.com\0" +"oh.us\0" +"from-ny.net\0futuremailing.at\0*.ex.ortsinfo.at\0" +"pi.gov.br\0" +"ru.eu.org\0se.eu.org\0" +"web.tj\0" +"ochi.kochi.jp\0" +"li.it\0lawyer\0" +"kids.museum\0", + +"lucerne.museum\0hopto.me\0" +"takata.fukuoka.jp\0" +"w.se\0web.tr\0finance\0" +"yasuoka.nagano.jp\0folionetwork.site\0syno-ds.de\0" +"frogn.no\0" +"iwi.nz\0" +"rimini.it\0" +"yukuhashi.fukuoka.jp\0\xe0\xaa\xad\xe0\xaa\xbe\xe0\xaa\xb0\xe0\xaa\xa4\0" +"swidnica.pl\0" +"*.devcdnaccesso.com\0" +"nishikata.tochigi.jp\0basicserver.io\0" +"lib.hi.us\0ma.leg.br\0" +"usarts.museum\0web.ve\0" +"chikuhoku.nagano.jp\0" +"choshi.chiba.jp\0stackhero-network.com\0" +"barsy.co.uk\0" +"creditcard\0" +"tempioolbia.it\0minokamo.gifu.jp\0business\0" +"dy.fi\0" +"ainan.ehime.jp\0" +"mb.ca\0" +"tone.ibaraki.jp\0" +"wa.us\0" +"n\xc3\xa1vuotna.no\0photography\0" +"contagem.br\0botanicalgarden.museum\0technology\0" +"castle.museum\0convent.museum\0halloffame.museum\0" +"kiyosu.aichi.jp\0" +"gildesk\xc3\xa5l.no\0isa-geek.org\0" +"herad.no\0" +"adv.br\0mikawa.yamagata.jp\0" +"mihama.aichi.jp\0dlugoleka.pl\0" +"zgora.pl\0" +"sr.it\0loabat.no\0" +"usculture.museum\0giehtavuoatna.no\0" +"fl\xc3\xa5.no\0" +"diskussionsbereich.de\0" +"jab.br\0helsinki\0qbuser.com\0" +"ah.no\0myddns.rocks\0" +"horten.no\0" +"rocks\0" +"i234.me\0" +"sunagawa.hokkaido.jp\0hitachinaka.ibaraki.jp\0" +"firmdale\0" +"cc.ak.us\0" +"geometre-expert.fr\0" +"school.museum\0from-id.com\0" +"glass.museum\0web.za\0" +"fribourg.museum\0" +"ayabe.kyoto.jp\0" +"hitachi.ibaraki.jp\0akiruno.tokyo.jp\0" +"omg.lol\0" +"omitama.ibaraki.jp\0nikolaev.ua\0" +"taketa.oita.jp\0aca.pro\0hosting\0sohu\0" +"naklo.pl\0" +"boston.museum\0" +"amot.no\0" +"gotdns.com\0" +"hemnes.no\0" +"shima.mie.jp\0dp.ua\0" +"vald-aosta.it\0" +"kamitsue.oita.jp\0" +"shimane.jp\0tokoname.aichi.jp\0\xd9\x87\xd9\x85\xd8\xb1\xd8\xa7\xd9\x87\0" +"railroad.museum\0pramerica\0" +"taku.saga.jp\0country\0resindevice.io\0" +"francaise.museum\0" "pe.gov.br\0" -"browsersafetymark.io\0" -"shisui.chiba.jp\0kasserver.com\0firm.dk\0" -"qa2.com\0" -"bib.br\0safe\0" -"eidskog.no\0" -"test-iserv.de\0" -"takatsuki.osaka.jp\0gs.mr.no\0" -"iraq.museum\0" -"chat\0s3-sa-east-1.amazonaws.com\0" -"hida.gifu.jp\0" -"ehime.jp\0" -"misato.shimane.jp\0" -"v\xc3\xa5gs\xc3\xb8y.no\0" -"isernia.it\0seto.aichi.jp\0" -"valleeaoste.it\0" -"bible\0" -"clinton.museum\0" -"rishiri.hokkaido.jp\0" -"sakaki.nagano.jp\0" -"ne.jp\0troms\xc3\xb8.no\0" -"emergency.aero\0" -"nayoro.hokkaido.jp\0aramco\0" -"from-ga.com\0" -"ne.ke\0is-an-actress.com\0" -"gamvik.no\0" -"rovno.ua\0bloomberg\0" -"jus.br\0tsuiki.fukuoka.jp\0youth.museum\0raholt.no\0" -"tube\0" -"fedex\0" -"ne.kr\0\xd1\x80\xd1\x83\xd1\x81\0" -"niiza.saitama.jp\0is-a-green.com\0" -"hl.cn\0" -"exchange\0hopto.me\0" -"is-a-patsfan.org\0" -"nagatoro.saitama.jp\0" -"nagano.nagano.jp\0" -"nakagawa.nagano.jp\0" -"helsinki.museum\0" -"servebbs.org\0" -"serveminecraft.net\0" -"engine.aero\0yuza.yamagata.jp\0" -"grajewo.pl\0" -"ny.us\0" -"seiro.niigata.jp\0" -"oirm.gov.pl\0" -"\xe6\x9d\xb1\xe4\xba\xac.jp\0" -"seirou.niigata.jp\0az.us\0" +"kotoura.tottori.jp\0s3.dualstack.ap-northeast-1.amazonaws.com\0" +"blogsyte.com\0" +"fuso.aichi.jp\0" +"okinawa\0en-root.fr\0" +"aosta-valley.it\0ralingen.no\0""4u.com\0" +"tanagura.fukushima.jp\0protonet.io\0" +"oshima.yamaguchi.jp\0nome.pt\0" +"cc.id.us\0dyndns-ip.com\0" +"g12.br\0" +"uchiko.ehime.jp\0" +"pa.us\0" +"westeurope.azurestaticapps.net\0" +"n\xc3\xa5\xc3\xa5mesjevuemie.no\0" +"aq.it\0ba.it\0" +"qc.ca\0" +"osasco.br\0ujitawara.kyoto.jp\0ap-northeast-2.elasticbeanstalk.com\0" +"rifu.miyagi.jp\0" +"indian.museum\0nowtv\0virgin\0" +"forgot.her.name\0" +"nctu.me\0" +"mb.it\0homegoods\0" +"ltda\0" +"stuff-4-sale.us\0" +"uda.nara.jp\0" +"yombo.me\0" +"hyatt\0" +"music.museum\0" +"york.museum\0" +"kyotango.kyoto.jp\0" +"fortmissoula.museum\0co.events\0" +"*.gateway.dev\0" +"from-mt.com\0from-nd.com\0" +"piedmont.it\0" +"song\0" +"thingdustdata.com\0" +"kawanishi.yamagata.jp\0" +"tires\0" +"mobi.gp\0" +"owani.aomori.jp\0" +"ky.us\0" +"k12.ut.us\0ath.cx\0" +"pol.dz\0" +"warmia.pl\0" +"\xe9\xa6\x99\xe6\xb8\xaf\0" +"bj.cn\0aogashima.tokyo.jp\0sokndal.no\0ismaili\0" +"news.hu\0test.tj\0sony\0" +"from-dc.com\0" +"yachts\0" +"agents.aero\0" +"b\xc3\xa1l\xc3\xa1t.no\0baby\0" +"belau.pw\0" +"utashinai.hokkaido.jp\0" "pa.gov.pl\0" -"lajolla.museum\0" -"shizuoka.jp\0" -"toride.ibaraki.jp\0" -"tel.tr\0" -"vpnplus.to\0" -"t.bg\0" -"sale\0" -"\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0" -"k12.ma.us\0domains\0" -"ondigitalocean.app\0" -"minamifurano.hokkaido.jp\0cust.prod.thingdust.io\0" -"friuliveneziagiulia.it\0" -"webcam\0est-a-la-masion.com\0" -"k12.ec\0kagamino.okayama.jp\0" -"cal.it\0k12.al.us\0" -"higashichichibu.saitama.jp\0" -"gold\0jpn.com\0" -"aosta-valley.it\0sandcats.io\0" -"golf\0" -"okoppe.hokkaido.jp\0dyndns-web.com\0" -"hanno.saitama.jp\0" -"uonuma.niigata.jp\0gov.scot\0" -"xxx\0" -"dnepropetrovsk.ua\0pages.wiardweb.com\0" -"ne.pw\0" -"medecin.km\0nalchik.ru\0" -"tajimi.gifu.jp\0ipifony.net\0" -"saga.saga.jp\0" -"komagane.nagano.jp\0moscow.museum\0" -"info.zm\0" -"hitachi.ibaraki.jp\0zp.gov.pl\0" -"jp.eu.org\0" -"\xe4\xbf\xa1\xe6\x81\xaf\0" -"sumoto.kumamoto.jp\0" -"xyz\0" -"shiogama.miyagi.jp\0tvedestrand.no\0" -"pb.ao\0pv.it\0" -"kosei.shiga.jp\0" -"nalchik.su\0" -"genoa.it\0hoteles\0" -"or.at\0vall\xc3\xa9""e-d-aoste.it\0misawa.aomori.jp\0osoyro.no\0" -"catania.it\0torino.it\0b\xc3\xa1id\xc3\xa1r.no\0" +"riopreto.br\0even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0" +"app.br\0" +"biei.hokkaido.jp\0elblag.pl\0deal\0bookonline.app\0" +"edu.eu.org\0" +"radoy.no\0" +"ws.na\0" +"taiji.wakayama.jp\0" +"rodeo\0" +"\xe7\x82\xb9\xe7\x9c\x8b\0httpbin.org\0" +"k12.ga.us\0" +"nishinoomote.kagoshima.jp\0horse\0" +"reggio-calabria.it\0wajima.ishikawa.jp\0" +"verm\xc3\xb6gensberatung\0collegefan.org\0" +"adv.mz\0lunner.no\0" +"ia.us\0" +"enterprises\0" +"m\xc3\xa5s\xc3\xb8y.no\0" +"cc.me.us\0\xd9\x85\xd9\x88\xd8\xb1\xd9\x8a\xd8\xaa\xd8\xa7\xd9\x86\xd9\x8a\xd8\xa7\0test.ru\0" +"yabu.hyogo.jp\0cn.eu.org\0" +"kouyama.kagoshima.jp\0" +"pol.ht\0" +"hasvik.no\0" +"cc.wv.us\0azure\0" +"is-with-theband.com\0" +"bozen.it\0" +"\xd9\x82\xd8\xb7\xd8\xb1\0capitalone\0" +"global\0" +"sardegna.it\0" +"military.museum\0pisz.pl\0isa-geek.com\0" +"ouchi.saga.jp\0fiat\0" +"\xe5\x92\x8c\xe6\xad\x8c\xe5\xb1\xb1.jp\0americanexpress\0prvcy.page\0" +"g\xc3\xbcnstigliefern.de\0" +"praxi\0" +"shibata.miyagi.jp\0sandnes.no\0" +"rio.br\0" "pr.gov.br\0" -"firm.ve\0" -"or.bi\0" -"\xd0\xbe\xd0\xb1\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0" -"abogado\0*.elb.amazonaws.com\0" -"nishimera.miyazaki.jp\0" -"sos.pl\0" -"uk.kg\0" -"sth.ac.at\0odate.akita.jp\0" -"iglesias-carbonia.it\0" -"stuff-4-sale.org\0" -"barsy.support\0" -"goog\0" -"umb.it\0" -"lgbt\0" -"or.ci\0jdevcloud.com\0" -"tos.it\0toya.hokkaido.jp\0toyama.toyama.jp\0" -"camera\0" -"zt.ua\0" -"or.cr\0" -"sue.fukuoka.jp\0" -"k12.il\0" +"citadel\0" +"seiro.niigata.jp\0" +"nord-fron.no\0" +"git-repos.de\0" +"smola.no\0" +"app.gp\0" +"tokushima.tokushima.jp\0" +"tranibarlettaandria.it\0" +"house.museum\0" +"cc.tn.us\0microsoft\0" +"fukushima.fukushima.jp\0jefferson.museum\0" +"trentin-sudtirol.it\0ddns.net\0" +"fido\0" +"paris.eu.org\0" +"catanzaro.it\0" +"midsund.no\0" "x443.pw\0" -"*.stg.dev\0" -"airtraffic.aero\0l\xc3\xa1hppi.no\0" -"ashoro.hokkaido.jp\0farmers.museum\0hiphop\0" -"ami.ibaraki.jp\0" -"ne.ug\0wien\0" -"kaminoyama.yamagata.jp\0" -"ne.tz\0" -"copenhagen.museum\0" -"\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0ann-arbor.mi.us\0" -"omaezaki.shizuoka.jp\0sarl\0" -"iron.museum\0" -"ne.us\0" -"grainger\0" -"watchandclock.museum\0" -"fst.br\0ris\xc3\xb8r.no\0" -"koebenhavn.museum\0bounceme.net\0" -"is-a-geek.net\0" -"freeboxos.com\0" -"sko.gov.pl\0cc.tx.us\0" -"pup.gov.pl\0accesscam.org\0" -"iwama.ibaraki.jp\0" -"agriculture.museum\0atm.pl\0" -"no-ip.co.uk\0" -"hl.no\0" -"hadano.kanagawa.jp\0" -"firm.ro\0cc.hi.us\0" -"cc.ct.us\0*.ocp.customer-oci.com\0" -"bando.ibaraki.jp\0" -"shirosato.ibaraki.jp\0you\0" -"townnews-staging.com\0" -"tono.iwate.jp\0hakuba.nagano.jp\0foundation.museum\0" -"\xd1\x81\xd1\x80\xd0\xb1\0" -"alaska.museum\0" -"himeji.hyogo.jp\0" -"frana.no\0comsec\0" -"kosuge.yamanashi.jp\0" -"hosting-cluster.nl\0" -"natuurwetenschappen.museum\0" -"iruma.saitama.jp\0" -"harima.hyogo.jp\0ams1.jls.docktera.net\0" -"archaeology.museum\0" -"bulsan-sudtirol.it\0" -"hof.no\0" -"stream\0users.scale.virtualcloud.com.br\0" -"kita.osaka.jp\0lardal.no\0cloud-fr1.unispace.io\0" -"kitaura.miyazaki.jp\0ryokami.saitama.jp\0histoire.museum\0save\0" -"agrigento.it\0katsuura.chiba.jp\0minami.kyoto.jp\0kv\xc3\xa6""fjord.no\0loppa.no\0" -"or.id\0" -"\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa7\xb0\xe0\xa6\xa4\0cc.hn\0" -"tkmaxx\0" -"gs.st.no\0", - -"pri.ee\0" -"from-ia.com\0webthings.io\0" -"kumatori.osaka.jp\0fetsund.no\0" -"otobe.hokkaido.jp\0" -"or.it\0ninomiya.kanagawa.jp\0comunica\xc3\xa7\xc3\xb5""es.museum\0j.layershift.co.uk\0" -"balat.no\0" -"adv.br\0aknoluokta.no\0" -"friulivgiulia.it\0" -"erotika.hu\0firm.nf\0" -"taobao\0firm.ng\0" -"torahime.shiga.jp\0wiki\0" -"bs.it\0sites.static.land\0" -"spy.museum\0" -"or.jp\0" -"mckinsey\0" -"aichi.jp\0geelvinck.museum\0" -"goldpoint\0definima.io\0" -"slupsk.pl\0beep.pl\0pointto.us\0" -"or.ke\0" -"gs.oslo.no\0kinder\0" -"saxo\0" -"\xe7\xb6\xb2\xe8\xb7\xaf.tw\0" -"sumita.iwate.jp\0" -"cards\0" -"sc.cn\0" -"or.kr\0ocs.opusinteractive.io\0" -"itau\0" -"kai.yamanashi.jp\0" -"diskstation.me\0" -"est.pr\0" -"trentin-s\xc3\xbc""dtirol.it\0shijonawate.osaka.jp\0" -"yun\0" -"cci.fr\0" -"numazu.shizuoka.jp\0u2-local.xnbay.com\0" -"chirurgiens-dentistes-en-france.fr\0familyds.org\0" -"wine\0" -"dattolocal.com\0diskstation.eu\0" -"yusui.kagoshima.jp\0sula.no\0" -"is-a-nurse.com\0" -"production.aero\0shibetsu.hokkaido.jp\0" -"or.na\0ma.us\0" -"slg.br\0" -"or.mu\0" -"masaki.ehime.jp\0" -"isshiki.aichi.jp\0cc.na\0" -"kmpsp.gov.pl\0cc.wy.us\0clicketcloud.com\0" -"maebashi.gunma.jp\0" -"ngrok.io\0" -"samsung\0" -"k12.tr\0" -"happou.akita.jp\0" -"t.se\0" -"mysecuritycamera.com\0" -"filegear-jp.me\0" -"uslivinghistory.museum\0" -"depot.museum\0" -"fukagawa.hokkaido.jp\0" -"shacknet.nu\0" -"freebox-os.com\0" -"bozen-s\xc3\xbc""dtirol.it\0oguni.yamagata.jp\0" -"cnt.br\0nosegawa.nara.jp\0railway.museum\0" -"lerdal.no\0*.dapps.earth\0" -"k12.vi\0" -"ap-southeast-2.elasticbeanstalk.com\0bitbridge.net\0" -"zip\0zuerich\0" -"reggio-emilia.it\0" -"serveexchange.com\0" -"kozaki.chiba.jp\0or.pw\0" -"is-a-bulls-fan.com\0" -"bjarkoy.no\0kindle\0" -"curitiba.br\0" -"mus.br\0\xd8\xa7\xd8\xaa\xd8\xb5\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\0" -"stalbans.museum\0" -"lib.vt.us\0" +"s3-external-1.amazonaws.com\0" +"kv\xc3\xa6nangen.no\0" +"madrid.museum\0" +"sandnessjoen.no\0" +"doesntexist.org\0" +"s\xc3\xb8rfold.no\0" +"s3-ap-southeast-2.amazonaws.com\0" +"its.me\0" +"kyuragi.saga.jp\0sn\xc3\xa5sa.no\0" +"senseering.net\0" +"artcenter.museum\0in-vpn.org\0" +"flanders.museum\0" +"tirol\0from.marketing\0" +"nabari.mie.jp\0mimata.miyazaki.jp\0cy.eu.org\0" +"miho.ibaraki.jp\0" +"iopsys.se\0" +"kizu.kyoto.jp\0" +"kasai.hyogo.jp\0" +"contemporary.museum\0from-wv.com\0" +"oyamazaki.kyoto.jp\0" +"aip.ee\0" +"det.br\0narita.chiba.jp\0" +"snillfjord.no\0" +"\xe9\xa4\x90\xe5\x8e\x85\0to.work\0inc.hk\0" +"jprs\0" +"is.it\0" +"tt.im\0" +"univ.sn\0" +"oguchi.aichi.jp\0audnedaln.no\0" +"nemuro.hokkaido.jp\0bargains\0" +"ud.it\0sango.nara.jp\0malvik.no\0" +"cz.eu.org\0" +"\xe9\xa6\x99\xe5\xb7\x9d.jp\0bible\0" +"medio-campidano.it\0onomichi.hiroshima.jp\0" +"minamiuonuma.niigata.jp\0band\0sandcats.io\0" +"condos\0" +"jele.club\0" +"matsushima.miyagi.jp\0bank\0isteingeek.de\0" +"studio\0" +"berkeley.museum\0mansion.museum\0" +"dell\0" +"bonn.museum\0k12.sc.us\0" +"unazuki.toyama.jp\0songdalen.no\0\xeb\x8b\xb7\xec\xbb\xb4\0" +"swinoujscie.pl\0cc.mn.us\0agakhan\0" +"bulsan-suedtirol.it\0" +"okaya.nagano.jp\0" +"dk.eu.org\0" +"kitaura.miyazaki.jp\0hayakawa.yamanashi.jp\0" +"c.bg\0kitadaito.okinawa.jp\0ota.tokyo.jp\0" +"glade\0" +"watari.miyagi.jp\0berlev\xc3\xa5g.no\0" +"kamagaya.chiba.jp\0is-a-soxfan.org\0" +"jl.cn\0" +"guam.gu\0oi.kanagawa.jp\0" +"ayagawa.kagawa.jp\0hanno.saitama.jp\0cards\0" +"aibetsu.hokkaido.jp\0kanan.osaka.jp\0" +"tsukui.kanagawa.jp\0" +"boldlygoingnowhere.org\0" +"memorial.museum\0" +"perspecta.cloud\0" +"arab\0" +"management\0" +"bib.br\0amazon\0" +"\xe5\x85\xac\xe7\x9b\x8a\0" +"otama.fukushima.jp\0" +"film\0" +"cc.hn\0" +"katashina.gunma.jp\0" +"s3.dualstack.eu-west-3.amazonaws.com\0" +"lib.md.us\0" +"yamagata.ibaraki.jp\0pol.tr\0insurance\0" +"valleeaoste.it\0nanbu.tottori.jp\0beauty\0" +"amsterdam\0" +"belem.br\0" +"customer.speedpartner.de\0" +"indiana.museum\0nannestad.no\0" +"hotels\0meet\0" +"kokonoe.oita.jp\0pagefrontapp.com\0" +"cnt.br\0" +"g\xc3\xa1ivuotna.no\0" +"bs.it\0" +"gd.cn\0edgecompute.app\0" +"rochester.museum\0" +"atl.jelastic.vps-host.net\0" +"mt.it\0kimino.wakayama.jp\0" +"usui.fukuoka.jp\0spot\0wmcloud.org\0" +"de.eu.org\0mg.leg.br\0myactivedirectory.com\0" +"tainai.niigata.jp\0izumiotsu.osaka.jp\0" +"nanyo.yamagata.jp\0" +"casadelamoneda.museum\0is-a-patsfan.org\0" +"tsukuba.ibaraki.jp\0" +"miyazaki.miyazaki.jp\0" +"wsa.gov.pl\0" +"hirono.fukushima.jp\0hino.tokyo.jp\0is-a-teacher.com\0" +"mk.ua\0" +"nankoku.kochi.jp\0dray-dns.de\0" +"erotika.hu\0shiftedit.io\0" +"from-mi.com\0" +"kashiba.nara.jp\0" +"az.us\0" +"shunan.yamaguchi.jp\0k12.ks.us\0auction\0" +"olbiatempio.it\0" +"molise.it\0" +"maritime.museum\0heroy.nordland.no\0" +"plurinacional.bo\0" +"hitachiomiya.ibaraki.jp\0murmansk.su\0" +"wroclaw.pl\0" +"desi\0" +"yamanashi.jp\0" +"iwate.iwate.jp\0" +"suifu.ibaraki.jp\0jele.host\0" +"ako.hyogo.jp\0" +"milano.it\0go.dyndns.org\0" +"fjaler.no\0" +"hiraya.nagano.jp\0" +"user.aseinet.ne.jp\0us.org\0ddnss.de\0" +"keymachine.de\0" +"stokke.no\0" +"campania.it\0familyds.net\0" +"cc.na\0" +"nm.cn\0" +"hotelwithflight.com\0" +"center\0fire\0" +"ybo.science\0" +"blackfriday\0" +"mobi.tt\0" +"memorial\0" +"yn.cn\0" +"eastafrica.museum\0spdns.eu\0" "po.gov.pl\0" -"shimoda.shizuoka.jp\0edu.scot\0" -"umaji.kochi.jp\0" -"shichinohe.aomori.jp\0lib.mn.us\0" -"r.cdn77.net\0" -"kasukabe.saitama.jp\0" -"obninsk.su\0" -"m\xc3\xa1tta-v\xc3\xa1rjjat.no\0holdings\0playstation-cloud.com\0" -"fh-muenster.io\0" -"ichikai.tochigi.jp\0" -"ao.it\0" -"treviso.it\0" -"kaas.gg\0" -"res.aero\0" -"sc.ke\0" -"travelchannel\0" -"sakai.fukui.jp\0" -"no-ip.info\0" -"aero\0" -"sc.kr\0" -"medecin.fr\0miami\0" -"valle-d-aosta.it\0takayama.nagano.jp\0or.th\0" -"boxfuse.io\0" -"vard\xc3\xb8.no\0" -"uji.kyoto.jp\0" -"satosho.okayama.jp\0veg\xc3\xa5rshei.no\0" -"ricoh\0ufcfan.org\0" -"nohost.me\0" -"\xe7\xb6\xb2\xe7\xb5\xa1.cn\0km.ua\0" -"mitaka.tokyo.jp\0sc.ls\0pohl\0toolforge.org\0" -"oystre-slidre.no\0discourse.group\0" -"or.ug\0\xd1\x81\xd0\xbf\xd0\xb1.\xd1\x80\xd1\x83\xd1\x81\0" -"stadt.museum\0or.tz\0promo\0cc.ua\0" -"h\xc3\xa1mm\xc3\xa1rfeasta.no\0" -"tadaoka.osaka.jp\0" -"tomi.nagano.jp\0sakura.tochigi.jp\0" -"adv.mz\0sa-east-1.elasticbeanstalk.com\0" -"ube.yamaguchi.jp\0" -"erimo.hokkaido.jp\0or.us\0" -"emerck\0" -"aioi.hyogo.jp\0" -"starostwo.gov.pl\0" -"futaba.fukushima.jp\0sor-varanger.no\0" -"nagi.okayama.jp\0" -"deatnu.no\0" -"rio.br\0" -"science.museum\0" -"olsztyn.pl\0" -"mayfirst.org\0noip.us\0" -"is.eu.org\0" -"mihama.mie.jp\0schmidt\0" -"8.bg\0cc.al.us\0" -"research.museum\0k12.mt.us\0" -"dnsalias.net\0" -"club.tw\0" -"ono.fukushima.jp\0francaise.museum\0" -"slattum.no\0" -"trolley.museum\0" -"asso.eu.org\0" -"shingu.hyogo.jp\0from-ca.com\0" -"amakusa.kumamoto.jp\0" -"of.fashion\0" -"my-wan.de\0" -"*.triton.zone\0" -"s3-us-gov-west-1.amazonaws.com\0wafflecell.com\0" -"capital\0it.eu.org\0" -"ohira.miyagi.jp\0" -"trentino-altoadige.it\0" -"skjervoy.no\0" -"\xe7\xb6\xb2\xe7\xb5\xa1.hk\0corporation.museum\0gs.va.no\0" -"customer.mythic-beasts.com\0" -"guernsey.museum\0statefarm\0" -"\xe8\xb4\xad\xe7\x89\xa9\0" -"trycloudflare.com\0" -"kamakura.kanagawa.jp\0warszawa.pl\0" -"mcdir.ru\0" -"\xe6\x84\x9b\xe5\xaa\x9b.jp\0" -"oirase.aomori.jp\0" -"rikubetsu.hokkaido.jp\0green\0" -"british.museum\0" -"ina.ibaraki.jp\0" -"shishikui.tokushima.jp\0" -"citi\0" -"trana.no\0" -"office\0" -"yugawara.kanagawa.jp\0" -"iizuna.nagano.jp\0is-found.org\0" -"!city.kobe.jp\0money.museum\0\xd0\xb1\xd0\xb8\xd0\xb7.\xd1\x80\xd1\x83\xd1\x81\0" -"aomori.jp\0" -"ha.cn\0varoy.no\0city\0" -"utazas.hu\0koto.tokyo.jp\0stavern.no\0" -"gmina.pl\0" -"hofu.yamaguchi.jp\0" -"virtual.museum\0" -"sc.ug\0" -"in.eu.org\0" -"honai.ehime.jp\0sc.tz\0" -"hair\0" -"\xe9\xb9\xbf\xe5\x85\x90\xe5\xb3\xb6.jp\0" -"higashiizumo.shimane.jp\0lorenskog.no\0" -"asuke.aichi.jp\0" -"namegawa.saitama.jp\0" -"sc.us\0simple-url.com\0" -"kaita.hiroshima.jp\0" -"lea\xc5\x8bgaviika.no\0\xe6\x94\xbf\xe5\xba\x9c.\xe9\xa6\x99\xe6\xb8\xaf\0" -"parliament.nz\0" -"newjersey.museum\0virgin\0" -"dnsupdate.info\0" -"mircloud.host\0" -"fortmissoula.museum\0immobilien\0" -"yao.osaka.jp\0" -"minamata.kumamoto.jp\0" -"creation.museum\0cc.va.us\0" -"porn\0daemon.panel.gg\0" -"kushiro.hokkaido.jp\0\xe5\xb9\xbf\xe4\xb8\x9c\0" -"grp.lk\0" -"monster\0" -"cooperativa.bo\0" -"jeep\0twmail.cc\0" -"i.bg\0land-4-sale.us\0" -"shinjo.okayama.jp\0" -"eidsberg.no\0" -"\xe7\xbd\x91\xe7\xab\x99\0" -"uk.net\0" -"\xe7\xbd\x91\xe5\x9d\x80\0" -"hidaka.wakayama.jp\0post\0s3-website-us-west-1.amazonaws.com\0chimkent.su\0nid.io\0" -"xen.prgmr.com\0" -"kawanishi.yamagata.jp\0b\xc3\xa1hccavuotna.no\0serveftp.com\0" -"def.br\0george\0" -"free.hr\0" -"s3.cn-north-1.amazonaws.com.cn\0" -"funabashi.chiba.jp\0" -"shimotsuke.tochigi.jp\0tysnes.no\0forgot.his.name\0es.leg.br\0" -"skjerv\xc3\xb8y.no\0" -"odo.br\0koga.ibaraki.jp\0" -"shiraoka.saitama.jp\0" -"gifts\0" -"mw.gov.pl\0" -"s3.ap-south-1.amazonaws.com\0" -"szex.hu\0gs.tm.no\0" -"lease\0" -"is-a-republican.com\0" -"\xd1\x83\xd0\xba\xd1\x80\0" -"alessandria.it\0zamami.okinawa.jp\0noip.me\0" -"tarama.okinawa.jp\0" -"tp.it\0" +"sakuragawa.ibaraki.jp\0mobi.tz\0\xe5\x85\xab\xe5\x8d\xa6\0" +"imizu.toyama.jp\0" +"newhampshire.museum\0fentiger.mythic-beasts.com\0*.quipelements.com\0" +"niigata.niigata.jp\0" +"accesscam.org\0" +"nanae.hokkaido.jp\0" +"fish\0" +"ikeda.fukui.jp\0" +"service.gov.scot\0" +"from.hr\0luxembourg.museum\0vuelos\0home-webserver.de\0" +"barsy.net\0" "toon.ehime.jp\0" -"og.ao\0scot\0" -"condos\0" -"bod\xc3\xb8.no\0final\0caa.li\0" -"tottori.tottori.jp\0" -"indianmarket.museum\0" -"cl.it\0" -"time.no\0" -"iwate.jp\0" -"sasaguri.fukuoka.jp\0dagestan.ru\0" -"kuchinotsu.nagasaki.jp\0" -"zapto.org\0" -"crafting.xyz\0" -"tysvar.no\0" -"ms.gov.br\0" -"kiyama.saga.jp\0meguro.tokyo.jp\0film.museum\0" -"fm.br\0snoasa.no\0" -"\xd5\xb0\xd5\xa1\xd5\xb5\0" -"hachinohe.aomori.jp\0tranby.no\0" -"dagestan.su\0" -"pilot.aero\0lidl\0" -"debian.net\0" -"americanantiques.museum\0vlaanderen.museum\0" -"bergen.no\0" -"kita.tokyo.jp\0chintai\0mcpe.me\0" -"birkenes.no\0" -"kiyosu.aichi.jp\0" -"webhop.biz\0" -"iobb.net\0" -"shinonsen.hyogo.jp\0" -"dsmynas.org\0" -"dp.ua\0" -"homeunix.com\0" -"mydrobo.com\0linkyard.cloud\0" -"mt.gov.br\0ut.us\0" -"stjohn.museum\0life\0" -"umi.fukuoka.jp\0kolobrzeg.pl\0financial\0" -"wegrow.pl\0" -"charity\0" -"in-the-band.net\0" -"chita.aichi.jp\0" -"synology-diskstation.de\0" -"kouzushima.tokyo.jp\0b\xc3\xa5tsfjord.no\0vacations\0" -"tydal.no\0de.cool\0" -"uchihara.ibaraki.jp\0thruhere.net\0" -"com.ac\0boutique\0" -"com.af\0" -"com.ag\0varggat.no\0washtenaw.mi.us\0" -"takatori.nara.jp\0cc.ks.us\0" -"com.ai\0ha.no\0" -"sicilia.it\0" -"com.al\0*.nodebalancer.linode.com\0ditchyourip.com\0" -"com.am\0emp.br\0fortal.br\0andria-trani-barletta.it\0tonami.toyama.jp\0" -"inawashiro.fukushima.jp\0gangaviika.no\0" -"hiraizumi.iwate.jp\0" -"com.ba\0lefrak\0" -"com.ar\0com.bb\0karate.museum\0" +"godaddy\0" +"meme\0" +"c.la\0" +"l.bg\0marburg.museum\0" +"from-oh.com\0adygeya.su\0" +"\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x90\xe0\xb8\x9a\xe0\xb8\xb2\xe0\xb8\xa5.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"canada.museum\0" +"shiraoka.saitama.jp\0roan.no\0" +"orange\0" +"re.it\0vlaanderen.museum\0" +"com.ac\0" +"com.af\0\xe0\xa8\xad\xe0\xa8\xbe\xe0\xa8\xb0\xe0\xa8\xa4\0" +"com.ag\0" +"obira.hokkaido.jp\0" +"com.ai\0lixil\0spdns.org\0" +"com.al\0" +"com.am\0" +"k12.ec\0osteroy.no\0" +"com.ba\0flor\xc3\xb8.no\0barsy.online\0" +"com.ar\0com.bb\0moroyama.saitama.jp\0" +"oum.gov.pl\0" +"menu\0" "com.au\0" -"plantation.museum\0" +"not.br\0rockart.museum\0" "com.aw\0" -"com.bh\0" -"com.bi\0" -"com.az\0" -"saroma.hokkaido.jp\0" +"com.bh\0wakayama.jp\0lib.nm.us\0" +"com.bi\0ca.eu.org\0mcpre.ru\0" +"com.az\0gov.nc.tr\0" +"economia.bo\0" "com.bm\0" "com.bn\0" "com.bo\0" +"takatori.nara.jp\0re.kr\0\xd8\xa7\xd9\x84\xd9\x85\xd8\xba\xd8\xb1\xd8\xa8\0" +"mobi.na\0\xe0\xb6\xbd\xe0\xb6\x82\xe0\xb6\x9a\xe0\xb7\x8f\0kurgan.su\0" "com.br\0" -"com.bs\0kanagawa.jp\0" -"com.bt\0rsvp\0" -"v\xc3\xa5g\xc3\xa5.no\0" -"frog.museum\0haus\0blogdns.org\0" -"com.by\0com.ci\0" -"com.bz\0" -"com.cm\0" -"com.cn\0" -"com.co\0worse-than.tv\0" -"nore-og-uvdal.no\0" -"masoy.no\0" -"wajiki.tokushima.jp\0turen.tn\0" +"com.bs\0moriyama.shiga.jp\0" +"com.bt\0moscow.museum\0" +"kamiamakusa.kumamoto.jp\0minamiise.mie.jp\0mobi.ng\0" +"kikugawa.shizuoka.jp\0shibuya.tokyo.jp\0" +"4.bg\0com.by\0com.ci\0dyndns-server.com\0" +"com.bz\0cl.it\0adygeya.ru\0" +"hiji.oita.jp\0" +"mielec.pl\0" +"com.cm\0omotego.fukushima.jp\0" +"com.cn\0piacenza.it\0freeddns.org\0" +"com.co\0" +"minamiechizen.fukui.jp\0ninja\0" +"repbody.aero\0" +"trento.it\0isa-geek.net\0" "com.cu\0com.de\0" -"portland.museum\0gs.nt.no\0" -"com.cw\0" -"moss.no\0" -"com.cy\0asakawa.fukushima.jp\0apps.fbsbx.com\0" -"wajima.ishikawa.jp\0" -"fukui.fukui.jp\0" -"com.dm\0og.it\0mitoyo.kagawa.jp\0from-ne.com\0" -"l-o-g-i-n.de\0static-access.net\0" +"com.cw\0spdns.de\0" +"com.cy\0" +"okayama.okayama.jp\0" +"cc.ua\0" +"minami.tokushima.jp\0" +"com.dm\0" +"aichi.jp\0dyn-vpn.de\0" "com.do\0" -"like\0" -"yorkshire.museum\0" -"com.ec\0fm.it\0" -"com.ee\0eu-central-1.elasticbeanstalk.com\0" -"com.eg\0" -"i.ng\0holiday\0" -"com.dz\0hichiso.gifu.jp\0" -"salat.no\0" -"nishiazai.shiga.jp\0yoga\0" -"fedorainfracloud.org\0" -"com.es\0kiso.nagano.jp\0" +"otofuke.hokkaido.jp\0epson\0" +"com.ec\0" +"larvik.no\0" +"com.ee\0naruto.tokushima.jp\0army\0" +"entomology.museum\0" +"com.eg\0trentinosud-tirol.it\0" +"anjo.aichi.jp\0" +"schools.nsw.edu.au\0noshiro.akita.jp\0" +"com.dz\0" +"fujisawa.iwate.jp\0strand.no\0" +"nagano.jp\0sukagawa.fukushima.jp\0" +"nes.buskerud.no\0" +"ome.tokyo.jp\0" +"com.es\0is-a-rockstar.com\0" "com.et\0" -"naroy.no\0" -"com.fj\0" -"miyashiro.saitama.jp\0\xe3\x82\xbb\xe3\x83\xbc\xe3\x83\xab\0" -"com.fm\0" -"svalbard.no\0" -"federation.aero\0com.fr\0" -"murata.miyagi.jp\0" -"com.ge\0" -"surgeonshall.museum\0safety\0" -"com.gh\0kv.ua\0" +"v\xc3\xa5gan.no\0" +"bus.museum\0mt.us\0nd.us\0" +"k12.il\0dance\0" +"bar.pro\0" +"com.fj\0togane.chiba.jp\0" +"sakahogi.gifu.jp\0glass\0" +"arpa\0com.fm\0" +"fedje.no\0talk\0" +"*.spectrum.myjino.ru\0zakopane.pl\0" +"com.fr\0" +"coop.ht\0" +"of.by\0" +"com.ge\0ondigitalocean.app\0" +"forte.id\0" +"com.gh\0" "com.gi\0" -"i.ph\0limo\0" +"c.se\0uk.oxa.cloud\0bar0.net\0" +"qld.gov.au\0brother\0" "com.gl\0" -"sciencecenters.museum\0" "com.gn\0" -"tamba.hyogo.jp\0" -"com.gp\0" -"com.gr\0" -"com.gt\0nagareyama.chiba.jp\0" -"com.gu\0vegas\0dd-dns.de\0" -"link\0" -"database.museum\0" -"academy.museum\0baths.museum\0" -"vic.edu.au\0com.gy\0" -"\xe0\xae\x9a\xe0\xae\xbf\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x82\xe0\xae\xb0\xe0\xaf\x8d\0" -"com.hk\0granvin.no\0" -"com.hn\0aquila.it\0perugia.it\0" -"tagawa.fukuoka.jp\0" -"defense.tn\0" -"amagasaki.hyogo.jp\0misato.wakayama.jp\0" -"com.hr\0" -"com.ht\0amli.no\0" -"bibai.hokkaido.jp\0money\0" -"user.srcf.net\0" -"com.im\0ohi.fukui.jp\0naamesjevuemie.no\0dy.fi\0" -"wiki.bo\0fm.no\0jgora.pl\0gallery\0" -"com.io\0bolzano.it\0sandefjord.no\0freesite.host\0" -"hioki.kagoshima.jp\0" -"wiki.br\0com.iq\0s3.dualstack.us-east-2.amazonaws.com\0" -"com.is\0ogori.fukuoka.jp\0" -"k12.ok.us\0" -"saijo.ehime.jp\0" -"i.se\0" -"mosjoen.no\0" -"issmarterthanyou.com\0" -"kanna.gunma.jp\0" -"com.jo\0drangedal.no\0" -"aerodrome.aero\0lima.zone\0" -"dynalias.com\0" -"kanoya.kagoshima.jp\0" -"pacific.museum\0protection\0" -"oristano.it\0com.kg\0redstone\0" -"localhost.daplie.me\0" -"com.ki\0austevoll.no\0infiniti\0servebbs.com\0" -"nexus\0" -"trentino-sued-tirol.it\0*.0emm.com\0firewall-gateway.net\0" -"com.km\0limited\0" -"tokai.ibaraki.jp\0\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0lotte\0" -"yura.wakayama.jp\0evje-og-hornnes.no\0" -"com.kp\0" -"com.la\0" -"iheya.okinawa.jp\0com.lb\0law.za\0" -"com.lc\0bjugn.no\0\xd8\xb4\xd8\xa8\xd9\x83\xd8\xa9\0msk.ru\0" +"cloud.goog\0" +"com.gp\0achi.nagano.jp\0h\xc3\xb8yanger.no\0herokuapp.com\0" +"bomlo.no\0d\xc3\xb8nna.no\0singles\0alpha.bounty-full.com\0" +"com.gr\0conn.uk\0" +"!www.ck\0com.gt\0" +"com.gu\0hinohara.tokyo.jp\0mobi.ke\0" +"akishima.tokyo.jp\0b\xc3\xa1id\xc3\xa1r.no\0" +"koeln\0" +"com.gy\0from-ar.com\0cd.eu.org\0" +"com.hk\0ancona.it\0" +"\xe5\x85\xac\xe5\x8f\xb8\0" +"com.hn\0" +"yoshida.saitama.jp\0" +"ven.it\0inazawa.aichi.jp\0*.banzai.cloud\0" +"coop.br\0" +"com.hr\0free.hr\0" +"cc.co.us\0" +"com.ht\0bod\xc3\xb8.no\0" +"adachi.tokyo.jp\0macys\0" +"sjc.br\0" +"toyota.yamaguchi.jp\0" +"marketing\0" +"computer\0" +"com.im\0" +"com.io\0mydrobo.com\0" +"experts-comptables.fr\0yonaguni.okinawa.jp\0" +"com.iq\0" +"taifun-dns.de\0" +"com.is\0" +"u.bg\0higashimatsuyama.saitama.jp\0" +"loginline.services\0" +"bozen-sudtirol.it\0\xe6\x96\xb0\xe6\xbd\x9f.jp\0" +"uzhgorod.ua\0" +"map.fastlylb.net\0" +"asda\0" +"rn.it\0" +"com.jo\0\xc3\xa1lt\xc3\xa1.no\0" +"arte\0" +"komatsu.ishikawa.jp\0" +"yokkaichi.mie.jp\0" +"luxe\0" +"cherkassy.ua\0de.gt\0" +"com.kg\0museumvereniging.museum\0kaluga.su\0" +"devices.resinstaging.io\0" +"com.ki\0embaixada.st\0" +"messina.it\0\xe5\xa4\xa7\xe9\x98\xaa.jp\0" +"gv.ao\0" +"com.km\0" +"com.kp\0aviation.museum\0shell\0" +"gv.at\0com.la\0" +"com.lb\0" +"com.lc\0" "com.kw\0" -"lotto\0" -"com.ky\0lib.va.us\0works\0blogsite.xyz\0" -"com.kz\0\xe0\xb6\xbd\xe0\xb6\x82\xe0\xb6\x9a\xe0\xb7\x8f\0world\0" -"londrina.br\0com.lk\0" -"nasushiobara.tochigi.jp\0" -"kurume.fukuoka.jp\0" -"glug.org.uk\0" -"adult\0" -"ms.it\0com.lr\0" -"msk.su\0ciscofreak.com\0" -"kuzumaki.iwate.jp\0juedisches.museum\0gs.aa.no\0" -"com.lv\0homegoods\0stada\0" -"com.mg\0cn.com\0" -"davvenj\xc3\xa1rga.no\0" -"minamiizu.shizuoka.jp\0com.ly\0" -"higashi.fukuoka.jp\0" -"com.mk\0wuoz.gov.pl\0" +"vf.no\0" +"fujisato.akita.jp\0com.ky\0" +"com.kz\0" +"com.lk\0" +"\xe6\xb2\x96\xe7\xb8\x84.jp\0barsy.pro\0" +"bbva\0" +"shimosuwa.nagano.jp\0" +"omura.nagasaki.jp\0" +"\xc3\xb8yer.no\0sorreisa.no\0" +"com.lr\0gub.uy\0" +"historical.museum\0l\xc3\xb8renskog.no\0shiksha\0" +"com.lv\0cc.vi.us\0dynalias.net\0" +"livorno.it\0kawaminami.miyazaki.jp\0com.mg\0" +"com.ly\0" +"seirou.niigata.jp\0com.mk\0trustee.museum\0" "com.ml\0" -"kamijima.ehime.jp\0is-a-democrat.com\0" "com.mo\0" +"crafts.museum\0of.je\0" "com.na\0" -"*.kobe.jp\0com.ms\0" +"com.ms\0" "com.mt\0" -"com.mu\0" +"tomi.nagano.jp\0com.mu\0" "com.mv\0com.nf\0" -"ad.jp\0com.mw\0com.ng\0krokstadelva.no\0\xd8\xb9\xd8\xb1\xd8\xa8\0" -"yn.cn\0com.mx\0sokndal.no\0seat\0\xd8\xa7\xd8\xb1\xd8\xa7\xd9\x85\xd9\x83\xd9\x88\0" -"com.my\0com.ni\0" -"bolivia.bo\0ltd.cy\0otago.museum\0est-a-la-maison.com\0" -"dance\0" -"ms.kr\0" +"com.mw\0com.ng\0" +"com.mx\0mw.gov.pl\0clickrising.net\0" +"com.my\0com.ni\0exchange\0" +"virtual.museum\0" +"skaun.no\0" +"barsy.pub\0" "com.nr\0" -"sakura.chiba.jp\0" -"gz.cn\0hashbang.sh\0" -"from-tn.com\0" -"air.museum\0" -"review\0" -"\xc3\xa5rdal.no\0" -"\xe4\xbc\x81\xe4\xb8\x9a\0" -"boavista.br\0com.om\0auction\0" -"net.eu.org\0" -"dell-ogliastra.it\0live\0" -"medicina.bo\0com.pa\0is-a-nascarfan.com\0" -"taiji.wakayama.jp\0lon.wafaicloud.com\0" -"\xd0\xb4\xd0\xb5\xd1\x82\xd0\xb8\0" -"com.pe\0" -"res.in\0lebesby.no\0com.pf\0" -"valleaosta.it\0" -"artsandcrafts.museum\0com.ph\0" -"shoes\0" -"hasvik.no\0" +"campidano-medio.it\0" +"hanyu.saitama.jp\0nid.io\0" +"markets\0certmgr.org\0" +"\xd9\x83\xd9\x88\xd9\x85\0" +"cloudycluster.net\0*.on-rancher.cloud\0" +"*.kawasaki.jp\0k12.me.us\0" +"bergbau.museum\0" +"asia\0shinichi.hiroshima.jp\0com.om\0" +"ovre-eiker.no\0" +"accenture\0" +"kasuga.hyogo.jp\0com.pa\0" +"nm.us\0" +"schlesisches.museum\0s\xc3\xb8mna.no\0" +"s3.dualstack.us-east-2.amazonaws.com\0issmarterthanyou.com\0" +"com.pe\0de.ls\0" +"com.pf\0de.md\0" +"suli.hu\0" +"com.ph\0" +"lewismiller.museum\0" +"organic\0blog.gt\0" "com.pk\0" "com.pl\0" -"dyr\xc3\xb8y.no\0embaixada.st\0" -"uwajima.ehime.jp\0" -"beauxarts.museum\0" -"tunes\0" +"\xe5\x8c\x97\xe6\xb5\xb7\xe9\x81\x93.jp\0" +"ms.gov.br\0historyofscience.museum\0" +"barletta-trani-andria.it\0holmestrand.no\0" "com.qa\0" -"in.na\0namdalseid.no\0com.pr\0" -"com.ps\0uber.space\0" -"com.pt\0" -"\xe9\x80\x9a\xe8\xb2\xa9\0" -"org.ac\0" -"gjerdrum.no\0com.py\0" -"org.ae\0ltd.gi\0in.ni\0training\0" -"org.af\0philately.museum\0" -"org.ag\0" -"revista.bo\0" -"org.ai\0" -"aguni.okinawa.jp\0seek\0" -"org.al\0" -"org.am\0arakawa.tokyo.jp\0" -"k12.vi.us\0" -"r.bg\0com.re\0" -"org.ba\0" -"org.ar\0org.bb\0inder\xc3\xb8y.no\0" -"hawaii.museum\0co.network\0" -"org.au\0" -"k12.id.us\0ltd.hk\0" -"org.bh\0minano.saitama.jp\0" -"org.bi\0udono.mie.jp\0" -"org.az\0com.ro\0" -"taishi.osaka.jp\0" -"com.sa\0" -"org.bm\0oishida.yamagata.jp\0rygge.no\0com.sb\0pt.eu.org\0" -"org.bn\0naruto.tokushima.jp\0com.sc\0" -"org.bo\0com.sd\0" -"niepce.museum\0hitra.no\0com.se\0com.ru\0" -"org.br\0naka.ibaraki.jp\0com.sg\0" -"org.bs\0com.sh\0" -"org.bt\0" -"yusuhara.kochi.jp\0syncloud.it\0indowapblog.com\0" -"barsyonline.co.uk\0urown.cloud\0" -"org.bw\0com.sl\0" -"de.gt\0" -"org.ci\0com.sn\0" -"org.bz\0com.so\0" -"org.cn\0com.ss\0" -"org.co\0com.st\0nym.by\0" -"jaworzno.pl\0nym.bz\0" -"com.sv\0" -"ebina.kanagawa.jp\0" -"\xd0\xb0\xd0\xba.\xd1\x81\xd1\x80\xd0\xb1\0" -"com.sy\0\xd8\xb9\xd9\x85\xd8\xa7\xd9\x86\0" -"org.cu\0com.tj\0" -"\xd8\xb3\xd9\x88\xd8\xaf\xd8\xa7\xd9\x86\0" -"org.cw\0" -"com.tm\0ams.cloudswitches.com\0" -"org.cy\0ora.gunma.jp\0com.tn\0" -"tamano.okayama.jp\0com.to\0" +"fukui.fukui.jp\0com.pr\0dontexist.net\0" +"fla.no\0com.ps\0" +"brussel.museum\0com.pt\0" +"komono.mie.jp\0" +"l.se\0" +"kakegawa.shizuoka.jp\0" +"komae.tokyo.jp\0com.py\0\xe5\x95\x86\xe5\xba\x97\0" +"boleslawiec.pl\0" +"k12.tr\0yali.mythic-beasts.com\0" +"art.br\0fusa.no\0" +"sakata.yamagata.jp\0discount\0" +"abu.yamaguchi.jp\0" +"us-gov-west-1.elasticbeanstalk.com\0jed.wafaicloud.com\0" +"sakegawa.yamagata.jp\0" +"vix.br\0asahi.ibaraki.jp\0ohira.miyagi.jp\0com.re\0" +"kanie.aichi.jp\0natura\0" +"graphics\0" +"of.no\0" +"philadelphiaarea.museum\0taxi\0" +"mt.gov.br\0" +"com.ro\0" +"otsuchi.iwate.jp\0com.sa\0" +"yawata.kyoto.jp\0com.sb\0" +"yazu.tottori.jp\0com.sc\0" +"com.sd\0k12.tx.us\0k12.vi\0withyoutube.com\0" +"blog.bo\0com.se\0com.ru\0" +"com.sg\0" +"blog.br\0com.sh\0cc.ny.us\0tunk.org\0" +"\xd8\xb9\xd9\x85\xd8\xa7\xd9\x86\0no-ip.biz\0" +"art.do\0\xe6\x8b\x9b\xe8\x81\x98\0githubpreview.dev\0" +"com.sl\0" +"bahn.museum\0com.sn\0" +"ogori.fukuoka.jp\0com.so\0" +"kainan.tokushima.jp\0" +"usa.oita.jp\0hemsedal.no\0\xd8\xa7\xd8\xaa\xd8\xb5\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\0" +"caxias.br\0mo\xc3\xa5reke.no\0skierva.no\0" +"com.ss\0" +"com.st\0" +"art.dz\0kawaba.gunma.jp\0com.sv\0" +"laspezia.it\0" +"merseine.nu\0" +"trentinos\xc3\xbc""dtirol.it\0com.sy\0" +"com.tj\0eastasia.azurestaticapps.net\0" +"loab\xc3\xa1t.no\0poltava.ua\0*.customer-oci.com\0" +"com.tm\0" +"com.tn\0turen.tn\0" +"teramo.it\0com.to\0" "com.ua\0" -"parliament.cy\0org.dm\0com.tr\0" -"org.do\0pt.it\0shimofusa.chiba.jp\0com.tt\0" -"nishiokoppe.hokkaido.jp\0uscountryestate.museum\0user.party.eus\0" -"ruhr\0" -"forl\xc3\xac-cesena.it\0lo.it\0com.tw\0com.ug\0" -"org.ec\0hadsel.no\0" -"abc.br\0org.ee\0" -"tselinograd.su\0" -"org.eg\0oceanographic.museum\0" -"dnsalias.org\0dyn-berlin.de\0nym.ec\0" -"org.dz\0" -"*.kunden.ortsinfo.at\0" -"com.vc\0" -"catholic.edu.au\0chikusei.ibaraki.jp\0in.rs\0" +"com.tr\0" +"com.tt\0" +"pilot.aero\0" +"com.tw\0com.ug\0audible\0" +"ezproxy.kuleuven.be\0" +"yasaka.nagano.jp\0" +"cremona.it\0j.scaleforce.com.cy\0" +"chicago.museum\0" +"tamaki.mie.jp\0" +"seki.gifu.jp\0timekeeping.museum\0lib.ok.us\0" +"tysv\xc3\xa6r.no\0" +"reliance\0" +"com.vc\0in-vpn.net\0" +"is-a-musician.com\0" "com.ve\0" -"artanddesign.museum\0komforb.se\0" -"org.es\0" -"org.et\0com.uy\0com.vi\0" -"state.museum\0com.uz\0appspot.com\0" -"barclays\0" -"int.ar\0ltd.lk\0" -"xj.cn\0taka.hyogo.jp\0" -"com.vn\0" -"org.fj\0" -"romskog.no\0" -"tuva.su\0" -"org.fm\0" -"plc.co.im\0leclerc\0\xe8\x81\x94\xe9\x80\x9a\0" -"int.az\0" +"cam.it\0nisshin.aichi.jp\0takahama.fukui.jp\0aga.niigata.jp\0\xd8\xb4\xd8\xa8\xd9\x83\xd8\xa9\0" +"zarow.pl\0cc.la.us\0com.uy\0com.vi\0" +"com.uz\0" +"kyiv.ua\0" +"california.museum\0" +"ibaraki.osaka.jp\0\xc3\xa5krehamn.no\0com.vn\0" +"kokubunji.tokyo.jp\0skjervoy.no\0" "com.vu\0" -"matsuyama.ehime.jp\0" -"int.bo\0satte.saitama.jp\0in.th\0" -"org.ge\0larvik.no\0" -"ac.gov.br\0org.gg\0vall\xc3\xa9""e-aoste.it\0" -"org.gh\0fukushima.hokkaido.jp\0" -"org.gi\0\xe9\x9d\x92\xe6\xa3\xae.jp\0" -"rendalen.no\0" -"nc.tr\0" -"org.gl\0repair.men\0" -"in.ua\0" -"int.ci\0org.gn\0com.ws\0" -"pubol.museum\0" -"org.gp\0" -"org.gr\0shop.ht\0toyama.jp\0" -"shop.hu\0yoro.gifu.jp\0ltd.ng\0" -"int.co\0org.gt\0yamagata.jp\0" -"org.gu\0katori.chiba.jp\0" -"soc.srcf.net\0de.ls\0" -"nym.gr\0de.md\0" -"org.gy\0" -"democracia.bo\0shiga.jp\0wblog.id\0" -"org.hk\0" -"tysv\xc3\xa6r.no\0ms.us\0nc.us\0" -"aland.fi\0org.hn\0" -"valleedaoste.it\0in.us\0nym.gy\0" -"finearts.museum\0bardu.no\0com.ye\0" -"nym.hk\0" -"yamada.fukuoka.jp\0" -"org.ht\0city.hu\0" -"org.hu\0cipriani\0temasek\0" -"omasvuotna.no\0" -"okagaki.fukuoka.jp\0ashgabad.su\0" -"for.sale\0" -"flakstad.no\0nym.ie\0" -"org.il\0" -"org.im\0" -"org.in\0monzabrianza.it\0chiba.jp\0storage.yandexcloud.net\0" -"ask\xc3\xb8y.no\0" -"mutsu.aomori.jp\0homes\0j.scaleforce.net\0" -"org.iq\0" -"org.ir\0" -"org.is\0" -"org.je\0translate.goog\0" -"krym.ua\0com.zm\0today\0wmflabs.org\0" -"habikino.osaka.jp\0sandiego.museum\0k12.ks.us\0" -"manaus.br\0" -"ushiku.ibaraki.jp\0fedorapeople.org\0" -"org.jo\0k12.ca.us\0intuit\0" -"cambridge.museum\0global.prod.fastly.net\0" -"gujo.gifu.jp\0kaluga.su\0" -"bryne.no\0" -"rankoshi.hokkaido.jp\0monash\0" -"arts.co\0" -"org.kg\0idrett.no\0" -"isa.kagoshima.jp\0org.ki\0jewishart.museum\0" -"yalta.ua\0" -"3utilities.com\0" -"modena.it\0" -"org.km\0" -"saku.nagano.jp\0org.kn\0" -"izumizaki.fukushima.jp\0mypi.co\0" -"org.kp\0" -"org.la\0" -"kanmaki.nara.jp\0org.lb\0" -"chikuzen.fukuoka.jp\0org.lc\0" -"zlg.br\0" -"izumo.shimane.jp\0kikugawa.shizuoka.jp\0" -"org.kw\0pramerica\0nym.la\0" -"uk0.bigv.io\0endoftheinternet.org\0" -"fujimino.saitama.jp\0org.ky\0nym.lc\0" -"org.kz\0" -"org.lk\0" -"brussels.museum\0" -"higashishirakawa.gifu.jp\0nym.li\0" -"nym.kz\0" -"te.it\0org.ma\0" -"org.lr\0utsira.no\0" -"org.ls\0davvenjarga.no\0" -"bunkyo.tokyo.jp\0" -"org.me\0" -"org.lv\0" -"sa.au\0org.mg\0b-data.io\0" -"betainabox.com\0" -"org.ly\0" -"*.magentosite.cloud\0nym.lt\0" -"org.mk\0demo.datacenter.fi\0nym.lu\0nym.me\0" -"org.ml\0" -"ca.it\0" -"shobara.hiroshima.jp\0settsu.osaka.jp\0org.mn\0szkola.pl\0" -"org.mo\0" -"org.na\0" -"org.ms\0" -"org.mt\0nym.mn\0" -"org.mu\0budapest\0" -"nl.ca\0org.mv\0" -"org.mw\0org.ng\0" -"int.is\0org.mx\0" -"org.my\0org.ni\0" -"org.mz\0\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xae\0" -"\xe9\xa6\x99\xe5\xb7\x9d.jp\0stateofdelaware.museum\0" -"surrey.museum\0" -"ltd.ua\0" -"nym.mx\0nl.ci\0" -"am.br\0trentinostirol.it\0s3.dualstack.ap-northeast-1.amazonaws.com\0" -"h\xc3\xa1pmir.no\0org.nr\0" -"sa.cr\0lancaster\0" -"pages.dev\0no-ip.org\0" -"paragliding.aero\0politica.bo\0" -"riodejaneiro.museum\0ltd.uk\0" -"coloradoplateau.museum\0" -"org.nz\0\xe5\x9c\xa8\xe7\xba\xbf\0teaches-yoga.com\0" -"oum.gov.pl\0" -"org.om\0" -"ltd.co.im\0" -"nym.nz\0" -"lib.ee\0org.pa\0" -"lincoln.museum\0" -"dallas.museum\0org.pe\0" -"int.la\0org.pf\0" -"freebox-os.fr\0" -"org.ph\0" -"r\xc3\xa6lingen.no\0" -"org.pk\0nym.pe\0" -"org.pl\0" -"vadso.no\0s3-ca-central-1.amazonaws.com\0" -"heroy.more-og-romsdal.no\0org.pn\0" -"int.lk\0" -"futtsu.chiba.jp\0kongsberg.no\0org.qa\0" -"org.pr\0property\0mypep.link\0" -"org.ps\0" -"valle-daosta.it\0gjemnes.no\0org.pt\0" -"de.us\0" -"station.museum\0" -"org.py\0" -"trentinosudtirol.it\0ca.na\0nym.pt\0" -"\xe5\xa8\xb1\xe4\xb9\x90\0" -"seoul.kr\0colonialwilliamsburg.museum\0" -"yamagata.gifu.jp\0sarpsborg.no\0servehalflife.com\0" -"helsinki\0" -"in-addr.arpa\0catanzaro.it\0" -"uk.oxa.cloud\0" -"trentinoaadige.it\0" -"is-uberleet.com\0" -"katashina.gunma.jp\0trading\0" -"sarufutsu.hokkaido.jp\0that.win\0" -"bulsan-suedtirol.it\0" -"int.mv\0" -"int.mw\0" -"niikappu.hokkaido.jp\0dsmynas.net\0" -"int.ni\0r.se\0verisign\0" -"org.ro\0na4u.ru\0" -"org.sa\0" -"takaharu.miyazaki.jp\0org.sb\0" -"org.rs\0org.sc\0hdfc\0" -"org.sd\0" -"ochi.kochi.jp\0hammarfeasta.no\0org.se\0org.ru\0nym.ro\0" -"shikama.miyagi.jp\0org.rw\0org.sg\0" -"org.sh\0" -"uozu.toyama.jp\0" -"naumburg.museum\0usculture.museum\0org.sl\0" -"broadcast.museum\0org.sn\0" -"org.so\0" -"bas.it\0laakesvuemie.no\0" -"nym.sk\0" -"moriyoshi.akita.jp\0omi.niigata.jp\0" -"beskidy.pl\0org.ss\0" -"nagahama.shiga.jp\0org.st\0" -"org.sv\0grozny.su\0" -"family.museum\0" -"nishihara.kumamoto.jp\0" -"org.sy\0" -"org.sz\0org.tj\0" -"nym.su\0" -"org.tm\0" -"org.tn\0mayfirst.info\0nym.sx\0" -"hokuryu.hokkaido.jp\0ushistory.museum\0org.to\0" -"\xe6\x94\xbf\xe5\xba\x9c.hk\0airtel\0prod\0" -"sandnessj\xc3\xb8""en.no\0org.ua\0*.hosting.myjino.ru\0" -"trani-barletta-andria.it\0ruovat.no\0org.tr\0prof\0" -"vv.it\0karasjohka.no\0" -"org.tt\0bnr.la\0" -"medizinhistorisches.museum\0stjordalshalsen.no\0" -"nsw.edu.au\0press.cy\0sa.it\0annaka.gunma.jp\0\xed\x95\x9c\xea\xb5\xad\0" -"emiliaromagna.it\0davvesiida.no\0org.tw\0org.ug\0" -"sexy\0" -"carrara-massa.it\0int.pt\0pioneer\0" -"idv.hk\0org.uk\0" -"dni.us\0arts.ve\0club\0" -"nym.tw\0" -"freeddns.org\0" -"org.vc\0" -"hyuga.miyazaki.jp\0" -"org.ve\0" -"asso.fr\0" -"her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0czeladz.pl\0" -"design.museum\0org.uy\0org.vi\0" -"org.uz\0" -"engerdal.no\0" -"org.vn\0" -"sciencecenter.museum\0v\xc3\xa5ler.\xc3\xb8stfold.no\0blogdns.net\0" -"russia.museum\0" -"leka.no\0" -"tamayu.shimane.jp\0weber\0" -"asso.gp\0org.vu\0" -"vix.br\0grozny.ru\0" -"netbank\0" -"is-a-bruinsfan.org\0" -"int.ru\0gets-it.net\0" -"awsmppl.com\0" -"chuo.tokyo.jp\0" -"nebraska.museum\0snasa.no\0" -"te.ua\0honda\0" -"piacenza.it\0" -"is-by.us\0" -"kashiwazaki.niigata.jp\0" -"org.ws\0" -"asakuchi.okayama.jp\0" -"asso.ht\0finnoy.no\0" -"jessheim.no\0" -"ragusa.it\0" -"couk.me\0" -"aikawa.kanagawa.jp\0hamar.no\0" -"int.tj\0" -"technology.museum\0r\xc3\xb8ros.no\0" -"kisarazu.chiba.jp\0kaszuby.pl\0" -"lighting\0" -"iwanai.hokkaido.jp\0opensocial.site\0" -"hanamaki.iwate.jp\0org.ye\0" -"al.gov.br\0" -"int.tt\0" -"q-a.eu.org\0" -"geo.br\0divtasvuodna.no\0ca.us\0" -"masuda.shimane.jp\0" -"asso.bj\0" -"org.za\0" -"chikushino.fukuoka.jp\0nl.no\0org.yt\0" -"ekloges.cy\0" -"arts.ro\0" -"sport.hu\0taiwa.miyagi.jp\0" -"int.ve\0" -"hidaka.hokkaido.jp\0" -"org.zm\0" -"asso.ci\0wakuya.miyagi.jp\0" -"6.bg\0chuo.chiba.jp\0takarazuka.hyogo.jp\0" -"perso.ht\0int.vn\0" -"yatomi.aichi.jp\0altervista.org\0cloudapp.net\0" -"chambagri.fr\0" -"shop.th\0" -"mo\xc3\xa5reke.no\0org.zw\0vlaanderen\0" -"koza.wakayama.jp\0troandin.no\0" -"tjome.no\0" -"it1.jenv-aruba.cloud\0" -"kamisato.saitama.jp\0" -"iwaki.fukushima.jp\0computer.museum\0" -"kuromatsunai.hokkaido.jp\0" -"of.london\0" -"hikimi.shimane.jp\0" -"lillesand.no\0" -"williamhill\0" -"okinawa.jp\0voting\0" -"computerhistory.museum\0lanbib.se\0" -"abarth\0" -"asso.dz\0" -"shiraoi.hokkaido.jp\0swidnik.pl\0" -"biella.it\0bosch\0" -"kami.miyagi.jp\0" -"musashino.tokyo.jp\0byen.site\0" -"vb.it\0" -"shoo.okayama.jp\0lib.md.us\0" -"arts.nf\0shop.ro\0" -"fage\0rogers\0" -"tmall\0" -"guam.gu\0kakegawa.shizuoka.jp\0" -"naka.hiroshima.jp\0tara.saga.jp\0" -"solar\0" -"machida.tokyo.jp\0is-a-chef.org\0" -"\xe5\xae\xae\xe5\xb4\x8e.jp\0" -"nahari.kochi.jp\0" -"minami.tokushima.jp\0family\0" -"carrd.co\0" -"shop.pl\0merckmsd\0" -"go.ci\0wakkanai.hokkaido.jp\0urasoe.okinawa.jp\0" -"discover\0" -"hs.kr\0ontario.museum\0imamat\0" -"r\xc3\xa5""de.no\0" -"jozi.biz\0" -"go.cr\0anpachi.gifu.jp\0penza.su\0" -"audible\0" -"fukushima.fukushima.jp\0oregontrail.museum\0" -"s3-eu-west-1.amazonaws.com\0" -"cloud.goog\0" -"khmelnytskyi.ua\0fail\0zara\0" -"rackmaze.com\0" -"uda.nara.jp\0" -"s3.dualstack.eu-west-3.amazonaws.com\0" -"tabuse.yamaguchi.jp\0clinique\0" -"merseine.nu\0" -"\xe5\x98\x89\xe9\x87\x8c\0" -"lindesnes.no\0" -"jcloud.ik-server.com\0siteleaf.net\0" -"prof.pr\0" -"lublin.pl\0" -"gobo.wakayama.jp\0" -"moka.tochigi.jp\0" -"voyage\0conn.uk\0" -"kudoyama.wakayama.jp\0bukhara.su\0" -"higashitsuno.kochi.jp\0lilly\0" -"katsushika.tokyo.jp\0dopaas.com\0" -"idv.tw\0" -"museumvereniging.museum\0" -"ancona.it\0" -"cc.me.us\0dyndns-server.com\0" -"shioya.tochigi.jp\0" -"wsa.gov.pl\0" -"g.bg\0" -"friuli-vegiulia.it\0andoy.no\0" -"inabe.mie.jp\0" -"americanexpress\0wedding\0" -"ketrzyn.pl\0" -"namegata.ibaraki.jp\0" -"goiania.br\0hekinan.aichi.jp\0pyatigorsk.ru\0" -"cn-northwest-1.eb.amazonaws.com.cn\0" -"k12.ct.us\0" -"\xe6\x9b\xb8\xe7\xb1\x8d\0lelux.site\0" -"\xe5\xbe\xb3\xe5\xb3\xb6.jp\0fujiidera.osaka.jp\0" -"gaivuotna.no\0" -"\xd0\xbe\xd0\xb4.\xd1\x81\xd1\x80\xd0\xb1\0" -"lawyer\0" -"guge\0is-a-chef.com\0" -"wallonie.museum\0tuxfamily.org\0" -"partners\0dvrdns.org\0" -"donostia.museum\0" -"nanto.toyama.jp\0salvadordali.museum\0" -"\xc3\xa5lesund.no\0" -"software.aero\0dnsking.ch\0" -"commune.am\0" -"dattoweb.com\0" -"bergamo.it\0" -"go.id\0kiho.mie.jp\0dnsupdater.de\0" -"gj\xc3\xb8vik.no\0" -"losangeles.museum\0" -"tn.it\0" -"kitchen\0" -"pi.it\0fans\0" -"hakodate.hokkaido.jp\0" -"tsukumi.oita.jp\0nodum.co\0" -"go.it\0" -"kunohe.iwate.jp\0" -"static.land\0" -"bz.it\0hazu.aichi.jp\0kui.hiroshima.jp\0cruises\0" -"ddnsfree.com\0" -"sunagawa.hokkaido.jp\0ryugasaki.ibaraki.jp\0" -"harstad.no\0" -"nu.ca\0go.jp\0" -"alstom\0" -"chanel\0" -"cloudns.asia\0" -"go.ke\0*.gateway.dev\0" -"oita.oita.jp\0" -"nikolaev.ua\0" +"szex.hu\0" +"telebit.io\0" +"bearalvahki.no\0" +"art.ht\0" +"murata.miyagi.jp\0" +"groks-the.info\0vaporcloud.io\0" +"com.ws\0" +"floripa.br\0""3utilities.com\0" +"far.br\0" +"woltlab-demo.com\0" +"fukuroi.shizuoka.jp\0" +"morimachi.shizuoka.jp\0bridgestone\0" +"bestbuy\0" +"keliweb.cloud\0" +"cleverapps.io\0" +"yamagata.gifu.jp\0" +"yoshino.nara.jp\0" +"de.us\0com.ye\0svn-repos.de\0" +"coop.rw\0k12.nh.us\0" +"landrover\0azure-mobile.net\0" +"ogawara.miyagi.jp\0cc.hi.us\0" +"ekloges.cy\0pri.ee\0" +"puglia.it\0nv.us\0" +"paas.hosted-by-previder.com\0" +"gru.br\0idv.hk\0" +"now-dns.net\0" +"koza.wakayama.jp\0\xd0\xba\xd1\x80\xd1\x8b\xd0\xbc.\xd1\x80\xd1\x83\xd1\x81\0" +"\xe9\x9d\x92\xe6\xa3\xae.jp\0" +"nakamichi.yamanashi.jp\0" +"nalchik.ru\0" +"b\xc3\xa6rum.no\0" +"poa.br\0kiwi.nz\0" +"com.zm\0" +"patria.bo\0fukuoka.jp\0urasoe.okinawa.jp\0bjugn.no\0" +"sakyo.kyoto.jp\0" +"omigawa.chiba.jp\0u.se\0" +"coop.tt\0" +"\xd9\x85\xd8\xb5\xd8\xb1\0" +"uhren.museum\0" +"hamada.shimane.jp\0other.nf\0" +"lg.jp\0nalchik.su\0ent.platform.sh\0" +"shinanomachi.nagano.jp\0" +"lucca.it\0kamakura.kanagawa.jp\0" +"rec.br\0steinkjer.no\0house\0" +"daplie.me\0" +"loans\0" +"avoues.fr\0eiheiji.fukui.jp\0kishiwada.osaka.jp\0" +"gamvik.no\0" +"dnepropetrovsk.ua\0yalta.ua\0" +"pictet\0barsy.org\0" +"ltd.cy\0coop.mv\0" +"coop.mw\0motorcycles\0" +"skodje.no\0" +"rec.co\0" +"forgot.his.name\0" +"aero.tt\0" +"building.museum\0freesite.host\0" +"\xe5\x85\xac\xe5\x8f\xb8.\xe9\xa6\x99\xe6\xb8\xaf\0\xe9\x9b\x86\xe5\x9b\xa2\0" +"shingu.wakayama.jp\0" +"cc.or.us\0" +"liguria.it\0" +"podzone.net\0" +"skedsmokorset.no\0mazowsze.pl\0ivano-frankivsk.ua\0" +"aero.mv\0" +"odessa.ua\0" +"sp.it\0kep.tr\0" +"koeln.museum\0newyork.museum\0" +"urausu.hokkaido.jp\0" +"kuki.saitama.jp\0" +"fuossko.no\0" +"scrapping.cc\0eating-organic.net\0" +"mima.tokushima.jp\0lib.dc.us\0" +"ltd.gi\0eaton.mi.us\0" +"shonai.yamagata.jp\0" +"coop.py\0*.webpaas.ovh.net\0art.pl\0" +"nakaniikawa.toyama.jp\0\xd8\xa7\xd9\x84\xd8\xb9\xd9\x84\xd9\x8a\xd8\xa7\xd9\x86\0" +"mashiki.kumamoto.jp\0sandvikcoromant\0" +"tysnes.no\0blog.vu\0" +"saiki.oita.jp\0" +"kaneyama.yamagata.jp\0gucci\0" +"kagoshima.jp\0legnica.pl\0" +"gv.vc\0" +"archaeological.museum\0agric.za\0" +"bloomberg\0" +"ullensvang.no\0*.cryptonomic.net\0" +"nat.tn\0" +"press.aero\0ltd.hk\0" +"mombetsu.hokkaido.jp\0" +"ch.eu.org\0" +"os\xc3\xb8yro.no\0" +"ternopil.ua\0" +"\xe7\xbb\x84\xe7\xbb\x87\xe6\x9c\xba\xe6\x9e\x84\0" +"jinsekikogen.hiroshima.jp\0" +"kagoshima.kagoshima.jp\0" +"center.museum\0" +"ann-arbor.mi.us\0" +"barum.no\0" +"servequake.com\0" +"coop.km\0gentlentapis.com\0familyds.org\0" +"brescia.it\0nyaa.am\0" +"dn.ua\0" +"technology.museum\0" +"lib.ak.us\0" +"host\0" +"k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0*.oci.customer-oci.com\0" +"\xe7\xbd\x91\xe7\xb5\xa1.hk\0" +"yasugi.shimane.jp\0marine.ru\0" +"\xe9\x95\xb7\xe5\xb4\x8e.jp\0art.sn\0" +"recreation.aero\0" +"zuerich\0de.trendhosting.cloud\0" +"ddr.museum\0" +"zp.ua\0" +"ube.yamaguchi.jp\0airguard.museum\0k12.mo.us\0" +"happou.akita.jp\0ny-2.paas.massivegrid.net\0" +"oppegard.no\0mragowo.pl\0" +"terni.it\0lib.wi.us\0christmas\0" +"kisosaki.mie.jp\0wios.gov.pl\0fidelity\0" +"beppu.oita.jp\0" +"troitsk.su\0" +"ao.it\0impertrix.com\0" +"hiratsuka.kanagawa.jp\0" +"ltd.lk\0" +"sanfrancisco.museum\0" +"amber.museum\0\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa6\xa4\0" +"hjelmeland.no\0" "gov.ac\0" -"nakasatsunai.hokkaido.jp\0oy.lc\0" -"gov.ae\0*.quipelements.com\0" -"gov.af\0myfritz.net\0" -"natori.miyagi.jp\0press.se\0\xe0\xb8\x97\xe0\xb8\xab\xe0\xb8\xb2\xe0\xb8\xa3.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" -"tanagura.fukushima.jp\0" -"go.kr\0dolls.museum\0nodum.io\0" -"gov.al\0kyotamba.kyoto.jp\0" -"\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\x82\xe0\xa6\xb2\xe0\xa6\xbe\0" -"courses\0flap.id\0" -"gov.ba\0" +"gov.ae\0" +"gov.af\0kddi\0" +"gwiddle.co.uk\0" +"gojome.akita.jp\0kumano.hiroshima.jp\0" +"higashikurume.tokyo.jp\0" +"gov.al\0" +"est-a-la-maison.com\0" +"lg.ua\0" +"gov.ba\0flir\0" "gov.ar\0gov.bb\0" "gov.as\0" -"gov.au\0" -"iris.arpa\0gov.bf\0dn.ua\0" -"\xe7\xb5\x84\xe7\xbb\x87.hk\0susono.shizuoka.jp\0" -"gov.bh\0" -"gov.az\0east-kazakhstan.su\0" -"ojiya.niigata.jp\0" -"kamikawa.hyogo.jp\0" -"gov.bm\0marriott\0" -"gov.bn\0goto.nagasaki.jp\0" -"asso.re\0farm\0" -"western.museum\0" -"gov.br\0\xe7\xbd\x91\xe7\xbb\x9c\0" -"gov.bs\0watarai.mie.jp\0" -"gov.bt\0gov.cd\0asahi.ibaraki.jp\0saintlouis.museum\0" -"ostrowiec.pl\0help\0phx.enscaled.us\0" -"mod.gi\0" -"tunk.org\0" -"gov.by\0koganei.tokyo.jp\0" -"gov.bz\0suzuka.mie.jp\0" -"gov.cl\0marnardal.no\0" +"iwate.jp\0" +"gov.au\0jor.br\0demon.nl\0" +"gov.bf\0misato.shimane.jp\0" +"gov.bh\0ltd.ng\0" +"gov.az\0michigan.museum\0" +"gov.bm\0" +"gov.bn\0selfip.info\0" +"idv.tw\0" +"gov.br\0" +"gov.bs\0" +"gov.bt\0gov.cd\0js.wpenginepowered.com\0" +"sassari.it\0nyny.museum\0rec.nf\0" +"staples\0" +"gov.by\0" +"gov.bz\0" +"mcpe.me\0" +"gov.cl\0" "gov.cm\0" -"gov.cn\0" -"gov.co\0nabari.mie.jp\0" -"barcelona.museum\0" -"tourism.tn\0" -"gov.cu\0cc.la.us\0grondar.za\0" -"fast\0" -"priv.hu\0misato.miyagi.jp\0no-ip.net\0" -"gov.cx\0" +"gov.cn\0dyn-o-saur.com\0" +"gov.co\0" +"karm\xc3\xb8y.no\0" +"haugesund.no\0" +"osen.no\0" +"rennesoy.no\0" +"gov.cu\0" +"toyoake.aichi.jp\0knx-server.net\0" +"gov.cx\0\xe5\xae\xae\xe5\xb4\x8e.jp\0" "gov.cy\0" +"takino.hyogo.jp\0cya.gg\0" +"hellas.museum\0" +"medicina.bo\0xj.cn\0" "gov.dm\0" -"vagsoy.no\0" -"gov.do\0tome.miyagi.jp\0" -"crimea.ua\0" +"at.eu.org\0" +"gov.do\0vanylven.no\0" +"cn-north-1.eb.amazonaws.com.cn\0" +"izumi.osaka.jp\0" +"nakagusuku.okinawa.jp\0" "gov.ec\0" "gov.ee\0" -"historyofscience.museum\0" -"gov.eg\0" -"gov.dz\0\xda\x80\xd8\xa7\xd8\xb1\xd8\xaa\0" -"tohma.hokkaido.jp\0" -"imari.saga.jp\0nesodden.no\0" -"gov.et\0balsan.it\0noda.iwate.jp\0" -"capitalone\0" -"niigata.jp\0berlin\0" -"gov.fj\0unnan.shimane.jp\0" -"asso.nc\0karm\xc3\xb8y.no\0" -"go.pw\0" -"jur.pro\0" -"toei.aichi.jp\0oki.fukuoka.jp\0gb.net\0" -"farmstead.museum\0cuisinella\0" -"perso.sn\0" -"press.ma\0" -"gov.gd\0wodzislaw.pl\0academy\0" -"gov.ge\0lifeinsurance\0" -"lib.ny.us\0" -"gov.gh\0berlin.museum\0" -"gov.gi\0fla.no\0" -"nu.it\0" -"birdart.museum\0hisamitsu\0shaw\0" -"wazuka.kyoto.jp\0" -"orsites.com\0" -"gov.gn\0" -"sekikawa.niigata.jp\0" -"\xce\xb5\xce\xbb\0" -"gov.gr\0yoshioka.gunma.jp\0perso.tn\0" -"av.it\0" -"gov.gu\0ujiie.tochigi.jp\0elblag.pl\0gripe\0" -"gov.gy\0" -"trentino-s\xc3\xbc""dtirol.it\0fujikawaguchiko.yamanashi.jp\0\xce\xb5\xcf\x85\0akdn\0here\0" -"gov.hk\0higashi.fukushima.jp\0" -"jp.kg\0" -"presidio.museum\0" -"cable-modem.org\0" -"usdecorativearts.museum\0hyllestad.no\0" -"ab.ca\0gov.ie\0gyeongbuk.kr\0beats\0london\0" -"priv.at\0" -"zushi.kanagawa.jp\0" -"niigata.niigata.jp\0guru\0repair\0" -"gov.il\0" -"gov.in\0palmsprings.museum\0" -"echizen.fukui.jp\0go.th\0" -"gov.iq\0go.tj\0diskussionsbereich.de\0" -"gov.ir\0dreamhosters.com\0" -"gov.is\0hagebostad.no\0barsy.site\0to.work\0" +"gov.eg\0himi.toyama.jp\0" +"esashi.hokkaido.jp\0" +"morena.br\0gov.dz\0vda.it\0skygearapp.com\0" +"works\0" +"firm.ht\0cc.ar.us\0world\0" +"tenkawa.nara.jp\0" +"tokashiki.okinawa.jp\0" +"gov.et\0" +"press\0" +"tempio-olbia.it\0gobo.wakayama.jp\0" +"firm.in\0land-4-sale.us\0" +"gov.fj\0s3.ca-central-1.amazonaws.com\0" +"ox.rs\0" +"\xe7\x86\x8a\xe6\x9c\xac.jp\0" +"asago.hyogo.jp\0" +"\xe5\xa4\xa7\xe5\x88\x86.jp\0kita.tokyo.jp\0flickr\0" +"otaru.hokkaido.jp\0us-east-2.elasticbeanstalk.com\0" +"urbino-pesaro.it\0chihayaakasaka.osaka.jp\0" +"isumi.chiba.jp\0artsandcrafts.museum\0essex.museum\0" +"nagoya\0" +"is-a-linux-user.org\0" +"gov.gd\0" +"gov.ge\0" +"gov.gh\0" +"gov.gi\0" +"izena.okinawa.jp\0kirovograd.ua\0audi\0vologda.su\0" +"monster\0" +"mediocampidano.it\0shiogama.miyagi.jp\0endofinternet.net\0" +"gov.gn\0powiat.pl\0rec.ro\0" +"rel.ht\0s\xc3\xb8r-varanger.no\0" +"degree\0" +"gov.gr\0pimienta.org\0blog.kg\0" +"qld.edu.au\0" +"elasticbeanstalk.com\0" +"gov.gu\0ujiie.tochigi.jp\0exeter.museum\0" +"firm.co\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd9\x87\0" +"gov.gy\0\xe5\xb2\xa9\xe6\x89\x8b.jp\0newmexico.museum\0" +"kunisaki.oita.jp\0" +"gov.hk\0star\0" +"yusuhara.kochi.jp\0lib.la.us\0" +"shinkamigoto.nagasaki.jp\0sandoy.no\0minisite.ms\0" +"dating\0" +"hirata.fukushima.jp\0chattanooga.museum\0ltd.ua\0small-web.org\0" +"beer\0" +"media.museum\0firm.dk\0" +"gov.ie\0" +"palace.museum\0plumbing\0" +"taka.hyogo.jp\0" +"kami.kochi.jp\0chrome\0" +"gov.il\0ltd.uk\0" +"gov.in\0" +"yakage.okayama.jp\0" +"toyo.kochi.jp\0vadso.no\0" +"gov.iq\0kvitsoy.no\0" +"gov.ir\0" +"gov.is\0" "gov.it\0" -"filegear-sg.me\0" -"gob.ar\0" -"yuki.ibaraki.jp\0" -"is-very-evil.org\0" -"avoues.fr\0traniandriabarletta.it\0official.academy\0" -"sakae.chiba.jp\0" -"miyazu.kyoto.jp\0murayama.yamagata.jp\0jp.md\0" -"go.ug\0" -"gov.jo\0" -"ikano\0" -"sardinia.it\0go.tz\0tn.us\0epson\0" -"tainai.niigata.jp\0" -"daejeon.kr\0" -"gob.bo\0\xc3\xb8ksnes.no\0" -"utsunomiya.tochigi.jp\0" -"taranto.it\0tateyama.chiba.jp\0" -"gov.kg\0" -"\xe5\x95\x86\xe5\x9f\x8e\0" -"aisai.aichi.jp\0kanan.osaka.jp\0gov.ki\0glogow.pl\0" -"tako.chiba.jp\0gov.km\0" -"gov.kn\0" -"tsk.tr\0istanbul\0" -"gov.kp\0railroad.museum\0aver\xc3\xb8y.no\0dovre.no\0" -"gob.cl\0gov.la\0smile\0" -"gov.lb\0\xd0\xba\xd0\xb0\xd1\x82\xd0\xbe\xd0\xbb\xd0\xb8\xd0\xba\0pl.eu.org\0" -"iwade.wakayama.jp\0gov.lc\0seljord.no\0" -"hokkaido.jp\0" -"asso.km\0gov.kw\0" -"tingvoll.no\0" +"priv.hu\0" +"hiraizumi.iwate.jp\0" +"fi.cr\0mi.it\0aurland.no\0passagens\0istmein.de\0" +"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0" +"nonoichi.ishikawa.jp\0" +"ac.gov.br\0kagawa.jp\0" +"lanxess\0\xe3\x83\x9d\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88\0" +"gov.jo\0\xe7\xa7\xbb\xe5\x8a\xa8\0" +"trentinsued-tirol.it\0" +"geisei.kochi.jp\0lighting\0" +"rec.ve\0" +"ato.br\0gov.kg\0" +"guardian\0" +"gov.ki\0" +"security\0stockholm\0" +"\xe6\x89\x8b\xe6\x9c\xba\0" +"diet\0unusualperson.com\0" +"gov.km\0surnadal.no\0" +"gov.kn\0bnpparibas\0" +"gov.kp\0bloger.id\0" +"gov.la\0sebastopol.ua\0shouji\0*.tst.site\0" +"gov.lb\0group\0" +"gov.lc\0g\xc3\xa1ls\xc3\xa1.no\0zone\0" +"gratis\0" +"tsushima.nagasaki.jp\0gov.kw\0" +"maringa.br\0" "gov.ky\0" "gov.kz\0" -"gov.lk\0\xe5\x81\xa5\xe5\xba\xb7\0" -"logoip.com\0" -"royken.no\0" -"\xc3\xa5lg\xc3\xa5rd.no\0tele.amune.org\0" -"cc.as.us\0" -"gov.ma\0" -"iizuka.fukuoka.jp\0gov.lr\0" -"gov.ls\0" -"gob.do\0gov.lt\0g.se\0k12.in.us\0" +"slg.br\0gov.lk\0l\xc3\xb8ten.no\0" +"newspaper.museum\0contact\0" +"k12.va.us\0" +"grosseto.it\0trogstad.no\0piw.gov.pl\0" +"noheji.aomori.jp\0rocher\0" +"gov.ma\0stordal.no\0trust\0" +"nb.ca\0gov.lr\0duckdns.org\0" +"nagaoka.niigata.jp\0gov.ls\0" +"gov.lt\0is-a-landscaper.com\0tuva.su\0" "gov.me\0" "gov.lv\0" -"gov.mg\0leksvik.no\0" -"gob.ec\0myjino.ru\0" +"\xe5\xb1\xb1\xe5\x8f\xa3.jp\0gov.mg\0" "gov.ly\0" -"aparecida.br\0" -"gov.mk\0" -"gov.ml\0" -"asso.mc\0keymachine.de\0" -"gov.mn\0" +"echizen.fukui.jp\0gov.mk\0" +"fukuchiyama.kyoto.jp\0gov.ml\0" +"gov.mn\0norton\0dynalias.org\0" "gov.mo\0" -"gov.mr\0" -"gov.ms\0" -"engineer.aero\0cng.br\0" -"gov.mu\0ostroleka.pl\0shia\0" -"gov.mv\0" +"history.museum\0deno.dev\0" +"gov.mr\0cincinnati.museum\0" +"tr.it\0gov.ms\0" +"kiyama.saga.jp\0mypsx.net\0" +"gov.mu\0" +"gov.mv\0schulserver.de\0" "gov.mw\0gov.ng\0" -"gob.es\0" +"tsuchiura.ibaraki.jp\0" "gov.my\0" -"gov.mz\0" -"erni\0barsy.info\0" -"california.museum\0" -"cloud.interhostsolutions.be\0" +"gov.mz\0ollo\0" +"r\xc3\xb8yrvik.no\0" +"africa\0" +"n\xc3\xb8tter\xc3\xb8y.no\0" "gov.nr\0" -"pharmacien.fr\0" -"marumori.miyagi.jp\0cust.disrec.thingdust.io\0" -"shikaoi.hokkaido.jp\0" -"sakata.yamagata.jp\0" -"nichinan.tottori.jp\0" -"hino.tottori.jp\0" -"zaporizhzhia.ua\0barsy.shop\0" -"utazu.kagawa.jp\0lib.nm.us\0" -"gov.om\0" -"na.it\0saskatchewan.museum\0" -"aaa.pro\0" -"tourism.pl\0" -"nanyo.yamagata.jp\0" -"qld.gov.au\0nokia\0" -"gov.ph\0" -"gob.gt\0" -"glitch.me\0" -"gov.pk\0fastvps.host\0" +"\xd9\xbe\xd8\xa7\xda\xa9\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0" +"kikonai.hokkaido.jp\0mifune.kumamoto.jp\0johana.toyama.jp\0" +"hs.zone\0" +"academy.museum\0priv.at\0" +"rel.pl\0pgfog.com\0applinzi.com\0" +"tokorozawa.saitama.jp\0" +"banamex\0" +"gov.om\0channelsdvr.net\0" +"tateyama.chiba.jp\0r\xc3\xb8st.no\0babia-gora.pl\0" +"whaling.museum\0" +"\xce\xb5\xce\xbb\0ownprovider.com\0" +"observer\0diadem.cloud\0" +"kragero.no\0gov.ph\0" +"a.bg\0fhsk.se\0" +"fi.it\0monza.it\0ginoza.okinawa.jp\0gov.pk\0\xce\xb5\xcf\x85\0" "gov.pl\0" -"omniwe.site\0" -"gov.pn\0" -"cinema.museum\0" -"schokokeks.net\0" -"windmill.museum\0gov.qa\0" -"gov.pr\0" -"gob.hn\0potenza.it\0kiwa.mie.jp\0gov.ps\0" -"chocolate.museum\0gov.pt\0" -"nsupdate.info\0" -"tw.cn\0" -"gov.py\0" -"miyada.nagano.jp\0s3.eu-central-1.amazonaws.com\0" -"ethnology.museum\0" -"hitachiota.ibaraki.jp\0" -"gx.cn\0inzai.chiba.jp\0higashiagatsuma.gunma.jp\0" -"reggioemilia.it\0kunstsammlung.museum\0" -"kagami.kochi.jp\0" -"linde\0\xe3\x81\xbf\xe3\x82\x93\xe3\x81\xaa\0bmoattachments.org\0" -"arkhangelsk.su\0" -"lesja.no\0" -"my-router.de\0" -"swiebodzin.pl\0" -"miyagi.jp\0" -"isleofman.museum\0r\xc3\xa1isa.no\0" -"alstahaug.no\0mielno.pl\0" -"forsand.no\0gov.sa\0av.tr\0" +"gdansk.pl\0" +"gov.pn\0meteorapp.com\0" +"minowa.nagano.jp\0" +"tabayama.yamanashi.jp\0" +"gov.qa\0" +"samukawa.kanagawa.jp\0gov.pr\0" +"gov.ps\0nodum.co\0" +"pz.it\0gov.pt\0" +"mitake.gifu.jp\0" +"infiniti\0lincoln\0" +"heroy.more-og-romsdal.no\0gov.py\0" +"dontexist.org\0" +"airforce\0jele.site\0" +"bifuka.hokkaido.jp\0" +"somna.no\0" +"carrara-massa.it\0" +"orsta.no\0" +"shiroishi.saga.jp\0" +"school\0" +"buyshouses.net\0" +"joetsu.niigata.jp\0" +"kembuchi.hokkaido.jp\0" +"seg.br\0" +"tr.no\0firm.ve\0" +"*.backyards.banzaicloud.io\0" +"gen.in\0tateshina.nagano.jp\0gov.sa\0" "gov.sb\0" -"gov.rs\0gov.sc\0" -"gov.sd\0" -"kawanishi.hyogo.jp\0furniture.museum\0gov.ru\0" -"dellogliastra.it\0legal\0" -"takata.fukuoka.jp\0gov.rw\0gov.sg\0" -"kumejima.okinawa.jp\0costume.museum\0gov.sh\0" -"economia.bo\0pesarourbino.it\0schoenbrunn.museum\0" -"is-with-theband.com\0" -"gov.sl\0" -"drud.io\0" -"gov.so\0" -"trentinoalto-adige.it\0" -"is-a-chef.net\0" +"gov.rs\0gov.sc\0ens.tn\0nodum.io\0" +"toga.toyama.jp\0naval.museum\0gov.sd\0author\0" +"mutsu.aomori.jp\0gov.ru\0" +"himeji.hyogo.jp\0gov.rw\0gov.sg\0" +"kitakami.iwate.jp\0gov.sh\0" +"certification.aero\0" +"koga.fukuoka.jp\0" +"dnsdojo.org\0" +"ca.it\0gov.sl\0" +"gov.so\0\xe6\xb7\xa1\xe9\xa9\xac\xe9\x94\xa1\0eu.org\0" +"qpon\0" +"moka.tochigi.jp\0salon\0pokrovsk.su\0" "gov.ss\0" -"lavagis.no\0gov.st\0" -"*.yokohama.jp\0work\0" "gov.sx\0" -"gov.sy\0*.on-rio.io\0" -"gov.tj\0" -"gov.tl\0cc.mn.us\0coupons\0" -"gov.tm\0" -"esp.br\0gov.tn\0" -"*.kitakyushu.jp\0gov.to\0" -"greta.fr\0gov.ua\0" -"p.bg\0gov.tr\0" -"opencraft.hosting\0" -"shikokuchuo.ehime.jp\0gov.tt\0shop\0" -"her\xc3\xb8y.nordland.no\0k12.me.us\0" -"ashikaga.tochigi.jp\0gov.tw\0" -"psi.br\0" -"logistics.aero\0" -"cremona.it\0gov.uk\0show\0" -"\xe7\xbd\x91\xe7\xb5\xa1.hk\0" -"aeroclub.aero\0" -"hanamigawa.chiba.jp\0accountants\0" -"gov.vc\0" -"kishiwada.osaka.jp\0muenchen.museum\0gov.ve\0from-wa.com\0" -"malopolska.pl\0" -"fuji.shizuoka.jp\0" -"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86\0" -"gob.mx\0senseering.net\0" -"gob.ni\0gov.vn\0is-a-celticsfan.org\0" -"higashimatsuyama.saitama.jp\0catholic\0" -"bir.ru\0" -"tawaramoto.nara.jp\0" -"ballooning.aero\0komaki.aichi.jp\0pagexl.com\0" -"lom.it\0" -"moriguchi.osaka.jp\0latrobe\0qc.com\0" -"funagata.yamagata.jp\0" -"store.nf\0" -"from-id.com\0" -"video.hu\0aomori.aomori.jp\0" -"plc.ly\0" -"pr.it\0lib.la.us\0" -"kepno.pl\0" -"gov.ws\0" -"bentley\0homedns.org\0" -"coop.ht\0gob.pa\0kerryhotels\0" -"modum.no\0" -"cs.it\0gob.pe\0" -"olayangroup\0*.dev.adobeaemcloud.com\0" -"hughes\0balena-devices.com\0" -"ichikawamisato.yamanashi.jp\0gob.pk\0pixolino.com\0" -"tc.br\0" -"modelling.aero\0on.ca\0" -"cultural.museum\0" -"\xe5\xb1\xb1\xe6\xa2\xa8.jp\0b\xc3\xa1l\xc3\xa1t.no\0gov.ye\0" -"shimamaki.hokkaido.jp\0tsushima.nagasaki.jp\0" -"niteroi.br\0slask.pl\0cool\0" -"coop\0" -"artdeco.museum\0stranda.no\0" -"gov.za\0" -"risor.no\0" -"zp.ua\0is-an-entertainer.com\0" -"coop.br\0" -"unzen.nagasaki.jp\0vaporcloud.io\0" -"gd.cn\0spacekit.io\0" -"orange\0" +"treviso.it\0gov.sy\0" +"soeda.fukuoka.jp\0takasu.hokkaido.jp\0gov.tj\0" +"balsan-sudtirol.it\0" +"gov.tl\0" +"mi.th\0gov.tm\0" +"gov.tn\0" +"arao.kumamoto.jp\0gov.to\0" +"askoy.no\0framer.app\0" +"langev\xc3\xa5g.no\0gov.ua\0" +"gov.tr\0" +"gov.tt\0" +"friulive-giulia.it\0ulsan.kr\0gov.tw\0" +"gov.uk\0" +"rsc.cdn77.org\0" +"kotohira.kagawa.jp\0hirakata.osaka.jp\0cyou\0" +"suedtirol.it\0myoko.niigata.jp\0k12.ky.us\0" +"podzone.org\0" +"minamitane.kagoshima.jp\0gov.vc\0" +"iz.hr\0cc.fl.us\0" +"gov.ve\0" +"googlecode.com\0" +"mi.us\0" +"tarui.gifu.jp\0k12.vt.us\0" +"kitagawa.miyazaki.jp\0notteroy.no\0" +"gov.vn\0au.eu.org\0be.eu.org\0" +"minakami.gunma.jp\0" +"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0" +"kinokawa.wakayama.jp\0kudamatsu.yamaguchi.jp\0usa.museum\0" +"best\0" +"suisse.museum\0s3.dualstack.eu-west-1.amazonaws.com\0" +"firm.ro\0" +"ca.na\0" +"nishio.aichi.jp\0gen.ng\0" +"eidfjord.no\0malopolska.pl\0" +"pruszkow.pl\0in.net\0" +"mizusawa.iwate.jp\0" +"community.museum\0" +"auto\0" +"arteducation.museum\0mircloud.host\0" +"koge.tottori.jp\0oster\xc3\xb8y.no\0gov.ws\0" +"hazu.aichi.jp\0" +"team\0" +"\xd1\x81\xd0\xbe\xd1\x87\xd0\xb8.\xd1\x80\xd1\x83\xd1\x81\0" +"ogasawara.tokyo.jp\0" +"anquan\0channel\0hughes\0" +"gen.nz\0" +"futtsu.chiba.jp\0" +"mr.no\0dish\0" +"nikaho.akita.jp\0" +"uk.kg\0" +"swiftcover\0" +"profesional.bo\0" +"gov.ye\0" +"shinyoshitomi.fukuoka.jp\0" +"nakasatsunai.hokkaido.jp\0" +"nosegawa.nara.jp\0caravan\0" +"s3.dualstack.ap-southeast-1.amazonaws.com\0" +"wellbeingzone.co.uk\0" +"shimodate.ibaraki.jp\0mo-i-rana.no\0cc.ne.us\0" +"brasil.museum\0\xc3\xb8stre-toten.no\0" +"gov.za\0tech\0" +"kamifurano.hokkaido.jp\0" +"takatsuki.shiga.jp\0filatelia.museum\0" +"j.bg\0" +"fr.it\0" +"stalowa-wola.pl\0mckinsey\0" +"haga.tochigi.jp\0hyundai\0bplaced.com\0" +"now-dns.org\0" +"barcelona.museum\0ap-south-1.elasticbeanstalk.com\0" +"js.cn\0hokkaido.jp\0" +"gov.zm\0" +"bg.eu.org\0pa.leg.br\0" +"firm.nf\0vapor.cloud\0" +"rc.it\0firm.ng\0" +"firebaseapp.com\0" +"padova.it\0" +"gov.zw\0s3-us-west-1.amazonaws.com\0myfritz.net\0" +"kibichuo.okayama.jp\0" +"from-nj.com\0api.stdlib.com\0" +"seto.aichi.jp\0" +"union.aero\0townnews-staging.com\0" +"yaese.okinawa.jp\0" +"s3.dualstack.sa-east-1.amazonaws.com\0" +"takaharu.miyazaki.jp\0" +"neyagawa.osaka.jp\0" +"matsumoto.kagoshima.jp\0" +"yakumo.shimane.jp\0" +"is-a-blogger.com\0" +"al.gov.br\0" +"vaga.no\0acct.pro\0pb.leg.br\0" +"lpages.co\0" +"yanagawa.fukuoka.jp\0" +"fvg.it\0" +"sejny.pl\0raid\0" +"2.bg\0" +"bz.it\0alipay\0no-ip.co.uk\0" +"lillehammer.no\0" +"virtualserver.io\0" +"yamagata.jp\0" +"mini\0" +"londrina.br\0" +"lodi.it\0health-carereform.com\0" +"sogndal.no\0\xe0\xa4\xa8\xe0\xa5\x87\xe0\xa4\x9f\0" +"gen.tr\0traeumtgerade.de\0" +"khplay.nl\0" +"kikuchi.kumamoto.jp\0mint\0" +"nagasu.kumamoto.jp\0" +"equipment.aero\0*.elb.amazonaws.com.cn\0" +"barsyonline.co.uk\0" +"tomari.hokkaido.jp\0" +"asakuchi.okayama.jp\0" +"asahi.nagano.jp\0locus\0" +"akita.jp\0" +"bosch\0insure\0" +"my-gateway.de\0" +"ca.us\0" +"inabe.mie.jp\0webthings.io\0" +"nt.au\0" +"brunel.museum\0neat-url.com\0" +"kvam.no\0" +"arvo.network\0" +"lubartow.pl\0" +"massacarrara.it\0from-wy.com\0" +"yorkshire.museum\0" +"lamer\0" +"glogow.pl\0vps.mcdir.ru\0" +"nt.ca\0" +"usdecorativearts.museum\0" +"hr.eu.org\0" +"narviika.no\0" +"miyakonojo.miyazaki.jp\0kitayama.wakayama.jp\0" +"children.museum\0" +"kimitsu.chiba.jp\0" +"a.se\0" +"js.org\0synology-ds.de\0" +"kamo.kyoto.jp\0" +"nahari.kochi.jp\0" +"takahashi.okayama.jp\0curv.dev\0" +"priv.pl\0" +"u2-local.xnbay.com\0" +"tranoy.no\0" +"tajimi.gifu.jp\0" +"trentino-sudtirol.it\0" +"urakawa.hokkaido.jp\0" +"readmyblog.org\0" +"k12.id.us\0dyn-ip24.de\0" +"\xd1\x8f.\xd1\x80\xd1\x83\xd1\x81\0" +"kunimi.fukushima.jp\0williamsburg.museum\0" +"raisa.no\0from-ma.com\0" +"barrell-of-knowledge.info\0scrysec.com\0" +"awaji.hyogo.jp\0" +"luxury\0" +"yugawa.fukushima.jp\0" +"sund.no\0" +"synology-diskstation.de\0" +"kamikawa.saitama.jp\0miasta.pl\0" +"barueri.br\0" +"stj\xc3\xb8rdal.no\0is-a-photographer.com\0" +"trentinsuedtirol.it\0priv.no\0" +"s.bg\0" +"gaular.no\0" +"taa.it\0hizen.saga.jp\0" +"oguni.yamagata.jp\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\0" +"slattum.no\0" +"hyllestad.no\0" +"tsushima.aichi.jp\0" "\xe4\xb8\x89\xe9\x87\x8d.jp\0" -"sibenik.museum\0" -"govt.nz\0tychy.pl\0" -"ito.shizuoka.jp\0gov.zm\0" -"daisen.akita.jp\0mizuho.tokyo.jp\0from-tx.com\0" -"kounosu.saitama.jp\0" -"eidfjord.no\0katowice.pl\0" -"piw.gov.pl\0" -"tsubetsu.hokkaido.jp\0" -"seranishi.hiroshima.jp\0gov.zw\0own.pm\0" -"workers.dev\0" -"gorge.museum\0" -"scienceandindustry.museum\0" -"plurinacional.bo\0" -"shinjuku.tokyo.jp\0austrheim.no\0priv.pl\0zhitomir.ua\0" -"wakayama.jp\0mukawa.hokkaido.jp\0" -"lom.no\0" -"il.us\0" -"from-dc.com\0" -"joboji.iwate.jp\0nishiizu.shizuoka.jp\0" -"hemsedal.no\0" -"itako.ibaraki.jp\0" -"taiki.mie.jp\0gob.sv\0" -"cust.dev.thingdust.io\0" -"ikoma.nara.jp\0lacaixa\0" -"kasahara.gifu.jp\0\xe6\x94\xbf\xe5\x8a\xa1\0" -"trentino-suedtirol.it\0" -"langevag.no\0" -"cc.gu.us\0" -"eng.br\0leadpages.co\0" -"nom.ad\0" -"nom.ae\0" -"nom.af\0" -"nom.ag\0podlasie.pl\0edugit.org\0" -"conference.aero\0k12.ky.us\0" -"nom.ai\0" -"from-va.com\0" -"nom.al\0" -"matsumae.hokkaido.jp\0priv.no\0" -"dazaifu.fukuoka.jp\0" -"gob.ve\0" -"kokonoe.oita.jp\0\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa7\0" -"\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa9\0loginline.site\0" -"pavia.it\0iveco\0" -"waw.pl\0" -"rennes\xc3\xb8y.no\0" -"nativeamerican.museum\0aca.pro\0" -"toba.mie.jp\0" -"katsuragi.wakayama.jp\0" -"fed.us\0store.ve\0nctu.me\0" -"careers\0nom.bz\0" -"univ.sn\0ma.leg.br\0nom.cl\0" -"namsskogan.no\0" -"sosa.chiba.jp\0" -"nom.co\0plc.uk\0drud.us\0" -"ss.it\0kawanehon.shizuoka.jp\0" -"onrender.com\0" -"toyo.kochi.jp\0kvafjord.no\0" -"kannami.shizuoka.jp\0rackmaze.net\0" +"seidat.net\0" +"intelligence.museum\0" +"is-very-nice.org\0" +"awsglobalaccelerator.com\0" +"air-traffic-control.aero\0davvesiida.no\0" +"k12.fl.us\0hk.com\0" +"lib.mt.us\0lib.nd.us\0barsy.me\0" +"takatsuki.osaka.jp\0" "priv.me\0" -"\xe5\x8f\xb0\xe6\xb9\xbe\0" -"akrehamn.no\0" -"education.museum\0flekkefjord.no\0vinnica.ua\0\xe9\x9b\xbb\xe8\xa8\x8a\xe7\x9b\x88\xe7\xa7\x91\0" -"matta-varjjat.no\0" -"salvador.br\0" -"bo.it\0*.compute-1.amazonaws.com\0" -"koga.fukuoka.jp\0" -"bizen.okayama.jp\0mandal.no\0" -"jelenia-gora.pl\0ally\0" -"v\xc3\xa6r\xc3\xb8y.no\0pomorze.pl\0" -"kariwa.niigata.jp\0" -"fosnes.no\0" -"walter\0" -"silk\0" -"sor-aurdal.no\0" -"pila.pl\0" -"kamo.niigata.jp\0sweden.museum\0no.eu.org\0" -"rag-cloud-ch.hosteur.com\0" -"nom.es\0ushuaia.museum\0jorpeland.no\0" -"rivne.ua\0" -"tula.su\0" -"aoki.nagano.jp\0" -"saikai.nagasaki.jp\0" -"servep2p.com\0" -"minamiuonuma.niigata.jp\0" -"nom.fr\0itayanagi.aomori.jp\0sauda.no\0sina\0" -"genting\0" -"nom.gd\0" -"asago.hyogo.jp\0nom.ge\0" -"bolt.hu\0" -"kitashiobara.fukushima.jp\0jobs.tt\0mintere.site\0" -"nom.gl\0" -"pr.us\0" -"carboniaiglesias.it\0" -"choyo.kumamoto.jp\0" -"motobu.okinawa.jp\0store.ro\0" -"it1-eur.jenv-arubabiz.cloud\0" -"nom.gt\0" -"dc.us\0loan\0" -"yahiko.niigata.jp\0" -"hashikami.aomori.jp\0likescandy.com\0" -"giehtavuoatna.no\0" -"kameoka.kyoto.jp\0*.sch.uk\0" -"space-to-rent.com\0nom.hn\0" -"cc.ok.us\0" -"webhop.me\0" -"ownip.net\0" -"kawazu.shizuoka.jp\0nyuzen.toyama.jp\0store.st\0cc.ga.us\0" -"kouhoku.saga.jp\0" -"owariasahi.aichi.jp\0" -"benevento.it\0azurewebsites.net\0" -"al.eu.org\0" -"p.se\0nom.im\0" -"nakaniikawa.toyama.jp\0" -"plants.museum\0" -"jetzt\0ssl.origin.cdn77-secure.org\0" -"leasing.aero\0k12.as.us\0" -"\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0\xd0\xbe\xd0\xbd\xd0\xbb\xd0\xb0\xd0\xb9\xd0\xbd\0" -"l\xc3\xa4ns.museum\0" -"sci.eg\0higashimurayama.tokyo.jp\0career\0" -"semine.miyagi.jp\0" -"patria.bo\0" -"2ix.at\0" -"nom.ke\0" -"chuo.yamanashi.jp\0" -"nom.km\0" -"gs.rl.no\0ro.im\0" -"nz.eu.org\0" -"kumagaya.saitama.jp\0mazury.pl\0twmail.net\0" -"kvalsund.no\0" -"vt.it\0ino.kochi.jp\0" -"koka.shiga.jp\0volkswagen\0" -"myasustor.com\0" -"arezzo.it\0ro.it\0\xe5\x85\xb5\xe5\xba\xab.jp\0" -"2ix.ch\0" -"kagawa.jp\0austin.museum\0nom.li\0" -"gs.ah.no\0" -"lib.fl.us\0" -"energy\0" -"plesk.page\0" -"forsale\0" -"\xc3\xa5snes.no\0dynv6.net\0" -"sasebo.nagasaki.jp\0""2ix.de\0" -"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0" -"site\0nom.lv\0" -"nom.mg\0" -"froland.no\0" -"glade\0" -"tromsa.no\0*.lcl.dev\0" -"kashiwara.osaka.jp\0nom.mk\0" -"miki.hyogo.jp\0kyiv.ua\0loft\0" -"from-oh.com\0" -"minamitane.kagoshima.jp\0" -"amex\0" -"industria.bo\0nom.nc\0kvits\xc3\xb8y.no\0is-a-llama.com\0es-1.axarnet.cloud\0brasilia.me\0" -"sevastopol.ua\0" -"j\xc3\xb8lster.no\0coop.rw\0" -"trentino-s-tirol.it\0" -"minamiboso.chiba.jp\0*.s5y.io\0" -"nom.ni\0" -"v-info.info\0" -"fujimi.saitama.jp\0" +"rotorcraft.aero\0" +"cahcesuolo.no\0playstation\0" +"healthcare\0" +"trentinoalto-adige.it\0kaminokawa.tochigi.jp\0" +"trentinsudtirol.it\0" +"niikappu.hokkaido.jp\0" +"usercontent.jp\0" +"cs.it\0is-a-libertarian.com\0" +"ragusa.it\0" +"x.mythic-beasts.com\0" +"kunitomi.miyazaki.jp\0juedisches.museum\0" +"caltanissetta.it\0koryo.nara.jp\0langevag.no\0" +"satx.museum\0etnedal.no\0" +"database.museum\0" +"muroran.hokkaido.jp\0" +"denmark.museum\0" +"presse.km\0" +"chocolate.museum\0" +"dyroy.no\0" +"uchinomi.kagawa.jp\0" +"surf\0" +"science-fiction.museum\0\xc3\xb8ksnes.no\0" +"kazimierz-dolny.pl\0" +"eastus2.azurestaticapps.net\0" +"dali.museum\0rl.no\0fairwinds\0" +"media.hu\0" +"trentino-s\xc3\xbc""dtirol.it\0" +"\xe6\x84\x9b\xe7\x9f\xa5.jp\0sykkylven.no\0" +"kwpsp.gov.pl\0" +"getmyip.com\0" +"santamaria.br\0" +"taishin.fukushima.jp\0bygland.no\0" +"latina.it\0modum.no\0" +"shinjuku.tokyo.jp\0" +"izumozaki.niigata.jp\0presse.ml\0" +"mitsue.nara.jp\0tendo.yamagata.jp\0r\xc3\xa5holt.no\0" +"properties\0" +"fetsund.no\0myasustor.com\0" +"pistoia.it\0verona.it\0githubusercontent.com\0jcloud.kz\0" +"\xe6\x85\x88\xe5\x96\x84\0pi.leg.br\0" +"dazaifu.fukuoka.jp\0environmentalconservation.museum\0" +"kounosu.saitama.jp\0*.on-k3s.io\0" +"khmelnytskyi.ua\0" +"exnet.su\0" +"fuoisku.no\0" +"tos.it\0" +"imakane.hokkaido.jp\0" +"adult\0endofinternet.org\0" +"visa\0" +"workinggroup.aero\0higashisumiyoshi.osaka.jp\0isa-hockeynut.com\0" +"gob.ar\0nagara.chiba.jp\0colonialwilliamsburg.museum\0" +"m\xc4\x81ori.nz\0" +"is-into-anime.com\0" +"nt.no\0webspace.rocks\0" +"oizumi.gunma.jp\0furniture\0hsbc\0icbc\0" +"teva\0" "padua.it\0" -"michigan.museum\0" -"tolga.no\0" -"toshiba\0" -"wroclaw.pl\0" -"za.net\0" -"varese.it\0lind\xc3\xa5s.no\0" -"nom.nu\0" -"from-mn.com\0" -"kyowa.hokkaido.jp\0" -"hgtv\0" -"honjo.akita.jp\0" -"caxias.br\0" -"\xe5\xa4\xa7\xe6\x8b\xbf\0" -"broker\0" -"yufu.oita.jp\0nom.pa\0" -"securitytactics.com\0" -"coop.tt\0is-a-student.com\0vladimir.su\0" -"nom.pe\0" -"verona.it\0beardu.no\0" -"\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x8b\xe0\xa4\xa4\0" -"foggia.it\0capebreton.museum\0civilwar.museum\0" -"nemuro.hokkaido.jp\0" -"nom.pl\0" -"cc.wa.us\0tushu\0poznan.pl\0" -"oharu.aichi.jp\0" -"mormon\0nom.qa\0" -"hitachiomiya.ibaraki.jp\0hopto.org\0wedeploy.sh\0" -"\xe0\xa8\xad\xe0\xa8\xbe\xe0\xa8\xb0\xe0\xa8\xa4\0" -"higashine.yamagata.jp\0" -"coop.mv\0" -"coop.mw\0" -"eti.br\0nom.pw\0" -"schweiz.museum\0" -"agdenes.no\0joburg\0" -"y.bg\0" -"hiroo.hokkaido.jp\0torsken.no\0tn.oxa.cloud\0" -"tachikawa.tokyo.jp\0" -"4.bg\0audio\0windows\0*.linodeobjects.com\0" -"k12.nh.us\0philips\0" -"yachimata.chiba.jp\0jeonnam.kr\0cog.mi.us\0" -"bulsan.it\0catering\0" -"powiat.pl\0k12.ia.us\0does-it.net\0" -"kodaira.tokyo.jp\0" -"intl.tn\0" -"nom.re\0" -"aejrie.no\0" -"ureshino.mie.jp\0bievat.no\0casacam.net\0" -"*.nagoya.jp\0kuroiso.tochigi.jp\0" -"dev.br\0" -"samegawa.fukushima.jp\0" -"nom.ro\0" -"nrw.museum\0bplaced.com\0" -"nanjo.okinawa.jp\0" -"vladimir.ru\0nom.rs\0" -"sogndal.no\0" -"asn.au\0" -"sg.cloudswitches.com\0" -"kuwana.mie.jp\0pinb.gov.pl\0nom.si\0" -"makeup\0" -"soundcast.me\0" -"vestv\xc3\xa5g\xc3\xb8y.no\0" -"for-better.biz\0" -"cloudns.biz\0nom.st\0" -"togo.aichi.jp\0" -"coop.py\0" -"nom.tj\0" -"is-a-guru.com\0" -"wada.nagano.jp\0" -"nom.tm\0netflix\0" +"ponpes.id\0" +"settsu.osaka.jp\0voagat.no\0test-iserv.de\0azimuth.network\0" +"gob.bo\0showtime\0" +"rygge.no\0\xd8\xa7\xd9\x84\xd8\xa8\xd8\xad\xd8\xb1\xd9\x8a\xd9\x86\0" +"iwakuni.yamaguchi.jp\0" +"wodzislaw.pl\0" +"ut.us\0" +"koto.tokyo.jp\0alvdal.no\0" +"gob.cl\0" +"hostyhosting.io\0" +"yokoze.saitama.jp\0sauda.no\0is-a-doctor.com\0" +"sado.niigata.jp\0" +"\xe0\xb8\x84\xe0\xb8\xad\xe0\xb8\xa1\0" +"mazeplay.com\0" +"amami.kagoshima.jp\0vegas\0barsy.uk\0" +"oxford.museum\0u.channelsdvr.net\0" +"chirurgiens-dentistes.fr\0kasuga.fukuoka.jp\0" +"wpdevcloud.com\0" +"jelastic.tsukaeru.net\0mysecuritycamera.net\0" +"nakagawa.fukuoka.jp\0" +"gob.do\0seven\0" +"viva\0" +"authgear-staging.com\0" +"mus.br\0" +"gob.ec\0" +"valleedaoste.it\0" +"tomakomai.hokkaido.jp\0" +"oita.oita.jp\0dnsdojo.net\0" +"futsu.nagasaki.jp\0" +"is-a-techie.com\0" +"tas.au\0" +"kumenan.okayama.jp\0" +"vivo\0alp1.ae.flow.ch\0" +"l\xc3\xb8""dingen.no\0" +"storj.farm\0" +"gob.es\0maori.nz\0" +"nt.ro\0" +"pagespeedmobilizer.com\0" +"akabira.hokkaido.jp\0" +"lakas.hu\0" +"oarai.ibaraki.jp\0berlevag.no\0" +"cagliari.it\0" +"goodyear\0bplaced.net\0" +"hakusan.ishikawa.jp\0" +"pavia.it\0nichinan.tottori.jp\0selje.no\0media.pl\0" +"restaurant\0" +"apps.fbsbx.com\0" +"racing\0" +"sekigahara.gifu.jp\0" +"hamatonbetsu.hokkaido.jp\0" +"sn.cn\0" +"lucania.it\0" +"toyooka.hyogo.jp\0cyber.museum\0" +"\xd0\xbe\xd0\xbd\xd0\xbb\xd0\xb0\xd0\xb9\xd0\xbd\0" +"tagajo.miyagi.jp\0" +"gob.gt\0togitsu.nagasaki.jp\0" +"cat.ax\0" +"square.museum\0" +"jls-sto3.elastx.net\0" "koya.wakayama.jp\0" -"entomology.museum\0" -"sellsyourhome.org\0" -"yawara.ibaraki.jp\0" -"from-nh.com\0" -"environment.museum\0usgarden.museum\0creditunion\0nom.ug\0" -"palmas.br\0gok.pk\0" -"kamogawa.chiba.jp\0" -"\xe9\xa3\x9e\xe5\x88\xa9\xe6\xb5\xa6\0" -"mima.tokushima.jp\0" -"principe.st\0\xd1\x83\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0" -"hino.tokyo.jp\0surnadal.no\0" -"rockart.museum\0" -"nom.vc\0" -"s3-ap-northeast-1.amazonaws.com\0" -"shopitsite.com\0" -"trogstad.no\0contact\0nom.vg\0" -"nom.uy\0" -"jc.neen.it\0" -"kasamatsu.gifu.jp\0coop.km\0kyoto\0" -"panel.gg\0" -"labor.museum\0n4t.co\0myftp.org\0" -"audnedaln.no\0" -"store.bb\0" -"mikasa.hokkaido.jp\0africa\0" -"ebetsu.hokkaido.jp\0itano.tokushima.jp\0higashikurume.tokyo.jp\0" -"forlicesena.it\0" -"flickr\0" -"nakanoto.ishikawa.jp\0" -"b\xc3\xb8.nordland.no\0" -"nomi.ishikawa.jp\0mydatto.com\0" -"vt.us\0" -"gotdns.org\0" -"kutno.pl\0" -"busan.kr\0" -"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0nj.us\0" -"swinoujscie.pl\0" -"namsos.no\0" -"garden\0" -"ak.us\0" -"kamiamakusa.kumamoto.jp\0" -"crafts.museum\0*.r.appspot.com\0" -"fot.br\0" -"yonezawa.yamagata.jp\0" -"pvt.k12.ma.us\0" -"quebec\0*.sensiosite.cloud\0" -"sande.vestfold.no\0bar0.net\0" -"store.dk\0" -"k12.tn.us\0church\0" -"\xe5\x92\x8c\xe6\xad\x8c\xe5\xb1\xb1.jp\0azimuth.network\0" -"e.bg\0\xe7\x86\x8a\xe6\x9c\xac.jp\0kinko.kagoshima.jp\0" -"government.aero\0nom.za\0" -"ddnsgeek.com\0" -"k12.gu.us\0fresenius\0" -"higashiosaka.osaka.jp\0" -"cookingchannel\0" -"geisei.kochi.jp\0fbx-os.fr\0" -"kunitachi.tokyo.jp\0commbank\0jelastic.tsukaeru.net\0" -"porsangu.no\0" -"homesense\0wedeploy.me\0" -"lewismiller.museum\0" -"norfolk.museum\0institute\0repl.co\0" -"blogspot.vn\0" -"radio.am\0" -"baseball\0" -"lund.no\0" -"cheltenham.museum\0vantaa.museum\0" -"chosei.chiba.jp\0" -"sannan.hyogo.jp\0" -"kitadaito.okinawa.jp\0" -"\xe7\xbd\x91\xe5\xba\x97\0" -"radio.br\0" -"kisofukushima.nagano.jp\0love\0" -"pg.it\0suzuki\0" -"gs.bu.no\0" -"kr.it\0tenkawa.nara.jp\0lib.ga.us\0" -"\xe5\xaf\x8c\xe5\xb1\xb1.jp\0matsushige.tokushima.jp\0" -"kamoenai.hokkaido.jp\0" -"glass\0" -"ch.it\0" -"webhop.org\0" -"jelastic.saveincloud.net\0" -"ns.ca\0" -"guitars\0" -"asn.lv\0" -"suifu.ibaraki.jp\0muroto.kochi.jp\0gausdal.no\0zero\0" -"artgallery.museum\0" -"sh.cn\0blogspot.re\0" -"meinforum.net\0" -"columbus.museum\0physio\0services\0" -"aip.ee\0" -"blogspot.ro\0" -"fi.cr\0" -"blogspot.rs\0" -"lv.ua\0\xd9\x85\xd9\x84\xd9\x8a\xd8\xb3\xd9\x8a\xd8\xa7\0" -"insurance.aero\0blogspot.ru\0blogspot.se\0" -"mg.leg.br\0" -"blogspot.sg\0" -"mt.eu.org\0blogspot.si\0" -"chiyoda.tokyo.jp\0" -"tmp.br\0blogspot.sk\0bloxcms.com\0" -"e4.cz\0de.trendhosting.cloud\0" -"sayama.saitama.jp\0blogspot.sn\0" -"radio.fm\0" -"!city.sendai.jp\0" -"maserati\0blogspot.td\0jed.wafaicloud.com\0website.yandexcloud.net\0" -"yamanouchi.nagano.jp\0" -"online\0" -"dating\0" -"homelink.one\0" -"ia.us\0" -"sannohe.aomori.jp\0" -"froya.no\0" -"us.com\0" -"blogsite.org\0" -"kagoshima.jp\0" -"kiev.ua\0" -"s3.ap-northeast-2.amazonaws.com\0from-ct.com\0" -"medio-campidano.it\0qoto.io\0" -"opole.pl\0" -"bari.it\0" -"toyone.aichi.jp\0data\0blogspot.tw\0blogspot.ug\0" -"sobetsu.hokkaido.jp\0arida.wakayama.jp\0" -"namie.fukushima.jp\0" -"date\0tatar\0" -"gwiddle.co.uk\0" -"lenvik.no\0ap-northeast-1.elasticbeanstalk.com\0" -"neues.museum\0" -"kaga.ishikawa.jp\0" -"bronnoysund.no\0" -"blogspot.mr\0" -"countryestate.museum\0y.se\0" -"hannan.osaka.jp\0ralingen.no\0\xe5\x8f\xb0\xe7\x81\xa3\0" -"fitjar.no\0" -"unusualperson.com\0" -"oppegard.no\0" -"blogspot.mx\0" -"skin\0blogspot.my\0" -"quebec.museum\0" -"fastvps-server.com\0blogspot.nl\0rdv.to\0" -"iwata.shizuoka.jp\0" -"kisosaki.mie.jp\0blogspot.no\0" +"cadaques.museum\0od.ua\0global.ssl.fastly.net\0" +"joboji.iwate.jp\0" +"pe.leg.br\0" +"gob.hn\0" +"moonscale.net\0pagexl.com\0" +"coal.museum\0" +"mikasa.hokkaido.jp\0" +"dc.us\0" +"tsk.tr\0" +"sakawa.kochi.jp\0" +"yamaguchi.jp\0" +"ostre-toten.no\0weber\0" +"is-into-cartoons.com\0" +"bulsan-s\xc3\xbc""dtirol.it\0" +"ikaruga.nara.jp\0smart\0" +"tottori.tottori.jp\0" +"tychy.pl\0us-4.evennode.com\0" +"dyndns.org\0" +"\xeb\x8b\xb7\xeb\x84\xb7\0" +"skoczow.pl\0hasura-app.io\0" +"makurazaki.kagoshima.jp\0" +"filegear-de.me\0" +"salem.museum\0" +"le.it\0" +"arezzo.it\0\xe5\xb2\x90\xe9\x98\x9c.jp\0" +"ad.jp\0nanto.toyama.jp\0" +"il.eu.org\0" +"lillesand.no\0s.se\0ru.com\0bar1.net\0*.sensiosite.cloud\0" +"online.th\0" +"vv.it\0glitch.me\0" +"jdf.br\0jpmorgan\0" +"bir.ru\0" +"ybo.party\0" +"chuo.fukuoka.jp\0" +"jaguar\0" +"k12.in.us\0is-by.us\0" +"email\0" +"wiih.gov.pl\0blogspot.vn\0" +"cim.br\0" +"am.br\0chikuzen.fukuoka.jp\0" +"siracusa.it\0" +"tateyama.toyama.jp\0vega.no\0co.financial\0" +"yaita.tochigi.jp\0tj\xc3\xb8me.no\0hu.eu.org\0ie.eu.org\0" +"mulhouse.museum\0" +"homeftp.org\0" +"food\0" +"finland.museum\0selbu.no\0lenug.su\0" +"anan.nagano.jp\0" +"oamishirasato.chiba.jp\0" +"rivne.ua\0voorloper.cloud\0" +"inawashiro.fukushima.jp\0" +"is-a-personaltrainer.com\0" +"ln.cn\0alsace\0us-3.evennode.com\0" +"pvh.br\0kumano.mie.jp\0*.r.appspot.com\0" +"matsukawa.nagano.jp\0" +"\xe6\x94\xbf\xe5\xba\x9c\0authgearapps.com\0" +"001www.com\0" +"dnsalias.com\0" +"gob.mx\0" +"gob.ni\0" +"realm.cz\0" +"myvnc.com\0" +"mihama.chiba.jp\0" +"lib.de.us\0" +"ribeirao.br\0yamazoe.nara.jp\0" +"utsunomiya.tochigi.jp\0" +"co.education\0" +"takayama.gunma.jp\0" +"is-very-good.org\0" +"toyotsu.fukuoka.jp\0blogspot.re\0" +"iglesias-carbonia.it\0hichiso.gifu.jp\0" +"gorizia.it\0gob.pa\0" +"hamar.no\0ford\0" +"is-an-anarchist.com\0\xd0\xbc\xd0\xb8\xd1\x80.\xd1\x80\xd1\x83\xd1\x81\0gda.pl\0" "hashimoto.wakayama.jp\0" -"saves-the-whales.com\0" -"barsyonline.com\0hicam.net\0" -"wanggou\0" -"s3-eu-west-3.amazonaws.com\0" -"virtuel.museum\0" -"ibestad.no\0" -"hermes\0" -"newspaper.museum\0s3.dualstack.eu-west-1.amazonaws.com\0" -"law.pro\0horse\0mozilla-iot.org\0" -"takanabe.miyazaki.jp\0yasaka.nagano.jp\0" -"sorfold.no\0" -"ny-1.paas.massivegrid.net\0" -"gratis\0privatizehealthinsurance.net\0" -"lib.wa.us\0scrapper-site.net\0blogspot.pe\0" -"furniture\0" -"lib.sd.us\0" -"trentino-sud-tirol.it\0" -"lib.ok.us\0" -"ca.reclaim.cloud\0" -"gjovik.no\0lib.in.us\0" -"med.br\0" -"olbia-tempio.it\0blogspot.qa\0" -"co.com\0" -"fi.it\0yame.fukuoka.jp\0allfinanz\0blogspot.pt\0" -"*.cloud.metacentrum.cz\0" -"exnet.su\0" -"at.it\0" -"mytuleap.com\0" -"cargo.aero\0xbox\0" -"imabari.ehime.jp\0supplies\0is-into-anime.com\0" -"nagasaki.nagasaki.jp\0" -"\xe6\x96\xb0\xe6\xbd\x9f.jp\0" -"kosai.shizuoka.jp\0onza.mythic-beasts.com\0" -"lipsy\0" -"mitsue.nara.jp\0blogspot.is\0" +"gob.pe\0" +"\xe6\x95\x99\xe8\x82\xb2.hk\0" +"birkenes.no\0blogspot.ro\0" +"ishikari.hokkaido.jp\0mel\xc3\xb8y.no\0" +"gob.pk\0cc.wi.us\0gehirn.ne.jp\0" +"cafjs.com\0blogspot.rs\0" +"blogspot.ru\0blogspot.se\0" +"shiriuchi.hokkaido.jp\0blogspot.sg\0" +"wif.gov.pl\0" +"blogspot.si\0" +"barsy.bg\0" +"blogspot.sk\0" +"blogspot.sn\0on-web.fr\0" +"abkhazia.su\0" +"kharkiv.ua\0barsy.ca\0blogspot.td\0" +"forl\xc3\xac""cesena.it\0fujikawa.yamanashi.jp\0us-2.evennode.com\0" +"stat.no\0" +"deatnu.no\0" +"hm.no\0j\xc3\xb8lster.no\0mus.mi.us\0" +"isla.pr\0" +"ogawa.nagano.jp\0" +"mandal.no\0" +"pors\xc3\xa1\xc5\x8bgu.no\0pr.leg.br\0" +"city.hu\0" +"k12.ne.us\0" +"blogspot.tw\0blogspot.ug\0" +"barsy.de\0" +"aguni.okinawa.jp\0" +"latino\0" +"aizumisato.fukushima.jp\0" +"habikino.osaka.jp\0" +"blogspot.mr\0" +"isen.kagoshima.jp\0" +"bozen-suedtirol.it\0blogspot.mx\0" +"yoshida.shizuoka.jp\0saarland\0blogspot.my\0" +"ravendb.me\0" +"botanical.museum\0blogspot.nl\0" +"gob.sv\0" +"blogspot.no\0" +"barsy.eu\0" +"aukra.no\0" +"gifu.jp\0prime\0" +"brussels.museum\0decorativearts.museum\0schaeffler\0" +"network\0" +"yomitan.okinawa.jp\0niepce.museum\0penza.su\0" +"kunitachi.tokyo.jp\0" +"and.mom\0" +"koshu.yamanashi.jp\0richardli\0blogspot.pe\0" +"us-1.evennode.com\0" +"presse.ci\0" +"valdaosta.it\0" +"lib.sc.us\0" +"gob.ve\0" +"shiraoi.hokkaido.jp\0" +"blogspot.qa\0" +"ivgu.no\0" +"kopervik.no\0dedyn.io\0" +"gr.eu.org\0blogspot.pt\0" +"\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa7\xb0\xe0\xa6\xa4\0" +"orskog.no\0" +"circus.museum\0" +"filegear-gb.me\0" +"h\xc3\xb8nefoss.no\0" +"dagestan.ru\0" +"okinoshima.shimane.jp\0winb.gov.pl\0" +"med.pro\0blogspot.is\0" "blogspot.it\0" -"egyptian.museum\0dev.vu\0" -"mo.cn\0" -"med.ec\0blogspot.jp\0vipsinaapp.com\0" -"ch.tc\0" -"med.ee\0" -"blogspot.co.at\0wedeploy.io\0" -"dscloud.biz\0" -"civilaviation.aero\0taa.it\0" -"tochio.niigata.jp\0" -"kr.ua\0a.run.app\0" -"asker.no\0" -"author.aero\0" -"blogspot.kr\0" -"minamiaiki.nagano.jp\0" -"at.md\0" -"gru.br\0" -"lombardy.it\0sogne.no\0\xe6\x95\x99\xe8\x82\xb2.\xe9\xa6\x99\xe6\xb8\xaf\0blogspot.li\0" -"fujisato.akita.jp\0kwpsp.gov.pl\0vpndns.net\0" -"valdaosta.it\0naha.okinawa.jp\0nanbu.tottori.jp\0" -"soccer\0" -"yonago.tottori.jp\0wskr.gov.pl\0bplaced.net\0" -"k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0blogspot.lt\0blogspot.md\0" -"blogspot.lu\0" -"luxury\0" -"soundandvision.museum\0my.eu.org\0myeffect.net\0" -"oga.akita.jp\0blogspot.mk\0" -"misaki.osaka.jp\0" -"yoka.hyogo.jp\0k12.wi.us\0" -"\xd8\xa8\xd8\xa7\xd8\xb2\xd8\xa7\xd8\xb1\0" -"takaishi.osaka.jp\0" -"k12.mo.us\0groks-this.info\0" -"e.se\0" -"ecn.br\0blogspot.fi\0" -"gangwon.kr\0" -"chiropractic.museum\0historichouses.museum\0k12.az.us\0" -"fhsk.se\0za.org\0" -"med.ht\0brescia.it\0" -"blogspot.fr\0" -"h\xc3\xb8ylandet.no\0yamaxun\0" -"community\0" -"bharti\0" -"kl\xc3\xa6""bu.no\0" -"taki.mie.jp\0" -"itabashi.tokyo.jp\0" -"hvaler.no\0nov.ru\0" -"leitungsen.de\0" -"ing.pa\0" +"does-it.net\0ryd.wafaicloud.com\0" +"scienceandhistory.museum\0" +"nishi.osaka.jp\0" +"yatsuka.shimane.jp\0" +"fukui.jp\0kunstsammlung.museum\0homedns.org\0" +"v\xc3\xa5ler.hedmark.no\0" +"dagestan.su\0" +"jessheim.no\0andasuolo.no\0" +"blogspot.jp\0" +"abira.hokkaido.jp\0barsy.in\0" +"east-kazakhstan.su\0barsy.io\0ciscofreak.com\0" +"vall\xc3\xa9""e-d-aoste.it\0appspot.com\0" +"furano.hokkaido.jp\0" +"namsskogan.no\0" +"takasaki.gunma.jp\0" +"shop.ht\0traniandriabarletta.it\0meiwa.gunma.jp\0kushima.miyazaki.jp\0karpacz.pl\0" +"shop.hu\0" +"aki.kochi.jp\0" +"asahi.chiba.jp\0review\0blogspot.kr\0" +"kumatori.osaka.jp\0" +"computer.museum\0" +"cc.ma.us\0" +"takagi.nagano.jp\0" +"kvits\xc3\xb8y.no\0" +"arts.museum\0" +"blogspot.li\0" +"nikko.tochigi.jp\0\xe5\x80\x8b\xe4\xba\xba.\xe9\xa6\x99\xe6\xb8\xaf\0" +"usantiques.museum\0" +"en.it\0historisches.museum\0gok.pk\0" +"communications.museum\0int.eu.org\0" +"saves-the-whales.com\0" +"abc.br\0" +"compare\0blogspot.lt\0blogspot.md\0" +"psi.br\0beats\0blogspot.lu\0unicloud.pl\0" +"empresa.bo\0dyndns-mail.com\0us.platform.sh\0" +"po.it\0" +"in-dsl.org\0" +"imageandsound.museum\0us.eu.org\0blogspot.mk\0" +"rennebu.no\0" +"broadway\0j.scaleforce.net\0" +"is-very-bad.org\0" +"aya.miyazaki.jp\0" +"britishcolumbia.museum\0" +"co.place\0" +"faith\0" +"mol.it\0blogspot.fi\0" +"hidora.com\0" +"lib.ks.us\0" +"judygarland.museum\0" +"dyn.ddnss.de\0onthewifi.com\0" +"k12.oh.us\0design\0blogspot.fr\0" +"asahi.yamagata.jp\0dontexist.com\0" +"cng.br\0agrinet.tn\0" +"ecologia.bo\0" +"direct\0" +"lon-1.paas.massivegrid.net\0" +"av.it\0open\0" +"koganei.tokyo.jp\0" "blogspot.gr\0" -"vikna.no\0" -"gs.vf.no\0pomorskie.pl\0" -"military.museum\0compare\0" -"zgorzelec.pl\0space\0nov.su\0blogspot.hk\0hidora.com\0" -"mihama.fukui.jp\0" -"vi.it\0os.hedmark.no\0" -"\xe6\x95\x8e\xe8\x82\xb2.hk\0" -"wroc.pl\0" -"blogspot.hr\0dev-myqnapcloud.com\0" -"mo.it\0" -"web.app\0" -"blogspot.hu\0blogspot.ie\0" -"gv.ao\0" -"motorcycle.museum\0" -"lib.al.us\0" -"tinn.no\0flights\0" -"gv.at\0pp.az\0*.customer-oci.com\0" -"black\0" -"taishi.hyogo.jp\0blogspot.in\0" -"cistron.nl\0" +"try-snowplow.com\0" +"bunkyo.tokyo.jp\0stathelle.no\0" +"riik.ee\0" +"pharmacy.museum\0" +"med.br\0is-a-republican.com\0" +"blogspot.hk\0" +"qh.cn\0t\xc3\xb8nsberg.no\0" +"namikata.ehime.jp\0*.hosting.myjino.ru\0""4lima.de\0" +"reggio-emilia.it\0yugawara.kanagawa.jp\0mallorca.museum\0" +"yuu.yamaguchi.jp\0" +"blogspot.hr\0" +"kawatana.nagasaki.jp\0volyn.ua\0" +"solund.no\0blogspot.hu\0blogspot.ie\0" +"webredirect.org\0" +"grondar.za\0" +"*.compute.amazonaws.com\0" +"dsmynas.com\0" +"ichihara.chiba.jp\0from-mo.com\0" +"blogspot.in\0" "blogspot.ba\0" -"sp.gov.br\0blogspot.co.id\0" -"agrinet.tn\0hotmail\0" -"blogspot.be\0" -"blogspot.bg\0" -"bd.se\0" -"xz.cn\0dyroy.no\0hyatt\0" +"kv\xc3\xa6""fjord.no\0" +"tomigusuku.okinawa.jp\0blogspot.be\0" +"loppa.no\0blogspot.bg\0" +"lanbib.se\0company\0" +"nobeoka.miyazaki.jp\0" "blogspot.bj\0" -"blogspot.co.il\0" -"higashi.okinawa.jp\0" -"sveio.no\0repl.run\0" -"rotorcraft.aero\0" -"sugito.saitama.jp\0blogspot.ca\0" -"med.ly\0blogspot.cf\0eu.platform.sh\0" -"cq.cn\0maif\0blogspot.ch\0" -"nl.eu.org\0" -"blogspot.cl\0" -"twmail.org\0" -"oyamazaki.kyoto.jp\0" -"takaoka.toyama.jp\0" -"ipiranga\0" +"med.ec\0living\0" +"med.ee\0" +"4lima.at\0" +"civilwar.museum\0cc.pr.us\0" +"panasonic\0blogspot.ca\0" +"mp.br\0nakijin.okinawa.jp\0mircloud.us\0" +"yamatsuri.fukushima.jp\0" +"blogspot.cf\0" +"bolt.hu\0kagamiishi.fukushima.jp\0is-a-hunter.com\0mysecuritycamera.org\0" +"knowsitall.info\0blogspot.ch\0" +"laz.it\0nakagawa.nagano.jp\0" +"b-data.io\0" +"manchester.museum\0" +"fujikawaguchiko.yamanashi.jp\0blogspot.cl\0" +"aknoluokta.no\0" +"trading.aero\0" +"s3-ap-southeast-1.amazonaws.com\0" +"tp.it\0alibaba\0irish\0""4lima.ch\0" +"s3-website-ap-northeast-1.amazonaws.com\0" +"tashkent.su\0" "blogspot.de\0" -"mihama.aichi.jp\0blogspot.cv\0" -"myhome-server.de\0localzone.xyz\0stage.nodeart.io\0" -"blogspot.cz\0" -"blogspot.dk\0" -"app.banzaicloud.io\0" -"kakuda.miyagi.jp\0shimosuwa.nagano.jp\0" -"otaki.saitama.jp\0" -"chuo.fukuoka.jp\0" -"desa.id\0" -"kasugai.aichi.jp\0med.om\0at.vg\0" -"novara.it\0company\0" -"so.gov.pl\0" -"indianapolis.museum\0med.pa\0firestone\0" -"yawata.kyoto.jp\0" -"valled-aosta.it\0chihayaakasaka.osaka.jp\0usarts.museum\0" -"n.bg\0" -"reggio-calabria.it\0t\xc3\xb8nsberg.no\0" -"groundhandling.aero\0" -"med.pl\0" -"kakinoki.shimane.jp\0ringebu.no\0" -"yokaichiba.chiba.jp\0ap-south-1.elasticbeanstalk.com\0" -"*.compute.amazonaws.com\0is-a-liberal.com\0" -"lyngdal.no\0" -"quest\0" -"\xe6\x96\xb0\xe9\x97\xbb\0" -"moroyama.saitama.jp\0lugs.org.uk\0" -"unicloud.pl\0" -"accident-prevention.aero\0" -"iyo.ehime.jp\0oguni.kumamoto.jp\0" -"aizubange.fukushima.jp\0itakura.gunma.jp\0" -"gitpage.si\0" -"suldal.no\0bip.sh\0" -"la-spezia.it\0" -"oyama.tochigi.jp\0gs.tr.no\0" -"cosenza.it\0" -"cloudera.site\0" -"club.aero\0med.sa\0" -"med.sd\0" -"lib.ks.us\0blogspot.ae\0" -"amsterdam.museum\0" -"fr-1.paas.massivegrid.net\0" -"rieti.it\0brumunddal.no\0ng.eu.org\0" -"recipes\0rhcloud.com\0" +"ushuaia.museum\0blogspot.cv\0" +"vall\xc3\xa9""edaoste.it\0asaminami.hiroshima.jp\0" +"if.ua\0blogspot.cz\0" +"urawa.saitama.jp\0blogspot.dk\0" +"io.kg\0storage.yandexcloud.net\0" +"tobishima.aichi.jp\0jls-sto1.elastx.net\0" +"corvette.museum\0" +"jeonbuk.kr\0is-a-hard-worker.com\0" +"gyeongnam.kr\0hoyanger.no\0" +"mytis.ru\0" +"games.hu\0" +"finn\xc3\xb8y.no\0" +"utwente.io\0" +"*.alces.network\0wbq.me\0" +"is-a-democrat.com\0" +"alwaysdata.net\0" +"melbourne\0" +"schmidt\0" +"publishproxy.com\0" +"\xe5\xae\xae\xe5\x9f\x8e.jp\0" +"hirado.nagasaki.jp\0" +"astronomy.museum\0" +"iwata.shizuoka.jp\0" +"fg.it\0" +"med.ht\0bike\0" +"trentin-sued-tirol.it\0" +"tagami.niigata.jp\0" +"ichinomiya.chiba.jp\0" +"ieee\0id.repl.co\0" +"austevoll.no\0" +"res.in\0mircloud.ru\0" +"izunokuni.shizuoka.jp\0" +"catering.aero\0austrheim.no\0" +"toolforge.org\0" +"servebeer.com\0" +"aoki.nagano.jp\0tjmaxx\0" +"lib.wy.us\0" +"blogspot.ae\0" +"sortland.no\0*.triton.zone\0" +"ito.shizuoka.jp\0" +"pittsburgh.museum\0leikanger.no\0" +"bo.it\0" "blogspot.al\0" -"blogspot.am\0" -"knowsitall.info\0svn-repos.de\0" -"bearalv\xc3\xa1hki.no\0" -"media.museum\0" -"firewall-gateway.de\0" -"cody.museum\0" -"yamatsuri.fukushima.jp\0" -"drobak.no\0n\xc3\xb8tter\xc3\xb8y.no\0" -"omega\0" -"athleta\0khplay.nl\0" -"rexroth\0" -"frogans\0" -"\xd9\x83\xd8\xa7\xd8\xab\xd9\x88\xd9\x84\xd9\x8a\xd9\x83\0" -"mragowo.pl\0" -"is-a-cpa.com\0" -"\xd9\x85\xd9\x88\xd8\xb1\xd9\x8a\xd8\xaa\xd8\xa7\xd9\x86\xd9\x8a\xd8\xa7\0" -"r\xc3\xa5holt.no\0" -"inderoy.no\0" -"camdvr.org\0" -"askoy.no\0aaa\0doesntexist.com\0" -"izumozaki.niigata.jp\0" -"\xe5\xa4\xa9\xe4\xb8\xbb\xe6\x95\x99\0qualifioapp.com\0" -"agric.za\0" -"ota.tokyo.jp\0town.museum\0" -"uryu.hokkaido.jp\0" -"movie\0" -"vi.us\0" -"teo.br\0noheji.aomori.jp\0eidsvoll.no\0nesset.no\0tran\xc3\xb8y.no\0" -"nakagusuku.okinawa.jp\0" -"abb\0" -"mo.us\0abc\0" -"kawakita.ishikawa.jp\0" -"hob\xc3\xb8l.no\0realestate\0" -"media\0" -"shunan.yamaguchi.jp\0" -"takko.aomori.jp\0dyn.home-webserver.de\0map.fastlylb.net\0" -"uchiko.ehime.jp\0" -"imageandsound.museum\0" -"mup.gov.pl\0dclk\0" -"minamimaki.nagano.jp\0dnsfor.me\0" -"read-books.org\0" -"blogspot.co.uk\0" -"bristol.museum\0gehirn.ne.jp\0" -"naganohara.gunma.jp\0vik.no\0" -"pvh.br\0daiwa.hiroshima.jp\0aco\0" -"nerima.tokyo.jp\0" -"cupcake.is\0" -"chicago.museum\0" -"\xe7\xa6\x8f\xe5\xb2\xa1.jp\0" -"stalowa-wola.pl\0" -"songdalen.no\0" -"\xd9\xbe\xd8\xa7\xd9\x83\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0" -"sr.gov.pl\0" -"\xe7\xb6\xb2\xe7\xbb\x9c.hk\0bingo\0" -"deloitte\0email\0from-ny.net\0" -"shopware.store\0" -"ads\0" +"merckmsd\0tunes\0blogspot.am\0" +"newport.museum\0bing\0" +"minamidaito.okinawa.jp\0" +"kinghost.net\0" +"rovigo.it\0\xe7\xa7\x8b\xe7\x94\xb0.jp\0" +"mielno.pl\0" +"navuotna.no\0" +"maintenance.aero\0vennesla.no\0" +"missile.museum\0" +"living.museum\0kinder\0" +"av.tr\0" +"zaporizhzhe.ua\0" +"manno.kagawa.jp\0odda.no\0" +"med.ly\0" +"soni.nara.jp\0\xd8\xa8\xd8\xa7\xd8\xb2\xd8\xa7\xd8\xb1\0" +"mizumaki.fukuoka.jp\0vestre-toten.no\0" +"*.nagoya.jp\0contemporaryart.museum\0soccer\0software\0theater\0" +"ofunato.iwate.jp\0hidaka.kochi.jp\0homeftp.net\0" +"\xd2\x9b\xd0\xb0\xd0\xb7\0" +"sth.ac.at\0" +"folldal.no\0paas.beebyte.io\0" +"mup.gov.pl\0" +"hof.no\0" +"moriguchi.osaka.jp\0" +"b\xc3\xa5tsfjord.no\0" +"tsuru.yamanashi.jp\0" +"gose.nara.jp\0lajolla.museum\0lesja.no\0" +"minamiashigara.kanagawa.jp\0" +"v\xc3\xa6r\xc3\xb8y.no\0" +"yamada.iwate.jp\0" +"ota.gunma.jp\0" +"kawahara.tottori.jp\0med.om\0" +"tokai.aichi.jp\0mozilla-iot.org\0" +"tatsuno.nagano.jp\0med.pa\0" +"game\0" +"read\0s3-website.eu-west-3.amazonaws.com\0" +"historisch.museum\0" +"chichibu.saitama.jp\0" +"statebank\0us-west-2.elasticbeanstalk.com\0" +"xz.cn\0dynamisches-dns.de\0" +"skjak.no\0med.pl\0" +"\xe7\xbd\x91\xe7\xbb\x9c.cn\0" +"mangyshlak.su\0" +"vacations\0" +"lombardia.it\0""16-b.it\0" +"dep.no\0" +"atm.pl\0" +"shop.th\0" +"mie.jp\0is-not-certified.com\0" "wzmiuw.gov.pl\0" -"hyogo.jp\0" -"kobierzyce.pl\0aeg\0" -"naturhistorisches.museum\0" -"shimokawa.hokkaido.jp\0" -"trentinsud-tirol.it\0" -"philadelphia.museum\0" -"belau.pw\0" -"altoadige.it\0nagasu.kumamoto.jp\0" -"ikusaka.nagano.jp\0ambulance.museum\0ringerike.no\0" -"ta.it\0" -"uenohara.yamanashi.jp\0grue.no\0" +"yamato.kanagawa.jp\0lyngen.no\0" +"ono.hyogo.jp\0cc.ms.us\0cc.nc.us\0s3.dualstack.eu-west-2.amazonaws.com\0" +"macapa.br\0" +"v\xc3\xa5ler.\xc3\xb8stfold.no\0tiaa\0" +"online.museum\0" +"tecnologia.bo\0" +"no-ip.info\0" +"h.bg\0louvre.museum\0aver\xc3\xb8y.no\0namsos.no\0" +"parti.se\0" +"med.sa\0" +"monmouth.museum\0" +"med.sd\0" +"idrett.no\0" +"ra.it\0kindle\0" +"abarth\0" +"date.hokkaido.jp\0" +"*.frusky.de\0" +"aaa\0" +"page\0" +"parachuting.aero\0" +"bronnoy.no\0worse-than.tv\0shop.ro\0" +"valle-daosta.it\0" +"shisui.chiba.jp\0durham.museum\0*.telebit.xyz\0" +"9guacu.br\0" +"saskatchewan.museum\0online\0" +"info.gu\0" +"lib.ma.us\0abb\0" +"nombre.bo\0abc\0" +"leclerc\0is-a-nascarfan.com\0" +"helsinki.museum\0k12.or.us\0protection\0" +"tawaramoto.nara.jp\0" +"my.id\0freemasonry.museum\0" +"\xe7\xbd\x91\xe7\xbb\x9c.hk\0kitaakita.akita.jp\0os.hordaland.no\0blogspot.com\0" +"info.ht\0\xe6\x9d\xb1\xe4\xba\xac.jp\0" +"info.hu\0ishikawa.okinawa.jp\0kamitonda.wakayama.jp\0beta.bounty-full.com\0" +"0.bg\0trolley.museum\0shop.pl\0" +"ch.it\0rokunohe.aomori.jp\0eu.meteorapp.com\0" +"qld.au\0zgorzelec.pl\0" +"steigen.no\0" +"tarumizu.kagoshima.jp\0cloudns.asia\0" +"chonan.chiba.jp\0aco\0" +"info.et\0s3-website.eu-central-1.amazonaws.com\0" +"gs.nl.no\0" +"is-gone.com\0" +"seljord.no\0" +"info.fj\0urbinopesaro.it\0hirokawa.fukuoka.jp\0" +"edugit.org\0" +"alt.za\0" +"shizukuishi.iwate.jp\0" +"rost.no\0" +"kanoya.kagoshima.jp\0\xe5\xa4\xa7\xe4\xbc\x97\xe6\xb1\xbd\xe8\xbd\xa6\0" +"chikugo.fukuoka.jp\0hongo.hiroshima.jp\0" +"foggia.it\0" +"guide\0" +"\xd1\x83\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0" +"ads\0" +"film.hu\0" +"evenassi.no\0" +"aeg\0free\0" +"toshima.tokyo.jp\0kurobe.toyama.jp\0" +"tajiri.osaka.jp\0" +"fosnes.no\0" +"yosemite.museum\0" +"tynset.no\0" +"naka.ibaraki.jp\0nakano.nagano.jp\0freebox-os.fr\0" +"k12.wa.us\0" +"daigo.ibaraki.jp\0" +"nishiarita.saga.jp\0bardu.no\0info.cx\0" +"bibai.hokkaido.jp\0sannan.hyogo.jp\0sochi.su\0" +"rexroth\0" +"muni.il\0furukawa.miyagi.jp\0reit\0vladikavkaz.ru\0" +"cq.cn\0lutsk.ua\0" +"takamori.nagano.jp\0" "afl\0" -"ichinohe.iwate.jp\0" -"fr.it\0" -"forum.hu\0clock.museum\0" -"*.statics.cloud\0" -"pp.se\0pp.ru\0" -"\xe5\x85\xac\xe7\x9b\x8a\0" -"shika.ishikawa.jp\0" -"tromso.no\0" -"miyoshi.tokushima.jp\0myactivedirectory.com\0" -"pizza\0" -"ikawa.akita.jp\0omitama.ibaraki.jp\0juegos\0" -"daigo.ibaraki.jp\0kunisaki.oita.jp\0" -"dlugoleka.pl\0discourse.team\0" -"kawakami.nara.jp\0" -"rissa.no\0" -"oshino.yamanashi.jp\0wif.gov.pl\0" -"kg.kr\0" -"vagan.no\0" -"war.museum\0" -"pp.ua\0" -"blogspot.co.ke\0" +"nara.jp\0" +"vads\xc3\xb8.no\0" +"info.ec\0northwesternmutual\0g\xc3\xbcnstigbestellen.de\0" +"storfjord.no\0" +"mitsuke.niigata.jp\0supplies\0ms.leg.br\0" +"inagi.tokyo.jp\0fly.dev\0" +"shibetsu.hokkaido.jp\0" +"vb.it\0szczytno.pl\0" +"hidaka.wakayama.jp\0of.fashion\0" +"vladikavkaz.su\0" +"iki.fi\0" +"info.bb\0" +"olayangroup\0" +"rieti.it\0gs.jan-mayen.no\0info.at\0" +"info.au\0czest.pl\0" +"atlanta.museum\0environment.museum\0oya.to\0wblog.id\0" +"haibara.shizuoka.jp\0" +"info.az\0oto.fukuoka.jp\0" +"hirono.iwate.jp\0" +"info.bo\0" +"nishinoshima.shimane.jp\0service.one\0sites.static.land\0" +"adult.ht\0pointto.us\0" +"on-the-web.tv\0" +"kodaira.tokyo.jp\0" +"fr.eu.org\0mt.leg.br\0" +"chippubetsu.hokkaido.jp\0in-dsl.net\0" +"tsukigata.hokkaido.jp\0hospital\0" +"hobol.no\0" "aig\0" -"misaki.okayama.jp\0" -"kawagoe.mie.jp\0warmia.pl\0" -"hikone.shiga.jp\0weibo\0" -"nankoku.kochi.jp\0webhop.net\0" -"friulivegiulia.it\0\xe5\x85\xab\xe5\x8d\xa6\0" -"horokanai.hokkaido.jp\0" -"usr.cloud.muni.cz\0" -"g\xc3\xbcnstigbestellen.de\0" -"togakushi.nagano.jp\0" -"gv.vc\0" -"ug.gov.pl\0" -"midori.gunma.jp\0bus.museum\0nysa.pl\0" -"amami.kagoshima.jp\0" -"zapto.xyz\0" -"takahashi.okayama.jp\0dyndns-home.com\0" -"gniezno.pl\0" -"ol.no\0orskog.no\0" -"pmn.it\0" -"maringa.br\0yoshikawa.saitama.jp\0cc.ny.us\0" -"\xe5\xae\xae\xe5\x9f\x8e.jp\0" -"glas.museum\0" -"nationalheritage.museum\0" -"frosinone.it\0" -"motegi.tochigi.jp\0" -"stj\xc3\xb8rdal.no\0" -"chernigov.ua\0cc.az.us\0" -"discovery.museum\0withgoogle.com\0" -"jobs\0" -"starnberg.museum\0" -"casadelamoneda.museum\0n.se\0" -"trentino-alto-adige.it\0" -"koshigaya.saitama.jp\0eastafrica.museum\0s3.dualstack.sa-east-1.amazonaws.com\0" -"stuff-4-sale.us\0" -"chonan.chiba.jp\0""0e.vc\0" -"journalist.aero\0lasalle\0" -"mobi.gp\0" -"holtalen.no\0" -"blogspot.co.nz\0" -"upow.gov.pl\0" -"support\0" -"ogliastra.it\0" -"higashiura.aichi.jp\0sopot.pl\0" -"lubartow.pl\0" -"anthropology.museum\0gucci\0" -"ikaruga.nara.jp\0" -"ayabe.kyoto.jp\0" -"ferrara.it\0verbania.it\0" -"wphostedmail.com\0" -"vr.it\0" -"rm.it\0lib.mt.us\0lib.nd.us\0" -"childrens.museum\0" -"kasuya.fukuoka.jp\0" -"is.it\0" -"acct.pro\0" -"en.it\0" -"valle-aosta.it\0" -"ascolipiceno.it\0nanmoku.gunma.jp\0" -"furukawa.miyagi.jp\0attorney\0\xe8\xaf\xba\xe5\x9f\xba\xe4\xba\x9a\0" -"targi.pl\0anz\0" -"in-butter.de\0" -"aol\0" -"is-a-doctor.com\0" -"stordal.no\0bbs.tr\0" -"kimobetsu.hokkaido.jp\0" -"16-b.it\0" -"yasuoka.nagano.jp\0" -"apple\0" -"md.ci\0\xe3\x83\x9d\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88\0" -"minamisanriku.miyagi.jp\0" -"otaru.hokkaido.jp\0" -"aogaki.hyogo.jp\0" -"tlon.network\0" -"app\0" -"ginan.gifu.jp\0giessen.museum\0" -"verm\xc3\xb6gensberatung\0" -"lierne.no\0mywire.org\0" -"kashiwa.chiba.jp\0" -"fukuroi.shizuoka.jp\0musashimurayama.tokyo.jp\0tjeldsund.no\0" -"naturalsciences.museum\0" -"jele.host\0" -"schwarz\0ui.nabu.casa\0" -"kamo.kyoto.jp\0" -"bar\0" -"sciences.museum\0bbc\0gdynia.pl\0" -"akita.akita.jp\0wv.us\0" -"atl.jelastic.vps-host.net\0" -"starachowice.pl\0" -"mx.na\0herokussl.com\0" -"sorum.no\0" -"eng.pro\0" -"art\0bbt\0" -"takinoue.hokkaido.jp\0" -"s\xc3\xb8rreisa.no\0" -"iida.nagano.jp\0bcg\0" -"cc.ne.us\0baby\0" -"kobayashi.miyazaki.jp\0medical.museum\0bcn\0forumz.info\0" -"gov.nc.tr\0vercel.app\0" -"w.bg\0" -"atsugi.kanagawa.jp\0\xe5\x85\xac\xe5\x8f\xb8\0" -"2.bg\0" -"hospital\0" -"redirectme.net\0" -"kozagawa.wakayama.jp\0tana.no\0" -"sncf\0" -"det.br\0to.gov.br\0takazaki.miyazaki.jp\0jele.club\0" -"chernivtsi.ua\0" -"gub.uy\0" -"ong.br\0" -"shoparena.pl\0" -"katsuragi.nara.jp\0tokashiki.okinawa.jp\0prudential\0" -"project.museum\0giize.com\0" -"r\xc3\xa1hkker\xc3\xa1vju.no\0" -"vana\0from-pa.com\0" -"studio\0" +"yamanashi.yamanashi.jp\0" +"info.co\0dealer\0ukco.me\0" +"tamano.okayama.jp\0przeworsk.pl\0is-a-painter.com\0" +"iveland.no\0bedzin.pl\0" +"q.bg\0" +"supply\0" +"from-ks.com\0" +"koto.shiga.jp\0" +"niyodogawa.kochi.jp\0soundandvision.museum\0" +"santoandre.br\0\xe4\xbd\x90\xe8\xb3\x80.jp\0" +"kasama.ibaraki.jp\0christiansburg.museum\0" +"minoh.osaka.jp\0" +"gbiz\0gives\0" +"imari.saga.jp\0jaworzno.pl\0" +"futbol\0browsersafetymark.io\0" +"uryu.hokkaido.jp\0" +"arte.bo\0" +"minamiizu.shizuoka.jp\0" +"de.com\0" +"elk.pl\0" +"aircraft.aero\0rent\0" +"\xe5\xaf\x8c\xe5\xb1\xb1.jp\0" +"*.ocs.customer-oci.com\0" +"osoyro.no\0" +"kitaaiki.nagano.jp\0*.otap.co\0" +"\xe6\x94\xbf\xe5\xba\x9c.\xe9\xa6\x99\xe6\xb8\xaf\0" +"per.la\0" +"k12.pa.us\0" +"openair.museum\0hb.cldmail.ru\0" +"bronnoysund.no\0" +"odate.akita.jp\0yuki.ibaraki.jp\0" +"tamayu.shimane.jp\0" +"komagane.nagano.jp\0freedesktop.org\0" +"wales.museum\0kiwi\0" +"app.render.com\0" +"aoste.it\0recipes\0" +"shitara.aichi.jp\0can.museum\0" +"9.bg\0dyndns.ddnss.de\0" +"kochi.jp\0" +"pars\0" +"ch.tc\0idnblogger.com\0" +"hb.cn\0umbria.it\0haram.no\0" +"torino.museum\0custom.metacentrum.cz\0" +"mc.eu.org\0" +"kochi.kochi.jp\0lexus\0" +"\xe5\xb1\xb1\xe6\xa2\xa8.jp\0" +"sc.cn\0" +"zappos\0" +"sakai.ibaraki.jp\0" +"ichikawa.hyogo.jp\0" +"broke-it.net\0" +"per.nf\0flt.cloud.muni.cz\0" +"aizumi.tokushima.jp\0rzeszow.pl\0" +"udono.mie.jp\0" +"k12.ar.us\0today\0" +"wafflecell.com\0" +"tysvar.no\0lib.in.us\0" +"niihama.ehime.jp\0" +"trentinosuedtirol.it\0education\0" +"shioya.tochigi.jp\0k12.mi.us\0theatre\0" +"v\xc3\xa5gs\xc3\xb8y.no\0lohmus.me\0" +"texas.museum\0est.pr\0" +"uri.arpa\0readthedocs.io\0" +"nakatane.kagoshima.jp\0susono.shizuoka.jp\0lt.eu.org\0" +"anz\0" +"togo.aichi.jp\0starachowice.pl\0" +"yaizu.shizuoka.jp\0aol\0" +"kvalsund.no\0" +"epilepsy.museum\0tips\0" +"br\xc3\xb8nn\xc3\xb8y.no\0" +"trentinoaltoadige.it\0" +"fujimino.saitama.jp\0grane.no\0cloudcontrolled.com\0" +"is-a-celticsfan.org\0" +"rest\0" +"ontario.museum\0clothing\0" +"mortgage\0" +"eidsberg.no\0" +"h.se\0app\0" +"detroit.museum\0couchpotatofries.org\0" +"cesena-forli.it\0dattolocal.com\0" +"tozsde.hu\0carraramassa.it\0fredrikstad.no\0" +"vm.bytemark.co.uk\0" +"ringebu.no\0" +"s\xc3\xb8gne.no\0cn.com\0" +"kepno.pl\0" +"shimonoseki.yamaguchi.jp\0" +"ustka.pl\0" +"audio\0docs\0rag-cloud-ch.hosteur.com\0" +"postman-echo.com\0" +"trentins\xc3\xbc""dtirol.it\0kameyama.mie.jp\0bar\0" +"bbc\0" +"lindas.no\0" +"bialystok.pl\0k12.ia.us\0" +"karuizawa.nagano.jp\0cc.ct.us\0" +"ab.ca\0" +"bounceme.net\0" +"ui.nabu.casa\0" +"blogdns.org\0" +"virtuel.museum\0" +"davvenj\xc3\xa1rga.no\0\xd7\xa7\xd7\x95\xd7\x9d\0" +"undersea.museum\0art\0bbt\0sells-for-u.com\0" +"per.sg\0bcg\0" +"z.bg\0" +"gr.it\0" +"goshiki.hyogo.jp\0bcn\0" +"matsushige.tokushima.jp\0carrier.museum\0s\xc3\xb8rreisa.no\0dental\0" +"vik.no\0stada\0" +"info.ve\0" +"onion\0" +"revista.bo\0osaka\0" +"gr.jp\0" +"karacol.su\0" +"gs.sf.no\0andebu.no\0" +"info.vn\0" +"from-me.org\0" +"\xc3\xa5snes.no\0from-nm.com\0" +"is-found.org\0that.win\0" +"sc.ke\0" +"tobetsu.hokkaido.jp\0" +"g\xc3\xa1\xc5\x8bgaviika.no\0molde.no\0" +"lib.mo.us\0" +"hamura.tokyo.jp\0" +"h\xc3\xa6gebostad.no\0accountant\0betainabox.com\0" +"name.hr\0" +"sc.kr\0" +"edeka\0" "bet\0" -"podzone.net\0" -"chichibu.saitama.jp\0" -"carrier.museum\0" -"kawamata.fukushima.jp\0" -"flight.aero\0" -"lib.tn.us\0" -"recreation.aero\0vologda.su\0myfast.space\0" -"gs.hl.no\0" -"akiruno.tokyo.jp\0" -"takashima.shiga.jp\0v\xc3\xa1rgg\xc3\xa1t.no\0" -"stathelle.no\0" -"lt.it\0" -"cloudns.eu\0" -"yoshino.nara.jp\0dyndns-blog.com\0" -"spreadbetting\0" -"cz.it\0tokyo\0" -"chirurgiens-dentistes.fr\0biev\xc3\xa1t.no\0" -"rimini.it\0" -"\xe7\xb5\x84\xe7\xb9\x94.\xe9\xa6\x99\xe6\xb8\xaf\0" -"yomitan.okinawa.jp\0folldal.no\0axa\0blogspot.co.za\0" -"noda.chiba.jp\0" -"salerno.it\0aws\0deal\0" -"pe.ca\0is-slick.com\0" -"mus.mi.us\0" -"shingo.aomori.jp\0nishigo.fukushima.jp\0" -"ikeda.gifu.jp\0elburg.museum\0" -"shimabara.nagasaki.jp\0schlesisches.museum\0viking.museum\0pony.club\0" -"kumakogen.ehime.jp\0antiques.museum\0" -"management\0" -"tj.cn\0bale.museum\0" -"educator.aero\0" -"codespot.com\0" -"ybo.trade\0" -"development.run\0" -"sex.hu\0bid\0" -"rehab\0" -"sk\xc3\xa5nland.no\0from.work\0" -"r\xc3\xb8yken.no\0" -"brand.se\0" -"toshima.tokyo.jp\0" -"oxa.cloud\0" -"arai.shizuoka.jp\0kanuma.tochigi.jp\0\xe0\xb9\x80\xe0\xb8\x99\xe0\xb9\x87\xe0\xb8\x95.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" -"ski.museum\0bio\0" -"tas.au\0" -"val-daosta.it\0" -"ando.nara.jp\0" -"kadoma.osaka.jp\0" -"whoswho\0" -"\xd9\x82\xd8\xb7\xd8\xb1\0group\0" -"biz\0chungbuk.kr\0staging.onred.one\0" -"mishima.fukushima.jp\0" -"pictures\0" -"logoip.de\0" -"hakusan.ishikawa.jp\0" -"nango.fukushima.jp\0nh.us\0cloudns.in\0" -"planetarium.museum\0" -"luxembourg.museum\0servecounterstrike.com\0" -"ookuwa.nagano.jp\0" -"yamaga.kumamoto.jp\0" -"workisboring.com\0" -"hisayama.fukuoka.jp\0shimane.shimane.jp\0" -"ybo.party\0" -"tecnologia.bo\0" -"dyn-ip24.de\0" -"ebino.miyazaki.jp\0is-a-photographer.com\0ras.ru\0" -"indie.porn\0" -"nirasaki.yamanashi.jp\0" -"indiana.museum\0" -"taku.saga.jp\0cc.ma.us\0yodobashi\0" -"faith\0hdfcbank\0" -"cloudns.cc\0for-our.info\0" -"noshiro.akita.jp\0hostedpi.com\0" -"isahaya.nagasaki.jp\0" -"shibukawa.gunma.jp\0" -"c.bg\0nozawaonsen.nagano.jp\0" -"my-firewall.org\0" -"yakumo.hokkaido.jp\0" -"georgia.museum\0" -"vallee-d-aoste.it\0channelsdvr.net\0" -"house\0" -"moonscale.net\0" -"experts-comptables.fr\0" -"malselv.no\0" -"miyazaki.jp\0" -"ikata.ehime.jp\0bahccavuotna.no\0" -"hashima.gifu.jp\0*.platformsh.site\0" -"sumoto.hyogo.jp\0shimoichi.nara.jp\0" -"namerikawa.toyama.jp\0" -"for-more.biz\0" -"trondheim.no\0" -"bms\0jcloud.kz\0" -"shinagawa.tokyo.jp\0s3-website.us-east-2.amazonaws.com\0" -"not.br\0" -"bmw\0" -"games.hu\0band\0" -"tatamotors\0" -"mihama.chiba.jp\0zoology.museum\0" -"higashiyama.kyoto.jp\0labour.museum\0" -"discount\0" -"\xe6\x95\x99\xe8\x82\xb2.hk\0civilisation.museum\0fiat\0" -"bank\0" -"s3-ap-northeast-2.amazonaws.com\0" -"u2.xnbay.com\0" -"umbria.it\0takasaki.gunma.jp\0" -"www.ro\0hockey\0" -"zgora.pl\0" -"pe.it\0" -"arita.saga.jp\0" -"kamikitayama.nara.jp\0" -"cherkassy.ua\0" -"lebtimnetz.de\0" -"bom\0" +"place\0from-ky.com\0" +"huissier-justice.fr\0takikawa.hokkaido.jp\0" +"movimiento.bo\0hagi.yamaguchi.jp\0" +"info.tn\0" +"hachijo.tokyo.jp\0kaufen\0from-ct.com\0" +"cz.it\0" +"\xe5\xa5\x88\xe8\x89\xaf.jp\0" +"higashiyamato.tokyo.jp\0info.tr\0indie.porn\0" +"daegu.kr\0schule\0" +"info.tt\0goldpoint\0" +"sch.ae\0hk.cn\0vpnplus.to\0" +"serveftp.net\0" +"name.et\0kanonji.kagawa.jp\0sc.ls\0" +"countryestate.museum\0eu-west-1.elasticbeanstalk.com\0" +"sardinia.it\0nowaruda.pl\0info.tz\0" +"name.fj\0yono.saitama.jp\0" +"omuta.fukuoka.jp\0muenchen.museum\0" +"cloudfunctions.net\0" +"matsumae.hokkaido.jp\0apps.lair.io\0" +"valer.ostfold.no\0axa\0" +"space.museum\0aws\0" +"*.futurecms.at\0" +"fortworth.museum\0\xd8\xa7\xd8\xb1\xd8\xa7\xd9\x85\xd9\x83\xd9\x88\0" +"nagano.nagano.jp\0" +"\xc3\xb8ystre-slidre.no\0" +"gouv.fr\0l\xc3\xa4ns.museum\0info.ro\0fastvps.host\0" +"aizuwakamatsu.fukushima.jp\0riodejaneiro.museum\0" +"ashibetsu.hokkaido.jp\0info.sd\0dynu.net\0" +"sasebo.nagasaki.jp\0pantheonsite.io\0" +"asuke.aichi.jp\0yonabaru.okinawa.jp\0cc.gu.us\0lib.ut.us\0bid\0" +"seaport.museum\0\xd0\xb1\xd0\xb5\xd0\xbb\0dyndns-at-home.com\0" +"name.cy\0" +"ocelot.mythic-beasts.com\0" +"chuo.osaka.jp\0" +"bio\0" +"mobi\0" +"run.app\0" +"*.webhare.dev\0" +"name.eg\0lc.it\0\xe6\xb8\xb8\xe6\x88\x8f\0" +"info.pk\0no.com\0" +"s\xc3\xa1lat.no\0info.pl\0" +"2ix.at\0" +"biz\0railway.museum\0shoparena.pl\0" +"gouv.ht\0" +"info.pr\0ddnsfree.com\0" +"vt.it\0" +"enf.br\0from-nh.com\0" +"in-vpn.de\0" +"tanabe.kyoto.jp\0aktyubinsk.su\0" +"rawa-maz.pl\0boutique\0" +"campinas.br\0" +"moda\0" +"name.az\0" +"tickets\0" +"fujiidera.osaka.jp\0" +"bip.sh\0" +"info.na\0""2ix.ch\0" +"gunma.jp\0" +"jelenia-gora.pl\0" +"shimada.shizuoka.jp\0" +"okutama.tokyo.jp\0info.mv\0info.nf\0jele.cloud\0" +"gouv.bj\0" +"info.ni\0" +"from-md.com\0" +"2ix.de\0" +"production.aero\0" +"chuo.yamanashi.jp\0" +"info.nr\0" +"sp.gov.br\0" +"leg.br\0" +"gouv.ci\0" +"togura.nagano.jp\0bc.platform.sh\0" +"sekd1.beebyteapp.io\0" +"susaki.kochi.jp\0palmsprings.museum\0" +"altoadige.it\0higashinaruse.akita.jp\0" +"consulting.aero\0mk.eu.org\0" +"services.aero\0" +"columbia.museum\0" +"info.la\0s3.eu-west-2.amazonaws.com\0" +"tadotsu.kagawa.jp\0" +"hayashima.okayama.jp\0" +"kaas.gg\0" +"higashiagatsuma.gunma.jp\0bms\0" +"firenze.it\0" +"pccw\0" +"goto.nagasaki.jp\0" +"bmw\0wedeploy.sh\0" +"hasura.app\0" +"rishirifuji.hokkaido.jp\0" +"info.ls\0" +"journal.aero\0sch.id\0" +"kunohe.iwate.jp\0" +"id.au\0press.museum\0" +"sc.ug\0" +"kawakami.nara.jp\0" +"sc.tz\0" +"satsumasendai.kagoshima.jp\0" +"realestate.pl\0bom\0" +"sch.ir\0" "boo\0" -"stackhero-network.com\0" -"swatch\0" -"tsuwano.shimane.jp\0" +"serveirc.com\0" +"sc.us\0" "bot\0" -"volkenkunde.museum\0" -"spydeberg.no\0" -"bialowieza.pl\0" -"box\0" -"satx.museum\0" -"sex.pl\0" -"macerata.it\0nesseby.no\0" -"kumamoto.kumamoto.jp\0cab\0" -"finland.museum\0" -"!city.nagoya.jp\0pe.kr\0" -"arab\0" -"eisenbahn.museum\0" -"jl.cn\0fido\0" -"jondal.no\0cal\0" -"cam\0s3-website-us-east-1.amazonaws.com\0" -"virtualuser.de\0" -"wildlife.museum\0lpusercontent.com\0" -"cba\0" -"lt.ua\0car\0" -"onna.okinawa.jp\0" -"cat\0" -"fr\xc3\xa6na.no\0mobi.tt\0" -"niimi.okayama.jp\0haugesund.no\0h\xc3\xa6gebostad.no\0" -"vibovalentia.it\0" -"aga.niigata.jp\0" -"nt.edu.au\0mobi.tz\0cbn\0" -"chuo.osaka.jp\0" -"nishi.osaka.jp\0" -"alpha-myqnapcloud.com\0" -"laquila.it\0*.webhare.dev\0" -"kommune.no\0cbs\0dell\0bci.dnstrace.pro\0" -"md.us\0ltda\0" -"scjohnson\0doomdns.com\0" -"tsuyama.okayama.jp\0" -"takagi.nagano.jp\0" -"dontexist.net\0" -"\xe3\x82\xa2\xe3\x83\x9e\xe3\x82\xbe\xe3\x83\xb3\0" -"tienda\0" -"h\xc3\xa5.no\0" -"kvanangen.no\0" -"toga.toyama.jp\0rnrt.tn\0cc.or.us\0" -"fukusaki.hyogo.jp\0" -"mex.com\0" -"64-b.it\0" -"date.fukushima.jp\0\xe5\x95\x86\xe5\xba\x97\0" -"karmoy.no\0" -"hasami.nagasaki.jp\0" -"zama.kanagawa.jp\0" -"gentlentapis.com\0" -"samnanger.no\0w.se\0red.sv\0staples\0" -"*.backyards.banzaicloud.io\0" -"nagara.chiba.jp\0" -"andebu.no\0" -"kurogi.fukuoka.jp\0atami.shizuoka.jp\0" -"southwest.museum\0" -"trentinos\xc3\xbc""dtirol.it\0" +"vic.gov.au\0" +"motegi.tochigi.jp\0box\0" +"so.gov.pl\0" +"sch.jo\0" +"users.scale.virtualcloud.com.br\0" +"ot.it\0pd.it\0info.ke\0" +"cab\0from-ok.com\0" +"misato.saitama.jp\0" +"info.ki\0" +"is-a-therapist.com\0" +"kuchinotsu.nagasaki.jp\0muosat.no\0crimea.ua\0" +"lu.eu.org\0me.eu.org\0" +"rikubetsu.hokkaido.jp\0" +"kunst.museum\0" +"nowruz\0" +"kawai.nara.jp\0cal\0" +"cam\0demo.datacenter.fi\0" +"beauxarts.museum\0quebec.museum\0" +"gjovik.no\0cba\0" +"car\0" +"utazas.hu\0ehime.jp\0ricoh\0" +"cat\0kawamata.fukushima.jp\0" +"vicenza.it\0kayabe.hokkaido.jp\0schokokeks.net\0" +"sch.lk\0cloudns.eu\0clan.rip\0" +"k12.ms.us\0k12.nc.us\0" +"cbn\0" +"farm.museum\0black\0" +"magazine.aero\0davvenjarga.no\0zagan.pl\0cbs\0" +"ok.us\0geekgalaxy.com\0" +"sch.ly\0svelvik.no\0" +"tomiya.miyagi.jp\0" +"naoshima.kagawa.jp\0lv.eu.org\0" +"\xd8\xa7\xd8\xa8\xd9\x88\xd8\xb8\xd8\xa8\xd9\x8a\0" +"s\xc3\xb8ndre-land.no\0barcelona\0" +"trust.museum\0lifeinsurance\0" +"steam.museum\0\xe3\x82\xa2\xe3\x83\x9e\xe3\x82\xbe\xe3\x83\xb3\0" +"gsj.bz\0" +"zao.miyagi.jp\0fujitsu\0" +"civilization.museum\0" +"village.museum\0tennis\0whoswho\0" +"ecn.br\0sch.ng\0*.code.run\0" +"armenia.su\0" +"z.se\0jozi.biz\0" +"sagamihara.kanagawa.jp\0" +"makinohara.shizuoka.jp\0automotive.museum\0ac.leg.br\0" +"field.museum\0dynamic-dns.info\0" +"stavern.no\0" +"ks.ua\0" +"habmer.no\0" +"orkanger.no\0" +"tsuiki.fukuoka.jp\0" +"hannan.osaka.jp\0" +"medical.museum\0*.ocp.customer-oci.com\0" +"photos\0" +"adobeaemcloud.net\0" "ceo\0" -"student.aero\0" +"cloudns.in\0" "cfa\0" -"c.la\0" -"sondrio.it\0cfd\0" -"ozu.ehime.jp\0" -"consultant.aero\0" -"steinkjer.no\0latino\0" +"honai.ehime.jp\0bytom.pl\0" +"cfd\0app.os.stg.fedoraproject.org\0" +"ks.us\0" +"sanagochi.tokushima.jp\0" +"urayasu.chiba.jp\0tmall\0" +"gujo.gifu.jp\0" "buy\0" -"toyosato.shiga.jp\0" -"hasama.oita.jp\0" -"fukuyama.hiroshima.jp\0minamiashigara.kanagawa.jp\0kashiba.nara.jp\0" -"\xe5\xb2\xa1\xe5\xb1\xb1.jp\0" -"lig.it\0" -"cloudns.us\0" -"choshi.chiba.jp\0mobi.na\0saotome.st\0verm\xc3\xb6gensberater\0" -"olayan\0" -"mobi.ng\0" -"omura.nagasaki.jp\0members.linode.com\0" -"sakuragawa.ibaraki.jp\0bokn.no\0" -"tobishima.aichi.jp\0kawagoe.saitama.jp\0lindas.no\0" -"fg.it\0lib.az.us\0from-nj.com\0" -"trade\0lcube-server.de\0" -"ar.it\0wolomin.pl\0" -"unj\xc3\xa1rga.no\0" -"udine.it\0s3.dualstack.eu-central-1.amazonaws.com\0" -"kafjord.no\0bss.design\0" -"film\0" -"ginoza.okinawa.jp\0" -"jampa.br\0napoli.it\0" -"channel\0" -"averoy.no\0" -"download\0\xd0\xbc\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0\0" -"desi\0" -"makinohara.shizuoka.jp\0" -"fitness\0" -"sayo.hyogo.jp\0aridagawa.wakayama.jp\0" -"bzh\0" -"academia.bo\0tonosho.kagawa.jp\0" -"9guacu.br\0" -"college\0pdns.page\0" -"sango.nara.jp\0" -"the.br\0sohu\0" -"ddr.museum\0from-sc.com\0\xd1\x8f.\xd1\x80\xd1\x83\xd1\x81\0" -"bayern\0" -"spjelkavik.no\0" -"hitachinaka.ibaraki.jp\0c.cdn77.org\0en-root.fr\0" -"shangrila\0" -"\xe5\xb3\xb6\xe6\xa0\xb9.jp\0" -"myds.me\0" -"saitama.jp\0" -"komatsu\0dsmynas.com\0" -"surgery\0" -"jprs\0" -"maritimo.museum\0sf.no\0" -"ashiya.fukuoka.jp\0minamiminowa.nagano.jp\0" -"tuscany.it\0venezia.it\0cc.sc.us\0" -"pa.leg.br\0" -"kariya.aichi.jp\0miyawaka.fukuoka.jp\0mobi.ke\0" -"from-ma.com\0" -"marylhurst.museum\0" -"s3.dualstack.eu-west-2.amazonaws.com\0" -"dyndns1.de\0" -"off.ai\0" -"lugansk.ua\0k12.ne.us\0" -"c.se\0" -"!city.yokohama.jp\0" -"edeka\0is-a-rockstar.com\0" -"fujishiro.ibaraki.jp\0" -"ainan.ehime.jp\0s3-external-1.amazonaws.com\0" -"hirokawa.fukuoka.jp\0takino.hyogo.jp\0sytes.net\0" -"shiriuchi.hokkaido.jp\0dyn.cosidns.de\0" +"booking\0" +"airline.aero\0overhalla.no\0unicom\0" +"nordkapp.no\0sch.qa\0" +"okayama.jp\0vt.us\0" +"id.ir\0" +"from-nv.com\0ca.reclaim.cloud\0" +"lapy.pl\0grocery\0cloudns.cc\0" +"tamamura.gunma.jp\0" +"on-aptible.com\0" +"sumita.iwate.jp\0machida.tokyo.jp\0from-ga.com\0" +"e4.cz\0" +"te.it\0tranby.no\0" +"izumi.kagoshima.jp\0name.vn\0" +"b\xc3\xa1hccavuotna.no\0" +"uonuma.niigata.jp\0rennes\xc3\xb8y.no\0" +"bandai.fukushima.jp\0" +"wedeploy.me\0" +"repair\0cn-northwest-1.eb.amazonaws.com.cn\0*.awdev.ca\0" +"pacific.museum\0" +"tempurl.host\0noip.us\0" +"exchange.aero\0sch.sa\0\xe7\xb5\x84\xe7\xb9\x94.tw\0" +"misconfused.org\0" +"shiroishi.miyagi.jp\0capetown\0for.men\0" +"gjerdrum.no\0" +"barclays\0" +"asahi.mie.jp\0" +"a.prod.fastly.net\0" +"kutno.pl\0chernivtsi.ua\0" +"jfk.museum\0" +"name.tj\0" +"sch.so\0" +"dupont\0" +"web.app\0" +"sch.ss\0shoes\0ar.com\0" +"katsuyama.fukui.jp\0" +"name.tr\0" +"dolls.museum\0name.tt\0" +"id.lv\0" +"kazuno.akita.jp\0" +"numazu.shizuoka.jp\0id.ly\0bzh\0" +"sr.gov.pl\0tec.mi.us\0" +"dgca.aero\0at-band-camp.net\0" +"blog\0" +"siljan.no\0" +"es.eu.org\0" +"logoip.de\0" +"onagawa.miyagi.jp\0" +"dellogliastra.it\0kr.eu.org\0" +"mango\0" +"oirm.gov.pl\0" +"andriatranibarletta.it\0" +"glas.museum\0" +"namegata.ibaraki.jp\0bieszczady.pl\0eu.ax\0" +"press.cy\0lon.wafaicloud.com\0" +"moto\0\xe6\x9c\xba\xe6\x9e\x84\0" +"biella.it\0k12.nv.us\0" +"yamatotakada.nara.jp\0rissa.no\0" +"lecco.it\0kiev.ua\0" +"soo.kagoshima.jp\0" +"s3-ap-south-1.amazonaws.com\0" +"higashine.yamagata.jp\0" +"\xe5\x95\x86\xe6\xa0\x87\0nym.by\0" +"nym.bz\0" +"earth\0" +"at.it\0" +"sasayama.hyogo.jp\0" +"gouv.sn\0" +"*.kitakyushu.jp\0" "hirara.okinawa.jp\0" -"from-vt.com\0" -"minamioguni.kumamoto.jp\0pb.leg.br\0" -"m\xc4\x81ori.nz\0" -"transporte.bo\0fie.ee\0askvoll.no\0" -"florist\0" -"army\0" -"\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\xe0\xa4\xae\xe0\xa5\x8d\0" -"fire\0" -"yaotsu.gifu.jp\0" -"ichihara.chiba.jp\0" -"shirakawa.gifu.jp\0" -"\xe7\x82\xb9\xe7\x9c\x8b\0is-a-blogger.com\0" -"carraramassa.it\0" -"tomari.hokkaido.jp\0" -"m\xc3\xa1latvuopmi.no\0" -"profesional.bo\0" -"co.ae\0com\0fudai.iwate.jp\0" -"cyber.museum\0lib.ma.us\0" -"co.ag\0okazaki.aichi.jp\0" -"br\xc3\xb8nn\xc3\xb8y.no\0" -"oi.kanagawa.jp\0minobu.yamanashi.jp\0lib.id.us\0cpa\0cloudapps.digital\0" -"fish\0" -"fet.no\0song\0" -"\xc3\xb8ygarden.no\0melbourne\0" -"co.am\0arpa\0auto.pl\0" -"h\xc3\xa4kkinen.fi\0" -"co.ao\0" -"motoyama.kochi.jp\0flanders.museum\0" -"co.bb\0" -"co.at\0is-a-painter.com\0" -"yamazoe.nara.jp\0" -"co.bi\0" -"barreau.bj\0hanyu.saitama.jp\0" -"dad\0iamallama.com\0" -"tanohata.iwate.jp\0sony\0" -"co.bn\0" -"louvre.museum\0badaddja.no\0" -"*.ex.ortsinfo.at\0" -"co.ca\0in-berlin.de\0" -"myftp.biz\0" -"nachikatsuura.wakayama.jp\0" -"lohmus.me\0" -"co.bw\0tempioolbia.it\0m\xc3\xa5lselv.no\0" -"co.ci\0neat-url.com\0" -"co.cl\0" -"co.cm\0" -"rv.ua\0" -"showa.gunma.jp\0s3-website-ap-northeast-1.amazonaws.com\0" -"cloudns.pw\0podzone.org\0" -"day\0" -"co.cr\0maori.nz\0ubank\0" -"kurashiki.okayama.jp\0" -"cuneo.it\0barsy.club\0" -"friuliv-giulia.it\0urawa.saitama.jp\0myshopify.com\0" -"yokoshibahikari.chiba.jp\0" -"matsubara.osaka.jp\0" -"\xe9\xb3\xa5\xe5\x8f\x96.jp\0co.cz\0" -"crs\0csc\0co.dk\0" -"lug.org.uk\0" -"museet.museum\0" -"kuroishi.aomori.jp\0homesecuritymac.com\0" -"ouda.nara.jp\0" -"\xe5\xa4\xa7\xe4\xbc\x97\xe6\xb1\xbd\xe8\xbd\xa6\0uy.com\0" -"manno.kagawa.jp\0" -"ar.us\0" -"asda\0" -"cc.ut.us\0" -"arte\0" -"yawatahama.ehime.jp\0" -"vallee-aoste.it\0s3-website.ap-south-1.amazonaws.com\0" -"aseral.no\0" -"barclaycard\0dds\0" -"l.bg\0wpmucdn.com\0" -"xx.gl\0" -"meet\0" -"k12.mi.us\0" -"getmyip.com\0" -"barlettatraniandria.it\0moriya.ibaraki.jp\0" -"workshop.museum\0eaton.mi.us\0from-ut.com\0" -"k12.co.us\0sinaapp.com\0" -"co.gg\0" -"tarumizu.kagoshima.jp\0osaki.miyagi.jp\0" -"travel.pl\0" -"co.gl\0basketball\0" -"bbva\0" -"kotohira.kagawa.jp\0dev\0" -"suginami.tokyo.jp\0valley.museum\0" -"kainan.tokushima.jp\0" -"fussa.tokyo.jp\0" -"1kapp.com\0" -"ntr.br\0" -"co.gy\0" -"tadotsu.kagawa.jp\0no-ip.biz\0noho.st\0" -"ovre-eiker.no\0construction\0deno.dev\0" -"minamiechizen.fukui.jp\0" +"sor-varanger.no\0" +"lu.it\0me.it\0" +"name.qa\0" +"chofu.tokyo.jp\0name.pr\0builders\0" +"kannami.shizuoka.jp\0" +"suzu.ishikawa.jp\0bar2.net\0" +"frontdoor\0target\0" +"\xd1\x81\xd0\xb0\xd0\xb9\xd1\x82\0" +"shiki.saitama.jp\0" +"nym.ec\0" +"abiko.chiba.jp\0" +"laakesvuemie.no\0" +"manaus.br\0me.ke\0" +"name.na\0" +"trieste.it\0folkebibl.no\0" +"cust.testing.thingdust.io\0" +"kanzaki.saga.jp\0ch.trendhosting.cloud\0" +"caserta.it\0rikuzentakata.iwate.jp\0himeshima.oita.jp\0fukaya.saitama.jp\0name.mv\0" +"name.ng\0repair.men\0" +"name.my\0lorenskog.no\0ak.us\0" +"doomdns.org\0" +"lugs.org.uk\0" +"com\0" +"florida.museum\0nore-og-uvdal.no\0" +"coldwar.museum\0router.management\0" +"cpa\0" +"freeboxos.com\0" +"lenvik.no\0at.md\0" +"livinghistory.museum\0" +"ug.gov.pl\0info.zm\0sch.zm\0blue\0" +"website\0s3.dualstack.eu-central-1.amazonaws.com\0" +"hanamaki.iwate.jp\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xd8\xa9\0" +"hida.gifu.jp\0kosei.shiga.jp\0" +"im.it\0" +"marumori.miyagi.jp\0" +"shintoku.hokkaido.jp\0tjeldsund.no\0" +"dad\0hosting-cluster.nl\0" +"barsy.info\0dynserv.org\0" +"ikawa.akita.jp\0" +"tn.it\0pages.dev\0" +"nym.gr\0" +"ltd.co.im\0" +"webhop.me\0" +"shinjo.nara.jp\0" +"donna.no\0" +"health\0" +"kashiwara.osaka.jp\0nym.gy\0" +"nym.hk\0" +"cloudns.us\0" +"miyazaki.jp\0brasilia.me\0" +"modern.museum\0" +"takaoka.toyama.jp\0te.ua\0day\0logoip.com\0" +"name.mk\0" +"berlin\0" +"nym.ie\0" +"lib.or.us\0" +"id.us\0" +"crs\0csc\0s3-website-us-west-1.amazonaws.com\0reserve-online.net\0" +"maceio.br\0" +"tcm.museum\0" +"dyndns-home.com\0" +"mjondalen.no\0noip.me\0" +"agano.niigata.jp\0" +"name.jo\0" +"fe.it\0utsira.no\0cc.wy.us\0" +"woodside\0" +"osaka.jp\0shiroi.chiba.jp\0nakanojo.gunma.jp\0" +"pv.it\0" +"kashiwa.chiba.jp\0kiyose.tokyo.jp\0" +"bingo\0" +"tw.cn\0wedeploy.io\0" +"inf.br\0" +"ardal.no\0" +"dds\0" +"friuliv-giulia.it\0gouv.km\0" +"\xe1\x83\x92\xe1\x83\x94\0" +"aquarium.museum\0vote\0" +"nym.la\0" +"pstmn.io\0" +"nym.lc\0" +"nym.li\0" +"inf.cu\0aramco\0voto\0nym.kz\0" +"munakata.fukuoka.jp\0r\xc3\xa5""de.no\0bd.se\0dev\0" +"alessandria.it\0" +"cuisinella\0al.leg.br\0" +"pubtls.org\0" +"blogdns.net\0nym.lt\0playstation-cloud.com\0" +"sogne.no\0nym.lu\0nym.me\0" +"wakayama.wakayama.jp\0" +"carboniaiglesias.it\0" +"fi.eu.org\0" +"fuefuki.yamanashi.jp\0gouv.ml\0" +"association.aero\0nym.mn\0" +"mitou.yamaguchi.jp\0" +"me.so\0" +"mn.it\0" +"me.ss\0\xd8\xa8\xda\xbe\xd8\xa7\xd8\xb1\xd8\xaa\0me.tc\0" +"kunstunddesign.museum\0nym.mx\0" +"science.museum\0dunlop\0" +"collection.museum\0" +"\xc3\xa5mli.no\0" +"yawara.ibaraki.jp\0*.stolos.io\0" +"lancia\0" +"trentin-sud-tirol.it\0kamishihoro.hokkaido.jp\0" +"dhl\0" +"labour.museum\0makeup\0" +"search\0" +"shimamaki.hokkaido.jp\0jondal.no\0" +"sweden.museum\0nym.nz\0" +"kozagawa.wakayama.jp\0me.tz\0" +"me.uk\0" +"risor.no\0" +"at.vg\0" +"dh.bytemark.co.uk\0" +"riobranco.br\0servecounterstrike.com\0" +"kawakita.ishikawa.jp\0yamanobe.yamagata.jp\0me.us\0*.linodeobjects.com\0nym.pe\0" +"plc.co.im\0" +"passenger-association.aero\0montreal.museum\0" +"usuki.oita.jp\0" +"kamogawa.chiba.jp\0secure\0" +"wv.us\0" +"nordeste-idc.saveincloud.net\0" +"user.party.eus\0" +"diy\0" +"nym.pt\0" +"fr\xc3\xa6na.no\0for.mom\0" +"to.gov.br\0me.vu\0" +"emiliaromagna.it\0" +"suldal.no\0" +"juif.museum\0" +"kamimine.saga.jp\0kharkov.ua\0" +"serveftp.org\0" +"siteleaf.net\0" +"miki.hyogo.jp\0kawagoe.mie.jp\0lans.museum\0" +"s3-website-ap-southeast-1.amazonaws.com\0" +"msk.ru\0" +"hammerfest.no\0\xd0\xb1\xd0\xb3\0" +"sciencesnaturelles.museum\0" +"\xe7\xb5\x84\xe7\xb9\x94.hk\0boxfuse.io\0dopaas.com\0pages.torproject.net\0" +"hasama.oita.jp\0bielawa.pl\0associates\0" +"enna.it\0" +"valled-aosta.it\0k12.gu.us\0" +"higashiyodogawa.osaka.jp\0nym.ro\0" +"mil.ac\0myftp.org\0" +"bologna.it\0kita.kyoto.jp\0" +"mil.ae\0" +"msk.su\0" +"hanawa.fukushima.jp\0" +"b\xc3\xb8.telemark.no\0" +"judaica.museum\0eidsvoll.no\0cookingchannel\0" +"sakura\0" +"mil.al\0ong.br\0" +"asti.it\0bremanger.no\0" +"malbork.pl\0solar\0nym.sk\0enterprisecloud.nu\0" +"nishigo.fukushima.jp\0saito.miyazaki.jp\0" +"mil.ba\0" +"mil.ar\0tn.us\0" +"matsuno.ehime.jp\0s3-website.eu-west-2.amazonaws.com\0cloudns.pw\0lug.org.uk\0" +"okuma.fukushima.jp\0" +"f.bg\0" +"nym.su\0" +"mil.az\0app.banzaicloud.io\0" +"nym.sx\0" +"futaba.fukushima.jp\0castres.museum\0" +"mil.bo\0kashiwazaki.niigata.jp\0" +"fund\0" +"mil.br\0chigasaki.kanagawa.jp\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xdb\x83\0" +"cesenaforli.it\0tadaoka.osaka.jp\0" +"embetsu.hokkaido.jp\0" +"mad.museum\0\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0wpmudev.host\0" +"microlight.aero\0mil.by\0" +"nym.tw\0" +"dnp\0" +"mil.cl\0obama.fukui.jp\0otsu.shiga.jp\0press.se\0" +"lib.ar.us\0" +"mil.cn\0myhome-server.de\0" +"mil.co\0" +"malselv.no\0gent\0linkyard-cloud.ch\0" +"karasjohka.no\0dog\0xx.gl\0" +"inf.mk\0" +"town.museum\0rad\xc3\xb8y.no\0bharti\0" +"s\xc3\xb8r-aurdal.no\0" +"is-a-bulls-fan.com\0" +"deloitte\0gg.ax\0" +"valle-aosta.it\0rich\0" +"krasnodar.su\0" +"\xe4\xba\xac\xe9\x83\xbd.jp\0" +"como.it\0" +"laquila.it\0musashimurayama.tokyo.jp\0" +"mil.do\0tatebayashi.gunma.jp\0dot\0express\0" +"bialowieza.pl\0" +"mizunami.gifu.jp\0" +"mil.ec\0yoro.gifu.jp\0sanok.pl\0" +"toyota.aichi.jp\0hiranai.aomori.jp\0" +"mil.eg\0higashikawa.hokkaido.jp\0is-an-artist.com\0" +"boomla.net\0" +"anpachi.gifu.jp\0" +"trading\0" +"ginowan.okinawa.jp\0\xe4\xbd\x9b\xe5\xb1\xb1\0" +"\xd0\xb5\xd1\x8e\0dyndns.info\0" +"from-ca.com\0" +"co.ae\0logistics.aero\0komatsushima.tokushima.jp\0" +"co.ag\0" +"higashi.okinawa.jp\0" +"mil.fj\0feste-ip.net\0" +"sowa.ibaraki.jp\0" +"rentals\0" +"co.am\0dreamhosters.com\0" +"co.ao\0szkola.pl\0eat\0" +"southwest.museum\0is-an-accountant.com\0" +"chikusei.ibaraki.jp\0gotemba.shizuoka.jp\0dynvpn.de\0" +"co.bb\0gs.svalbard.no\0edu.scot\0" +"co.at\0" +"mil.ge\0" }; static const quint16 tldChunkCount = 2; -static const quint32 tldChunks[] = {65534, 107981}; +static const quint32 tldChunks[] = {65530, 108837}; QT_END_NAMESPACE diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -622,9 +622,14 @@ Q_Q(QConcatenateTablesProxyModel); Q_ASSERT(from.isValid()); Q_ASSERT(to.isValid()); + if (from.column() >= m_columnCount) + return; + QModelIndex adjustedTo = to; + if (to.column() >= m_columnCount) + adjustedTo = to.siblingAtColumn(m_columnCount - 1); const QModelIndex myFrom = q->mapFromSource(from); Q_ASSERT(q->checkIndex(myFrom, QAbstractItemModel::CheckIndexOption::IndexIsValid)); - const QModelIndex myTo = q->mapFromSource(to); + const QModelIndex myTo = q->mapFromSource(adjustedTo); Q_ASSERT(q->checkIndex(myTo, QAbstractItemModel::CheckIndexOption::IndexIsValid)); emit q->dataChanged(myFrom, myTo, roles); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/itemmodels/qsortfilterproxymodel.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/itemmodels/qsortfilterproxymodel.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/itemmodels/qsortfilterproxymodel.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/itemmodels/qsortfilterproxymodel.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -307,6 +307,8 @@ QHash<QModelIndex, Mapping *>::const_iterator create_mapping( const QModelIndex &source_parent) const; + QHash<QModelIndex, Mapping *>::const_iterator create_mapping_recursive( + const QModelIndex &source_parent) const; QModelIndex proxy_to_source(const QModelIndex &proxyIndex) const; QModelIndex source_to_proxy(const QModelIndex &sourceIndex) const; bool can_create_mapping(const QModelIndex &source_parent) const; @@ -533,6 +535,29 @@ return it; } +// Go up the tree, creating mappings, unless of course the parent is filtered out +IndexMap::const_iterator QSortFilterProxyModelPrivate::create_mapping_recursive(const QModelIndex &source_parent) const +{ + if (source_parent.isValid()) { + const QModelIndex source_grand_parent = source_parent.parent(); + IndexMap::const_iterator it = source_index_mapping.constFind(source_grand_parent); + IndexMap::const_iterator end = source_index_mapping.constEnd(); + if (it == end) { + it = create_mapping_recursive(source_grand_parent); + end = source_index_mapping.constEnd(); + if (it == end) + return end; + } + Mapping *gm = it.value(); + if (gm->proxy_rows.at(source_parent.row()) == -1 || + gm->proxy_columns.at(source_parent.column()) == -1) { + // Can't do, parent is filtered + return end; + } + } + return create_mapping(source_parent); +} + QModelIndex QSortFilterProxyModelPrivate::proxy_to_source(const QModelIndex &proxy_index) const { if (!proxy_index.isValid()) @@ -751,8 +776,10 @@ { Q_Q(QSortFilterProxyModel); QModelIndex proxy_parent = q->mapFromSource(source_parent); - if (!proxy_parent.isValid() && source_parent.isValid()) + if (!proxy_parent.isValid() && source_parent.isValid()) { + proxy_to_source.clear(); return; // nothing to do (already removed) + } const auto proxy_intervals = proxy_intervals_for_source_items( source_to_proxy, source_items); @@ -1404,11 +1431,20 @@ const QModelIndex &source_bottom_right = data_changed.bottomRight; const QModelIndex source_parent = source_top_left.parent(); + bool change_in_unmapped_parent = false; IndexMap::const_iterator it = source_index_mapping.constFind(source_parent); if (it == source_index_mapping.constEnd()) { - // Don't care, since we don't have mapping for this index - continue; + // We don't have mapping for this index, so we cannot know how things + // changed (in case the change affects filtering) in order to forward + // the change correctly. + // But we can at least forward the signal "as is", if the row isn't + // filtered out, this is better than nothing. + it = create_mapping_recursive(source_parent); + if (it == source_index_mapping.constEnd()) + continue; + change_in_unmapped_parent = true; } + Mapping *m = it.value(); // Figure out how the source changes affect us @@ -1418,7 +1454,7 @@ QVector<int> source_rows_resort; int end = qMin(source_bottom_right.row(), m->proxy_rows.count() - 1); for (int source_row = source_top_left.row(); source_row <= end; ++source_row) { - if (dynamic_sortfilter) { + if (dynamic_sortfilter && !change_in_unmapped_parent) { if (m->proxy_rows.at(source_row) != -1) { if (!filterAcceptsRowInternal(source_row, source_parent)) { // This source row no longer satisfies the filter, so it must be removed @@ -1568,7 +1604,6 @@ _q_clearMapping(); // All internal structures are deleted in clear() q->endResetModel(); - create_mapping(QModelIndex()); update_source_sort_column(); if (dynamic_sortfilter && update_source_sort_column()) sort(); @@ -1634,8 +1669,8 @@ const bool toplevel = !source_parent.isValid(); const bool recursive_accepted = filter_recursive && !toplevel && filterAcceptsRowInternal(source_parent.row(), source_parent.parent()); - //Force the creation of a mapping now, even if its empty. - //We need it because the proxy can be acessed at the moment it emits rowsAboutToBeInserted in insert_source_items + //Force the creation of a mapping now, even if it's empty. + //We need it because the proxy can be accessed at the moment it emits rowsAboutToBeInserted in insert_source_items if (!filter_recursive || toplevel || recursive_accepted) { if (can_create_mapping(source_parent)) create_mapping(source_parent); @@ -1754,8 +1789,8 @@ { Q_UNUSED(start); Q_UNUSED(end); - //Force the creation of a mapping now, even if its empty. - //We need it because the proxy can be acessed at the moment it emits columnsAboutToBeInserted in insert_source_items + //Force the creation of a mapping now, even if it's empty. + //We need it because the proxy can be accessed at the moment it emits columnsAboutToBeInserted in insert_source_items if (can_create_mapping(source_parent)) create_mapping(source_parent); } @@ -1802,7 +1837,10 @@ source_sort_column = -1; } - proxy_sort_column = q->mapFromSource(model->index(0,source_sort_column, source_parent)).column(); + if (source_sort_column >= 0) + proxy_sort_column = q->mapFromSource(model->index(0,source_sort_column, source_parent)).column(); + else + proxy_sort_column = -1; } void QSortFilterProxyModelPrivate::_q_sourceColumnsAboutToBeMoved( @@ -2146,7 +2184,6 @@ connect(d->model, SIGNAL(modelReset()), this, SLOT(_q_sourceReset())); endResetModel(); - d->create_mapping(QModelIndex()); if (d->update_source_sort_column() && d->dynamic_sortfilter) d->sort(); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qcfsocketnotifier.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qcfsocketnotifier.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qcfsocketnotifier.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qcfsocketnotifier.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -48,7 +48,7 @@ Socket Notifiers *************************************************************************/ void qt_mac_socket_callback(CFSocketRef s, CFSocketCallBackType callbackType, CFDataRef, - const void *, void *info) + const void *data, void *info) { QCFSocketNotifier *cfSocketNotifier = static_cast<QCFSocketNotifier *>(info); @@ -61,7 +61,15 @@ // notification after we've successfully disabled the CFSocket, but our Qt // notifier is now gone. The upshot is we have to check the notifier // every time. - if (callbackType == kCFSocketReadCallBack) { + if (callbackType == kCFSocketConnectCallBack) { + // The data pointer will be non-null on connection error + if (data) { + if (socketInfo->readNotifier) + QCoreApplication::sendEvent(socketInfo->readNotifier, ¬ifierEvent); + if (socketInfo->writeNotifier) + QCoreApplication::sendEvent(socketInfo->writeNotifier, ¬ifierEvent); + } + } else if (callbackType == kCFSocketReadCallBack) { if (socketInfo->readNotifier && socketInfo->readEnabled) { socketInfo->readEnabled = false; QCoreApplication::sendEvent(socketInfo->readNotifier, ¬ifierEvent); @@ -152,7 +160,7 @@ // Create CFSocket, specify that we want both read and write callbacks (the callbacks // are enabled/disabled later on). - const int callbackTypes = kCFSocketReadCallBack | kCFSocketWriteCallBack; + const int callbackTypes = kCFSocketConnectCallBack | kCFSocketReadCallBack | kCFSocketWriteCallBack; CFSocketContext context = {0, this, 0, 0, 0}; socketInfo->socket = CFSocketCreateWithNative(kCFAllocatorDefault, nativeSocket, callbackTypes, qt_mac_socket_callback, &context); if (CFSocketIsValid(socketInfo->socket) == false) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qcore_mac.mm qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qcore_mac.mm --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qcore_mac.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qcore_mac.mm 2022-11-11 15:29:17.000000000 +0800 @@ -54,6 +54,7 @@ #include <cxxabi.h> #include <objc/runtime.h> #include <mach-o/dyld.h> +#include <sys/sysctl.h> #include <qdebug.h> @@ -351,6 +352,15 @@ #endif return false; } + +bool qt_mac_runningUnderRosetta() +{ + int translated = 0; + auto size = sizeof(translated); + if (sysctlbyname("sysctl.proc_translated", &translated, &size, nullptr, 0) == 0) + return translated; + return false; +} #endif bool qt_apple_isApplicationExtension() @@ -386,8 +396,8 @@ { static bool isSandboxed = []() { QCFType<SecStaticCodeRef> staticCode = nullptr; - NSURL *bundleUrl = [[NSBundle mainBundle] bundleURL]; - if (SecStaticCodeCreateWithPath((__bridge CFURLRef)bundleUrl, + NSURL *executableUrl = NSBundle.mainBundle.executableURL; + if (SecStaticCodeCreateWithPath((__bridge CFURLRef)executableUrl, kSecCSDefaultFlags, &staticCode) != errSecSuccess) return false; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qcore_mac_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qcore_mac_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qcore_mac_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qcore_mac_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -172,6 +172,7 @@ Q_CORE_EXPORT QChar qt_mac_qtKey2CocoaKey(Qt::Key key); Q_CORE_EXPORT Qt::Key qt_mac_cocoaKey2QtKey(QChar keyCode); Q_CORE_EXPORT bool qt_mac_applicationIsInDarkMode(); +Q_CORE_EXPORT bool qt_mac_runningUnderRosetta(); #endif #ifndef QT_NO_DEBUG_STREAM diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qeventdispatcher_win.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qeventdispatcher_win.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qeventdispatcher_win.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qeventdispatcher_win.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -98,7 +98,7 @@ QEventDispatcherWin32Private::QEventDispatcherWin32Private() : threadId(GetCurrentThreadId()), interrupt(false), internalHwnd(0), - getMessageHook(0), sendPostedEventsTimerId(0), wakeUps(0), + sendPostedEventsTimerId(0), wakeUps(0), activateNotifiersPosted(false), winEventNotifierActivatedEvent(NULL) { } @@ -265,30 +265,21 @@ static const UINT mask = inputQueueMask(); if (HIWORD(GetQueueStatus(mask)) == 0) q->sendPostedEvents(); + else + d->startPostedEventsTimer(); return 0; } // switch (message) return DefWindowProc(hwnd, message, wp, lp); } -LRESULT QT_WIN_CALLBACK qt_GetMessageHook(int code, WPARAM wp, LPARAM lp) +void QEventDispatcherWin32Private::startPostedEventsTimer() { - QEventDispatcherWin32 *q = qobject_cast<QEventDispatcherWin32 *>(QAbstractEventDispatcher::instance()); - Q_ASSERT(q != 0); - QEventDispatcherWin32Private *d = q->d_func(); - MSG *msg = reinterpret_cast<MSG *>(lp); - // Windows unexpectedly passes PM_NOYIELD flag to the hook procedure, - // if ::PeekMessage(..., PM_REMOVE | PM_NOYIELD) is called from the event loop. - // So, retrieve 'removed' tag as a bit field. - const bool messageRemoved = (wp & PM_REMOVE) != 0; - - if (msg->hwnd == d->internalHwnd && msg->message == WM_QT_SENDPOSTEDEVENTS - && messageRemoved && d->sendPostedEventsTimerId == 0) { + if (sendPostedEventsTimerId == 0) { // Start a timer to deliver posted events when the message queue is emptied. - d->sendPostedEventsTimerId = SetTimer(d->internalHwnd, SendPostedEventsTimerId, - USER_TIMER_MINIMUM, NULL); + sendPostedEventsTimerId = SetTimer(internalHwnd, SendPostedEventsTimerId, + USER_TIMER_MINIMUM, NULL); } - return d->getMessageHook ? CallNextHookEx(0, code, wp, lp) : 0; } // Provide class name and atom for the message window used by @@ -469,14 +460,6 @@ return; d->internalHwnd = qt_create_internal_window(this); - // setup GetMessage hook needed to drive our posted events - d->getMessageHook = SetWindowsHookEx(WH_GETMESSAGE, (HOOKPROC) qt_GetMessageHook, NULL, GetCurrentThreadId()); - if (Q_UNLIKELY(!d->getMessageHook)) { - int errorCode = GetLastError(); - qFatal("Qt: INTERNAL ERROR: failed to install GetMessage hook: %d, %ls", - errorCode, qUtf16Printable(qt_error_string(errorCode))); - } - // start all normal timers for (int i = 0; i < d->timerVec.count(); ++i) d->registerTimer(d->timerVec.at(i)); @@ -520,13 +503,17 @@ wakeUp(); // trigger a call to sendPostedEvents() } - d->interrupt.storeRelaxed(false); + // We don't know _when_ the interrupt occurred so we have to honor it. + const bool wasInterrupted = d->interrupt.fetchAndStoreRelaxed(false); emit awake(); // To prevent livelocks, send posted events once per iteration. // QCoreApplication::sendPostedEvents() takes care about recursions. sendPostedEvents(); + if (wasInterrupted) + return false; + auto threadData = d->threadData.loadRelaxed(); bool canWait; bool retVal = false; @@ -578,6 +565,7 @@ } if (haveMessage) { if (d->internalHwnd == msg.hwnd && msg.message == WM_QT_SENDPOSTEDEVENTS) { + d->startPostedEventsTimer(); // Set result to 'true' because the message was sent by wakeUp(). retVal = true; continue; @@ -1022,10 +1010,6 @@ d->closingDown = true; - if (d->getMessageHook) - UnhookWindowsHookEx(d->getMessageHook); - d->getMessageHook = 0; - if (d->sendPostedEventsTimerId != 0) KillTimer(d->internalHwnd, d->sendPostedEventsTimerId); d->sendPostedEventsTimerId = 0; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qeventdispatcher_win_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qeventdispatcher_win_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qeventdispatcher_win_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qeventdispatcher_win_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -114,7 +114,6 @@ private: friend LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPARAM lp); - friend LRESULT QT_WIN_CALLBACK qt_GetMessageHook(int, WPARAM, LPARAM); }; struct QSockNot { @@ -168,11 +167,11 @@ // internal window handle used for socketnotifiers/timers/etc HWND internalHwnd; - HHOOK getMessageHook; // for controlling when to send posted events UINT_PTR sendPostedEventsTimerId; QAtomicInt wakeUps; + void startPostedEventsTimer(); // timers WinTimerVec timerVec; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qeventloop.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qeventloop.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qeventloop.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qeventloop.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -50,6 +50,9 @@ #ifdef Q_OS_WASM #include <emscripten.h> +#if QT_CONFIG(thread) +#include <emscripten/threading.h> +#endif #endif QT_BEGIN_NAMESPACE @@ -295,6 +298,9 @@ // QEventLoop::exec() never returns in emscripten. We implement approximate behavior here. // QTBUG-70185 if (threadData->loopLevel == 1) { +#if QT_CONFIG(thread) + if (emscripten_is_main_browser_thread()) +#endif emscripten_force_exit(returnCode); } else { d->inExec = false; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qfunctions_winrt.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qfunctions_winrt.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qfunctions_winrt.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qfunctions_winrt.h 2022-11-11 15:29:17.000000000 +0800 @@ -167,8 +167,11 @@ ProcessMainThreadEvents = 2 }; -template <typename T> -static inline HRESULT _await_impl(const Microsoft::WRL::ComPtr<T> &asyncOp, AwaitStyle awaitStyle, uint timeout) +using EarlyExitConditionFunction = std::function<bool(void)>; + +template<typename T> +static inline HRESULT _await_impl(const Microsoft::WRL::ComPtr<T> &asyncOp, AwaitStyle awaitStyle, + uint timeout, EarlyExitConditionFunction func) { Microsoft::WRL::ComPtr<IAsyncInfo> asyncInfo; HRESULT hr = asyncOp.As(&asyncInfo); @@ -183,6 +186,8 @@ case ProcessMainThreadEvents: while (SUCCEEDED(hr = asyncInfo->get_Status(&status)) && status == AsyncStatus::Started) { QCoreApplication::processEvents(); + if (func && func()) + return E_ABORT; if (timeout && t.hasExpired(timeout)) return ERROR_TIMEOUT; } @@ -191,6 +196,8 @@ if (QAbstractEventDispatcher *dispatcher = QThread::currentThread()->eventDispatcher()) { while (SUCCEEDED(hr = asyncInfo->get_Status(&status)) && status == AsyncStatus::Started) { dispatcher->processEvents(QEventLoop::AllEvents); + if (func && func()) + return E_ABORT; if (timeout && t.hasExpired(timeout)) return ERROR_TIMEOUT; } @@ -221,20 +228,24 @@ return hr; } -template <typename T> -static inline HRESULT await(const Microsoft::WRL::ComPtr<T> &asyncOp, AwaitStyle awaitStyle = YieldThread, uint timeout = 0) +template<typename T> +static inline HRESULT await(const Microsoft::WRL::ComPtr<T> &asyncOp, + AwaitStyle awaitStyle = YieldThread, uint timeout = 0, + EarlyExitConditionFunction func = nullptr) { - HRESULT hr = _await_impl(asyncOp, awaitStyle, timeout); + HRESULT hr = _await_impl(asyncOp, awaitStyle, timeout, func); if (FAILED(hr)) return hr; return asyncOp->GetResults(); } -template <typename T, typename U> -static inline HRESULT await(const Microsoft::WRL::ComPtr<T> &asyncOp, U *results, AwaitStyle awaitStyle = YieldThread, uint timeout = 0) +template<typename T, typename U> +static inline HRESULT await(const Microsoft::WRL::ComPtr<T> &asyncOp, U *results, + AwaitStyle awaitStyle = YieldThread, uint timeout = 0, + EarlyExitConditionFunction func = nullptr) { - HRESULT hr = _await_impl(asyncOp, awaitStyle, timeout); + HRESULT hr = _await_impl(asyncOp, awaitStyle, timeout, func); if (FAILED(hr)) return hr; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qmetaobject.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qmetaobject.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qmetaobject.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qmetaobject.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -166,6 +166,13 @@ return data; } +static inline QLatin1String stringDataView(const QMetaObject *mo, int index) +{ + const QByteArrayData &d = mo->d.stringdata[index]; + const char *string = reinterpret_cast<const char *>(d.data()); + return QLatin1String(string, d.size); +} + static inline const char *rawStringData(const QMetaObject *mo, int index) { return stringData(mo, index).data(); @@ -2819,6 +2826,28 @@ return value; } +namespace +{ +template <typename String, typename Container, typename Separator> +void join_reversed(String &s, const Container &c, Separator sep) +{ + if (c.empty()) + return; + qsizetype len = qsizetype(c.size()) - 1; // N - 1 separators + for (auto &e : c) + len += qsizetype(e.size()); // N parts + s.reserve(len); + bool first = true; + for (auto rit = c.rbegin(), rend = c.rend(); rit != rend; ++rit) { + const auto &e = *rit; + if (!first) + s.append(sep); + first = false; + s.append(e.data(), e.size()); + } +} +} // unnamed namespace + /*! Returns a byte array of '|'-separated keys that represents the given \a value. @@ -2833,17 +2862,17 @@ const int offset = priv(mobj->d.data)->revision >= 8 ? 3 : 2; int count = mobj->d.data[handle + offset]; int data = mobj->d.data[handle + offset + 1]; + QVarLengthArray<QLatin1String, sizeof(int) * CHAR_BIT> parts; int v = value; // reverse iterate to ensure values like Qt::Dialog=0x2|Qt::Window are processed first. for (int i = count - 1; i >= 0; --i) { int k = mobj->d.data[data + 2*i + 1]; if ((k != 0 && (v & k) == k ) || (k == value)) { v = v & ~k; - if (!keys.isEmpty()) - keys.prepend('|'); - keys.prepend(stringData(mobj, mobj->d.data[data + 2*i])); + parts.push_back(stringDataView(mobj, mobj->d.data[data + 2 * i])); } } + join_reversed(keys, parts, '|'); return keys; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qobject.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qobject.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qobject.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qobject.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -71,6 +71,7 @@ #include <qtcore_tracepoints_p.h> #include <new> +#include <mutex> #include <ctype.h> #include <limits.h> @@ -390,8 +391,14 @@ Q_ASSERT(c != orphaned.loadRelaxed()); // add c to orphanedConnections - c->nextInOrphanList = orphaned.loadRelaxed(); - orphaned.storeRelaxed(c); + Connection *o = nullptr; + /* No ABA issue here: When adding a node, we only care about the list head, it doesn't + * matter if the tail changes. + */ + do { + o = orphaned.loadRelaxed(); + c->nextInOrphanList = o; + } while (!orphaned.testAndSetRelease(o, c)); #ifndef QT_NO_DEBUG found = false; @@ -406,21 +413,32 @@ } -void QObjectPrivate::ConnectionData::cleanOrphanedConnectionsImpl(QObject *sender) +void QObjectPrivate::ConnectionData::cleanOrphanedConnectionsImpl(QObject *sender, LockPolicy lockPolicy) { + QBasicMutex *senderMutex = signalSlotLock(sender); ConnectionOrSignalVector *c = nullptr; { - QBasicMutexLocker l(signalSlotLock(sender)); + std::unique_lock<QBasicMutex> lock(*senderMutex, std::defer_lock_t{}); + if (lockPolicy == NeedToLock) + lock.lock(); if (ref.loadAcquire() > 1) return; // Since ref == 1, no activate() is in process since we locked the mutex. That implies, // that nothing can reference the orphaned connection objects anymore and they can // be safely deleted - c = orphaned.loadRelaxed(); - orphaned.storeRelaxed(nullptr); + c = orphaned.fetchAndStoreRelaxed(nullptr); + } + if (c) { + // Deleting c might run arbitrary user code, so we must not hold the lock + if (lockPolicy == AlreadyLockedAndTemporarilyReleasingLock) { + senderMutex->unlock(); + deleteOrphaned(c); + senderMutex->lock(); + } else { + deleteOrphaned(c); + } } - deleteOrphaned(c); } void QObjectPrivate::ConnectionData::deleteOrphaned(QObjectPrivate::ConnectionOrSignalVector *o) @@ -1022,7 +1040,7 @@ QBasicMutex *m = signalSlotLock(c->receiver.loadRelaxed()); bool needToUnlock = QOrderedMutexLocker::relock(signalSlotMutex, m); - if (c->receiver.loadAcquire()) { + if (c == connectionList.first.loadAcquire() && c->receiver.loadAcquire()) { cd->removeConnection(c); Q_ASSERT(connectionList.first.loadRelaxed() != c); } @@ -1060,14 +1078,29 @@ } senderData->removeConnection(node); + /* + When we unlock, another thread has the chance to delete/modify sender data. + Thus we need to call cleanOrphanedConnections before unlocking. We use the + variant of the function which assumes that the lock is already held to avoid + a deadlock. + We need to hold m, the sender lock. Considering that we might execute arbitrary user + code, we should already release the signalSlotMutex here – unless they are the same. + */ + const bool locksAreTheSame = signalSlotMutex == m; + if (!locksAreTheSame) + locker.unlock(); + senderData->cleanOrphanedConnections( + sender, + QObjectPrivate::ConnectionData::AlreadyLockedAndTemporarilyReleasingLock + ); if (needToUnlock) m->unlock(); - if (slotObj) { + if (locksAreTheSame) // otherwise already unlocked locker.unlock(); + if (slotObj) slotObj->destroyIfLastRef(); - locker.relock(); - } + locker.relock(); } // invalidate all connections on the object and make sure @@ -2292,7 +2325,7 @@ event loop was still running: the Qt event loop will delete those objects as soon as the new nested event loop starts. - \b{Note:} It is safe to call this function more than once; when the + \note It is safe to call this function more than once; when the first deferred deletion event is delivered, any pending events for the object are removed from the event queue. @@ -2300,6 +2333,10 @@ */ void QObject::deleteLater() { +#ifdef QT_DEBUG + if (qApp == this) + qWarning("You are deferring the delete of QCoreApplication, this may not work as expected."); +#endif QCoreApplication::postEvent(this, new QDeferredDeleteEvent()); } @@ -4175,7 +4212,7 @@ /*! Dumps a tree of children to the debug output. - \note before Qt 5.9, this function was not const. + \note Before Qt 5.9, this function was not const. \sa dumpObjectInfo() */ @@ -4206,7 +4243,7 @@ Dumps information about signal connections, etc. for this object to the debug output. - \note before Qt 5.9, this function was not const. + \note Before Qt 5.9, this function was not const. \sa dumpObjectTree() */ @@ -5106,12 +5143,18 @@ connections = QObjectPrivate::get(c->sender)->connections.loadRelaxed(); Q_ASSERT(connections); connections->removeConnection(c); - } - - connections->cleanOrphanedConnections(c->sender); - c->sender->disconnectNotify(QMetaObjectPrivate::signal(c->sender->metaObject(), - c->signal_index)); + c->sender->disconnectNotify(QMetaObjectPrivate::signal(c->sender->metaObject(), c->signal_index)); + // We must not hold the receiver mutex, else we risk dead-locking; we also only need the sender mutex + // It is however vital to hold the senderMutex before calling cleanOrphanedConnections, as otherwise + // another thread might modify/delete the connection + if (receiverMutex != senderMutex) { + receiverMutex->unlock(); + } + connections->cleanOrphanedConnections(c->sender, QObjectPrivate::ConnectionData::AlreadyLockedAndTemporarilyReleasingLock); + senderMutex->unlock(); // now both sender and receiver mutex have been manually unlocked + locker.dismiss(); // so we dismiss the QOrderedMutexLocker + } const_cast<QMetaObject::Connection &>(connection).d_ptr = nullptr; c->deref(); // has been removed from the QMetaObject::Connection object diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qobject_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qobject_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qobject_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qobject_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -268,7 +268,10 @@ ~ConnectionData() { - deleteOrphaned(orphaned.loadRelaxed()); + Q_ASSERT(ref.loadRelaxed() == 0); + auto *c = orphaned.fetchAndStoreRelaxed(nullptr); + if (c) + deleteOrphaned(c); SignalVector *v = signalVector.loadRelaxed(); if (v) free(v); @@ -277,12 +280,19 @@ // must be called on the senders connection data // assumes the senders and receivers lock are held void removeConnection(Connection *c); - void cleanOrphanedConnections(QObject *sender) + enum LockPolicy { + NeedToLock, + // Beware that we need to temporarily release the lock + // and thus calling code must carefully consider whether + // invariants still hold. + AlreadyLockedAndTemporarilyReleasingLock + }; + void cleanOrphanedConnections(QObject *sender, LockPolicy lockPolicy = NeedToLock) { if (orphaned.loadRelaxed() && ref.loadAcquire() == 1) - cleanOrphanedConnectionsImpl(sender); + cleanOrphanedConnectionsImpl(sender, lockPolicy); } - void cleanOrphanedConnectionsImpl(QObject *sender); + void cleanOrphanedConnectionsImpl(QObject *sender, LockPolicy lockPolicy); ConnectionList &connectionsForSignal(int signal) { @@ -307,8 +317,14 @@ signalVector.storeRelaxed(newVector); if (vector) { - vector->nextInOrphanList = orphaned.loadRelaxed(); - orphaned.storeRelaxed(ConnectionOrSignalVector::fromSignalVector(vector)); + Connection *o = nullptr; + /* No ABA issue here: When adding a node, we only care about the list head, it doesn't + * matter if the tail changes. + */ + do { + o = orphaned.loadRelaxed(); + vector->nextInOrphanList = o; + } while (!orphaned.testAndSetRelease(o, ConnectionOrSignalVector::fromSignalVector(vector))); } } int signalVectorCount() const { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qsystemsemaphore_posix.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qsystemsemaphore_posix.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qsystemsemaphore_posix.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qsystemsemaphore_posix.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -70,7 +70,7 @@ return true; // we already have a semaphore if (fileName.isEmpty()) { - errorString = QCoreApplication::tr("%1: key is empty", "QSystemSemaphore").arg(QLatin1String("QSystemSemaphore::handle")); + errorString = QCoreApplication::translate("%1: key is empty", "QSystemSemaphore").arg(QLatin1String("QSystemSemaphore::handle")); error = QSystemSemaphore::KeyError; return false; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qtranslator.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qtranslator.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/kernel/qtranslator.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/kernel/qtranslator.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -601,9 +601,14 @@ } } - if (ok && d->do_load(reinterpret_cast<const uchar *>(d->unmapPointer), d->unmapLength, directory)) { - d->filePath = realname; - return true; + if (ok) { + const QString base_dir = + !directory.isEmpty() ? directory : QFileInfo(realname).absolutePath(); + if (d->do_load(reinterpret_cast<const uchar *>(d->unmapPointer), d->unmapLength, + base_dir)) { + d->filePath = realname; + return true; + } } #if defined(QT_USE_MMAP) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/mimetypes/qmimeglobpattern.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/mimetypes/qmimeglobpattern.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/mimetypes/qmimeglobpattern.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/mimetypes/qmimeglobpattern.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -88,6 +88,40 @@ } } +QMimeGlobPattern::PatternType QMimeGlobPattern::detectPatternType(const QString &pattern) const +{ + const int patternLength = pattern.length(); + if (!patternLength) + return OtherPattern; + + const bool starCount = pattern.count(QLatin1Char('*')) == 1; + const bool hasSquareBracket = pattern.indexOf(QLatin1Char('[')) != -1; + const bool hasQuestionMark = pattern.indexOf(QLatin1Char('?')) != -1; + + if (!hasSquareBracket && !hasQuestionMark) { + if (starCount == 1) { + // Patterns like "*~", "*.extension" + if (pattern.at(0) == QLatin1Char('*')) + return SuffixPattern; + // Patterns like "README*" (well this is currently the only one like that...) + if (pattern.at(patternLength - 1) == QLatin1Char('*')) + return PrefixPattern; + } + // Names without any wildcards like "README" + if (starCount == 0) + return LiteralPattern; + } + + if (pattern == QLatin1String("[0-9][0-9][0-9].vdr")) + return VdrPattern; + + if (pattern == QLatin1String("*.anim[1-9j]")) + return AnimPattern; + + return OtherPattern; +} + + /*! \internal \class QMimeGlobPattern @@ -97,58 +131,66 @@ \sa QMimeType, QMimeDatabase, QMimeMagicRuleMatcher, QMimeMagicRule */ -bool QMimeGlobPattern::matchFileName(const QString &inputFilename) const +bool QMimeGlobPattern::matchFileName(const QString &inputFileName) const { // "Applications MUST match globs case-insensitively, except when the case-sensitive // attribute is set to true." // The constructor takes care of putting case-insensitive patterns in lowercase. - const QString filename = m_caseSensitivity == Qt::CaseInsensitive ? inputFilename.toLower() : inputFilename; + const QString fileName = m_caseSensitivity == Qt::CaseInsensitive + ? inputFileName.toLower() : inputFileName; - const int pattern_len = m_pattern.length(); - if (!pattern_len) + const int patternLength = m_pattern.length(); + if (!patternLength) return false; - const int len = filename.length(); - - const int starCount = m_pattern.count(QLatin1Char('*')); + const int fileNameLength = fileName.length(); - // Patterns like "*~", "*.extension" - if (m_pattern[0] == QLatin1Char('*') && m_pattern.indexOf(QLatin1Char('[')) == -1 && starCount == 1) - { - if (len + 1 < pattern_len) return false; + switch (m_patternType) { + case SuffixPattern: { + if (fileNameLength + 1 < patternLength) + return false; - const QChar *c1 = m_pattern.unicode() + pattern_len - 1; - const QChar *c2 = filename.unicode() + len - 1; + const QChar *c1 = m_pattern.unicode() + patternLength - 1; + const QChar *c2 = fileName.unicode() + fileNameLength - 1; int cnt = 1; - while (cnt < pattern_len && *c1-- == *c2--) + while (cnt < patternLength && *c1-- == *c2--) ++cnt; - return cnt == pattern_len; + return cnt == patternLength; } - - // Patterns like "README*" (well this is currently the only one like that...) - if (starCount == 1 && m_pattern.at(pattern_len - 1) == QLatin1Char('*')) { - if (len + 1 < pattern_len) return false; - if (m_pattern.at(0) == QLatin1Char('*')) - return filename.indexOf(m_pattern.midRef(1, pattern_len - 2)) != -1; + case PrefixPattern: { + if (fileNameLength + 1 < patternLength) + return false; const QChar *c1 = m_pattern.unicode(); - const QChar *c2 = filename.unicode(); + const QChar *c2 = fileName.unicode(); int cnt = 1; - while (cnt < pattern_len && *c1++ == *c2++) + while (cnt < patternLength && *c1++ == *c2++) ++cnt; - return cnt == pattern_len; + return cnt == patternLength; } - - // Names without any wildcards like "README" - if (m_pattern.indexOf(QLatin1Char('[')) == -1 && starCount == 0 && m_pattern.indexOf(QLatin1Char('?'))) - return (m_pattern == filename); - - // Other (quite rare) patterns, like "*.anim[1-9j]": use slow but correct method + case LiteralPattern: + return (m_pattern == fileName); + case VdrPattern: // "[0-9][0-9][0-9].vdr" case + return fileNameLength == 7 + && fileName.at(0).isDigit() && fileName.at(1).isDigit() && fileName.at(2).isDigit() + && QStringView{fileName}.mid(3, 4) == QLatin1String(".vdr"); + case AnimPattern: { // "*.anim[1-9j]" case + if (fileNameLength < 6) + return false; + const QChar lastChar = fileName.at(fileNameLength - 1); + const bool lastCharOK = (lastChar.isDigit() && lastChar != QLatin1Char('0')) + || lastChar == QLatin1Char('j'); + return lastCharOK && QStringView{fileName}.mid(fileNameLength - 6, 5) == QLatin1String(".anim"); + } + case OtherPattern: + // Other fallback patterns: slow but correct method #if QT_CONFIG(regularexpression) - QRegularExpression rx(QRegularExpression::wildcardToRegularExpression(m_pattern)); - return rx.match(filename).hasMatch(); + QRegularExpression rx(QRegularExpression::wildcardToRegularExpression(m_pattern)); + return rx.match(fileName).hasMatch(); #else - return false; + return false; #endif + } + return false; } static bool isSimplePattern(const QString &pattern) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/mimetypes/qmimeglobpattern_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/mimetypes/qmimeglobpattern_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/mimetypes/qmimeglobpattern_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/mimetypes/qmimeglobpattern_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -80,7 +80,10 @@ explicit QMimeGlobPattern(const QString &thePattern, const QString &theMimeType, unsigned theWeight = DefaultWeight, Qt::CaseSensitivity s = Qt::CaseInsensitive) : m_pattern(s == Qt::CaseInsensitive ? thePattern.toLower() : thePattern), - m_mimeType(theMimeType), m_weight(theWeight), m_caseSensitivity(s) + m_mimeType(theMimeType), + m_weight(theWeight), + m_caseSensitivity(s), + m_patternType(detectPatternType(m_pattern)) { } @@ -90,9 +93,10 @@ qSwap(m_mimeType, other.m_mimeType); qSwap(m_weight, other.m_weight); qSwap(m_caseSensitivity, other.m_caseSensitivity); + qSwap(m_patternType, other.m_patternType); } - bool matchFileName(const QString &filename) const; + bool matchFileName(const QString &inputFileName) const; inline const QString &pattern() const { return m_pattern; } inline unsigned weight() const { return m_weight; } @@ -100,10 +104,21 @@ inline bool isCaseSensitive() const { return m_caseSensitivity == Qt::CaseSensitive; } private: + enum PatternType { + SuffixPattern, + PrefixPattern, + LiteralPattern, + VdrPattern, // special handling for "[0-9][0-9][0-9].vdr" pattern + AnimPattern, // special handling for "*.anim[1-9j]" pattern + OtherPattern + }; + PatternType detectPatternType(const QString &pattern) const; + QString m_pattern; QString m_mimeType; int m_weight; Qt::CaseSensitivity m_caseSensitivity; + PatternType m_patternType; }; Q_DECLARE_SHARED(QMimeGlobPattern) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/mimetypes/qmimeprovider.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/mimetypes/qmimeprovider.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/mimetypes/qmimeprovider.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/mimetypes/qmimeprovider.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -272,7 +272,6 @@ //qDebug() << pattern << mimeType << weight << caseSensitive; QMimeGlobPattern glob(pattern, QString() /*unused*/, weight, qtCaseSensitive); - // TODO: this could be done faster for literals where a simple == would do. if (glob.matchFileName(fileName)) result.addMatch(QLatin1String(mimeType), weight, pattern); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/plugin/qlibrary.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/plugin/qlibrary.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/plugin/qlibrary.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/plugin/qlibrary.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -414,6 +414,11 @@ // see https://bugzilla.novell.com/show_bug.cgi?id=622977 // and http://sourceware.org/bugzilla/show_bug.cgi?id=11941 lib->unload(QLibraryPrivate::NoUnloadSys); +#elif defined(Q_OS_DARWIN) + // We cannot fully unload libraries, as we don't know if there are + // lingering references (in system threads e.g.) to Objective-C classes + // defined in the library. + lib->unload(QLibraryPrivate::NoUnloadSys); #else lib->unload(); #endif diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/serialization/qxmlstream.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/serialization/qxmlstream.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/serialization/qxmlstream.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/serialization/qxmlstream.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1307,6 +1307,11 @@ int n = 0; uint c; while ((c = getChar()) != StreamEOF) { + if (n >= 4096) { + // This is too long to be a sensible name, and + // can exhaust memory + return 0; + } switch (c) { case '\n': case ' ': diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/statemachine/qstatemachine.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/statemachine/qstatemachine.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/statemachine/qstatemachine.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/statemachine/qstatemachine.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -3139,7 +3139,10 @@ if (machinePrivate->state != QStateMachinePrivate::Running) return; int signalIndex = senderSignalIndex(); - Q_ASSERT(signalIndex != -1); + if (signalIndex == -1) { + qWarning() << "StateMachine: Could not execute transition because originating object has been deleted"; + return; + } machinePrivate->handleTransitionSignal(sender(), signalIndex, _a); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qbytearraymatcher.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qbytearraymatcher.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qbytearraymatcher.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qbytearraymatcher.h 2022-11-11 15:29:17.000000000 +0800 @@ -42,6 +42,8 @@ #include <QtCore/qbytearray.h> +#include <limits> + QT_BEGIN_NAMESPACE diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qchar.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qchar.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qchar.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qchar.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -159,7 +159,7 @@ call toLatin1() to get the 8-bit value back. For more information see - \l{http://www.unicode.org/ucd/}{"About the Unicode Character Database"}. + \l{https://www.unicode.org/ucd/}{"About the Unicode Character Database"}. \sa Unicode, QString, QLatin1Char */ @@ -167,8 +167,8 @@ /*! \enum QChar::UnicodeVersion - Specifies which version of the \l{http://www.unicode.org/}{Unicode standard} - introduced a certain character. + Specifies which version of the \l{Unicode standard} introduced a certain + character. \value Unicode_1_1 Version 1.1 \value Unicode_2_0 Version 2.0 @@ -279,7 +279,7 @@ This enum type defines the Unicode script property values. For details about the Unicode script property values see - \l{http://www.unicode.org/reports/tr24/}{Unicode Standard Annex #24}. + \l{https://www.unicode.org/reports/tr24/}{Unicode Standard Annex #24}. In order to conform to C/C++ naming conventions "Script_" is prepended to the codes used in the Unicode Standard. @@ -456,8 +456,8 @@ \enum QChar::Direction This enum type defines the Unicode direction attributes. See the - \l{http://www.unicode.org/reports/tr9/tr9-35.html#Table_Bidirectional_Character_Types}{Unicode Standard} for a description - of the values. + \l{https://www.unicode.org/reports/tr9/tr9-35.html#Table_Bidirectional_Character_Types}{Unicode + Standard} for a description of the values. In order to conform to C/C++ naming conventions "Dir" is prepended to the codes used in the Unicode Standard. @@ -493,8 +493,7 @@ \enum QChar::Decomposition This enum type defines the Unicode decomposition attributes. See - the \l{http://www.unicode.org/}{Unicode Standard} for a - description of the values. + the \l{Unicode Standard} for a description of the values. \value NoDecomposition \value Canonical @@ -523,7 +522,7 @@ since 5.3 This enum type defines the Unicode joining type attributes. See the - \l{http://www.unicode.org/}{Unicode Standard} for a description of the values. + \l{Unicode Standard} for a description of the values. In order to conform to C/C++ naming conventions "Joining_" is prepended to the codes used in the Unicode Standard. @@ -562,8 +561,7 @@ \internal This enum type defines names for some of the Unicode combining - classes. See the \l{http://www.unicode.org/}{Unicode Standard} - for a description of the values. + classes. See the \l{Unicode Standard} for a description of the values. \value Combining_Above \value Combining_AboveAttached @@ -1826,7 +1824,7 @@ static uint inline ligatureHelper(uint u1, uint u2) { - if (u1 >= Hangul_LBase && u1 <= Hangul_SBase + Hangul_SCount) { + if (u1 >= Hangul_LBase && u1 < Hangul_SBase + Hangul_SCount) { // compute Hangul syllable composition as per UAX #15 // hangul L-V pair const uint LIndex = u1 - Hangul_LBase; @@ -1839,7 +1837,7 @@ const uint SIndex = u1 - Hangul_SBase; if (SIndex < Hangul_SCount && (SIndex % Hangul_TCount) == 0) { const uint TIndex = u2 - Hangul_TBase; - if (TIndex <= Hangul_TCount) + if (TIndex < Hangul_TCount && TIndex) return u1 + TIndex; } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qcollator.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qcollator.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qcollator.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qcollator.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -72,12 +72,16 @@ /*! \since 5.13 - Constructs a QCollator using the system's default collation locale. + Constructs a QCollator using the default locale's collation locale. - \sa setLocale(), QLocale::collation() + The system locale, when used as default locale, may have a collation locale + other than itself (e.g. on Unix, if LC_COLLATE is set differently to LANG in + the environment). All other locales are their own collation locales. + + \sa setLocale(), QLocale::collation(), QLocale::setDefault() */ QCollator::QCollator() - : d(new QCollatorPrivate(QLocale::system().collation())) + : d(new QCollatorPrivate(QLocale().collation())) { d->init(); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qlocale.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qlocale.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qlocale.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qlocale.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -337,22 +337,6 @@ return localeId.withLikelySubtagsRemoved().name(separator); } -/*! - \internal - */ -QByteArray QLocalePrivate::rawName(char separator) const -{ - QByteArrayList parts; - if (m_data->m_language_id != QLocale::AnyLanguage) - parts.append(languageCode().latin1()); - if (m_data->m_script_id != QLocale::AnyScript) - parts.append(scriptCode().latin1()); - if (m_data->m_country_id != QLocale::AnyCountry) - parts.append(countryCode().latin1()); - - return parts.join(separator); -} - static const QLocaleData *findLocaleDataById(const QLocaleId &localeId) { const uint idx = locale_index[localeId.language_id]; @@ -4554,13 +4538,8 @@ if (i < uiLanguages.size()) { // Adding likely-adjusted forms to system locale's list. // Name the locale is derived from: - const QString &name = uiLanguages.at(i); - prior = name.toLatin1(); - // Don't try to likely-adjust if construction's likely-adjustments - // were so drastic the result doesn't match the prior name: - if (locale.name() != name && locale.d->rawName() != prior) - continue; - // Insert just after prior: + prior = uiLanguages.at(i).toLatin1(); + // Insert just after the entry we're supplementing: j = i + 1; } else { // Plain locale, not system locale; just append. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qlocale.qdoc qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qlocale.qdoc --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qlocale.qdoc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qlocale.qdoc 2022-11-11 15:29:17.000000000 +0800 @@ -92,7 +92,7 @@ \note For the current keyboard input locale take a look at QInputMethod::locale(). - QLocale's data is based on Common Locale Data Repository v38. + QLocale's data is based on Common Locale Data Repository v39. \sa QString::arg(), QString::toInt(), QString::toDouble(), QInputMethod::locale() diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qlocale_data_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qlocale_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qlocale_data_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qlocale_data_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -77,8 +77,8 @@ // GENERATED PART STARTS HERE /* - This part of the file was generated on 2020-11-09 from the - Common Locale Data Repository v38 + This part of the file was generated on 2021-04-26 from the + Common Locale Data Repository v39 http://www.unicode.org/cldr/ @@ -314,7 +314,6 @@ { 259, 0, 0 }, { 259, 7, 37 }, // mgo -> mgo_Latn_CM { 81, 0, 0 }, { 81, 7, 134 }, // mh -> mh_Latn_MH { 79, 0, 0 }, { 79, 7, 154 }, // mi -> mi_Latn_NZ - { 356, 0, 0 }, { 356, 130, 103 }, // mis -> mis_Hatr_IQ { 74, 0, 0 }, { 74, 2, 127 }, // mk -> mk_Cyrl_MK { 77, 0, 0 }, { 77, 24, 100 }, // ml -> ml_Mlym_IN { 82, 0, 0 }, { 82, 2, 143 }, // mn -> mn_Cyrl_MN @@ -718,7 +717,6 @@ { 0, 0, 138 }, { 37, 7, 138 }, // und_YT -> fr_Latn_YT { 0, 0, 240 }, { 104, 7, 240 }, // und_ZW -> sn_Latn_ZW { 0, 134, 0 }, { 177, 134, 91 }, // und_Adlm -> ff_Adlm_GN - { 0, 105, 0 }, { 335, 105, 178 }, // und_Aghb -> lez_Aghb_RU { 0, 128, 0 }, { 340, 128, 100 }, // und_Ahom -> aho_Ahom_IN { 0, 1, 0 }, { 8, 1, 64 }, // und_Arab -> ar_Arab_EG { 0, 1, 46 }, { 76, 1, 46 }, // und_Arab_CC -> ms_Arab_CC @@ -782,7 +780,6 @@ { 0, 56, 0 }, { 280, 56, 170 }, // und_Hano -> hnn_Hano_PH { 0, 5, 0 }, { 25, 5, 44 }, // und_Hans -> zh_Hans_CN { 0, 6, 0 }, { 25, 6, 208 }, // und_Hant -> zh_Hant_TW - { 0, 130, 0 }, { 356, 130, 103 }, // und_Hatr -> mis_Hatr_IQ { 0, 18, 0 }, { 48, 18, 105 }, // und_Hebr -> he_Hebr_IL { 0, 18, 38 }, { 137, 18, 38 }, // und_Hebr_CA -> yi_Hebr_CA { 0, 18, 224 }, { 137, 18, 224 }, // und_Hebr_GB -> yi_Hebr_GB @@ -1288,64 +1285,64 @@ { 6, 7, 127, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 14,9 , 14,9 , 113,6 , 10,17 , 37,5 , 8,10 , 310,28 , 338,58 , 396,15 , 411,28 , 338,58 , 396,15 , 7,11 , 7,10 , 54,4 , 5,17 , 22,23 , {77,75,68}, 11,3 , 198,54 , 19,5 , 24,7 , 51,5 , 64,18 , 2, 1, 1, 6, 7 }, // Albanian/Latin/Macedonia { 6, 7, 257, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 14,9 , 14,9 , 113,6 , 10,17 , 37,5 , 8,10 , 310,28 , 338,58 , 396,15 , 411,28 , 338,58 , 396,15 , 7,11 , 7,10 , 54,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 252,21 , 19,5 , 24,7 , 51,5 , 82,6 , 2, 1, 1, 6, 7 }, // Albanian/Latin/Kosovo { 7, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 23,6 , 23,6 , 29,9 , 38,8 , 119,10 , 63,17 , 18,7 , 25,12 , 439,27 , 466,28 , 494,14 , 439,27 , 466,28 , 494,14 , 18,3 , 17,4 , 58,3 , 61,23 , 22,23 , {69,84,66}, 15,2 , 273,34 , 4,4 , 13,6 , 88,4 , 92,5 , 2, 1, 7, 6, 7 }, // Amharic/Ethiopic/Ethiopia - { 8, 1, 64, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {69,71,80}, 17,5 , 307,81 , 19,5 , 4,0 , 97,7 , 104,3 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Egypt - { 8, 1, 3, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {68,90,68}, 22,5 , 388,102 , 4,4 , 13,6 , 97,7 , 107,7 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Algeria - { 8, 1, 17, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {66,72,68}, 27,5 , 490,91 , 19,5 , 4,0 , 97,7 , 114,7 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Bahrain - { 8, 1, 42, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {88,65,70}, 32,4 , 581,112 , 19,5 , 4,0 , 97,7 , 121,4 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Chad - { 8, 1, 48, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 37,5 , 8,10 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {75,77,70}, 36,2 , 693,105 , 19,5 , 4,0 , 97,7 , 125,9 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Comoros - { 8, 1, 59, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {68,74,70}, 38,3 , 798,84 , 19,5 , 4,0 , 97,7 , 134,6 , 0, 0, 6, 6, 7 }, // Arabic/Arabic/Djibouti - { 8, 1, 67, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {69,82,78}, 41,3 , 882,91 , 19,5 , 4,0 , 97,7 , 140,7 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Eritrea - { 8, 1, 103, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {73,81,68}, 44,5 , 973,84 , 19,5 , 4,0 , 97,7 , 147,6 , 0, 0, 6, 5, 6 }, // Arabic/Arabic/Iraq - { 8, 1, 105, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 55,4 , 59,9 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {73,76,83}, 49,1 , 1057,133 , 19,5 , 4,0 , 97,7 , 153,7 , 2, 1, 7, 5, 6 }, // Arabic/Arabic/Israel - { 8, 1, 109, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {74,79,68}, 50,5 , 1190,84 , 19,5 , 4,0 , 97,7 , 160,6 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Jordan - { 8, 1, 115, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {75,87,68}, 55,5 , 1274,84 , 19,5 , 4,0 , 97,7 , 166,6 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Kuwait - { 8, 1, 119, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {76,66,80}, 60,5 , 1358,84 , 19,5 , 4,0 , 97,7 , 172,5 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Lebanon - { 8, 1, 122, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {76,89,68}, 65,5 , 1442,88 , 4,4 , 13,6 , 97,7 , 177,5 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Libya - { 8, 1, 136, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {77,82,85}, 70,4 , 1530,112 , 19,5 , 4,0 , 97,7 , 182,9 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Mauritania - { 8, 1, 145, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 37,5 , 8,10 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {77,65,68}, 74,5 , 1642,87 , 4,4 , 13,6 , 97,7 , 191,6 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Morocco - { 8, 1, 162, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {79,77,82}, 79,5 , 1729,77 , 19,5 , 4,0 , 97,7 , 197,5 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Oman - { 8, 1, 165, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {73,76,83}, 49,1 , 1057,133 , 19,5 , 4,0 , 97,7 , 202,18 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Palestinian Territories - { 8, 1, 175, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {81,65,82}, 84,5 , 1806,70 , 19,5 , 4,0 , 97,7 , 220,3 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Qatar - { 8, 1, 186, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,65,82}, 89,5 , 1876,77 , 19,5 , 4,0 , 97,7 , 223,24 , 2, 1, 7, 5, 6 }, // Arabic/Arabic/Saudi Arabia - { 8, 1, 194, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,79,83}, 94,1 , 1953,77 , 19,5 , 4,0 , 97,7 , 247,7 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Somalia - { 8, 1, 201, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,68,71}, 95,4 , 2030,91 , 19,5 , 4,0 , 97,7 , 254,7 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Sudan - { 8, 1, 207, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,89,80}, 99,5 , 2121,77 , 19,5 , 4,0 , 97,7 , 261,5 , 0, 0, 6, 5, 6 }, // Arabic/Arabic/Syria - { 8, 1, 216, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {84,78,68}, 104,5 , 2198,95 , 4,4 , 13,6 , 97,7 , 266,4 , 3, 0, 1, 6, 7 }, // Arabic/Arabic/Tunisia - { 8, 1, 223, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {65,69,68}, 109,5 , 2293,91 , 19,5 , 4,0 , 97,7 , 270,24 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/United Arab Emirates - { 8, 1, 236, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {77,65,68}, 74,5 , 1642,87 , 4,4 , 13,6 , 97,7 , 294,15 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Western Sahara - { 8, 1, 237, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {89,69,82}, 114,5 , 2384,70 , 19,5 , 4,0 , 97,7 , 309,5 , 0, 0, 7, 5, 6 }, // Arabic/Arabic/Yemen - { 8, 1, 254, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,83,80}, 119,1 , 2454,132 , 19,5 , 4,0 , 97,7 , 314,12 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/South Sudan - { 8, 1, 260, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 19,5 , 4,0 , 326,22 , 348,6 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/World - { 9, 10, 11, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 52,7 , 52,7 , 156,8 , 164,20 , 37,5 , 8,10 , 574,28 , 602,62 , 664,14 , 574,28 , 602,62 , 664,14 , 0,2 , 0,2 , 135,6 , 141,17 , 22,23 , {65,77,68}, 120,1 , 2586,46 , 19,5 , 4,0 , 354,7 , 361,8 , 2, 0, 1, 6, 7 }, // Armenian/Armenian/Armenia - { 10, 11, 100, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 59,9 , 59,9 , 184,8 , 192,18 , 68,7 , 75,12 , 678,32 , 710,58 , 768,14 , 678,32 , 710,58 , 768,14 , 22,9 , 22,7 , 158,4 , 162,37 , 22,23 , {73,78,82}, 121,1 , 2632,43 , 8,5 , 4,0 , 369,7 , 376,4 , 2, 1, 7, 7, 7 }, // Assamese/Bengali/India - { 12, 7, 15, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 68,8 , 68,8 , 156,8 , 210,17 , 37,5 , 8,10 , 782,27 , 809,67 , 99,14 , 876,27 , 809,67 , 99,14 , 0,2 , 0,2 , 199,4 , 5,17 , 22,23 , {65,90,78}, 122,1 , 2675,58 , 19,5 , 4,0 , 380,10 , 390,10 , 2, 1, 1, 6, 7 }, // Azerbaijani/Latin/Azerbaijan + { 8, 1, 64, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {69,71,80}, 17,5 , 307,81 , 19,5 , 4,0 , 97,7 , 104,3 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Egypt + { 8, 1, 3, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {68,90,68}, 22,5 , 388,102 , 4,4 , 13,6 , 97,7 , 107,7 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Algeria + { 8, 1, 17, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {66,72,68}, 27,5 , 490,91 , 19,5 , 4,0 , 97,7 , 114,7 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Bahrain + { 8, 1, 42, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {88,65,70}, 32,4 , 581,112 , 19,5 , 4,0 , 97,7 , 121,4 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Chad + { 8, 1, 48, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 37,5 , 8,10 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {75,77,70}, 36,2 , 693,105 , 19,5 , 4,0 , 97,7 , 125,9 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Comoros + { 8, 1, 59, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {68,74,70}, 38,3 , 798,84 , 19,5 , 4,0 , 97,7 , 134,6 , 0, 0, 6, 6, 7 }, // Arabic/Arabic/Djibouti + { 8, 1, 67, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {69,82,78}, 41,3 , 882,91 , 19,5 , 4,0 , 97,7 , 140,7 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Eritrea + { 8, 1, 103, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {73,81,68}, 44,5 , 973,84 , 19,5 , 4,0 , 97,7 , 147,6 , 0, 0, 6, 5, 6 }, // Arabic/Arabic/Iraq + { 8, 1, 105, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 55,4 , 59,9 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {73,76,83}, 49,1 , 1057,133 , 19,5 , 4,0 , 97,7 , 153,7 , 2, 1, 7, 5, 6 }, // Arabic/Arabic/Israel + { 8, 1, 109, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {74,79,68}, 50,5 , 1190,84 , 19,5 , 4,0 , 97,7 , 160,6 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Jordan + { 8, 1, 115, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {75,87,68}, 55,5 , 1274,84 , 19,5 , 4,0 , 97,7 , 166,6 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Kuwait + { 8, 1, 119, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {76,66,80}, 60,5 , 1358,84 , 19,5 , 4,0 , 97,7 , 172,5 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Lebanon + { 8, 1, 122, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {76,89,68}, 65,5 , 1442,88 , 4,4 , 13,6 , 97,7 , 177,5 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Libya + { 8, 1, 136, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {77,82,85}, 70,4 , 1530,112 , 19,5 , 4,0 , 97,7 , 182,9 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Mauritania + { 8, 1, 145, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 37,5 , 8,10 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {77,65,68}, 74,5 , 1642,87 , 4,4 , 13,6 , 97,7 , 191,6 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Morocco + { 8, 1, 162, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {79,77,82}, 79,5 , 1729,77 , 19,5 , 4,0 , 97,7 , 197,5 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Oman + { 8, 1, 165, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {73,76,83}, 49,1 , 1057,133 , 19,5 , 4,0 , 97,7 , 202,18 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Palestinian Territories + { 8, 1, 175, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {81,65,82}, 84,5 , 1806,70 , 19,5 , 4,0 , 97,7 , 220,3 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Qatar + { 8, 1, 186, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {83,65,82}, 89,5 , 1876,77 , 19,5 , 4,0 , 97,7 , 223,24 , 2, 1, 7, 5, 6 }, // Arabic/Arabic/Saudi Arabia + { 8, 1, 194, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {83,79,83}, 94,1 , 1953,77 , 19,5 , 4,0 , 97,7 , 247,7 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Somalia + { 8, 1, 201, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {83,68,71}, 95,4 , 2030,91 , 19,5 , 4,0 , 97,7 , 254,7 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Sudan + { 8, 1, 207, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {83,89,80}, 99,5 , 2121,77 , 19,5 , 4,0 , 97,7 , 261,5 , 0, 0, 6, 5, 6 }, // Arabic/Arabic/Syria + { 8, 1, 216, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {84,78,68}, 104,5 , 2198,95 , 4,4 , 13,6 , 97,7 , 266,4 , 3, 0, 1, 6, 7 }, // Arabic/Arabic/Tunisia + { 8, 1, 223, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {65,69,68}, 109,5 , 2293,91 , 19,5 , 4,0 , 97,7 , 270,24 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/United Arab Emirates + { 8, 1, 236, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {77,65,68}, 74,5 , 1642,87 , 4,4 , 13,6 , 97,7 , 294,15 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Western Sahara + { 8, 1, 237, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {89,69,82}, 114,5 , 2384,70 , 19,5 , 4,0 , 97,7 , 309,5 , 0, 0, 7, 5, 6 }, // Arabic/Arabic/Yemen + { 8, 1, 254, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {83,83,80}, 119,1 , 2454,132 , 19,5 , 4,0 , 97,7 , 314,12 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/South Sudan + { 8, 1, 260, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,35 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 19,5 , 4,0 , 326,22 , 348,6 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/World + { 9, 10, 11, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 52,7 , 52,7 , 156,8 , 164,20 , 37,5 , 8,10 , 574,28 , 602,62 , 664,14 , 574,28 , 602,62 , 664,14 , 0,2 , 0,2 , 123,6 , 129,17 , 22,23 , {65,77,68}, 120,1 , 2586,46 , 19,5 , 4,0 , 354,7 , 361,8 , 2, 0, 1, 6, 7 }, // Armenian/Armenian/Armenia + { 10, 11, 100, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 59,9 , 59,9 , 184,8 , 192,18 , 68,7 , 75,12 , 678,32 , 710,58 , 768,14 , 678,32 , 710,58 , 768,14 , 22,9 , 22,7 , 146,4 , 150,37 , 22,23 , {73,78,82}, 121,1 , 2632,43 , 8,5 , 4,0 , 369,7 , 376,4 , 2, 1, 7, 7, 7 }, // Assamese/Bengali/India + { 12, 7, 15, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 68,8 , 68,8 , 156,8 , 210,17 , 37,5 , 8,10 , 782,27 , 809,67 , 99,14 , 876,27 , 809,67 , 99,14 , 0,2 , 0,2 , 187,4 , 5,17 , 22,23 , {65,90,78}, 122,1 , 2675,58 , 19,5 , 4,0 , 380,10 , 390,10 , 2, 1, 1, 6, 7 }, // Azerbaijani/Latin/Azerbaijan { 12, 1, 102, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 6, 5, 5 }, // Azerbaijani/Arabic/Iran { 12, 2, 15, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 156,8 , 210,17 , 37,5 , 8,10 , 903,27 , 930,67 , 99,14 , 903,27 , 930,67 , 99,14 , 31,2 , 29,2 , 45,4 , 5,17 , 22,23 , {65,90,78}, 122,1 , 2733,12 , 19,5 , 4,0 , 400,10 , 410,10 , 2, 1, 1, 6, 7 }, // Azerbaijani/Cyrillic/Azerbaijan { 13, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Bashkir/Cyrillic/Russia - { 14, 7, 197, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8220, 8221, 0,6 , 0,6 , 76,9 , 76,9 , 227,6 , 233,36 , 37,5 , 87,12 , 997,28 , 1025,68 , 1093,14 , 997,28 , 1025,68 , 1093,14 , 0,2 , 0,2 , 203,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 2745,20 , 19,5 , 24,7 , 420,7 , 427,8 , 2, 1, 1, 6, 7 }, // Basque/Latin/Spain - { 15, 11, 18, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 85,9 , 85,9 , 269,6 , 192,18 , 18,7 , 25,12 , 1107,37 , 1144,58 , 1202,18 , 1107,37 , 1144,58 , 1202,18 , 0,2 , 0,2 , 158,4 , 5,17 , 22,23 , {66,68,84}, 124,1 , 2765,49 , 0,4 , 31,6 , 435,5 , 440,8 , 2, 1, 7, 6, 7 }, // Bengali/Bengali/Bangladesh - { 15, 11, 100, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 85,9 , 85,9 , 269,6 , 192,18 , 18,7 , 25,12 , 1107,37 , 1144,58 , 1202,18 , 1107,37 , 1144,58 , 1202,18 , 0,2 , 0,2 , 158,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 2814,43 , 0,4 , 31,6 , 435,5 , 448,4 , 2, 1, 7, 7, 7 }, // Bengali/Bengali/India + { 14, 7, 197, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8220, 8221, 0,6 , 0,6 , 76,9 , 76,9 , 227,6 , 233,36 , 37,5 , 87,12 , 997,28 , 1025,68 , 1093,14 , 997,28 , 1025,68 , 1093,14 , 0,2 , 0,2 , 191,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 2745,20 , 19,5 , 24,7 , 420,7 , 427,8 , 2, 1, 1, 6, 7 }, // Basque/Latin/Spain + { 15, 11, 18, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 85,9 , 85,9 , 269,6 , 192,18 , 18,7 , 25,12 , 1107,37 , 1144,58 , 1202,18 , 1107,37 , 1144,58 , 1202,18 , 0,2 , 0,2 , 146,4 , 5,17 , 22,23 , {66,68,84}, 124,1 , 2765,49 , 0,4 , 31,6 , 435,5 , 440,8 , 2, 1, 7, 6, 7 }, // Bengali/Bengali/Bangladesh + { 15, 11, 100, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 85,9 , 85,9 , 269,6 , 192,18 , 18,7 , 25,12 , 1107,37 , 1144,58 , 1202,18 , 1107,37 , 1144,58 , 1202,18 , 0,2 , 0,2 , 146,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 2814,43 , 0,4 , 31,6 , 435,5 , 448,4 , 2, 1, 7, 7, 7 }, // Bengali/Bengali/India { 16, 31, 25, 46, 44, 59, 37, 3872, 45, 43, 101, 8220, 8221, 8216, 8217, 94,9 , 94,9 , 94,9 , 94,9 , 53,10 , 275,30 , 99,22 , 121,27 , 1220,34 , 1254,79 , 1333,27 , 1220,34 , 1254,79 , 1333,27 , 33,5 , 31,6 , 45,4 , 5,17 , 22,23 , {66,84,78}, 125,3 , 2857,15 , 4,4 , 4,0 , 452,6 , 458,5 , 2, 1, 7, 6, 7 }, // Dzongkha/Tibetan/Bhutan - { 19, 7, 74, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 103,8 , 103,8 , 119,10 , 97,16 , 37,5 , 8,10 , 1360,33 , 1393,43 , 1436,18 , 1360,33 , 1393,43 , 1436,18 , 38,4 , 37,4 , 210,7 , 217,17 , 234,23 , {69,85,82}, 14,1 , 2872,36 , 19,5 , 4,0 , 463,9 , 472,5 , 2, 1, 1, 6, 7 }, // Breton/Latin/France - { 20, 2, 33, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 305,12 , 317,22 , 148,9 , 157,14 , 1454,21 , 1475,55 , 1530,14 , 1454,21 , 1475,55 , 1530,14 , 42,6 , 41,6 , 257,7 , 5,17 , 22,23 , {66,71,78}, 128,3 , 2908,47 , 19,5 , 24,7 , 477,9 , 486,8 , 2, 1, 1, 6, 7 }, // Bulgarian/Cyrillic/Bulgaria - { 21, 25, 147, 46, 44, 4170, 37, 4160, 45, 43, 101, 8220, 8221, 8216, 8217, 118,6 , 118,6 , 124,10 , 124,10 , 339,8 , 347,18 , 171,6 , 177,10 , 1544,54 , 1544,54 , 1598,14 , 1544,54 , 1544,54 , 1598,14 , 48,5 , 47,3 , 264,5 , 5,17 , 22,23 , {77,77,75}, 131,1 , 2955,29 , 8,5 , 4,0 , 494,6 , 494,6 , 0, 0, 7, 6, 7 }, // Burmese/Myanmar/Myanmar - { 22, 2, 20, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 134,7 , 134,7 , 365,7 , 317,22 , 37,5 , 187,11 , 1612,21 , 1633,56 , 1689,14 , 1612,21 , 1633,56 , 1689,14 , 0,2 , 0,2 , 269,5 , 274,17 , 22,23 , {66,89,78}, 0,2 , 2984,89 , 19,5 , 4,0 , 500,10 , 510,8 , 2, 0, 1, 6, 7 }, // Belarusian/Cyrillic/Belarus - { 23, 20, 36, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 141,9 , 150,9 , 269,6 , 97,16 , 18,7 , 25,12 , 1703,40 , 1743,46 , 1789,14 , 1703,40 , 1803,47 , 1789,14 , 0,2 , 0,2 , 291,2 , 5,17 , 22,23 , {75,72,82}, 132,1 , 3073,29 , 0,4 , 31,6 , 518,5 , 523,7 , 2, 1, 7, 6, 7 }, // Khmer/Khmer/Cambodia + { 19, 7, 74, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 103,8 , 103,8 , 119,10 , 97,16 , 37,5 , 8,10 , 1360,33 , 1393,43 , 1436,18 , 1360,33 , 1393,43 , 1436,18 , 38,4 , 37,4 , 198,7 , 205,17 , 222,23 , {69,85,82}, 14,1 , 2872,36 , 19,5 , 4,0 , 463,9 , 472,5 , 2, 1, 1, 6, 7 }, // Breton/Latin/France + { 20, 2, 33, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 305,12 , 317,22 , 148,9 , 157,14 , 1454,21 , 1475,55 , 1530,14 , 1454,21 , 1475,55 , 1530,14 , 42,6 , 41,6 , 245,7 , 5,17 , 22,23 , {66,71,78}, 128,3 , 2908,47 , 19,5 , 24,7 , 477,9 , 486,8 , 2, 1, 1, 6, 7 }, // Bulgarian/Cyrillic/Bulgaria + { 21, 25, 147, 46, 44, 4170, 37, 4160, 45, 43, 101, 8220, 8221, 8216, 8217, 118,6 , 118,6 , 124,10 , 124,10 , 339,8 , 347,18 , 171,6 , 177,10 , 1544,54 , 1544,54 , 1598,14 , 1544,54 , 1544,54 , 1598,14 , 48,5 , 47,3 , 252,5 , 5,17 , 22,23 , {77,77,75}, 131,1 , 2955,29 , 8,5 , 4,0 , 494,6 , 494,6 , 0, 0, 7, 6, 7 }, // Burmese/Myanmar/Myanmar + { 22, 2, 20, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 134,7 , 134,7 , 365,7 , 317,22 , 37,5 , 187,11 , 1612,21 , 1633,56 , 1689,14 , 1612,21 , 1633,56 , 1689,14 , 0,2 , 0,2 , 257,5 , 262,17 , 22,23 , {66,89,78}, 0,2 , 2984,89 , 19,5 , 4,0 , 500,10 , 510,8 , 2, 0, 1, 6, 7 }, // Belarusian/Cyrillic/Belarus + { 23, 20, 36, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 141,9 , 150,9 , 269,6 , 97,16 , 18,7 , 25,12 , 1703,40 , 1743,46 , 1789,14 , 1703,40 , 1803,47 , 1789,14 , 0,2 , 0,2 , 279,2 , 5,17 , 22,23 , {75,72,82}, 132,1 , 3073,29 , 0,4 , 31,6 , 518,5 , 523,7 , 2, 1, 7, 6, 7 }, // Khmer/Khmer/Cambodia { 24, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 159,7 , 159,7 , 269,6 , 372,22 , 55,4 , 198,11 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 530,6 , 536,7 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Spain { 24, 7, 5, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 159,7 , 159,7 , 269,6 , 372,22 , 55,4 , 198,11 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 530,6 , 543,7 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Andorra { 24, 7, 74, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 159,7 , 159,7 , 269,6 , 372,22 , 55,4 , 198,11 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 530,6 , 550,6 , 2, 1, 1, 6, 7 }, // Catalan/Latin/France { 24, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 159,7 , 159,7 , 269,6 , 372,22 , 55,4 , 198,11 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 530,6 , 556,6 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Italy - { 25, 5, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 171,5 , 171,5 , 394,8 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 5,17 , 22,23 , {67,78,89}, 133,1 , 3122,13 , 4,4 , 13,6 , 562,4 , 566,2 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/China - { 25, 5, 97, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 171,5 , 171,5 , 269,6 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 5,17 , 22,23 , {72,75,68}, 134,3 , 3135,11 , 4,4 , 13,6 , 562,4 , 568,9 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Hong Kong - { 25, 5, 126, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 171,5 , 171,5 , 269,6 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 5,17 , 22,23 , {77,79,80}, 137,4 , 3146,13 , 4,4 , 13,6 , 562,4 , 577,9 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Macau - { 25, 5, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 171,5 , 171,5 , 27,8 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 5,17 , 22,23 , {83,71,68}, 6,1 , 3159,15 , 4,4 , 13,6 , 562,4 , 586,3 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Singapore - { 25, 6, 97, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 176,5 , 176,5 , 415,8 , 402,13 , 209,6 , 226,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 295,3 , 5,17 , 22,23 , {72,75,68}, 134,3 , 3135,11 , 4,4 , 13,6 , 589,4 , 593,9 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/Hong Kong - { 25, 6, 126, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 176,5 , 176,5 , 415,8 , 402,13 , 209,6 , 226,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 295,3 , 5,17 , 22,23 , {77,79,80}, 137,4 , 3174,13 , 4,4 , 13,6 , 589,4 , 602,9 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/Macau + { 25, 5, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 171,5 , 171,5 , 394,8 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 281,2 , 5,17 , 22,23 , {67,78,89}, 133,1 , 3122,13 , 4,4 , 13,6 , 562,4 , 566,2 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/China + { 25, 5, 97, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 171,5 , 171,5 , 269,6 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 281,2 , 5,17 , 22,23 , {72,75,68}, 134,3 , 3135,11 , 4,4 , 13,6 , 562,4 , 568,9 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Hong Kong + { 25, 5, 126, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 171,5 , 171,5 , 269,6 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 281,2 , 5,17 , 22,23 , {77,79,80}, 137,4 , 3146,13 , 4,4 , 13,6 , 562,4 , 577,9 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Macau + { 25, 5, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 171,5 , 171,5 , 27,8 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 281,2 , 5,17 , 22,23 , {83,71,68}, 6,1 , 3159,15 , 4,4 , 13,6 , 562,4 , 586,3 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Singapore + { 25, 6, 97, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 176,5 , 176,5 , 415,8 , 402,13 , 209,6 , 226,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 283,3 , 5,17 , 22,23 , {72,75,68}, 134,3 , 3135,11 , 4,4 , 13,6 , 589,4 , 593,9 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/Hong Kong + { 25, 6, 126, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 176,5 , 176,5 , 415,8 , 402,13 , 209,6 , 226,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 283,3 , 5,17 , 22,23 , {77,79,80}, 137,4 , 3174,13 , 4,4 , 13,6 , 589,4 , 602,9 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/Macau { 25, 6, 208, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 171,5 , 171,5 , 394,8 , 423,14 , 209,6 , 226,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {84,87,68}, 6,1 , 3187,13 , 4,4 , 13,6 , 589,4 , 611,2 , 2, 0, 7, 6, 7 }, // Chinese/Traditional Han/Taiwan { 26, 7, 74, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Corsican/Latin/France - { 27, 7, 54, 44, 46, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 437,13 , 450,19 , 37,5 , 87,12 , 2043,28 , 2071,58 , 2129,14 , 2043,28 , 2071,58 , 2143,14 , 0,2 , 0,2 , 298,7 , 5,17 , 22,23 , {72,82,75}, 141,3 , 3200,60 , 19,5 , 4,0 , 613,8 , 621,8 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Croatia - { 27, 7, 27, 44, 46, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 469,9 , 450,19 , 37,5 , 87,12 , 2043,28 , 2071,58 , 2143,14 , 2043,28 , 2071,58 , 2143,14 , 0,2 , 0,2 , 298,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 3260,85 , 19,5 , 4,0 , 613,8 , 629,19 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Bosnia And Herzegowina - { 28, 7, 57, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 181,7 , 181,7 , 156,8 , 478,17 , 55,4 , 59,9 , 2157,21 , 2178,49 , 2227,14 , 2157,21 , 2178,49 , 2227,14 , 60,4 , 57,4 , 305,5 , 5,17 , 22,23 , {67,90,75}, 146,2 , 3345,68 , 19,5 , 4,0 , 648,7 , 655,5 , 2, 0, 1, 6, 7 }, // Czech/Latin/Czech Republic + { 27, 7, 54, 44, 46, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 437,13 , 450,19 , 37,5 , 87,12 , 2043,28 , 2071,58 , 2129,14 , 2043,28 , 2071,58 , 2143,14 , 0,2 , 0,2 , 286,7 , 5,17 , 22,23 , {72,82,75}, 141,3 , 3200,60 , 19,5 , 4,0 , 613,8 , 621,8 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Croatia + { 27, 7, 27, 44, 46, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 469,9 , 450,19 , 37,5 , 87,12 , 2043,28 , 2071,58 , 2143,14 , 2043,28 , 2071,58 , 2143,14 , 0,2 , 0,2 , 286,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 3260,85 , 19,5 , 4,0 , 613,8 , 629,19 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Bosnia And Herzegowina + { 28, 7, 57, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 181,7 , 181,7 , 156,8 , 478,17 , 55,4 , 59,9 , 2157,21 , 2178,49 , 2227,14 , 2157,21 , 2178,49 , 2227,14 , 60,4 , 57,4 , 293,5 , 5,17 , 22,23 , {67,90,75}, 146,2 , 3345,68 , 19,5 , 4,0 , 648,7 , 655,5 , 2, 0, 1, 6, 7 }, // Czech/Latin/Czech Republic { 29, 7, 58, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 495,10 , 505,23 , 239,5 , 244,10 , 2241,28 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 148,3 , 3413,42 , 19,5 , 4,0 , 660,5 , 665,7 , 2, 0, 1, 6, 7 }, // Danish/Latin/Denmark { 29, 7, 86, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 495,10 , 505,23 , 239,5 , 244,10 , 2241,28 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 148,3 , 3413,42 , 19,5 , 4,0 , 660,5 , 672,8 , 2, 0, 1, 6, 7 }, // Danish/Latin/Greenland { 30, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 8,5 , 37,7 , 680,10 , 690,9 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Netherlands @@ -1461,265 +1458,265 @@ { 31, 7, 256, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,78,71}, 155,4 , 6999,95 , 4,4 , 13,6 , 785,7 , 1867,12 , 2, 1, 1, 6, 7 }, // English/Latin/Sint Maarten { 31, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 4,4 , 13,6 , 785,7 , 1879,5 , 2, 1, 1, 6, 7 }, // English/Latin/World { 31, 7, 261, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 19,5 , 4,0 , 785,7 , 1884,6 , 2, 1, 1, 6, 7 }, // English/Latin/Europe - { 32, 7, 260, 44, 160, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 215,9 , 215,9 , 588,8 , 596,26 , 37,5 , 267,25 , 2523,21 , 2544,51 , 2595,14 , 2523,21 , 2544,51 , 2595,14 , 70,3 , 67,3 , 310,6 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 1890,9 , 1899,5 , 2, 1, 1, 6, 7 }, // Esperanto/Latin/World - { 33, 7, 68, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 224,8 , 224,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2609,14 , 2623,63 , 2609,14 , 2609,14 , 2623,63 , 2609,14 , 0,2 , 0,2 , 316,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 7094,20 , 19,5 , 24,7 , 1904,5 , 1909,5 , 2, 1, 1, 6, 7 }, // Estonian/Latin/Estonia - { 34, 7, 71, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2686,28 , 2714,74 , 2788,14 , 2802,35 , 2714,74 , 2788,14 , 0,2 , 0,2 , 322,3 , 5,17 , 22,23 , {68,75,75}, 190,2 , 7114,43 , 19,5 , 24,7 , 1914,8 , 1922,7 , 2, 0, 1, 6, 7 }, // Faroese/Latin/Faroe Islands - { 34, 7, 58, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2686,28 , 2714,74 , 2788,14 , 2802,35 , 2714,74 , 2788,14 , 0,2 , 0,2 , 322,3 , 5,17 , 22,23 , {68,75,75}, 148,3 , 7114,43 , 19,5 , 24,7 , 1914,8 , 665,7 , 2, 0, 1, 6, 7 }, // Faroese/Latin/Denmark - { 36, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 224,8 , 224,8 , 640,8 , 478,17 , 254,4 , 258,9 , 2837,21 , 2858,67 , 2925,14 , 2837,21 , 2939,81 , 2925,14 , 73,3 , 70,3 , 325,5 , 330,17 , 347,23 , {69,85,82}, 14,1 , 7157,20 , 19,5 , 4,0 , 1929,5 , 1934,5 , 2, 1, 1, 6, 7 }, // Finnish/Latin/Finland - { 37, 7, 74, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 1947,6 , 2, 1, 1, 6, 7 }, // French/Latin/France - { 37, 7, 3, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {68,90,68}, 205,2 , 7177,51 , 19,5 , 24,7 , 1939,8 , 1953,7 , 2, 1, 6, 5, 6 }, // French/Latin/Algeria - { 37, 7, 21, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 571,7 , 97,16 , 37,5 , 292,23 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 1960,8 , 2, 1, 1, 6, 7 }, // French/Latin/Belgium - { 37, 7, 23, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1939,8 , 1968,5 , 0, 0, 1, 6, 7 }, // French/Latin/Benin - { 37, 7, 34, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1939,8 , 1973,12 , 0, 0, 1, 6, 7 }, // French/Latin/Burkina Faso - { 37, 7, 35, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {66,73,70}, 163,3 , 7287,53 , 19,5 , 24,7 , 1939,8 , 938,7 , 0, 0, 1, 6, 7 }, // French/Latin/Burundi - { 37, 7, 37, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 76,5 , 73,4 , 370,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 1985,8 , 0, 0, 1, 6, 7 }, // French/Latin/Cameroon - { 37, 7, 38, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8221, 8220, 0,6 , 0,6 , 232,8 , 232,8 , 53,10 , 97,16 , 315,9 , 324,24 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 64,4 , 61,4 , 370,6 , 217,17 , 234,23 , {67,65,68}, 210,4 , 7396,54 , 19,5 , 24,7 , 1993,17 , 969,6 , 2, 0, 7, 6, 7 }, // French/Latin/Canada - { 37, 7, 41, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2010,25 , 0, 0, 1, 6, 7 }, // French/Latin/Central African Republic - { 37, 7, 42, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2035,5 , 0, 0, 1, 6, 7 }, // French/Latin/Chad - { 37, 7, 48, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {75,77,70}, 36,2 , 7450,51 , 19,5 , 24,7 , 1939,8 , 2040,7 , 0, 0, 1, 6, 7 }, // French/Latin/Comoros - { 37, 7, 49, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {67,68,70}, 214,2 , 7501,53 , 19,5 , 24,7 , 1939,8 , 2047,14 , 2, 1, 1, 6, 7 }, // French/Latin/Congo Kinshasa - { 37, 7, 50, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2061,17 , 0, 0, 1, 6, 7 }, // French/Latin/Congo Brazzaville - { 37, 7, 53, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2078,13 , 0, 0, 1, 6, 7 }, // French/Latin/Ivory Coast - { 37, 7, 59, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {68,74,70}, 38,3 , 7554,57 , 19,5 , 24,7 , 1939,8 , 2091,8 , 0, 0, 6, 6, 7 }, // French/Latin/Djibouti - { 37, 7, 66, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2099,18 , 0, 0, 1, 6, 7 }, // French/Latin/Equatorial Guinea - { 37, 7, 76, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2117,16 , 2, 1, 1, 6, 7 }, // French/Latin/French Guiana - { 37, 7, 77, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,80,70}, 216,4 , 7611,35 , 19,5 , 24,7 , 1939,8 , 2133,19 , 0, 0, 1, 6, 7 }, // French/Latin/French Polynesia - { 37, 7, 79, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2152,5 , 0, 0, 1, 6, 7 }, // French/Latin/Gabon - { 37, 7, 88, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2157,10 , 2, 1, 1, 6, 7 }, // French/Latin/Guadeloupe - { 37, 7, 91, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {71,78,70}, 220,2 , 7646,48 , 19,5 , 24,7 , 1939,8 , 2167,6 , 0, 0, 1, 6, 7 }, // French/Latin/Guinea - { 37, 7, 94, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {72,84,71}, 222,1 , 7694,57 , 19,5 , 24,7 , 1939,8 , 2173,5 , 2, 1, 1, 6, 7 }, // French/Latin/Haiti - { 37, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2178,10 , 2, 1, 1, 6, 7 }, // French/Latin/Luxembourg - { 37, 7, 128, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {77,71,65}, 170,2 , 7751,54 , 19,5 , 24,7 , 1939,8 , 1233,10 , 0, 0, 1, 6, 7 }, // French/Latin/Madagascar - { 37, 7, 132, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2188,4 , 0, 0, 1, 6, 7 }, // French/Latin/Mali - { 37, 7, 135, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2192,10 , 2, 1, 1, 6, 7 }, // French/Latin/Martinique - { 37, 7, 136, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {77,82,85}, 223,2 , 7805,66 , 19,5 , 24,7 , 1939,8 , 2202,10 , 2, 1, 1, 6, 7 }, // French/Latin/Mauritania - { 37, 7, 137, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {77,85,82}, 176,2 , 7871,63 , 19,5 , 24,7 , 1939,8 , 2212,7 , 2, 0, 1, 6, 7 }, // French/Latin/Mauritius - { 37, 7, 138, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2219,7 , 2, 1, 1, 6, 7 }, // French/Latin/Mayotte - { 37, 7, 142, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2226,6 , 2, 1, 1, 6, 7 }, // French/Latin/Monaco - { 37, 7, 145, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 64,4 , 61,4 , 370,6 , 217,17 , 234,23 , {77,65,68}, 225,3 , 7934,54 , 19,5 , 24,7 , 1939,8 , 2232,5 , 2, 1, 1, 6, 7 }, // French/Latin/Morocco - { 37, 7, 153, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,80,70}, 216,4 , 7611,35 , 19,5 , 24,7 , 1939,8 , 2237,18 , 0, 0, 1, 6, 7 }, // French/Latin/New Caledonia - { 37, 7, 156, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2255,5 , 0, 0, 1, 6, 7 }, // French/Latin/Niger - { 37, 7, 176, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2260,10 , 2, 1, 1, 6, 7 }, // French/Latin/Reunion - { 37, 7, 179, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {82,87,70}, 180,2 , 7988,50 , 19,5 , 24,7 , 1939,8 , 1457,6 , 0, 0, 1, 6, 7 }, // French/Latin/Rwanda - { 37, 7, 187, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2270,7 , 0, 0, 1, 6, 7 }, // French/Latin/Senegal - { 37, 7, 188, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {83,67,82}, 185,2 , 8038,71 , 19,5 , 24,7 , 1939,8 , 1518,10 , 2, 1, 1, 6, 7 }, // French/Latin/Seychelles - { 37, 7, 200, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2277,24 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Pierre And Miquelon - { 37, 7, 206, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 232,8 , 232,8 , 156,8 , 10,17 , 37,5 , 348,14 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {67,72,70}, 228,3 , 8109,45 , 19,5 , 24,7 , 2301,15 , 2316,6 , 2, 0, 1, 6, 7 }, // French/Latin/Switzerland - { 37, 7, 207, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {83,89,80}, 231,2 , 8154,51 , 19,5 , 24,7 , 1939,8 , 2322,5 , 0, 0, 6, 5, 6 }, // French/Latin/Syria - { 37, 7, 212, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2327,4 , 0, 0, 1, 6, 7 }, // French/Latin/Togo - { 37, 7, 216, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {84,78,68}, 233,2 , 8205,51 , 19,5 , 24,7 , 1939,8 , 2331,7 , 3, 0, 1, 6, 7 }, // French/Latin/Tunisia - { 37, 7, 229, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {86,85,86}, 203,2 , 8256,51 , 19,5 , 24,7 , 1939,8 , 1765,7 , 0, 0, 1, 6, 7 }, // French/Latin/Vanuatu - { 37, 7, 235, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,80,70}, 216,4 , 7611,35 , 19,5 , 24,7 , 1939,8 , 2338,16 , 0, 0, 1, 6, 7 }, // French/Latin/Wallis And Futuna Islands - { 37, 7, 244, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2354,16 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Barthelemy - { 37, 7, 245, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2370,12 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Martin + { 32, 7, 260, 44, 160, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 215,9 , 215,9 , 588,8 , 596,26 , 37,5 , 267,25 , 2523,21 , 2544,51 , 2595,14 , 2523,21 , 2544,51 , 2595,14 , 70,3 , 67,3 , 298,6 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 1890,9 , 1899,5 , 2, 1, 1, 6, 7 }, // Esperanto/Latin/World + { 33, 7, 68, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 224,8 , 224,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2609,14 , 2623,63 , 2609,14 , 2609,14 , 2623,63 , 2609,14 , 0,2 , 0,2 , 304,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 7094,20 , 19,5 , 24,7 , 1904,5 , 1909,5 , 2, 1, 1, 6, 7 }, // Estonian/Latin/Estonia + { 34, 7, 71, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2686,28 , 2714,74 , 2788,14 , 2802,35 , 2714,74 , 2788,14 , 0,2 , 0,2 , 310,3 , 5,17 , 22,23 , {68,75,75}, 190,2 , 7114,43 , 19,5 , 24,7 , 1914,8 , 1922,7 , 2, 0, 1, 6, 7 }, // Faroese/Latin/Faroe Islands + { 34, 7, 58, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2686,28 , 2714,74 , 2788,14 , 2802,35 , 2714,74 , 2788,14 , 0,2 , 0,2 , 310,3 , 5,17 , 22,23 , {68,75,75}, 148,3 , 7114,43 , 19,5 , 24,7 , 1914,8 , 665,7 , 2, 0, 1, 6, 7 }, // Faroese/Latin/Denmark + { 36, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 224,8 , 224,8 , 640,8 , 478,17 , 254,4 , 258,9 , 2837,21 , 2858,67 , 2925,14 , 2837,21 , 2939,81 , 2925,14 , 73,3 , 70,3 , 313,5 , 318,17 , 335,23 , {69,85,82}, 14,1 , 7157,20 , 19,5 , 4,0 , 1929,5 , 1934,5 , 2, 1, 1, 6, 7 }, // Finnish/Latin/Finland + { 37, 7, 74, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 1947,6 , 2, 1, 1, 6, 7 }, // French/Latin/France + { 37, 7, 3, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {68,90,68}, 205,2 , 7177,51 , 19,5 , 24,7 , 1939,8 , 1953,7 , 2, 1, 6, 5, 6 }, // French/Latin/Algeria + { 37, 7, 21, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 571,7 , 97,16 , 37,5 , 292,23 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 1960,8 , 2, 1, 1, 6, 7 }, // French/Latin/Belgium + { 37, 7, 23, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,79,70}, 207,5 , 7228,59 , 19,5 , 24,7 , 1939,8 , 1968,5 , 0, 0, 1, 6, 7 }, // French/Latin/Benin + { 37, 7, 34, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,79,70}, 207,5 , 7228,59 , 19,5 , 24,7 , 1939,8 , 1973,12 , 0, 0, 1, 6, 7 }, // French/Latin/Burkina Faso + { 37, 7, 35, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {66,73,70}, 163,3 , 7287,53 , 19,5 , 24,7 , 1939,8 , 938,7 , 0, 0, 1, 6, 7 }, // French/Latin/Burundi + { 37, 7, 37, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 76,5 , 73,4 , 358,6 , 205,17 , 222,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 1985,8 , 0, 0, 1, 6, 7 }, // French/Latin/Cameroon + { 37, 7, 38, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8221, 8220, 0,6 , 0,6 , 232,8 , 232,8 , 53,10 , 97,16 , 315,9 , 324,24 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 64,4 , 61,4 , 358,6 , 205,17 , 222,23 , {67,65,68}, 212,4 , 7396,54 , 19,5 , 24,7 , 1993,17 , 969,6 , 2, 0, 7, 6, 7 }, // French/Latin/Canada + { 37, 7, 41, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2010,25 , 0, 0, 1, 6, 7 }, // French/Latin/Central African Republic + { 37, 7, 42, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2035,5 , 0, 0, 1, 6, 7 }, // French/Latin/Chad + { 37, 7, 48, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {75,77,70}, 36,2 , 7450,51 , 19,5 , 24,7 , 1939,8 , 2040,7 , 0, 0, 1, 6, 7 }, // French/Latin/Comoros + { 37, 7, 49, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {67,68,70}, 216,2 , 7501,53 , 19,5 , 24,7 , 1939,8 , 2047,14 , 2, 1, 1, 6, 7 }, // French/Latin/Congo Kinshasa + { 37, 7, 50, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2061,17 , 0, 0, 1, 6, 7 }, // French/Latin/Congo Brazzaville + { 37, 7, 53, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,79,70}, 207,5 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2078,13 , 0, 0, 1, 6, 7 }, // French/Latin/Ivory Coast + { 37, 7, 59, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {68,74,70}, 38,3 , 7554,57 , 19,5 , 24,7 , 1939,8 , 2091,8 , 0, 0, 6, 6, 7 }, // French/Latin/Djibouti + { 37, 7, 66, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2099,18 , 0, 0, 1, 6, 7 }, // French/Latin/Equatorial Guinea + { 37, 7, 76, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2117,16 , 2, 1, 1, 6, 7 }, // French/Latin/French Guiana + { 37, 7, 77, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,80,70}, 218,4 , 7611,35 , 19,5 , 24,7 , 1939,8 , 2133,19 , 0, 0, 1, 6, 7 }, // French/Latin/French Polynesia + { 37, 7, 79, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2152,5 , 0, 0, 1, 6, 7 }, // French/Latin/Gabon + { 37, 7, 88, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2157,10 , 2, 1, 1, 6, 7 }, // French/Latin/Guadeloupe + { 37, 7, 91, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {71,78,70}, 222,2 , 7646,48 , 19,5 , 24,7 , 1939,8 , 2167,6 , 0, 0, 1, 6, 7 }, // French/Latin/Guinea + { 37, 7, 94, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {72,84,71}, 224,1 , 7694,57 , 19,5 , 24,7 , 1939,8 , 2173,5 , 2, 1, 1, 6, 7 }, // French/Latin/Haiti + { 37, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2178,10 , 2, 1, 1, 6, 7 }, // French/Latin/Luxembourg + { 37, 7, 128, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {77,71,65}, 170,2 , 7751,54 , 19,5 , 24,7 , 1939,8 , 1233,10 , 0, 0, 1, 6, 7 }, // French/Latin/Madagascar + { 37, 7, 132, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,79,70}, 207,5 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2188,4 , 0, 0, 1, 6, 7 }, // French/Latin/Mali + { 37, 7, 135, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2192,10 , 2, 1, 1, 6, 7 }, // French/Latin/Martinique + { 37, 7, 136, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {77,82,85}, 225,2 , 7805,66 , 19,5 , 24,7 , 1939,8 , 2202,10 , 2, 1, 1, 6, 7 }, // French/Latin/Mauritania + { 37, 7, 137, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {77,85,82}, 176,2 , 7871,63 , 19,5 , 24,7 , 1939,8 , 2212,7 , 2, 0, 1, 6, 7 }, // French/Latin/Mauritius + { 37, 7, 138, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2219,7 , 2, 1, 1, 6, 7 }, // French/Latin/Mayotte + { 37, 7, 142, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2226,6 , 2, 1, 1, 6, 7 }, // French/Latin/Monaco + { 37, 7, 145, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 64,4 , 61,4 , 358,6 , 205,17 , 222,23 , {77,65,68}, 227,3 , 7934,54 , 19,5 , 24,7 , 1939,8 , 2232,5 , 2, 1, 1, 6, 7 }, // French/Latin/Morocco + { 37, 7, 153, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,80,70}, 218,4 , 7611,35 , 19,5 , 24,7 , 1939,8 , 2237,18 , 0, 0, 1, 6, 7 }, // French/Latin/New Caledonia + { 37, 7, 156, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,79,70}, 207,5 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2255,5 , 0, 0, 1, 6, 7 }, // French/Latin/Niger + { 37, 7, 176, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2260,10 , 2, 1, 1, 6, 7 }, // French/Latin/Reunion + { 37, 7, 179, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {82,87,70}, 180,2 , 7988,50 , 19,5 , 24,7 , 1939,8 , 1457,6 , 0, 0, 1, 6, 7 }, // French/Latin/Rwanda + { 37, 7, 187, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,79,70}, 207,5 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2270,7 , 0, 0, 1, 6, 7 }, // French/Latin/Senegal + { 37, 7, 188, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {83,67,82}, 185,2 , 8038,71 , 19,5 , 24,7 , 1939,8 , 1518,10 , 2, 1, 1, 6, 7 }, // French/Latin/Seychelles + { 37, 7, 200, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2277,24 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Pierre And Miquelon + { 37, 7, 206, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 232,8 , 232,8 , 156,8 , 10,17 , 37,5 , 348,14 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {67,72,70}, 230,3 , 8109,45 , 19,5 , 24,7 , 2301,15 , 2316,6 , 2, 0, 1, 6, 7 }, // French/Latin/Switzerland + { 37, 7, 207, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {83,89,80}, 233,2 , 8154,51 , 19,5 , 24,7 , 1939,8 , 2322,5 , 0, 0, 6, 5, 6 }, // French/Latin/Syria + { 37, 7, 212, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,79,70}, 207,5 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2327,4 , 0, 0, 1, 6, 7 }, // French/Latin/Togo + { 37, 7, 216, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {84,78,68}, 235,2 , 8205,51 , 19,5 , 24,7 , 1939,8 , 2331,7 , 3, 0, 1, 6, 7 }, // French/Latin/Tunisia + { 37, 7, 229, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {86,85,86}, 203,2 , 8256,51 , 19,5 , 24,7 , 1939,8 , 1765,7 , 0, 0, 1, 6, 7 }, // French/Latin/Vanuatu + { 37, 7, 235, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {88,80,70}, 218,4 , 7611,35 , 19,5 , 24,7 , 1939,8 , 2338,16 , 0, 0, 1, 6, 7 }, // French/Latin/Wallis And Futuna Islands + { 37, 7, 244, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2354,16 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Barthelemy + { 37, 7, 245, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 358,6 , 205,17 , 222,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2370,12 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Martin { 38, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 339,8 , 97,16 , 37,5 , 8,10 , 3121,21 , 3142,54 , 85,14 , 3121,21 , 3142,54 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 8,5 , 37,7 , 2382,5 , 2387,8 , 2, 1, 1, 6, 7 }, // Western Frisian/Latin/Netherlands - { 39, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 240,10 , 240,10 , 119,10 , 648,21 , 37,5 , 8,10 , 3196,28 , 3224,69 , 3293,14 , 3196,28 , 3224,69 , 3293,14 , 81,1 , 77,1 , 376,6 , 5,17 , 22,23 , {71,66,80}, 119,1 , 8307,86 , 4,4 , 13,6 , 2395,8 , 2403,22 , 2, 1, 1, 6, 7 }, // Gaelic/Latin/United Kingdom + { 39, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 240,10 , 240,10 , 119,10 , 648,21 , 37,5 , 8,10 , 3196,28 , 3224,69 , 3293,14 , 3196,28 , 3224,69 , 3293,14 , 81,1 , 77,1 , 364,6 , 5,17 , 22,23 , {71,66,80}, 119,1 , 8307,86 , 4,4 , 13,6 , 2395,8 , 2403,22 , 2, 1, 1, 6, 7 }, // Gaelic/Latin/United Kingdom { 40, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 3307,35 , 3342,49 , 3391,14 , 3405,35 , 3440,49 , 3489,21 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 4,0 , 2425,6 , 2431,6 , 2, 1, 1, 6, 7 }, // Galician/Latin/Spain - { 41, 15, 81, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 171, 187, 0,6 , 0,6 , 257,8 , 257,8 , 156,8 , 696,19 , 37,5 , 8,10 , 3510,28 , 3538,62 , 3600,14 , 3510,28 , 3538,62 , 3600,14 , 0,2 , 0,2 , 382,5 , 387,37 , 22,23 , {71,69,76}, 235,1 , 8393,43 , 19,5 , 4,0 , 2437,7 , 2444,10 , 2, 1, 1, 6, 7 }, // Georgian/Georgian/Georgia - { 42, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 424,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2454,7 , 2461,11 , 2, 1, 1, 6, 7 }, // German/Latin/Germany - { 42, 7, 14, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 424,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2472,24 , 2496,10 , 2, 1, 1, 6, 7 }, // German/Latin/Austria - { 42, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 424,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2454,7 , 2506,7 , 2, 1, 1, 6, 7 }, // German/Latin/Belgium - { 42, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 424,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2454,7 , 2513,7 , 2, 1, 1, 6, 7 }, // German/Latin/Italy - { 42, 7, 123, 46, 8217, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 424,5 , 5,17 , 22,23 , {67,72,70}, 228,3 , 8455,58 , 19,5 , 4,0 , 2454,7 , 2520,13 , 2, 0, 1, 6, 7 }, // German/Latin/Liechtenstein - { 42, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 424,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2454,7 , 2533,9 , 2, 1, 1, 6, 7 }, // German/Latin/Luxembourg - { 42, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 424,5 , 5,17 , 22,23 , {67,72,70}, 228,3 , 8455,58 , 19,5 , 4,0 , 2542,21 , 2563,7 , 2, 0, 1, 6, 7 }, // German/Latin/Switzerland + { 41, 15, 81, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 171, 187, 0,6 , 0,6 , 257,8 , 257,8 , 156,8 , 696,19 , 37,5 , 8,10 , 3510,28 , 3538,62 , 3600,14 , 3510,28 , 3538,62 , 3600,14 , 0,2 , 0,2 , 370,5 , 375,29 , 22,23 , {71,69,76}, 237,1 , 8393,43 , 19,5 , 4,0 , 2437,7 , 2444,10 , 2, 1, 1, 6, 7 }, // Georgian/Georgian/Georgia + { 42, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 404,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2454,7 , 2461,11 , 2, 1, 1, 6, 7 }, // German/Latin/Germany + { 42, 7, 14, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 404,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2472,24 , 2496,10 , 2, 1, 1, 6, 7 }, // German/Latin/Austria + { 42, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 404,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2454,7 , 2506,7 , 2, 1, 1, 6, 7 }, // German/Latin/Belgium + { 42, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 404,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2454,7 , 2513,7 , 2, 1, 1, 6, 7 }, // German/Latin/Italy + { 42, 7, 123, 46, 8217, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 404,5 , 5,17 , 22,23 , {67,72,70}, 230,3 , 8455,58 , 19,5 , 4,0 , 2454,7 , 2520,13 , 2, 0, 1, 6, 7 }, // German/Latin/Liechtenstein + { 42, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 404,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2454,7 , 2533,9 , 2, 1, 1, 6, 7 }, // German/Latin/Luxembourg + { 42, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 404,5 , 5,17 , 22,23 , {67,72,70}, 230,3 , 8455,58 , 19,5 , 4,0 , 2542,21 , 2563,7 , 2, 0, 1, 6, 7 }, // German/Latin/Switzerland { 43, 16, 85, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 274,9 , 274,9 , 269,6 , 10,17 , 18,7 , 25,12 , 3737,28 , 3765,55 , 3820,14 , 3737,28 , 3765,55 , 3820,14 , 82,4 , 78,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8513,19 , 19,5 , 4,0 , 2570,8 , 2578,6 , 2, 1, 1, 6, 7 }, // Greek/Greek/Greece { 43, 16, 56, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 274,9 , 274,9 , 269,6 , 10,17 , 18,7 , 25,12 , 3737,28 , 3765,55 , 3820,14 , 3737,28 , 3765,55 , 3820,14 , 82,4 , 78,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8513,19 , 19,5 , 4,0 , 2570,8 , 2584,6 , 2, 1, 1, 6, 7 }, // Greek/Greek/Cyprus { 44, 7, 86, 44, 46, 59, 37, 48, 8722, 43, 101, 187, 171, 8250, 8249, 0,6 , 0,6 , 283,11 , 283,11 , 53,10 , 80,17 , 239,5 , 244,10 , 3834,28 , 3862,98 , 3960,14 , 3834,28 , 3862,98 , 3960,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {68,75,75}, 148,3 , 8532,62 , 4,4 , 49,5 , 2590,11 , 2601,16 , 2, 0, 1, 6, 7 }, // Greenlandic/Latin/Greenland - { 45, 7, 168, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,89,71}, 236,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 7, 6, 7 }, // Guarani/Latin/Paraguay - { 46, 17, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 294,9 , 294,9 , 269,6 , 192,18 , 362,8 , 370,13 , 3974,32 , 4006,53 , 4059,19 , 3974,32 , 4006,53 , 4059,19 , 0,2 , 0,2 , 429,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 8594,46 , 4,4 , 13,6 , 2617,7 , 2624,4 , 2, 1, 7, 7, 7 }, // Gujarati/Gujarati/India - { 47, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 303,9 , 312,8 , 269,6 , 715,17 , 37,5 , 8,10 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 0,5 , 433,41 , 474,47 , {78,71,78}, 178,1 , 8640,52 , 8,5 , 4,0 , 2628,5 , 2633,8 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Nigeria + { 45, 7, 168, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,89,71}, 238,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 7, 6, 7 }, // Guarani/Latin/Paraguay + { 46, 17, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 294,9 , 294,9 , 269,6 , 192,18 , 362,8 , 370,13 , 3974,32 , 4006,53 , 4059,19 , 3974,32 , 4006,53 , 4059,19 , 0,2 , 0,2 , 409,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 8594,46 , 4,4 , 13,6 , 2617,7 , 2624,4 , 2, 1, 7, 7, 7 }, // Gujarati/Gujarati/India + { 47, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 303,9 , 312,8 , 269,6 , 715,17 , 37,5 , 8,10 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 0,5 , 413,41 , 454,47 , {78,71,78}, 178,1 , 8640,52 , 8,5 , 4,0 , 2628,5 , 2633,8 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Nigeria { 47, 1, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Hausa/Arabic/Nigeria - { 47, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 303,9 , 312,8 , 269,6 , 715,17 , 18,7 , 25,12 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 0,5 , 433,41 , 474,47 , {71,72,83}, 167,3 , 8692,46 , 8,5 , 4,0 , 2628,5 , 2641,4 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Ghana - { 47, 7, 156, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 303,9 , 312,8 , 269,6 , 715,17 , 37,5 , 8,10 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 0,5 , 433,41 , 474,47 , {88,79,70}, 207,3 , 8738,36 , 8,5 , 4,0 , 2628,5 , 2645,5 , 0, 0, 1, 6, 7 }, // Hausa/Latin/Niger - { 48, 18, 105, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 320,6 , 320,6 , 640,8 , 732,18 , 55,4 , 59,9 , 4172,46 , 4218,65 , 4283,21 , 4172,46 , 4218,65 , 4283,21 , 92,6 , 87,5 , 521,4 , 5,17 , 22,23 , {73,76,83}, 49,1 , 8774,54 , 19,5 , 4,0 , 2650,5 , 2655,5 , 2, 1, 7, 5, 6 }, // Hebrew/Hebrew/Israel - { 49, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 326,9 , 335,8 , 269,6 , 10,17 , 18,7 , 25,12 , 4304,32 , 4336,53 , 4389,19 , 4304,32 , 4336,53 , 4389,19 , 68,2 , 65,2 , 525,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 8828,42 , 4,4 , 4,0 , 2660,6 , 2666,4 , 2, 1, 7, 7, 7 }, // Hindi/Devanagari/India + { 47, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 303,9 , 312,8 , 269,6 , 715,17 , 18,7 , 25,12 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 0,5 , 413,41 , 454,47 , {71,72,83}, 167,3 , 8692,46 , 8,5 , 4,0 , 2628,5 , 2641,4 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Ghana + { 47, 7, 156, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 303,9 , 312,8 , 269,6 , 715,17 , 37,5 , 8,10 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 0,5 , 413,41 , 454,47 , {88,79,70}, 207,5 , 8738,36 , 8,5 , 4,0 , 2628,5 , 2645,5 , 0, 0, 1, 6, 7 }, // Hausa/Latin/Niger + { 48, 18, 105, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 320,6 , 320,6 , 640,8 , 732,18 , 55,4 , 59,9 , 4172,46 , 4218,65 , 4283,21 , 4172,46 , 4218,65 , 4283,21 , 92,6 , 87,5 , 501,4 , 5,17 , 22,23 , {73,76,83}, 49,1 , 8774,54 , 19,5 , 4,0 , 2650,5 , 2655,5 , 2, 1, 7, 5, 6 }, // Hebrew/Hebrew/Israel + { 49, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 326,9 , 335,8 , 269,6 , 10,17 , 18,7 , 25,12 , 4304,32 , 4336,53 , 4389,19 , 4304,32 , 4336,53 , 4389,19 , 68,2 , 65,2 , 505,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 8828,42 , 4,4 , 4,0 , 2660,6 , 2666,4 , 2, 1, 7, 7, 7 }, // Hindi/Devanagari/India { 49, 7, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 7, 7 }, // Hindi/Latin/India - { 50, 7, 98, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 187, 171, 0,6 , 0,6 , 343,8 , 343,8 , 750,13 , 763,19 , 55,4 , 59,9 , 4408,19 , 4427,52 , 4479,17 , 4408,19 , 4427,52 , 4479,17 , 98,3 , 92,3 , 529,4 , 5,17 , 22,23 , {72,85,70}, 237,2 , 8870,46 , 19,5 , 4,0 , 2670,6 , 2676,12 , 2, 0, 1, 6, 7 }, // Hungarian/Latin/Hungary - { 51, 7, 99, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 188,8 , 188,8 , 640,8 , 622,18 , 37,5 , 8,10 , 4496,35 , 4531,81 , 4612,14 , 4496,35 , 4531,81 , 4612,14 , 101,4 , 95,4 , 533,4 , 5,17 , 22,23 , {73,83,75}, 239,3 , 8916,49 , 19,5 , 4,0 , 2688,8 , 2696,6 , 0, 0, 1, 6, 7 }, // Icelandic/Latin/Iceland - { 52, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 351,10 , 361,9 , 27,8 , 553,18 , 239,5 , 244,10 , 4626,28 , 4654,43 , 4697,14 , 4626,28 , 4654,43 , 4697,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,68,82}, 242,2 , 8965,39 , 4,4 , 4,0 , 2702,9 , 2702,9 , 2, 0, 7, 6, 7 }, // Indonesian/Latin/Indonesia + { 50, 7, 98, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 187, 171, 0,6 , 0,6 , 343,8 , 343,8 , 750,13 , 763,19 , 55,4 , 59,9 , 4408,19 , 4427,52 , 4479,17 , 4408,19 , 4427,52 , 4479,17 , 98,3 , 92,3 , 509,4 , 5,17 , 22,23 , {72,85,70}, 239,2 , 8870,46 , 19,5 , 4,0 , 2670,6 , 2676,12 , 2, 0, 1, 6, 7 }, // Hungarian/Latin/Hungary + { 51, 7, 99, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 188,8 , 188,8 , 640,8 , 622,18 , 37,5 , 8,10 , 4496,35 , 4531,81 , 4612,14 , 4496,35 , 4531,81 , 4612,14 , 101,4 , 95,4 , 513,4 , 5,17 , 22,23 , {73,83,75}, 241,3 , 8916,49 , 19,5 , 4,0 , 2688,8 , 2696,6 , 0, 0, 1, 6, 7 }, // Icelandic/Latin/Iceland + { 52, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 351,10 , 361,9 , 27,8 , 553,18 , 239,5 , 244,10 , 4626,28 , 4654,43 , 4697,14 , 4626,28 , 4654,43 , 4697,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,68,82}, 244,2 , 8965,39 , 4,4 , 4,0 , 2702,9 , 2702,9 , 2, 0, 7, 6, 7 }, // Indonesian/Latin/Indonesia { 53, 7, 260, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 528,10 , 782,26 , 37,5 , 8,10 , 4711,28 , 4739,57 , 4796,14 , 4711,28 , 4739,57 , 4796,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 37,7 , 2711,11 , 2722,5 , 2, 1, 1, 6, 7 }, // Interlingua/Latin/World - { 55, 44, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 244,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Inuktitut/Canadian Aboriginal/Canada - { 55, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 244,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Inuktitut/Latin/Canada - { 57, 7, 104, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 240,10 , 240,10 , 119,10 , 97,16 , 37,5 , 8,10 , 4810,37 , 4847,75 , 4922,14 , 4810,37 , 4847,75 , 4922,14 , 105,4 , 99,4 , 537,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9004,31 , 4,4 , 13,6 , 2727,7 , 2734,4 , 2, 1, 1, 6, 7 }, // Irish/Latin/Ireland - { 57, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 240,10 , 240,10 , 119,10 , 97,16 , 37,5 , 8,10 , 4810,37 , 4847,75 , 4922,14 , 4810,37 , 4847,75 , 4922,14 , 105,4 , 99,4 , 537,6 , 5,17 , 22,23 , {71,66,80}, 119,1 , 9035,95 , 4,4 , 13,6 , 2727,7 , 2738,19 , 2, 1, 1, 6, 7 }, // Irish/Latin/United Kingdom + { 55, 44, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 246,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Inuktitut/Canadian Aboriginal/Canada + { 55, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 246,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Inuktitut/Latin/Canada + { 57, 7, 104, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 240,10 , 240,10 , 119,10 , 97,16 , 37,5 , 8,10 , 4810,37 , 4847,75 , 4922,14 , 4810,37 , 4847,75 , 4922,14 , 105,4 , 99,4 , 517,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9004,31 , 4,4 , 13,6 , 2727,7 , 2734,4 , 2, 1, 1, 6, 7 }, // Irish/Latin/Ireland + { 57, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 240,10 , 240,10 , 119,10 , 97,16 , 37,5 , 8,10 , 4810,37 , 4847,75 , 4922,14 , 4810,37 , 4847,75 , 4922,14 , 105,4 , 99,4 , 517,6 , 5,17 , 22,23 , {71,66,80}, 119,1 , 9035,95 , 4,4 , 13,6 , 2727,7 , 2738,19 , 2, 1, 1, 6, 7 }, // Irish/Latin/United Kingdom { 58, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9130,19 , 19,5 , 4,0 , 2757,8 , 2765,6 , 2, 1, 1, 6, 7 }, // Italian/Latin/Italy { 58, 7, 184, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9130,19 , 19,5 , 4,0 , 2757,8 , 2771,10 , 2, 1, 1, 6, 7 }, // Italian/Latin/San Marino { 58, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 250,7 , 250,7 , 156,8 , 10,17 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,72,70}, 0,0 , 9149,53 , 19,5 , 4,0 , 2757,8 , 2781,8 , 2, 0, 1, 6, 7 }, // Italian/Latin/Switzerland { 58, 7, 230, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9130,19 , 19,5 , 4,0 , 2757,8 , 2789,18 , 2, 1, 1, 6, 7 }, // Italian/Latin/Vatican City State - { 59, 19, 108, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 166,5 , 166,5 , 578,10 , 402,13 , 55,4 , 383,10 , 5035,14 , 5049,28 , 5035,14 , 5035,14 , 5049,28 , 5035,14 , 109,2 , 103,2 , 543,3 , 546,17 , 22,23 , {74,80,89}, 247,1 , 9202,11 , 4,4 , 13,6 , 2807,3 , 2810,2 , 0, 0, 7, 6, 7 }, // Japanese/Japanese/Japan - { 60, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 370,10 , 380,9 , 528,10 , 10,17 , 37,5 , 8,10 , 5077,29 , 5106,41 , 5147,14 , 5077,29 , 5106,41 , 5147,14 , 111,4 , 105,5 , 563,4 , 5,17 , 22,23 , {73,68,82}, 242,2 , 8965,39 , 8,5 , 4,0 , 2812,4 , 2816,9 , 2, 0, 7, 6, 7 }, // Javanese/Latin/Indonesia - { 61, 21, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 389,12 , 401,11 , 269,6 , 35,18 , 362,8 , 370,13 , 5161,33 , 5194,54 , 5248,20 , 5161,33 , 5194,54 , 5248,20 , 115,9 , 110,7 , 567,8 , 575,35 , 22,23 , {73,78,82}, 121,1 , 9213,49 , 4,4 , 13,6 , 2825,5 , 2830,4 , 2, 1, 7, 7, 7 }, // Kannada/Kannada/India + { 59, 19, 108, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 166,5 , 166,5 , 578,10 , 402,13 , 55,4 , 383,10 , 5035,14 , 5049,28 , 5035,14 , 5035,14 , 5049,28 , 5035,14 , 109,2 , 103,2 , 523,3 , 526,17 , 22,23 , {74,80,89}, 249,1 , 9202,11 , 4,4 , 13,6 , 2807,3 , 2810,2 , 0, 0, 7, 6, 7 }, // Japanese/Japanese/Japan + { 60, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 370,10 , 380,9 , 528,10 , 10,17 , 37,5 , 8,10 , 5077,29 , 5106,41 , 5147,14 , 5077,29 , 5106,41 , 5147,14 , 111,4 , 105,5 , 543,4 , 5,17 , 22,23 , {73,68,82}, 244,2 , 8965,39 , 8,5 , 4,0 , 2812,4 , 2816,9 , 2, 0, 7, 6, 7 }, // Javanese/Latin/Indonesia + { 61, 21, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 389,12 , 401,11 , 269,6 , 35,18 , 362,8 , 370,13 , 5161,33 , 5194,54 , 5248,20 , 5161,33 , 5194,54 , 5248,20 , 115,9 , 110,7 , 547,8 , 555,35 , 22,23 , {73,78,82}, 121,1 , 9213,49 , 4,4 , 13,6 , 2825,5 , 2830,4 , 2, 1, 7, 7, 7 }, // Kannada/Kannada/India { 62, 1, 100, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 5268,50 , 5318,52 , 5370,14 , 5268,50 , 5318,52 , 5370,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 9262,23 , 8,5 , 4,0 , 2834,5 , 2839,9 , 2, 1, 7, 7, 7 }, // Kashmiri/Arabic/India { 62, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 7, 7 }, // Kashmiri/Devanagari/India - { 63, 2, 110, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 412,10 , 156,8 , 808,22 , 37,5 , 8,10 , 5384,21 , 5405,56 , 5461,14 , 5384,21 , 5405,56 , 5461,14 , 0,2 , 0,2 , 610,4 , 614,17 , 631,23 , {75,90,84}, 248,1 , 9285,58 , 19,5 , 4,0 , 2848,10 , 2858,9 , 2, 1, 1, 6, 7 }, // Kazakh/Cyrillic/Kazakhstan + { 63, 2, 110, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 412,10 , 156,8 , 808,22 , 37,5 , 8,10 , 5384,21 , 5405,56 , 5461,14 , 5384,21 , 5405,56 , 5461,14 , 0,2 , 0,2 , 590,4 , 594,17 , 611,23 , {75,90,84}, 250,1 , 9285,58 , 19,5 , 4,0 , 2848,10 , 2858,9 , 2, 1, 1, 6, 7 }, // Kazakh/Cyrillic/Kazakhstan { 64, 7, 179, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 5475,35 , 5510,84 , 85,14 , 5475,35 , 5510,84 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,87,70}, 180,2 , 0,7 , 8,5 , 4,0 , 2867,11 , 2878,8 , 0, 0, 1, 6, 7 }, // Kinyarwanda/Latin/Rwanda - { 65, 2, 116, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 422,10 , 422,10 , 269,6 , 830,23 , 37,5 , 8,10 , 5594,38 , 5632,57 , 5689,14 , 5594,38 , 5632,57 , 5689,14 , 124,5 , 117,14 , 610,4 , 654,18 , 22,23 , {75,71,83}, 249,3 , 9343,52 , 19,5 , 4,0 , 2886,8 , 2894,10 , 2, 1, 1, 6, 7 }, // Kirghiz/Cyrillic/Kyrgyzstan - { 66, 22, 114, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 432,7 , 432,7 , 853,9 , 862,16 , 393,7 , 400,13 , 5703,14 , 5717,28 , 5703,14 , 5703,14 , 5717,28 , 5703,14 , 129,2 , 131,2 , 672,3 , 5,17 , 22,23 , {75,82,87}, 252,1 , 9395,19 , 4,4 , 13,6 , 2904,3 , 2907,4 , 0, 0, 7, 6, 7 }, // Korean/Korean/South Korea - { 66, 22, 113, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 432,7 , 432,7 , 853,9 , 862,16 , 393,7 , 400,13 , 5703,14 , 5717,28 , 5703,14 , 5703,14 , 5717,28 , 5703,14 , 129,2 , 131,2 , 672,3 , 5,17 , 22,23 , {75,80,87}, 253,3 , 9414,39 , 4,4 , 13,6 , 2904,3 , 2911,11 , 0, 0, 1, 6, 7 }, // Korean/Korean/North Korea - { 67, 7, 217, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 439,7 , 439,7 , 53,10 , 63,17 , 37,5 , 8,10 , 5745,20 , 5765,42 , 5807,14 , 5745,20 , 5765,42 , 5807,14 , 131,2 , 133,2 , 45,4 , 5,17 , 22,23 , {84,82,89}, 256,1 , 0,7 , 19,5 , 24,7 , 2922,5 , 2927,7 , 2, 1, 1, 6, 7 }, // Kurdish/Latin/Turkey + { 65, 2, 116, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 422,10 , 422,10 , 269,6 , 830,23 , 37,5 , 8,10 , 5594,38 , 5632,57 , 5689,14 , 5594,38 , 5632,57 , 5689,14 , 124,5 , 117,14 , 590,4 , 634,18 , 22,23 , {75,71,83}, 251,3 , 9343,52 , 19,5 , 4,0 , 2886,8 , 2894,10 , 2, 1, 1, 6, 7 }, // Kirghiz/Cyrillic/Kyrgyzstan + { 66, 22, 114, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 432,7 , 432,7 , 853,9 , 862,16 , 393,7 , 400,13 , 5703,14 , 5717,28 , 5703,14 , 5703,14 , 5717,28 , 5703,14 , 129,2 , 131,2 , 652,3 , 5,17 , 22,23 , {75,82,87}, 254,1 , 9395,19 , 4,4 , 13,6 , 2904,3 , 2907,4 , 0, 0, 7, 6, 7 }, // Korean/Korean/South Korea + { 66, 22, 113, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 432,7 , 432,7 , 853,9 , 862,16 , 393,7 , 400,13 , 5703,14 , 5717,28 , 5703,14 , 5703,14 , 5717,28 , 5703,14 , 129,2 , 131,2 , 652,3 , 5,17 , 22,23 , {75,80,87}, 255,3 , 9414,39 , 4,4 , 13,6 , 2904,3 , 2911,11 , 0, 0, 1, 6, 7 }, // Korean/Korean/North Korea + { 67, 7, 217, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 439,7 , 439,7 , 53,10 , 63,17 , 37,5 , 8,10 , 5745,20 , 5765,42 , 5807,14 , 5745,20 , 5765,42 , 5807,14 , 131,2 , 133,2 , 45,4 , 5,17 , 22,23 , {84,82,89}, 258,1 , 0,7 , 19,5 , 24,7 , 2922,5 , 2927,7 , 2, 1, 1, 6, 7 }, // Kurdish/Latin/Turkey { 68, 7, 35, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 5821,34 , 5855,89 , 85,14 , 5821,34 , 5855,89 , 85,14 , 133,5 , 135,5 , 45,4 , 5,17 , 22,23 , {66,73,70}, 163,3 , 9453,27 , 0,4 , 4,0 , 2934,8 , 2942,8 , 0, 0, 1, 6, 7 }, // Rundi/Latin/Burundi - { 69, 23, 117, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 446,9 , 415,8 , 878,19 , 55,4 , 413,24 , 5944,36 , 5980,57 , 6037,17 , 5944,36 , 5980,57 , 6037,17 , 138,8 , 140,8 , 45,4 , 5,17 , 22,23 , {76,65,75}, 257,1 , 9480,21 , 4,4 , 44,5 , 2950,3 , 2950,3 , 0, 0, 7, 6, 7 }, // Lao/Lao/Laos + { 69, 23, 117, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 446,9 , 415,8 , 878,19 , 55,4 , 413,24 , 5944,36 , 5980,57 , 6037,17 , 5944,36 , 5980,57 , 6037,17 , 138,8 , 140,8 , 45,4 , 5,17 , 22,23 , {76,65,75}, 259,1 , 9480,21 , 4,4 , 44,5 , 2950,3 , 2950,3 , 0, 0, 7, 6, 7 }, // Lao/Lao/Laos { 70, 7, 230, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Latin/Latin/Vatican City State - { 71, 7, 118, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 455,8 , 455,8 , 156,8 , 897,26 , 37,5 , 8,10 , 6054,51 , 6105,72 , 6177,14 , 6191,51 , 6242,72 , 6177,14 , 146,14 , 148,11 , 675,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9501,23 , 19,5 , 4,0 , 2953,8 , 2961,7 , 2, 1, 1, 6, 7 }, // Latvian/Latin/Latvia - { 72, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 463,9 , 463,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {67,68,70}, 214,2 , 9524,23 , 19,5 , 4,0 , 2968,7 , 2975,30 , 2, 1, 1, 6, 7 }, // Lingala/Latin/Congo Kinshasa - { 72, 7, 6, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 463,9 , 463,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {65,79,65}, 258,2 , 9547,23 , 19,5 , 4,0 , 2968,7 , 3005,6 , 2, 1, 1, 6, 7 }, // Lingala/Latin/Angola + { 71, 7, 118, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 455,8 , 455,8 , 156,8 , 897,26 , 37,5 , 8,10 , 6054,51 , 6105,72 , 6177,14 , 6191,51 , 6242,72 , 6177,14 , 146,14 , 148,11 , 655,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9501,23 , 19,5 , 4,0 , 2953,8 , 2961,7 , 2, 1, 1, 6, 7 }, // Latvian/Latin/Latvia + { 72, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 463,9 , 463,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {67,68,70}, 216,2 , 9524,23 , 19,5 , 4,0 , 2968,7 , 2975,30 , 2, 1, 1, 6, 7 }, // Lingala/Latin/Congo Kinshasa + { 72, 7, 6, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 463,9 , 463,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {65,79,65}, 260,2 , 9547,23 , 19,5 , 4,0 , 2968,7 , 3005,6 , 2, 1, 1, 6, 7 }, // Lingala/Latin/Angola { 72, 7, 41, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 463,9 , 463,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 9570,23 , 19,5 , 4,0 , 2968,7 , 3011,26 , 0, 0, 1, 6, 7 }, // Lingala/Latin/Central African Republic { 72, 7, 50, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 463,9 , 463,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 9570,23 , 19,5 , 4,0 , 2968,7 , 3037,5 , 0, 0, 1, 6, 7 }, // Lingala/Latin/Congo Brazzaville - { 73, 7, 124, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 472,8 , 472,8 , 53,10 , 923,27 , 37,5 , 8,10 , 6456,21 , 6477,89 , 6566,14 , 6456,21 , 6477,89 , 6566,14 , 168,9 , 165,6 , 680,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9593,30 , 19,5 , 4,0 , 3042,8 , 3050,7 , 2, 1, 1, 6, 7 }, // Lithuanian/Latin/Lithuania - { 74, 2, 127, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 113,6 , 10,17 , 37,5 , 8,10 , 6580,35 , 6615,54 , 1530,14 , 6669,34 , 6615,54 , 1530,14 , 177,10 , 171,8 , 686,5 , 5,17 , 22,23 , {77,75,68}, 260,4 , 9623,56 , 19,5 , 4,0 , 3057,10 , 3067,18 , 2, 1, 1, 6, 7 }, // Macedonian/Cyrillic/Macedonia + { 73, 7, 124, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 472,8 , 472,8 , 53,10 , 923,27 , 37,5 , 8,10 , 6456,21 , 6477,89 , 6566,14 , 6456,21 , 6477,89 , 6566,14 , 168,9 , 165,6 , 660,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9593,30 , 19,5 , 4,0 , 3042,8 , 3050,7 , 2, 1, 1, 6, 7 }, // Lithuanian/Latin/Lithuania + { 74, 2, 127, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 113,6 , 10,17 , 37,5 , 8,10 , 6580,35 , 6615,54 , 1530,14 , 6669,34 , 6615,54 , 1530,14 , 177,10 , 171,8 , 666,5 , 5,17 , 22,23 , {77,75,68}, 262,4 , 9623,56 , 19,5 , 4,0 , 3057,10 , 3067,18 , 2, 1, 1, 6, 7 }, // Macedonian/Cyrillic/Macedonia { 75, 7, 128, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 97,16 , 37,5 , 8,10 , 6703,34 , 6737,60 , 6797,14 , 6703,34 , 6737,60 , 6797,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,71,65}, 170,2 , 9679,13 , 4,4 , 4,0 , 3085,8 , 3093,12 , 0, 0, 1, 6, 7 }, // Malagasy/Latin/Madagascar - { 76, 7, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 361,9 , 361,9 , 571,7 , 10,17 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 691,4 , 5,17 , 22,23 , {77,89,82}, 174,2 , 9692,39 , 4,4 , 13,6 , 3105,6 , 1249,8 , 2, 1, 1, 6, 7 }, // Malay/Latin/Malaysia + { 76, 7, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 361,9 , 361,9 , 571,7 , 10,17 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 671,4 , 5,17 , 22,23 , {77,89,82}, 174,2 , 9692,39 , 4,4 , 13,6 , 3105,6 , 1249,8 , 2, 1, 1, 6, 7 }, // Malay/Latin/Malaysia { 76, 1, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,89,82}, 174,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Malay/Arabic/Malaysia - { 76, 7, 32, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 361,9 , 361,9 , 571,7 , 950,12 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 691,4 , 5,17 , 22,23 , {66,78,68}, 6,1 , 9731,31 , 4,4 , 13,6 , 3105,6 , 3111,6 , 2, 1, 1, 6, 7 }, // Malay/Latin/Brunei - { 76, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 361,9 , 361,9 , 27,8 , 553,18 , 239,5 , 244,10 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 691,4 , 5,17 , 22,23 , {73,68,82}, 242,2 , 8965,39 , 4,4 , 4,0 , 3105,6 , 2702,9 , 2, 0, 7, 6, 7 }, // Malay/Latin/Indonesia - { 76, 7, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 361,9 , 361,9 , 571,7 , 10,17 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 691,4 , 5,17 , 22,23 , {83,71,68}, 6,1 , 9762,37 , 4,4 , 13,6 , 3105,6 , 3117,9 , 2, 1, 7, 6, 7 }, // Malay/Latin/Singapore - { 77, 24, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 480,13 , 493,12 , 269,6 , 962,18 , 18,7 , 25,12 , 6896,41 , 6937,77 , 7014,22 , 6896,41 , 7036,76 , 7112,21 , 0,2 , 0,2 , 695,6 , 701,27 , 22,23 , {73,78,82}, 121,1 , 9799,40 , 4,4 , 13,6 , 3126,6 , 3132,6 , 2, 1, 7, 7, 7 }, // Malayalam/Malayalam/India + { 76, 7, 32, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 361,9 , 361,9 , 571,7 , 950,12 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 671,4 , 5,17 , 22,23 , {66,78,68}, 6,1 , 9731,31 , 4,4 , 13,6 , 3105,6 , 3111,6 , 2, 1, 1, 6, 7 }, // Malay/Latin/Brunei + { 76, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 361,9 , 361,9 , 27,8 , 553,18 , 239,5 , 244,10 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 671,4 , 5,17 , 22,23 , {73,68,82}, 244,2 , 8965,39 , 4,4 , 4,0 , 3105,6 , 2702,9 , 2, 0, 7, 6, 7 }, // Malay/Latin/Indonesia + { 76, 7, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 361,9 , 361,9 , 571,7 , 10,17 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 671,4 , 5,17 , 22,23 , {83,71,68}, 6,1 , 9762,37 , 4,4 , 13,6 , 3105,6 , 3117,9 , 2, 1, 7, 6, 7 }, // Malay/Latin/Singapore + { 77, 24, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 480,13 , 493,12 , 269,6 , 962,18 , 18,7 , 25,12 , 6896,41 , 6937,77 , 7014,22 , 6896,41 , 7036,76 , 7112,21 , 0,2 , 0,2 , 675,6 , 681,27 , 22,23 , {73,78,82}, 121,1 , 9799,40 , 4,4 , 13,6 , 3126,6 , 3132,6 , 2, 1, 7, 7, 7 }, // Malayalam/Malayalam/India { 78, 7, 133, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 505,8 , 513,7 , 119,10 , 980,23 , 37,5 , 8,10 , 7133,28 , 7161,63 , 7224,21 , 7133,28 , 7161,63 , 7245,20 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9839,27 , 4,4 , 4,0 , 3138,5 , 1257,5 , 2, 1, 7, 6, 7 }, // Maltese/Latin/Malta { 79, 7, 154, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 528,10 , 10,17 , 18,7 , 25,12 , 7265,27 , 7292,47 , 7339,14 , 7265,27 , 7292,47 , 7339,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,90,68}, 6,1 , 9866,37 , 8,5 , 4,0 , 3143,12 , 3155,8 , 2, 1, 1, 6, 7 }, // Maori/Latin/New Zealand - { 80, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 520,9 , 520,9 , 269,6 , 192,18 , 18,7 , 25,12 , 7353,32 , 7385,53 , 4389,19 , 7353,32 , 7385,53 , 4389,19 , 0,2 , 0,2 , 525,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 9903,43 , 4,4 , 13,6 , 3163,5 , 2666,4 , 2, 1, 7, 7, 7 }, // Marathi/Devanagari/India - { 82, 2, 143, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1003,10 , 1013,35 , 37,5 , 87,12 , 7438,21 , 7459,43 , 7438,21 , 7438,21 , 7502,43 , 7438,21 , 189,4 , 182,4 , 610,4 , 728,17 , 22,23 , {77,78,84}, 264,1 , 9946,46 , 8,5 , 4,0 , 3168,6 , 3174,6 , 2, 0, 1, 6, 7 }, // Mongolian/Cyrillic/Mongolia - { 82, 8, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 265,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Mongolian/Mongolian/China - { 84, 13, 150, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 529,5 , 0,6 , 534,7 , 534,7 , 227,6 , 63,17 , 37,5 , 8,10 , 7545,33 , 7578,54 , 7632,18 , 7545,33 , 7578,54 , 7632,18 , 193,9 , 186,7 , 525,4 , 745,19 , 22,23 , {78,80,82}, 268,4 , 9992,49 , 8,5 , 4,0 , 3180,6 , 3186,5 , 2, 1, 7, 6, 7 }, // Nepali/Devanagari/Nepal - { 84, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 529,5 , 0,6 , 534,7 , 534,7 , 227,6 , 63,17 , 18,7 , 25,12 , 7545,33 , 7578,54 , 7632,18 , 7545,33 , 7578,54 , 7632,18 , 193,9 , 186,7 , 525,4 , 745,19 , 22,23 , {73,78,82}, 121,1 , 10041,49 , 8,5 , 4,0 , 3180,6 , 2666,4 , 2, 1, 7, 7, 7 }, // Nepali/Devanagari/India + { 80, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 520,9 , 520,9 , 269,6 , 192,18 , 18,7 , 25,12 , 7353,32 , 7385,53 , 4389,19 , 7353,32 , 7385,53 , 4389,19 , 0,2 , 0,2 , 505,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 9903,43 , 4,4 , 13,6 , 3163,5 , 2666,4 , 2, 1, 7, 7, 7 }, // Marathi/Devanagari/India + { 82, 2, 143, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1003,10 , 1013,35 , 37,5 , 87,12 , 7438,21 , 7459,43 , 7438,21 , 7438,21 , 7502,43 , 7438,21 , 189,4 , 182,4 , 590,4 , 708,17 , 22,23 , {77,78,84}, 266,1 , 9946,46 , 8,5 , 4,0 , 3168,6 , 3174,6 , 2, 0, 1, 6, 7 }, // Mongolian/Cyrillic/Mongolia + { 82, 8, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 267,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Mongolian/Mongolian/China + { 84, 13, 150, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 529,5 , 0,6 , 534,7 , 534,7 , 227,6 , 63,17 , 37,5 , 8,10 , 7545,33 , 7578,54 , 7632,18 , 7545,33 , 7578,54 , 7632,18 , 193,9 , 186,7 , 505,4 , 725,19 , 22,23 , {78,80,82}, 270,4 , 9992,49 , 8,5 , 4,0 , 3180,6 , 3186,5 , 2, 1, 7, 6, 7 }, // Nepali/Devanagari/Nepal + { 84, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 529,5 , 0,6 , 534,7 , 534,7 , 227,6 , 63,17 , 18,7 , 25,12 , 7545,33 , 7578,54 , 7632,18 , 7545,33 , 7578,54 , 7632,18 , 193,9 , 186,7 , 505,4 , 725,19 , 22,23 , {73,78,82}, 121,1 , 10041,49 , 8,5 , 4,0 , 3180,6 , 2666,4 , 2, 1, 7, 7, 7 }, // Nepali/Devanagari/India { 85, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 495,10 , 478,17 , 37,5 , 8,10 , 2334,35 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 10090,44 , 8,5 , 4,0 , 3191,12 , 3203,5 , 2, 0, 1, 6, 7 }, // Norwegian Bokmal/Latin/Norway { 85, 7, 203, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 495,10 , 478,17 , 37,5 , 8,10 , 2334,35 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 10090,44 , 8,5 , 4,0 , 3191,12 , 3208,21 , 2, 0, 1, 6, 7 }, // Norwegian Bokmal/Latin/Svalbard And Jan Mayen Islands { 86, 7, 74, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Occitan/Latin/France - { 87, 26, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 541,8 , 549,7 , 547,6 , 35,18 , 18,7 , 25,12 , 7650,33 , 7683,54 , 7737,18 , 7650,33 , 7683,54 , 7737,18 , 0,2 , 0,2 , 764,5 , 5,17 , 22,23 , {73,78,82}, 121,1 , 10134,43 , 4,4 , 13,6 , 3229,5 , 3234,4 , 2, 1, 7, 7, 7 }, // Oriya/Oriya/India - { 88, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 556,6 , 556,6 , 562,9 , 571,8 , 394,8 , 1048,20 , 55,4 , 198,11 , 7755,39 , 7755,39 , 85,14 , 7755,39 , 7755,39 , 85,14 , 202,4 , 193,4 , 769,5 , 5,17 , 22,23 , {65,70,78}, 272,1 , 10177,25 , 4,4 , 13,6 , 3238,4 , 3242,9 , 0, 0, 6, 4, 5 }, // Pashto/Arabic/Afghanistan - { 88, 1, 163, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 556,6 , 556,6 , 562,9 , 571,8 , 394,8 , 1048,20 , 18,7 , 25,12 , 7755,39 , 7755,39 , 85,14 , 7755,39 , 7755,39 , 85,14 , 202,4 , 193,4 , 769,5 , 5,17 , 22,23 , {80,75,82}, 176,2 , 10202,52 , 4,4 , 13,6 , 3238,4 , 3251,7 , 2, 0, 7, 6, 7 }, // Pashto/Arabic/Pakistan - { 89, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 579,7 , 579,7 , 586,8 , 594,7 , 394,8 , 97,16 , 55,4 , 198,11 , 7794,49 , 7794,49 , 7843,14 , 7794,49 , 7794,49 , 7843,14 , 206,9 , 197,8 , 774,4 , 778,42 , 22,23 , {73,82,82}, 273,4 , 10254,37 , 54,6 , 60,8 , 3258,5 , 3263,5 , 0, 0, 6, 5, 5 }, // Persian/Arabic/Iran - { 89, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 579,7 , 579,7 , 586,8 , 594,7 , 394,8 , 97,16 , 55,4 , 198,11 , 7794,49 , 7794,49 , 7843,14 , 7794,49 , 7794,49 , 7843,14 , 206,9 , 197,8 , 774,4 , 778,42 , 22,23 , {65,70,78}, 272,1 , 10291,55 , 8,5 , 60,8 , 3268,3 , 3242,9 , 0, 0, 6, 4, 5 }, // Persian/Arabic/Afghanistan - { 90, 7, 172, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 159,7 , 159,7 , 495,10 , 10,17 , 37,5 , 8,10 , 7857,34 , 7891,59 , 7950,14 , 7857,34 , 7891,59 , 7964,14 , 0,2 , 0,2 , 305,5 , 5,17 , 22,23 , {80,76,78}, 277,2 , 10346,77 , 19,5 , 24,7 , 3271,6 , 3277,6 , 2, 1, 1, 6, 7 }, // Polish/Latin/Poland - { 91, 7, 30, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 250,7 , 250,7 , 119,10 , 669,27 , 37,5 , 8,10 , 7978,35 , 8013,79 , 8092,14 , 7978,35 , 8013,79 , 8092,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {66,82,76}, 279,2 , 10423,54 , 8,5 , 4,0 , 3283,9 , 3292,6 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Brazil - { 91, 7, 6, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {65,79,65}, 258,2 , 10477,54 , 19,5 , 24,7 , 3283,9 , 3298,6 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Angola - { 91, 7, 39, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {67,86,69}, 281,1 , 10531,69 , 19,5 , 24,7 , 3283,9 , 3304,10 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Cape Verde + { 87, 26, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 541,8 , 549,7 , 547,6 , 35,18 , 18,7 , 25,12 , 7650,33 , 7683,54 , 7737,18 , 7650,33 , 7683,54 , 7737,18 , 0,2 , 0,2 , 744,5 , 5,17 , 22,23 , {73,78,82}, 121,1 , 10134,43 , 4,4 , 13,6 , 3229,5 , 3234,4 , 2, 1, 7, 7, 7 }, // Oriya/Oriya/India + { 88, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 556,6 , 556,6 , 562,9 , 571,8 , 394,8 , 1048,20 , 55,4 , 198,11 , 7755,39 , 7755,39 , 85,14 , 7755,39 , 7755,39 , 85,14 , 202,4 , 193,4 , 749,5 , 5,17 , 22,23 , {65,70,78}, 274,1 , 10177,25 , 4,4 , 13,6 , 3238,4 , 3242,9 , 0, 0, 6, 4, 5 }, // Pashto/Arabic/Afghanistan + { 88, 1, 163, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 556,6 , 556,6 , 562,9 , 571,8 , 394,8 , 1048,20 , 18,7 , 25,12 , 7755,39 , 7755,39 , 85,14 , 7755,39 , 7755,39 , 85,14 , 202,4 , 193,4 , 749,5 , 5,17 , 22,23 , {80,75,82}, 176,2 , 10202,52 , 4,4 , 13,6 , 3238,4 , 3251,7 , 2, 0, 7, 6, 7 }, // Pashto/Arabic/Pakistan + { 89, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 579,7 , 579,7 , 586,8 , 594,7 , 394,8 , 97,16 , 55,4 , 198,11 , 7794,49 , 7794,49 , 7843,14 , 7794,49 , 7794,49 , 7843,14 , 206,9 , 197,8 , 754,4 , 5,17 , 22,23 , {73,82,82}, 275,4 , 10254,37 , 54,6 , 60,8 , 3258,5 , 3263,5 , 0, 0, 6, 5, 5 }, // Persian/Arabic/Iran + { 89, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 579,7 , 579,7 , 586,8 , 594,7 , 394,8 , 97,16 , 55,4 , 198,11 , 7794,49 , 7794,49 , 7843,14 , 7794,49 , 7794,49 , 7843,14 , 206,9 , 197,8 , 754,4 , 5,17 , 22,23 , {65,70,78}, 274,1 , 10291,55 , 8,5 , 60,8 , 3268,3 , 3242,9 , 0, 0, 6, 4, 5 }, // Persian/Arabic/Afghanistan + { 90, 7, 172, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 159,7 , 159,7 , 495,10 , 10,17 , 37,5 , 8,10 , 7857,34 , 7891,59 , 7950,14 , 7857,34 , 7891,59 , 7964,14 , 0,2 , 0,2 , 293,5 , 5,17 , 22,23 , {80,76,78}, 279,2 , 10346,77 , 19,5 , 24,7 , 3271,6 , 3277,6 , 2, 1, 1, 6, 7 }, // Polish/Latin/Poland + { 91, 7, 30, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 250,7 , 250,7 , 119,10 , 669,27 , 37,5 , 8,10 , 7978,35 , 8013,79 , 8092,14 , 7978,35 , 8013,79 , 8092,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {66,82,76}, 281,2 , 10423,54 , 8,5 , 4,0 , 3283,9 , 3292,6 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Brazil + { 91, 7, 6, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {65,79,65}, 260,2 , 10477,54 , 19,5 , 24,7 , 3283,9 , 3298,6 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Angola + { 91, 7, 39, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {67,86,69}, 283,1 , 10531,69 , 19,5 , 24,7 , 3283,9 , 3304,10 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Cape Verde { 91, 7, 62, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 10600,81 , 19,5 , 24,7 , 3283,9 , 3314,11 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/East Timor { 91, 7, 66, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {88,65,70}, 32,4 , 10681,59 , 19,5 , 24,7 , 3283,9 , 3325,16 , 0, 0, 1, 6, 7 }, // Portuguese/Latin/Equatorial Guinea - { 91, 7, 92, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {88,79,70}, 207,3 , 10740,62 , 19,5 , 24,7 , 3283,9 , 3341,12 , 0, 0, 1, 6, 7 }, // Portuguese/Latin/Guinea Bissau + { 91, 7, 92, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {88,79,70}, 207,5 , 10740,62 , 19,5 , 24,7 , 3283,9 , 3341,12 , 0, 0, 1, 6, 7 }, // Portuguese/Latin/Guinea Bissau { 91, 7, 125, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 3283,9 , 3353,10 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Luxembourg { 91, 7, 126, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 18,7 , 25,12 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {77,79,80}, 137,4 , 10802,54 , 19,5 , 24,7 , 3283,9 , 3363,19 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Macau - { 91, 7, 146, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {77,90,78}, 282,3 , 10856,66 , 19,5 , 24,7 , 3283,9 , 3382,10 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Mozambique + { 91, 7, 146, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {77,90,78}, 284,3 , 10856,66 , 19,5 , 24,7 , 3283,9 , 3382,10 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Mozambique { 91, 7, 173, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 3392,17 , 3409,8 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Portugal - { 91, 7, 185, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {83,84,78}, 285,2 , 10922,92 , 19,5 , 24,7 , 3283,9 , 3417,19 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Sao Tome And Principe - { 91, 7, 206, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {67,72,70}, 228,3 , 11014,45 , 19,5 , 24,7 , 3283,9 , 3436,5 , 2, 0, 1, 6, 7 }, // Portuguese/Latin/Switzerland - { 92, 4, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 601,9 , 601,9 , 269,6 , 10,17 , 18,7 , 25,12 , 8155,36 , 8191,57 , 8248,23 , 8155,36 , 8191,57 , 8248,23 , 223,6 , 213,6 , 820,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 11059,39 , 8,5 , 4,0 , 3441,6 , 3447,4 , 2, 1, 7, 7, 7 }, // Punjabi/Gurmukhi/India - { 92, 1, 163, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 553,18 , 18,7 , 25,12 , 8271,37 , 8271,37 , 85,14 , 8271,37 , 8271,37 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,75,82}, 287,1 , 11098,13 , 8,5 , 4,0 , 3451,6 , 3251,7 , 2, 0, 7, 6, 7 }, // Punjabi/Arabic/Pakistan - { 93, 7, 169, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 192,18 , 37,5 , 8,10 , 8308,28 , 8336,53 , 8389,14 , 8308,28 , 8336,53 , 8389,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {80,69,78}, 288,2 , 11111,29 , 8,5 , 4,0 , 3457,8 , 3465,4 , 2, 1, 7, 6, 7 }, // Quechua/Latin/Peru - { 93, 7, 26, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 192,18 , 37,5 , 8,10 , 8308,28 , 8336,53 , 8389,14 , 8308,28 , 8336,53 , 8389,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {66,79,66}, 290,2 , 11140,25 , 8,5 , 4,0 , 3457,8 , 3469,7 , 2, 1, 1, 6, 7 }, // Quechua/Latin/Bolivia + { 91, 7, 185, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {83,84,78}, 287,2 , 10922,92 , 19,5 , 24,7 , 3283,9 , 3417,19 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Sao Tome And Principe + { 91, 7, 206, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {67,72,70}, 230,3 , 11014,45 , 19,5 , 24,7 , 3283,9 , 3436,5 , 2, 0, 1, 6, 7 }, // Portuguese/Latin/Switzerland + { 92, 4, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 601,9 , 601,9 , 269,6 , 10,17 , 18,7 , 25,12 , 8155,36 , 8191,57 , 8248,23 , 8155,36 , 8191,57 , 8248,23 , 223,6 , 213,6 , 758,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 11059,39 , 8,5 , 4,0 , 3441,6 , 3447,4 , 2, 1, 7, 7, 7 }, // Punjabi/Gurmukhi/India + { 92, 1, 163, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 553,18 , 18,7 , 25,12 , 8271,37 , 8271,37 , 85,14 , 8271,37 , 8271,37 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,75,82}, 289,1 , 11098,13 , 8,5 , 4,0 , 3451,6 , 3251,7 , 2, 0, 7, 6, 7 }, // Punjabi/Arabic/Pakistan + { 93, 7, 169, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 192,18 , 37,5 , 8,10 , 8308,28 , 8336,53 , 8389,14 , 8308,28 , 8336,53 , 8389,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {80,69,78}, 290,2 , 11111,29 , 8,5 , 4,0 , 3457,8 , 3465,4 , 2, 1, 7, 6, 7 }, // Quechua/Latin/Peru + { 93, 7, 26, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 192,18 , 37,5 , 8,10 , 8308,28 , 8336,53 , 8389,14 , 8308,28 , 8336,53 , 8389,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {66,79,66}, 292,2 , 11140,25 , 8,5 , 4,0 , 3457,8 , 3469,7 , 2, 1, 1, 6, 7 }, // Quechua/Latin/Bolivia { 93, 7, 63, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 192,18 , 37,5 , 8,10 , 8308,28 , 8336,53 , 8389,14 , 8308,28 , 8336,53 , 8389,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 11165,37 , 8,5 , 4,0 , 3457,8 , 3476,7 , 2, 1, 1, 6, 7 }, // Quechua/Latin/Ecuador - { 94, 7, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 250,7 , 250,7 , 339,8 , 1068,23 , 37,5 , 8,10 , 8403,23 , 8426,56 , 8482,14 , 8403,23 , 8426,56 , 8482,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {67,72,70}, 228,3 , 11202,48 , 19,5 , 4,0 , 3483,9 , 3492,6 , 2, 0, 1, 6, 7 }, // Romansh/Latin/Switzerland - { 95, 7, 177, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 610,8 , 610,8 , 495,10 , 10,17 , 37,5 , 8,10 , 8496,34 , 8530,48 , 3107,14 , 8496,34 , 8530,48 , 3107,14 , 64,4 , 61,4 , 824,4 , 5,17 , 22,23 , {82,79,78}, 292,3 , 11250,57 , 19,5 , 24,7 , 3498,6 , 3504,7 , 2, 1, 1, 6, 7 }, // Romanian/Latin/Romania - { 95, 7, 141, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 610,8 , 610,8 , 495,10 , 10,17 , 37,5 , 8,10 , 8578,28 , 8530,48 , 8606,16 , 8578,28 , 8530,48 , 8606,16 , 64,4 , 61,4 , 824,4 , 5,17 , 22,23 , {77,68,76}, 295,1 , 11307,69 , 19,5 , 24,7 , 3498,6 , 3511,17 , 2, 1, 1, 6, 7 }, // Romanian/Latin/Moldova - { 96, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 728,17 , 22,23 , {82,85,66}, 123,1 , 11376,89 , 19,5 , 4,0 , 3528,7 , 3535,6 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Russia - { 96, 2, 20, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 728,17 , 22,23 , {66,89,78}, 0,2 , 11465,94 , 19,5 , 4,0 , 3528,7 , 510,8 , 2, 0, 1, 6, 7 }, // Russian/Cyrillic/Belarus - { 96, 2, 110, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 728,17 , 22,23 , {75,90,84}, 248,1 , 11559,83 , 19,5 , 4,0 , 3528,7 , 3541,9 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Kazakhstan - { 96, 2, 116, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 728,17 , 22,23 , {75,71,83}, 249,3 , 11642,82 , 19,5 , 4,0 , 3528,7 , 3550,8 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Kyrgyzstan - { 96, 2, 141, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 728,17 , 22,23 , {77,68,76}, 295,1 , 11724,79 , 19,5 , 4,0 , 3528,7 , 3558,7 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Moldova - { 96, 2, 222, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 728,17 , 22,23 , {85,65,72}, 296,1 , 11803,92 , 19,5 , 4,0 , 3528,7 , 3565,7 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Ukraine + { 94, 7, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 250,7 , 250,7 , 339,8 , 1068,23 , 37,5 , 8,10 , 8403,23 , 8426,56 , 8482,14 , 8403,23 , 8426,56 , 8482,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {67,72,70}, 230,3 , 11202,48 , 19,5 , 4,0 , 3483,9 , 3492,6 , 2, 0, 1, 6, 7 }, // Romansh/Latin/Switzerland + { 95, 7, 177, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 610,8 , 610,8 , 495,10 , 10,17 , 37,5 , 8,10 , 8496,34 , 8530,48 , 3107,14 , 8496,34 , 8530,48 , 3107,14 , 64,4 , 61,4 , 762,4 , 5,17 , 22,23 , {82,79,78}, 294,3 , 11250,57 , 19,5 , 24,7 , 3498,6 , 3504,7 , 2, 1, 1, 6, 7 }, // Romanian/Latin/Romania + { 95, 7, 141, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 610,8 , 610,8 , 495,10 , 10,17 , 37,5 , 8,10 , 8578,28 , 8530,48 , 8606,16 , 8578,28 , 8530,48 , 8606,16 , 64,4 , 61,4 , 762,4 , 5,17 , 22,23 , {77,68,76}, 297,1 , 11307,69 , 19,5 , 24,7 , 3498,6 , 3511,17 , 2, 1, 1, 6, 7 }, // Romanian/Latin/Moldova + { 96, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 257,5 , 708,17 , 22,23 , {82,85,66}, 123,1 , 11376,89 , 19,5 , 4,0 , 3528,7 , 3535,6 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Russia + { 96, 2, 20, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 257,5 , 708,17 , 22,23 , {66,89,78}, 0,2 , 11465,94 , 19,5 , 4,0 , 3528,7 , 510,8 , 2, 0, 1, 6, 7 }, // Russian/Cyrillic/Belarus + { 96, 2, 110, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 257,5 , 708,17 , 22,23 , {75,90,84}, 250,1 , 11559,83 , 19,5 , 4,0 , 3528,7 , 3541,9 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Kazakhstan + { 96, 2, 116, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 257,5 , 708,17 , 22,23 , {75,71,83}, 251,3 , 11642,82 , 19,5 , 4,0 , 3528,7 , 3550,8 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Kyrgyzstan + { 96, 2, 141, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 257,5 , 708,17 , 22,23 , {77,68,76}, 297,1 , 11724,79 , 19,5 , 4,0 , 3528,7 , 3558,7 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Moldova + { 96, 2, 222, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 257,5 , 708,17 , 22,23 , {85,65,72}, 298,1 , 11803,92 , 19,5 , 4,0 , 3528,7 , 3565,7 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Ukraine { 98, 7, 41, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 8719,28 , 8747,66 , 8813,14 , 8719,28 , 8747,66 , 8813,14 , 229,2 , 219,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 11895,25 , 4,4 , 44,5 , 3572,5 , 3577,22 , 0, 0, 1, 6, 7 }, // Sango/Latin/Central African Republic { 99, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 618,10 , 628,9 , 269,6 , 10,17 , 18,7 , 25,12 , 4304,32 , 8827,67 , 4389,19 , 4304,32 , 8827,67 , 4389,19 , 193,9 , 186,7 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 11920,37 , 8,5 , 4,0 , 3599,12 , 3611,5 , 2, 1, 7, 7, 7 }, // Sanskrit/Devanagari/India - { 100, 2, 243, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8894,28 , 8922,52 , 8974,14 , 8894,28 , 8922,52 , 8974,14 , 231,9 , 221,8 , 828,7 , 5,17 , 22,23 , {82,83,68}, 297,3 , 11957,58 , 19,5 , 24,7 , 3616,6 , 3622,6 , 0, 0, 1, 6, 7 }, // Serbian/Cyrillic/Serbia - { 100, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 2043,28 , 2071,58 , 2129,14 , 8988,28 , 2071,58 , 2129,14 , 240,11 , 229,8 , 298,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 12015,170 , 19,5 , 24,7 , 3628,6 , 629,19 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Bosnia And Herzegowina - { 100, 7, 242, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8988,28 , 9016,57 , 2129,14 , 8988,28 , 9016,57 , 2129,14 , 240,11 , 229,8 , 298,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12185,23 , 19,5 , 24,7 , 3628,6 , 3634,9 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Montenegro - { 100, 7, 243, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8988,28 , 9073,54 , 2129,14 , 8988,28 , 9073,54 , 2129,14 , 251,9 , 229,8 , 298,7 , 5,17 , 22,23 , {82,83,68}, 297,3 , 12208,58 , 19,5 , 24,7 , 3628,6 , 3643,6 , 0, 0, 1, 6, 7 }, // Serbian/Latin/Serbia - { 100, 2, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 9127,28 , 9155,56 , 8974,14 , 8894,28 , 9155,56 , 8974,14 , 260,11 , 221,8 , 828,7 , 5,17 , 22,23 , {66,65,77}, 300,2 , 12266,170 , 19,5 , 24,7 , 3616,6 , 3649,19 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Bosnia And Herzegowina - { 100, 2, 242, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8894,28 , 9211,55 , 8974,14 , 8894,28 , 9211,55 , 8974,14 , 260,11 , 221,8 , 828,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12436,23 , 19,5 , 24,7 , 3616,6 , 3668,9 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Montenegro - { 100, 2, 257, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8894,28 , 8922,52 , 8974,14 , 8894,28 , 8922,52 , 8974,14 , 231,9 , 221,8 , 828,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12436,23 , 19,5 , 24,7 , 3616,6 , 3677,6 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Kosovo - { 100, 7, 257, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8988,28 , 9073,54 , 2129,14 , 8988,28 , 9073,54 , 2129,14 , 251,9 , 229,8 , 298,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12185,23 , 19,5 , 24,7 , 3628,6 , 3683,6 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Kosovo - { 101, 2, 81, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 637,9 , 637,9 , 156,8 , 1118,23 , 37,5 , 8,10 , 9266,28 , 9294,61 , 9355,14 , 9369,28 , 9397,61 , 9355,14 , 271,15 , 237,15 , 45,4 , 5,17 , 22,23 , {71,69,76}, 235,1 , 12459,17 , 8,5 , 4,0 , 3689,4 , 3693,11 , 2, 1, 1, 6, 7 }, // Ossetic/Cyrillic/Georgia + { 100, 2, 243, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8894,28 , 8922,52 , 8974,14 , 8894,28 , 8922,52 , 8974,14 , 231,9 , 221,8 , 766,7 , 5,17 , 22,23 , {82,83,68}, 299,3 , 11957,58 , 19,5 , 24,7 , 3616,6 , 3622,6 , 0, 0, 1, 6, 7 }, // Serbian/Cyrillic/Serbia + { 100, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 2043,28 , 2071,58 , 2129,14 , 8988,28 , 2071,58 , 2129,14 , 240,11 , 229,8 , 286,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 12015,170 , 19,5 , 24,7 , 3628,6 , 629,19 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Bosnia And Herzegowina + { 100, 7, 242, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8988,28 , 9016,57 , 2129,14 , 8988,28 , 9016,57 , 2129,14 , 240,11 , 229,8 , 286,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12185,23 , 19,5 , 24,7 , 3628,6 , 3634,9 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Montenegro + { 100, 7, 243, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8988,28 , 9073,54 , 2129,14 , 8988,28 , 9073,54 , 2129,14 , 251,9 , 229,8 , 286,7 , 5,17 , 22,23 , {82,83,68}, 299,3 , 12208,58 , 19,5 , 24,7 , 3628,6 , 3643,6 , 0, 0, 1, 6, 7 }, // Serbian/Latin/Serbia + { 100, 2, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 9127,28 , 9155,56 , 8974,14 , 8894,28 , 9155,56 , 8974,14 , 260,11 , 221,8 , 766,7 , 5,17 , 22,23 , {66,65,77}, 302,2 , 12266,170 , 19,5 , 24,7 , 3616,6 , 3649,19 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Bosnia And Herzegowina + { 100, 2, 242, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8894,28 , 9211,55 , 8974,14 , 8894,28 , 9211,55 , 8974,14 , 260,11 , 221,8 , 766,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12436,23 , 19,5 , 24,7 , 3616,6 , 3668,9 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Montenegro + { 100, 2, 257, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8894,28 , 8922,52 , 8974,14 , 8894,28 , 8922,52 , 8974,14 , 231,9 , 221,8 , 766,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12436,23 , 19,5 , 24,7 , 3616,6 , 3677,6 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Kosovo + { 100, 7, 257, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8988,28 , 9073,54 , 2129,14 , 8988,28 , 9073,54 , 2129,14 , 251,9 , 229,8 , 286,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12185,23 , 19,5 , 24,7 , 3628,6 , 3683,6 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Kosovo + { 101, 2, 81, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 637,9 , 637,9 , 156,8 , 1118,23 , 37,5 , 8,10 , 9266,28 , 9294,61 , 9355,14 , 9369,28 , 9397,61 , 9355,14 , 271,15 , 237,15 , 45,4 , 5,17 , 22,23 , {71,69,76}, 237,1 , 12459,17 , 8,5 , 4,0 , 3689,4 , 3693,11 , 2, 1, 1, 6, 7 }, // Ossetic/Cyrillic/Georgia { 101, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 637,9 , 637,9 , 156,8 , 1118,23 , 37,5 , 8,10 , 9266,28 , 9294,61 , 9355,14 , 9369,28 , 9397,61 , 9355,14 , 271,15 , 237,15 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 12476,17 , 8,5 , 4,0 , 3689,4 , 3704,6 , 2, 1, 1, 6, 7 }, // Ossetic/Cyrillic/Russia { 102, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Southern Sotho/Latin/South Africa { 103, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Tswana/Latin/South Africa { 104, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 9458,28 , 9486,55 , 9541,14 , 9458,28 , 9486,55 , 9541,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 12493,22 , 4,4 , 13,6 , 3710,8 , 1819,8 , 2, 1, 7, 6, 7 }, // Shona/Latin/Zimbabwe - { 105, 1, 163, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 646,8 , 654,7 , 53,10 , 63,17 , 18,7 , 25,12 , 9555,35 , 9555,35 , 9590,31 , 9555,35 , 9555,35 , 9590,31 , 286,11 , 252,11 , 835,6 , 841,25 , 22,23 , {80,75,82}, 176,2 , 12515,43 , 19,5 , 4,0 , 3718,4 , 3722,7 , 2, 0, 7, 6, 7 }, // Sindhi/Arabic/Pakistan + { 105, 1, 163, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 646,8 , 654,7 , 53,10 , 63,17 , 18,7 , 25,12 , 9555,35 , 9555,35 , 9590,31 , 9555,35 , 9555,35 , 9590,31 , 286,11 , 252,11 , 773,6 , 779,25 , 22,23 , {80,75,82}, 176,2 , 12515,43 , 19,5 , 4,0 , 3718,4 , 3722,7 , 2, 0, 7, 6, 7 }, // Sindhi/Arabic/Pakistan { 105, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 269,6 , 10,17 , 393,7 , 437,12 , 9621,25 , 9646,27 , 9673,20 , 9693,28 , 9721,41 , 9762,19 , 297,16 , 263,13 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 12558,24 , 8,5 , 4,0 , 3729,6 , 2666,4 , 2, 1, 7, 7, 7 }, // Sindhi/Devanagari/India - { 106, 32, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 661,9 , 670,8 , 53,10 , 63,17 , 239,5 , 244,10 , 9781,39 , 9820,62 , 9882,19 , 9781,39 , 9820,62 , 9882,19 , 313,5 , 276,4 , 866,5 , 871,42 , 22,23 , {76,75,82}, 302,3 , 12582,58 , 4,4 , 13,6 , 3735,5 , 3740,11 , 2, 1, 1, 6, 7 }, // Sinhala/Sinhala/Sri Lanka + { 106, 32, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 661,9 , 670,8 , 53,10 , 63,17 , 239,5 , 244,10 , 9781,39 , 9820,62 , 9882,19 , 9781,39 , 9820,62 , 9882,19 , 313,5 , 276,4 , 804,5 , 809,42 , 22,23 , {76,75,82}, 304,3 , 12582,58 , 4,4 , 13,6 , 3735,5 , 3740,11 , 2, 1, 1, 6, 7 }, // Sinhala/Sinhala/Sri Lanka { 107, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Swati/Latin/South Africa - { 108, 7, 191, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 181,7 , 678,7 , 1141,10 , 478,17 , 55,4 , 59,9 , 9901,21 , 9922,52 , 9974,14 , 9901,21 , 9922,52 , 9974,14 , 0,2 , 0,2 , 305,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12640,26 , 19,5 , 24,7 , 3751,10 , 3761,9 , 2, 1, 1, 6, 7 }, // Slovak/Latin/Slovakia + { 108, 7, 191, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 181,7 , 678,7 , 1141,10 , 478,17 , 55,4 , 59,9 , 9901,21 , 9922,52 , 9974,14 , 9901,21 , 9922,52 , 9974,14 , 0,2 , 0,2 , 293,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12640,26 , 19,5 , 24,7 , 3751,10 , 3761,9 , 2, 1, 1, 6, 7 }, // Slovak/Latin/Slovakia { 109, 7, 192, 44, 46, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 685,8 , 685,8 , 1151,9 , 1160,19 , 37,5 , 8,10 , 9988,35 , 10023,52 , 10075,14 , 9988,35 , 10023,52 , 10075,14 , 60,4 , 280,4 , 54,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12666,28 , 19,5 , 24,7 , 3770,11 , 3781,9 , 2, 1, 1, 6, 7 }, // Slovenian/Latin/Slovenia - { 110, 7, 194, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 693,9 , 693,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 10089,32 , 10121,47 , 10168,15 , 10089,32 , 10121,47 , 10168,15 , 318,2 , 284,2 , 913,6 , 919,17 , 22,23 , {83,79,83}, 94,1 , 12694,27 , 4,4 , 13,6 , 3790,8 , 3798,10 , 0, 0, 1, 6, 7 }, // Somali/Latin/Somalia - { 110, 7, 59, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 693,9 , 693,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 10089,32 , 10121,47 , 10168,15 , 10089,32 , 10121,47 , 10168,15 , 318,2 , 284,2 , 913,6 , 919,17 , 22,23 , {68,74,70}, 38,3 , 12721,50 , 4,4 , 13,6 , 3790,8 , 3808,7 , 0, 0, 6, 6, 7 }, // Somali/Latin/Djibouti - { 110, 7, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 693,9 , 693,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 10089,32 , 10121,47 , 10168,15 , 10089,32 , 10121,47 , 10168,15 , 318,2 , 284,2 , 913,6 , 919,17 , 22,23 , {69,84,66}, 0,2 , 12771,52 , 4,4 , 13,6 , 3790,8 , 3815,8 , 2, 1, 7, 6, 7 }, // Somali/Latin/Ethiopia - { 110, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 693,9 , 693,9 , 27,8 , 1179,19 , 37,5 , 8,10 , 10089,32 , 10121,47 , 10168,15 , 10089,32 , 10121,47 , 10168,15 , 318,2 , 284,2 , 913,6 , 919,17 , 22,23 , {75,69,83}, 2,3 , 12823,52 , 4,4 , 13,6 , 3790,8 , 1191,5 , 2, 1, 7, 6, 7 }, // Somali/Latin/Kenya + { 110, 7, 194, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 693,9 , 693,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 10089,32 , 10121,47 , 10168,15 , 10089,32 , 10121,47 , 10168,15 , 318,2 , 284,2 , 851,6 , 857,17 , 22,23 , {83,79,83}, 94,1 , 12694,27 , 4,4 , 13,6 , 3790,8 , 3798,10 , 0, 0, 1, 6, 7 }, // Somali/Latin/Somalia + { 110, 7, 59, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 693,9 , 693,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 10089,32 , 10121,47 , 10168,15 , 10089,32 , 10121,47 , 10168,15 , 318,2 , 284,2 , 851,6 , 857,17 , 22,23 , {68,74,70}, 38,3 , 12721,50 , 4,4 , 13,6 , 3790,8 , 3808,7 , 0, 0, 6, 6, 7 }, // Somali/Latin/Djibouti + { 110, 7, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 693,9 , 693,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 10089,32 , 10121,47 , 10168,15 , 10089,32 , 10121,47 , 10168,15 , 318,2 , 284,2 , 851,6 , 857,17 , 22,23 , {69,84,66}, 0,2 , 12771,52 , 4,4 , 13,6 , 3790,8 , 3815,8 , 2, 1, 7, 6, 7 }, // Somali/Latin/Ethiopia + { 110, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 693,9 , 693,9 , 27,8 , 1179,19 , 37,5 , 8,10 , 10089,32 , 10121,47 , 10168,15 , 10089,32 , 10121,47 , 10168,15 , 318,2 , 284,2 , 851,6 , 857,17 , 22,23 , {75,69,83}, 2,3 , 12823,52 , 4,4 , 13,6 , 3790,8 , 1191,5 , 2, 1, 7, 6, 7 }, // Somali/Latin/Kenya { 111, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 55,4 , 198,11 , 10183,28 , 10211,53 , 8389,14 , 10183,28 , 10211,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 4,0 , 3823,17 , 2431,6 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Spain { 111, 7, 10, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {65,82,83}, 6,1 , 12875,51 , 8,5 , 37,7 , 3840,7 , 3847,9 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Argentina { 111, 7, 22, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {66,90,68}, 6,1 , 12926,52 , 4,4 , 4,0 , 3840,7 , 3856,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Belize - { 111, 7, 26, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {66,79,66}, 290,2 , 12978,35 , 4,4 , 4,0 , 3840,7 , 3469,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Bolivia - { 111, 7, 30, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {66,82,76}, 279,2 , 13013,52 , 4,4 , 4,0 , 3840,7 , 3292,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Brazil + { 111, 7, 26, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {66,79,66}, 292,2 , 12978,35 , 4,4 , 4,0 , 3840,7 , 3469,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Bolivia + { 111, 7, 30, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {66,82,76}, 281,2 , 13013,52 , 4,4 , 4,0 , 3840,7 , 3292,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Brazil { 111, 7, 43, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 339,8 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,76,80}, 6,1 , 13065,45 , 4,4 , 4,0 , 3840,7 , 3862,5 , 0, 0, 1, 6, 7 }, // Spanish/Latin/Chile { 111, 7, 47, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 571,7 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 4796,14 , 10183,28 , 10211,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,79,80}, 6,1 , 13110,54 , 4,4 , 4,0 , 3840,7 , 3867,8 , 2, 0, 7, 6, 7 }, // Spanish/Latin/Colombia - { 111, 7, 52, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,82,67}, 305,1 , 13164,67 , 4,4 , 4,0 , 3840,7 , 3875,10 , 2, 0, 1, 6, 7 }, // Spanish/Latin/Costa Rica + { 111, 7, 52, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,82,67}, 307,1 , 13164,67 , 4,4 , 4,0 , 3840,7 , 3875,10 , 2, 0, 1, 6, 7 }, // Spanish/Latin/Costa Rica { 111, 7, 55, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,85,80}, 6,1 , 13231,42 , 4,4 , 4,0 , 3840,7 , 3885,4 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Cuba - { 111, 7, 61, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {68,79,80}, 306,3 , 13273,54 , 4,4 , 13,6 , 3840,7 , 3889,20 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Dominican Republic + { 111, 7, 61, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {68,79,80}, 308,3 , 13273,54 , 4,4 , 13,6 , 3840,7 , 3889,20 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Dominican Republic { 111, 7, 63, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13327,70 , 4,4 , 4,0 , 3840,7 , 3476,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Ecuador { 111, 7, 65, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13327,70 , 4,4 , 4,0 , 3840,7 , 3909,11 , 2, 1, 7, 6, 7 }, // Spanish/Latin/El Salvador { 111, 7, 66, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 55,4 , 198,11 , 10183,28 , 10211,53 , 8389,14 , 10183,28 , 10211,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {88,65,70}, 32,4 , 13397,92 , 19,5 , 4,0 , 3840,7 , 3920,17 , 0, 0, 1, 6, 7 }, // Spanish/Latin/Equatorial Guinea - { 111, 7, 90, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 571,7 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {71,84,81}, 309,1 , 13489,30 , 4,4 , 4,0 , 3840,7 , 3937,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Guatemala - { 111, 7, 96, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 1198,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {72,78,76}, 295,1 , 13519,60 , 4,4 , 4,0 , 3840,7 , 3946,8 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Honduras + { 111, 7, 90, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 571,7 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {71,84,81}, 311,1 , 13489,30 , 4,4 , 4,0 , 3840,7 , 3937,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Guatemala + { 111, 7, 96, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 1198,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {72,78,76}, 297,1 , 13519,60 , 4,4 , 4,0 , 3840,7 , 3946,8 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Honduras { 111, 7, 139, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 27,8 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {77,88,78}, 6,1 , 13579,48 , 4,4 , 4,0 , 3954,17 , 3971,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Mexico - { 111, 7, 155, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {78,73,79}, 310,2 , 13627,69 , 4,4 , 4,0 , 3840,7 , 3977,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Nicaragua - { 111, 7, 166, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 1225,8 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,65,66}, 312,3 , 13696,54 , 4,4 , 4,0 , 3840,7 , 3986,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Panama - { 111, 7, 168, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,89,71}, 315,3 , 13750,61 , 4,4 , 4,0 , 3840,7 , 3992,8 , 0, 0, 7, 6, 7 }, // Spanish/Latin/Paraguay - { 111, 7, 169, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 571,7 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,69,78}, 288,2 , 13811,43 , 4,4 , 4,0 , 3840,7 , 3465,4 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Peru + { 111, 7, 155, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {78,73,79}, 312,2 , 13627,69 , 4,4 , 4,0 , 3840,7 , 3977,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Nicaragua + { 111, 7, 166, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 1225,8 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,65,66}, 314,3 , 13696,54 , 4,4 , 4,0 , 3840,7 , 3986,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Panama + { 111, 7, 168, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,89,71}, 317,3 , 13750,61 , 4,4 , 4,0 , 3840,7 , 3992,8 , 0, 0, 7, 6, 7 }, // Spanish/Latin/Paraguay + { 111, 7, 169, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 571,7 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,69,78}, 290,2 , 13811,43 , 4,4 , 4,0 , 3840,7 , 3465,4 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Peru { 111, 7, 170, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 18,7 , 25,12 , 10183,28 , 10211,53 , 8389,14 , 10183,28 , 10211,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,72,80}, 179,1 , 13854,48 , 19,5 , 4,0 , 3840,7 , 4000,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Philippines { 111, 7, 174, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 1225,8 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13327,70 , 4,4 , 4,0 , 3840,7 , 1446,11 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Puerto Rico { 111, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 702,7 , 702,7 , 415,8 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13327,70 , 4,4 , 4,0 , 3840,7 , 4009,14 , 2, 1, 7, 6, 7 }, // Spanish/Latin/United States { 111, 7, 227, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,89,85}, 6,1 , 13902,48 , 8,5 , 37,7 , 3840,7 , 4023,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Uruguay - { 111, 7, 231, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {86,69,83}, 318,4 , 13950,58 , 4,4 , 4,0 , 3840,7 , 4030,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Venezuela + { 111, 7, 231, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {86,69,83}, 320,4 , 13950,58 , 4,4 , 4,0 , 3840,7 , 4030,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Venezuela { 111, 7, 238, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 55,4 , 198,11 , 10183,28 , 10211,53 , 8389,14 , 10183,28 , 10211,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 4,0 , 3840,7 , 4039,8 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Canary Islands { 111, 7, 246, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 4,4 , 4,0 , 4047,23 , 4070,13 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Latin America { 111, 7, 250, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 55,4 , 198,11 , 10183,28 , 10211,53 , 8389,14 , 10183,28 , 10211,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 4,0 , 3840,7 , 4083,15 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Ceuta And Melilla - { 112, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 709,13 , 722,12 , 269,6 , 10,17 , 254,4 , 258,9 , 10299,28 , 10327,44 , 4697,14 , 10299,28 , 10327,44 , 4697,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,68,82}, 242,2 , 14008,37 , 4,4 , 4,0 , 4098,10 , 0,0 , 2, 0, 7, 6, 7 }, // Sundanese/Latin/Indonesia - { 113, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 734,8 , 734,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10371,60 , 10371,60 , 85,14 , 10371,60 , 10371,60 , 85,14 , 0,2 , 0,2 , 675,5 , 936,51 , 22,23 , {84,90,83}, 192,3 , 14045,67 , 8,5 , 4,0 , 4108,9 , 1624,8 , 2, 0, 1, 6, 7 }, // Swahili/Latin/Tanzania - { 113, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 734,8 , 734,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10371,60 , 10371,60 , 85,14 , 10371,60 , 10371,60 , 85,14 , 0,2 , 0,2 , 675,5 , 936,51 , 22,23 , {67,68,70}, 214,2 , 14112,55 , 8,5 , 4,0 , 4108,9 , 4117,32 , 2, 1, 1, 6, 7 }, // Swahili/Latin/Congo Kinshasa - { 113, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 734,8 , 734,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10371,60 , 10371,60 , 85,14 , 10371,60 , 10371,60 , 85,14 , 0,2 , 0,2 , 675,5 , 936,51 , 22,23 , {75,69,83}, 2,3 , 14167,58 , 8,5 , 4,0 , 4108,9 , 1191,5 , 2, 1, 7, 6, 7 }, // Swahili/Latin/Kenya - { 113, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 734,8 , 734,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10371,60 , 10371,60 , 85,14 , 10371,60 , 10371,60 , 85,14 , 0,2 , 0,2 , 675,5 , 936,51 , 22,23 , {85,71,88}, 197,3 , 14225,61 , 8,5 , 4,0 , 4108,9 , 1689,6 , 0, 0, 1, 7, 7 }, // Swahili/Latin/Uganda + { 112, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 709,13 , 722,12 , 269,6 , 10,17 , 254,4 , 258,9 , 10299,28 , 10327,44 , 4697,14 , 10299,28 , 10327,44 , 4697,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,68,82}, 244,2 , 14008,37 , 4,4 , 4,0 , 4098,10 , 0,0 , 2, 0, 7, 6, 7 }, // Sundanese/Latin/Indonesia + { 113, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 734,8 , 734,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10371,60 , 10371,60 , 85,14 , 10371,60 , 10371,60 , 85,14 , 0,2 , 0,2 , 655,5 , 874,51 , 22,23 , {84,90,83}, 192,3 , 14045,67 , 8,5 , 4,0 , 4108,9 , 1624,8 , 2, 0, 1, 6, 7 }, // Swahili/Latin/Tanzania + { 113, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 734,8 , 734,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10371,60 , 10371,60 , 85,14 , 10371,60 , 10371,60 , 85,14 , 0,2 , 0,2 , 655,5 , 874,51 , 22,23 , {67,68,70}, 216,2 , 14112,55 , 8,5 , 4,0 , 4108,9 , 4117,32 , 2, 1, 1, 6, 7 }, // Swahili/Latin/Congo Kinshasa + { 113, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 734,8 , 734,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10371,60 , 10371,60 , 85,14 , 10371,60 , 10371,60 , 85,14 , 0,2 , 0,2 , 655,5 , 874,51 , 22,23 , {75,69,83}, 2,3 , 14167,58 , 8,5 , 4,0 , 4108,9 , 1191,5 , 2, 1, 7, 6, 7 }, // Swahili/Latin/Kenya + { 113, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 734,8 , 734,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10371,60 , 10371,60 , 85,14 , 10371,60 , 10371,60 , 85,14 , 0,2 , 0,2 , 655,5 , 874,51 , 22,23 , {85,71,88}, 197,3 , 14225,61 , 8,5 , 4,0 , 4108,9 , 1689,6 , 0, 0, 1, 7, 7 }, // Swahili/Latin/Uganda { 114, 7, 205, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 742,9 , 742,9 , 53,10 , 97,16 , 37,5 , 8,10 , 10431,29 , 10460,50 , 2320,14 , 10431,29 , 10460,50 , 2320,14 , 320,2 , 286,2 , 45,4 , 5,17 , 22,23 , {83,69,75}, 190,2 , 14286,45 , 19,5 , 4,0 , 4149,7 , 4156,7 , 2, 0, 1, 6, 7 }, // Swedish/Latin/Sweden { 114, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 742,9 , 742,9 , 53,10 , 97,16 , 37,5 , 8,10 , 10431,29 , 10460,50 , 2320,14 , 10431,29 , 10460,50 , 2320,14 , 320,2 , 286,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9130,19 , 19,5 , 4,0 , 4149,7 , 1088,7 , 2, 1, 1, 6, 7 }, // Swedish/Latin/Finland { 114, 7, 248, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 742,9 , 742,9 , 53,10 , 97,16 , 37,5 , 8,10 , 10431,29 , 10460,50 , 2320,14 , 10431,29 , 10460,50 , 2320,14 , 320,2 , 286,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9130,19 , 19,5 , 4,0 , 4149,7 , 4163,5 , 2, 1, 1, 6, 7 }, // Swedish/Latin/Aland Islands { 115, 7, 106, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Sardinian/Latin/Italy - { 116, 2, 209, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 553,18 , 37,5 , 8,10 , 10510,28 , 10538,55 , 10593,14 , 10510,28 , 10538,55 , 10593,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {84,74,83}, 322,4 , 14331,19 , 19,5 , 4,0 , 4168,6 , 4174,10 , 2, 1, 1, 6, 7 }, // Tajik/Cyrillic/Tajikistan - { 117, 27, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 751,13 , 751,13 , 269,6 , 192,18 , 393,7 , 437,12 , 10607,39 , 10646,49 , 10695,20 , 10607,39 , 10646,49 , 10695,20 , 322,8 , 288,8 , 987,7 , 5,17 , 22,23 , {73,78,82}, 121,1 , 14350,49 , 4,4 , 13,6 , 4184,5 , 4189,7 , 2, 1, 7, 7, 7 }, // Tamil/Tamil/India - { 117, 27, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 751,13 , 751,13 , 269,6 , 192,18 , 393,7 , 437,12 , 10607,39 , 10646,49 , 10695,20 , 10607,39 , 10646,49 , 10695,20 , 322,8 , 288,8 , 987,7 , 5,17 , 22,23 , {77,89,82}, 174,2 , 14399,61 , 4,4 , 13,6 , 4184,5 , 4196,7 , 2, 1, 1, 6, 7 }, // Tamil/Tamil/Malaysia - { 117, 27, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 751,13 , 751,13 , 269,6 , 192,18 , 393,7 , 437,12 , 10607,39 , 10646,49 , 10695,20 , 10607,39 , 10646,49 , 10695,20 , 322,8 , 288,8 , 987,7 , 5,17 , 22,23 , {83,71,68}, 6,1 , 14460,61 , 4,4 , 13,6 , 4184,5 , 4203,11 , 2, 1, 7, 6, 7 }, // Tamil/Tamil/Singapore - { 117, 27, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 751,13 , 751,13 , 269,6 , 192,18 , 37,5 , 8,10 , 10607,39 , 10646,49 , 10695,20 , 10607,39 , 10646,49 , 10695,20 , 322,8 , 288,8 , 987,7 , 5,17 , 22,23 , {76,75,82}, 326,3 , 14521,49 , 4,4 , 13,6 , 4184,5 , 4214,6 , 2, 1, 1, 6, 7 }, // Tamil/Tamil/Sri Lanka + { 116, 2, 209, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 553,18 , 37,5 , 8,10 , 10510,28 , 10538,55 , 10593,14 , 10510,28 , 10538,55 , 10593,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {84,74,83}, 324,4 , 14331,19 , 19,5 , 4,0 , 4168,6 , 4174,10 , 2, 1, 1, 6, 7 }, // Tajik/Cyrillic/Tajikistan + { 117, 27, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 751,13 , 751,13 , 269,6 , 192,18 , 393,7 , 437,12 , 10607,39 , 10646,49 , 10695,20 , 10607,39 , 10646,49 , 10695,20 , 322,8 , 288,8 , 925,7 , 5,17 , 22,23 , {73,78,82}, 121,1 , 14350,49 , 4,4 , 13,6 , 4184,5 , 4189,7 , 2, 1, 7, 7, 7 }, // Tamil/Tamil/India + { 117, 27, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 751,13 , 751,13 , 269,6 , 192,18 , 393,7 , 437,12 , 10607,39 , 10646,49 , 10695,20 , 10607,39 , 10646,49 , 10695,20 , 322,8 , 288,8 , 925,7 , 5,17 , 22,23 , {77,89,82}, 174,2 , 14399,61 , 4,4 , 13,6 , 4184,5 , 4196,7 , 2, 1, 1, 6, 7 }, // Tamil/Tamil/Malaysia + { 117, 27, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 751,13 , 751,13 , 269,6 , 192,18 , 393,7 , 437,12 , 10607,39 , 10646,49 , 10695,20 , 10607,39 , 10646,49 , 10695,20 , 322,8 , 288,8 , 925,7 , 5,17 , 22,23 , {83,71,68}, 6,1 , 14460,61 , 4,4 , 13,6 , 4184,5 , 4203,11 , 2, 1, 7, 6, 7 }, // Tamil/Tamil/Singapore + { 117, 27, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 751,13 , 751,13 , 269,6 , 192,18 , 37,5 , 8,10 , 10607,39 , 10646,49 , 10695,20 , 10607,39 , 10646,49 , 10695,20 , 322,8 , 288,8 , 925,7 , 5,17 , 22,23 , {76,75,82}, 328,3 , 14521,49 , 4,4 , 13,6 , 4184,5 , 4214,6 , 2, 1, 1, 6, 7 }, // Tamil/Tamil/Sri Lanka { 118, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 764,9 , 764,9 , 495,10 , 1233,23 , 55,4 , 59,9 , 10715,36 , 10751,56 , 10807,14 , 10715,36 , 10751,56 , 10807,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 14570,21 , 19,5 , 4,0 , 4220,5 , 3535,6 , 2, 1, 1, 6, 7 }, // Tatar/Cyrillic/Russia - { 119, 28, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 773,11 , 773,11 , 339,8 , 1256,18 , 18,7 , 25,12 , 10821,32 , 10853,60 , 10913,18 , 10821,32 , 10853,60 , 10913,18 , 0,2 , 0,2 , 994,7 , 1001,29 , 22,23 , {73,78,82}, 121,1 , 14591,26 , 4,4 , 13,6 , 4225,6 , 4231,8 , 2, 1, 7, 7, 7 }, // Telugu/Telugu/India - { 120, 30, 211, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 784,5 , 784,5 , 789,8 , 797,7 , 269,6 , 1274,19 , 37,5 , 449,28 , 10931,23 , 10954,68 , 11022,16 , 10931,23 , 10954,68 , 11022,16 , 330,10 , 296,10 , 1030,4 , 5,17 , 22,23 , {84,72,66}, 329,1 , 14617,16 , 4,4 , 13,6 , 4239,3 , 4239,3 , 2, 1, 7, 6, 7 }, // Thai/Thai/Thailand + { 119, 28, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 773,11 , 773,11 , 339,8 , 1256,18 , 18,7 , 25,12 , 10821,32 , 10853,60 , 10913,18 , 10821,32 , 10853,60 , 10913,18 , 0,2 , 0,2 , 932,7 , 939,29 , 22,23 , {73,78,82}, 121,1 , 14591,26 , 4,4 , 13,6 , 4225,6 , 4231,8 , 2, 1, 7, 7, 7 }, // Telugu/Telugu/India + { 120, 30, 211, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 784,5 , 784,5 , 789,8 , 797,7 , 269,6 , 1274,19 , 37,5 , 449,28 , 10931,23 , 10954,68 , 11022,16 , 10931,23 , 10954,68 , 11022,16 , 330,10 , 296,10 , 968,4 , 5,17 , 22,23 , {84,72,66}, 331,1 , 14617,16 , 4,4 , 13,6 , 4239,3 , 4239,3 , 2, 1, 7, 6, 7 }, // Thai/Thai/Thailand { 121, 31, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1293,23 , 18,7 , 25,12 , 11038,51 , 11089,79 , 11168,27 , 11038,51 , 11089,79 , 11168,27 , 340,7 , 306,8 , 45,4 , 5,17 , 22,23 , {67,78,89}, 133,1 , 14633,13 , 8,5 , 4,0 , 4242,8 , 4250,6 , 2, 1, 7, 6, 7 }, // Tibetan/Tibetan/China { 121, 31, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1293,23 , 18,7 , 25,12 , 11038,51 , 11089,79 , 11168,27 , 11038,51 , 11089,79 , 11168,27 , 340,7 , 306,8 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 14646,19 , 8,5 , 4,0 , 4242,8 , 4256,7 , 2, 1, 7, 7, 7 }, // Tibetan/Tibetan/India { 122, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1316,23 , 18,7 , 25,12 , 11195,21 , 11216,29 , 11245,14 , 11195,21 , 11216,29 , 11259,14 , 347,12 , 314,12 , 45,4 , 5,17 , 22,23 , {69,84,66}, 0,2 , 14665,16 , 4,4 , 4,0 , 4263,3 , 92,5 , 2, 1, 7, 6, 7 }, // Tigrinya/Ethiopic/Ethiopia { 122, 14, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1316,23 , 18,7 , 25,12 , 11195,21 , 11216,29 , 11259,14 , 11195,21 , 11216,29 , 11259,14 , 347,12 , 314,12 , 45,4 , 5,17 , 22,23 , {69,82,78}, 41,3 , 0,7 , 4,4 , 4,0 , 4263,3 , 4266,4 , 2, 1, 1, 6, 7 }, // Tigrinya/Ethiopic/Eritrea - { 123, 7, 214, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 804,8 , 804,8 , 804,8 , 804,8 , 269,6 , 97,16 , 18,7 , 25,12 , 11273,29 , 11302,60 , 11362,14 , 11273,29 , 11302,60 , 11362,14 , 359,10 , 326,6 , 1034,5 , 1039,59 , 1098,65 , {84,79,80}, 195,2 , 14681,41 , 8,5 , 4,0 , 4270,13 , 1639,5 , 2, 1, 1, 6, 7 }, // Tongan/Latin/Tonga + { 123, 7, 214, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 804,8 , 804,8 , 804,8 , 804,8 , 269,6 , 97,16 , 18,7 , 25,12 , 11273,29 , 11302,60 , 11362,14 , 11273,29 , 11302,60 , 11362,14 , 359,10 , 326,6 , 972,5 , 977,59 , 1036,65 , {84,79,80}, 195,2 , 14681,41 , 8,5 , 4,0 , 4270,13 , 1639,5 , 2, 1, 1, 6, 7 }, // Tongan/Latin/Tonga { 124, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Tsonga/Latin/South Africa - { 125, 7, 217, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 812,8 , 812,8 , 1339,9 , 1348,16 , 37,5 , 8,10 , 11376,28 , 11404,54 , 11458,14 , 11376,28 , 11404,54 , 11458,14 , 369,2 , 332,2 , 199,4 , 5,17 , 22,23 , {84,82,89}, 256,1 , 14722,40 , 4,4 , 13,6 , 4283,6 , 4289,7 , 2, 1, 1, 6, 7 }, // Turkish/Latin/Turkey - { 125, 7, 56, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 812,8 , 812,8 , 1339,9 , 1348,16 , 18,7 , 25,12 , 11376,28 , 11404,54 , 11458,14 , 11376,28 , 11404,54 , 11458,14 , 369,2 , 332,2 , 199,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 4,4 , 13,6 , 4283,6 , 4296,6 , 2, 1, 1, 6, 7 }, // Turkish/Latin/Cyprus - { 126, 7, 218, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8220, 8221, 0,6 , 0,6 , 820,8 , 820,8 , 495,10 , 1348,16 , 37,5 , 8,10 , 11472,28 , 11500,54 , 11554,14 , 11568,28 , 11596,54 , 11554,14 , 371,13 , 334,14 , 1163,4 , 5,17 , 22,23 , {84,77,84}, 330,3 , 14762,49 , 19,5 , 4,0 , 4302,12 , 4314,12 , 2, 1, 1, 6, 7 }, // Turkmen/Latin/Turkmenistan - { 128, 1, 44, 46, 44, 59, 37, 48, 45, 43, 101, 187, 171, 8250, 8249, 0,6 , 0,6 , 196,10 , 206,9 , 53,10 , 1364,17 , 18,7 , 25,12 , 11650,21 , 11671,55 , 11726,14 , 11650,21 , 11671,55 , 11726,14 , 384,12 , 348,12 , 45,4 , 5,17 , 22,23 , {67,78,89}, 247,1 , 14811,40 , 4,4 , 13,6 , 4326,8 , 4334,5 , 2, 1, 7, 6, 7 }, // Uighur/Arabic/China - { 129, 2, 222, 44, 160, 59, 37, 48, 45, 43, 1077, 171, 187, 8222, 8220, 0,6 , 0,6 , 134,7 , 134,7 , 156,8 , 1381,22 , 37,5 , 8,10 , 1454,21 , 11740,56 , 11796,14 , 1454,21 , 11740,56 , 11796,14 , 396,2 , 360,2 , 1167,5 , 728,17 , 22,23 , {85,65,72}, 296,1 , 14851,95 , 19,5 , 4,0 , 4339,10 , 4349,7 , 2, 1, 1, 6, 7 }, // Ukrainian/Cyrillic/Ukraine - { 130, 1, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 556,6 , 556,6 , 828,10 , 838,9 , 269,6 , 1403,18 , 18,7 , 25,12 , 11810,36 , 11810,36 , 85,14 , 11810,36 , 11810,36 , 85,14 , 0,2 , 0,2 , 1172,4 , 1176,20 , 22,23 , {80,75,82}, 176,2 , 14946,49 , 4,4 , 13,6 , 4356,4 , 3251,7 , 2, 0, 7, 6, 7 }, // Urdu/Arabic/Pakistan - { 130, 1, 100, 1643, 1644, 59, 37, 1776, 45, 43, 101, 8221, 8220, 8217, 8216, 556,6 , 556,6 , 828,10 , 838,9 , 269,6 , 1403,18 , 18,7 , 25,12 , 11810,36 , 11810,36 , 85,14 , 11810,36 , 11810,36 , 85,14 , 0,2 , 0,2 , 1172,4 , 1176,20 , 22,23 , {73,78,82}, 121,1 , 14995,42 , 4,4 , 13,6 , 4356,4 , 4360,5 , 2, 1, 7, 7, 7 }, // Urdu/Arabic/India - { 131, 7, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8217, 8216, 0,6 , 0,6 , 847,8 , 847,8 , 27,8 , 1421,18 , 37,5 , 198,11 , 11846,32 , 11878,61 , 11939,14 , 11846,32 , 11878,61 , 11939,14 , 398,2 , 362,2 , 199,4 , 5,17 , 22,23 , {85,90,83}, 333,4 , 15037,58 , 19,5 , 4,0 , 4365,6 , 4371,11 , 2, 0, 1, 6, 7 }, // Uzbek/Latin/Uzbekistan - { 131, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 394,8 , 1439,33 , 55,4 , 198,11 , 11953,21 , 7794,49 , 85,14 , 11953,21 , 7794,49 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {65,70,78}, 272,1 , 15095,13 , 19,5 , 4,0 , 4382,6 , 3242,9 , 0, 0, 6, 4, 5 }, // Uzbek/Arabic/Afghanistan - { 131, 2, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 696,19 , 37,5 , 87,12 , 11974,28 , 12002,53 , 12055,14 , 11974,28 , 12002,53 , 12055,14 , 400,2 , 364,2 , 45,4 , 5,17 , 22,23 , {85,90,83}, 337,3 , 15108,49 , 19,5 , 4,0 , 4388,7 , 4395,10 , 2, 0, 1, 6, 7 }, // Uzbek/Cyrillic/Uzbekistan - { 132, 7, 232, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 855,8 , 855,8 , 119,10 , 192,18 , 37,5 , 8,10 , 12069,33 , 12102,55 , 12157,21 , 12069,33 , 12102,55 , 12157,21 , 402,2 , 366,2 , 45,4 , 5,17 , 22,23 , {86,78,68}, 340,1 , 15157,33 , 19,5 , 4,0 , 4405,10 , 4415,8 , 0, 0, 1, 6, 7 }, // Vietnamese/Latin/Vietnam + { 125, 7, 217, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 812,8 , 812,8 , 1339,9 , 1348,16 , 37,5 , 8,10 , 11376,28 , 11404,54 , 11458,14 , 11376,28 , 11404,54 , 11458,14 , 369,2 , 332,2 , 187,4 , 5,17 , 22,23 , {84,82,89}, 258,1 , 14722,40 , 4,4 , 13,6 , 4283,6 , 4289,7 , 2, 1, 1, 6, 7 }, // Turkish/Latin/Turkey + { 125, 7, 56, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 812,8 , 812,8 , 1339,9 , 1348,16 , 18,7 , 25,12 , 11376,28 , 11404,54 , 11458,14 , 11376,28 , 11404,54 , 11458,14 , 369,2 , 332,2 , 187,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 4,4 , 13,6 , 4283,6 , 4296,6 , 2, 1, 1, 6, 7 }, // Turkish/Latin/Cyprus + { 126, 7, 218, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8220, 8221, 0,6 , 0,6 , 820,8 , 820,8 , 495,10 , 1348,16 , 37,5 , 8,10 , 11472,28 , 11500,54 , 11554,14 , 11568,28 , 11596,54 , 11554,14 , 371,13 , 334,14 , 1101,4 , 5,17 , 22,23 , {84,77,84}, 332,3 , 14762,49 , 19,5 , 4,0 , 4302,12 , 4314,12 , 2, 1, 1, 6, 7 }, // Turkmen/Latin/Turkmenistan + { 128, 1, 44, 46, 44, 59, 37, 48, 45, 43, 101, 187, 171, 8250, 8249, 0,6 , 0,6 , 196,10 , 206,9 , 53,10 , 1364,17 , 18,7 , 25,12 , 11650,21 , 11671,55 , 11726,14 , 11650,21 , 11671,55 , 11726,14 , 384,12 , 348,12 , 45,4 , 5,17 , 22,23 , {67,78,89}, 249,1 , 14811,40 , 4,4 , 13,6 , 4326,8 , 4334,5 , 2, 1, 7, 6, 7 }, // Uighur/Arabic/China + { 129, 2, 222, 44, 160, 59, 37, 48, 45, 43, 1077, 171, 187, 8222, 8220, 0,6 , 0,6 , 134,7 , 134,7 , 156,8 , 1381,22 , 37,5 , 8,10 , 1454,21 , 11740,56 , 11796,14 , 1454,21 , 11740,56 , 11796,14 , 396,2 , 360,2 , 1105,5 , 708,17 , 22,23 , {85,65,72}, 298,1 , 14851,95 , 19,5 , 4,0 , 4339,10 , 4349,7 , 2, 1, 1, 6, 7 }, // Ukrainian/Cyrillic/Ukraine + { 130, 1, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 556,6 , 556,6 , 828,10 , 838,9 , 269,6 , 1403,18 , 18,7 , 25,12 , 11810,36 , 11810,36 , 85,14 , 11810,36 , 11810,36 , 85,14 , 0,2 , 0,2 , 1110,4 , 1114,20 , 22,23 , {80,75,82}, 176,2 , 14946,49 , 4,4 , 13,6 , 4356,4 , 3251,7 , 2, 0, 7, 6, 7 }, // Urdu/Arabic/Pakistan + { 130, 1, 100, 1643, 1644, 59, 37, 1776, 45, 43, 101, 8221, 8220, 8217, 8216, 556,6 , 556,6 , 828,10 , 838,9 , 269,6 , 1403,18 , 18,7 , 25,12 , 11810,36 , 11810,36 , 85,14 , 11810,36 , 11810,36 , 85,14 , 0,2 , 0,2 , 1110,4 , 1114,20 , 22,23 , {73,78,82}, 121,1 , 14995,42 , 4,4 , 13,6 , 4356,4 , 4360,5 , 2, 1, 7, 7, 7 }, // Urdu/Arabic/India + { 131, 7, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8217, 8216, 0,6 , 0,6 , 847,8 , 847,8 , 27,8 , 1421,18 , 37,5 , 198,11 , 11846,32 , 11878,61 , 11939,14 , 11846,32 , 11878,61 , 11939,14 , 398,2 , 362,2 , 187,4 , 5,17 , 22,23 , {85,90,83}, 335,4 , 15037,58 , 19,5 , 4,0 , 4365,6 , 4371,11 , 2, 0, 1, 6, 7 }, // Uzbek/Latin/Uzbekistan + { 131, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 394,8 , 1439,33 , 55,4 , 198,11 , 11953,21 , 7794,49 , 85,14 , 11953,21 , 7794,49 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {65,70,78}, 274,1 , 15095,13 , 19,5 , 4,0 , 4382,6 , 3242,9 , 0, 0, 6, 4, 5 }, // Uzbek/Arabic/Afghanistan + { 131, 2, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 696,19 , 37,5 , 87,12 , 11974,28 , 12002,53 , 12055,14 , 11974,28 , 12002,53 , 12055,14 , 400,2 , 364,2 , 45,4 , 5,17 , 22,23 , {85,90,83}, 339,3 , 15108,49 , 19,5 , 4,0 , 4388,7 , 4395,10 , 2, 0, 1, 6, 7 }, // Uzbek/Cyrillic/Uzbekistan + { 132, 7, 232, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 855,8 , 855,8 , 119,10 , 192,18 , 37,5 , 8,10 , 12069,33 , 12102,55 , 12157,21 , 12069,33 , 12102,55 , 12157,21 , 402,2 , 366,2 , 45,4 , 5,17 , 22,23 , {86,78,68}, 342,1 , 15157,33 , 19,5 , 4,0 , 4405,10 , 4415,8 , 0, 0, 1, 6, 7 }, // Vietnamese/Latin/Vietnam { 133, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Volapuk/Latin/World - { 134, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 863,11 , 874,10 , 27,8 , 10,17 , 37,5 , 8,10 , 12178,29 , 12207,77 , 12284,15 , 12299,30 , 12207,77 , 12284,15 , 404,2 , 368,2 , 1196,7 , 5,17 , 22,23 , {71,66,80}, 119,1 , 15190,91 , 4,4 , 13,6 , 4423,7 , 4430,16 , 2, 1, 1, 6, 7 }, // Welsh/Latin/United Kingdom - { 135, 7, 187, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 528,10 , 1472,17 , 37,5 , 8,10 , 12329,28 , 12357,50 , 12329,28 , 12329,28 , 12357,50 , 12329,28 , 406,3 , 370,3 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 15281,65 , 8,5 , 4,0 , 4446,5 , 4451,8 , 0, 0, 1, 6, 7 }, // Wolof/Latin/Senegal + { 134, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 863,11 , 874,10 , 27,8 , 10,17 , 37,5 , 8,10 , 12178,29 , 12207,77 , 12284,15 , 12299,30 , 12207,77 , 12284,15 , 404,2 , 368,2 , 1134,7 , 5,17 , 22,23 , {71,66,80}, 119,1 , 15190,91 , 4,4 , 13,6 , 4423,7 , 4430,16 , 2, 1, 1, 6, 7 }, // Welsh/Latin/United Kingdom + { 135, 7, 187, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 528,10 , 1472,17 , 37,5 , 8,10 , 12329,28 , 12357,50 , 12329,28 , 12329,28 , 12357,50 , 12329,28 , 406,3 , 370,3 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,5 , 15281,65 , 8,5 , 4,0 , 4446,5 , 4451,8 , 0, 0, 1, 6, 7 }, // Wolof/Latin/Senegal { 136, 7, 195, 46, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 12407,28 , 12435,61 , 85,14 , 12407,28 , 12435,61 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 15346,79 , 4,4 , 4,0 , 4459,8 , 4467,15 , 2, 1, 7, 6, 7 }, // Xhosa/Latin/South Africa { 137, 18, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 884,9 , 884,9 , 27,8 , 1489,19 , 37,5 , 8,10 , 12496,54 , 12496,54 , 85,14 , 12496,54 , 12496,54 , 85,14 , 409,11 , 373,10 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 4482,6 , 4488,5 , 2, 1, 1, 6, 7 }, // Yiddish/Hebrew/World - { 138, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 1508,16 , 477,3 , 8,10 , 12550,33 , 12583,44 , 12627,14 , 12550,33 , 12641,69 , 12627,14 , 420,5 , 383,5 , 1203,11 , 1214,37 , 22,23 , {78,71,78}, 178,1 , 15425,35 , 4,4 , 13,6 , 4493,10 , 4503,8 , 2, 1, 1, 6, 7 }, // Yoruba/Latin/Nigeria - { 138, 7, 23, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 1508,16 , 477,3 , 8,10 , 12710,33 , 12743,44 , 12787,14 , 12710,33 , 12801,69 , 12787,14 , 425,5 , 388,5 , 1251,11 , 1214,37 , 22,23 , {88,79,70}, 207,3 , 15460,64 , 4,4 , 13,6 , 4493,10 , 4511,6 , 0, 0, 1, 6, 7 }, // Yoruba/Latin/Benin + { 138, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 1508,16 , 477,3 , 8,10 , 12550,33 , 12583,44 , 12627,14 , 12550,33 , 12641,69 , 12627,14 , 420,5 , 383,5 , 1141,11 , 1152,37 , 22,23 , {78,71,78}, 178,1 , 15425,35 , 4,4 , 13,6 , 4493,10 , 4503,8 , 2, 1, 1, 6, 7 }, // Yoruba/Latin/Nigeria + { 138, 7, 23, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 1508,16 , 477,3 , 8,10 , 12710,33 , 12743,44 , 12787,14 , 12710,33 , 12801,69 , 12787,14 , 425,5 , 388,5 , 1189,11 , 1152,37 , 22,23 , {88,79,70}, 207,5 , 15460,64 , 4,4 , 13,6 , 4493,10 , 4511,6 , 0, 0, 1, 6, 7 }, // Yoruba/Latin/Benin { 140, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 893,9 , 902,8 , 547,6 , 35,18 , 37,5 , 8,10 , 12870,28 , 12898,74 , 12972,14 , 12870,28 , 12898,74 , 12972,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {90,65,82}, 5,1 , 15524,67 , 4,4 , 13,6 , 4517,7 , 4524,17 , 2, 1, 7, 6, 7 }, // Zulu/Latin/South Africa { 141, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 495,10 , 478,17 , 37,5 , 480,16 , 12986,28 , 13014,51 , 2320,14 , 13065,28 , 13014,51 , 2320,14 , 430,9 , 393,11 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 10090,44 , 19,5 , 4,0 , 4541,13 , 4554,5 , 2, 0, 1, 6, 7 }, // Norwegian Nynorsk/Latin/Norway - { 142, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 8216, 8217, 0,6 , 0,6 , 159,7 , 159,7 , 1524,11 , 450,19 , 37,5 , 8,10 , 2043,28 , 2071,58 , 2129,14 , 2043,28 , 2071,58 , 2143,14 , 439,10 , 404,7 , 298,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 12015,170 , 19,5 , 4,0 , 4559,8 , 629,19 , 2, 1, 1, 6, 7 }, // Bosnian/Latin/Bosnia And Herzegowina - { 142, 2, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 9127,28 , 9155,56 , 8974,14 , 9127,28 , 9155,56 , 8974,14 , 260,11 , 411,13 , 45,4 , 5,17 , 22,23 , {66,65,77}, 300,2 , 15591,152 , 19,5 , 4,0 , 4567,8 , 3649,19 , 2, 1, 1, 6, 7 }, // Bosnian/Cyrillic/Bosnia And Herzegowina + { 142, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 8216, 8217, 0,6 , 0,6 , 159,7 , 159,7 , 1524,11 , 450,19 , 37,5 , 8,10 , 2043,28 , 2071,58 , 2129,14 , 2043,28 , 2071,58 , 2143,14 , 439,10 , 404,7 , 286,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 12015,170 , 19,5 , 4,0 , 4559,8 , 629,19 , 2, 1, 1, 6, 7 }, // Bosnian/Latin/Bosnia And Herzegowina + { 142, 2, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 9127,28 , 9155,56 , 8974,14 , 9127,28 , 9155,56 , 8974,14 , 260,11 , 411,13 , 45,4 , 5,17 , 22,23 , {66,65,77}, 302,2 , 15591,152 , 19,5 , 4,0 , 4567,8 , 3649,19 , 2, 1, 1, 6, 7 }, // Bosnian/Cyrillic/Bosnia And Herzegowina { 143, 29, 131, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,86,82}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 5, 6, 7 }, // Divehi/Thaana/Maldives { 144, 7, 251, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 80,17 , 37,5 , 8,10 , 13093,30 , 13123,57 , 85,14 , 13093,30 , 13123,57 , 85,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {71,66,80}, 119,1 , 0,7 , 4,4 , 4,0 , 4575,5 , 4580,12 , 2, 1, 1, 6, 7 }, // Manx/Latin/Isle Of Man { 145, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 97,16 , 37,5 , 8,10 , 13180,28 , 13208,61 , 85,14 , 13180,28 , 13208,61 , 85,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {71,66,80}, 119,1 , 0,7 , 4,4 , 4,0 , 4592,8 , 4600,14 , 2, 1, 1, 6, 7 }, // Cornish/Latin/United Kingdom { 146, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1535,8 , 1543,18 , 18,7 , 25,12 , 13269,28 , 13297,49 , 13346,14 , 13269,28 , 13297,49 , 13346,14 , 449,2 , 424,2 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 15743,17 , 4,4 , 4,0 , 4614,4 , 4618,5 , 2, 1, 1, 6, 7 }, // Akan/Latin/Ghana - { 147, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1561,6 , 97,16 , 18,7 , 25,12 , 13360,51 , 13360,51 , 13411,19 , 13360,51 , 13360,51 , 13430,20 , 0,2 , 0,2 , 1262,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 15760,19 , 4,4 , 13,6 , 4623,6 , 2666,4 , 2, 1, 7, 7, 7 }, // Konkani/Devanagari/India + { 147, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1561,6 , 97,16 , 18,7 , 25,12 , 13360,51 , 13360,51 , 13411,19 , 13360,51 , 13360,51 , 13430,20 , 0,2 , 0,2 , 1200,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 15760,19 , 4,4 , 13,6 , 4623,6 , 2666,4 , 2, 1, 7, 7, 7 }, // Konkani/Devanagari/India { 148, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Ga/Latin/Ghana { 149, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 910,9 , 734,8 , 269,6 , 10,17 , 37,5 , 8,10 , 13450,29 , 13479,54 , 85,14 , 13450,29 , 13479,54 , 85,14 , 451,7 , 426,7 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 15779,12 , 4,4 , 13,6 , 4629,4 , 4633,8 , 2, 1, 1, 6, 7 }, // Igbo/Latin/Nigeria { 150, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 13533,28 , 13561,74 , 13635,14 , 13533,28 , 13561,74 , 13635,14 , 458,9 , 433,7 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 15791,23 , 4,4 , 13,6 , 4641,7 , 1191,5 , 2, 1, 7, 6, 7 }, // Kamba/Latin/Kenya @@ -1733,15 +1730,15 @@ { 159, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 1567,27 , 37,5 , 8,10 , 13649,28 , 13677,50 , 3107,14 , 13649,28 , 13677,50 , 3107,14 , 467,2 , 440,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 8,5 , 4,0 , 4648,6 , 4654,6 , 2, 1, 1, 6, 7 }, // Friulian/Latin/Italy { 160, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Venda/Latin/South Africa { 161, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 919,11 , 930,10 , 547,6 , 1594,23 , 496,12 , 508,17 , 13727,28 , 13755,44 , 13799,14 , 13727,28 , 13755,44 , 13799,14 , 469,3 , 442,5 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 15814,37 , 4,4 , 13,6 , 4660,6 , 4666,12 , 2, 1, 1, 6, 7 }, // Ewe/Latin/Ghana - { 161, 7, 212, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 919,11 , 930,10 , 547,6 , 1594,23 , 37,5 , 8,10 , 13727,28 , 13755,44 , 13799,14 , 13727,28 , 13755,44 , 13799,14 , 469,3 , 442,5 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 15851,106 , 4,4 , 13,6 , 4660,6 , 4678,11 , 0, 0, 1, 6, 7 }, // Ewe/Latin/Togo + { 161, 7, 212, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 919,11 , 930,10 , 547,6 , 1594,23 , 37,5 , 8,10 , 13727,28 , 13755,44 , 13799,14 , 13727,28 , 13755,44 , 13799,14 , 469,3 , 442,5 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,5 , 15851,106 , 4,4 , 13,6 , 4660,6 , 4678,11 , 0, 0, 1, 6, 7 }, // Ewe/Latin/Togo { 162, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,84,66}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Walamo/Ethiopic/Ethiopia { 163, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 269,6 , 10,17 , 18,7 , 25,12 , 13813,21 , 13834,57 , 85,14 , 13813,21 , 13834,57 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 0,7 , 4,4 , 13,6 , 4689,14 , 4703,19 , 2, 1, 7, 6, 7 }, // Hawaiian/Latin/United States { 164, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Tyap/Latin/Nigeria { 165, 7, 129, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,87,75}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Nyanja/Latin/Malawi { 166, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 940,9 , 949,8 , 547,6 , 35,18 , 18,7 , 25,12 , 13891,28 , 13919,55 , 13891,28 , 13891,28 , 13919,55 , 13891,28 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {80,72,80}, 179,1 , 15957,58 , 4,4 , 13,6 , 4722,8 , 4730,9 , 2, 1, 7, 6, 7 }, // Filipino/Latin/Philippines - { 167, 7, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 13974,28 , 14002,63 , 3695,14 , 13974,28 , 14002,63 , 3695,14 , 472,12 , 447,11 , 45,4 , 5,17 , 22,23 , {67,72,70}, 228,3 , 16015,55 , 19,5 , 4,0 , 4739,16 , 4755,7 , 2, 0, 1, 6, 7 }, // Swiss German/Latin/Switzerland + { 167, 7, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 13974,28 , 14002,63 , 3695,14 , 13974,28 , 14002,63 , 3695,14 , 472,12 , 447,11 , 45,4 , 5,17 , 22,23 , {67,72,70}, 230,3 , 16015,55 , 19,5 , 4,0 , 4739,16 , 4755,7 , 2, 0, 1, 6, 7 }, // Swiss German/Latin/Switzerland { 167, 7, 74, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 13974,28 , 14002,63 , 3695,14 , 13974,28 , 14002,63 , 3695,14 , 472,12 , 447,11 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 4739,16 , 4762,10 , 2, 1, 1, 6, 7 }, // Swiss German/Latin/France - { 167, 7, 123, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 13974,28 , 14002,63 , 3695,14 , 13974,28 , 14002,63 , 3695,14 , 472,12 , 447,11 , 45,4 , 5,17 , 22,23 , {67,72,70}, 228,3 , 16015,55 , 19,5 , 4,0 , 4739,16 , 4772,13 , 2, 0, 1, 6, 7 }, // Swiss German/Latin/Liechtenstein + { 167, 7, 123, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 13974,28 , 14002,63 , 3695,14 , 13974,28 , 14002,63 , 3695,14 , 472,12 , 447,11 , 45,4 , 5,17 , 22,23 , {67,72,70}, 230,3 , 16015,55 , 19,5 , 4,0 , 4739,16 , 4772,13 , 2, 0, 1, 6, 7 }, // Swiss German/Latin/Liechtenstein { 168, 34, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 14065,21 , 14086,28 , 14114,14 , 14065,21 , 14086,28 , 14114,14 , 484,2 , 458,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 133,1 , 0,7 , 8,5 , 4,0 , 4785,3 , 4788,2 , 2, 1, 7, 6, 7 }, // Sichuan Yi/Yi/China { 169, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Kpelle/Latin/Liberia { 170, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 455,8 , 455,8 , 365,7 , 1617,23 , 525,10 , 535,19 , 14128,28 , 14156,65 , 3695,14 , 14128,28 , 14156,65 , 3695,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 16070,15 , 19,5 , 4,0 , 4790,14 , 4804,11 , 2, 1, 1, 6, 7 }, // Low German/Latin/Germany @@ -1751,42 +1748,42 @@ { 173, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 224,8 , 224,8 , 53,10 , 63,17 , 37,5 , 8,10 , 14221,33 , 14254,75 , 14329,14 , 14221,33 , 14254,75 , 14329,14 , 486,11 , 460,13 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 16085,63 , 19,5 , 4,0 , 4827,15 , 4842,5 , 2, 0, 1, 6, 7 }, // Northern Sami/Latin/Norway { 173, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 224,8 , 224,8 , 495,10 , 97,16 , 37,5 , 8,10 , 14343,21 , 14364,70 , 14434,14 , 14343,21 , 14364,70 , 14434,14 , 497,2 , 473,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 16148,23 , 19,5 , 4,0 , 4827,15 , 4847,6 , 2, 1, 1, 6, 7 }, // Northern Sami/Latin/Finland { 173, 7, 205, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 224,8 , 224,8 , 53,10 , 63,17 , 37,5 , 8,10 , 14221,33 , 14254,75 , 14329,14 , 14221,33 , 14254,75 , 14329,14 , 486,11 , 460,13 , 45,4 , 5,17 , 22,23 , {83,69,75}, 190,2 , 16171,63 , 19,5 , 4,0 , 4827,15 , 4853,6 , 2, 0, 1, 6, 7 }, // Northern Sami/Latin/Sweden - { 174, 7, 208, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {84,87,68}, 341,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Taroko/Latin/Taiwan + { 174, 7, 208, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {84,87,68}, 343,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Taroko/Latin/Taiwan { 175, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14448,28 , 14476,62 , 14538,14 , 14448,28 , 14476,62 , 14538,14 , 499,6 , 475,3 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16234,24 , 4,4 , 13,6 , 4859,8 , 1191,5 , 2, 1, 7, 6, 7 }, // Gusii/Latin/Kenya { 176, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14552,28 , 14580,105 , 14685,14 , 14552,28 , 14580,105 , 14685,14 , 505,10 , 478,10 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16234,24 , 4,4 , 13,6 , 4867,7 , 1191,5 , 2, 1, 7, 6, 7 }, // Taita/Latin/Kenya - { 177, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16258,26 , 19,5 , 4,0 , 4874,6 , 4451,8 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Senegal - { 177, 7, 34, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16258,26 , 19,5 , 4,0 , 4874,6 , 4880,14 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Burkina Faso + { 177, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,5 , 16258,26 , 19,5 , 4,0 , 4874,6 , 4451,8 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Senegal + { 177, 7, 34, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,5 , 16258,26 , 19,5 , 4,0 , 4874,6 , 4880,14 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Burkina Faso { 177, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 16284,25 , 19,5 , 4,0 , 4874,6 , 4894,8 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Cameroon { 177, 7, 80, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {71,77,68}, 166,1 , 16309,20 , 19,5 , 4,0 , 4874,6 , 4902,6 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Gambia { 177, 7, 83, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 0,7 , 19,5 , 4,0 , 4874,6 , 4908,5 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Ghana - { 177, 7, 91, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {71,78,70}, 220,2 , 0,7 , 19,5 , 4,0 , 4874,6 , 4913,4 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Guinea - { 177, 7, 92, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16258,26 , 19,5 , 4,0 , 4874,6 , 4917,12 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Guinea Bissau + { 177, 7, 91, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {71,78,70}, 222,2 , 0,7 , 19,5 , 4,0 , 4874,6 , 4913,4 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Guinea + { 177, 7, 92, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,5 , 16258,26 , 19,5 , 4,0 , 4874,6 , 4917,12 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Guinea Bissau { 177, 7, 121, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 16329,23 , 19,5 , 4,0 , 4874,6 , 4929,9 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Liberia - { 177, 7, 136, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {77,82,85}, 223,2 , 16352,22 , 19,5 , 4,0 , 4874,6 , 4938,8 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Mauritania - { 177, 7, 156, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16258,26 , 19,5 , 4,0 , 4874,6 , 4946,6 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Niger + { 177, 7, 136, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {77,82,85}, 225,2 , 16352,22 , 19,5 , 4,0 , 4874,6 , 4938,8 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Mauritania + { 177, 7, 156, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,5 , 16258,26 , 19,5 , 4,0 , 4874,6 , 4946,6 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Niger { 177, 7, 157, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 16374,23 , 19,5 , 4,0 , 4874,6 , 4952,9 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Nigeria { 177, 7, 189, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {83,76,76}, 187,2 , 16397,25 , 19,5 , 4,0 , 4874,6 , 4961,11 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Sierra Leone { 178, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14800,28 , 14828,63 , 14891,14 , 14800,28 , 14828,63 , 14891,14 , 521,6 , 495,8 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16422,23 , 4,4 , 13,6 , 4972,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Kikuyu/Latin/Kenya { 179, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14905,28 , 14933,105 , 15038,14 , 14905,28 , 14933,105 , 15038,14 , 527,7 , 503,5 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16445,25 , 4,4 , 13,6 , 4978,8 , 1191,5 , 2, 1, 7, 6, 7 }, // Samburu/Latin/Kenya - { 180, 7, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 669,27 , 37,5 , 8,10 , 15052,28 , 15080,55 , 15135,14 , 15052,28 , 15080,55 , 15135,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,90,78}, 282,3 , 16470,28 , 0,4 , 4,0 , 4986,4 , 3382,10 , 2, 1, 7, 6, 7 }, // Sena/Latin/Mozambique + { 180, 7, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 669,27 , 37,5 , 8,10 , 15052,28 , 15080,55 , 15135,14 , 15052,28 , 15080,55 , 15135,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,90,78}, 284,3 , 16470,28 , 0,4 , 4,0 , 4986,4 , 3382,10 , 2, 1, 7, 6, 7 }, // Sena/Latin/Mozambique { 181, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15149,28 , 15177,50 , 15227,14 , 15149,28 , 15177,50 , 15227,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 16498,24 , 4,4 , 13,6 , 4990,10 , 1819,8 , 2, 1, 7, 6, 7 }, // North Ndebele/Latin/Zimbabwe { 182, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15241,29 , 15270,65 , 15335,14 , 15241,29 , 15270,65 , 15335,14 , 534,8 , 508,7 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16522,25 , 4,4 , 4,0 , 5000,9 , 1624,8 , 2, 0, 1, 6, 7 }, // Rombo/Latin/Tanzania { 183, 9, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15349,30 , 15379,47 , 85,14 , 15349,30 , 15379,47 , 85,14 , 542,6 , 515,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16547,21 , 0,4 , 4,0 , 5009,7 , 5016,6 , 2, 1, 1, 6, 7 }, // Tachelhit/Tifinagh/Morocco { 183, 7, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15426,30 , 15456,48 , 85,14 , 15426,30 , 15456,48 , 85,14 , 548,6 , 523,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16568,21 , 0,4 , 4,0 , 5022,10 , 5032,6 , 2, 1, 1, 6, 7 }, // Tachelhit/Latin/Morocco - { 184, 7, 3, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 957,8 , 965,7 , 415,8 , 97,16 , 18,7 , 25,12 , 15504,28 , 15532,34 , 15566,14 , 15580,30 , 15610,51 , 15661,14 , 554,7 , 531,9 , 1266,7 , 1273,21 , 22,23 , {68,90,68}, 205,2 , 16589,57 , 0,4 , 4,0 , 5038,9 , 5047,8 , 2, 1, 6, 5, 6 }, // Kabyle/Latin/Algeria + { 184, 7, 3, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 957,8 , 965,7 , 415,8 , 97,16 , 18,7 , 25,12 , 15504,28 , 15532,34 , 15566,14 , 15580,30 , 15610,51 , 15661,14 , 554,7 , 531,9 , 1204,7 , 1211,21 , 22,23 , {68,90,68}, 205,2 , 16589,57 , 0,4 , 4,0 , 5038,9 , 5047,8 , 2, 1, 6, 5, 6 }, // Kabyle/Latin/Algeria { 185, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15675,28 , 15703,74 , 15777,14 , 15675,28 , 15703,74 , 15777,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16646,26 , 4,4 , 4,0 , 5055,10 , 1689,6 , 0, 0, 1, 7, 7 }, // Nyankole/Latin/Uganda { 186, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15791,28 , 15819,82 , 15901,14 , 15791,28 , 15819,82 , 15901,14 , 561,7 , 540,7 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16672,29 , 0,4 , 4,0 , 5065,6 , 5071,10 , 2, 0, 1, 6, 7 }, // Bena/Latin/Tanzania { 187, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15915,28 , 15943,62 , 16005,14 , 15915,28 , 15943,62 , 16005,14 , 568,5 , 547,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16701,27 , 4,4 , 4,0 , 5081,8 , 1624,8 , 2, 0, 1, 6, 7 }, // Vunjo/Latin/Tanzania - { 188, 7, 132, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 16019,28 , 16047,44 , 16091,14 , 16019,28 , 16047,44 , 16091,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16728,24 , 4,4 , 13,6 , 5089,9 , 2188,4 , 0, 0, 1, 6, 7 }, // Bambara/Latin/Mali - { 188, 75, 132, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Bambara/Nko/Mali + { 188, 7, 132, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 16019,28 , 16047,44 , 16091,14 , 16019,28 , 16047,44 , 16091,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,5 , 16728,24 , 4,4 , 13,6 , 5089,9 , 2188,4 , 0, 0, 1, 6, 7 }, // Bambara/Latin/Mali + { 188, 75, 132, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,5 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Bambara/Nko/Mali { 189, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16105,28 , 16133,64 , 16197,14 , 16105,28 , 16133,64 , 16197,14 , 573,2 , 556,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16234,24 , 4,4 , 13,6 , 5098,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Embu/Latin/Kenya - { 190, 12, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 972,9 , 981,8 , 547,6 , 35,18 , 18,7 , 25,12 , 16211,28 , 16239,49 , 16288,14 , 16211,28 , 16239,49 , 16288,14 , 575,3 , 558,6 , 1294,6 , 5,17 , 22,23 , {85,83,68}, 6,1 , 16752,25 , 4,4 , 13,6 , 5104,3 , 5107,15 , 2, 1, 7, 6, 7 }, // Cherokee/Cherokee/United States + { 190, 12, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 972,9 , 981,8 , 547,6 , 35,18 , 18,7 , 25,12 , 16211,28 , 16239,49 , 16288,14 , 16211,28 , 16239,49 , 16288,14 , 575,3 , 558,6 , 1232,6 , 5,17 , 22,23 , {85,83,68}, 6,1 , 16752,25 , 4,4 , 13,6 , 5104,3 , 5107,15 , 2, 1, 7, 6, 7 }, // Cherokee/Cherokee/United States { 191, 7, 137, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 16302,27 , 16329,48 , 16377,14 , 16302,27 , 16329,48 , 16377,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,85,82}, 176,2 , 16777,21 , 8,5 , 4,0 , 5122,14 , 5136,5 , 2, 0, 1, 6, 7 }, // Morisyen/Latin/Mauritius { 192, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16391,28 , 16419,133 , 15335,14 , 16391,28 , 16419,133 , 15335,14 , 578,4 , 564,5 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16701,27 , 4,4 , 13,6 , 5141,10 , 1624,8 , 2, 0, 1, 6, 7 }, // Makonde/Latin/Tanzania { 193, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16552,36 , 16588,63 , 16651,14 , 16552,36 , 16588,63 , 16651,14 , 582,3 , 569,3 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16798,29 , 8,5 , 4,0 , 5151,8 , 5159,9 , 2, 0, 1, 6, 7 }, // Langi/Latin/Tanzania { 194, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16665,28 , 16693,66 , 16759,14 , 16665,28 , 16693,66 , 16759,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16827,26 , 0,4 , 4,0 , 5168,7 , 5175,7 , 0, 0, 1, 7, 7 }, // Ganda/Latin/Uganda { 195, 7, 239, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 16773,80 , 16773,80 , 85,14 , 16773,80 , 16773,80 , 85,14 , 585,8 , 572,7 , 45,4 , 5,17 , 22,23 , {90,77,87}, 131,1 , 0,7 , 4,4 , 13,6 , 5182,9 , 1813,6 , 2, 1, 1, 6, 7 }, // Bemba/Latin/Zambia - { 196, 7, 39, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 159,7 , 159,7 , 119,10 , 1640,27 , 37,5 , 8,10 , 16853,28 , 16881,73 , 16954,14 , 16853,28 , 16881,73 , 16954,14 , 68,2 , 65,2 , 45,4 , 5,17 , 22,23 , {67,86,69}, 281,1 , 16853,43 , 19,5 , 24,7 , 5191,12 , 5203,10 , 2, 1, 1, 6, 7 }, // Kabuverdianu/Latin/Cape Verde + { 196, 7, 39, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 159,7 , 159,7 , 119,10 , 1640,27 , 37,5 , 8,10 , 16853,28 , 16881,73 , 16954,14 , 16853,28 , 16881,73 , 16954,14 , 68,2 , 65,2 , 45,4 , 5,17 , 22,23 , {67,86,69}, 283,1 , 16853,43 , 19,5 , 24,7 , 5191,12 , 5203,10 , 2, 1, 1, 6, 7 }, // Kabuverdianu/Latin/Cape Verde { 197, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16968,28 , 16996,51 , 17047,14 , 16968,28 , 16996,51 , 17047,14 , 593,2 , 579,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16234,24 , 4,4 , 13,6 , 5213,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Meru/Latin/Kenya { 198, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17061,28 , 17089,53 , 17142,14 , 17061,28 , 17089,53 , 17142,14 , 595,6 , 581,10 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16896,26 , 4,4 , 13,6 , 5219,8 , 5227,12 , 2, 1, 7, 6, 7 }, // Kalenjin/Latin/Kenya { 199, 7, 148, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 17156,23 , 17179,92 , 17271,14 , 17156,23 , 17179,92 , 17271,14 , 601,7 , 591,5 , 45,4 , 5,17 , 22,23 , {78,65,68}, 6,1 , 16922,22 , 4,4 , 4,0 , 5239,13 , 5252,8 , 2, 1, 1, 6, 7 }, // Nama/Latin/Namibia @@ -1800,35 +1797,35 @@ { 206, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17681,28 , 17709,69 , 17778,14 , 17681,28 , 17709,69 , 17778,14 , 648,9 , 632,6 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 17059,28 , 4,4 , 13,6 , 5325,6 , 1689,6 , 0, 0, 1, 7, 7 }, // Teso/Latin/Uganda { 206, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17681,28 , 17709,69 , 17778,14 , 17681,28 , 17709,69 , 17778,14 , 648,9 , 632,6 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 17087,27 , 4,4 , 13,6 , 5325,6 , 5331,5 , 2, 1, 7, 6, 7 }, // Teso/Latin/Kenya { 207, 7, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,82,78}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Saho/Latin/Eritrea - { 208, 7, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 17792,28 , 17820,53 , 17873,14 , 17792,28 , 17820,53 , 17873,14 , 657,6 , 638,6 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17114,23 , 0,4 , 4,0 , 5336,11 , 5347,5 , 0, 0, 1, 6, 7 }, // Koyra Chiini/Latin/Mali + { 208, 7, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 17792,28 , 17820,53 , 17873,14 , 17792,28 , 17820,53 , 17873,14 , 657,6 , 638,6 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,5 , 17114,23 , 0,4 , 4,0 , 5336,11 , 5347,5 , 0, 0, 1, 6, 7 }, // Koyra Chiini/Latin/Mali { 209, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15915,28 , 15943,62 , 16005,14 , 15915,28 , 15943,62 , 16005,14 , 568,5 , 547,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16701,27 , 0,4 , 4,0 , 5352,6 , 1624,8 , 2, 0, 1, 6, 7 }, // Rwa/Latin/Tanzania { 210, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17887,28 , 17915,69 , 17984,14 , 17887,28 , 17915,69 , 17984,14 , 663,2 , 644,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 17137,23 , 0,4 , 4,0 , 5358,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Luo/Latin/Kenya { 211, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15675,28 , 15703,74 , 15777,14 , 15675,28 , 15703,74 , 15777,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16646,26 , 4,4 , 4,0 , 5364,6 , 1689,6 , 0, 0, 1, 7, 7 }, // Chiga/Latin/Uganda { 212, 7, 145, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17998,28 , 18026,48 , 18074,14 , 17998,28 , 18026,48 , 18074,14 , 665,9 , 646,10 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 17160,22 , 19,5 , 4,0 , 5370,17 , 5387,6 , 2, 1, 1, 6, 7 }, // Central Morocco Tamazight/Latin/Morocco - { 213, 7, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18088,28 , 18116,54 , 17873,14 , 18088,28 , 18116,54 , 17873,14 , 657,6 , 638,6 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17114,23 , 0,4 , 4,0 , 5393,15 , 5347,5 , 0, 0, 1, 6, 7 }, // Koyraboro Senni/Latin/Mali + { 213, 7, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18088,28 , 18116,54 , 17873,14 , 18088,28 , 18116,54 , 17873,14 , 657,6 , 638,6 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,5 , 17114,23 , 0,4 , 4,0 , 5393,15 , 5347,5 , 0, 0, 1, 6, 7 }, // Koyraboro Senni/Latin/Mali { 214, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 18170,28 , 18198,63 , 18261,14 , 18170,28 , 18198,63 , 18261,14 , 674,5 , 656,8 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 17182,27 , 0,4 , 4,0 , 5408,9 , 1624,8 , 2, 0, 1, 6, 7 }, // Shambala/Latin/Tanzania { 215, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 18275,33 , 18308,54 , 18362,19 , 18275,33 , 18308,54 , 18362,19 , 679,3 , 664,6 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 17209,10 , 8,5 , 4,0 , 5417,4 , 2666,4 , 2, 1, 7, 7, 7 }, // Bodo/Devanagari/India { 218, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 18381,25 , 18406,45 , 18451,17 , 18381,25 , 18406,45 , 18381,25 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 17219,43 , 19,5 , 4,0 , 5421,7 , 5428,5 , 2, 1, 1, 6, 7 }, // Chechen/Cyrillic/Russia { 219, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Church/Cyrillic/Russia { 220, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Chuvash/Cyrillic/Russia - { 230, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18468,28 , 18496,50 , 18546,14 , 18468,28 , 18496,50 , 18546,14 , 682,5 , 670,6 , 45,4 , 5,17 , 22,23 , {67,68,70}, 214,2 , 17262,24 , 0,4 , 4,0 , 5433,8 , 5441,16 , 2, 1, 1, 6, 7 }, // Luba Katanga/Latin/Congo Kinshasa - { 231, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 989,10 , 989,10 , 156,8 , 622,18 , 37,5 , 8,10 , 18560,28 , 18588,65 , 3695,14 , 18653,35 , 18588,65 , 3695,14 , 687,5 , 676,8 , 424,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 5457,14 , 5471,10 , 2, 1, 1, 6, 7 }, // Luxembourgish/Latin/Luxembourg + { 230, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18468,28 , 18496,50 , 18546,14 , 18468,28 , 18496,50 , 18546,14 , 682,5 , 670,6 , 45,4 , 5,17 , 22,23 , {67,68,70}, 216,2 , 17262,24 , 0,4 , 4,0 , 5433,8 , 5441,16 , 2, 1, 1, 6, 7 }, // Luba Katanga/Latin/Congo Kinshasa + { 231, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 989,10 , 989,10 , 156,8 , 622,18 , 37,5 , 8,10 , 18560,28 , 18588,65 , 3695,14 , 18653,35 , 18588,65 , 3695,14 , 687,5 , 676,8 , 404,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 5457,14 , 5471,10 , 2, 1, 1, 6, 7 }, // Luxembourgish/Latin/Luxembourg { 232, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Navaho/Latin/United States { 236, 7, 21, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Walloon/Latin/Belgium { 237, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18688,28 , 18716,72 , 18788,14 , 18688,28 , 18716,72 , 18788,14 , 692,3 , 684,3 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17286,21 , 0,4 , 4,0 , 5481,5 , 5486,7 , 0, 0, 1, 6, 7 }, // Aghem/Latin/Cameroon { 238, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18802,28 , 18830,70 , 18900,14 , 18802,28 , 18830,70 , 18900,14 , 695,10 , 687,9 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17307,22 , 19,5 , 4,0 , 5493,5 , 5498,8 , 0, 0, 1, 6, 7 }, // Basaa/Latin/Cameroon - { 239, 7, 156, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18088,28 , 18914,53 , 18967,14 , 18088,28 , 18914,53 , 18967,14 , 705,8 , 696,10 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17114,23 , 0,4 , 4,0 , 5506,10 , 5516,5 , 0, 0, 1, 6, 7 }, // Zarma/Latin/Niger + { 239, 7, 156, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18088,28 , 18914,53 , 18967,14 , 18088,28 , 18914,53 , 18967,14 , 705,8 , 696,10 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,5 , 17114,23 , 0,4 , 4,0 , 5506,10 , 5516,5 , 0, 0, 1, 6, 7 }, // Zarma/Latin/Niger { 240, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18981,28 , 19009,45 , 19054,14 , 18981,28 , 19009,45 , 19054,14 , 713,5 , 706,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 19,5 , 4,0 , 5521,5 , 1985,8 , 0, 0, 1, 6, 7 }, // Duala/Latin/Cameroon - { 241, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19068,28 , 19096,50 , 19146,14 , 19068,28 , 19096,50 , 19146,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17329,23 , 19,5 , 4,0 , 5526,5 , 5531,7 , 0, 0, 1, 6, 7 }, // Jola Fonyi/Latin/Senegal + { 241, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19068,28 , 19096,50 , 19146,14 , 19068,28 , 19096,50 , 19146,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,5 , 17329,23 , 19,5 , 4,0 , 5526,5 , 5531,7 , 0, 0, 1, 6, 7 }, // Jola Fonyi/Latin/Senegal { 242, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19160,30 , 19190,85 , 19275,14 , 19160,30 , 19190,85 , 19275,14 , 718,7 , 712,9 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17352,23 , 19,5 , 4,0 , 5538,6 , 5544,7 , 0, 0, 1, 6, 7 }, // Ewondo/Latin/Cameroon { 243, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19289,29 , 19318,45 , 19363,14 , 19289,29 , 19318,45 , 19363,14 , 725,6 , 721,7 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17375,11 , 19,5 , 4,0 , 5551,5 , 5556,7 , 0, 0, 1, 6, 7 }, // Bafia/Latin/Cameroon - { 244, 7, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 19377,28 , 19405,59 , 19464,14 , 19377,28 , 19405,59 , 19464,14 , 731,8 , 728,10 , 45,4 , 5,17 , 22,23 , {77,90,78}, 282,3 , 0,7 , 8,5 , 4,0 , 5563,5 , 5568,10 , 2, 1, 7, 6, 7 }, // Makhuwa Meetto/Latin/Mozambique + { 244, 7, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 19377,28 , 19405,59 , 19464,14 , 19377,28 , 19405,59 , 19464,14 , 731,8 , 728,10 , 45,4 , 5,17 , 22,23 , {77,90,78}, 284,3 , 0,7 , 8,5 , 4,0 , 5563,5 , 5568,10 , 2, 1, 7, 6, 7 }, // Makhuwa Meetto/Latin/Mozambique { 245, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19478,28 , 19506,74 , 19580,14 , 19478,28 , 19506,74 , 19580,14 , 739,5 , 738,5 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17386,17 , 4,4 , 13,6 , 5578,6 , 5584,7 , 0, 0, 1, 6, 7 }, // Mundang/Latin/Cameroon { 246, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19594,30 , 19624,89 , 19713,14 , 19594,30 , 19624,89 , 19713,14 , 744,4 , 743,4 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17403,20 , 19,5 , 4,0 , 5591,6 , 5597,7 , 0, 0, 1, 6, 7 }, // Kwasio/Latin/Cameroon { 247, 7, 254, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 538,9 , 97,16 , 18,7 , 554,12 , 19727,38 , 19765,79 , 19844,14 , 19727,38 , 19765,79 , 19844,14 , 748,2 , 747,2 , 45,4 , 5,17 , 22,23 , {83,83,80}, 119,1 , 0,7 , 4,4 , 13,6 , 5604,9 , 0,0 , 2, 1, 1, 6, 7 }, // Nuer/Latin/South Sudan - { 248, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 999,11 , 999,11 , 227,6 , 1690,30 , 37,5 , 8,10 , 19858,21 , 19879,71 , 19950,14 , 19858,21 , 19879,71 , 19950,14 , 750,2 , 749,2 , 1300,5 , 1305,17 , 22,23 , {82,85,66}, 123,1 , 17423,47 , 19,5 , 4,0 , 5613,9 , 5622,9 , 2, 1, 1, 6, 7 }, // Sakha/Cyrillic/Russia + { 248, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 999,11 , 999,11 , 227,6 , 1690,30 , 37,5 , 8,10 , 19858,21 , 19879,71 , 19950,14 , 19858,21 , 19879,71 , 19950,14 , 750,2 , 749,2 , 1238,5 , 1243,17 , 22,23 , {82,85,66}, 123,1 , 17423,47 , 19,5 , 4,0 , 5613,9 , 5622,9 , 2, 1, 1, 6, 7 }, // Sakha/Cyrillic/Russia { 249, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 19964,28 , 19992,60 , 20052,14 , 19964,28 , 19992,60 , 20052,14 , 752,9 , 751,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 17470,25 , 0,4 , 4,0 , 5631,9 , 5640,9 , 2, 0, 1, 6, 7 }, // Sangu/Latin/Tanzania - { 251, 7, 156, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18088,28 , 18116,54 , 17873,14 , 18088,28 , 18116,54 , 17873,14 , 705,8 , 696,10 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17114,23 , 0,4 , 4,0 , 5649,13 , 5516,5 , 0, 0, 1, 6, 7 }, // Tasawaq/Latin/Niger + { 251, 7, 156, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18088,28 , 18116,54 , 17873,14 , 18088,28 , 18116,54 , 17873,14 , 705,8 , 696,10 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,5 , 17114,23 , 0,4 , 4,0 , 5649,13 , 5516,5 , 0, 0, 1, 6, 7 }, // Tasawaq/Latin/Niger { 252, 35, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 20066,30 , 20066,30 , 85,14 , 20066,30 , 20066,30 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 17495,15 , 4,4 , 13,6 , 5662,2 , 5664,4 , 2, 1, 1, 6, 7 }, // Vai/Vai/Liberia { 252, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 20096,48 , 20096,48 , 85,14 , 20096,48 , 20096,48 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 17510,20 , 4,4 , 13,6 , 5668,3 , 5671,8 , 2, 1, 1, 6, 7 }, // Vai/Latin/Liberia { 253, 7, 206, 44, 8217, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 265,9 , 265,9 , 53,10 , 622,18 , 37,5 , 8,10 , 20144,28 , 20172,53 , 20225,14 , 20144,28 , 20172,53 , 20225,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,72,70}, 0,0 , 0,7 , 8,5 , 4,0 , 5679,6 , 5685,6 , 2, 0, 1, 6, 7 }, // Walser/Latin/Switzerland @@ -1844,7 +1841,7 @@ { 290, 72, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 7, 7 }, // Manipuri/Meitei Mayek/India { 304, 78, 100, 46, 44, 59, 37, 7248, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 269,6 , 10,17 , 18,7 , 25,12 , 21060,26 , 21086,42 , 21128,14 , 21060,26 , 21086,42 , 21128,14 , 806,5 , 814,5 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 17658,71 , 8,5 , 4,0 , 5792,7 , 5799,6 , 2, 1, 7, 7, 7 }, // Santali/Ol Chiki/India { 304, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 7, 7 }, // Santali/Devanagari/India - { 309, 100, 232, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {86,78,68}, 340,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Tai Dam/Tai Viet/Vietnam + { 309, 100, 232, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {86,78,68}, 342,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Tai Dam/Tai Viet/Vietnam { 312, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Akoose/Latin/Cameroon { 313, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 21142,87 , 21142,87 , 85,14 , 21142,87 , 21142,87 , 21229,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 0,7 , 8,5 , 4,0 , 5805,12 , 5817,22 , 2, 1, 7, 6, 7 }, // Lakota/Latin/United States { 314, 9, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15349,30 , 21243,48 , 85,14 , 15349,30 , 21243,48 , 85,14 , 542,6 , 515,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16547,21 , 0,4 , 4,0 , 5839,8 , 5016,6 , 2, 1, 1, 6, 7 }, // Standard Moroccan Tamazight/Tifinagh/Morocco @@ -1852,35 +1849,35 @@ { 316, 1, 103, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 21291,58 , 21291,58 , 21349,14 , 21291,58 , 21291,58 , 21349,14 , 811,3 , 819,3 , 45,4 , 5,17 , 22,23 , {73,81,68}, 44,5 , 17729,20 , 19,5 , 4,0 , 5847,14 , 5861,5 , 0, 0, 6, 5, 6 }, // Central Kurdish/Arabic/Iraq { 316, 1, 102, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 21291,58 , 21291,58 , 21349,14 , 21291,58 , 21291,58 , 21349,14 , 811,3 , 819,3 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 17749,19 , 19,5 , 4,0 , 5847,14 , 5866,5 , 0, 0, 6, 5, 5 }, // Central Kurdish/Arabic/Iran { 317, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 181,7 , 181,7 , 113,6 , 622,18 , 55,4 , 59,9 , 21363,28 , 21391,53 , 21444,14 , 21363,28 , 21391,53 , 21444,14 , 814,9 , 822,10 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17768,27 , 19,5 , 4,0 , 5871,14 , 5885,6 , 2, 1, 1, 6, 7 }, // Lower Sorbian/Latin/Germany - { 318, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 181,7 , 181,7 , 113,6 , 622,18 , 566,12 , 59,9 , 21458,28 , 21486,53 , 21539,14 , 21458,28 , 21486,53 , 21539,14 , 814,9 , 832,9 , 1322,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17795,29 , 19,5 , 4,0 , 5891,15 , 5906,6 , 2, 1, 1, 6, 7 }, // Upper Sorbian/Latin/Germany + { 318, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 181,7 , 181,7 , 113,6 , 622,18 , 566,12 , 59,9 , 21458,28 , 21486,53 , 21539,14 , 21458,28 , 21486,53 , 21539,14 , 814,9 , 832,9 , 1260,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17795,29 , 19,5 , 4,0 , 5891,15 , 5906,6 , 2, 1, 1, 6, 7 }, // Upper Sorbian/Latin/Germany { 319, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Kenyang/Latin/Cameroon - { 320, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 244,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Mohawk/Latin/Canada - { 321, 75, 91, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,78,70}, 220,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Nko/Nko/Guinea + { 320, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 246,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Mohawk/Latin/Canada + { 321, 75, 91, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,78,70}, 222,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Nko/Nko/Guinea { 322, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Prussian/Latin/World - { 323, 7, 90, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,84,81}, 309,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Kiche/Latin/Guatemala + { 323, 7, 90, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,84,81}, 311,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Kiche/Latin/Guatemala { 324, 7, 205, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {83,69,75}, 190,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 1, 6, 7 }, // Southern Sami/Latin/Sweden { 325, 7, 205, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {83,69,75}, 190,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 1, 6, 7 }, // Lule Sami/Latin/Sweden { 326, 7, 73, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 640,8 , 1798,18 , 254,4 , 258,9 , 21553,28 , 21581,70 , 85,14 , 21553,28 , 21651,73 , 21724,14 , 823,3 , 841,3 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17824,11 , 19,5 , 4,0 , 5912,11 , 5923,5 , 2, 1, 1, 6, 7 }, // Inari Sami/Latin/Finland { 327, 7, 73, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Skolt Sami/Latin/Finland - { 328, 7, 13, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {65,85,68}, 344,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Warlpiri/Latin/Australia + { 328, 7, 13, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {65,85,68}, 346,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Warlpiri/Latin/Australia { 339, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 326,9 , 335,8 , 269,6 , 10,17 , 18,7 , 25,12 , 4304,32 , 4336,53 , 4389,19 , 4304,32 , 4336,53 , 4389,19 , 68,2 , 65,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 17835,31 , 8,5 , 4,0 , 5928,6 , 2666,4 , 2, 1, 7, 7, 7 }, // Maithili/Devanagari/India - { 346, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 774,4 , 1327,39 , 22,23 , {73,82,82}, 346,3 , 17866,27 , 8,5 , 4,0 , 5934,7 , 3263,5 , 0, 0, 6, 5, 5 }, // Mazanderani/Arabic/Iran + { 346, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 754,4 , 1265,39 , 22,23 , {73,82,82}, 348,3 , 17866,27 , 8,5 , 4,0 , 5934,7 , 3263,5 , 0, 0, 6, 5, 5 }, // Mazanderani/Arabic/Iran { 349, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 5941,11 , 0,0 , 0, 0, 6, 5, 5 }, // Northern Luri/Arabic/Iran { 349, 1, 103, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,81,68}, 44,5 , 0,7 , 8,5 , 4,0 , 5941,11 , 0,0 , 0, 0, 6, 5, 6 }, // Northern Luri/Arabic/Iraq { 357, 6, 97, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 1074,5 , 1074,5 , 394,8 , 423,14 , 209,6 , 226,13 , 1980,28 , 1980,28 , 2008,14 , 1980,28 , 1980,28 , 2008,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {72,75,68}, 134,3 , 17893,11 , 4,4 , 13,6 , 5952,2 , 5954,14 , 2, 1, 7, 6, 7 }, // Cantonese/Traditional Han/Hong Kong - { 357, 5, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 1074,5 , 1074,5 , 394,8 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 247,1 , 3122,13 , 4,4 , 13,6 , 5968,2 , 5970,7 , 2, 1, 7, 6, 7 }, // Cantonese/Simplified Han/China + { 357, 5, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 1074,5 , 1074,5 , 394,8 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 249,1 , 3122,13 , 4,4 , 13,6 , 5968,2 , 5970,7 , 2, 1, 7, 6, 7 }, // Cantonese/Simplified Han/China { 358, 138, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Osage/Osage/United States { 360, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Ido/Latin/World { 361, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Lojban/Latin/World { 362, 7, 106, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Sicilian/Latin/Italy { 363, 1, 102, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 6, 5, 5 }, // Southern Kurdish/Arabic/Iran { 364, 1, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,75,82}, 176,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Western Balochi/Arabic/Pakistan - { 365, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 1079,9 , 1088,8 , 547,6 , 35,18 , 18,7 , 25,12 , 21738,28 , 21766,56 , 21822,14 , 21738,28 , 21766,56 , 21822,14 , 0,2 , 0,2 , 1366,8 , 5,17 , 22,23 , {80,72,80}, 179,1 , 17904,56 , 4,4 , 13,6 , 5977,8 , 4730,9 , 2, 1, 7, 6, 7 }, // Cebuano/Latin/Philippines + { 365, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 1079,9 , 1088,8 , 547,6 , 35,18 , 18,7 , 25,12 , 21738,28 , 21766,56 , 21822,14 , 21738,28 , 21766,56 , 21822,14 , 0,2 , 0,2 , 1304,8 , 5,17 , 22,23 , {80,72,80}, 179,1 , 17904,56 , 4,4 , 13,6 , 5977,8 , 4730,9 , 2, 1, 7, 6, 7 }, // Cebuano/Latin/Philippines { 366, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Erzya/Cyrillic/Russia { 367, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Chickasaw/Latin/United States { 368, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Muscogee/Latin/United States - { 369, 7, 172, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,76,78}, 277,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Silesian/Latin/Poland - { 370, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 1096,9 , 1105,8 , 119,10 , 10,17 , 37,5 , 8,10 , 21836,33 , 21869,52 , 85,14 , 21836,33 , 21869,52 , 85,14 , 826,9 , 844,8 , 1374,8 , 5,17 , 22,23 , {78,71,78}, 178,1 , 17960,50 , 4,4 , 4,0 , 5985,14 , 5999,8 , 2, 1, 1, 6, 7 }, // Nigerian Pidgin/Latin/Nigeria + { 369, 7, 172, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,76,78}, 279,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Silesian/Latin/Poland + { 370, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 1096,9 , 1105,8 , 119,10 , 10,17 , 37,5 , 8,10 , 21836,33 , 21869,52 , 85,14 , 21836,33 , 21869,52 , 85,14 , 826,9 , 844,8 , 1312,8 , 5,17 , 22,23 , {78,71,78}, 178,1 , 17960,50 , 4,4 , 4,0 , 5985,14 , 5999,8 , 2, 1, 1, 6, 7 }, // Nigerian Pidgin/Latin/Nigeria { 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 } // trailing zeros }; @@ -3174,23 +3171,22 @@ 0x45, 0x42, 0x4b, 0x69, 0x42, 0x3b, 0x4d, 0x69, 0x42, 0x3b, 0x47, 0x69, 0x42, 0x3b, 0x54, 0x69, 0x42, 0x3b, 0x50, 0x69, 0x42, 0x3b, 0x45, 0x69, 0x42, 0x62, 0x79, 0x74, 0x65, 0x67, 0x72, 0x65, 0x65, 0x70, 0x62, 0x61, 0x6a, 0x74, 0x1263, 0x12ed, 0x1275, 0x12aa, 0x1263, 0x3b, 0x121c, 0x130b, 0x1263, 0x12ed, 0x1275, 0x3b, 0x130a, 0x1263, 0x3b, 0x1274, 0x122b, 0x1263, 0x12ed, 0x1275, 0x3b, 0x1354, -0x1263, 0x3b, 0x45, 0x42, 0x628, 0x627, 0x64a, 0x62a, 0x643, 0x64a, 0x644, 0x648, 0x628, 0x627, 0x64a, 0x62a, 0x3b, 0x645, 0x64a, 0x63a, -0x627, 0x628, 0x627, 0x64a, 0x62a, 0x3b, 0x63a, 0x64a, 0x63a, 0x627, 0x628, 0x627, 0x64a, 0x62a, 0x3b, 0x62a, 0x64a, 0x631, 0x627, 0x628, -0x627, 0x64a, 0x62a, 0x3b, 0x628, 0x64a, 0x62a, 0x627, 0x628, 0x627, 0x64a, 0x62a, 0x3b, 0x45, 0x42, 0x562, 0x561, 0x575, 0x569, 0x565, -0x580, 0x56f, 0x532, 0x3b, 0x544, 0x532, 0x3b, 0x533, 0x532, 0x3b, 0x54f, 0x532, 0x3b, 0x54a, 0x532, 0x3b, 0x45, 0x42, 0x9ac, 0x9be, -0x987, 0x99f, 0x995, 0x9bf, 0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b, 0x9ae, 0x9c7, 0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b, 0x997, 0x9bf, -0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b, 0x99f, 0x9c7, 0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x62, -0x61, 0x79, 0x74, 0x62, 0x79, 0x74, 0x65, 0x2d, 0x61, 0x6b, 0x6f, 0x6b, 0x74, 0x65, 0x64, 0x6f, 0xf9, 0x6b, 0x6f, 0x3b, -0x4d, 0x6f, 0x3b, 0x47, 0x6f, 0x3b, 0x54, 0x6f, 0x3b, 0x50, 0x6f, 0x3b, 0x45, 0x6f, 0x4b, 0x69, 0x6f, 0x3b, 0x4d, 0x69, -0x6f, 0x3b, 0x47, 0x69, 0x6f, 0x3b, 0x54, 0x69, 0x6f, 0x3b, 0x50, 0x69, 0x6f, 0x3b, 0x45, 0x69, 0x6f, 0x431, 0x430, 0x439, -0x442, 0x43e, 0x432, 0x435, 0x1018, 0x102d, 0x102f, 0x1000, 0x103a, 0x431, 0x430, 0x439, 0x442, 0x44b, 0x41a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, -0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, 0x41f, 0x411, 0x3b, 0x45, 0x42, 0x1794, 0x17c3, 0x5b57, 0x8282, 0x4f4d, 0x5143, 0x7d44, 0x62, 0x61, -0x6a, 0x74, 0x6f, 0x76, 0x69, 0x62, 0x61, 0x6a, 0x74, 0x79, 0x62, 0x61, 0x6a, 0x74, 0x6f, 0x6a, 0x62, 0x61, 0x69, 0x64, -0x69, 0x64, 0x62, 0xfd, 0x74, 0x74, 0x61, 0x76, 0x75, 0x74, 0x6b, 0x74, 0x3b, 0x4d, 0x74, 0x3b, 0x47, 0x74, 0x3b, 0x54, -0x74, 0x3b, 0x50, 0x74, 0x3b, 0x45, 0x74, 0x4b, 0x69, 0x74, 0x3b, 0x4d, 0x69, 0x74, 0x3b, 0x47, 0x69, 0x74, 0x3b, 0x54, -0x69, 0x74, 0x3b, 0x50, 0x69, 0x74, 0x3b, 0x45, 0x69, 0x74, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x62, 0x61, 0x69, 0x64, -0x68, 0x74, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x10d9, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10db, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, -0x3b, 0x10d2, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10e2, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10de, 0x10d1, 0x10d0, 0x10d8, 0x10e2, +0x1263, 0x3b, 0x45, 0x42, 0x628, 0x627, 0x64a, 0x62a, 0x643, 0x64a, 0x644, 0x648, 0x628, 0x627, 0x64a, 0x62a, 0x3b, 0x4d, 0x42, 0x3b, +0x47, 0x42, 0x3b, 0x62a, 0x64a, 0x631, 0x627, 0x628, 0x627, 0x64a, 0x62a, 0x3b, 0x628, 0x64a, 0x62a, 0x627, 0x628, 0x627, 0x64a, 0x62a, +0x3b, 0x45, 0x42, 0x562, 0x561, 0x575, 0x569, 0x565, 0x580, 0x56f, 0x532, 0x3b, 0x544, 0x532, 0x3b, 0x533, 0x532, 0x3b, 0x54f, 0x532, +0x3b, 0x54a, 0x532, 0x3b, 0x45, 0x42, 0x9ac, 0x9be, 0x987, 0x99f, 0x995, 0x9bf, 0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b, 0x9ae, 0x9c7, +0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b, 0x997, 0x9bf, 0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b, 0x99f, 0x9c7, 0x983, 0x20, 0x9ac, 0x9be, +0x983, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x62, 0x61, 0x79, 0x74, 0x62, 0x79, 0x74, 0x65, 0x2d, 0x61, 0x6b, 0x6f, 0x6b, +0x74, 0x65, 0x64, 0x6f, 0xf9, 0x6b, 0x6f, 0x3b, 0x4d, 0x6f, 0x3b, 0x47, 0x6f, 0x3b, 0x54, 0x6f, 0x3b, 0x50, 0x6f, 0x3b, +0x45, 0x6f, 0x4b, 0x69, 0x6f, 0x3b, 0x4d, 0x69, 0x6f, 0x3b, 0x47, 0x69, 0x6f, 0x3b, 0x54, 0x69, 0x6f, 0x3b, 0x50, 0x69, +0x6f, 0x3b, 0x45, 0x69, 0x6f, 0x431, 0x430, 0x439, 0x442, 0x43e, 0x432, 0x435, 0x1018, 0x102d, 0x102f, 0x1000, 0x103a, 0x431, 0x430, 0x439, +0x442, 0x44b, 0x41a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, 0x41f, 0x411, 0x3b, 0x45, 0x42, 0x1794, +0x17c3, 0x5b57, 0x8282, 0x4f4d, 0x5143, 0x7d44, 0x62, 0x61, 0x6a, 0x74, 0x6f, 0x76, 0x69, 0x62, 0x61, 0x6a, 0x74, 0x79, 0x62, 0x61, +0x6a, 0x74, 0x6f, 0x6a, 0x62, 0x61, 0x69, 0x64, 0x69, 0x64, 0x62, 0xfd, 0x74, 0x74, 0x61, 0x76, 0x75, 0x74, 0x6b, 0x74, +0x3b, 0x4d, 0x74, 0x3b, 0x47, 0x74, 0x3b, 0x54, 0x74, 0x3b, 0x50, 0x74, 0x3b, 0x45, 0x74, 0x4b, 0x69, 0x74, 0x3b, 0x4d, +0x69, 0x74, 0x3b, 0x47, 0x69, 0x74, 0x3b, 0x54, 0x69, 0x74, 0x3b, 0x50, 0x69, 0x74, 0x3b, 0x45, 0x69, 0x74, 0x6f, 0x63, +0x74, 0x65, 0x74, 0x73, 0x62, 0x61, 0x69, 0x64, 0x68, 0x74, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x10d9, 0x10d1, 0x10d0, 0x10d8, 0x10e2, +0x10d8, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x10e2, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10de, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x45, 0x42, 0x42, 0x79, 0x74, 0x65, 0x73, 0xaac, 0xabe, 0xa87, 0xa9f, 0x6b, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x4b, 0x69, 0x42, 0x20, 0x7b, 0x30, @@ -3208,38 +3204,35 @@ 0xd4d, 0xd15, 0xd46, 0xd2c, 0xd3f, 0x3b, 0xd0e, 0xd02, 0xd2c, 0xd3f, 0x3b, 0xd1c, 0xd3f, 0xd2c, 0xd3f, 0x3b, 0xd1f, 0xd3f, 0xd2c, 0xd3f, 0x3b, 0xd2a, 0xd3f, 0xd2c, 0xd3f, 0x3b, 0x45, 0x42, 0x43a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, 0x41f, 0x411, 0x3b, 0x45, 0x42, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x92a, 0x93f, 0x91f, -0x93e, 0x3b, 0x45, 0x42, 0xb2c, 0xb3e, 0xb07, 0xb1f, 0xb4d, 0x628, 0x627, 0x64a, 0x67c, 0x633, 0x628, 0x627, 0x6cc, 0x62a, 0x3c, 0x4c, -0x52, 0x4d, 0x3e, 0x6b, 0x42, 0x3b, 0x3c, 0x4c, 0x52, 0x4d, 0x3e, 0x4d, 0x42, 0x3b, 0x3c, 0x4c, 0x52, 0x4d, 0x3e, 0x47, -0x42, 0x3b, 0x3c, 0x4c, 0x52, 0x4d, 0x3e, 0x54, 0x42, 0x3b, 0x3c, 0x4c, 0x52, 0x4d, 0x3e, 0x50, 0x42, 0x3b, 0x45, 0x42, -0xa2c, 0xa3e, 0xa07, 0xa1f, 0x62, 0x79, 0x21b, 0x69, 0x431, 0x430, 0x458, 0x442, 0x43e, 0x432, 0x438, 0x628, 0x627, 0x626, 0x64a, 0x67d, -0x632, 0x6aa, 0x644, 0x648, 0x20, 0x628, 0x627, 0x626, 0x64a, 0x67d, 0x632, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, -0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0xdb6, 0xdba, 0xdd2, 0xda7, 0xdca, 0xd9a, 0xdd2, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xdb8, -0xdd9, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xd9c, 0xdd2, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xda7, 0xdd9, 0xdb6, 0x20, 0x7b, -0x30, 0x7d, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x42, 0x62, 0x65, 0x79, 0x74, 0x69, 0x73, 0x6b, -0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x42, 0x42, 0x3b, 0x45, 0x42, 0x6b, 0x69, 0x6c, 0x6f, -0x62, 0x61, 0x69, 0x74, 0x69, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x42, 0x20, -0x7b, 0x30, 0x7d, 0x3b, 0x74, 0x65, 0x72, 0x61, 0x62, 0x61, 0x69, 0x74, 0x69, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x42, -0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x42, 0xbaa, 0xbc8, 0xb9f, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0xc2c, 0xc48, 0xc1f, 0xc4d, 0x200c, 0xc32, -0xc41, 0xc15, 0xc47, 0xc2c, 0xc40, 0x3b, 0xc0e, 0xc2e, 0xc4d, 0x200c, 0xc2c, 0xc3f, 0x3b, 0xc1c, 0xc40, 0xc2c, 0xc40, 0x3b, 0xc1f, 0xc40, -0xc2c, 0xc40, 0x3b, 0xc2a, 0xc40, 0xc2c, 0xc40, 0x3b, 0x45, 0x42, 0xe44, 0xe1a, 0xe15, 0xe4c, 0x70, 0x61, 0x69, 0x74, 0x69, 0x6b, -0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, -0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, -0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x4b, 0x69, -0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, -0x47, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, -0x7d, 0x3b, 0x50, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, -0x7b, 0x30, 0x7d, 0x62, 0x61, 0xfd, 0x74, 0x431, 0x430, 0x439, 0x442, 0x438, 0x628, 0x627, 0x626, 0x679, 0x6b, 0x42, 0x3b, 0x4d, -0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x67e, 0x6cc, 0x20, 0x628, 0x6cc, 0x3b, 0x45, 0x42, 0x62, 0x65, 0x69, 0x74, -0x69, 0x61, 0x75, 0xe0, 0x77, 0x1ecd, 0x301, 0x6e, 0x20, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x6b, 0xe9, 0x62, 0xe1, 0xec, 0x74, -0xec, 0x3b, 0x4d, 0x42, 0x3b, 0x6a, 0xed, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x3b, 0x54, 0xed, 0x62, 0xe1, 0xec, 0x74, 0xec, -0x3b, 0x50, 0xed, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x3b, 0x45, 0x42, 0xe0, 0x77, 0x254, 0x301, 0x6e, 0x20, 0x62, 0xe1, 0xec, -0x74, 0xec, 0x92c, 0x93e, 0x92f, 0x91f, 0x61, 0x1e6d, 0x61, 0x6d, 0x1e0d, 0x61, 0x6e, 0x6b, 0x41, 0x1e6c, 0x3b, 0x4d, 0x41, 0x1e6c, -0x3b, 0x47, 0x41, 0x1e6c, 0x3b, 0x54, 0x41, 0x1e6c, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x13d7, 0x13d3, 0x13cd, 0x13a6, 0x13b5, 0x13a9, -0x431, 0x430, 0x430, 0x439, 0x442, 0x43a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b, -0x45, 0x42, 0x62, 0x79, 0x74, 0x65, 0x79, 0x6a9, 0x6cc, 0x644, 0x648, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x645, 0x6af, 0x627, 0x628, -0x627, 0x6cc, 0x62a, 0x3b, 0x6af, 0x6cc, 0x6af, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x62a, 0x631, 0x627, 0x628, 0x627, 0x6cc, 0x62a, -0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x6d, 0x67, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x42, 0x61, 0x69, 0x74, 0x2d, 0x64, -0x1eb9, 0x6d +0x93e, 0x3b, 0x45, 0x42, 0xb2c, 0xb3e, 0xb07, 0xb1f, 0xb4d, 0x628, 0x627, 0x64a, 0x67c, 0x633, 0x628, 0x627, 0x6cc, 0x62a, 0xa2c, 0xa3e, +0xa07, 0xa1f, 0x62, 0x79, 0x21b, 0x69, 0x431, 0x430, 0x458, 0x442, 0x43e, 0x432, 0x438, 0x628, 0x627, 0x626, 0x64a, 0x67d, 0x632, 0x6aa, +0x644, 0x648, 0x20, 0x628, 0x627, 0x626, 0x64a, 0x67d, 0x632, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, +0x42, 0x3b, 0x45, 0x42, 0xdb6, 0xdba, 0xdd2, 0xda7, 0xdca, 0xd9a, 0xdd2, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xdb8, 0xdd9, 0xdb6, +0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xd9c, 0xdd2, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xda7, 0xdd9, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, +0x3b, 0xdb4, 0xdd9, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x42, 0x62, 0x65, 0x79, 0x74, 0x69, 0x73, 0x6b, 0x42, 0x3b, +0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x42, 0x42, 0x3b, 0x45, 0x42, 0x6b, 0x69, 0x6c, 0x6f, 0x62, 0x61, +0x69, 0x74, 0x69, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x42, 0x20, 0x7b, 0x30, +0x7d, 0x3b, 0x74, 0x65, 0x72, 0x61, 0x62, 0x61, 0x69, 0x74, 0x69, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x42, 0x20, 0x7b, +0x30, 0x7d, 0x3b, 0x45, 0x42, 0xbaa, 0xbc8, 0xb9f, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0xc2c, 0xc48, 0xc1f, 0xc4d, 0x200c, 0xc32, 0xc41, 0xc15, +0xc47, 0xc2c, 0xc40, 0x3b, 0xc0e, 0xc2e, 0xc4d, 0x200c, 0xc2c, 0xc3f, 0x3b, 0xc1c, 0xc40, 0xc2c, 0xc40, 0x3b, 0xc1f, 0xc40, 0xc2c, 0xc40, +0x3b, 0xc2a, 0xc40, 0xc2c, 0xc40, 0x3b, 0x45, 0x42, 0xe44, 0xe1a, 0xe15, 0xe4c, 0x70, 0x61, 0x69, 0x74, 0x69, 0x6b, 0x42, 0x20, +0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x42, 0x20, +0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x42, 0x20, +0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x4b, 0x69, 0x42, 0x20, +0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x69, +0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, +0x50, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, +0x7d, 0x62, 0x61, 0xfd, 0x74, 0x431, 0x430, 0x439, 0x442, 0x438, 0x628, 0x627, 0x626, 0x679, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, +0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x67e, 0x6cc, 0x20, 0x628, 0x6cc, 0x3b, 0x45, 0x42, 0x62, 0x65, 0x69, 0x74, 0x69, 0x61, +0x75, 0xe0, 0x77, 0x1ecd, 0x301, 0x6e, 0x20, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x6b, 0xe9, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x3b, +0x4d, 0x42, 0x3b, 0x6a, 0xed, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x3b, 0x54, 0xed, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x3b, 0x50, +0xed, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x3b, 0x45, 0x42, 0xe0, 0x77, 0x254, 0x301, 0x6e, 0x20, 0x62, 0xe1, 0xec, 0x74, 0xec, +0x92c, 0x93e, 0x92f, 0x91f, 0x61, 0x1e6d, 0x61, 0x6d, 0x1e0d, 0x61, 0x6e, 0x6b, 0x41, 0x1e6c, 0x3b, 0x4d, 0x41, 0x1e6c, 0x3b, 0x47, +0x41, 0x1e6c, 0x3b, 0x54, 0x41, 0x1e6c, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x13d7, 0x13d3, 0x13cd, 0x13a6, 0x13b5, 0x13a9, 0x431, 0x430, +0x430, 0x439, 0x442, 0x43a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, +0x62, 0x79, 0x74, 0x65, 0x79, 0x6a9, 0x6cc, 0x644, 0x648, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x645, 0x6af, 0x627, 0x628, 0x627, 0x6cc, +0x62a, 0x3b, 0x6af, 0x6cc, 0x6af, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x62a, 0x631, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x50, +0x42, 0x3b, 0x45, 0x42, 0x6d, 0x67, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x42, 0x61, 0x69, 0x74, 0x2d, 0x64, 0x1eb9, 0x6d }; static const ushort am_data[] = { @@ -3344,14 +3337,14 @@ 0x24, 0x48, 0x52, 0x4b, 0x4b, 0x4d, 0x4b, 0x10d, 0x6b, 0x72, 0x2e, 0x41, 0x66, 0x6c, 0x2e, 0x4e, 0x41, 0x66, 0x2e, 0x55, 0x53, 0x24, 0x50, 0x46, 0x42, 0x75, 0x44, 0x47, 0x48, 0x20b5, 0x41, 0x72, 0x4d, 0x4b, 0x52, 0x4d, 0x52, 0x73, 0x20a6, 0x20b1, 0x52, 0x46, 0x57, 0x53, 0x24, 0x53, 0x52, 0x4c, 0x65, 0x45, 0x6b, 0x72, 0x54, 0x53, 0x68, 0x54, 0x24, 0x55, 0x53, 0x68, -0x41, 0x45, 0x44, 0x56, 0x54, 0x44, 0x41, 0x43, 0x46, 0x41, 0x24, 0xa0, 0x43, 0x41, 0x46, 0x43, 0x46, 0x43, 0x46, 0x50, -0x46, 0x47, 0x47, 0x55, 0x4d, 0x4d, 0x41, 0x44, 0x43, 0x48, 0x46, 0x4c, 0x53, 0x44, 0x54, 0x20be, 0x20b2, 0x46, 0x74, 0x49, -0x53, 0x4b, 0x52, 0x70, 0x43, 0x41, 0x24, 0xffe5, 0x20b8, 0x441, 0x43e, 0x43c, 0x20a9, 0x4b, 0x50, 0x57, 0x20ba, 0x20ad, 0x4b, 0x7a, -0x434, 0x435, 0x43d, 0x2e, 0x20ae, 0x43, 0x4e, 0xa5, 0x928, 0x947, 0x930, 0x942, 0x60b, 0x631, 0x6cc, 0x627, 0x644, 0x7a, 0x142, 0x52, -0x24, 0x200b, 0x4d, 0x54, 0x6e, 0x44, 0x62, 0x631, 0x53, 0x2f, 0x42, 0x73, 0x52, 0x4f, 0x4e, 0x4c, 0x20b4, 0x52, 0x53, 0x44, -0x41a, 0x41c, 0xdbb, 0xdd4, 0x2e, 0x20a1, 0x52, 0x44, 0x24, 0x51, 0x43, 0x24, 0x42, 0x2f, 0x2e, 0x47, 0x73, 0x2e, 0x42, 0x73, -0x2e, 0x53, 0x441, 0x43e, 0x43c, 0x2e, 0x52, 0x73, 0x2e, 0xe3f, 0x54, 0x4d, 0x54, 0x73, 0x6f, 0x2bb, 0x6d, 0x441, 0x45e, 0x43c, -0x20ab, 0x4e, 0x54, 0x24, 0x41, 0x24, 0x49, 0x52, 0x52 +0x41, 0x45, 0x44, 0x56, 0x54, 0x44, 0x41, 0x46, 0x202f, 0x43, 0x46, 0x41, 0x24, 0xa0, 0x43, 0x41, 0x46, 0x43, 0x46, 0x43, +0x46, 0x50, 0x46, 0x47, 0x47, 0x55, 0x4d, 0x4d, 0x41, 0x44, 0x43, 0x48, 0x46, 0x4c, 0x53, 0x44, 0x54, 0x20be, 0x20b2, 0x46, +0x74, 0x49, 0x53, 0x4b, 0x52, 0x70, 0x43, 0x41, 0x24, 0xffe5, 0x20b8, 0x441, 0x43e, 0x43c, 0x20a9, 0x4b, 0x50, 0x57, 0x20ba, 0x20ad, +0x4b, 0x7a, 0x434, 0x435, 0x43d, 0x2e, 0x20ae, 0x43, 0x4e, 0xa5, 0x928, 0x947, 0x930, 0x942, 0x60b, 0x631, 0x6cc, 0x627, 0x644, 0x7a, +0x142, 0x52, 0x24, 0x200b, 0x4d, 0x54, 0x6e, 0x44, 0x62, 0x631, 0x53, 0x2f, 0x42, 0x73, 0x52, 0x4f, 0x4e, 0x4c, 0x20b4, 0x52, +0x53, 0x44, 0x41a, 0x41c, 0xdbb, 0xdd4, 0x2e, 0x20a1, 0x52, 0x44, 0x24, 0x51, 0x43, 0x24, 0x42, 0x2f, 0x2e, 0x47, 0x73, 0x2e, +0x42, 0x73, 0x2e, 0x53, 0x441, 0x43e, 0x43c, 0x2e, 0x52, 0x73, 0x2e, 0xe3f, 0x54, 0x4d, 0x54, 0x73, 0x6f, 0x2bb, 0x6d, 0x441, +0x45e, 0x43c, 0x20ab, 0x4e, 0x54, 0x24, 0x41, 0x24, 0x49, 0x52, 0x52 }; static const ushort currency_display_name_data[] = { @@ -4359,7 +4352,7 @@ 0x69, 0x72, 0x67, 0x69, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x5a, 0x69, 0x6d, 0x62, 0x61, 0x62, 0x77, 0x65, 0x44, 0x69, 0x65, 0x67, 0x6f, 0x20, 0x47, 0x61, 0x72, 0x63, 0x69, 0x61, 0x49, 0x73, 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x4d, 0x61, 0x6e, 0x4a, 0x65, 0x72, 0x73, 0x65, 0x79, 0x53, 0x6f, 0x75, 0x74, -0x68, 0x20, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x53, 0x69, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x61, 0x72, 0x74, 0x65, 0x6e, 0x57, +0x68, 0x20, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x53, 0x69, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x61, 0x72, 0x74, 0x65, 0x6e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x65, 0x73, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x74, 0x6f, 0x4d, 0x6f, 0x6e, 0x64, 0x6f, 0x65, 0x65, 0x73, 0x74, 0x69, 0x45, 0x65, 0x73, 0x74, 0x69, 0x66, 0xf8, 0x72, 0x6f, 0x79, 0x73, 0x6b, 0x74, 0x46, 0xf8, 0x72, 0x6f, 0x79, 0x61, 0x72, 0x73, 0x75, 0x6f, 0x6d, 0x69, 0x53, 0x75, 0x6f, 0x6d, 0x69, 0x66, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qlocale_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qlocale_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qlocale_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qlocale_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -359,7 +359,6 @@ quint16 countryId() const { return m_data->m_country_id; } QByteArray bcp47Name(char separator = '-') const; - QByteArray rawName(char separator = '-') const; inline QLatin1String languageCode() const { return languageToCode(QLocale::Language(m_data->m_language_id)); } inline QLatin1String scriptCode() const { return scriptToCode(QLocale::Script(m_data->m_script_id)); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qlocale_win.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qlocale_win.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qlocale_win.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qlocale_win.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -115,6 +115,7 @@ QVariant timeFormat(QLocale::FormatType); QVariant dateTimeFormat(QLocale::FormatType); QVariant dayName(int, QLocale::FormatType); + QVariant standaloneMonthName(int, QLocale::FormatType); QVariant monthName(int, QLocale::FormatType); QVariant toString(QDate, QLocale::FormatType); QVariant toString(QTime, QLocale::FormatType); @@ -411,7 +412,7 @@ return getLocaleInfo<QVariant>(short_day_map[day]); } -QVariant QSystemLocalePrivate::monthName(int month, QLocale::FormatType type) +QVariant QSystemLocalePrivate::standaloneMonthName(int month, QLocale::FormatType type) { static const LCTYPE short_month_map[] = { LOCALE_SABBREVMONTHNAME1, LOCALE_SABBREVMONTHNAME2, LOCALE_SABBREVMONTHNAME3, @@ -434,6 +435,30 @@ return getLocaleInfo<QVariant>(lctype); } +QVariant QSystemLocalePrivate::monthName(int month, QLocale::FormatType type) +{ + SYSTEMTIME st = {}; + st.wYear = 2001; + st.wMonth = month; + st.wDay = 10; + + const DWORD flags{}; // Must be clear when passing a format string. + // MS's docs for the LOCALE_SMONTHNAME* say to include the day in a format. + // Educated guess: this works for the LOCALE_SABBREVMONTHNAME*, too, in so + // far as the abbreviated plain name might differ from abbreviated + // standalone one. + const wchar_t *const format = type == QLocale::LongFormat ? L"ddMMMM" : L"ddMMM"; + wchar_t buf[255]; + if (getDateFormat(flags, &st, format, buf, 255) > 2) { + // Elide the two digits of day number + QString text = QString::fromWCharArray(buf + 2); + if (substitution() == SAlways) + text = substituteDigits(text); + return text; + } + return {}; +} + QVariant QSystemLocalePrivate::toString(QDate date, QLocale::FormatType type) { SYSTEMTIME st; @@ -818,11 +843,13 @@ case DayNameShort: return d->dayName(in.toInt(), QLocale::ShortFormat); case MonthNameLong: - case StandaloneMonthNameLong: return d->monthName(in.toInt(), QLocale::LongFormat); + case StandaloneMonthNameLong: + return d->standaloneMonthName(in.toInt(), QLocale::LongFormat); case MonthNameShort: - case StandaloneMonthNameShort: return d->monthName(in.toInt(), QLocale::ShortFormat); + case StandaloneMonthNameShort: + return d->standaloneMonthName(in.toInt(), QLocale::ShortFormat); case DateToStringShort: return d->toString(in.toDate(), QLocale::ShortFormat); case DateToStringLong: diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qregularexpression.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qregularexpression.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qregularexpression.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qregularexpression.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -52,6 +52,10 @@ #include <QtCore/qatomic.h> #include <QtCore/qdatastream.h> +#if defined(Q_OS_MACOS) +#include <QtCore/private/qcore_mac_p.h> +#endif + #define PCRE2_CODE_UNIT_WIDTH 16 #include <pcre2.h> @@ -1122,6 +1126,8 @@ #ifdef QT_DEBUG return false; +#elif defined(Q_OS_MACOS) + return !qt_mac_runningUnderRosetta(); #else return true; #endif @@ -1291,7 +1297,7 @@ pcre2_jit_stack_assign_16(matchContext, &qtPcreCallback, nullptr); pcre2_match_data_16 *matchData = pcre2_match_data_create_from_pattern_16(compiledPattern, nullptr); - const unsigned short * const subjectUtf16 = subject.utf16() + subjectStart; + const auto subjectUtf16 = reinterpret_cast<const ushort*>(subject.data()) + subjectStart; int result; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qstring.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qstring.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qstring.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qstring.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -4550,6 +4550,10 @@ Example: \snippet qstring/main.cpp 100 + + \note Due to how the regular expression matching algorithm works, + this function will actually match repeatedly from the beginning of + the string until the position \a from is reached. */ int QString::lastIndexOf(const QRegularExpression &re, int from, QRegularExpressionMatch *rmatch) const { @@ -4558,13 +4562,13 @@ return -1; } - int endpos = (from < 0) ? (size() + from + 1) : (from); + int endpos = (from < 0) ? (size() + from + 1) : (from + 1); QRegularExpressionMatchIterator iterator = re.globalMatch(*this); int lastIndex = -1; while (iterator.hasNext()) { QRegularExpressionMatch match = iterator.next(); int start = match.capturedStart(); - if (start <= endpos) { + if (start < endpos) { lastIndex = start; if (rmatch) *rmatch = std::move(match); @@ -7180,13 +7184,17 @@ if (length_mod == lm_l) { const ushort *buff = va_arg(ap, const ushort*); const ushort *ch = buff; - while (*ch != 0) + while (precision != 0 && *ch != 0) { ++ch; + --precision; + } subst.setUtf16(buff, ch - buff); - } else + } else if (precision == -1) { subst = QString::fromUtf8(va_arg(ap, const char*)); - if (precision != -1) - subst.truncate(precision); + } else { + const char *buff = va_arg(ap, const char*); + subst = QString::fromUtf8(buff, qstrnlen(buff, precision)); + } ++c; break; } @@ -7868,6 +7876,8 @@ #if QT_DEPRECATED_SINCE(5, 15) /*! \overload + Use QString::split(const QString &sep, Qt::SplitBehavior behavior, Qt::CaseSensitivity cs) instead. + \obsolete */ QStringList QString::split(const QString &sep, SplitBehavior behavior, Qt::CaseSensitivity cs) const @@ -7900,6 +7910,8 @@ /*! \overload \obsolete + Use QString::splitRef(const QString &sep, Qt::SplitBehavior behavior, Qt::CaseSensitivity cs) instead. + \since 5.4 */ QVector<QStringRef> QString::splitRef(const QString &sep, SplitBehavior behavior, Qt::CaseSensitivity cs) const @@ -7921,6 +7933,8 @@ /*! \overload \obsolete + Use QString::split(QChar sep, Qt::SplitBehavior behavior, Qt::CaseSensitivity cs) instead. + */ QStringList QString::split(QChar sep, SplitBehavior behavior, Qt::CaseSensitivity cs) const { @@ -7971,6 +7985,7 @@ \overload \since 5.4 \obsolete + Use QString::split(const QString &sep, Qt::SplitBehavior behavior, Qt::CaseSensitivity cs) instead. */ QVector<QStringRef> QStringRef::split(const QString &sep, QString::SplitBehavior behavior, Qt::CaseSensitivity cs) const { @@ -7992,6 +8007,7 @@ \overload \since 5.4 \obsolete + Use QString::split(QChar sep, Qt::SplitBehavior behavior, Qt::CaseSensitivity cs) instead. */ QVector<QStringRef> QStringRef::split(QChar sep, QString::SplitBehavior behavior, Qt::CaseSensitivity cs) const { @@ -8058,6 +8074,7 @@ /*! \overload \obsolete + Use QString::split(const QRegularExpression &sep, Qt::SplitBehavior behavior) instead. */ QStringList QString::split(const QRegExp &rx, SplitBehavior behavior) const { @@ -8089,6 +8106,7 @@ \overload \since 5.4 \obsolete + Use QString::splitRef(const QRegularExpression &sep, Qt::SplitBehavior behavior) instead. */ QVector<QStringRef> QString::splitRef(const QRegExp &rx, SplitBehavior behavior) const { @@ -8164,6 +8182,7 @@ \overload \since 5.0 \obsolete + Use QString::split(const QRegularExpression &sep, Qt::SplitBehavior behavior) instead. */ QStringList QString::split(const QRegularExpression &re, SplitBehavior behavior) const { @@ -8195,6 +8214,8 @@ \overload \since 5.4 \obsolete + Use QString::splitRef(const QRegularExpression &sep, Qt::SplitBehavior behavior) instead. + */ QVector<QStringRef> QString::splitRef(const QRegularExpression &re, SplitBehavior behavior) const { @@ -8214,7 +8235,7 @@ \value NormalizationForm_KC Compatibility Decomposition followed by Canonical Composition \sa normalized(), - {http://www.unicode.org/reports/tr15/}{Unicode Standard Annex #15} + {https://www.unicode.org/reports/tr15/}{Unicode Standard Annex #15} */ /*! diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qstring.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qstring.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qstring.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qstring.h 2022-11-11 15:29:17.000000000 +0800 @@ -605,28 +605,28 @@ SkipEmptyParts Q_DECL_ENUMERATOR_DEPRECATED }; - Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use Qt::SplitBehavior variant instead") + Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use split(const QString &sep, Qt::SplitBehavior ...) variant instead") QStringList split(const QString &sep, SplitBehavior behavior, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; - Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use Qt::SplitBehavior variant instead") + Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use splitRef(const QString &sep, Qt::SplitBehavior ...) variant instead") QVector<QStringRef> splitRef(const QString &sep, SplitBehavior behavior, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; - Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use Qt::SplitBehavior variant instead") + Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use split(QChar sep, Qt::SplitBehavior ...) variant instead") QStringList split(QChar sep, SplitBehavior behavior, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; - Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use Qt::SplitBehavior variant instead") + Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use splitRef(QChar sep, Qt::SplitBehavior ...) variant instead") QVector<QStringRef> splitRef(QChar sep, SplitBehavior behavior, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; #ifndef QT_NO_REGEXP - Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use Qt::SplitBehavior variant instead") + Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use split(const QRegularExpression &, Qt::SplitBehavior) variant instead") QStringList split(const QRegExp &sep, SplitBehavior behavior) const; - Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use Qt::SplitBehavior variant instead") + Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use splitRef(const QRegularExpression &, Qt::SplitBehavior) variant instead") QVector<QStringRef> splitRef(const QRegExp &sep, SplitBehavior behavior) const; #endif #if QT_CONFIG(regularexpression) - Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use Qt::SplitBehavior variant instead") + Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use split(const QRegularExpression &, Qt::SplitBehavior) variant instead") QStringList split(const QRegularExpression &sep, SplitBehavior behavior) const; - Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use Qt::SplitBehavior variant instead") + Q_REQUIRED_RESULT QT_DEPRECATED_VERSION_X_5_15("Use splitRef(const QRegularExpression &, Qt::SplitBehavior) variant instead") QVector<QStringRef> splitRef(const QRegularExpression &sep, SplitBehavior behavior) const; #endif #endif // 5.15 deprecations diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qstringview.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qstringview.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qstringview.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qstringview.h 2022-11-11 15:29:17.000000000 +0800 @@ -244,7 +244,8 @@ } Q_REQUIRED_RESULT Q_DECL_CONSTEXPR QStringView mid(qsizetype pos, qsizetype n) const { - return QStringView(m_data + qBound(qsizetype(0), pos, m_size), qBound(qsizetype(0), pos + n, m_size) - qBound(qsizetype(0), pos, m_size)); + return QStringView(m_data + qBound(qsizetype(0), pos, m_size), + n == -1 ? m_size - pos : qBound(qsizetype(0), pos + n, m_size) - qBound(qsizetype(0), pos, m_size)); } Q_REQUIRED_RESULT Q_DECL_CONSTEXPR QStringView left(qsizetype n) const { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qt_attribution.json qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qt_attribution.json --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qt_attribution.json 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qt_attribution.json 2022-11-11 15:29:17.000000000 +0800 @@ -30,7 +30,7 @@ world's languages, with the largest and most extensive standard repository of locale data available.", "Homepage": "http://cldr.unicode.org/", - "Version": "v38", + "Version": "v39", "License": "// as specified in https://spdx.org/licenses/Unicode-DFS-2016.html", "License": "Unicode License Agreement - Data Files and Software (2016)", "LicenseId": "Unicode-DFS-2016", diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qtextboundaryfinder.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qtextboundaryfinder.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qtextboundaryfinder.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qtextboundaryfinder.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -96,8 +96,8 @@ QTextBoundaryFinder allows to find Unicode text boundaries in a string, accordingly to the Unicode text boundary specification (see - \l{http://www.unicode.org/reports/tr14/}{Unicode Standard Annex #14} and - \l{http://www.unicode.org/reports/tr29/}{Unicode Standard Annex #29}). + \l{https://www.unicode.org/reports/tr14/}{Unicode Standard Annex #14} and + \l{https://www.unicode.org/reports/tr29/}{Unicode Standard Annex #29}). QTextBoundaryFinder can operate on a QString in four possible modes depending on the value of \a BoundaryType. @@ -108,17 +108,17 @@ for example form one grapheme cluster as the user thinks of them as one character, yet it is in this case represented by two unicode code points - (see \l{http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries}). + (see \l{https://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries}). Word boundaries are there to locate the start and end of what a language considers to be a word - (see \l{http://www.unicode.org/reports/tr29/#Word_Boundaries}). + (see \l{https://www.unicode.org/reports/tr29/#Word_Boundaries}). Line break boundaries give possible places where a line break might happen and sentence boundaries will show the beginning and end of whole sentences - (see \l{http://www.unicode.org/reports/tr29/#Sentence_Boundaries} and - \l{http://www.unicode.org/reports/tr14/}). + (see \l{https://www.unicode.org/reports/tr29/#Sentence_Boundaries} and + \l{https://www.unicode.org/reports/tr14/}). The first position in a string is always a valid boundary and refers to the position before the first character. The last diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qunicodetables.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qunicodetables.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qunicodetables.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qunicodetables.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -88,106 +88,21 @@ 14288, 14320, 14352, 14384, 14416, 14448, 14480, 14512, 14544, 14576, 14608, 14640, 14672, 14704, 14736, 14768, 14544, 14544, 14544, 14544, 14800, 14832, 14864, 14896, - 14928, 14960, 14544, 14992, 15024, 15056, 15088, 15120, - 15152, 15184, 15216, 15248, 15280, 15312, 15344, 15376, - 15408, 15408, 15408, 15408, 15408, 15408, 15408, 15408, - 15440, 15440, 15440, 15440, 15472, 15504, 15536, 15568, - 15600, 15632, 15440, 15664, 15696, 15728, 15760, 15792, - 15824, 15856, 15888, 15920, 15952, 15984, 16016, 16048, - 16080, 16112, 16144, 16176, 16208, 16208, 16208, 16240, - 16272, 16304, 16336, 16368, 16400, 16432, 16432, 16464, - 16496, 16528, 16560, 9936, 16592, 16624, 16624, 16656, - 16688, 16688, 16688, 16688, 16688, 16688, 16720, 16752, - - 16784, 16816, 16848, 16880, 16912, 16944, 16976, 17008, - 17040, 17072, 17104, 17104, 17136, 17168, 17200, 17232, - 17264, 17296, 17328, 17360, 17296, 17392, 17424, 17456, - 17488, 17488, 17520, 17552, 17584, 17584, 17616, 17648, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17680, 17680, 17680, - 17680, 17680, 17680, 17680, 17680, 17712, 17744, 17744, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, + 14928, 14960, 14992, 15024, 15056, 15088, 15120, 15152, + 15184, 15216, 15248, 15280, 15312, 15344, 15376, 15408, + 15440, 15440, 15440, 15440, 15440, 15440, 15440, 15440, + 15472, 15504, 15472, 15472, 15536, 15568, 15600, 15632, + 15664, 15696, 15472, 15728, 15760, 15792, 15824, 15856, + 15888, 15920, 15952, 15984, 16016, 16048, 16080, 16112, + 16144, 16176, 16208, 16240, 16272, 16272, 16272, 16304, + 16336, 16368, 16400, 16432, 16464, 16496, 16496, 16528, + 16560, 16592, 16624, 9936, 16656, 16688, 16688, 16720, + 16752, 16752, 16752, 16752, 16752, 16752, 16784, 16816, + + 16848, 16880, 16912, 16944, 16976, 17008, 17040, 17072, + 17104, 17136, 17168, 17168, 17200, 17232, 17264, 17296, + 17328, 17360, 17392, 17424, 17456, 17488, 17520, 17552, + 17584, 17584, 17616, 17648, 17680, 17680, 17712, 17744, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, @@ -214,657 +129,742 @@ 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17776, 17776, 17776, - 17776, 17776, 17776, 17776, 17776, 17808, 17840, 17872, - - 17904, 17936, 17936, 17936, 17936, 17936, 17936, 17936, - 17936, 17936, 17936, 17936, 17936, 17936, 17936, 17936, - 17936, 17936, 17936, 17936, 17936, 17936, 17936, 17936, - 17936, 17936, 17936, 17936, 17936, 17936, 17936, 17936, - 17936, 17936, 17936, 17936, 17968, 18000, 18032, 18064, - 18096, 18096, 18096, 18096, 18096, 18096, 18096, 18096, - 18128, 18160, 18192, 18224, 18256, 18288, 18288, 18320, - 18352, 18384, 18416, 18448, 18480, 18512, 18544, 18576, - 18608, 18640, 18672, 18704, 18736, 18768, 18800, 18832, - 18864, 18896, 18928, 18960, 18992, 19024, 19056, 19088, - 19120, 19152, 19184, 19216, 19248, 19280, 19312, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19568, 19600, - 19632, 19664, 19696, 19728, 19760, 19792, 19824, 19632, - 19664, 19696, 19728, 19760, 19792, 19824, 19632, 19664, - 19696, 19728, 19760, 19792, 19824, 19632, 19664, 19696, - 19728, 19760, 19792, 19824, 19632, 19664, 19696, 19728, - - 19760, 19792, 19824, 19632, 19664, 19696, 19728, 19760, - 19792, 19824, 19632, 19664, 19696, 19728, 19760, 19792, - 19824, 19632, 19664, 19696, 19728, 19760, 19792, 19824, - 19632, 19664, 19696, 19728, 19760, 19792, 19824, 19632, - 19664, 19696, 19728, 19760, 19792, 19824, 19632, 19664, - 19696, 19728, 19760, 19792, 19824, 19632, 19664, 19696, - 19728, 19760, 19792, 19824, 19632, 19664, 19696, 19728, - 19760, 19792, 19824, 19632, 19664, 19696, 19728, 19760, - 19792, 19824, 19632, 19664, 19696, 19728, 19760, 19792, - 19824, 19632, 19664, 19696, 19728, 19760, 19792, 19824, - 19632, 19664, 19696, 19728, 19760, 19792, 19824, 19632, - 19664, 19696, 19728, 19760, 19792, 19824, 19632, 19664, - 19696, 19728, 19760, 19792, 19824, 19632, 19664, 19696, - 19728, 19760, 19792, 19824, 19632, 19664, 19696, 19728, - 19760, 19792, 19824, 19632, 19664, 19696, 19728, 19760, - 19792, 19824, 19632, 19664, 19696, 19728, 19760, 19792, - - 19824, 19632, 19664, 19696, 19728, 19760, 19792, 19824, - 19632, 19664, 19696, 19728, 19760, 19792, 19824, 19632, - 19664, 19696, 19728, 19760, 19792, 19824, 19632, 19664, - 19696, 19728, 19760, 19792, 19824, 19632, 19664, 19696, - 19728, 19760, 19792, 19824, 19632, 19664, 19696, 19728, - 19760, 19792, 19824, 19632, 19664, 19696, 19728, 19760, - 19792, 19824, 19632, 19664, 19696, 19728, 19760, 19792, - 19824, 19632, 19664, 19696, 19728, 19760, 19792, 19824, - 19632, 19664, 19696, 19728, 19760, 19792, 19824, 19632, - 19664, 19696, 19728, 19760, 19792, 19824, 19632, 19664, - 19696, 19728, 19760, 19792, 19824, 19632, 19664, 19696, - 19728, 19760, 19792, 19824, 19632, 19664, 19696, 19728, - 19760, 19792, 19824, 19632, 19664, 19696, 19728, 19760, - 19792, 19824, 19632, 19664, 19696, 19728, 19760, 19792, - 19824, 19632, 19664, 19696, 19728, 19760, 19792, 19824, - 19632, 19664, 19696, 19728, 19760, 19792, 19824, 19632, - - 19664, 19696, 19728, 19760, 19792, 19824, 19632, 19664, - 19696, 19728, 19760, 19792, 19824, 19632, 19664, 19696, - 19728, 19760, 19792, 19824, 19632, 19664, 19696, 19728, - 19760, 19792, 19824, 19632, 19664, 19696, 19728, 19760, - 19792, 19824, 19632, 19664, 19696, 19728, 19760, 19792, - 19824, 19632, 19664, 19696, 19728, 19760, 19792, 19824, - 19632, 19664, 19696, 19728, 19760, 19792, 19824, 19632, - 19664, 19696, 19728, 19760, 19792, 19856, 19888, 19920, - 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952, - 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952, - 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952, - 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952, - 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952, - 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952, - 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952, - 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952, - - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984, - 20016, 20016, 20016, 20016, 20016, 20016, 20016, 20016, - 20048, 20080, 20112, 20144, 20176, 20176, 20208, 20240, - 20272, 20304, 20336, 20368, 20368, 20400, 20432, 20368, - 20368, 20368, 20368, 20368, 20368, 20368, 20368, 20368, - 20368, 20464, 20496, 20368, 20528, 20368, 20560, 20592, - 20624, 20656, 20688, 20720, 20368, 20368, 20368, 20752, - 20784, 20816, 20848, 20880, 20912, 20944, 20976, 21008, - - 21040, 21072, 21104, 9936, 21136, 21136, 21136, 21168, - 21200, 21232, 21264, 21296, 21328, 21360, 21392, 21424, - 9936, 9936, 9936, 9936, 21456, 21488, 21520, 21552, - 21584, 21616, 21648, 21680, 21712, 21744, 21776, 9936, - 21808, 21840, 21872, 21904, 21936, 21968, 22000, 22032, - 22064, 22096, 22128, 22160, 9936, 9936, 9936, 9936, - 22192, 22192, 22192, 22192, 22192, 22192, 22192, 22192, - 22192, 22224, 22256, 22288, 9936, 9936, 9936, 9936, - 22320, 22352, 22384, 22416, 22448, 22480, 8432, 22512, - 22544, 22576, 8432, 8432, 22608, 22640, 22672, 22704, - 22736, 22768, 22800, 22832, 22864, 8432, 22896, 22928, - 22960, 22992, 23024, 23056, 23088, 23120, 8432, 8432, - 23152, 23152, 23184, 8432, 23216, 23248, 23280, 23312, - 23344, 23376, 8432, 8432, 8432, 8432, 8432, 8432, - 8432, 8432, 8432, 23408, 23440, 23472, 8432, 8432, - 23504, 23536, 23568, 8432, 8432, 23600, 23632, 23664, + 17776, 17776, 17776, 17776, 17776, 17808, 17840, 17840, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17872, 17872, 17872, + 17872, 17872, 17872, 17872, 17872, 17904, 17936, 17968, + + 18000, 18032, 18032, 18032, 18032, 18032, 18032, 18032, + 18032, 18032, 18032, 18032, 18032, 18032, 18032, 18032, + 18032, 18032, 18032, 18032, 18032, 18032, 18032, 18032, + 18032, 18032, 18032, 18032, 18032, 18032, 18032, 18032, + 18032, 18032, 18032, 18032, 18064, 18096, 18128, 18160, + 18192, 18192, 18192, 18192, 18192, 18192, 18192, 18192, + 18224, 18256, 18288, 18320, 18352, 18384, 18384, 18416, + 18448, 18480, 18512, 18544, 18576, 18608, 18640, 18672, + 18704, 18736, 18768, 18800, 18832, 18864, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 19120, 19152, 19184, + 19216, 19248, 19280, 19312, 19344, 19376, 19408, 19440, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19696, + 19728, 19760, 19792, 19824, 19856, 19888, 19920, 19728, + 19760, 19792, 19824, 19856, 19888, 19920, 19728, 19760, + 19792, 19824, 19856, 19888, 19920, 19728, 19760, 19792, + 19824, 19856, 19888, 19920, 19728, 19760, 19792, 19824, + + 19856, 19888, 19920, 19728, 19760, 19792, 19824, 19856, + 19888, 19920, 19728, 19760, 19792, 19824, 19856, 19888, + 19920, 19728, 19760, 19792, 19824, 19856, 19888, 19920, + 19728, 19760, 19792, 19824, 19856, 19888, 19920, 19728, + 19760, 19792, 19824, 19856, 19888, 19920, 19728, 19760, + 19792, 19824, 19856, 19888, 19920, 19728, 19760, 19792, + 19824, 19856, 19888, 19920, 19728, 19760, 19792, 19824, + 19856, 19888, 19920, 19728, 19760, 19792, 19824, 19856, + 19888, 19920, 19728, 19760, 19792, 19824, 19856, 19888, + 19920, 19728, 19760, 19792, 19824, 19856, 19888, 19920, + 19728, 19760, 19792, 19824, 19856, 19888, 19920, 19728, + 19760, 19792, 19824, 19856, 19888, 19920, 19728, 19760, + 19792, 19824, 19856, 19888, 19920, 19728, 19760, 19792, + 19824, 19856, 19888, 19920, 19728, 19760, 19792, 19824, + 19856, 19888, 19920, 19728, 19760, 19792, 19824, 19856, + 19888, 19920, 19728, 19760, 19792, 19824, 19856, 19888, + + 19920, 19728, 19760, 19792, 19824, 19856, 19888, 19920, + 19728, 19760, 19792, 19824, 19856, 19888, 19920, 19728, + 19760, 19792, 19824, 19856, 19888, 19920, 19728, 19760, + 19792, 19824, 19856, 19888, 19920, 19728, 19760, 19792, + 19824, 19856, 19888, 19920, 19728, 19760, 19792, 19824, + 19856, 19888, 19920, 19728, 19760, 19792, 19824, 19856, + 19888, 19920, 19728, 19760, 19792, 19824, 19856, 19888, + 19920, 19728, 19760, 19792, 19824, 19856, 19888, 19920, + 19728, 19760, 19792, 19824, 19856, 19888, 19920, 19728, + 19760, 19792, 19824, 19856, 19888, 19920, 19728, 19760, + 19792, 19824, 19856, 19888, 19920, 19728, 19760, 19792, + 19824, 19856, 19888, 19920, 19728, 19760, 19792, 19824, + 19856, 19888, 19920, 19728, 19760, 19792, 19824, 19856, + 19888, 19920, 19728, 19760, 19792, 19824, 19856, 19888, + 19920, 19728, 19760, 19792, 19824, 19856, 19888, 19920, + 19728, 19760, 19792, 19824, 19856, 19888, 19920, 19728, + + 19760, 19792, 19824, 19856, 19888, 19920, 19728, 19760, + 19792, 19824, 19856, 19888, 19920, 19728, 19760, 19792, + 19824, 19856, 19888, 19920, 19728, 19760, 19792, 19824, + 19856, 19888, 19920, 19728, 19760, 19792, 19824, 19856, + 19888, 19920, 19728, 19760, 19792, 19824, 19856, 19888, + 19920, 19728, 19760, 19792, 19824, 19856, 19888, 19920, + 19728, 19760, 19792, 19824, 19856, 19888, 19920, 19728, + 19760, 19792, 19824, 19856, 19888, 19952, 19984, 20016, + 20048, 20048, 20048, 20048, 20048, 20048, 20048, 20048, + 20048, 20048, 20048, 20048, 20048, 20048, 20048, 20048, + 20048, 20048, 20048, 20048, 20048, 20048, 20048, 20048, + 20048, 20048, 20048, 20048, 20048, 20048, 20048, 20048, + 20048, 20048, 20048, 20048, 20048, 20048, 20048, 20048, + 20048, 20048, 20048, 20048, 20048, 20048, 20048, 20048, + 20048, 20048, 20048, 20048, 20048, 20048, 20048, 20048, + 20048, 20048, 20048, 20048, 20048, 20048, 20048, 20048, + + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080, + 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112, + 20144, 20176, 20208, 20240, 20272, 20272, 20304, 20336, + 20368, 20400, 20432, 20464, 20464, 20496, 20528, 20464, + 20464, 20464, 20464, 20464, 20464, 20464, 20464, 20464, + 20464, 20560, 20592, 20464, 20624, 20464, 20656, 20688, + 20720, 20752, 20784, 20816, 20464, 20464, 20464, 20848, + 20880, 20912, 20944, 20976, 21008, 21040, 21072, 21104, + + 21136, 21168, 21200, 9936, 21232, 21232, 21232, 21264, + 21296, 21328, 21360, 21392, 21424, 21456, 21488, 21520, + 9936, 9936, 9936, 9936, 21552, 21584, 21616, 21648, + 21680, 21712, 21744, 21776, 21808, 21840, 21872, 9936, + 21904, 21936, 21968, 22000, 22032, 22064, 22096, 22128, + 22160, 22192, 22224, 22256, 9936, 9936, 9936, 9936, + 22288, 22288, 22288, 22288, 22288, 22288, 22288, 22288, + 22288, 22320, 22352, 22384, 9936, 9936, 9936, 9936, + 22416, 22448, 22480, 22512, 22544, 22576, 8432, 22608, + 22640, 22672, 8432, 8432, 22704, 22736, 22768, 22800, + 22832, 22864, 22896, 22928, 22960, 8432, 22992, 23024, + 23056, 23088, 23120, 23152, 23184, 23216, 8432, 8432, + 23248, 23248, 23280, 8432, 23312, 23344, 23376, 23408, + 23440, 23472, 8432, 8432, 8432, 8432, 8432, 8432, + 8432, 8432, 8432, 23504, 23536, 23568, 8432, 8432, + 23600, 23632, 23664, 8432, 8432, 23696, 23728, 23760, // [0x11000..0x110000) - 23696, 23952, 24208, 24464, 24720, 24976, 25232, 25488, - 25744, 26000, 26256, 26512, 26768, 27024, 27280, 27536, - 27792, 27792, 27792, 28048, 28304, 28560, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 28816, 28816, 29072, 29328, 29584, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 29840, 30096, 30352, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 30608, 30608, 30864, 31120, 26512, 26512, 31376, 31632, - 31888, 31888, 31888, 31888, 31888, 31888, 31888, 31888, - 31888, 31888, 31888, 31888, 31888, 31888, 31888, 31888, - 31888, 31888, 31888, 31888, 31888, 31888, 31888, 32144, - 31888, 31888, 32400, 32656, 32912, 33168, 26512, 26512, - - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 33424, 33680, 33936, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 34192, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 34448, 34704, 34960, 35216, 35472, 35728, 35984, 36240, - 36496, 36496, 36752, 26512, 26512, 26512, 26512, 26512, - 37008, 37264, 37520, 26512, 26512, 26512, 26512, 26512, - 37776, 38032, 38288, 38288, 38544, 38800, 39056, 38288, - 39312, 39568, 39824, 40080, 40336, 40592, 40848, 41104, - 41360, 41616, 41872, 42128, 42384, 42384, 42384, 42640, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 42896, 42896, - 42896, 42896, 42896, 42896, 42896, 42896, 43152, 43408, - 43408, 43408, 43408, 43408, 43408, 43408, 43408, 43408, - 43408, 43408, 43408, 43408, 43408, 43408, 43408, 43664, - 43920, 44176, 44176, 44176, 44176, 44176, 44176, 44176, - 44176, 44176, 44176, 44176, 44176, 44176, 44176, 44176, - 44176, 44176, 44176, 44176, 44176, 44176, 44432, 44688, - 44688, 44688, 44688, 44688, 44688, 44688, 44688, 44688, - 44688, 44688, 44688, 44688, 44688, 44688, 44688, 44688, - 44688, 44688, 44688, 44688, 44688, 44688, 44688, 44688, - 44688, 44688, 44688, 44944, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 45200, 45200, 45456, 42384, 42384, 42384, 42384, 42640, - 45712, 45712, 45712, 45712, 45712, 45712, 45712, 45712, - 45712, 45712, 45712, 45712, 45712, 45712, 45712, 45712, - 45712, 45712, 45712, 45968, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42384, - 42384, 42384, 42384, 42384, 42384, 42384, 42384, 42640, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 46224, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 46224, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 46224, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 46224, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 46224, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 46224, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 46224, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 46224, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 46224, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 46224, - 46480, 46736, 46992, 46992, 46992, 46992, 46992, 46992, - 46992, 46992, 46992, 46992, 46992, 46992, 46992, 46992, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 26512, - 26512, 26512, 26512, 26512, 26512, 26512, 26512, 46224, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47504, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47248, - 47248, 47248, 47248, 47248, 47248, 47248, 47248, 47504, + 23792, 24048, 24304, 24560, 24816, 25072, 25328, 25584, + 25840, 26096, 26352, 26608, 26864, 27120, 27376, 27632, + 27888, 27888, 27888, 28144, 28400, 28656, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 28912, 28912, 29168, 29424, 29680, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 29936, 30192, 30448, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 30704, 30704, 30960, 31216, 26608, 26608, 31472, 31728, + 31984, 31984, 31984, 31984, 31984, 31984, 31984, 31984, + 31984, 31984, 31984, 31984, 31984, 31984, 31984, 31984, + 31984, 31984, 31984, 31984, 31984, 31984, 31984, 32240, + 31984, 31984, 32496, 32752, 33008, 33264, 26608, 26608, + + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 33520, 33776, 34032, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 34288, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 34544, 34800, 35056, 35312, 35568, 35824, 36080, 36336, + 36592, 36592, 36848, 26608, 26608, 26608, 26608, 26608, + 37104, 37360, 37616, 26608, 26608, 26608, 26608, 26608, + 37872, 38128, 38384, 38384, 38640, 38896, 39152, 38384, + 39408, 39664, 39920, 40176, 40432, 40688, 40944, 41200, + 41456, 41712, 41968, 42224, 42480, 42480, 42480, 42736, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992, + 42992, 42992, 42992, 42992, 42992, 42992, 43248, 43504, + 43504, 43504, 43504, 43504, 43504, 43504, 43504, 43504, + 43504, 43504, 43504, 43504, 43504, 43504, 43504, 43760, + 44016, 44272, 44272, 44272, 44272, 44272, 44272, 44272, + 44272, 44272, 44272, 44272, 44272, 44272, 44272, 44272, + 44272, 44272, 44272, 44272, 44272, 44272, 44528, 44784, + 44784, 44784, 44784, 44784, 44784, 44784, 44784, 44784, + 44784, 44784, 44784, 44784, 44784, 44784, 44784, 44784, + 44784, 44784, 44784, 44784, 44784, 44784, 44784, 44784, + 44784, 44784, 44784, 45040, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45552, 45552, 45808, 45296, 45296, 45296, 45296, 46064, + 46320, 46320, 46320, 46320, 46320, 46320, 46320, 46320, + 46320, 46320, 46320, 46320, 46320, 46320, 46320, 46320, + 46320, 46320, 46320, 46576, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296, + 45296, 45296, 45296, 45296, 45296, 45296, 45296, 46064, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 46832, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 46832, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 46832, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 46832, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 46832, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 46832, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 46832, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 46832, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 46832, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 46832, + 47088, 47344, 47600, 47600, 47600, 47600, 47600, 47600, + 47600, 47600, 47600, 47600, 47600, 47600, 47600, 47600, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 26608, + 26608, 26608, 26608, 26608, 26608, 26608, 26608, 46832, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 48112, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 47856, + 47856, 47856, 47856, 47856, 47856, 47856, 47856, 48112, 0, 0, 0, 0, 0, 0, 0, 0, @@ -893,1829 +893,1779 @@ 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 12, 12, 12, 51, 14, - 52, 51, 53, 54, 36, 55, 51, 52, - 56, 57, 58, 59, 60, 61, 14, 62, - 52, 63, 53, 64, 65, 65, 65, 49, - - 66, 66, 66, 66, 66, 66, 38, 66, - 66, 66, 66, 66, 66, 66, 66, 66, - 38, 66, 66, 66, 66, 66, 66, 36, - 38, 66, 66, 66, 66, 66, 38, 67, + 52, 53, 54, 55, 36, 56, 53, 52, + 57, 58, 59, 60, 61, 62, 14, 63, + 52, 64, 54, 65, 66, 66, 66, 49, + + 67, 67, 67, 67, 67, 67, 38, 67, + 67, 67, 67, 67, 67, 67, 67, 67, + 38, 67, 67, 67, 67, 67, 67, 36, + 38, 67, 67, 67, 67, 67, 38, 68, + + 69, 69, 69, 69, 69, 69, 44, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 44, 69, 69, 69, 69, 69, 69, 36, + 44, 69, 69, 69, 69, 69, 44, 70, + + 71, 72, 71, 72, 71, 72, 71, 72, + 71, 72, 71, 72, 71, 72, 71, 72, + 73, 74, 71, 72, 71, 72, 71, 72, + 71, 72, 71, 72, 71, 72, 71, 72, + + 71, 72, 71, 72, 71, 72, 73, 74, + 71, 72, 71, 72, 71, 72, 71, 72, + 75, 76, 77, 78, 71, 72, 71, 72, + 79, 71, 72, 71, 72, 71, 72, 77, + + 78, 73, 74, 71, 72, 71, 72, 71, + 72, 80, 73, 74, 71, 72, 71, 72, + 71, 72, 73, 74, 71, 72, 71, 72, + 71, 72, 71, 72, 71, 72, 71, 72, + + 71, 72, 71, 72, 71, 72, 73, 74, + 71, 72, 71, 72, 71, 72, 71, 72, + 71, 72, 71, 72, 71, 72, 71, 72, + 81, 71, 72, 71, 72, 71, 72, 82, + + 83, 84, 73, 74, 73, 74, 85, 73, + 74, 86, 86, 73, 74, 79, 87, 88, + 89, 73, 74, 86, 90, 91, 92, 93, + 73, 74, 94, 79, 92, 95, 96, 97, + + 71, 72, 73, 74, 73, 74, 98, 73, + 74, 98, 79, 79, 73, 74, 98, 71, + 72, 99, 99, 73, 74, 73, 74, 100, + 73, 74, 79, 101, 73, 74, 79, 102, + + 101, 101, 101, 101, 103, 104, 105, 103, + 104, 105, 103, 104, 105, 71, 72, 71, + 72, 71, 72, 71, 72, 71, 72, 71, + 72, 71, 72, 71, 72, 106, 71, 72, + + 71, 72, 71, 72, 73, 74, 71, 72, + 71, 72, 71, 72, 71, 72, 71, 72, + 107, 103, 104, 105, 71, 72, 108, 109, + 110, 111, 71, 72, 71, 72, 71, 72, + + 71, 72, 71, 72, 71, 72, 71, 72, + 71, 72, 71, 72, 71, 72, 71, 72, + 71, 72, 71, 72, 71, 72, 71, 72, + 110, 111, 110, 111, 112, 113, 110, 111, + + 114, 115, 112, 113, 112, 113, 110, 111, + 110, 111, 110, 111, 110, 111, 110, 111, + 110, 111, 110, 111, 115, 115, 115, 116, + 116, 116, 117, 118, 119, 120, 121, 122, + + 123, 118, 124, 125, 126, 127, 128, 124, + 128, 124, 128, 124, 128, 124, 128, 124, + 129, 130, 131, 132, 133, 79, 134, 134, + 79, 135, 79, 136, 137, 79, 79, 79, + + 134, 138, 79, 139, 79, 140, 141, 79, + 142, 143, 144, 145, 146, 79, 79, 143, + 79, 147, 148, 79, 79, 149, 79, 79, + 79, 79, 79, 79, 79, 150, 79, 79, + + 151, 79, 152, 151, 79, 79, 79, 153, + 151, 154, 155, 155, 156, 79, 79, 79, + 79, 79, 157, 79, 101, 79, 79, 79, + 79, 79, 79, 79, 79, 158, 159, 79, + + 79, 79, 79, 79, 79, 79, 79, 79, + 79, 160, 160, 160, 160, 160, 115, 115, + 161, 161, 161, 161, 161, 161, 161, 161, + 161, 162, 162, 163, 163, 163, 163, 163, + + 164, 164, 165, 165, 165, 165, 162, 162, + 166, 162, 162, 162, 166, 162, 162, 162, + 163, 163, 165, 165, 165, 165, 165, 165, + 52, 52, 52, 52, 52, 52, 165, 167, + + 161, 161, 161, 161, 161, 165, 165, 165, + 165, 165, 168, 168, 169, 170, 171, 172, + 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, + + 173, 173, 173, 173, 173, 174, 173, 173, + 173, 173, 173, 173, 173, 174, 174, 173, + 174, 173, 174, 173, 173, 175, 176, 176, + 176, 176, 175, 177, 176, 176, 176, 176, + + 176, 178, 178, 179, 179, 179, 179, 180, + 180, 176, 176, 176, 176, 179, 179, 176, + 179, 179, 176, 176, 181, 181, 181, 181, + 182, 176, 176, 176, 176, 174, 174, 174, + + 183, 183, 173, 183, 183, 184, 185, 186, + 186, 186, 185, 185, 185, 186, 186, 187, + 188, 188, 188, 189, 189, 189, 189, 188, + 190, 191, 191, 192, 193, 194, 194, 195, + + 196, 196, 197, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 198, + 199, 200, 199, 200, 201, 202, 199, 200, + 203, 203, 204, 205, 205, 205, 206, 207, + + 203, 203, 203, 203, 208, 209, 210, 211, + 212, 212, 212, 203, 213, 203, 214, 214, + 215, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, + + 216, 216, 203, 216, 216, 216, 216, 216, + 216, 216, 217, 217, 218, 219, 219, 219, + 220, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, + + 221, 221, 222, 221, 221, 221, 221, 221, + 221, 221, 223, 223, 224, 225, 225, 226, + 227, 228, 229, 230, 230, 231, 232, 233, + 234, 235, 236, 237, 236, 237, 236, 237, + + 236, 237, 238, 239, 238, 239, 238, 239, + 238, 239, 238, 239, 238, 239, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 247, 248, 250, 251, 251, 251, + + 252, 253, 254, 253, 254, 254, 254, 253, + 254, 254, 254, 254, 253, 252, 253, 254, + 255, 255, 255, 255, 255, 255, 255, 255, + 255, 256, 255, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, + 257, 257, 257, 257, 257, 257, 257, 257, + 257, 258, 257, 257, 257, 257, 257, 257, + + 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, + 259, 260, 261, 260, 261, 261, 261, 260, + 261, 261, 261, 261, 260, 259, 260, 261, + + 262, 263, 262, 263, 262, 263, 262, 263, + 262, 263, 262, 263, 262, 263, 262, 263, + 262, 263, 262, 263, 262, 263, 264, 265, + 262, 263, 262, 263, 262, 263, 262, 263, + + 262, 263, 266, 267, 267, 174, 174, 268, + 269, 269, 270, 271, 272, 273, 272, 273, + 262, 263, 262, 263, 262, 263, 262, 263, + 262, 263, 262, 263, 262, 263, 262, 263, + + 262, 263, 262, 263, 262, 263, 262, 263, + 262, 263, 262, 263, 262, 263, 262, 263, + 262, 263, 262, 263, 262, 263, 262, 263, + 262, 263, 262, 263, 262, 263, 262, 263, + + 274, 264, 265, 262, 263, 270, 271, 262, + 263, 270, 271, 262, 263, 270, 271, 275, + 264, 265, 264, 265, 262, 263, 264, 265, + 262, 263, 264, 265, 264, 265, 264, 265, + + 262, 263, 264, 265, 264, 265, 264, 265, + 262, 263, 264, 265, 276, 277, 264, 265, + 264, 265, 264, 265, 264, 265, 278, 279, + 264, 265, 280, 281, 280, 281, 280, 281, + + 270, 271, 270, 271, 270, 271, 270, 271, + 270, 271, 270, 271, 270, 271, 270, 271, + 280, 281, 280, 281, 282, 283, 282, 283, + 282, 283, 282, 283, 282, 283, 282, 283, + + 282, 283, 282, 283, 284, 285, 286, 287, + 288, 289, 288, 289, 288, 289, 288, 289, + 203, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, + + 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 203, + 203, 291, 292, 292, 292, 293, 292, 294, + + 295, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, + + 296, 296, 296, 296, 296, 296, 296, 297, + 295, 298, 299, 203, 203, 300, 300, 301, + 302, 303, 304, 304, 304, 304, 303, 304, + 304, 304, 305, 303, 304, 304, 304, 304, + + 304, 304, 306, 303, 303, 303, 303, 303, + 304, 304, 303, 304, 304, 305, 307, 304, + 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, + + 324, 325, 326, 324, 304, 306, 327, 328, + 302, 302, 302, 302, 302, 302, 302, 302, + 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, + + 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 302, 302, 302, 302, 330, + 329, 329, 329, 331, 332, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 333, 333, 333, 333, 334, 335, 336, 336, + 337, 338, 338, 339, 19, 340, 341, 341, + 342, 342, 342, 342, 342, 342, 343, 343, + 344, 345, 346, 347, 348, 349, 350, 351, - 68, 68, 68, 68, 68, 68, 44, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 44, 68, 68, 68, 68, 68, 68, 36, - 44, 68, 68, 68, 68, 68, 44, 69, - - 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 70, 71, - 72, 73, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 70, 71, - - 70, 71, 70, 71, 70, 71, 72, 73, - 70, 71, 70, 71, 70, 71, 70, 71, - 74, 75, 76, 77, 70, 71, 70, 71, - 78, 70, 71, 70, 71, 70, 71, 76, - - 77, 72, 73, 70, 71, 70, 71, 70, - 71, 79, 72, 73, 70, 71, 70, 71, - 70, 71, 72, 73, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 70, 71, - - 70, 71, 70, 71, 70, 71, 72, 73, - 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 70, 71, - 80, 70, 71, 70, 71, 70, 71, 81, - - 82, 83, 72, 73, 72, 73, 84, 72, - 73, 85, 85, 72, 73, 78, 86, 87, - 88, 72, 73, 85, 89, 90, 91, 92, - 72, 73, 93, 78, 91, 94, 95, 96, - - 70, 71, 72, 73, 72, 73, 97, 72, - 73, 97, 78, 78, 72, 73, 97, 70, - 71, 98, 98, 72, 73, 72, 73, 99, - 72, 73, 78, 100, 72, 73, 78, 101, - - 100, 100, 100, 100, 102, 103, 104, 102, - 103, 104, 102, 103, 104, 70, 71, 70, - 71, 70, 71, 70, 71, 70, 71, 70, - 71, 70, 71, 70, 71, 105, 70, 71, - - 70, 71, 70, 71, 72, 73, 70, 71, - 70, 71, 70, 71, 70, 71, 70, 71, - 106, 102, 103, 104, 70, 71, 107, 108, - 109, 110, 70, 71, 70, 71, 70, 71, - - 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 70, 71, - 109, 110, 109, 110, 111, 112, 109, 110, - - 113, 114, 111, 112, 111, 112, 109, 110, - 109, 110, 109, 110, 109, 110, 109, 110, - 109, 110, 109, 110, 114, 114, 114, 115, - 115, 115, 116, 117, 118, 119, 120, 121, - - 122, 117, 123, 124, 125, 126, 127, 123, - 127, 123, 127, 123, 127, 123, 127, 123, - 128, 129, 130, 131, 132, 78, 133, 133, - 78, 134, 78, 135, 136, 78, 78, 78, - - 133, 137, 78, 138, 78, 139, 140, 78, - 141, 142, 143, 144, 145, 78, 78, 142, - 78, 146, 147, 78, 78, 148, 78, 78, - 78, 78, 78, 78, 78, 149, 78, 78, - - 150, 78, 151, 150, 78, 78, 78, 152, - 150, 153, 154, 154, 155, 78, 78, 78, - 78, 78, 156, 78, 100, 78, 78, 78, - 78, 78, 78, 78, 78, 157, 158, 78, - - 78, 78, 78, 78, 78, 78, 78, 78, - 78, 159, 159, 159, 159, 159, 114, 114, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 161, 161, 162, 162, 162, 162, 162, - - 163, 163, 164, 164, 164, 164, 161, 161, - 165, 161, 161, 161, 165, 161, 161, 161, - 162, 162, 164, 164, 164, 164, 164, 164, - 52, 52, 52, 52, 52, 52, 164, 166, - - 160, 160, 160, 160, 160, 164, 164, 164, - 164, 164, 167, 167, 168, 169, 170, 171, - 171, 171, 171, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 171, - - 172, 172, 172, 172, 172, 173, 172, 172, - 172, 172, 172, 172, 172, 173, 173, 172, - 173, 172, 173, 172, 172, 174, 175, 175, - 175, 175, 174, 176, 175, 175, 175, 175, - - 175, 177, 177, 178, 178, 178, 178, 179, - 179, 175, 175, 175, 175, 178, 178, 175, - 178, 178, 175, 175, 180, 180, 180, 180, - 181, 175, 175, 175, 175, 173, 173, 173, - - 182, 182, 172, 182, 182, 183, 184, 185, - 185, 185, 184, 184, 184, 185, 185, 186, - 187, 187, 187, 188, 188, 188, 188, 187, - 189, 190, 190, 191, 192, 193, 193, 194, - - 195, 195, 196, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, - 198, 199, 198, 199, 200, 201, 198, 199, - 202, 202, 203, 204, 204, 204, 205, 206, - - 202, 202, 202, 202, 207, 208, 209, 210, - 211, 211, 211, 202, 212, 202, 213, 213, - 214, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, 215, 215, - - 215, 215, 202, 215, 215, 215, 215, 215, - 215, 215, 216, 216, 217, 218, 218, 218, - 219, 220, 220, 220, 220, 220, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 220, - - 220, 220, 221, 220, 220, 220, 220, 220, - 220, 220, 222, 222, 223, 224, 224, 225, - 226, 227, 228, 229, 229, 230, 231, 232, - 233, 234, 235, 236, 235, 236, 235, 236, - - 235, 236, 237, 238, 237, 238, 237, 238, - 237, 238, 237, 238, 237, 238, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 246, 247, 249, 250, 250, 250, - - 251, 252, 253, 252, 253, 253, 253, 252, - 253, 253, 253, 253, 252, 251, 252, 253, - 254, 254, 254, 254, 254, 254, 254, 254, - 254, 255, 254, 254, 254, 254, 254, 254, - - 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 254, - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 257, 256, 256, 256, 256, 256, 256, - - 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, - 258, 259, 260, 259, 260, 260, 260, 259, - 260, 260, 260, 260, 259, 258, 259, 260, - - 261, 262, 261, 262, 261, 262, 261, 262, - 261, 262, 261, 262, 261, 262, 261, 262, - 261, 262, 261, 262, 261, 262, 263, 264, - 261, 262, 261, 262, 261, 262, 261, 262, - - 261, 262, 265, 266, 266, 173, 173, 267, - 268, 268, 269, 270, 271, 272, 271, 272, - 261, 262, 261, 262, 261, 262, 261, 262, - 261, 262, 261, 262, 261, 262, 261, 262, - - 261, 262, 261, 262, 261, 262, 261, 262, - 261, 262, 261, 262, 261, 262, 261, 262, - 261, 262, 261, 262, 261, 262, 261, 262, - 261, 262, 261, 262, 261, 262, 261, 262, - - 273, 263, 264, 261, 262, 269, 270, 261, - 262, 269, 270, 261, 262, 269, 270, 274, - 263, 264, 263, 264, 261, 262, 263, 264, - 261, 262, 263, 264, 263, 264, 263, 264, - - 261, 262, 263, 264, 263, 264, 263, 264, - 261, 262, 263, 264, 275, 276, 263, 264, - 263, 264, 263, 264, 263, 264, 277, 278, - 263, 264, 279, 280, 279, 280, 279, 280, - - 269, 270, 269, 270, 269, 270, 269, 270, - 269, 270, 269, 270, 269, 270, 269, 270, - 279, 280, 279, 280, 281, 282, 281, 282, - 281, 282, 281, 282, 281, 282, 281, 282, - - 281, 282, 281, 282, 283, 284, 285, 286, - 287, 288, 287, 288, 287, 288, 287, 288, - 202, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 202, - 202, 290, 291, 291, 291, 292, 291, 293, - - 294, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, - - 295, 295, 295, 295, 295, 295, 295, 296, - 294, 297, 298, 202, 202, 299, 299, 300, - 301, 302, 303, 303, 303, 303, 302, 303, - 303, 303, 304, 302, 303, 303, 303, 303, - - 303, 303, 305, 302, 302, 302, 302, 302, - 303, 303, 302, 303, 303, 304, 306, 303, - 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, - - 323, 324, 325, 323, 303, 305, 326, 327, - 301, 301, 301, 301, 301, 301, 301, 301, - 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, - - 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 301, 301, 301, 301, 329, - 328, 328, 328, 330, 331, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - - 332, 332, 332, 332, 333, 334, 335, 335, - 336, 337, 337, 338, 19, 339, 340, 340, - 341, 341, 341, 341, 341, 341, 342, 342, - 343, 344, 345, 346, 347, 348, 349, 350, - - 351, 352, 353, 353, 353, 353, 354, 355, - 356, 355, 356, 356, 356, 356, 356, 355, - 355, 355, 355, 356, 356, 356, 356, 356, + 352, 353, 354, 354, 354, 354, 355, 356, + 357, 356, 357, 357, 357, 357, 357, 356, 356, 356, 356, 357, 357, 357, 357, 357, + 357, 357, 357, 358, 358, 358, 358, 358, - 358, 356, 356, 356, 356, 356, 356, 356, - 355, 356, 356, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 367, 368, 369, 341, - 341, 370, 370, 370, 371, 370, 370, 372, - - 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 387, - 388, 355, 355, 355, 352, 389, 389, 389, - 390, 356, 356, 356, 356, 356, 356, 356, - - 356, 356, 356, 356, 356, 356, 356, 356, - 355, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 356, 356, 356, 356, 356, 356, + 359, 357, 357, 357, 357, 357, 357, 357, + 356, 357, 357, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 368, 369, 370, 342, + 342, 371, 371, 371, 372, 371, 371, 373, + + 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 388, + 389, 356, 356, 356, 353, 390, 390, 390, + 391, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, - 391, 391, 356, 356, 356, 356, 356, 391, + 356, 356, 357, 357, 357, 357, 357, 357, - 353, 356, 354, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 356, 355, 356, 392, - 356, 356, 355, 353, 393, 355, 394, 394, - 394, 394, 394, 394, 394, 395, 396, 394, - - 394, 394, 394, 397, 394, 398, 398, 394, - 394, 396, 397, 394, 394, 397, 399, 399, - 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 391, 391, 391, 410, 410, 411, - - 412, 412, 412, 413, 413, 413, 413, 413, - 413, 413, 413, 413, 413, 413, 348, 414, - 415, 416, 417, 417, 417, 415, 415, 415, - 415, 415, 417, 417, 417, 417, 415, 417, - - 417, 417, 417, 417, 417, 417, 417, 417, - 415, 417, 415, 417, 415, 418, 418, 419, - 420, 421, 420, 420, 421, 420, 420, 421, - 421, 421, 420, 421, 421, 420, 421, 420, - - 420, 420, 421, 420, 421, 420, 421, 420, - 421, 420, 420, 348, 348, 419, 418, 418, - 422, 422, 422, 422, 422, 422, 422, 422, - 422, 423, 423, 423, 422, 422, 422, 422, - - 422, 422, 422, 422, 422, 422, 422, 422, - 422, 422, 422, 423, 423, 422, 357, 357, - 357, 424, 357, 424, 424, 357, 357, 357, - 424, 424, 357, 357, 357, 357, 357, 357, - - 425, 425, 425, 425, 425, 425, 425, 425, - 425, 425, 425, 425, 425, 425, 425, 425, - 425, 425, 425, 425, 425, 425, 425, 425, - 425, 425, 425, 425, 425, 425, 425, 425, + 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, + 392, 392, 357, 357, 357, 357, 357, 392, + + 354, 357, 355, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 357, 356, 357, 393, + 357, 357, 356, 354, 394, 356, 395, 395, + 395, 395, 395, 395, 395, 396, 397, 395, + + 395, 395, 395, 398, 395, 399, 399, 395, + 395, 397, 398, 395, 395, 398, 400, 400, + 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 392, 392, 392, 411, 411, 412, + + 413, 413, 413, 414, 414, 414, 414, 414, + 414, 414, 414, 414, 414, 414, 349, 415, + 416, 417, 418, 418, 418, 416, 416, 416, + 416, 416, 418, 418, 418, 418, 416, 418, + + 418, 418, 418, 418, 418, 418, 418, 418, + 416, 418, 416, 418, 416, 419, 419, 420, + 421, 422, 421, 421, 422, 421, 421, 422, + 422, 422, 421, 422, 422, 421, 422, 421, + + 421, 421, 422, 421, 422, 421, 422, 421, + 422, 421, 421, 349, 349, 420, 419, 419, + 423, 423, 423, 423, 423, 423, 423, 423, + 423, 424, 424, 424, 423, 423, 423, 423, + + 423, 423, 423, 423, 423, 423, 423, 423, + 423, 423, 423, 424, 424, 423, 358, 358, + 358, 425, 358, 425, 425, 358, 358, 358, + 425, 425, 358, 358, 358, 358, 358, 358, - 425, 425, 425, 425, 425, 425, 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, - 426, 427, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, + 426, 426, 426, 426, 426, 426, 426, 426, + 426, 426, 426, 426, 426, 426, 426, 426, + 426, 426, 426, 426, 426, 426, 426, 426, + + 426, 426, 426, 426, 426, 426, 427, 427, + 427, 427, 427, 427, 427, 427, 427, 427, + 427, 428, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, + + 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 439, 439, 439, 439, 439, + 439, 439, 439, 439, 439, 439, 439, 439, + 439, 439, 439, 439, 439, 439, 439, 439, + + 439, 439, 439, 439, 439, 439, 439, 439, + 439, 439, 439, 440, 440, 440, 440, 440, + 440, 440, 441, 440, 442, 442, 443, 444, + 445, 446, 447, 302, 302, 448, 449, 449, + + 450, 450, 450, 450, 450, 450, 450, 450, + 450, 450, 450, 450, 450, 450, 450, 450, + 450, 450, 450, 450, 450, 450, 451, 451, + 451, 451, 452, 451, 451, 451, 451, 451, + + 451, 451, 451, 451, 452, 451, 451, 451, + 452, 451, 451, 451, 451, 451, 302, 302, + 453, 453, 453, 453, 453, 453, 453, 454, + 453, 454, 453, 453, 453, 454, 454, 302, + + 455, 456, 456, 456, 456, 456, 455, 455, + 456, 455, 456, 456, 456, 456, 456, 456, + 456, 456, 456, 456, 455, 456, 455, 455, + 455, 457, 457, 457, 302, 302, 458, 302, + + 459, 460, 459, 459, 459, 459, 460, 461, + 459, 461, 461, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 462, 463, 462, 462, 462, 462, 462, 462, + 462, 462, 464, 464, 464, 465, 466, 463, + 463, 466, 466, 467, 467, 349, 468, 468, + 468, 469, 468, 468, 468, 468, 470, 470, + + 470, 470, 470, 470, 470, 470, 470, 470, + 349, 349, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 471, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, + + 472, 472, 473, 474, 475, 475, 476, 475, + 475, 476, 475, 475, 475, 476, 476, 476, + 477, 478, 479, 475, 475, 475, 476, 475, + 475, 476, 476, 475, 475, 475, 475, 480, + + 481, 482, 482, 483, 484, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, + + 485, 485, 485, 485, 485, 485, 485, 485, + 485, 486, 485, 485, 485, 485, 485, 485, + 485, 486, 485, 485, 486, 485, 485, 485, + 485, 485, 487, 488, 489, 485, 483, 483, + + 483, 482, 482, 482, 482, 482, 482, 482, + 482, 483, 483, 483, 483, 490, 491, 488, + 485, 174, 176, 174, 174, 481, 487, 487, + 492, 492, 492, 492, 492, 492, 492, 492, + + 485, 485, 482, 482, 493, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 507, 507, 507, 507, + 508, 509, 509, 510, 510, 511, 510, 510, + + 512, 513, 514, 514, 203, 515, 515, 515, + 515, 515, 515, 515, 515, 203, 203, 515, + 515, 203, 203, 515, 515, 515, 515, 515, + 515, 515, 515, 515, 515, 515, 515, 515, + + 515, 515, 515, 515, 515, 515, 515, 515, + 515, 203, 515, 515, 515, 515, 515, 515, + 515, 203, 515, 203, 203, 203, 515, 515, + 515, 515, 203, 203, 516, 517, 518, 514, + + 514, 513, 513, 513, 513, 203, 203, 514, + 514, 203, 203, 519, 519, 520, 521, 203, + 203, 203, 203, 203, 203, 203, 203, 518, + 203, 203, 203, 203, 522, 522, 203, 522, + + 515, 515, 513, 513, 203, 203, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, + 515, 515, 533, 533, 534, 534, 534, 534, + 534, 535, 536, 537, 538, 539, 540, 203, + + 203, 541, 542, 543, 203, 544, 544, 544, + 544, 544, 544, 203, 203, 203, 203, 544, + 544, 203, 203, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, + + 544, 544, 544, 544, 544, 544, 544, 544, + 544, 203, 544, 544, 544, 544, 544, 544, + 544, 203, 544, 545, 203, 544, 545, 203, + 544, 544, 203, 203, 546, 203, 547, 547, + + 547, 542, 542, 203, 203, 203, 203, 542, + 542, 203, 203, 542, 542, 548, 203, 203, + 203, 549, 203, 203, 203, 203, 203, 203, + 203, 545, 545, 545, 544, 203, 545, 203, + + 203, 203, 203, 203, 203, 203, 550, 551, + 552, 553, 554, 555, 556, 557, 558, 559, + 542, 542, 544, 544, 544, 549, 560, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 203, 561, 561, 562, 203, 563, 563, 563, + 563, 563, 563, 563, 564, 563, 203, 563, + 563, 563, 203, 563, 563, 563, 563, 563, + 563, 563, 563, 563, 563, 563, 563, 563, + + 563, 563, 563, 563, 563, 563, 563, 563, + 563, 203, 563, 563, 563, 563, 563, 563, + 563, 203, 563, 563, 203, 563, 563, 563, + 563, 563, 203, 203, 565, 563, 562, 562, + + 562, 561, 561, 561, 561, 561, 203, 561, + 561, 562, 203, 562, 562, 566, 203, 203, + 563, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 563, 564, 567, 567, 203, 203, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 203, 203, 203, 203, 203, 203, + 203, 580, 581, 581, 581, 581, 581, 581, + + 203, 582, 583, 583, 203, 584, 584, 584, + 584, 584, 584, 584, 584, 203, 203, 584, + 584, 203, 203, 584, 584, 584, 584, 584, + 584, 584, 584, 584, 584, 584, 584, 584, + + 584, 584, 584, 584, 584, 584, 584, 584, + 584, 203, 584, 584, 584, 584, 584, 584, + 584, 203, 584, 584, 203, 585, 584, 584, + 584, 584, 203, 203, 586, 584, 587, 582, + + 583, 582, 582, 582, 588, 203, 203, 583, + 589, 203, 203, 589, 589, 590, 203, 203, + 203, 203, 203, 203, 203, 591, 592, 587, + 203, 203, 203, 203, 593, 593, 203, 584, + + 584, 584, 588, 588, 203, 203, 594, 595, + 596, 597, 598, 599, 600, 601, 602, 603, + 604, 585, 605, 605, 605, 605, 605, 605, + 203, 203, 203, 203, 203, 203, 203, 203, + + 203, 203, 606, 607, 203, 607, 607, 607, + 607, 607, 607, 203, 203, 203, 607, 607, + 607, 203, 607, 607, 608, 607, 203, 203, + 203, 607, 607, 203, 607, 203, 607, 607, + + 203, 203, 203, 607, 607, 203, 203, 203, + 607, 607, 607, 203, 203, 203, 607, 607, + 607, 607, 607, 607, 607, 607, 609, 607, + 607, 607, 203, 203, 203, 203, 610, 611, + + 606, 611, 611, 203, 203, 203, 611, 611, + 611, 203, 612, 612, 612, 613, 203, 203, + 614, 203, 203, 203, 203, 203, 203, 610, + 203, 203, 203, 203, 203, 203, 203, 203, + + 203, 203, 203, 203, 203, 203, 615, 616, + 617, 618, 619, 620, 621, 622, 623, 624, + 625, 625, 625, 626, 626, 626, 626, 626, + 626, 627, 626, 203, 203, 203, 203, 203, + + 628, 629, 629, 629, 630, 631, 631, 631, + 631, 631, 631, 631, 631, 203, 631, 631, + 631, 203, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, + + 631, 631, 631, 631, 631, 631, 631, 631, + 631, 203, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 632, 631, 631, 631, + 631, 631, 203, 203, 203, 633, 634, 634, + + 634, 629, 629, 629, 629, 203, 634, 634, + 635, 203, 634, 634, 634, 636, 203, 203, + 203, 203, 203, 203, 203, 637, 638, 203, + 633, 633, 639, 203, 203, 203, 203, 203, + + 631, 631, 640, 640, 203, 203, 641, 642, + 643, 644, 645, 646, 647, 648, 649, 650, + 203, 203, 203, 203, 203, 203, 203, 651, + 652, 652, 652, 652, 652, 652, 652, 653, + + 654, 655, 656, 656, 657, 658, 658, 658, + 658, 658, 658, 658, 658, 203, 658, 658, + 658, 203, 658, 658, 658, 658, 658, 658, + 658, 658, 658, 658, 658, 658, 658, 658, + + 658, 658, 658, 658, 658, 658, 658, 658, + 658, 203, 658, 658, 658, 658, 658, 658, + 658, 658, 658, 658, 203, 658, 658, 658, + 658, 658, 203, 203, 659, 660, 656, 661, + + 662, 656, 663, 656, 656, 203, 661, 662, + 662, 203, 662, 662, 664, 665, 203, 203, + 203, 203, 203, 203, 203, 663, 663, 203, + 203, 203, 203, 203, 203, 203, 658, 203, + + 658, 658, 666, 666, 203, 203, 667, 668, + 669, 670, 671, 672, 673, 674, 675, 676, + 203, 677, 677, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 678, 679, 680, 680, 681, 682, 682, 682, + 682, 682, 682, 682, 682, 203, 682, 682, + 682, 203, 682, 682, 682, 682, 682, 682, + 682, 682, 682, 682, 682, 682, 682, 682, + + 682, 682, 682, 682, 682, 682, 682, 682, + 682, 683, 682, 682, 682, 682, 682, 682, + 682, 682, 682, 682, 682, 682, 682, 682, + 682, 682, 683, 684, 684, 685, 686, 680, + + 680, 687, 687, 687, 688, 203, 680, 680, + 680, 203, 689, 689, 689, 690, 691, 692, + 203, 203, 203, 203, 693, 693, 693, 686, + 694, 694, 694, 694, 694, 694, 694, 695, + + 682, 682, 688, 688, 203, 203, 696, 697, + 698, 699, 700, 701, 702, 703, 704, 705, + 706, 706, 706, 706, 706, 706, 694, 694, + 694, 707, 685, 685, 685, 685, 685, 685, + + 203, 708, 709, 709, 203, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 203, + 203, 203, 710, 710, 710, 710, 710, 710, + + 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 203, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 203, 710, 203, 203, + + 710, 710, 710, 710, 710, 710, 710, 203, + 203, 203, 711, 203, 203, 203, 203, 712, + 709, 709, 713, 713, 713, 203, 713, 203, + 709, 709, 714, 709, 714, 714, 714, 712, + + 203, 203, 203, 203, 203, 203, 715, 716, + 717, 718, 719, 720, 721, 722, 723, 724, + 203, 203, 709, 709, 725, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 203, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, + + 726, 726, 726, 726, 726, 726, 726, 726, + 726, 726, 726, 726, 726, 726, 726, 726, + 726, 727, 726, 728, 727, 727, 727, 727, + 729, 729, 730, 203, 203, 203, 203, 12, + + 726, 726, 726, 726, 726, 726, 731, 727, + 732, 732, 732, 732, 727, 727, 727, 733, + 734, 735, 736, 737, 738, 739, 740, 741, + 742, 743, 744, 744, 203, 203, 203, 203, + + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 203, 745, 745, 203, 745, 203, 746, 745, + 745, 746, 745, 203, 746, 745, 746, 746, + 746, 746, 746, 746, 745, 745, 745, 745, + 746, 745, 745, 745, 745, 745, 745, 745, + + 746, 745, 745, 745, 203, 745, 203, 745, + 746, 746, 745, 745, 746, 745, 745, 745, + 745, 747, 745, 748, 747, 747, 747, 747, + 749, 749, 750, 747, 747, 745, 203, 203, + + 745, 745, 745, 745, 745, 203, 751, 203, + 752, 752, 752, 752, 747, 747, 203, 203, + 753, 754, 755, 756, 757, 758, 759, 760, + 761, 762, 203, 203, 763, 763, 764, 764, + + 765, 766, 766, 766, 767, 768, 767, 767, + 769, 767, 767, 770, 771, 772, 772, 772, + 772, 772, 769, 773, 772, 773, 773, 773, + 774, 774, 773, 773, 773, 773, 773, 773, + + 775, 776, 777, 778, 779, 780, 781, 782, + 783, 784, 785, 785, 785, 785, 785, 785, + 785, 785, 785, 785, 786, 774, 773, 774, + 773, 787, 788, 789, 788, 789, 790, 790, + + 765, 765, 765, 791, 765, 765, 765, 765, + 203, 765, 765, 765, 765, 791, 765, 765, + 765, 765, 791, 765, 765, 765, 765, 791, + 765, 765, 765, 765, 791, 765, 765, 765, + + 765, 765, 765, 765, 765, 765, 765, 765, + 765, 791, 792, 793, 793, 203, 203, 203, + 203, 794, 795, 796, 797, 796, 796, 798, + 796, 798, 795, 795, 795, 795, 799, 800, + + 795, 796, 801, 801, 802, 770, 801, 801, + 765, 765, 765, 765, 803, 804, 804, 804, + 799, 799, 799, 796, 799, 799, 805, 799, + 203, 799, 799, 799, 799, 796, 799, 799, + + 799, 799, 796, 799, 799, 799, 799, 796, + 799, 799, 799, 799, 796, 799, 805, 805, + 805, 799, 799, 799, 799, 799, 799, 799, + 805, 796, 805, 805, 805, 203, 806, 806, + + 807, 807, 807, 807, 807, 807, 808, 807, + 807, 807, 807, 807, 807, 203, 809, 807, + 810, 810, 811, 812, 813, 814, 814, 814, + 814, 815, 815, 203, 203, 203, 203, 203, - 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 438, 438, 438, 438, 438, - 438, 438, 438, 438, 438, 438, 438, 438, - 438, 438, 438, 438, 438, 438, 438, 438, - - 438, 438, 438, 438, 438, 438, 438, 438, - 438, 438, 438, 439, 439, 439, 439, 439, - 439, 439, 440, 439, 441, 441, 442, 443, - 444, 445, 446, 301, 301, 447, 448, 448, - - 449, 449, 449, 449, 449, 449, 449, 449, - 449, 449, 449, 449, 449, 449, 449, 449, - 449, 449, 449, 449, 449, 449, 450, 450, - 450, 450, 451, 450, 450, 450, 450, 450, - - 450, 450, 450, 450, 451, 450, 450, 450, - 451, 450, 450, 450, 450, 450, 301, 301, - 452, 452, 452, 452, 452, 452, 452, 453, - 452, 453, 452, 452, 452, 453, 453, 301, - - 454, 455, 455, 455, 455, 455, 454, 454, - 455, 454, 455, 455, 455, 455, 455, 455, - 455, 455, 455, 455, 454, 455, 454, 454, - 454, 456, 456, 456, 301, 301, 457, 301, - - 458, 459, 458, 458, 458, 458, 459, 460, - 458, 460, 460, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - - 461, 462, 461, 461, 461, 461, 461, 461, - 461, 461, 463, 463, 463, 464, 465, 462, - 462, 465, 465, 466, 466, 348, 467, 467, - 467, 468, 467, 467, 467, 467, 469, 469, - - 469, 469, 469, 469, 469, 469, 469, 469, - 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 470, 471, 471, 471, 471, - 471, 471, 471, 471, 471, 471, 471, 471, - - 471, 471, 472, 473, 474, 474, 475, 474, - 474, 475, 474, 474, 474, 475, 475, 475, - 476, 477, 478, 474, 474, 474, 475, 474, - 474, 475, 475, 474, 474, 474, 474, 479, - - 480, 481, 481, 482, 483, 484, 484, 484, - 484, 484, 484, 484, 484, 484, 484, 484, - 484, 484, 484, 484, 484, 484, 484, 484, - 484, 484, 484, 484, 484, 484, 484, 484, - - 484, 484, 484, 484, 484, 484, 484, 484, - 484, 485, 484, 484, 484, 484, 484, 484, - 484, 485, 484, 484, 485, 484, 484, 484, - 484, 484, 486, 487, 488, 484, 482, 482, - - 482, 481, 481, 481, 481, 481, 481, 481, - 481, 482, 482, 482, 482, 489, 490, 487, - 484, 173, 175, 173, 173, 480, 486, 486, - 491, 491, 491, 491, 491, 491, 491, 491, - - 484, 484, 481, 481, 492, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, 506, 506, 506, 506, 506, - 507, 508, 508, 509, 509, 510, 509, 509, - - 511, 512, 513, 513, 202, 514, 514, 514, - 514, 514, 514, 514, 514, 202, 202, 514, - 514, 202, 202, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, - - 514, 514, 514, 514, 514, 514, 514, 514, - 514, 202, 514, 514, 514, 514, 514, 514, - 514, 202, 514, 202, 202, 202, 514, 514, - 514, 514, 202, 202, 515, 516, 517, 513, - - 513, 512, 512, 512, 512, 202, 202, 513, - 513, 202, 202, 518, 518, 519, 520, 202, - 202, 202, 202, 202, 202, 202, 202, 517, - 202, 202, 202, 202, 521, 521, 202, 521, - - 514, 514, 512, 512, 202, 202, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, - 514, 514, 532, 532, 533, 533, 533, 533, - 533, 534, 535, 536, 537, 538, 539, 202, - - 202, 540, 541, 542, 202, 543, 543, 543, - 543, 543, 543, 202, 202, 202, 202, 543, - 543, 202, 202, 543, 543, 543, 543, 543, - 543, 543, 543, 543, 543, 543, 543, 543, - - 543, 543, 543, 543, 543, 543, 543, 543, - 543, 202, 543, 543, 543, 543, 543, 543, - 543, 202, 543, 544, 202, 543, 544, 202, - 543, 543, 202, 202, 545, 202, 546, 546, - - 546, 541, 541, 202, 202, 202, 202, 541, - 541, 202, 202, 541, 541, 547, 202, 202, - 202, 548, 202, 202, 202, 202, 202, 202, - 202, 544, 544, 544, 543, 202, 544, 202, - - 202, 202, 202, 202, 202, 202, 549, 550, - 551, 552, 553, 554, 555, 556, 557, 558, - 541, 541, 543, 543, 543, 548, 559, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 560, 560, 561, 202, 562, 562, 562, - 562, 562, 562, 562, 563, 562, 202, 562, - 562, 562, 202, 562, 562, 562, 562, 562, - 562, 562, 562, 562, 562, 562, 562, 562, - - 562, 562, 562, 562, 562, 562, 562, 562, - 562, 202, 562, 562, 562, 562, 562, 562, - 562, 202, 562, 562, 202, 562, 562, 562, - 562, 562, 202, 202, 564, 562, 561, 561, - - 561, 560, 560, 560, 560, 560, 202, 560, - 560, 561, 202, 561, 561, 565, 202, 202, - 562, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 562, 563, 566, 566, 202, 202, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 202, 202, 202, 202, 202, 202, - 202, 579, 580, 580, 580, 580, 580, 580, - - 202, 581, 582, 582, 202, 583, 583, 583, - 583, 583, 583, 583, 583, 202, 202, 583, - 583, 202, 202, 583, 583, 583, 583, 583, - 583, 583, 583, 583, 583, 583, 583, 583, - - 583, 583, 583, 583, 583, 583, 583, 583, - 583, 202, 583, 583, 583, 583, 583, 583, - 583, 202, 583, 583, 202, 584, 583, 583, - 583, 583, 202, 202, 585, 583, 586, 581, - - 582, 581, 581, 581, 587, 202, 202, 582, - 588, 202, 202, 588, 588, 589, 202, 202, - 202, 202, 202, 202, 202, 590, 591, 586, - 202, 202, 202, 202, 592, 592, 202, 583, - - 583, 583, 587, 587, 202, 202, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, - 603, 584, 604, 604, 604, 604, 604, 604, - 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 202, 605, 606, 202, 606, 606, 606, - 606, 606, 606, 202, 202, 202, 606, 606, - 606, 202, 606, 606, 607, 606, 202, 202, - 202, 606, 606, 202, 606, 202, 606, 606, - - 202, 202, 202, 606, 606, 202, 202, 202, - 606, 606, 606, 202, 202, 202, 606, 606, - 606, 606, 606, 606, 606, 606, 608, 606, - 606, 606, 202, 202, 202, 202, 609, 610, - - 605, 610, 610, 202, 202, 202, 610, 610, - 610, 202, 611, 611, 611, 612, 202, 202, - 613, 202, 202, 202, 202, 202, 202, 609, - 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 202, 202, 202, 202, 202, 614, 615, - 616, 617, 618, 619, 620, 621, 622, 623, - 624, 624, 624, 625, 625, 625, 625, 625, - 625, 626, 625, 202, 202, 202, 202, 202, - - 627, 628, 628, 628, 629, 630, 630, 630, - 630, 630, 630, 630, 630, 202, 630, 630, - 630, 202, 630, 630, 630, 630, 630, 630, - 630, 630, 630, 630, 630, 630, 630, 630, - - 630, 630, 630, 630, 630, 630, 630, 630, - 630, 202, 630, 630, 630, 630, 630, 630, - 630, 630, 630, 630, 631, 630, 630, 630, - 630, 630, 202, 202, 202, 632, 633, 633, - - 633, 628, 628, 628, 628, 202, 633, 633, - 634, 202, 633, 633, 633, 635, 202, 202, - 202, 202, 202, 202, 202, 636, 637, 202, - 632, 632, 638, 202, 202, 202, 202, 202, - - 630, 630, 639, 639, 202, 202, 640, 641, - 642, 643, 644, 645, 646, 647, 648, 649, - 202, 202, 202, 202, 202, 202, 202, 650, - 651, 651, 651, 651, 651, 651, 651, 652, - - 653, 654, 655, 655, 656, 657, 657, 657, - 657, 657, 657, 657, 657, 202, 657, 657, - 657, 202, 657, 657, 657, 657, 657, 657, - 657, 657, 657, 657, 657, 657, 657, 657, - - 657, 657, 657, 657, 657, 657, 657, 657, - 657, 202, 657, 657, 657, 657, 657, 657, - 657, 657, 657, 657, 202, 657, 657, 657, - 657, 657, 202, 202, 658, 659, 655, 660, - - 661, 655, 662, 655, 655, 202, 660, 661, - 661, 202, 661, 661, 663, 664, 202, 202, - 202, 202, 202, 202, 202, 662, 662, 202, - 202, 202, 202, 202, 202, 202, 657, 202, - - 657, 657, 665, 665, 202, 202, 666, 667, - 668, 669, 670, 671, 672, 673, 674, 675, - 202, 676, 676, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 677, 678, 679, 679, 680, 681, 681, 681, - 681, 681, 681, 681, 681, 202, 681, 681, - 681, 202, 681, 681, 681, 681, 681, 681, - 681, 681, 681, 681, 681, 681, 681, 681, - - 681, 681, 681, 681, 681, 681, 681, 681, - 681, 682, 681, 681, 681, 681, 681, 681, - 681, 681, 681, 681, 681, 681, 681, 681, - 681, 681, 682, 683, 683, 684, 685, 679, - - 679, 686, 686, 686, 687, 202, 679, 679, - 679, 202, 688, 688, 688, 689, 690, 691, - 202, 202, 202, 202, 692, 692, 692, 685, - 693, 693, 693, 693, 693, 693, 693, 694, - - 681, 681, 687, 687, 202, 202, 695, 696, - 697, 698, 699, 700, 701, 702, 703, 704, - 705, 705, 705, 705, 705, 705, 693, 693, - 693, 706, 684, 684, 684, 684, 684, 684, - - 202, 707, 708, 708, 202, 709, 709, 709, - 709, 709, 709, 709, 709, 709, 709, 709, - 709, 709, 709, 709, 709, 709, 709, 202, - 202, 202, 709, 709, 709, 709, 709, 709, - - 709, 709, 709, 709, 709, 709, 709, 709, - 709, 709, 709, 709, 709, 709, 709, 709, - 709, 709, 202, 709, 709, 709, 709, 709, - 709, 709, 709, 709, 202, 709, 202, 202, - - 709, 709, 709, 709, 709, 709, 709, 202, - 202, 202, 710, 202, 202, 202, 202, 711, - 708, 708, 712, 712, 712, 202, 712, 202, - 708, 708, 713, 708, 713, 713, 713, 711, - - 202, 202, 202, 202, 202, 202, 714, 715, - 716, 717, 718, 719, 720, 721, 722, 723, - 202, 202, 708, 708, 724, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, - - 725, 725, 725, 725, 725, 725, 725, 725, - 725, 725, 725, 725, 725, 725, 725, 725, - 725, 726, 725, 727, 726, 726, 726, 726, - 728, 728, 729, 202, 202, 202, 202, 12, - - 725, 725, 725, 725, 725, 725, 730, 726, - 731, 731, 731, 731, 726, 726, 726, 732, - 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 743, 202, 202, 202, 202, - - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 744, 744, 202, 744, 202, 745, 744, - 744, 745, 744, 202, 745, 744, 745, 745, - 745, 745, 745, 745, 744, 744, 744, 744, - 745, 744, 744, 744, 744, 744, 744, 744, - - 745, 744, 744, 744, 202, 744, 202, 744, - 745, 745, 744, 744, 745, 744, 744, 744, - 744, 746, 744, 747, 746, 746, 746, 746, - 748, 748, 749, 746, 746, 744, 202, 202, - - 744, 744, 744, 744, 744, 202, 750, 202, - 751, 751, 751, 751, 746, 746, 202, 202, - 752, 753, 754, 755, 756, 757, 758, 759, - 760, 761, 202, 202, 762, 762, 763, 763, - - 764, 765, 765, 765, 766, 767, 766, 766, - 768, 766, 766, 769, 770, 771, 771, 771, - 771, 771, 768, 772, 771, 772, 772, 772, - 773, 773, 772, 772, 772, 772, 772, 772, - - 774, 775, 776, 777, 778, 779, 780, 781, - 782, 783, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 785, 773, 772, 773, - 772, 786, 787, 788, 787, 788, 789, 789, - - 764, 764, 764, 790, 764, 764, 764, 764, - 202, 764, 764, 764, 764, 790, 764, 764, - 764, 764, 790, 764, 764, 764, 764, 790, - 764, 764, 764, 764, 790, 764, 764, 764, - - 764, 764, 764, 764, 764, 764, 764, 764, - 764, 790, 791, 792, 792, 202, 202, 202, - 202, 793, 794, 795, 796, 795, 795, 797, - 795, 797, 794, 794, 794, 794, 798, 799, - - 794, 795, 800, 800, 801, 769, 800, 800, - 764, 764, 764, 764, 802, 803, 803, 803, - 798, 798, 798, 795, 798, 798, 804, 798, - 202, 798, 798, 798, 798, 795, 798, 798, - - 798, 798, 795, 798, 798, 798, 798, 795, - 798, 798, 798, 798, 795, 798, 804, 804, - 804, 798, 798, 798, 798, 798, 798, 798, - 804, 795, 804, 804, 804, 202, 805, 805, - - 806, 806, 806, 806, 806, 806, 807, 806, - 806, 806, 806, 806, 806, 202, 808, 806, - 809, 809, 810, 811, 812, 813, 813, 813, - 813, 814, 814, 202, 202, 202, 202, 202, - - 815, 815, 815, 815, 815, 815, 815, 815, - 815, 815, 815, 815, 815, 815, 815, 815, - 815, 815, 815, 815, 815, 815, 815, 815, - 815, 815, 815, 815, 815, 815, 815, 815, - - 815, 815, 816, 815, 815, 815, 817, 815, - 816, 815, 815, 818, 819, 820, 821, 820, - 820, 822, 820, 823, 823, 823, 820, 824, - 819, 825, 826, 827, 827, 823, 823, 816, - - 828, 829, 830, 831, 832, 833, 834, 835, - 836, 837, 838, 838, 839, 839, 839, 839, - 815, 815, 815, 815, 815, 815, 822, 822, - 820, 820, 816, 816, 816, 816, 823, 823, - - 823, 816, 818, 818, 818, 816, 816, 818, - 818, 818, 818, 818, 818, 818, 816, 816, - 816, 823, 823, 823, 823, 816, 816, 816, + 816, 816, 816, 816, 816, 816, 816, 816, + 816, 816, 816, 816, 816, 816, 816, 816, + 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, - 816, 816, 823, 818, 827, 823, 823, 818, - 818, 818, 818, 818, 818, 840, 816, 818, - 841, 842, 843, 844, 845, 846, 847, 848, - 849, 850, 851, 851, 851, 852, 853, 853, - - 854, 854, 854, 854, 854, 854, 854, 854, - 854, 854, 854, 854, 854, 854, 854, 854, - 854, 854, 854, 854, 854, 854, 854, 854, - 854, 854, 854, 854, 854, 854, 854, 854, - - 854, 854, 854, 854, 854, 854, 202, 855, - 202, 202, 202, 202, 202, 855, 202, 202, - 856, 856, 856, 856, 856, 856, 856, 856, - 856, 856, 856, 856, 856, 856, 856, 856, - - 856, 856, 856, 856, 856, 856, 856, 856, - 856, 856, 856, 856, 856, 856, 856, 856, - 856, 856, 856, 856, 856, 856, 856, 857, - 857, 858, 858, 859, 860, 861, 861, 861, - - 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, - - 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 863, 863, 863, 863, 863, 862, + 816, 816, 817, 816, 816, 816, 818, 816, + 817, 816, 816, 819, 820, 821, 822, 821, + 821, 823, 821, 824, 824, 824, 821, 825, + 820, 826, 827, 828, 828, 824, 824, 817, + + 829, 830, 831, 832, 833, 834, 835, 836, + 837, 838, 839, 839, 840, 840, 840, 840, + 816, 816, 816, 816, 816, 816, 823, 823, + 821, 821, 817, 817, 817, 817, 824, 824, + + 824, 817, 819, 819, 819, 817, 817, 819, + 819, 819, 819, 819, 819, 819, 817, 817, + 817, 824, 824, 824, 824, 817, 817, 817, + 817, 817, 817, 817, 817, 817, 817, 817, + + 817, 817, 824, 819, 828, 824, 824, 819, + 819, 819, 819, 819, 819, 841, 817, 819, + 842, 843, 844, 845, 846, 847, 848, 849, + 850, 851, 852, 852, 852, 853, 854, 854, + + 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, + + 855, 855, 855, 855, 855, 855, 203, 856, + 203, 203, 203, 203, 203, 856, 203, 203, + 857, 857, 857, 857, 857, 857, 857, 857, + 857, 857, 857, 857, 857, 857, 857, 857, + + 857, 857, 857, 857, 857, 857, 857, 857, + 857, 857, 857, 857, 857, 857, 857, 857, + 857, 857, 857, 857, 857, 857, 857, 858, + 858, 859, 859, 860, 861, 862, 862, 862, - 864, 865, 865, 865, 865, 865, 865, 865, - 865, 865, 865, 865, 865, 865, 865, 865, - 865, 865, 865, 865, 865, 865, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, + 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 863, 863, 863, 863, 863, 863, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, + 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 864, 864, 864, 864, 864, 863, - 864, 864, 864, 866, 866, 866, 866, 866, - 867, 867, 867, 867, 867, 867, 867, 867, - 867, 867, 867, 867, 867, 867, 867, 867, - 867, 867, 867, 867, 867, 867, 867, 867, + 865, 866, 866, 866, 866, 866, 866, 866, + 866, 866, 866, 866, 866, 866, 866, 866, + 866, 866, 866, 866, 866, 866, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, - 867, 867, 867, 868, 868, 868, 868, 868, - 868, 868, 868, 868, 868, 868, 868, 868, - 868, 868, 868, 868, 868, 868, 868, 868, - 868, 868, 868, 868, 868, 868, 868, 868, + 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 867, 867, 867, 867, 867, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, - 868, 868, 869, 869, 869, 869, 869, 869, - 870, 870, 870, 870, 870, 870, 870, 871, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, + 868, 868, 868, 869, 869, 869, 869, 869, + 869, 869, 869, 869, 869, 869, 869, 869, + 869, 869, 869, 869, 869, 869, 869, 869, + 869, 869, 869, 869, 869, 869, 869, 869, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, + 869, 869, 869, 869, 869, 869, 869, 869, + 869, 869, 869, 869, 869, 869, 869, 869, + 869, 869, 869, 869, 869, 869, 869, 869, + 869, 869, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 871, - 870, 202, 870, 870, 870, 870, 202, 202, - 870, 870, 870, 870, 870, 870, 870, 202, - 870, 202, 870, 870, 870, 870, 202, 202, + 871, 871, 871, 871, 871, 871, 871, 872, + 871, 871, 871, 871, 871, 871, 871, 871, + 871, 871, 871, 871, 871, 871, 871, 871, + 871, 871, 871, 871, 871, 871, 871, 871, - 870, 870, 870, 870, 870, 870, 870, 871, - 870, 202, 870, 870, 870, 870, 202, 202, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, + 871, 871, 871, 871, 871, 871, 871, 871, + 871, 871, 871, 871, 871, 871, 871, 871, + 871, 871, 871, 871, 871, 871, 871, 871, + 871, 871, 871, 871, 871, 871, 871, 871, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 871, - 870, 202, 870, 870, 870, 870, 202, 202, - 870, 870, 870, 870, 870, 870, 870, 202, - - 870, 202, 870, 870, 870, 870, 202, 202, - 870, 870, 870, 870, 870, 870, 870, 871, - 870, 870, 870, 870, 870, 870, 870, 202, - 870, 870, 870, 870, 870, 870, 870, 870, + 871, 871, 871, 871, 871, 871, 871, 872, + 871, 203, 871, 871, 871, 871, 203, 203, + 871, 871, 871, 871, 871, 871, 871, 203, + 871, 203, 871, 871, 871, 871, 203, 203, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 871, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, + 871, 871, 871, 871, 871, 871, 871, 872, + 871, 203, 871, 871, 871, 871, 203, 203, + 871, 871, 871, 871, 871, 871, 871, 871, + 871, 871, 871, 871, 871, 871, 871, 871, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 871, - 870, 202, 870, 870, 870, 870, 202, 202, - 870, 870, 870, 870, 870, 870, 870, 871, + 871, 871, 871, 871, 871, 871, 871, 871, + 871, 871, 871, 871, 871, 871, 871, 872, + 871, 203, 871, 871, 871, 871, 203, 203, + 871, 871, 871, 871, 871, 871, 871, 203, + + 871, 203, 871, 871, 871, 871, 203, 203, + 871, 871, 871, 871, 871, 871, 871, 872, + 871, 871, 871, 871, 871, 871, 871, 203, + 871, 871, 871, 871, 871, 871, 871, 871, - 870, 870, 870, 870, 870, 870, 870, 871, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 202, 202, 872, 872, 873, + 871, 871, 871, 871, 871, 871, 871, 871, + 871, 871, 871, 871, 871, 871, 871, 872, + 871, 871, 871, 871, 871, 871, 871, 871, + 871, 871, 871, 871, 871, 871, 871, 871, - 874, 875, 876, 877, 877, 877, 877, 876, - 876, 878, 879, 880, 881, 882, 883, 884, - 885, 886, 887, 887, 887, 887, 887, 887, - 887, 887, 887, 887, 887, 202, 202, 202, + 871, 871, 871, 871, 871, 871, 871, 871, + 871, 871, 871, 871, 871, 871, 871, 872, + 871, 203, 871, 871, 871, 871, 203, 203, + 871, 871, 871, 871, 871, 871, 871, 872, + 871, 871, 871, 871, 871, 871, 871, 872, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, 871, - 888, 888, 888, 888, 888, 888, 888, 888, - 888, 888, 202, 202, 202, 202, 202, 202, - - 889, 890, 891, 892, 893, 894, 895, 896, - 897, 898, 899, 900, 901, 902, 903, 904, - 905, 906, 907, 908, 909, 910, 911, 912, - 913, 914, 915, 916, 917, 918, 919, 920, - - 921, 922, 923, 924, 925, 926, 927, 928, - 929, 930, 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, 969, 969, 969, 969, 970, 202, 202, - 971, 971, 971, 971, 971, 971, 202, 202, - - 972, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, - - 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, - - 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 974, 975, 973, - 973, 973, 973, 973, 973, 973, 973, 976, - 976, 976, 976, 976, 976, 976, 976, 976, - - 977, 978, 978, 978, 978, 978, 978, 978, - 978, 978, 978, 978, 978, 978, 978, 978, - 978, 978, 978, 978, 978, 978, 978, 978, - 978, 978, 978, 979, 980, 202, 202, 202, - - 981, 981, 981, 981, 981, 981, 981, 981, - 981, 981, 981, 981, 981, 981, 981, 981, - 981, 981, 981, 981, 981, 981, 981, 981, - 981, 981, 981, 981, 981, 981, 981, 981, - - 981, 981, 981, 981, 981, 981, 981, 981, - 981, 981, 981, 982, 982, 982, 983, 983, - 983, 984, 984, 984, 984, 984, 984, 984, - 984, 202, 202, 202, 202, 202, 202, 202, - - 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 202, 985, 985, - 985, 985, 986, 986, 987, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 988, 988, 988, - 988, 988, 989, 989, 990, 991, 991, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 992, 992, 992, 992, 992, 992, 992, 992, - 992, 992, 992, 992, 992, 992, 992, 992, - 992, 992, 993, 993, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 994, 994, 994, 994, 994, 994, 994, 994, - 994, 994, 994, 994, 994, 202, 994, 994, - 994, 202, 995, 995, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 996, 996, 996, 996, 996, 996, 996, 996, - 996, 996, 996, 996, 996, 996, 996, 996, - 996, 996, 996, 996, 996, 996, 996, 996, - 996, 996, 996, 996, 996, 996, 996, 996, - - 996, 996, 996, 996, 996, 996, 996, 996, - 996, 996, 996, 996, 996, 996, 996, 996, - 996, 996, 996, 996, 997, 997, 998, 997, - 997, 997, 997, 997, 997, 997, 998, 998, - - 998, 998, 998, 998, 998, 998, 997, 998, - 998, 997, 997, 997, 997, 997, 997, 997, - 997, 997, 999, 997, 1000, 1000, 1001, 1002, - 1000, 1003, 1000, 1004, 996, 1005, 202, 202, - - 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, - 1014, 1015, 202, 202, 202, 202, 202, 202, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 202, 202, 202, 202, 202, 202, - - 1017, 1017, 1018, 1019, 1020, 1021, 1022, 1023, - 1024, 1025, 1026, 1027, 1027, 1027, 1028, 202, - 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, - 1037, 1038, 202, 202, 202, 202, 202, 202, - - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - - 1039, 1039, 1039, 1040, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1041, 202, 202, 202, 202, 202, 202, 202, - - 1042, 1042, 1042, 1042, 1042, 1027, 1027, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - - 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1043, 1044, 202, 202, 202, 202, 202, - 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, - - 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, - - 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, - 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, - 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, - 1045, 1045, 1045, 1045, 1045, 1046, 1046, 202, - - 1047, 1047, 1047, 1048, 1048, 1048, 1048, 1047, - 1047, 1048, 1048, 1048, 202, 202, 202, 202, - 1048, 1048, 1047, 1048, 1048, 1048, 1048, 1048, - 1048, 1049, 1050, 1051, 202, 202, 202, 202, - - 1052, 202, 202, 202, 1053, 1053, 1054, 1055, - 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, - 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, - 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, - - 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, - 1064, 1064, 1064, 1064, 1064, 1064, 202, 202, - 1064, 1064, 1064, 1064, 1064, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, + 871, 871, 871, 203, 203, 873, 873, 874, - 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, - 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, - 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, - 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, + 875, 876, 877, 878, 878, 878, 878, 877, + 877, 879, 880, 881, 882, 883, 884, 885, + 886, 887, 888, 888, 888, 888, 888, 888, + 888, 888, 888, 888, 888, 203, 203, 203, + + 872, 872, 872, 872, 872, 872, 872, 872, + 872, 872, 872, 872, 872, 872, 872, 872, + 889, 889, 889, 889, 889, 889, 889, 889, + 889, 889, 203, 203, 203, 203, 203, 203, + + 890, 891, 892, 893, 894, 895, 896, 897, + 898, 899, 900, 901, 902, 903, 904, 905, + 906, 907, 908, 909, 910, 911, 912, 913, + 914, 915, 916, 917, 918, 919, 920, 921, + + 922, 923, 924, 925, 926, 927, 928, 929, + 930, 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, 970, 970, 970, 970, 971, 203, 203, + 972, 972, 972, 972, 972, 972, 203, 203, + + 973, 974, 974, 974, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 974, 974, + + 974, 974, 974, 974, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 974, 974, + + 974, 974, 974, 974, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 975, 976, 974, + 974, 974, 974, 974, 974, 974, 974, 977, + 977, 977, 977, 977, 977, 977, 977, 977, + + 978, 979, 979, 979, 979, 979, 979, 979, + 979, 979, 979, 979, 979, 979, 979, 979, + 979, 979, 979, 979, 979, 979, 979, 979, + 979, 979, 979, 980, 981, 203, 203, 203, + + 982, 982, 982, 982, 982, 982, 982, 982, + 982, 982, 982, 982, 982, 982, 982, 982, + 982, 982, 982, 982, 982, 982, 982, 982, + 982, 982, 982, 982, 982, 982, 982, 982, + + 982, 982, 982, 982, 982, 982, 982, 982, + 982, 982, 982, 983, 983, 983, 984, 984, + 984, 985, 985, 985, 985, 985, 985, 985, + 985, 203, 203, 203, 203, 203, 203, 203, + + 986, 986, 986, 986, 986, 986, 986, 986, + 986, 986, 986, 986, 986, 203, 986, 986, + 986, 986, 987, 987, 988, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 989, 989, 989, 989, 989, 989, 989, 989, + 989, 989, 989, 989, 989, 989, 989, 989, + 989, 989, 990, 990, 991, 992, 992, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 993, 993, 993, 993, 993, 993, 993, 993, + 993, 993, 993, 993, 993, 993, 993, 993, + 993, 993, 994, 994, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 995, 995, 995, 995, 995, 995, 995, 995, + 995, 995, 995, 995, 995, 203, 995, 995, + 995, 203, 996, 996, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 997, 997, 997, 997, 997, 997, 997, 997, + 997, 997, 997, 997, 997, 997, 997, 997, + 997, 997, 997, 997, 997, 997, 997, 997, + 997, 997, 997, 997, 997, 997, 997, 997, + + 997, 997, 997, 997, 997, 997, 997, 997, + 997, 997, 997, 997, 997, 997, 997, 997, + 997, 997, 997, 997, 998, 998, 999, 998, + 998, 998, 998, 998, 998, 998, 999, 999, + + 999, 999, 999, 999, 999, 999, 998, 999, + 999, 998, 998, 998, 998, 998, 998, 998, + 998, 998, 1000, 998, 1001, 1001, 1002, 1003, + 1001, 1004, 1001, 1005, 997, 1006, 203, 203, + + 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, + 1015, 1016, 203, 203, 203, 203, 203, 203, + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 203, 203, 203, 203, 203, 203, + + 1018, 1018, 1019, 1020, 1021, 1022, 1023, 1024, + 1025, 1026, 1027, 1028, 1028, 1028, 1029, 203, + 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, + 1038, 1039, 203, 203, 203, 203, 203, 203, + + 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + + 1040, 1040, 1040, 1041, 1040, 1040, 1040, 1040, + 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + + 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + 1042, 203, 203, 203, 203, 203, 203, 203, + + 1043, 1043, 1043, 1043, 1043, 1028, 1028, 1040, + 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + + 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + 1040, 1044, 1045, 203, 203, 203, 203, 203, + 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, + + 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, + + 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, + 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, + 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, + 1046, 1046, 1046, 1046, 1046, 1047, 1047, 203, + + 1048, 1048, 1048, 1049, 1049, 1049, 1049, 1048, + 1048, 1049, 1049, 1049, 203, 203, 203, 203, + 1049, 1049, 1048, 1049, 1049, 1049, 1049, 1049, + 1049, 1050, 1051, 1052, 203, 203, 203, 203, - 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, - 1065, 1065, 1066, 1066, 202, 202, 202, 202, + 1053, 203, 203, 203, 1054, 1054, 1055, 1056, + 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, - 1065, 1065, 202, 202, 202, 202, 202, 202, - 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, - 1075, 1076, 1077, 202, 202, 202, 1078, 1078, - - 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, - 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, - 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, - 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, + 1065, 1065, 1065, 1065, 1065, 1065, 203, 203, + 1065, 1065, 1065, 1065, 1065, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + + 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 1067, 1067, 203, 203, 203, 203, + 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + + 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 203, 203, 203, 203, 203, 203, + 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, + 1076, 1077, 1078, 203, 203, 203, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, - 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, - 1082, 1083, 1083, 1084, 202, 202, 1085, 1085, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, - 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, - 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, - 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, - 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, - - 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, - 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, - 1086, 1086, 1086, 1086, 1086, 1087, 1088, 1087, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 202, - - 1089, 1090, 1088, 1090, 1090, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1087, 1087, 1087, - 1087, 1087, 1087, 1088, 1088, 1091, 1091, 1091, - 1091, 1091, 1091, 1091, 1091, 202, 202, 1092, - - 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, - 1101, 1102, 202, 202, 202, 202, 202, 202, - 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, - 1101, 1102, 202, 202, 202, 202, 202, 202, - - 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1104, - 1105, 1105, 1105, 1105, 1103, 1103, 202, 202, - 1106, 1106, 1106, 1106, 1106, 1107, 1107, 1107, - 1107, 1107, 1107, 1106, 1106, 1107, 1108, 1109, - - 1109, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 1110, 1110, 1110, 1110, 1111, 1112, 1113, 1112, - 1113, 1112, 1113, 1112, 1113, 1112, 1113, 1112, - 1112, 1112, 1113, 1112, 1112, 1112, 1112, 1112, - 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, - - 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, - 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, - 1112, 1112, 1112, 1112, 1114, 1115, 1110, 1110, - 1110, 1110, 1110, 1116, 1110, 1116, 1111, 1111, - - 1116, 1116, 1110, 1116, 1117, 1112, 1112, 1112, - 1112, 1112, 1112, 1112, 202, 202, 202, 202, - 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, - 1126, 1127, 1128, 1128, 1129, 1130, 1128, 1128, - - 1130, 1131, 1131, 1131, 1131, 1131, 1131, 1131, - 1131, 1131, 1131, 1132, 1133, 1132, 1132, 1132, - 1132, 1132, 1132, 1132, 1131, 1131, 1131, 1131, - 1131, 1131, 1131, 1131, 1131, 202, 202, 202, - - 1134, 1134, 1135, 1136, 1136, 1136, 1136, 1136, - 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, - 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, - 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, - - 1136, 1135, 1134, 1134, 1134, 1134, 1135, 1135, - 1134, 1134, 1137, 1138, 1139, 1139, 1136, 1136, - 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, - 1148, 1149, 1150, 1150, 1150, 1150, 1150, 1150, - - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - - 1151, 1151, 1151, 1151, 1151, 1151, 1152, 1153, - 1154, 1154, 1153, 1153, 1153, 1154, 1153, 1154, - 1154, 1154, 1155, 1155, 202, 202, 202, 202, - 202, 202, 202, 202, 1156, 1156, 1156, 1156, - - 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, - 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, - 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, - 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, + 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, + 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, + 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1082, + 1083, 1084, 1084, 1085, 203, 203, 1086, 1086, + + 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, + 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, + 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, + 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, + + 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, + 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, + 1087, 1087, 1087, 1087, 1087, 1088, 1089, 1088, + 1089, 1089, 1089, 1089, 1089, 1089, 1089, 203, + + 1090, 1091, 1089, 1091, 1091, 1089, 1089, 1089, + 1089, 1089, 1089, 1089, 1089, 1088, 1088, 1088, + 1088, 1088, 1088, 1089, 1089, 1092, 1092, 1092, + 1092, 1092, 1092, 1092, 1092, 203, 203, 1093, + + 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, + 1102, 1103, 203, 203, 203, 203, 203, 203, + 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, + 1102, 1103, 203, 203, 203, 203, 203, 203, + + 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1105, + 1106, 1106, 1106, 1106, 1104, 1104, 203, 203, + 1107, 1107, 1107, 1107, 1107, 1108, 1108, 1108, + 1108, 1108, 1108, 1107, 1107, 1108, 1109, 1110, + + 1110, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 1111, 1111, 1111, 1111, 1112, 1113, 1114, 1113, + 1114, 1113, 1114, 1113, 1114, 1113, 1114, 1113, + 1113, 1113, 1114, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1115, 1116, 1111, 1111, + 1111, 1111, 1111, 1117, 1111, 1117, 1112, 1112, + + 1117, 1117, 1111, 1117, 1118, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 203, 203, 203, 203, + 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, + 1127, 1128, 1129, 1129, 1130, 1131, 1129, 1129, + + 1131, 1132, 1132, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1132, 1133, 1134, 1133, 1133, 1133, + 1133, 1133, 1133, 1133, 1132, 1132, 1132, 1132, + 1132, 1132, 1132, 1132, 1132, 203, 203, 203, + + 1135, 1135, 1136, 1137, 1137, 1137, 1137, 1137, + 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, + 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, + 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, + + 1137, 1136, 1135, 1135, 1135, 1135, 1136, 1136, + 1135, 1135, 1138, 1139, 1140, 1140, 1137, 1137, + 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, + 1149, 1150, 1151, 1151, 1151, 1151, 1151, 1151, + + 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, + 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, + 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, + 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, + + 1152, 1152, 1152, 1152, 1152, 1152, 1153, 1154, + 1155, 1155, 1154, 1154, 1154, 1155, 1154, 1155, + 1155, 1155, 1156, 1156, 203, 203, 203, 203, + 203, 203, 203, 203, 1157, 1157, 1157, 1157, + + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, - 1157, 1157, 1157, 1157, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1159, 1159, 1159, 1159, - 1159, 1159, 1159, 1159, 1158, 1158, 1159, 1160, - 202, 202, 202, 1161, 1161, 1162, 1162, 1162, + 1159, 1159, 1159, 1159, 1160, 1160, 1160, 1160, + 1160, 1160, 1160, 1160, 1159, 1159, 1160, 1161, + 203, 203, 203, 1162, 1162, 1163, 1163, 1163, + + 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, + 1172, 1173, 203, 203, 203, 1158, 1158, 1158, + 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, + 1182, 1183, 1184, 1184, 1184, 1184, 1184, 1184, + + 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, + 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, + 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, + 1185, 1185, 1185, 1185, 1185, 1185, 1186, 1186, - 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, - 1171, 1172, 202, 202, 202, 1157, 1157, 1157, - 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, - 1181, 1182, 1183, 1183, 1183, 1183, 1183, 1183, - - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1184, 1184, 1184, 1184, 1184, 1184, 1185, 1185, - - 1186, 1187, 1188, 1189, 1189, 1190, 1191, 1192, - 1193, 202, 202, 202, 202, 202, 202, 202, - 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, - 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, - - 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, - 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, - 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, - 1194, 1194, 1194, 202, 202, 1194, 1194, 1194, + 1187, 1188, 1189, 1190, 1190, 1191, 1192, 1193, + 1194, 203, 203, 203, 203, 203, 203, 203, + 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, + 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, - 202, 202, 202, 202, 202, 202, 202, 202, - 1196, 1196, 1196, 1197, 1198, 1199, 1199, 1199, - 1199, 1199, 1196, 1196, 1199, 1199, 1199, 1199, - - 1196, 1200, 1198, 1198, 1198, 1198, 1198, 1198, - 1198, 1201, 1201, 1201, 1201, 1199, 1201, 1201, - 1201, 1201, 1201, 1202, 1203, 1202, 1202, 1204, - 1106, 1106, 1205, 202, 202, 202, 202, 202, - - 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, - - 114, 114, 114, 114, 114, 114, 1206, 1206, - 1206, 1206, 1206, 1207, 1208, 1208, 1208, 1209, - 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, - 1208, 1208, 1208, 1209, 1208, 1208, 1208, 1208, - - 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, - 1208, 1208, 1208, 1208, 1208, 1208, 1209, 1208, - 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, - 1208, 1208, 1208, 1208, 1208, 1210, 1210, 1210, + 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, + 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, + 1195, 1195, 1195, 203, 203, 1195, 1195, 1195, - 1210, 1210, 1208, 1208, 1208, 1208, 1210, 1210, - 1210, 1210, 1210, 114, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, - 1211, 1212, 115, 115, 115, 1213, 115, 115, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 203, 203, 203, 203, 203, 203, 203, 203, + 1197, 1197, 1197, 1198, 1199, 1200, 1200, 1200, + 1200, 1200, 1197, 1197, 1200, 1200, 1200, 1200, + + 1197, 1201, 1199, 1199, 1199, 1199, 1199, 1199, + 1199, 1202, 1202, 1202, 1202, 1200, 1202, 1202, + 1202, 1202, 1202, 1203, 1204, 1203, 1203, 1205, + 1107, 1107, 1206, 203, 203, 203, 203, 203, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 1214, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 1215, 1215, 1215, 1215, 1215, + 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, - 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, - 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, - 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215, - 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1216, - - 191, 191, 190, 191, 1217, 1217, 1217, 1217, - 1217, 1217, 1218, 1219, 1219, 1220, 1221, 1222, - 1223, 1219, 1219, 1219, 1219, 1219, 1219, 1219, - 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, - - 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1224, 1225, - 1225, 1226, 202, 1227, 1228, 1199, 1217, 1218, - - 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 70, 71, - - 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 1229, 1230, - 1231, 1232, 1233, 1234, 1235, 1235, 1236, 1235, - - 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 1237, 1238, 1237, 1238, 1237, 1238, + 115, 115, 115, 115, 115, 115, 1207, 1207, + 1207, 1207, 1207, 1208, 1209, 1209, 1209, 1210, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1210, 1209, 1209, 1209, 1209, + + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1210, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1211, 1211, 1211, + + 1211, 1211, 1209, 1209, 1209, 1209, 1211, 1211, + 1211, 1211, 1211, 115, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, + 1212, 1213, 116, 116, 116, 1214, 116, 116, + + 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 1215, 116, + 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 1216, 1216, 1216, 1216, 1216, + + 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, + 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, + 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, + 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1217, + + 192, 192, 191, 192, 1218, 1218, 1218, 1218, + 1218, 1218, 1219, 1220, 1220, 1221, 1222, 1223, + 1224, 1220, 1220, 1220, 1220, 1220, 1220, 1220, + 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, + + 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1107, + 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, + 1107, 1107, 1107, 1107, 1107, 1107, 1225, 1226, + 1226, 1227, 203, 1228, 1229, 1200, 1218, 1219, + + 71, 72, 71, 72, 71, 72, 71, 72, + 71, 72, 71, 72, 71, 72, 71, 72, + 71, 72, 71, 72, 71, 72, 71, 72, + 71, 72, 71, 72, 71, 72, 71, 72, + + 71, 72, 71, 72, 71, 72, 71, 72, + 71, 72, 71, 72, 71, 72, 71, 72, + 71, 72, 71, 72, 71, 72, 1230, 1231, + 1232, 1233, 1234, 1235, 1236, 1236, 1237, 1236, + + 71, 72, 71, 72, 71, 72, 71, 72, + 71, 72, 71, 72, 71, 72, 71, 72, + 71, 72, 71, 72, 71, 72, 71, 72, + 71, 72, 1238, 1239, 1238, 1239, 1238, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, - 1239, 1239, 1239, 1239, 1239, 1239, 202, 202, - 1240, 1240, 1240, 1240, 1240, 1240, 202, 202, + 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, + 1240, 1240, 1240, 1240, 1240, 1240, 203, 203, + 1241, 1241, 1241, 1241, 1241, 1241, 203, 203, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, + 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, + 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, - 1239, 1239, 1239, 1239, 1239, 1239, 202, 202, - 1240, 1240, 1240, 1240, 1240, 1240, 202, 202, - 1241, 1239, 1242, 1239, 1243, 1239, 1244, 1239, - 202, 1240, 202, 1240, 202, 1240, 202, 1240, + 1240, 1240, 1240, 1240, 1240, 1240, 203, 203, + 1241, 1241, 1241, 1241, 1241, 1241, 203, 203, + 1242, 1240, 1243, 1240, 1244, 1240, 1245, 1240, + 203, 1241, 203, 1241, 203, 1241, 203, 1241, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, - 1245, 1246, 1247, 1248, 1247, 1248, 1249, 1250, - 1251, 1252, 1253, 1254, 1255, 1256, 202, 202, - - 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, - 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, - 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, - 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, - - 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, - 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, - 1239, 1239, 1305, 1306, 1307, 202, 1308, 1309, - 1240, 1240, 1310, 1311, 1312, 207, 1313, 207, - - 207, 1314, 1315, 1316, 1317, 202, 1318, 1319, - 1320, 1321, 1320, 1321, 1322, 1314, 1314, 1314, - 1239, 1239, 1323, 1324, 202, 202, 1325, 1326, - 1240, 1240, 1327, 1328, 202, 1314, 1314, 1314, - - 1239, 1239, 1329, 1330, 1331, 1332, 1333, 1334, - 1240, 1240, 1335, 1336, 1337, 1314, 1338, 1338, - 202, 202, 1339, 1340, 1341, 202, 1342, 1343, - 1344, 1345, 1346, 1347, 1348, 1349, 207, 202, - - 1350, 1350, 1351, 1351, 1351, 1351, 1351, 1352, - 1351, 1351, 1351, 1353, 1354, 1355, 1356, 1357, - 1358, 1359, 1358, 1360, 1361, 1362, 14, 1363, - 1364, 1365, 1366, 1367, 1367, 1368, 1366, 1367, - - 14, 14, 14, 14, 1369, 1370, 1370, 1371, - 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, - 13, 13, 13, 1380, 1380, 1381, 1382, 1382, - 14, 1383, 1384, 14, 1385, 1386, 1363, 43, - - 43, 14, 14, 14, 1387, 16, 1388, 1389, - 1390, 1390, 1391, 1391, 1391, 1391, 1392, 1392, - 1392, 1392, 1393, 1394, 1395, 1396, 1397, 1398, - 1397, 1397, 1397, 1397, 1396, 1397, 1397, 1399, - - 1400, 1401, 1401, 1401, 1402, 1403, 1404, 1405, - 1406, 1407, 1408, 1408, 1408, 1408, 1408, 1408, - 1409, 1410, 202, 202, 1411, 1412, 1413, 1414, - 1415, 1416, 1417, 1417, 1418, 1419, 1420, 160, - - 1409, 63, 58, 59, 1411, 1412, 1413, 1414, - 1415, 1416, 1417, 1417, 1418, 1419, 1420, 202, - 1215, 1215, 1215, 1215, 1215, 1421, 1421, 1421, - 1421, 1421, 1421, 1421, 1421, 202, 202, 202, + 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, + 1246, 1247, 1248, 1249, 1248, 1249, 1250, 1251, + 1252, 1253, 1254, 1255, 1256, 1257, 203, 203, + + 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, + 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, + 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, + 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, + + 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, + 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, + 1240, 1240, 1306, 1307, 1308, 203, 1309, 1310, + 1241, 1241, 1311, 1312, 1313, 208, 1314, 208, + + 208, 1315, 1316, 1317, 1318, 203, 1319, 1320, + 1321, 1322, 1321, 1322, 1323, 1315, 1315, 1315, + 1240, 1240, 1324, 1325, 203, 203, 1326, 1327, + 1241, 1241, 1328, 1329, 203, 1315, 1315, 1315, + + 1240, 1240, 1330, 1331, 1332, 1333, 1334, 1335, + 1241, 1241, 1336, 1337, 1338, 1315, 1339, 1339, + 203, 203, 1340, 1341, 1342, 203, 1343, 1344, + 1345, 1346, 1347, 1348, 1349, 1350, 208, 203, + + 1351, 1351, 1352, 1352, 1352, 1352, 1352, 1353, + 1352, 1352, 1352, 1354, 1355, 1356, 1357, 1358, + 1359, 1360, 1359, 1361, 1362, 1363, 14, 1364, + 1365, 1366, 1367, 1368, 1368, 1369, 1367, 1368, + + 14, 14, 14, 14, 1370, 1371, 1371, 1372, + 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, + 13, 13, 13, 1381, 1381, 1382, 1383, 1383, + 14, 1384, 1385, 14, 1386, 1387, 1364, 43, + + 43, 14, 14, 14, 1388, 16, 1389, 1390, + 1391, 1392, 1393, 1393, 1393, 1393, 1394, 1394, + 1394, 1394, 1395, 1396, 1397, 1398, 1399, 1400, + 1399, 1399, 1399, 1399, 1398, 1399, 1399, 1401, + + 1402, 1403, 1403, 1403, 1404, 1405, 1406, 1407, + 1408, 1409, 1410, 1410, 1410, 1410, 1410, 1410, + 1411, 1412, 203, 203, 1413, 1414, 1415, 1416, + 1417, 1418, 1419, 1419, 1420, 1421, 1422, 161, + + 1411, 64, 59, 60, 1413, 1414, 1415, 1416, + 1417, 1418, 1419, 1419, 1420, 1421, 1422, 203, + 1216, 1216, 1216, 1216, 1216, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 203, 203, 203, 12, 12, 12, 12, 12, 12, 12, 50, - 1422, 12, 12, 1423, 1424, 1425, 1425, 1425, - 1426, 1426, 1427, 1427, 1427, 1427, 1428, 1429, - 1429, 1430, 1431, 1432, 1433, 1433, 1434, 1435, - - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 173, 173, 180, 180, 173, 173, 173, 173, - 180, 180, 180, 173, 173, 1437, 1437, 1437, - - 1437, 173, 1438, 1438, 1439, 1440, 1440, 197, - 1441, 197, 1440, 1442, 1218, 1218, 1218, 1218, - 1219, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 1443, 1443, 1444, 1445, 51, 1443, 1443, 1444, - 51, 1445, 1446, 1444, 1444, 1444, 1446, 1446, - 1444, 1444, 1444, 1446, 51, 1444, 1447, 51, - 36, 1444, 1444, 1444, 1444, 1444, 51, 51, - - 1443, 1443, 1443, 51, 1444, 51, 1448, 51, - 1444, 51, 1449, 1450, 1444, 1444, 1451, 1446, - 1444, 1444, 1452, 1444, 1446, 1453, 1453, 1453, - 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1459, - - 1460, 1393, 1393, 1393, 1393, 1459, 1458, 1458, - 1458, 1458, 1461, 1393, 1462, 1463, 1464, 1465, - 1466, 1466, 1466, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, - - 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, - 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, - 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, - 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, + 1424, 12, 12, 1425, 1426, 1427, 1427, 1427, + 1428, 1428, 1429, 1429, 1429, 1429, 1430, 1431, + 1431, 1432, 1433, 1434, 1435, 1435, 1436, 1437, + + 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, + 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, + 174, 174, 181, 181, 174, 174, 174, 174, + 181, 181, 181, 174, 174, 1439, 1439, 1439, + + 1439, 174, 1440, 1440, 1441, 1442, 1442, 198, + 1443, 198, 1442, 1444, 1219, 1219, 1219, 1219, + 1220, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 1445, 1445, 1446, 1447, 51, 1445, 1445, 1446, + 51, 1447, 1448, 1446, 1446, 1446, 1448, 1448, + 1446, 1446, 1446, 1448, 51, 1446, 1449, 51, + 36, 1446, 1446, 1446, 1446, 1446, 51, 51, + + 1445, 1445, 1450, 51, 1446, 51, 1451, 51, + 1446, 51, 1452, 1453, 1446, 1446, 1454, 1448, + 1446, 1446, 1455, 1446, 1448, 1456, 1456, 1456, + 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1462, + + 1463, 1395, 1395, 1395, 1395, 1462, 1461, 1461, + 1461, 1461, 1464, 1395, 1465, 1466, 1467, 1468, + 1469, 1469, 1469, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, - 1469, 1469, 1469, 111, 123, 1470, 1470, 1470, - 1470, 1466, 1471, 1471, 202, 202, 202, 202, - 36, 36, 36, 36, 36, 51, 51, 51, - 51, 51, 1472, 1472, 51, 51, 51, 51, + 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, + 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, + 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, + 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, + + 1472, 1472, 1472, 112, 124, 1473, 1473, 1473, + 1473, 1469, 1474, 1474, 203, 203, 203, 203, + 36, 36, 36, 36, 1475, 53, 53, 53, + 53, 53, 1476, 1476, 51, 51, 51, 51, 36, 51, 51, 36, 51, 51, 36, 51, - 51, 51, 51, 51, 51, 51, 1472, 51, + 51, 53, 53, 51, 51, 51, 1476, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 1473, 1472, 1472, + 51, 51, 51, 51, 51, 1477, 1476, 1476, 51, 51, 36, 51, 36, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 1455, 1455, 1455, 1455, 1455, - 1455, 1455, 1455, 1455, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - - 36, 36, 36, 36, 1472, 36, 36, 36, - 1474, 1475, 1474, 1476, 1477, 1476, 36, 36, - 36, 36, 18, 57, 36, 1478, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 1479, - - 1480, 1481, 1482, 36, 1483, 36, 1472, 36, - 36, 36, 36, 36, 1418, 1418, 36, 1418, - 1418, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 1484, 1485, 36, 36, - - 36, 1472, 36, 1486, 1472, 1487, 36, 1472, - 36, 1472, 36, 36, 1488, 36, 36, 36, - 36, 36, 1484, 1485, 1484, 1485, 36, 36, + 51, 51, 51, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + + 36, 36, 36, 36, 1476, 36, 36, 36, + 1478, 1479, 1478, 1480, 1481, 1480, 36, 36, + 36, 36, 18, 58, 36, 1482, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 1483, + + 1484, 1485, 1486, 36, 1487, 36, 1476, 36, + 36, 36, 36, 36, 1420, 1420, 36, 1420, + 1420, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 1488, 1489, 36, 36, + + 36, 1476, 36, 1490, 1476, 1491, 36, 1476, + 36, 1476, 36, 36, 1492, 36, 36, 36, + 36, 36, 1488, 1489, 1488, 1489, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 1472, 36, 1472, 36, 1484, 1485, 1484, 1485, - 1484, 1485, 1484, 1485, 36, 1472, 1489, 1490, - 1489, 1490, 1484, 1485, 1489, 1490, 1484, 1485, - 1489, 1490, 1484, 1485, 1484, 1485, 1484, 1485, - - 1489, 1490, 1484, 1485, 1489, 1490, 1484, 1485, - 1489, 1490, 1484, 1485, 36, 36, 36, 1484, - 1485, 1484, 1485, 36, 36, 36, 36, 36, - 1491, 36, 36, 36, 36, 36, 36, 36, - - 36, 36, 1484, 1485, 36, 36, 1492, 36, - 1493, 1494, 36, 1494, 1472, 1472, 1472, 1472, - 1484, 1485, 1484, 1485, 1484, 1485, 1484, 1485, + 1476, 36, 1476, 36, 1488, 1489, 1488, 1489, + 1488, 1489, 1488, 1489, 36, 1476, 1493, 1494, + 1493, 1494, 1488, 1489, 1493, 1494, 1488, 1489, + 1493, 1494, 1488, 1489, 1488, 1489, 1488, 1489, + + 1493, 1494, 1488, 1489, 1493, 1494, 1488, 1489, + 1493, 1494, 1488, 1489, 36, 36, 36, 1488, + 1489, 1488, 1489, 36, 36, 36, 36, 36, 1495, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 1488, 1489, 36, 36, 1496, 36, + 1497, 1498, 36, 1498, 1476, 1476, 1476, 1476, + 1488, 1489, 1488, 1489, 1488, 1489, 1488, 1489, + 1499, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, - 36, 1484, 1485, 1484, 1485, 1496, 36, 36, - 1484, 1485, 36, 36, 36, 36, 1484, 1485, - 1484, 1485, 1484, 1485, 1484, 1485, 1484, 1485, - - 1489, 1490, 1489, 1490, 1484, 1485, 1484, 1485, - 1484, 1485, 1489, 1490, 1489, 1490, 36, 1497, - 1484, 1485, 1498, 1498, 1498, 1393, 1499, 1499, - 1393, 1393, 1500, 1500, 1500, 1501, 1501, 1393, + 36, 1488, 1489, 1488, 1489, 1500, 36, 36, + 1488, 1489, 36, 36, 36, 36, 1488, 1489, + 1488, 1489, 1488, 1489, 1488, 1489, 1488, 1489, + + 1493, 1494, 1493, 1494, 1488, 1489, 1488, 1489, + 1488, 1489, 1493, 1494, 1493, 1494, 36, 1501, + 1488, 1489, 1502, 1502, 1502, 1395, 1503, 1503, + 1395, 1395, 1504, 1504, 1504, 1505, 1505, 1395, - 51, 1455, 51, 51, 51, 51, 51, 51, - 16, 1388, 16, 1388, 51, 51, 51, 51, + 51, 1458, 51, 51, 51, 51, 51, 51, + 16, 1389, 16, 1389, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 1502, 1502, 51, 51, 51, 51, + 51, 51, 1506, 1506, 51, 51, 51, 51, 36, 36, 51, 51, 51, 51, 51, 51, - 51, 1503, 1504, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 1505, 1505, - 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, - - 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, - 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, - 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, - 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, - - 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, - 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, - 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, - 1505, 1505, 1505, 1455, 1393, 1455, 1455, 1455, - - 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, - 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, - 1455, 1455, 1455, 1455, 1455, 1506, 1455, 1455, - 1455, 1455, 1455, 1393, 1393, 1393, 1393, 1393, - - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1461, 1461, 1461, 1461, - 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, - - 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, - 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1507, - 1507, 1462, 1462, 1462, 1462, 1462, 1462, 1462, - 1462, 1462, 1462, 1462, 1508, 1508, 1508, 1508, - - 1508, 1508, 1463, 1463, 1463, 1463, 1463, 1463, - 1509, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1511, 1511, 1511, 1511, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1513, 1513, 1513, 1513, 1514, + 53, 1507, 1508, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 1509, 1509, + 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, + + 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, + 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, + 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, + 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, + + 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, + 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, + 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, + 1509, 1509, 1509, 1458, 1395, 1458, 1458, 1458, + + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1510, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1511, 1458, 1458, + 1458, 1458, 1458, 1395, 1395, 1395, 1395, 1395, + + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1464, 1464, 1464, 1464, + 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, + + 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, + 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1512, + 1513, 1465, 1465, 1465, 1465, 1465, 1465, 1465, + 1465, 1465, 1465, 1465, 1514, 1514, 1514, 1514, + + 1514, 1514, 1466, 1466, 1466, 1466, 1466, 1466, + 1515, 1516, 1516, 1516, 1516, 1516, 1516, 1516, + 1517, 1517, 1517, 1517, 1518, 1518, 1518, 1518, + 1519, 1519, 1519, 1520, 1520, 1520, 1520, 1521, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 1455, 1455, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, + 51, 51, 51, 51, 51, 1458, 1458, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, - 1523, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 1515, 1516, 1517, 1518, - 1519, 1520, 1521, 1522, 1523, 65, 65, 65, - - 65, 65, 65, 65, 65, 65, 65, 65, - 63, 58, 59, 1411, 1412, 1413, 1414, 1415, - 1416, 1524, 1524, 1524, 1524, 1524, 1524, 1524, - 1524, 1524, 1524, 1524, 1525, 1525, 1525, 1525, - - 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, - 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, - 1525, 1525, 1525, 1525, 1525, 1525, 1526, 1526, - 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, - - 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, - 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, - 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, - 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, - - 1527, 1527, 1527, 1527, 1527, 1527, 1527, 1527, - 1527, 1527, 1528, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 1529, 1529, 1530, 1531, 1532, - 1533, 1534, 1535, 1536, 1537, 1538, 1529, 1539, + 51, 51, 51, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, + 1530, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 1522, 1523, 1524, 1525, + 1526, 1527, 1528, 1529, 1530, 66, 66, 66, - 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 1461, 1461, - 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 66, 66, 66, 66, 66, 66, 66, 66, + 64, 59, 60, 1413, 1414, 1415, 1416, 1417, + 1418, 1531, 1531, 1531, 1531, 1531, 1531, 1531, + 1531, 1531, 1531, 1531, 1532, 1532, 1532, 1532, + + 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, + 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, + 1532, 1532, 1532, 1532, 1532, 1532, 1533, 1533, + 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, + + 1533, 1533, 1534, 1533, 1533, 1533, 1533, 1533, + 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, + 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, + 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, + + 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, + 1535, 1535, 1536, 1537, 1537, 1537, 1537, 1537, + 1537, 1537, 1537, 1537, 1537, 1538, 1539, 1540, + 1541, 1542, 1543, 1544, 1545, 1546, 1537, 1547, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 36, - 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 1464, 1464, + 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, - 51, 36, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 53, 53, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 53, 36, 51, 51, 51, 51, 51, 51, 51, 51, + 53, 36, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - - 1502, 1502, 1502, 1502, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 1540, 1540, 1461, 1461, - 1541, 1455, 1502, 1502, 1502, 1542, 1502, 1502, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, - 51, 1502, 1502, 1502, 51, 51, 51, 51, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1395, 1395, 1395, 1548, 1548, 1548, 1548, 1395, + 1506, 1506, 1506, 1506, 53, 53, 51, 53, + 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 51, 1549, 1549, 1550, 1550, + 1551, 1510, 1506, 1506, 1506, 1552, 1506, 1506, + + 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, + 53, 1506, 1506, 1506, 53, 53, 53, 53, + + 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, + + 53, 53, 53, 53, 53, 53, 53, 53, + 1506, 53, 53, 53, 53, 53, 53, 1475, + 1510, 1510, 1550, 1550, 1550, 1550, 1550, 1550, + 1550, 1550, 1550, 1550, 1550, 1550, 1553, 1551, + + 1550, 1550, 1550, 1550, 1550, 1550, 1464, 1464, + 1464, 1464, 1513, 1513, 1513, 1513, 1513, 1513, + 1512, 1512, 1553, 1553, 1553, 1553, 1553, 1553, + 1553, 1553, 1553, 1553, 1553, 1554, 1555, 1555, + + 1512, 1512, 1553, 1553, 1553, 1553, 1553, 1553, + 1553, 1553, 1553, 1553, 1556, 1553, 1553, 1553, + 1553, 1553, 1557, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1558, 1558, 1558, + + 1559, 1559, 1559, 1559, 1558, 1558, 1558, 1558, + 1558, 1555, 1555, 1555, 1555, 1558, 1516, 1558, + 1558, 1558, 1555, 1558, 1558, 1555, 1555, 1555, + 1558, 1558, 1555, 1555, 1558, 1555, 1555, 1558, + + 1558, 1558, 1516, 1555, 1516, 1516, 1516, 1516, + 1555, 1555, 1558, 1555, 1555, 1555, 1555, 1555, + 1555, 1558, 1558, 1558, 1558, 1558, 1555, 1558, + 1558, 1560, 1558, 1555, 1555, 1558, 1558, 1558, + + 1561, 1506, 1506, 1506, 1506, 1516, 51, 51, + 1506, 1506, 1562, 1562, 1552, 1552, 53, 53, + 53, 53, 53, 51, 53, 51, 53, 51, + 51, 51, 51, 51, 51, 53, 51, 51, + + 51, 53, 51, 51, 51, 51, 51, 51, + 1516, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 53, 53, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1502, 51, 51, 51, 51, 51, 51, 36, - 1455, 1455, 1461, 1461, 1461, 1461, 1461, 1461, - 1461, 1461, 1461, 1461, 1461, 1461, 1462, 1541, - - 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, - 1461, 1461, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1462, 1462, 1462, 1462, 1462, 1462, - 1462, 1462, 1462, 1462, 1462, 1543, 1509, 1509, - - 1507, 1507, 1462, 1462, 1462, 1462, 1462, 1462, - 1462, 1462, 1462, 1462, 1544, 1462, 1462, 1462, - 1462, 1462, 1463, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1545, 1545, 1545, - - 1546, 1546, 1546, 1546, 1545, 1545, 1545, 1545, - 1545, 1509, 1509, 1509, 1509, 1545, 1510, 1545, - 1545, 1545, 1509, 1545, 1545, 1509, 1509, 1509, - 1545, 1545, 1509, 1509, 1545, 1509, 1509, 1545, - - 1545, 1545, 1510, 1509, 1510, 1510, 1510, 1510, - 1509, 1509, 1545, 1509, 1509, 1509, 1509, 1509, - 1509, 1545, 1545, 1545, 1545, 1545, 1509, 1545, - 1545, 1547, 1545, 1509, 1509, 1545, 1545, 1545, - 1548, 1502, 1502, 1502, 1502, 1510, 51, 51, - 1502, 1502, 1549, 1549, 1542, 1542, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 53, 51, 51, 53, + 51, 51, 51, 51, 1516, 51, 1516, 51, + 51, 51, 51, 1516, 1516, 1516, 51, 1555, + 51, 51, 51, 1563, 1563, 1563, 1563, 1564, + + 1564, 51, 1565, 1566, 1506, 53, 53, 53, + 1567, 1568, 1567, 1568, 1567, 1568, 1567, 1568, + 1567, 1568, 1567, 1568, 1567, 1568, 1569, 1570, + 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, + + 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, + 1577, 1578, 1569, 1570, 1571, 1572, 1573, 1574, + 1575, 1576, 1577, 1578, 51, 1516, 1516, 1516, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 53, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1510, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, + 1516, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 1516, - 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 1510, 51, 1510, 51, - 51, 51, 51, 1510, 1510, 1510, 51, 1509, - 51, 51, 51, 1550, 1550, 1550, 1550, 1551, - - 1551, 51, 1552, 1552, 1502, 51, 51, 51, - 1553, 1554, 1553, 1554, 1553, 1554, 1553, 1554, - 1553, 1554, 1553, 1554, 1553, 1554, 1555, 1556, - 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, - - 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, - 1563, 1564, 1555, 1556, 1557, 1558, 1559, 1560, - 1561, 1562, 1563, 1564, 51, 1510, 1510, 1510, - 51, 51, 51, 51, 51, 51, 51, 51, + 1579, 1579, 1579, 1580, 1581, 1582, 1583, 1514, + 1584, 1585, 1514, 1586, 1587, 1588, 1589, 1589, + 1395, 1395, 1395, 1395, 1395, 1590, 1591, 1395, + 1395, 1395, 1395, 1395, 1592, 1590, 1591, 1395, + + 1395, 1395, 1590, 1591, 1590, 1591, 1567, 1568, + 1567, 1568, 1567, 1568, 1593, 1594, 1593, 1594, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + + 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, + 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, + 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, + 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, + + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1548, 1548, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + + 1395, 1395, 1395, 1567, 1568, 1567, 1568, 1567, + 1568, 1567, 1568, 1567, 1568, 1596, 1597, 1598, + 1599, 1567, 1568, 1567, 1568, 1567, 1568, 1567, + 1568, 1395, 1395, 1600, 1395, 1395, 1395, 1395, + + 1601, 1395, 1395, 1602, 1590, 1591, 1395, 1395, + 1590, 1591, 1590, 1591, 1590, 1591, 1590, 1591, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1603, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + + 1590, 1591, 1395, 1395, 1590, 1591, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1590, + 1591, 1590, 1591, 1395, 1590, 1591, 1395, 1395, + 1567, 1568, 1567, 1568, 1395, 1395, 1395, 1395, + + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1590, 1591, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1604, 1395, 1395, + 1590, 1591, 1395, 1395, 1567, 1568, 1395, 1395, + + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1463, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1590, 1591, 1590, 1591, 1395, + 1395, 1395, 1395, 1395, 1590, 1591, 1395, 1395, + 1395, 1395, 1395, 1395, 1590, 1591, 1395, 1395, + + 1395, 1395, 1395, 1395, 1590, 1591, 1395, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, + 1395, 1395, 1395, 1395, 1463, 1463, 1463, 1395, + 1395, 1590, 1591, 1590, 1591, 1590, 1591, 1590, + + 1591, 1590, 1591, 1590, 1591, 1590, 1591, 1590, + 1591, 1590, 1591, 1590, 1591, 1590, 1591, 1590, + 1591, 1590, 1591, 1590, 1591, 1590, 1591, 1590, + 1591, 1590, 1591, 1590, 1591, 1590, 1591, 1590, + + 1591, 1590, 1591, 1395, 1395, 1395, 1590, 1591, + 1590, 1591, 1590, 1591, 1590, 1591, 1395, 1590, + 1591, 1590, 1591, 1590, 1591, 1590, 1591, 1590, + 1591, 1590, 1591, 1590, 1591, 1590, 1591, 1590, + + 1591, 1590, 1591, 1590, 1591, 1590, 1591, 1590, + 1591, 1590, 1591, 1590, 1591, 1590, 1591, 1590, + 1591, 1590, 1591, 1590, 1591, 1590, 1591, 1395, + 1395, 1395, 1395, 1395, 1605, 1395, 1606, 1395, + + 1395, 1395, 1395, 1607, 1608, 1607, 1395, 1395, + 1395, 1395, 1395, 1395, 1590, 1591, 1609, 1395, + 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1590, + 1591, 1590, 1591, 1395, 1395, 1395, 1395, 1395, + + 1513, 1513, 1513, 1513, 1513, 1512, 1512, 1512, + 1513, 1513, 1513, 1513, 1513, 1513, 1465, 1465, + 1465, 1465, 1465, 1465, 1466, 1466, 1466, 1466, + 1466, 1466, 1466, 1554, 1554, 1610, 1610, 1610, + + 1466, 1466, 1466, 1466, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, + 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, + + 1587, 1587, 1587, 1587, 1587, 1610, 1610, 1587, + 1587, 1587, 1587, 1587, 1587, 1518, 1518, 1518, + 1554, 1610, 1610, 1610, 1610, 1555, 1515, 1515, + 1515, 1515, 1518, 1518, 1518, 1518, 1518, 1518, + + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 203, 203, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 203, 1611, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1612, 1612, 1612, 1518, 1518, 1518, + + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1613, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1521, 1612, 1612, 1612, 1612, 1612, + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + 1612, 1612, 1612, 1612, 1474, 1474, 1474, 1474, + 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612, + 1612, 1612, 1612, 1612, 1612, 1612, 1614, 1613, + + 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, + 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, + 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, + 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, + + 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, + 1615, 1615, 1615, 1615, 1615, 1615, 1615, 203, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, + 1616, 1616, 1616, 1616, 1616, 1616, 1616, 203, + + 128, 124, 1617, 1618, 1619, 1620, 1621, 128, + 124, 128, 124, 128, 124, 1622, 1623, 1624, + 1625, 1236, 1238, 1239, 1626, 128, 124, 1626, + 1236, 1236, 1236, 1236, 1627, 1627, 1628, 1629, + + 1630, 1631, 1630, 1631, 1630, 1631, 1630, 1631, + 1630, 1631, 1630, 1631, 1630, 1631, 1630, 1631, + 1630, 1631, 1630, 1631, 1630, 1631, 1630, 1631, + 1630, 1631, 1630, 1631, 1630, 1631, 1630, 1631, + + 1630, 1631, 1630, 1631, 1632, 1633, 1633, 1633, + 1633, 1633, 1633, 1634, 1635, 1634, 1635, 1636, + 1636, 1636, 1637, 1638, 203, 203, 203, 203, + 203, 1639, 1640, 1640, 1640, 1641, 1639, 1640, + + 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, + 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, + 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, + 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, + + 1642, 1642, 1642, 1642, 1642, 1642, 203, 1643, + 203, 203, 203, 203, 203, 1643, 203, 203, + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + + 1644, 1644, 1644, 1644, 1644, 1644, 1645, 1645, + 203, 203, 203, 203, 203, 203, 203, 1646, + 1647, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 1648, + + 872, 872, 872, 872, 872, 872, 872, 872, + 872, 872, 872, 872, 872, 872, 872, 872, + 872, 872, 872, 872, 872, 872, 872, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 872, 872, 872, 872, 872, 872, 872, 203, + 872, 872, 872, 872, 872, 872, 872, 203, + 872, 872, 872, 872, 872, 872, 872, 203, + 872, 872, 872, 872, 872, 872, 872, 203, + + 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, + + 1649, 1649, 1650, 1651, 1650, 1651, 1649, 1649, + 1649, 1650, 1651, 1649, 1650, 1651, 1399, 1399, + 1399, 1399, 1399, 1399, 1399, 1399, 1398, 1652, + 1653, 1654, 1655, 1656, 1650, 1651, 1656, 1656, + + 1657, 1658, 1593, 1594, 1593, 1594, 1593, 1594, + 1593, 1594, 1654, 1654, 1654, 1654, 1659, 1660, + 1654, 1661, 1662, 1663, 1663, 1662, 1662, 1662, + 1662, 1662, 1664, 1664, 1665, 1666, 1666, 1667, + + 1668, 1666, 1669, 1670, 1670, 1671, 1671, 1671, + 1671, 1671, 1672, 1673, 1672, 1673, 1672, 1674, + 1611, 1611, 1675, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 203, 1676, 1676, 1676, 1676, 1677, + + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1677, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1677, 1677, 1677, 1677, 1677, 1677, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, + 1678, 1678, 1678, 1678, 203, 203, 203, 203, + + 1352, 1679, 1680, 1681, 1682, 1683, 1684, 1685, + 16, 1389, 16, 1389, 16, 1389, 16, 1389, + 16, 1389, 1682, 1682, 16, 1389, 16, 1389, + 16, 1389, 16, 1389, 1686, 1367, 1687, 1687, + + 1682, 1685, 1685, 1685, 1685, 1685, 1685, 1685, + 1685, 1685, 1688, 1689, 175, 1690, 1691, 1691, + 1692, 1693, 1693, 1693, 1693, 1694, 1695, 1682, + 1696, 1696, 1696, 1697, 1698, 1699, 1678, 1682, + + 203, 1700, 1701, 1700, 1701, 1700, 1701, 1700, + 1701, 1700, 1701, 1701, 1702, 1701, 1702, 1701, + 1702, 1701, 1702, 1701, 1702, 1701, 1702, 1701, + 1702, 1701, 1702, 1701, 1702, 1701, 1702, 1701, + + 1702, 1701, 1702, 1700, 1701, 1702, 1701, 1702, + 1701, 1702, 1701, 1701, 1701, 1701, 1701, 1701, + 1702, 1702, 1701, 1702, 1702, 1701, 1702, 1702, + 1701, 1702, 1702, 1701, 1702, 1702, 1701, 1701, + + 1701, 1701, 1701, 1700, 1701, 1700, 1701, 1700, + 1701, 1701, 1701, 1701, 1701, 1701, 1700, 1701, + 1701, 1701, 1701, 1701, 1702, 1703, 1703, 203, + 203, 1704, 1704, 1705, 1705, 1706, 1707, 1708, + + 1709, 1710, 1711, 1710, 1711, 1710, 1711, 1710, + 1711, 1710, 1711, 1711, 1712, 1711, 1712, 1711, + 1712, 1711, 1712, 1711, 1712, 1711, 1712, 1711, + 1712, 1711, 1712, 1711, 1712, 1711, 1712, 1711, + + 1712, 1711, 1712, 1710, 1711, 1712, 1711, 1712, + 1711, 1712, 1711, 1711, 1711, 1711, 1711, 1711, + 1712, 1712, 1711, 1712, 1712, 1711, 1712, 1712, + 1711, 1712, 1712, 1711, 1712, 1712, 1711, 1711, + + 1711, 1711, 1711, 1710, 1711, 1710, 1711, 1710, + 1711, 1711, 1711, 1711, 1711, 1711, 1710, 1711, + 1711, 1711, 1711, 1711, 1712, 1710, 1710, 1712, + 1712, 1712, 1712, 1713, 1714, 1715, 1716, 1717, + + 203, 203, 203, 203, 203, 1718, 1718, 1718, + 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, + 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, + 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, + + 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, + 1718, 1718, 1718, 1718, 1718, 1719, 1720, 1721, + 203, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 203, + 1723, 1723, 1724, 1724, 1724, 1724, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, - 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, - 1510, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 1510, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1727, 1727, 1727, 1728, 1728, 1728, 1728, 1728, - 1565, 1565, 1565, 1566, 1567, 1568, 1569, 1508, - 1570, 1571, 1508, 1572, 1573, 1574, 1575, 1575, - 1393, 1393, 1393, 1393, 1393, 1576, 1577, 1393, - 1393, 1393, 1393, 1393, 1578, 1576, 1577, 1393, - - 1393, 1393, 1576, 1577, 1576, 1577, 1553, 1554, - 1553, 1554, 1553, 1554, 1579, 1580, 1579, 1580, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - - 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, - 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, - 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, - 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, - - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - - 1393, 1393, 1393, 1553, 1554, 1553, 1554, 1553, - 1554, 1553, 1554, 1553, 1554, 1582, 1583, 1584, - 1585, 1553, 1554, 1553, 1554, 1553, 1554, 1553, - 1554, 1393, 1393, 1586, 1393, 1393, 1393, 1393, - - 1587, 1393, 1393, 1588, 1576, 1577, 1393, 1393, - 1576, 1577, 1576, 1577, 1576, 1577, 1576, 1577, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1589, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - - 1576, 1577, 1393, 1393, 1576, 1577, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1576, - 1577, 1576, 1577, 1393, 1576, 1577, 1393, 1393, - 1553, 1554, 1553, 1554, 1393, 1393, 1393, 1393, - - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1576, 1577, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1590, 1393, 1393, - 1576, 1577, 1393, 1393, 1553, 1554, 1393, 1393, - - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1460, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1576, 1577, 1576, 1577, 1393, - 1393, 1393, 1393, 1393, 1576, 1577, 1393, 1393, - 1393, 1393, 1393, 1393, 1576, 1577, 1393, 1393, - - 1393, 1393, 1393, 1393, 1576, 1577, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1460, 1460, 1460, 1393, - 1393, 1576, 1577, 1576, 1577, 1576, 1577, 1576, - - 1577, 1576, 1577, 1576, 1577, 1576, 1577, 1576, - 1577, 1576, 1577, 1576, 1577, 1576, 1577, 1576, - 1577, 1576, 1577, 1576, 1577, 1576, 1577, 1576, - 1577, 1576, 1577, 1576, 1577, 1576, 1577, 1576, - - 1577, 1576, 1577, 1393, 1393, 1393, 1576, 1577, - 1576, 1577, 1576, 1577, 1576, 1577, 1393, 1576, - 1577, 1576, 1577, 1576, 1577, 1576, 1577, 1576, - 1577, 1576, 1577, 1576, 1577, 1576, 1577, 1576, - - 1577, 1576, 1577, 1576, 1577, 1576, 1577, 1576, - 1577, 1576, 1577, 1576, 1577, 1576, 1577, 1576, - 1577, 1576, 1577, 1576, 1577, 1576, 1577, 1393, - 1393, 1393, 1393, 1393, 1591, 1393, 1592, 1393, - - 1393, 1393, 1393, 1593, 1594, 1593, 1393, 1393, - 1393, 1393, 1393, 1393, 1576, 1577, 1595, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1576, - 1577, 1576, 1577, 1393, 1393, 1393, 1393, 1393, - - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1462, 1462, - 1462, 1462, 1462, 1462, 1463, 1463, 1463, 1463, - 1463, 1463, 1463, 1543, 1543, 1543, 1543, 1543, - - 1463, 1463, 1463, 1463, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, - 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, - - 1573, 1573, 1573, 1573, 1573, 1543, 1543, 1573, - 1573, 1573, 1573, 1573, 1573, 1512, 1512, 1512, - 1543, 1543, 1543, 1543, 1543, 1509, 1509, 1509, - 1509, 1509, 1512, 1512, 1512, 1512, 1512, 1512, - - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 202, 202, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 202, 1596, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1597, 1597, 1597, 1512, 1512, 1512, - - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1598, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1514, 1597, 1597, 1597, 1597, 1597, - 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, - - 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, - 1597, 1597, 1597, 1597, 1471, 1471, 1471, 1471, - 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, - 1597, 1597, 1597, 1597, 1597, 1597, 1599, 1598, - - 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, - 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, - 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, - 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, - - 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, - 1600, 1600, 1600, 1600, 1600, 1600, 1600, 202, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1601, 202, - - 127, 123, 1602, 1603, 1604, 1605, 1606, 127, - 123, 127, 123, 127, 123, 1607, 1608, 1609, - 1610, 1235, 1237, 1238, 1611, 127, 123, 1611, - 1235, 1235, 1235, 1235, 1612, 1612, 1613, 1614, - - 1615, 1616, 1615, 1616, 1615, 1616, 1615, 1616, - 1615, 1616, 1615, 1616, 1615, 1616, 1615, 1616, - 1615, 1616, 1615, 1616, 1615, 1616, 1615, 1616, - 1615, 1616, 1615, 1616, 1615, 1616, 1615, 1616, - - 1615, 1616, 1615, 1616, 1617, 1618, 1618, 1618, - 1618, 1618, 1618, 1619, 1620, 1619, 1620, 1621, - 1621, 1621, 1622, 1623, 202, 202, 202, 202, - 202, 1624, 1625, 1625, 1625, 1626, 1624, 1625, - - 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, - 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, - 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, - 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, - - 1627, 1627, 1627, 1627, 1627, 1627, 202, 1628, - 202, 202, 202, 202, 202, 1628, 202, 202, - 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, - 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, - - 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, - 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, - 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, - 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, - - 1629, 1629, 1629, 1629, 1629, 1629, 1630, 1630, - 202, 202, 202, 202, 202, 202, 202, 1631, - 1632, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 1633, + 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, + 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, + 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, + 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 202, - 202, 202, 202, 202, 202, 202, 202, 202, + 1730, 1730, 1730, 1730, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, + 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, + + 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, + 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, + 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, + 1732, 1732, 1732, 1732, 1732, 1733, 1733, 203, - 871, 871, 871, 871, 871, 871, 871, 202, - 871, 871, 871, 871, 871, 871, 871, 202, - 871, 871, 871, 871, 871, 871, 871, 202, - 871, 871, 871, 871, 871, 871, 871, 202, - - 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, - - 1634, 1634, 1635, 1636, 1635, 1636, 1634, 1634, - 1634, 1635, 1636, 1634, 1635, 1636, 1397, 1397, - 1397, 1397, 1397, 1397, 1397, 1397, 1396, 1637, - 1638, 1639, 1640, 1641, 1635, 1636, 1641, 1641, - - 1642, 1643, 1579, 1580, 1579, 1580, 1579, 1580, - 1579, 1580, 1639, 1639, 1639, 1639, 1644, 1645, - 1639, 1646, 1647, 1648, 1648, 1647, 1647, 1647, - 1647, 1647, 1649, 1649, 1650, 1651, 1651, 1652, - - 1653, 1651, 1654, 1655, 1655, 1656, 1656, 1656, - 1656, 1656, 1657, 1658, 1657, 1658, 1657, 1659, - 1596, 1596, 1660, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, - 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, - 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, - 1661, 1661, 202, 1661, 1661, 1661, 1661, 1662, - - 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, - 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, - 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, - 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, - - 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, - 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, - 1661, 1661, 1661, 1662, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, - 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, - 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, - 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, - - 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, - 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, - 1662, 1662, 1662, 1662, 1662, 1662, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1663, 202, 202, 202, 202, - - 1351, 1664, 1665, 1666, 1502, 1667, 1668, 1669, - 16, 1388, 16, 1388, 16, 1388, 16, 1388, - 16, 1388, 1502, 1502, 16, 1388, 16, 1388, - 16, 1388, 16, 1388, 1670, 1366, 1671, 1671, - - 1502, 1669, 1669, 1669, 1669, 1669, 1669, 1669, - 1669, 1669, 1672, 1673, 174, 1674, 1675, 1675, - 1676, 1677, 1677, 1677, 1677, 1678, 1679, 1502, - 1680, 1680, 1680, 1681, 1682, 1683, 1663, 1502, - - 202, 1684, 1685, 1684, 1685, 1684, 1685, 1684, - 1685, 1684, 1685, 1685, 1686, 1685, 1686, 1685, - 1686, 1685, 1686, 1685, 1686, 1685, 1686, 1685, - 1686, 1685, 1686, 1685, 1686, 1685, 1686, 1685, - - 1686, 1685, 1686, 1684, 1685, 1686, 1685, 1686, - 1685, 1686, 1685, 1685, 1685, 1685, 1685, 1685, - 1686, 1686, 1685, 1686, 1686, 1685, 1686, 1686, - 1685, 1686, 1686, 1685, 1686, 1686, 1685, 1685, - - 1685, 1685, 1685, 1684, 1685, 1684, 1685, 1684, - 1685, 1685, 1685, 1685, 1685, 1685, 1684, 1685, - 1685, 1685, 1685, 1685, 1686, 1687, 1687, 202, - 202, 1688, 1688, 1689, 1689, 1690, 1691, 1692, - - 1693, 1694, 1695, 1694, 1695, 1694, 1695, 1694, - 1695, 1694, 1695, 1695, 1696, 1695, 1696, 1695, - 1696, 1695, 1696, 1695, 1696, 1695, 1696, 1695, - 1696, 1695, 1696, 1695, 1696, 1695, 1696, 1695, - - 1696, 1695, 1696, 1694, 1695, 1696, 1695, 1696, - 1695, 1696, 1695, 1695, 1695, 1695, 1695, 1695, - 1696, 1696, 1695, 1696, 1696, 1695, 1696, 1696, - 1695, 1696, 1696, 1695, 1696, 1696, 1695, 1695, - - 1695, 1695, 1695, 1694, 1695, 1694, 1695, 1694, - 1695, 1695, 1695, 1695, 1695, 1695, 1694, 1695, - 1695, 1695, 1695, 1695, 1696, 1694, 1694, 1696, - 1696, 1696, 1696, 1697, 1698, 1699, 1700, 1701, - - 202, 202, 202, 202, 202, 1702, 1702, 1702, - 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, - 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, - 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, - - 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, - 1702, 1702, 1702, 1702, 1702, 1703, 1704, 1705, - 202, 1706, 1706, 1706, 1706, 1706, 1706, 1706, - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, - - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, - - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 202, - 1707, 1707, 1708, 1708, 1708, 1708, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - - 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, - 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, - 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, - 1711, 1711, 1711, 1712, 1712, 1712, 1712, 1712, - - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - - 1546, 1546, 1546, 1546, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, - - 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, - 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, - 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, - 1714, 1714, 1714, 1714, 1714, 1715, 1715, 202, - - 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, - 1708, 1708, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - - 1709, 1709, 1709, 1709, 1716, 1716, 1716, 1716, - 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, - 1718, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - - 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, - 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, - 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, - 1714, 1714, 1714, 1714, 1715, 1715, 1720, 1707, - - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1718, 1718, 1718, 1718, - 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - - 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1722, - - 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - - 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1718, - 1718, 1718, 1718, 1709, 1709, 1709, 1709, 1709, - - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1718, 1718, - - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1718, - - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, - - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, - 1723, 1723, 1723, 1723, 1723, 1723, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, + 1724, 1724, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1725, 1725, 1725, 1725, 1734, 1734, 1734, 1734, + 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, + 1736, 1737, 1737, 1737, 1737, 1737, 1737, 1737, + 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, + + 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, + 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, + 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, + 1732, 1732, 1732, 1732, 1733, 1733, 1738, 1723, + + 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, + 1724, 1724, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1739, + 1725, 1739, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1737, 1737, 1737, 1737, 1737, 1737, 1737, + 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1736, 1736, 1736, 1736, + 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, + 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, + + 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, + 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, + 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, + 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1741, + + 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, + 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, + 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, + 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, + + 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, + 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, + 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, - 1725, 1725, 1725, 1725, 1725, 1725, 1726, 1726, - 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, - 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, - 1726, 1726, 1726, 1726, 1727, 1727, 1727, 1727, - - 1727, 1727, 1727, 1727, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1729, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1732, 1732, 1732, 1732, 1732, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1733, 1733, 1733, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1736, + 1736, 1736, 1736, 1725, 1725, 1725, 1725, 1725, - 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, - 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, - 1734, 1734, 1734, 1734, 1734, 1735, 1734, 1734, - 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, - 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, - 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, - 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, - 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1736, 1736, - 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, - 1734, 1734, 1734, 1734, 1734, 202, 202, 202, - 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, - 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, - - 1736, 1736, 1737, 1737, 1736, 1736, 1736, 1736, - 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, - 1736, 1736, 1736, 1736, 1737, 1736, 1736, 1736, - 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, - - 1736, 1737, 1736, 1736, 1736, 1737, 1736, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, - 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, - - 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, - 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, - 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, - 1739, 1739, 1739, 1739, 1739, 1739, 1740, 1741, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1736, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, @@ -2723,179 +2673,224 @@ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, - 1742, 1742, 1742, 1742, 1743, 1744, 1745, 1746, - 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, + 1742, 1742, 1742, 1742, 1742, 1742, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, - 1755, 1756, 1742, 1742, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 281, 282, 281, 282, 281, 282, 281, 282, - 281, 282, 281, 282, 281, 282, 281, 282, - 281, 282, 281, 282, 281, 282, 281, 282, - 281, 282, 281, 282, 281, 282, 281, 282, - - 285, 286, 281, 282, 281, 282, 281, 282, - 281, 282, 281, 282, 281, 282, 1757, 267, - 1758, 1758, 1758, 1759, 1760, 1760, 1760, 1760, - 1760, 1760, 1760, 1760, 267, 267, 1759, 1761, - - 281, 282, 281, 282, 281, 282, 281, 282, - 281, 282, 281, 282, 281, 282, 281, 282, - 281, 282, 281, 282, 281, 282, 281, 282, - 287, 288, 287, 288, 1762, 1762, 1763, 1760, - - 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, - 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, - 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, - 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, - - 1764, 1764, 1764, 1764, 1764, 1764, 1765, 1765, - 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, - 1766, 1766, 1767, 1768, 1769, 1769, 1769, 1768, - 202, 202, 202, 202, 202, 202, 202, 202, - - 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, - 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, - 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1772, - 1772, 1772, 1772, 1645, 1645, 1645, 1645, 1645, - - 1773, 1773, 1237, 1238, 1237, 1238, 1237, 1238, - 1237, 1238, 1237, 1238, 1237, 1238, 1237, 1238, - 1235, 1235, 1237, 1238, 1237, 1238, 1237, 1238, - 1237, 1238, 1237, 1238, 1237, 1238, 1237, 1238, - - 1237, 1238, 1237, 1238, 1237, 1238, 1237, 1238, - 1237, 1238, 1237, 1238, 1237, 1238, 1237, 1238, - 1237, 1238, 1237, 1238, 1237, 1238, 1237, 1238, - 1237, 1238, 1237, 1238, 1237, 1238, 1237, 1238, - - 1237, 1238, 1237, 1238, 1237, 1238, 1237, 1238, - 1237, 1238, 1237, 1238, 1237, 1238, 1237, 1238, - 1612, 1235, 1235, 1235, 1235, 1235, 1235, 1235, - 1235, 1237, 1238, 1237, 1238, 1774, 1237, 1238, - - 1237, 1238, 1237, 1238, 1237, 1238, 1237, 1238, - 1645, 1775, 1775, 1237, 1238, 1776, 1777, 1778, - 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, - 1785, 1786, 1785, 1786, 1785, 1786, 1785, 1786, - - 1779, 1780, 1779, 1780, 1779, 1780, 1779, 1780, - 1779, 1780, 1787, 1788, 1789, 1790, 1791, 1792, - 1793, 1794, 1795, 1796, 1797, 1798, 1797, 1798, - 1799, 1800, 1801, 1802, 1801, 1802, 1801, 1802, - - 202, 202, 1801, 1802, 1803, 1804, 1805, 1806, - 1807, 1806, 1807, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 1806, 1807, 1808, - 1809, 1809, 1777, 1810, 1810, 1810, 1810, 1810, - - 1811, 1811, 1812, 1811, 1811, 1811, 1813, 1811, - 1811, 1811, 1811, 1812, 1811, 1811, 1811, 1811, - 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, - 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, - - 1811, 1811, 1811, 1814, 1814, 1812, 1812, 1814, - 1815, 1815, 1815, 1815, 1816, 202, 202, 202, - 1717, 1717, 1717, 1717, 1717, 1717, 813, 813, - 1428, 1817, 202, 202, 202, 202, 202, 202, - - 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, - 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, - 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, - 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, - - 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, - 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, - 1818, 1818, 1819, 1820, 1821, 1821, 1822, 1822, - 202, 202, 202, 202, 202, 202, 202, 202, - - 1823, 1823, 1824, 1824, 1824, 1824, 1824, 1824, - 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, - 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, - 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, - - 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, - 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, - 1824, 1824, 1824, 1824, 1823, 1823, 1823, 1823, - 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, - - 1823, 1823, 1823, 1823, 1825, 1826, 202, 202, - 202, 202, 202, 202, 202, 202, 1827, 1827, - 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, - 1836, 1837, 202, 202, 202, 202, 202, 202, - - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 508, 508, 508, 508, 508, 508, - 1839, 1839, 1839, 508, 1840, 1841, 1842, 1843, - - 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, - 1852, 1853, 1854, 1854, 1854, 1854, 1854, 1854, - 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, - 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, - - 1854, 1854, 1854, 1854, 1854, 1854, 1855, 1855, - 1855, 1855, 1855, 1856, 1856, 1856, 1857, 1858, - 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, - 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, - - 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1860, - 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, - 1860, 1860, 1861, 1862, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 1863, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + + 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, + 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, + 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, + 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, + + 1744, 1744, 1744, 1744, 1744, 1744, 1745, 1745, + 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, + 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, + 1745, 1745, 1745, 1745, 1746, 1746, 1746, 1746, + + 1746, 1746, 1746, 1746, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1748, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1751, 1751, 1751, 1751, 1751, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1752, 1752, 1752, + + 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, + 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, + 1753, 1753, 1753, 1753, 1753, 1754, 1753, 1753, + 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, + + 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, + 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, + 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, + 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, + + 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, + 1753, 1753, 1753, 1753, 1753, 203, 203, 203, + 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, + 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, + + 1755, 1755, 1756, 1756, 1755, 1755, 1755, 1755, + 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, + 1755, 1755, 1755, 1755, 1756, 1755, 1755, 1755, + 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, + + 1755, 1756, 1755, 1755, 1755, 1756, 1755, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1758, 1758, 1758, 1758, 1758, 1758, 1759, 1760, + + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1762, 1763, 1764, 1765, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + + 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, + 1774, 1775, 1761, 1761, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 282, 283, 282, 283, 282, 283, 282, 283, + 282, 283, 282, 283, 282, 283, 282, 283, + 282, 283, 282, 283, 282, 283, 282, 283, + 282, 283, 282, 283, 282, 283, 282, 283, + + 286, 287, 282, 283, 282, 283, 282, 283, + 282, 283, 282, 283, 282, 283, 1776, 268, + 1777, 1777, 1777, 1778, 1779, 1779, 1779, 1779, + 1779, 1779, 1779, 1779, 268, 268, 1778, 1780, + + 282, 283, 282, 283, 282, 283, 282, 283, + 282, 283, 282, 283, 282, 283, 282, 283, + 282, 283, 282, 283, 282, 283, 282, 283, + 288, 289, 288, 289, 1781, 1781, 1782, 1779, + + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, + 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, - 863, 863, 863, 863, 863, 863, 863, 863, - 863, 863, 863, 863, 863, 863, 863, 863, - 863, 863, 863, 863, 863, 863, 863, 863, - 863, 863, 863, 863, 863, 202, 202, 202, + 1783, 1783, 1783, 1783, 1783, 1783, 1784, 1784, + 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, + 1785, 1785, 1786, 1787, 1788, 1788, 1788, 1787, + 203, 203, 203, 203, 203, 203, 203, 203, + + 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1791, + 1791, 1791, 1791, 1660, 1660, 1660, 1660, 1660, + + 1792, 1792, 1238, 1239, 1238, 1239, 1238, 1239, + 1238, 1239, 1238, 1239, 1238, 1239, 1238, 1239, + 1236, 1236, 1238, 1239, 1238, 1239, 1238, 1239, + 1238, 1239, 1238, 1239, 1238, 1239, 1238, 1239, + + 1238, 1239, 1238, 1239, 1238, 1239, 1238, 1239, + 1238, 1239, 1238, 1239, 1238, 1239, 1238, 1239, + 1238, 1239, 1238, 1239, 1238, 1239, 1238, 1239, + 1238, 1239, 1238, 1239, 1238, 1239, 1238, 1239, + + 1238, 1239, 1238, 1239, 1238, 1239, 1238, 1239, + 1238, 1239, 1238, 1239, 1238, 1239, 1238, 1239, + 1627, 1236, 1236, 1236, 1236, 1236, 1236, 1236, + 1236, 1238, 1239, 1238, 1239, 1793, 1238, 1239, + + 1238, 1239, 1238, 1239, 1238, 1239, 1238, 1239, + 1660, 1794, 1794, 1238, 1239, 1795, 1796, 1797, + 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, + 1804, 1805, 1804, 1805, 1804, 1805, 1804, 1805, + + 1798, 1799, 1798, 1799, 1798, 1799, 1798, 1799, + 1798, 1799, 1806, 1807, 1808, 1809, 1810, 1811, + 1812, 1813, 1814, 1815, 1816, 1817, 1816, 1817, + 1818, 1819, 1820, 1821, 1820, 1821, 1820, 1821, + + 203, 203, 1820, 1821, 1822, 1823, 1824, 1825, + 1826, 1825, 1826, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 1825, 1826, 1827, + 1828, 1828, 1796, 1829, 1829, 1829, 1829, 1829, + + 1830, 1830, 1831, 1830, 1830, 1830, 1832, 1830, + 1830, 1830, 1830, 1831, 1830, 1830, 1830, 1830, + 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, + 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, + + 1830, 1830, 1830, 1833, 1833, 1831, 1831, 1833, + 1834, 1834, 1834, 1834, 1835, 203, 203, 203, + 1735, 1735, 1735, 1735, 1735, 1735, 814, 814, + 1430, 1836, 203, 203, 203, 203, 203, 203, + + 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, + 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, + 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, + 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, + + 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, + 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, + 1837, 1837, 1838, 1839, 1840, 1840, 1841, 1841, + 203, 203, 203, 203, 203, 203, 203, 203, + + 1842, 1842, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1842, 1842, 1842, 1842, + 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, + + 1842, 1842, 1842, 1842, 1844, 1845, 203, 203, + 203, 203, 203, 203, 203, 203, 1846, 1846, + 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, + 1855, 1856, 203, 203, 203, 203, 203, 203, + + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 509, 509, 509, 509, 509, 509, + 1858, 1858, 1858, 509, 1859, 1860, 1861, 1862, + + 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, + 1871, 1872, 1873, 1873, 1873, 1873, 1873, 1873, + 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, + 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, + + 1873, 1873, 1873, 1873, 1873, 1873, 1874, 1874, + 1874, 1874, 1874, 1875, 1875, 1875, 1876, 1877, + 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, + 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, + + 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1879, + 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, + 1879, 1879, 1880, 1881, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 1882, + + 864, 864, 864, 864, 864, 864, 864, 864, + 864, 864, 864, 864, 864, 864, 864, 864, + 864, 864, 864, 864, 864, 864, 864, 864, + 864, 864, 864, 864, 864, 203, 203, 203, - 1864, 1864, 1864, 1865, 1866, 1866, 1866, 1866, - 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, - 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, - 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, - - 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, - 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, - 1866, 1866, 1866, 1867, 1865, 1865, 1864, 1864, - 1864, 1864, 1865, 1865, 1864, 1864, 1865, 1865, - - 1868, 1869, 1869, 1869, 1869, 1869, 1869, 1870, - 1871, 1871, 1869, 1869, 1869, 1869, 202, 1872, - 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, - 1881, 1882, 202, 202, 202, 202, 1869, 1869, - - 1883, 1883, 1883, 1883, 1883, 1884, 1885, 1883, - 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, - 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, - 1894, 1895, 1883, 1883, 1883, 1883, 1883, 202, - - 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, - 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, - 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, - 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, - - 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, - 1896, 1897, 1897, 1897, 1897, 1897, 1897, 1898, - 1898, 1897, 1897, 1898, 1898, 1897, 1897, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 1896, 1896, 1896, 1897, 1896, 1896, 1896, 1896, - 1896, 1896, 1896, 1896, 1897, 1898, 202, 202, - 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, - 1907, 1908, 202, 202, 1909, 1910, 1910, 1910, - - 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, - 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, - 1912, 1911, 1911, 1911, 1911, 1911, 1911, 1913, - 1913, 1913, 1911, 851, 1884, 1914, 1883, 1883, + 1883, 1883, 1883, 1884, 1885, 1885, 1885, 1885, + 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, + 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, + 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, + + 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, + 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, + 1885, 1885, 1885, 1886, 1884, 1884, 1883, 1883, + 1883, 1883, 1884, 1884, 1883, 1883, 1884, 1884, + + 1887, 1888, 1888, 1888, 1888, 1888, 1888, 1889, + 1890, 1890, 1888, 1888, 1888, 1888, 203, 1891, + 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, + 1900, 1901, 203, 203, 203, 203, 1888, 1888, + + 1902, 1902, 1902, 1902, 1902, 1903, 1904, 1902, + 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, + 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, + 1913, 1914, 1902, 1902, 1902, 1902, 1902, 203, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, @@ -2903,1961 +2898,1738 @@ 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, - 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, - 1916, 1915, 1916, 1916, 1917, 1915, 1915, 1916, - 1916, 1915, 1915, 1915, 1915, 1915, 1916, 1916, - - 1915, 1916, 1915, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 1915, 1915, 1918, 1919, 1919, - - 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, - 1920, 1920, 1920, 1921, 1922, 1922, 1921, 1921, - 1923, 1923, 1920, 1924, 1924, 1921, 1925, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 1926, 1926, 1926, 1926, 1926, 1926, 202, - 202, 1926, 1926, 1926, 1926, 1926, 1926, 202, - 202, 1926, 1926, 1926, 1926, 1926, 1926, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 1926, 1926, 1926, 1926, 1926, 1926, 1926, 202, - 1926, 1926, 1926, 1926, 1926, 1926, 1926, 202, - 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, - 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, - - 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, - 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, - 1784, 1784, 1784, 1927, 1784, 1784, 1784, 1784, - 1784, 1784, 1784, 1928, 1929, 1929, 1929, 1929, - - 1930, 1930, 1930, 1930, 1784, 1931, 1932, 1932, - 1933, 1934, 1935, 1935, 202, 202, 202, 202, - 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, - 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, - - 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, - 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, - 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, - 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, - - 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, - 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, - - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - - 2016, 2016, 2016, 2017, 2017, 2018, 2017, 2017, - 2018, 2017, 2017, 2019, 2017, 2020, 202, 202, - 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, - 2029, 2030, 202, 202, 202, 202, 202, 202, - - 2031, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2031, 2032, 2032, 2032, - - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2031, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2031, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2031, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2031, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2031, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - - 2032, 2032, 2032, 2032, 2031, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - - 2032, 2032, 2032, 2032, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 866, 866, 866, 866, 866, 866, 866, 866, - 866, 866, 866, 866, 866, 866, 866, 866, - - 866, 866, 866, 866, 866, 866, 866, 202, - 202, 202, 202, 869, 869, 869, 869, 869, - 869, 869, 869, 869, 869, 869, 869, 869, - 869, 869, 869, 869, 869, 869, 869, 869, - - 869, 869, 869, 869, 869, 869, 869, 869, - 869, 869, 869, 869, 869, 869, 869, 869, - 869, 869, 869, 869, 869, 869, 869, 869, - 869, 869, 869, 869, 202, 202, 202, 202, - - 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, - 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, - 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, - 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, - - 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, - 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, - 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, - 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, + 1915, 1916, 1916, 1916, 1916, 1916, 1916, 1917, + 1917, 1916, 1916, 1917, 1917, 1916, 1916, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 1915, 1915, 1915, 1916, 1915, 1915, 1915, 1915, + 1915, 1915, 1915, 1915, 1916, 1917, 203, 203, + 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, + 1926, 1927, 203, 203, 1928, 1929, 1929, 1929, + + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1931, 1930, 1930, 1930, 1930, 1930, 1930, 1932, + 1932, 1932, 1930, 852, 1903, 1933, 1902, 1902, + + 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, + 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, + 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, + 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, + + 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, + 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, + 1935, 1934, 1935, 1935, 1936, 1934, 1934, 1935, + 1935, 1934, 1934, 1934, 1934, 1934, 1935, 1935, + + 1934, 1935, 1934, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 1934, 1934, 1937, 1938, 1938, + + 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, + 1939, 1939, 1939, 1940, 1941, 1941, 1940, 1940, + 1942, 1942, 1939, 1943, 1943, 1940, 1944, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 203, 1945, 1945, 1945, 1945, 1945, 1945, 203, + 203, 1945, 1945, 1945, 1945, 1945, 1945, 203, + 203, 1945, 1945, 1945, 1945, 1945, 1945, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 1945, 1945, 1945, 1945, 1945, 1945, 1945, 203, + 1945, 1945, 1945, 1945, 1945, 1945, 1945, 203, + 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, + 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, + + 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, + 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, + 1803, 1803, 1803, 1946, 1803, 1803, 1803, 1803, + 1803, 1803, 1803, 1947, 1948, 1948, 1948, 1948, + + 1949, 1949, 1949, 1949, 1803, 1950, 1951, 1951, + 1952, 1953, 1954, 1954, 203, 203, 203, 203, + 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, + 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, + + 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, + 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, + 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, + 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, + + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, + 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, + 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, + 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, - 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, - 2035, 2035, 2035, 2035, 2035, 2035, 1725, 1725, - 2035, 1725, 2035, 1725, 1725, 2035, 2035, 2035, - 2035, 2035, 2035, 2035, 2035, 2035, 2035, 1725, - - 2035, 1725, 2035, 1725, 1725, 2035, 2035, 1725, - 1725, 1725, 2035, 2035, 2035, 2035, 2036, 2036, - 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, - 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, - - 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, - 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, - 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, - 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, - - 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, - 2037, 2037, 2037, 2038, 2038, 2038, 1733, 1733, - 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - - 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - - 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - 2039, 2039, 1733, 1733, 1733, 1733, 1733, 1733, - - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - - 2040, 2041, 2042, 2043, 2044, 2045, 2045, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 2046, 2047, 2048, 2049, 2050, - 202, 202, 202, 202, 202, 2051, 2052, 2053, + 2035, 2035, 2035, 2036, 2036, 2037, 2036, 2036, + 2037, 2036, 2036, 2038, 2036, 2039, 203, 203, + 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, + 2048, 2049, 203, 203, 203, 203, 203, 203, + + 2050, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2050, 2051, 2051, 2051, + + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2050, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2050, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2050, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2050, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2050, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + + 2051, 2051, 2051, 2051, 2050, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, - 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, - 2054, 2055, 2053, 2053, 2053, 2053, 2053, 2053, - 2053, 2053, 2053, 2053, 2053, 2053, 2053, 301, - 2053, 2053, 2053, 2053, 2053, 301, 2053, 301, + 2051, 2051, 2051, 2051, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, - 2053, 2053, 301, 2053, 2053, 301, 2053, 2053, - 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2054, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 867, 867, 867, 867, 867, 867, 867, 203, + 203, 203, 203, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 870, 870, 870, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 870, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 203, 203, 203, 203, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2057, 2057, 2057, 2057, 2057, 2057, - 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, + 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, + 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, + 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, + + 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, + 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, + 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, + 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, - 2057, 2057, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, + 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, + 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, + 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2056, 2056, 1671, 1366, + 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, + 2054, 2054, 2054, 2054, 2054, 2054, 1744, 1744, + 2054, 1744, 2054, 1744, 1744, 2054, 2054, 2054, + 2054, 2054, 2054, 2054, 2054, 2054, 2054, 1744, - 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, + 2054, 1744, 2054, 1744, 1744, 2054, 2054, 1744, + 1744, 1744, 2054, 2054, 2054, 2054, 2055, 2055, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 348, 348, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 348, 348, 348, 348, 348, 348, 348, 348, + 2056, 2056, 2056, 2057, 2057, 2057, 1752, 1752, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2059, 340, 348, 348, - - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, - 2061, 2062, 2063, 2064, 2065, 2066, 2066, 2067, - 2068, 2069, 202, 202, 202, 202, 202, 202, - - 173, 173, 173, 173, 1219, 1219, 1219, 1107, - 1107, 1107, 1107, 1107, 1107, 1107, 1763, 1763, - 2070, 2071, 2071, 2072, 2072, 2073, 2074, 2073, - 2074, 2073, 2074, 2073, 2074, 2073, 2074, 2073, - - 2074, 2073, 2074, 2073, 2074, 1683, 1683, 2075, - 2076, 2070, 2070, 2070, 2070, 2072, 2072, 2072, - 2077, 2078, 2079, 202, 2080, 2081, 2082, 2082, - 2071, 1419, 1420, 1419, 1420, 1419, 1420, 2083, - - 2070, 2070, 2084, 2085, 2086, 2087, 2088, 202, - 2070, 1422, 1380, 2070, 202, 202, 202, 202, - 2056, 2056, 2056, 2089, 2056, 348, 2056, 2056, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, + 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2056, 348, 348, 2090, + 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, + 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, + 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, + 2058, 2058, 1752, 1752, 1752, 1752, 1752, 1752, - 202, 2082, 2070, 2083, 1422, 1380, 2070, 2091, - 1419, 1420, 2070, 2084, 2077, 2085, 2079, 2092, - 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, - 2101, 2102, 2081, 2080, 2103, 2088, 2104, 2082, - - 2070, 2105, 2105, 2105, 2105, 2105, 2105, 2105, - 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, - 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105, - 2105, 2105, 2105, 2106, 2070, 2107, 2108, 2072, - - 2108, 2109, 2109, 2109, 2109, 2109, 2109, 2109, - 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, - 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, - 2109, 2109, 2109, 2106, 2088, 2107, 2088, 2110, - - 2111, 2112, 1419, 1420, 2113, 2114, 2115, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2117, 2115, 2115, 2115, 2115, 2115, 2115, 2115, - 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, - - 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, - 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, - 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, - 2115, 2115, 2115, 2115, 2115, 2115, 2118, 2118, - - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 202, - - 202, 202, 1706, 1706, 1706, 1706, 1706, 1706, - 202, 202, 1706, 1706, 1706, 1706, 1706, 1706, - 202, 202, 1706, 1706, 1706, 1706, 1706, 1706, - 202, 202, 1706, 1706, 1706, 202, 202, 202, - - 2119, 1422, 2088, 2108, 1679, 1422, 1422, 202, - 1443, 1418, 1418, 1418, 1418, 1443, 1443, 202, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 2120, 2120, 2120, 2121, 51, 2122, 2122, - - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, - 2123, 2123, 2123, 2123, 202, 2123, 2123, 2123, - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, - - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 202, - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, - 2123, 2123, 2123, 202, 2123, 2123, 202, 2123, - - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, - 2123, 2123, 2123, 2123, 2123, 2123, 202, 202, - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, - 2123, 2123, 2123, 2123, 2123, 2123, 202, 202, - - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, - - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, - 2123, 2123, 2123, 202, 202, 202, 202, 202, - - 2124, 2125, 2124, 202, 202, 202, 202, 2126, - 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, - 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, - 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, - - 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, - 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, - 2126, 2126, 2126, 2126, 202, 202, 202, 2127, - 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, - - 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, - 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, - 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, - 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, - - 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, - 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, - 2128, 2128, 2128, 2128, 2128, 2129, 2129, 2129, - 2129, 2130, 2130, 2130, 2130, 2130, 2130, 2130, - - 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, - 2130, 2130, 2129, 2131, 2132, 2133, 2133, 202, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1596, 202, 202, 202, - - 2132, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1222, 202, 202, - - 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, - 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, - 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134, - 2134, 2134, 2134, 2134, 2134, 202, 202, 202, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + + 2059, 2060, 2061, 2062, 2063, 2064, 2064, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 2065, 2066, 2067, 2068, 2069, + 203, 203, 203, 203, 203, 2070, 2071, 2072, + + 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, + 2073, 2074, 2072, 2072, 2072, 2072, 2072, 2072, + 2072, 2072, 2072, 2072, 2072, 2072, 2072, 302, + 2072, 2072, 2072, 2072, 2072, 302, 2072, 302, + + 2072, 2072, 302, 2072, 2072, 302, 2072, 2072, + 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2073, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2076, 2076, 2076, 2076, 2076, 2076, + 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, + + 2076, 2076, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 1687, 1367, + + 349, 349, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 349, 349, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 349, 349, 349, 349, 349, 349, 349, 349, + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2078, 341, 349, 349, + + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + 2080, 2081, 2082, 2083, 2084, 2085, 2085, 2086, + 2087, 2088, 203, 203, 203, 203, 203, 203, + + 174, 174, 174, 174, 1220, 1220, 1220, 1108, + 1108, 1108, 1108, 1108, 1108, 1108, 1782, 1782, + 2089, 2090, 2090, 2091, 2091, 2092, 2093, 2092, + 2093, 2092, 2093, 2092, 2093, 2092, 2093, 2092, + + 2093, 2092, 2093, 2092, 2093, 2094, 2094, 2095, + 2096, 2089, 2089, 2089, 2089, 2091, 2091, 2091, + 2097, 2098, 2099, 203, 2100, 2101, 2102, 2102, + 2090, 1421, 1422, 1421, 1422, 1421, 1422, 2103, + + 2089, 2089, 2104, 2105, 2106, 2107, 2108, 203, + 2089, 1424, 1381, 2089, 203, 203, 203, 203, + 2075, 2075, 2075, 2109, 2075, 349, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 349, 349, 2110, + + 203, 2102, 2089, 2103, 1424, 1381, 2089, 2111, + 1421, 1422, 2089, 2104, 2097, 2105, 2099, 2112, + 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, + 2121, 2122, 2101, 2100, 2123, 2108, 2124, 2102, + + 2089, 2125, 2125, 2125, 2125, 2125, 2125, 2125, + 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, + 2125, 2125, 2125, 2125, 2125, 2125, 2125, 2125, + 2125, 2125, 2125, 2126, 2089, 2127, 2128, 2091, + + 2128, 2129, 2129, 2129, 2129, 2129, 2129, 2129, + 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, + 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129, + 2129, 2129, 2129, 2126, 2108, 2127, 2108, 2130, + 2131, 2132, 1421, 1422, 2133, 2134, 2135, 2136, + 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, + 2137, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2138, 2138, - 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, - 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, - 2135, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 203, + + 203, 203, 1722, 1722, 1722, 1722, 1722, 1722, + 203, 203, 1722, 1722, 1722, 1722, 1722, 1722, + 203, 203, 1722, 1722, 1722, 1722, 1722, 1722, + 203, 203, 1722, 1722, 1722, 203, 203, 203, + + 2139, 1424, 2108, 2128, 1695, 1424, 1424, 203, + 1445, 1420, 1420, 1420, 1420, 1445, 1445, 203, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 2140, 2140, 2140, 2141, 51, 2142, 2142, - 1107, 2136, 2136, 2136, 2136, 2136, 2136, 2136, - 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, - 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, - 2136, 2136, 2136, 2136, 202, 202, 202, 202, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 2143, 203, 2143, 2143, 2143, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, - 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, - 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, - 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, - 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2138, - - 2139, 2139, 2139, 2139, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 2140, 2140, 2140, - 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, - 2141, 2141, 2141, 2141, 2141, 2141, 2141, 2141, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 203, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 203, 2143, 2143, 203, 2143, - 2141, 2142, 2141, 2141, 2141, 2141, 2141, 2141, - 2141, 2141, 2142, 202, 202, 202, 202, 202, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 2143, 2143, 2143, 203, 203, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 2143, 2143, 2143, 203, 203, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, - 2143, 2143, 2143, 2143, 2143, 2143, 2144, 2144, - 2144, 2144, 2144, 202, 202, 202, 202, 202, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 202, 2146, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 203, 203, 203, 203, 203, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, + 2144, 2145, 2144, 203, 203, 203, 203, 2146, + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, + + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, + 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, + 2146, 2146, 2146, 2146, 203, 203, 203, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 202, 202, 202, 202, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2148, 2149, 2149, 2149, 2149, 2149, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, + 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, + 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, + 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, + 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, + + 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, + 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, + 2148, 2148, 2148, 2148, 2148, 2149, 2149, 2149, + 2149, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, - 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, - 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, - 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, + 2150, 2150, 2149, 2151, 2152, 2153, 2153, 203, + 1610, 1610, 1610, 1610, 1610, 1610, 1610, 1610, + 1610, 1610, 1610, 1610, 1611, 203, 203, 203, + + 2152, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, - 2150, 2150, 2150, 2150, 2150, 2150, 2151, 2151, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, + 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2153, 2153, - 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, - 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, + 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, + 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, + 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, + 1468, 1468, 1468, 1468, 1468, 1223, 203, 203, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, - 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, + 2154, 2154, 2154, 2154, 2154, 203, 203, 203, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 202, 202, + 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, - 2164, 2165, 202, 202, 202, 202, 202, 202, - 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, - 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, - - 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, - 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, - 2166, 2166, 2166, 2166, 202, 202, 202, 202, - 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, + 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, + 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, + 2155, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 1108, 2156, 2156, 2156, 2156, 2156, 2156, 2156, + 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, + 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, + 2156, 2156, 2156, 2156, 203, 203, 203, 203, + + 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, + 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, + 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, + 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2158, + + 2159, 2159, 2159, 2159, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 2160, 2160, 2160, + 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, + 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, + + 2161, 2162, 2161, 2161, 2161, 2161, 2161, 2161, + 2161, 2161, 2162, 203, 203, 203, 203, 203, + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2163, 2163, 2163, 2163, 2163, 2164, 2164, + 2164, 2164, 2164, 203, 203, 203, 203, 203, + + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 203, 2166, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, - 2167, 2167, 2167, 2167, 202, 202, 202, 202, + 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, + + 2167, 2167, 2167, 2167, 203, 203, 203, 203, + 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, + 2168, 2169, 2169, 2169, 2169, 2169, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, - 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, - 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, - 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, - 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, - - 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, - 202, 202, 202, 202, 202, 202, 202, 202, - 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, - 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, - - 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, - 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, - 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, - 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, - - 2169, 2169, 2169, 2169, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 2170, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, + 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, + 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, + 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, + 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, - 2172, 2172, 2172, 2172, 2172, 2172, 301, 301, - 2172, 301, 2172, 2172, 2172, 2172, 2172, 2172, + 2170, 2170, 2170, 2170, 2170, 2170, 2171, 2171, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, - 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, + 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, - 2172, 2172, 2172, 2172, 2172, 2172, 301, 2172, - 2172, 301, 301, 301, 2172, 301, 301, 2172, + 2172, 2172, 2172, 2172, 2172, 2172, 2173, 2173, + 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, + 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, + + 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, + 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, + 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, + 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, - 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, - 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173, - 2173, 2173, 2173, 2173, 2173, 2173, 301, 2174, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, + 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, + 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, + 2175, 2175, 2175, 2175, 2175, 2175, 203, 203, - 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2177, - 2177, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - - 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, - 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, - 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, - 2179, 2179, 2179, 2179, 2179, 2179, 2179, 301, - - 301, 301, 301, 301, 301, 301, 301, 2180, - 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - - 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, - 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, - 2181, 2181, 2181, 301, 2181, 2181, 301, 301, - 301, 301, 301, 2182, 2182, 2182, 2182, 2182, - - 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, - 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, - 2183, 2183, 2183, 2183, 2183, 2183, 2184, 2184, - 2184, 2184, 2185, 2185, 301, 301, 301, 2186, + 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, + 2184, 2185, 203, 203, 203, 203, 203, 203, + 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, + 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, + + 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, + 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, + 2186, 2186, 2186, 2186, 203, 203, 203, 203, + 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, - 2187, 2187, 301, 301, 301, 301, 301, 2188, + 2187, 2187, 2187, 2187, 203, 203, 203, 203, + + 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, + 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, + 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, + 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, + + 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, + 203, 203, 203, 203, 203, 203, 203, 203, + 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, + 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 301, 301, 301, 301, 2191, 2191, 2190, 2190, + 2189, 2189, 2189, 2189, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 2190, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, - 301, 301, 2191, 2191, 2191, 2191, 2191, 2191, + 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, + 2191, 2191, 2191, 2191, 2191, 2191, 2191, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, + 2191, 2191, 2191, 2191, 2191, 2191, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, - 2192, 2193, 2193, 2193, 301, 2193, 2193, 301, - 301, 301, 301, 301, 2193, 2194, 2193, 2195, - 2192, 2192, 2192, 2192, 301, 2192, 2192, 2192, - 301, 2192, 2192, 2192, 2192, 2192, 2192, 2192, + 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2192, 2192, 2192, 2192, 2192, 2192, 302, 302, + 2192, 302, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, - 2192, 2192, 2192, 2192, 2196, 2196, 301, 301, - 2195, 2197, 2194, 301, 301, 301, 301, 2198, - 2199, 2200, 2201, 2202, 2203, 2203, 2203, 2203, - 2204, 301, 301, 301, 301, 301, 301, 301, - 2205, 2205, 2205, 2205, 2205, 2205, 2206, 2206, - 2207, 301, 301, 301, 301, 301, 301, 301, - - 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, - 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, - 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, - 2208, 2208, 2208, 2208, 2208, 2209, 2209, 2210, + 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, + 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, + 2192, 2192, 2192, 2192, 2192, 2192, 302, 2192, + 2192, 302, 302, 302, 2192, 302, 302, 2192, + + 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, + 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, + 2193, 2193, 2193, 2193, 2193, 2193, 302, 2194, + 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, + + 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, + 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, + 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2197, + 2197, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + + 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, + 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, + 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, + 2199, 2199, 2199, 2199, 2199, 2199, 2199, 302, + + 302, 302, 302, 302, 302, 302, 302, 2200, + 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, + 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, + 2201, 2201, 2201, 302, 2201, 2201, 302, 302, + 302, 302, 302, 2202, 2202, 2202, 2202, 2202, + + 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, + 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, + 2203, 2203, 2203, 2203, 2203, 2203, 2204, 2204, + 2204, 2204, 2205, 2205, 302, 302, 302, 2206, + + 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, + 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, + 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, + 2207, 2207, 302, 302, 302, 302, 302, 2208, + + 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, + 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, + 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, + 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, + + 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, + 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, + 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, + 302, 302, 302, 302, 2211, 2211, 2210, 2210, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, + 302, 302, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, - 2211, 2211, 2211, 2211, 2211, 2212, 2212, 2212, - 2213, 2213, 2213, 2213, 2213, 2214, 2215, 2214, - 2216, 2214, 2214, 2215, 2215, 2217, 2214, 2214, - 2214, 2214, 2214, 2213, 2213, 2213, 2213, 2217, - 2213, 2213, 2213, 2213, 2213, 2214, 2213, 2213, - - 2213, 2214, 2215, 2215, 2214, 2218, 2219, 301, - 301, 301, 301, 2220, 2220, 2220, 2220, 2221, - 2222, 2222, 2222, 2222, 2222, 2222, 2223, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - - 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, - 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, - 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, - 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, - - 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, - 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224, - 2224, 2224, 2224, 2224, 2224, 2224, 301, 301, - 301, 2225, 2225, 2225, 2225, 2225, 2225, 2225, - - 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, - 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, - 2226, 2226, 2226, 2226, 2226, 2226, 301, 301, - 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, + 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, + 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, + 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, + 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, + + 2212, 2213, 2213, 2213, 302, 2213, 2213, 302, + 302, 302, 302, 302, 2213, 2214, 2213, 2215, + 2212, 2212, 2212, 2212, 302, 2212, 2212, 2212, + 302, 2212, 2212, 2212, 2212, 2212, 2212, 2212, + + 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, + 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, + 2212, 2212, 2212, 2212, 2216, 2216, 302, 302, + 2215, 2217, 2214, 302, 302, 302, 302, 2218, + + 2219, 2220, 2221, 2222, 2223, 2223, 2223, 2223, + 2224, 302, 302, 302, 302, 302, 302, 302, + 2225, 2225, 2225, 2225, 2225, 2225, 2226, 2226, + 2227, 302, 302, 302, 302, 302, 302, 302, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, - 2228, 2228, 2228, 301, 301, 301, 301, 301, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2229, 2229, 2230, - 2230, 2231, 2230, 2231, 2231, 2231, 2230, 2230, - 2230, 2231, 2230, 2230, 2231, 2230, 2231, 2231, - 2230, 2231, 301, 301, 301, 301, 301, 301, - 301, 2232, 2232, 2232, 2232, 301, 301, 301, - - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 2233, 2233, 2233, 2233, 2234, 2234, 2235, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - - 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, - 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, - 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, - 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, - - 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, - 2236, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - - 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, - 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, - 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, - 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, - - 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, - 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, - 2238, 2238, 2238, 301, 301, 301, 301, 301, - 301, 301, 2239, 2239, 2239, 2239, 2239, 2239, - - 2240, 2241, 2241, 2241, 2241, 2241, 2241, 2241, - 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, - 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, - 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, - - 2241, 2241, 2242, 2241, 2243, 2243, 2243, 2243, - 301, 301, 301, 301, 301, 301, 301, 301, - 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, - 2252, 2253, 301, 301, 301, 301, 301, 301, - - 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, - 2262, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 301, - - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 301, 2265, 2265, 2266, 301, 301, - 2264, 2264, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - - 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, - 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, - 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, - 2267, 2267, 2267, 2267, 2267, 2268, 2268, 2268, - - 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2267, - 301, 301, 301, 301, 301, 301, 301, 301, - 2269, 2269, 2269, 2270, 2269, 2269, 2269, 2269, - 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, - - 2269, 2269, 2269, 2269, 2269, 2271, 2272, 2272, - 2273, 2273, 2273, 2272, 2273, 2272, 2272, 2272, - 2272, 2274, 2274, 2274, 2275, 2276, 2276, 2276, - 2276, 2276, 301, 301, 301, 301, 301, 301, - - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 2277, 2278, 2277, 2277, 2279, 2279, 2279, 2278, - 2277, 2279, 2279, 2277, 2277, 2279, 2277, 2277, - - 2278, 2277, 2279, 2279, 2277, 2280, 2280, 2280, - 2280, 2281, 2282, 2283, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, + 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, + 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, + 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, + 2231, 2231, 2231, 2231, 2231, 2232, 2232, 2232, + + 2233, 2233, 2233, 2233, 2233, 2234, 2235, 2234, + 2236, 2234, 2234, 2235, 2235, 2237, 2234, 2234, + 2234, 2234, 2234, 2233, 2233, 2233, 2233, 2237, + 2233, 2233, 2233, 2233, 2233, 2234, 2233, 2233, + + 2233, 2234, 2235, 2235, 2234, 2238, 2239, 302, + 302, 302, 302, 2240, 2240, 2240, 2240, 2241, + 2242, 2242, 2242, 2242, 2242, 2242, 2243, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, + 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, + 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, + 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, + + 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, + 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, + 2244, 2244, 2244, 2244, 2244, 2244, 302, 302, + 302, 2245, 2245, 2245, 2245, 2245, 2245, 2245, + + 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, + 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, + 2246, 2246, 2246, 2246, 2246, 2246, 302, 302, + 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, + + 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, + 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, + 2248, 2248, 2248, 302, 302, 302, 302, 302, + 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, + + 2250, 2251, 2250, 2251, 2251, 2251, 2250, 2250, + 2250, 2251, 2250, 2250, 2251, 2250, 2251, 2251, + 2250, 2251, 302, 302, 302, 302, 302, 302, + 302, 2252, 2252, 2252, 2252, 302, 302, 302, + + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 2253, 2253, 2253, 2253, 2254, 2254, 2255, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, + 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, + 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, + 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, + + 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, + 2256, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, + 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, + 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, + 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, + + 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, + 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, + 2257, 2257, 2257, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, + 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, + 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, + 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, + + 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, + 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, + 2258, 2258, 2258, 302, 302, 302, 302, 302, + 302, 302, 2259, 2259, 2259, 2259, 2259, 2259, + + 2260, 2261, 2261, 2261, 2261, 2261, 2261, 2261, + 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, + 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, + 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, + + 2261, 2261, 2262, 2261, 2263, 2263, 2263, 2263, + 302, 302, 302, 302, 302, 302, 302, 302, + 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, + 2272, 2273, 302, 302, 302, 302, 302, 302, + + 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, + 2282, 2283, 2283, 2283, 2283, 2283, 2283, 2283, + 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, + 2283, 2283, 2283, 2283, 2283, 2283, 2283, 302, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, - 2284, 2284, 2284, 2284, 2284, 2284, 2284, 301, - 301, 301, 301, 301, 301, 301, 301, 301, + 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, + 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, + + 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, + 2284, 2284, 302, 2285, 2285, 2286, 302, 302, + 2284, 2284, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, - 2285, 2286, 2285, 2287, 2287, 2287, 2287, 2287, - 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, - 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, - 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, - 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, - 2286, 2286, 2286, 2286, 2286, 2286, 2288, 2289, - 2289, 2290, 2290, 2290, 2290, 2290, 202, 202, - 202, 202, 2291, 2292, 2293, 2294, 2295, 2296, - 2297, 2298, 2299, 2300, 2300, 2300, 2300, 2300, - 2300, 2300, 2300, 2300, 2300, 2300, 2301, 2302, - 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 2311, - 2312, 2312, 2313, 2314, 2314, 2314, 2314, 2314, - 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, - 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, - 2314, 2314, 2315, 2314, 2315, 2314, 2314, 2314, - 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, - 2314, 2314, 2314, 2315, 2314, 2314, 2314, 2314, - 2313, 2313, 2313, 2312, 2312, 2312, 2312, 2313, - 2313, 2316, 2317, 2318, 2318, 2319, 2320, 2320, - 2320, 2320, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 2321, 202, 202, - 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, - 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, - 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, - 2322, 202, 202, 202, 202, 202, 202, 202, - 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, - 2331, 2332, 202, 202, 202, 202, 202, 202, + 2287, 2287, 2287, 2287, 2287, 2288, 2288, 2288, - 2333, 2333, 2333, 2334, 2334, 2334, 2334, 2334, + 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2287, + 302, 302, 302, 302, 302, 302, 302, 302, + 2289, 2289, 2289, 2290, 2289, 2289, 2289, 2289, + 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, + + 2289, 2289, 2289, 2289, 2289, 2291, 2292, 2292, + 2293, 2293, 2293, 2292, 2293, 2292, 2292, 2292, + 2292, 2294, 2294, 2294, 2295, 2296, 2296, 2296, + 2296, 2296, 302, 302, 302, 302, 302, 302, + + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 2297, 2298, 2297, 2297, 2299, 2299, 2299, 2298, + 2297, 2299, 2299, 2297, 2297, 2299, 2297, 2297, + + 2298, 2297, 2299, 2299, 2297, 2300, 2300, 2300, + 2300, 2301, 2302, 2303, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, + 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, + 2304, 2304, 2304, 2304, 2304, 2304, 2304, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 2305, 2306, 2305, 2307, 2307, 2307, 2307, 2307, + 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, + 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, + 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, + 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, + 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, + 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, + 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, + 2306, 2306, 2306, 2306, 2306, 2306, 2308, 2309, + 2309, 2310, 2310, 2310, 2310, 2310, 203, 203, + 203, 203, 2311, 2312, 2313, 2314, 2315, 2316, + 2317, 2318, 2319, 2320, 2320, 2320, 2320, 2320, + 2320, 2320, 2320, 2320, 2320, 2320, 2321, 2322, + 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 2331, + 2332, 2332, 2333, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, + 2334, 2334, 2335, 2334, 2335, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, - 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2335, - 2336, 2336, 2336, 2336, 2337, 2336, 2338, 2338, - 2336, 2336, 2336, 2339, 2339, 202, 2340, 2341, - 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, - 2350, 2351, 2351, 2351, 2352, 2353, 2353, 2354, - 202, 202, 202, 202, 202, 202, 202, 202, - 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, - 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, - 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, - 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, - 2355, 2355, 2355, 2356, 2357, 2358, 2355, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2359, 2359, 2360, 2361, 2361, 2361, 2361, 2361, - 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, - 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, - 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, - 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, - 2361, 2361, 2361, 2361, 2361, 2361, 2361, 2361, - 2361, 2361, 2361, 2360, 2360, 2360, 2359, 2359, - 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2360, - 2362, 2361, 2363, 2363, 2361, 2364, 2364, 2365, - 2366, 2367, 2368, 2367, 2367, 2369, 2370, 2371, - 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, - 2380, 2381, 2382, 2383, 2384, 2385, 2386, 2386, - 202, 2387, 2387, 2387, 2387, 2387, 2387, 2387, - 2387, 2387, 2387, 2387, 2387, 2387, 2387, 2387, - 2387, 2387, 2387, 2387, 2387, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, - 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, - 2388, 2388, 202, 2388, 2388, 2388, 2388, 2388, - 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, - 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, - 2388, 2388, 2388, 2388, 2389, 2389, 2389, 2390, - 2390, 2390, 2389, 2389, 2390, 2391, 2392, 2390, - 2393, 2393, 2394, 2393, 2393, 2394, 2395, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2396, 2396, 2396, 2396, 2396, 2396, 2396, 202, - 2396, 202, 2396, 2396, 2396, 2396, 202, 2396, - 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, - 2396, 2396, 2396, 2396, 2396, 2396, 202, 2396, - 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, - 2396, 2397, 202, 202, 202, 202, 202, 202, - 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, - 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, - 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, - 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, - 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, - 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2399, - 2400, 2400, 2400, 2399, 2399, 2399, 2399, 2399, - 2399, 2401, 2402, 202, 202, 202, 202, 202, - 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, - 2411, 2412, 202, 202, 202, 202, 202, 202, - - 2413, 2414, 2415, 2415, 202, 2416, 2416, 2416, - 2416, 2416, 2416, 2416, 2416, 202, 202, 2416, - 2416, 202, 202, 2416, 2416, 2416, 2416, 2416, + 2334, 2334, 2334, 2335, 2334, 2334, 2334, 2334, + 2333, 2333, 2333, 2332, 2332, 2332, 2332, 2333, + 2333, 2336, 2337, 2338, 2338, 2339, 2340, 2340, + 2340, 2340, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 2341, 203, 203, + 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, + 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, + 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, + 2342, 203, 203, 203, 203, 203, 203, 203, + 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, + 2351, 2352, 203, 203, 203, 203, 203, 203, + + 2353, 2353, 2353, 2354, 2354, 2354, 2354, 2354, + 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, + 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, + 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2354, + 2354, 2354, 2354, 2354, 2354, 2354, 2354, 2355, + 2356, 2356, 2356, 2356, 2357, 2356, 2358, 2358, + 2356, 2356, 2356, 2359, 2359, 203, 2360, 2361, + 2362, 2363, 2364, 2365, 2366, 2367, 2368, 2369, + 2370, 2371, 2371, 2371, 2372, 2373, 2373, 2374, + 203, 203, 203, 203, 203, 203, 203, 203, + 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, + 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, + 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, + 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, + 2375, 2375, 2375, 2376, 2377, 2378, 2375, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2379, 2379, 2380, 2381, 2381, 2381, 2381, 2381, + 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, + 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, + 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, + 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, + 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, + 2381, 2381, 2381, 2380, 2380, 2380, 2379, 2379, + 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2380, + 2382, 2381, 2383, 2383, 2381, 2384, 2384, 2385, + 2386, 2387, 2388, 2387, 2387, 2389, 2390, 2391, + 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399, + 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2406, + 203, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, + 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, + 2408, 2408, 203, 2408, 2408, 2408, 2408, 2408, + 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, + 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, + 2408, 2408, 2408, 2408, 2409, 2409, 2409, 2410, + 2410, 2410, 2409, 2409, 2410, 2411, 2412, 2410, + 2413, 2413, 2414, 2413, 2413, 2414, 2415, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 203, + 2416, 203, 2416, 2416, 2416, 2416, 203, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 203, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, - 2416, 202, 2416, 2416, 2416, 2416, 2416, 2416, - 2416, 202, 2416, 2416, 202, 2416, 2416, 2416, - 2416, 2416, 202, 2417, 2418, 2416, 2419, 2415, - 2414, 2415, 2415, 2415, 2415, 202, 202, 2415, - 2415, 202, 202, 2420, 2420, 2421, 202, 202, - 2422, 202, 202, 202, 202, 202, 202, 2419, - 202, 202, 202, 202, 202, 2416, 2416, 2416, - 2416, 2416, 2415, 2415, 202, 202, 2423, 2423, - 2423, 2423, 2423, 2423, 2423, 202, 202, 202, - 2423, 2423, 2423, 2423, 2423, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2424, 2424, 2424, 2424, 2424, 2424, 2424, 2424, - 2424, 2424, 2424, 2424, 2424, 2424, 2424, 2424, - 2424, 2424, 2424, 2424, 2424, 2424, 2424, 2424, - 2424, 2424, 2424, 2424, 2424, 2424, 2424, 2424, - 2424, 2424, 2424, 2424, 2424, 2424, 2424, 2424, - 2424, 2424, 2424, 2424, 2424, 2424, 2424, 2424, - 2424, 2424, 2424, 2424, 2424, 2425, 2425, 2425, - 2426, 2426, 2426, 2426, 2426, 2426, 2426, 2426, - 2425, 2425, 2427, 2426, 2426, 2425, 2428, 2424, - 2424, 2424, 2424, 2429, 2429, 2430, 2430, 2431, - 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2439, - 2440, 2441, 2442, 2430, 202, 2431, 2443, 2444, - 2445, 2445, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, - 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, - 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, - 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, - 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, + 2416, 2417, 203, 203, 203, 203, 203, 203, + 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, + 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, + 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, + 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, + 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, + 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2419, + 2420, 2420, 2420, 2419, 2419, 2419, 2419, 2419, + 2419, 2421, 2422, 203, 203, 203, 203, 203, + 2423, 2424, 2425, 2426, 2427, 2428, 2429, 2430, + 2431, 2432, 203, 203, 203, 203, 203, 203, + + 2433, 2434, 2435, 2435, 203, 2436, 2436, 2436, + 2436, 2436, 2436, 2436, 2436, 203, 203, 2436, + 2436, 203, 203, 2436, 2436, 2436, 2436, 2436, + 2436, 2436, 2436, 2436, 2436, 2436, 2436, 2436, + 2436, 2436, 2436, 2436, 2436, 2436, 2436, 2436, + 2436, 203, 2436, 2436, 2436, 2436, 2436, 2436, + 2436, 203, 2436, 2436, 203, 2436, 2436, 2436, + 2436, 2436, 203, 2437, 2438, 2436, 2439, 2435, + 2434, 2435, 2435, 2435, 2435, 203, 203, 2435, + 2435, 203, 203, 2440, 2440, 2441, 203, 203, + 2442, 203, 203, 203, 203, 203, 203, 2439, + 203, 203, 203, 203, 203, 2436, 2436, 2436, + 2436, 2436, 2435, 2435, 203, 203, 2443, 2443, + 2443, 2443, 2443, 2443, 2443, 203, 203, 203, + 2443, 2443, 2443, 2443, 2443, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, + 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, + 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, + 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, + 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, + 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, + 2444, 2444, 2444, 2444, 2444, 2445, 2445, 2445, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, - 2447, 2448, 2448, 2449, 2449, 2449, 2449, 2449, - 2449, 2448, 2450, 2451, 2451, 2447, 2451, 2449, - 2449, 2448, 2452, 2453, 2446, 2446, 2454, 2446, - 202, 202, 202, 202, 202, 202, 202, 202, - 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, - 2463, 2464, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, - 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, - 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, - 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, - 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, - 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2466, - 2467, 2467, 2468, 2468, 2468, 2468, 202, 202, - 2467, 2467, 2469, 2469, 2468, 2468, 2467, 2470, - 2471, 2472, 2473, 2473, 2474, 2474, 2475, 2475, - 2475, 2473, 2476, 2476, 2476, 2476, 2476, 2476, - 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, - 2477, 2477, 2477, 2477, 2478, 2478, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, - 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, - 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, - 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, - 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, - 2479, 2479, 2479, 2479, 2479, 2479, 2479, 2479, - 2480, 2480, 2480, 2481, 2481, 2481, 2481, 2481, - 2481, 2481, 2481, 2480, 2480, 2481, 2480, 2482, - 2481, 2483, 2483, 2484, 2479, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, - 2493, 2494, 202, 202, 202, 202, 202, 202, - 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, - 2495, 2495, 2495, 2495, 2495, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, + 2445, 2445, 2447, 2446, 2446, 2445, 2448, 2444, + 2444, 2444, 2444, 2449, 2449, 2450, 2450, 2451, + 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, + 2460, 2461, 2462, 2450, 203, 2451, 2463, 2464, + 2465, 2465, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, + 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, + 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, + 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, + 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, + 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, + 2467, 2468, 2468, 2469, 2469, 2469, 2469, 2469, + 2469, 2468, 2470, 2471, 2471, 2467, 2471, 2469, + 2469, 2468, 2472, 2473, 2466, 2466, 2474, 2466, + 203, 203, 203, 203, 203, 203, 203, 203, + 2475, 2476, 2477, 2478, 2479, 2480, 2481, 2482, + 2483, 2484, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2485, 2485, 2485, 2485, 2485, 2485, 2485, 2485, + 2485, 2485, 2485, 2485, 2485, 2485, 2485, 2485, + 2485, 2485, 2485, 2485, 2485, 2485, 2485, 2485, + 2485, 2485, 2485, 2485, 2485, 2485, 2485, 2485, + 2485, 2485, 2485, 2485, 2485, 2485, 2485, 2485, + 2485, 2485, 2485, 2485, 2485, 2485, 2485, 2486, + 2487, 2487, 2488, 2488, 2488, 2488, 203, 203, + 2487, 2487, 2489, 2489, 2488, 2488, 2487, 2490, + 2491, 2492, 2493, 2493, 2494, 2494, 2495, 2495, + 2495, 2493, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, - 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, - 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, - 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, - 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, - 2496, 2496, 2496, 2497, 2498, 2497, 2498, 2498, - 2497, 2497, 2497, 2497, 2497, 2497, 2499, 2500, - 2501, 202, 202, 202, 202, 202, 202, 202, - 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, - 2510, 2511, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, - 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, - 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, - 2512, 2512, 2513, 202, 202, 2514, 2514, 2514, - 2515, 2515, 2514, 2514, 2514, 2514, 2515, 2514, - 2514, 2514, 2514, 2516, 202, 202, 202, 202, - 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, - 2525, 2526, 2527, 2527, 2528, 2528, 2528, 2529, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, - 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, - 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, - 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, - 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, - 2530, 2530, 2530, 2530, 2531, 2531, 2531, 2532, + 2497, 2497, 2497, 2497, 2498, 2498, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, + 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, + 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, + 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, + 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, + 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, + 2500, 2500, 2500, 2501, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 2500, 2500, 2501, 2500, 2502, + 2501, 2503, 2503, 2504, 2499, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512, + 2513, 2514, 203, 203, 203, 203, 203, 203, + 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, + 2515, 2515, 2515, 2515, 2515, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, + 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, + 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, + 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, + 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, + 2516, 2516, 2516, 2517, 2518, 2517, 2518, 2518, + 2517, 2517, 2517, 2517, 2517, 2517, 2519, 2520, + 2521, 203, 203, 203, 203, 203, 203, 203, + 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, + 2530, 2531, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, + 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, - 2531, 2533, 2534, 2535, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, - 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, - 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, - 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, - 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, - 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, - 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, - 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, - 2538, 2539, 2540, 2541, 2542, 2543, 2544, 2545, - 2546, 2547, 2548, 2548, 2548, 2548, 2548, 2548, - 2548, 2548, 2548, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 2549, - - 2550, 2550, 2550, 2550, 2550, 2550, 2550, 202, - 202, 2550, 202, 202, 2550, 2550, 2550, 2550, - 2550, 2550, 2550, 2550, 202, 2550, 2550, 202, + 2532, 2532, 2533, 203, 203, 2534, 2534, 2534, + 2535, 2535, 2534, 2534, 2534, 2534, 2535, 2534, + 2534, 2534, 2534, 2536, 203, 203, 203, 203, + 2537, 2538, 2539, 2540, 2541, 2542, 2543, 2544, + 2545, 2546, 2547, 2547, 2548, 2548, 2548, 2549, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, - 2551, 2552, 2552, 2552, 2552, 2552, 202, 2552, - 2553, 202, 202, 2554, 2554, 2555, 2556, 2557, - 2552, 2557, 2552, 2558, 2559, 2560, 2559, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, - 2569, 2570, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, - 202, 202, 2571, 2571, 2571, 2571, 2571, 2571, - 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, - 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, - 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, - 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, - 2571, 2572, 2572, 2572, 2573, 2573, 2573, 2573, - 202, 202, 2573, 2573, 2572, 2572, 2572, 2572, - 2574, 2571, 2575, 2571, 2572, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2576, 2577, 2577, 2577, 2577, 2577, 2577, 2578, - 2578, 2577, 2577, 2576, 2576, 2576, 2576, 2576, - 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, - 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, - 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, - 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, - 2576, 2576, 2576, 2577, 2579, 2577, 2577, 2577, - 2577, 2580, 2581, 2577, 2577, 2577, 2577, 2582, - 2583, 2584, 2585, 2585, 2584, 2582, 2583, 2579, - 202, 202, 202, 202, 202, 202, 202, 202, - 2586, 2587, 2587, 2587, 2587, 2587, 2587, 2588, - 2588, 2587, 2587, 2587, 2586, 2586, 2586, 2586, - 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, - 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, - 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, - 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, - 2586, 2586, 2586, 2586, 2589, 2589, 2590, 2590, - 2590, 2590, 2587, 2587, 2587, 2587, 2587, 2587, - 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2588, - 2587, 2591, 2592, 2593, 2593, 2594, 2595, 2595, - 2595, 2592, 2592, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, - 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, - 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, + 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, + 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, + 2550, 2550, 2550, 2550, 2551, 2551, 2551, 2552, + 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, + 2551, 2553, 2554, 2555, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, + 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, + 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, + 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, + 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, + 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, + 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, + 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, + 2558, 2559, 2560, 2561, 2562, 2563, 2564, 2565, + 2566, 2567, 2568, 2568, 2568, 2568, 2568, 2568, + 2568, 2568, 2568, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 2569, + + 2570, 2570, 2570, 2570, 2570, 2570, 2570, 203, + 203, 2570, 203, 203, 2570, 2570, 2570, 2570, + 2570, 2570, 2570, 2570, 203, 2570, 2570, 203, + 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, + 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, + 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, + 2571, 2572, 2572, 2572, 2572, 2572, 203, 2572, + 2573, 203, 203, 2574, 2574, 2575, 2576, 2577, + 2572, 2577, 2572, 2578, 2579, 2580, 2579, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2581, 2582, 2583, 2584, 2585, 2586, 2587, 2588, + 2589, 2590, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, + 203, 203, 2591, 2591, 2591, 2591, 2591, 2591, + 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, + 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, + 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, + 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, + 2591, 2592, 2592, 2592, 2593, 2593, 2593, 2593, + 203, 203, 2593, 2593, 2592, 2592, 2592, 2592, + 2594, 2591, 2595, 2591, 2592, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2596, 2597, 2597, 2597, 2597, 2597, 2597, 2598, + 2598, 2597, 2597, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, - 2596, 202, 202, 202, 202, 202, 202, 202, - - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, - 2597, 202, 2597, 2597, 2597, 2597, 2597, 2597, - 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, - 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, - 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597, - 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2598, - 2599, 2599, 2599, 2599, 2599, 2599, 2599, 202, - 2599, 2599, 2599, 2599, 2599, 2599, 2598, 2600, - 2597, 2601, 2601, 2602, 2602, 2602, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2610, - 2611, 2612, 2613, 2613, 2613, 2613, 2613, 2613, - 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, - 2613, 2613, 2613, 2613, 2613, 202, 202, 202, - 2614, 2615, 2616, 2616, 2616, 2616, 2616, 2616, + 2596, 2596, 2596, 2597, 2599, 2597, 2597, 2597, + 2597, 2600, 2601, 2597, 2597, 2597, 2597, 2602, + 2603, 2604, 2605, 2605, 2604, 2602, 2603, 2599, + 203, 203, 203, 203, 203, 203, 203, 203, + 2606, 2607, 2607, 2607, 2607, 2607, 2607, 2608, + 2608, 2607, 2607, 2607, 2606, 2606, 2606, 2606, + 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606, + 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606, + 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606, + 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606, + 2606, 2606, 2606, 2606, 2609, 2609, 2610, 2610, + 2610, 2610, 2607, 2607, 2607, 2607, 2607, 2607, + 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2608, + 2607, 2611, 2612, 2613, 2613, 2614, 2615, 2615, + 2615, 2612, 2612, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, + 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, + 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, - 202, 202, 2617, 2617, 2617, 2617, 2617, 2617, + 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616, + 2616, 203, 203, 203, 203, 203, 203, 203, + + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, + 2617, 203, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, - 202, 2618, 2617, 2617, 2617, 2617, 2617, 2617, - 2617, 2618, 2617, 2617, 2618, 2617, 2617, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2619, 2619, 2619, 2619, 2619, 2619, 2619, 202, - 2619, 2619, 202, 2619, 2619, 2619, 2619, 2619, - 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, - 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, - 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, - 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, - 2619, 2620, 2620, 2620, 2620, 2620, 2620, 202, - 202, 202, 2620, 202, 2620, 2620, 202, 2620, - 2620, 2620, 2621, 2620, 2622, 2622, 2623, 2620, - 202, 202, 202, 202, 202, 202, 202, 202, - 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, - 2632, 2633, 202, 202, 202, 202, 202, 202, - 2634, 2634, 2634, 2634, 2634, 2634, 202, 2634, - 2634, 202, 2634, 2634, 2634, 2634, 2634, 2634, - 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, - 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, - 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, - 2634, 2634, 2635, 2635, 2635, 2635, 2635, 202, - 2636, 2636, 202, 2635, 2635, 2636, 2635, 2637, - 2634, 202, 202, 202, 202, 202, 202, 202, - 2638, 2639, 2640, 2641, 2642, 2643, 2644, 2645, - 2646, 2647, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, - 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, - 2648, 2648, 2648, 2649, 2649, 2650, 2650, 2651, - 2651, 202, 202, 202, 202, 202, 202, 202, - - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2652, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, - 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, - 2653, 2653, 2653, 2653, 2653, 2654, 2654, 2654, - 2654, 2654, 2654, 2654, 2654, 2655, 2655, 2655, - 2655, 2654, 2654, 2654, 2654, 2654, 2654, 2654, + 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, + 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617, + 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2618, + 2619, 2619, 2619, 2619, 2619, 2619, 2619, 203, + 2619, 2619, 2619, 2619, 2619, 2619, 2618, 2620, + 2617, 2621, 2621, 2622, 2622, 2622, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, + 2631, 2632, 2633, 2633, 2633, 2633, 2633, 2633, + 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, + 2633, 2633, 2633, 2633, 2633, 203, 203, 203, + 2634, 2635, 2636, 2636, 2636, 2636, 2636, 2636, + 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, + 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, + 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, + 203, 203, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 203, 2638, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2638, 2637, 2637, 2638, 2637, 2637, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2639, 2639, 2639, 2639, 2639, 2639, 2639, 203, + 2639, 2639, 203, 2639, 2639, 2639, 2639, 2639, + 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, + 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, + 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, + 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, + 2639, 2640, 2640, 2640, 2640, 2640, 2640, 203, + 203, 203, 2640, 203, 2640, 2640, 203, 2640, + 2640, 2640, 2641, 2640, 2642, 2642, 2643, 2640, + 203, 203, 203, 203, 203, 203, 203, 203, + 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651, + 2652, 2653, 203, 203, 203, 203, 203, 203, + 2654, 2654, 2654, 2654, 2654, 2654, 203, 2654, + 2654, 203, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, - 2654, 2654, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 2656, - - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2658, - 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, - 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, - 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, - 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, - 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, - 2658, 2659, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, - 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, - 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, - 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, - 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, - 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, - 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, - 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, - 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, - 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, - 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, - 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, - 2660, 2660, 2660, 2661, 2661, 2661, 2661, 2661, - 2661, 2661, 2661, 2661, 2661, 2661, 2661, 202, - 2662, 2662, 2662, 2662, 2663, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2659, 2659, 2659, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2665, 2665, 2665, 2666, 2666, 2666, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2666, 2664, 2664, 2664, 2665, 2666, - 2665, 2666, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2665, 2666, 2666, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2664, 202, - 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2668, - 2669, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2671, 2672, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2670, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, + 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, + 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, + 2654, 2654, 2655, 2655, 2655, 2655, 2655, 203, + 2656, 2656, 203, 2655, 2655, 2656, 2655, 2657, + 2654, 203, 203, 203, 203, 203, 203, 203, + 2658, 2659, 2660, 2661, 2662, 2663, 2664, 2665, + 2666, 2667, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, + 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, + 2668, 2668, 2668, 2669, 2669, 2670, 2670, 2671, + 2671, 203, 203, 203, 203, 203, 203, 203, + + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2672, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 202, 202, 202, 202, 202, 202, 202, - 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, - 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, + 2673, 2673, 2673, 2673, 2673, 2674, 2674, 2674, + 2674, 2674, 2674, 2674, 2674, 2675, 2675, 2675, + 2675, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, - 2674, 2674, 2674, 2674, 2674, 2674, 2674, 202, - 2675, 2676, 2677, 2678, 2679, 2680, 2681, 2682, - 2683, 2684, 202, 202, 202, 202, 2685, 2685, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, - 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, - 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, - 2686, 2686, 2686, 2686, 2686, 2686, 202, 202, - 2687, 2687, 2687, 2687, 2687, 2688, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, - 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, - 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, - 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, - 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, - 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, - 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2691, - 2691, 2692, 2693, 2693, 2694, 2694, 2694, 2694, - 2695, 2695, 2695, 2695, 2691, 2694, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703, - 2704, 2705, 202, 2706, 2706, 2706, 2706, 2706, - 2706, 2706, 202, 2689, 2689, 2689, 2689, 2689, - 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, - 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, - 202, 202, 202, 202, 202, 2689, 2689, 2689, - 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, - 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2689, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, - 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, - 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, - 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, - 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, - 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, - 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, - 2708, 2708, 2708, 2708, 2708, 2708, 2708, 2708, + 2674, 2674, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 2676, + + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2678, + 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, + 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, + 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, + 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, + 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, + 2678, 2679, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2681, 2681, 2681, 2681, 2681, + 2681, 2681, 2681, 2681, 2681, 2681, 2681, 203, + 2682, 2682, 2682, 2682, 2683, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, + 2679, 2679, 2679, 2679, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2685, 2685, 2685, 2686, 2686, 2686, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2686, 2684, 2684, 2684, 2685, 2686, + 2685, 2686, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2685, 2686, 2686, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 203, + 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2688, + 2689, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2691, 2692, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, + 2690, 2690, 2690, 2690, 2690, 2690, 2690, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 2693, 2693, 2693, 2693, 2693, 2693, 2693, + 2693, 203, 203, 203, 203, 203, 203, 203, + 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, + 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, + 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, + 2694, 2694, 2694, 2694, 2694, 2694, 2694, 203, + 2695, 2696, 2697, 2698, 2699, 2700, 2701, 2702, + 2703, 2704, 203, 203, 203, 203, 2705, 2705, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, + 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, + 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, + 2706, 2706, 2706, 2706, 2706, 2706, 203, 203, + 2707, 2707, 2707, 2707, 2707, 2708, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, + 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, + 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, + 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, + 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, + 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, + 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2711, + 2711, 2712, 2713, 2713, 2714, 2714, 2714, 2714, + 2715, 2715, 2715, 2715, 2711, 2714, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2716, 2717, 2718, 2719, 2720, 2721, 2722, 2723, + 2724, 2725, 203, 2726, 2726, 2726, 2726, 2726, + 2726, 2726, 203, 2709, 2709, 2709, 2709, 2709, + 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, + 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, + 203, 203, 203, 203, 203, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, - 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2710, - 2711, 2712, 2712, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, - 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, - 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, - 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, - 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, - 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, - 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, - 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, - 2713, 2713, 2713, 2713, 2713, 2714, 2714, 2714, - 2714, 2714, 2714, 202, 202, 202, 202, 2715, - 2713, 2716, 2716, 2716, 2716, 2716, 2716, 2716, - 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, - 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, - 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, - 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, - 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2717, - 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717, - 202, 202, 202, 202, 202, 202, 202, 2718, - 2718, 2718, 2718, 2719, 2719, 2719, 2719, 2719, - 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2720, 2721, 2722, 2723, 2724, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2725, 2725, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2727, 2727, 2727, - 2727, 2727, 2728, 2728, 2728, 2728, 2728, 2728, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2729, 2729, 2729, 2729, 2729, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, + 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, + 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, + 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, + 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, + 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, + 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, + 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, - - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 2730, 2730, - 2730, 2730, 2730, 2730, 2730, 2730, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, - 2729, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, + 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2730, + 2731, 2732, 2732, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, - 2731, 2732, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, @@ -4866,1833 +4638,2142 @@ 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2734, 2734, 2734, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 2735, 2735, 2735, 2735, - 202, 202, 202, 202, 202, 202, 202, 202, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, + 2733, 2733, 2733, 2733, 2733, 2734, 2734, 2734, + 2734, 2734, 2734, 203, 203, 203, 203, 2735, + 2733, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2736, 2736, 2736, 202, 202, 202, 202, - - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, + 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 2737, 2737, 202, 202, 202, 202, 202, - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 2737, 2737, 2737, 2737, 202, 202, 202, - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 202, 202, 202, 202, 202, 202, 202, - 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737, - 2737, 2737, 202, 202, 2738, 2739, 2740, 2741, - 2742, 2742, 2742, 2742, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 202, - 202, 1465, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2744, 2744, - 2744, 2744, 2744, 2744, 2744, 2745, 2746, 2747, - 2747, 2747, 2743, 2743, 2743, 2748, 2745, 2745, - 2745, 2745, 2745, 2749, 2749, 2749, 2749, 2749, - 2749, 2749, 2749, 2750, 2750, 2750, 2750, 2750, - 2750, 2750, 2750, 2743, 2743, 2751, 2751, 2751, - 2751, 2751, 2750, 2750, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2751, 2751, 2751, 2751, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2744, 2744, 2744, 2744, 2744, - 2744, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 2743, 2743, 2743, 2743, 2743, 2743, 2752, 2752, - 2752, 2752, 2752, 2752, 2752, 2752, 2752, 2752, - 2752, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, - 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, - 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, - 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, - 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, - 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, - 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, - 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, - 2130, 2130, 2753, 2753, 2753, 2130, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, - 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, - 2754, 2754, 2754, 2754, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1507, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, - 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, - 2755, 2755, 2754, 2754, 2754, 2754, 2754, 2754, - 2754, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - + 203, 203, 203, 203, 203, 203, 203, 2738, + 2738, 2738, 2738, 2739, 2739, 2739, 2739, 2739, + 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2740, 2741, 2742, 2743, 2744, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2745, 2745, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2747, 2747, 2747, + 2747, 2747, 2748, 2748, 2748, 2748, 2748, 2748, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2749, 2749, 2749, 2749, 2749, + 2749, 2749, 2749, 2749, 2749, 2749, 2749, 2749, + + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, + 2750, 2750, 2750, 2750, 2750, 2750, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2749, 2749, 2749, 2749, 2749, 2749, 2749, 2749, + 2749, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2751, 2752, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2754, 2754, 2754, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 2755, 2755, 2755, 2755, + 203, 203, 203, 203, 203, 203, 203, 203, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 2756, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 202, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2756, 202, 2756, 2756, - 202, 202, 2756, 202, 202, 2756, 2756, 202, - 202, 2756, 2756, 2756, 2756, 202, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 2756, 2757, 2757, - 2757, 2757, 202, 2757, 202, 2757, 2757, 2757, - 2757, 2758, 2757, 2757, 202, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - - 2757, 2757, 2757, 2757, 2756, 2756, 202, 2756, - 2756, 2756, 2756, 202, 202, 2756, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 202, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 202, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2756, 2756, 202, 2756, 2756, 2756, 2756, 202, - 2756, 2756, 2756, 2756, 2756, 202, 2756, 202, - 202, 202, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 202, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 2756, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 2756, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 2756, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 1457, 1457, 202, 202, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2759, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2760, 2757, 2757, 2757, 2757, - 2757, 2757, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2756, 2759, 2757, 2757, 2757, 2757, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 203, 203, 203, 203, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2760, 2757, 2757, - 2757, 2757, 2757, 2757, 2756, 2756, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 2759, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2760, - 2757, 2757, 2757, 2757, 2757, 2757, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2759, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2760, 2757, 2757, 2757, 2757, 2757, 2757, - 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2756, 2759, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2760, 2757, 2757, 2757, 2757, - 2757, 2757, 2761, 2762, 202, 202, 2763, 2764, - 2765, 2766, 2767, 2768, 2769, 2770, 2771, 2772, - 2763, 2764, 2765, 2766, 2767, 2768, 2769, 2770, - 2771, 2772, 2763, 2764, 2765, 2766, 2767, 2768, - 2769, 2770, 2771, 2772, 2763, 2764, 2765, 2766, - 2767, 2768, 2769, 2770, 2771, 2772, 2763, 2764, - 2765, 2766, 2767, 2768, 2769, 2770, 2771, 2772, - - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, + 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, + 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, + 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, + 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, + 2757, 2757, 2757, 203, 203, 203, 203, 203, + 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, + 2757, 2757, 2757, 2757, 2757, 203, 203, 203, + 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, + 2757, 203, 203, 203, 203, 203, 203, 203, + 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, + 2757, 2757, 203, 203, 2758, 2759, 2760, 2761, + 2762, 2762, 2762, 2762, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 203, + 203, 1468, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2764, 2764, + 2764, 2764, 2764, 2764, 2764, 2765, 2766, 2767, + 2767, 2767, 2763, 2763, 2763, 2768, 2765, 2765, + 2765, 2765, 2765, 2769, 2769, 2769, 2769, 2769, + 2769, 2769, 2769, 2770, 2770, 2770, 2770, 2770, + 2770, 2770, 2770, 2763, 2763, 2771, 2771, 2771, + 2771, 2771, 2770, 2770, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2771, 2771, 2771, 2771, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2764, 2764, 2764, 2764, 2764, + 2764, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2772, 2772, + 2772, 2772, 2772, 2772, 2772, 2772, 2772, 2772, + 2772, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, + 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, + 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, + 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, + 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, + 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, + 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, + 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, + 2150, 2150, 2773, 2773, 2773, 2150, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, - 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, - 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, - 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, - 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, - 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2773, - 2773, 2773, 2773, 2774, 2774, 2774, 2774, 2774, - 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, - 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, - 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, - 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, - 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, - 2774, 2774, 2774, 2774, 2774, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2774, 2773, 2773, - 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, - 2773, 2773, 2773, 2773, 2774, 2773, 2773, 2775, - 2776, 2775, 2775, 2777, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 2774, 2774, 2774, 2774, 2774, - 202, 2774, 2774, 2774, 2774, 2774, 2774, 2774, - 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2778, 2778, 2778, 2778, 2778, 2778, 2778, 202, - 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, - 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778, - 2778, 202, 202, 2778, 2778, 2778, 2778, 2778, - 2778, 2778, 202, 2778, 2778, 202, 2778, 2778, - 2778, 2778, 2778, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, - 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, - 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, - 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, - 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, - 2779, 2779, 2779, 2779, 2779, 202, 202, 202, - 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2781, - 2781, 2781, 2781, 2781, 2781, 2781, 202, 202, - 2782, 2783, 2784, 2785, 2786, 2787, 2788, 2789, - 2790, 2791, 202, 202, 202, 202, 2779, 2792, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, + 2774, 2774, 2774, 2774, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, + 1513, 1513, 1513, 1513, 1513, 1513, 1513, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, + 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, + 2775, 2775, 2774, 2774, 2774, 2774, 2774, 2774, + 2774, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 203, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2776, 203, 2776, 2776, + 203, 203, 2776, 203, 203, 2776, 2776, 203, + 203, 2776, 2776, 2776, 2776, 203, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2777, 2777, + 2777, 2777, 203, 2777, 203, 2777, 2777, 2777, + 2777, 2778, 2777, 2777, 203, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + + 2777, 2777, 2777, 2777, 2776, 2776, 203, 2776, + 2776, 2776, 2776, 203, 203, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 203, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 203, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2776, 2776, 203, 2776, 2776, 2776, 2776, 203, + 2776, 2776, 2776, 2776, 2776, 203, 2776, 203, + 203, 203, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 203, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 1460, 1460, 203, 203, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2779, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2780, 2777, 2777, 2777, 2777, + 2777, 2777, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2779, 2777, 2777, 2777, 2777, + + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2780, 2777, 2777, + 2777, 2777, 2777, 2777, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2779, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2780, + 2777, 2777, 2777, 2777, 2777, 2777, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2779, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2780, 2777, 2777, 2777, 2777, 2777, 2777, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2779, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2780, 2777, 2777, 2777, 2777, + 2777, 2777, 2781, 2782, 203, 203, 2783, 2784, + 2785, 2786, 2787, 2788, 2789, 2790, 2791, 2792, + 2783, 2784, 2785, 2786, 2787, 2788, 2789, 2790, + 2791, 2792, 2783, 2784, 2785, 2786, 2787, 2788, + 2789, 2790, 2791, 2792, 2783, 2784, 2785, 2786, + 2787, 2788, 2789, 2790, 2791, 2792, 2783, 2784, + 2785, 2786, 2787, 2788, 2789, 2790, 2791, 2792, + + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, - 2793, 2793, 2793, 2793, 2794, 2794, 2794, 2794, - 2795, 2796, 2797, 2798, 2799, 2800, 2801, 2802, - 2803, 2804, 202, 202, 202, 202, 202, 2805, - - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 301, 301, 2807, - 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, - 2808, 2808, 2808, 2808, 2808, 2808, 2808, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - - 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, - 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, - 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, - 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, - 2809, 2809, 2810, 2810, 2810, 2810, 2810, 2810, - 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, - 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, - 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, - 2810, 2810, 2810, 2810, 2811, 2811, 2811, 2811, - 2811, 2811, 2812, 2813, 301, 301, 301, 301, - 2814, 2815, 2816, 2817, 2818, 2819, 2820, 2821, - 2822, 2823, 301, 301, 301, 301, 2824, 2824, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 2825, 2825, 2825, 2825, 2825, 2825, 2825, - 2825, 2825, 2825, 2825, 2825, 2825, 2825, 2825, - 2825, 2825, 2825, 2825, 2825, 2825, 2825, 2825, - 2825, 2825, 2825, 2825, 2825, 2825, 2825, 2825, - 2825, 2825, 2825, 2825, 2825, 2825, 2825, 2825, - 2825, 2825, 2825, 2825, 2825, 2825, 2825, 2825, - 2825, 2825, 2825, 2825, 2825, 2825, 2825, 2825, - 2825, 2825, 2825, 2825, 2826, 2825, 2825, 2825, - 2827, 2825, 2825, 2825, 2825, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - - 301, 2828, 2828, 2828, 2828, 2828, 2828, 2828, - 2828, 2828, 2828, 2828, 2828, 2828, 2828, 2828, - 2828, 2828, 2828, 2828, 2828, 2828, 2828, 2828, - 2828, 2828, 2828, 2828, 2828, 2828, 2828, 2828, - 2828, 2828, 2828, 2828, 2828, 2828, 2828, 2828, - 2828, 2828, 2828, 2828, 2828, 2828, 2829, 2828, - 2828, 2828, 2828, 2828, 2828, 2828, 2828, 2828, - 2828, 2828, 2828, 2828, 2828, 2828, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, - 2830, 2830, 2830, 2830, 348, 2830, 2830, 2830, - 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, - 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, - 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, - 348, 2830, 2830, 348, 2830, 348, 348, 2830, - 348, 2830, 2830, 2830, 2830, 2830, 2830, 2830, - 2830, 2830, 2830, 348, 2830, 2830, 2830, 2830, - 348, 2830, 348, 2830, 348, 348, 348, 348, - 348, 348, 2830, 348, 348, 348, 348, 2830, - 348, 2830, 348, 2830, 348, 2830, 2830, 2830, - 348, 2830, 2830, 348, 2830, 348, 348, 2830, - 348, 2830, 348, 2830, 348, 2830, 348, 2830, - 348, 2830, 2830, 348, 2830, 348, 348, 2830, - 2830, 2830, 2830, 348, 2830, 2830, 2830, 2830, - 2830, 2830, 2830, 348, 2830, 2830, 2830, 2830, - 348, 2830, 2830, 2830, 2830, 348, 2830, 348, + 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, + 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, + 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, + 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, + 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, + 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, + 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2793, + 2793, 2793, 2793, 2794, 2794, 2794, 2794, 2794, + 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, + 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, + 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, + 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, + 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, + 2794, 2794, 2794, 2794, 2794, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2794, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2794, 2793, 2793, 2795, + 2796, 2795, 2795, 2797, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 2794, 2794, 2794, 2794, 2794, + 203, 2794, 2794, 2794, 2794, 2794, 2794, 2794, + 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2798, 2798, 2798, 2798, 2798, 2798, 2798, 203, + 2798, 2798, 2798, 2798, 2798, 2798, 2798, 2798, + 2798, 2798, 2798, 2798, 2798, 2798, 2798, 2798, + 2798, 203, 203, 2798, 2798, 2798, 2798, 2798, + 2798, 2798, 203, 2798, 2798, 203, 2798, 2798, + 2798, 2798, 2798, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 2799, 2799, 2799, 2799, 2799, 2799, 2799, 2799, + 2799, 2799, 2799, 2799, 2799, 2799, 2799, 2799, + 2799, 2799, 2799, 2799, 2799, 2799, 2799, 2799, + 2799, 2799, 2799, 2799, 2799, 2799, 2799, 2799, + 2799, 2799, 2799, 2799, 2799, 2799, 2799, 2799, + 2799, 2799, 2799, 2799, 2799, 203, 203, 203, + 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2801, + 2801, 2801, 2801, 2801, 2801, 2801, 203, 203, + 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809, + 2810, 2811, 203, 203, 203, 203, 2799, 2812, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813, + 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813, + 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813, + 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813, + 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813, + 2813, 2813, 2813, 2813, 2814, 2814, 2814, 2814, + 2815, 2816, 2817, 2818, 2819, 2820, 2821, 2822, + 2823, 2824, 203, 203, 203, 203, 203, 2825, + + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, + 2826, 2826, 2826, 2826, 2826, 302, 302, 2827, + 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, + 2828, 2828, 2828, 2828, 2828, 2828, 2828, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, + 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, + 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, + 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, + 2829, 2829, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, - 2830, 2830, 348, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, - 2830, 2830, 2830, 2830, 348, 348, 348, 348, - 348, 2830, 2830, 2830, 348, 2830, 2830, 2830, - 2830, 2830, 348, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, - 2830, 2830, 2830, 2830, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, - 2831, 2831, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, - - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1733, 1733, 1733, 1733, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1733, - 1733, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1548, - 1733, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1733, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - - 2832, 2832, 2833, 2834, 2835, 2836, 2837, 2838, - 2839, 2840, 2841, 2842, 2842, 2843, 2843, 2843, - 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, - 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, - 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, - 2844, 2844, 2844, 2844, 2844, 2844, 2844, 1597, - 2845, 2846, 2845, 2845, 2845, 2845, 2845, 2845, - 2845, 2845, 2845, 2845, 2845, 2846, 2845, 2846, - 2845, 2845, 2846, 2845, 2845, 2845, 2846, 2845, - 2845, 2845, 2844, 2844, 2844, 2844, 2844, 2847, - 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2849, - 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2849, + 2830, 2830, 2830, 2830, 2831, 2831, 2831, 2831, + 2831, 2831, 2832, 2833, 302, 302, 302, 302, + 2834, 2835, 2836, 2837, 2838, 2839, 2840, 2841, + 2842, 2843, 302, 302, 302, 302, 2844, 2844, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 2845, 2845, 2845, 2845, 2845, 2845, 2845, + 2845, 2845, 2845, 2845, 2845, 2845, 2845, 2845, + 2845, 2845, 2845, 2845, 2845, 2845, 2845, 2845, + 2845, 2845, 2845, 2845, 2845, 2845, 2845, 2845, + 2845, 2845, 2845, 2845, 2845, 2845, 2845, 2845, + 2845, 2845, 2845, 2845, 2845, 2845, 2845, 2845, + 2845, 2845, 2845, 2845, 2845, 2845, 2845, 2845, + 2845, 2845, 2845, 2845, 2846, 2845, 2845, 2845, + 2847, 2845, 2845, 2845, 2845, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 302, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, - 2848, 2848, 2850, 2850, 2851, 2843, 2843, 2843, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, - 2848, 2849, 2848, 2849, 2849, 2848, 2848, 2849, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, - 2848, 2848, 813, 813, 813, 813, 2852, 2852, - 2844, 2852, 2852, 2852, 2852, 2852, 2852, 2852, - 2852, 2852, 2852, 2853, 2853, 2853, 2853, 2853, - 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, - 2853, 2853, 2853, 2853, 2853, 2843, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 2854, 2854, - 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, - 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, - 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854, - - 2855, 2856, 2856, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, - 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, - 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, - 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, - 1716, 1716, 2856, 2856, 2856, 2856, 2856, 2856, - 2856, 2856, 2856, 2857, 1733, 1733, 1733, 1733, - 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, - 1716, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 2856, 2856, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 2858, 2858, 2858, 2858, 2858, 2858, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 2859, 2859, 2859, - 1511, 1511, 1511, 1511, 1511, 1511, 1548, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1548, 2859, 2859, - 1511, 1511, 1511, 1511, 1511, 1549, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1512, 1512, 1548, 1548, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1510, 1510, 1511, - 1511, 1511, 1511, 1511, 1510, 1511, 1511, 1511, - 1511, 1511, 1549, 1549, 1549, 1548, 1511, 1549, - 1511, 1511, 1549, 2860, 2860, 1548, 1548, 2859, - 2859, 2859, 2859, 2859, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 2859, 2859, 2859, 2861, 2861, 2861, 2861, 2861, - - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1548, - 1511, 1548, 1549, 1549, 1511, 1511, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1511, 1511, 1511, 1549, 1511, 1511, 1511, - 1511, 1549, 1549, 1549, 1511, 1549, 1549, 1549, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1549, - 1511, 1549, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1510, 1511, 1510, 1511, 1510, 1511, 1511, 1511, - 1511, 1511, 1549, 1511, 1511, 1511, 1511, 1510, - 1511, 1510, 1510, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1548, 1511, 1511, 1511, 1511, 1548, 1548, 2859, - - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1512, 1512, - 2862, 2862, 2862, 2862, 1512, 1512, 1512, 1512, - 1512, 1512, 1548, 2859, 2859, 2859, 2859, 2859, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 2860, 2860, 1548, 1548, - 1548, 1548, 2863, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 2860, 1548, 1548, 1548, 1548, 2860, 2860, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 2864, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1512, 1512, 1512, 1512, - 1512, 1512, 1548, 1511, 1511, 1511, 1511, 1511, - - 2865, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 2865, 1511, 1511, 1511, 2865, 1511, 2865, - 1511, 2865, 1511, 2865, 1511, 1511, 1511, 2865, - 1511, 1511, 1511, 1511, 1511, 1511, 2865, 2865, - 1511, 1511, 1511, 1511, 2865, 1511, 2865, 2865, - 1511, 1511, 1511, 1511, 2865, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1548, 1548, 2859, 2859, 1549, 1549, 1549, - 1511, 1511, 1511, 1549, 1549, 1549, 1549, 1549, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 2866, 2866, - 2866, 2867, 2867, 2867, 1512, 1512, 1512, 1512, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1549, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1511, 1511, 1511, 1511, 1549, 1549, 1549, 1511, - 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, - 1549, 1511, 1511, 1511, 1511, 1511, 1548, 1548, - 1548, 1548, 1548, 1548, 2860, 1548, 1548, 1548, - 2859, 2864, 2864, 2858, 2858, 2868, 2843, 2843, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1733, 1733, 1733, - 1548, 1548, 1548, 1548, 2864, 2864, 2864, 2858, - 2858, 2869, 2868, 2843, 2843, 1733, 1733, 1733, - - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, - 1510, 1510, 1510, 1510, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 2869, 2869, 2869, - 2869, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868, - 2868, 2868, 2868, 2868, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1733, 1733, 1733, 1733, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1733, 1733, 1733, 1733, 1733, 1733, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1733, 1733, - 2843, 2843, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1514, 1514, 2870, 2868, 2868, 2871, - 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, - 2872, 2863, 2863, 2863, 2863, 2863, 2863, 2873, - 2864, 2864, 2864, 2864, 2864, 2864, 2863, 2864, - 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, - 2863, 2873, 2873, 2863, 2863, 2863, 2863, 2863, - 2863, 2863, 2864, 2864, 2863, 2863, 2863, 2868, - 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, - 2864, 2864, 2864, 2864, 2858, 2869, 2869, 2869, - 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, - 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2858, - 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, - 2858, 2858, 2858, 2858, 2869, 2869, 2869, 2869, - 2869, 2868, 2843, 2869, 2869, 2869, 2869, 2870, - 2843, 1733, 2869, 2868, 2869, 2869, 2869, 2869, - 2859, 2859, 2859, 2859, 2859, 2864, 2864, 2864, - 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, - 2864, 2864, 2858, 2858, 2858, 2858, 2858, 2858, - 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, - 2869, 2869, 2869, 2843, 2843, 2868, 2868, 2868, - 2868, 2868, 2868, 2843, 2843, 2843, 2868, 2868, - 2869, 2869, 2869, 2869, 2869, 2874, 2874, 2869, - 2874, 2874, 2868, 2871, 2868, 2868, 2868, 2868, - 2859, 2869, 2869, 2868, 2868, 2868, 2868, 2868, - 2868, 2868, 2868, 2843, 1733, 2871, 2871, 2871, - 2858, 2873, 2873, 2873, 2873, 2873, 2873, 2873, - 2873, 2873, 2873, 2873, 2873, 2873, 2858, 2858, - 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2869, - 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, - 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, - 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, - - 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, - 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, - 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, - 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, - 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, - 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, - 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, - 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, - 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, - 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, - 1598, 1598, 1598, 1598, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869, - 2869, 2869, 2869, 2869, 2869, 2869, 1733, 1733, - 2868, 2868, 2868, 2868, 2843, 1733, 1733, 1733, - 2868, 2868, 2868, 1733, 1733, 1733, 1733, 1733, - 2868, 2868, 2868, 2843, 2843, 2843, 2843, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 2868, 2868, 2868, 2868, 2868, 2868, 2843, 2843, - 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, - 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, - 2843, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 2843, 2843, 2843, 2843, 2843, 2843, 2843, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 2843, 2843, 2843, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 2843, 2843, 2843, 2843, 2843, 2843, 2843, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 202, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1596, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 2875, 2876, 2877, 2878, 2879, 2880, 2881, 2882, - 2883, 2884, 202, 202, 202, 202, 202, 202, - - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 2885, 2885, - - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, - 2887, 2887, 2887, 2887, 2887, 2887, 1733, 1733, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, - 1731, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724, - 1724, 1724, 1724, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 2885, 2885, - - 1403, 2749, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, - 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, - 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, - 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, - 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, - 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, - 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, - 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, - 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, - 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, - 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, - 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, + 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, + 2848, 2848, 2848, 2848, 2848, 2848, 2849, 2848, + 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, + 2848, 2848, 2848, 2848, 2848, 2848, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, + + 2850, 2850, 2850, 2850, 349, 2850, 2850, 2850, + 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, + 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, + 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, + 349, 2850, 2850, 349, 2850, 349, 349, 2850, + 349, 2850, 2850, 2850, 2850, 2850, 2850, 2850, + 2850, 2850, 2850, 349, 2850, 2850, 2850, 2850, + 349, 2850, 349, 2850, 349, 349, 349, 349, + 349, 349, 2850, 349, 349, 349, 349, 2850, + 349, 2850, 349, 2850, 349, 2850, 2850, 2850, + 349, 2850, 2850, 349, 2850, 349, 349, 2850, + 349, 2850, 349, 2850, 349, 2850, 349, 2850, + 349, 2850, 2850, 349, 2850, 349, 349, 2850, + 2850, 2850, 2850, 349, 2850, 2850, 2850, 2850, + 2850, 2850, 2850, 349, 2850, 2850, 2850, 2850, + 349, 2850, 2850, 2850, 2850, 349, 2850, 349, + 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, + 2850, 2850, 349, 2850, 2850, 2850, 2850, 2850, + 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, + 2850, 2850, 2850, 2850, 349, 349, 349, 349, + 349, 2850, 2850, 2850, 349, 2850, 2850, 2850, + 2850, 2850, 349, 2850, 2850, 2850, 2850, 2850, + 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, + 2850, 2850, 2850, 2850, 349, 349, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, + 2851, 2851, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, + + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 2852, 2852, 2852, 2852, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 2852, + 2852, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1561, + 2852, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 2852, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1561, 1561, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + + 2853, 2853, 2854, 2855, 2856, 2857, 2858, 2859, + 2860, 2861, 2862, 2863, 2863, 2864, 2864, 2864, + 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, + 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, + 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, + 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2866, + 2867, 2868, 2867, 2867, 2867, 2867, 2867, 2867, + 2867, 2867, 2867, 2867, 2867, 2868, 2867, 2868, + 2867, 2867, 2868, 2867, 2867, 2867, 2868, 2867, + 2867, 2867, 2865, 2865, 2865, 2865, 2865, 2869, + 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2871, + 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2871, + 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, + 2870, 2870, 2872, 2872, 2873, 2864, 2864, 2864, + 2874, 2874, 2870, 2870, 2870, 2870, 2870, 2870, + 2870, 2871, 2870, 2871, 2871, 2870, 2874, 2875, + 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, + 2870, 2870, 814, 814, 814, 814, 2876, 2877, + 2865, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2878, 2878, 2878, 2878, 2878, + 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, + 2878, 2878, 2878, 2878, 2878, 2864, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2879, 2879, + 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, + 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, + 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, + 2880, 2881, 2881, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 2882, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 2882, + 1734, 1734, 2881, 2881, 2881, 2881, 2881, 2881, + 2881, 2881, 2881, 2883, 2852, 2852, 2852, 2852, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, + 1734, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2881, 2881, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2884, 2884, 2884, 2884, 2884, 2884, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1561, 2885, 2885, 2885, + 1517, 1517, 1517, 1517, 1517, 1517, 1561, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1561, 2885, 2885, + 1517, 1517, 1517, 1517, 1517, 1562, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1519, 1519, 1561, 1561, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1516, 1516, 1517, + 1517, 1517, 1517, 1517, 1516, 1517, 1517, 1517, + 1517, 1517, 1562, 1562, 1562, 1561, 1517, 1562, + 1517, 1517, 1562, 2886, 2886, 1561, 1561, 2885, + 2885, 2885, 2885, 2885, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 2885, 2885, 2885, 2887, 2887, 2887, 2887, 2887, + + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1561, + 1517, 1561, 1562, 1562, 1517, 1517, 1562, 1562, + 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, + 1562, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1562, 1562, + 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, + 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, + 1562, 1517, 1517, 1517, 1562, 1517, 1517, 1517, + 1517, 1562, 1562, 1562, 1517, 1562, 1562, 1562, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1562, + 1517, 1562, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1516, 1517, 1516, 1517, 1516, 1517, 1517, 1517, + 1517, 1517, 1562, 1517, 1517, 1517, 1517, 1516, + 1517, 1516, 1516, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1561, 1517, 1517, 1517, 1517, 1561, 1561, 2885, + + 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1516, + 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, + 1516, 1516, 1516, 1516, 1516, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1516, 1516, 1516, 1516, 1516, 1516, + 1516, 1516, 1516, 1516, 1516, 1516, 1518, 1518, + 2888, 2888, 2888, 2888, 1518, 1518, 1519, 1519, + 1519, 1519, 1561, 2885, 2885, 2885, 2885, 2885, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 2886, 2886, 1561, 1561, + 1561, 1561, 2889, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 2886, 1561, 1561, 1561, 1561, 2886, 2886, 1561, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 2890, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1519, 1519, 1519, 1519, + 1519, 1519, 1519, 1519, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1519, 1519, 1519, 1519, + 1519, 1519, 1561, 1517, 1517, 1517, 1517, 1517, + + 2891, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 2891, 1517, 1517, 1517, 2891, 1517, 2891, + 1517, 2891, 1517, 2891, 1517, 1517, 1517, 2891, + 1517, 1517, 1517, 1517, 1517, 1517, 2891, 2891, + 1517, 1517, 1517, 1517, 2891, 1517, 2891, 2891, + 1517, 1517, 1517, 1517, 2891, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1561, 1561, 2885, 2885, 1562, 1562, 1562, + 1517, 1517, 1517, 1562, 1562, 1562, 1562, 1562, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 2892, 2892, + 2892, 2893, 2893, 2893, 1518, 1518, 1518, 1518, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1562, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1562, 1562, 1562, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1562, 1517, 1517, 1517, 1517, 1517, 1561, 1561, + 1561, 1561, 1561, 1561, 2886, 1561, 1561, 1561, + 2885, 2890, 2890, 2884, 2884, 2894, 2864, 2864, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1561, 1561, 1561, 2852, 2852, 2852, + 1561, 1561, 1561, 1561, 2890, 2890, 2890, 2884, + 2884, 2895, 2894, 2864, 2864, 2852, 2852, 2852, + + 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, + 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, + 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, + 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, + 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, + 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, + 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, + 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, + 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, + 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, + 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, + 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, + 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, + 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, + 2896, 2896, 2896, 2896, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 2895, 2895, 2895, + 2895, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2894, 2894, 2894, 2894, 2894, 2894, 2894, 2894, + 2894, 2894, 2894, 2894, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 2852, 2852, 2852, 2852, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 2852, 2852, 2852, 2852, 2852, 2852, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 2852, 2852, + 2864, 2864, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + + 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, + 1521, 1521, 1521, 1521, 2897, 2894, 2894, 2898, + 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885, + 2899, 2889, 2889, 2889, 2889, 2889, 2889, 2900, + 2890, 2890, 2890, 2890, 2890, 2890, 2889, 2890, + 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, + 2889, 2900, 2900, 2889, 2889, 2889, 2889, 2889, + 2889, 2889, 2890, 2901, 2889, 2889, 2889, 2894, + 2890, 2890, 2890, 2890, 2890, 2890, 2901, 2890, + 2890, 2890, 2890, 2890, 2884, 2895, 2895, 2895, 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, + 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2884, + 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, + 2884, 2884, 2884, 2884, 2895, 2895, 2895, 2895, + 2895, 2894, 2864, 2895, 2895, 2895, 2895, 2897, + 2864, 2852, 2895, 2894, 2895, 2895, 2895, 2895, + 2885, 2885, 2885, 2885, 2885, 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, - - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2891, 2891, 2891, 2891, 2891, 2885, 2885 + 2890, 2890, 2884, 2884, 2884, 2884, 2884, 2884, + 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, + 2895, 2895, 2895, 2864, 2864, 2894, 2894, 2894, + 2894, 2894, 2894, 2864, 2864, 2864, 2894, 2894, + 2895, 2895, 2895, 2895, 2895, 2902, 2902, 2895, + 2902, 2902, 2894, 2898, 2894, 2894, 2894, 2894, + 2885, 2895, 2895, 2894, 2894, 2894, 2894, 2894, + 2894, 2894, 2894, 2864, 2852, 2898, 2898, 2898, + 2884, 2900, 2900, 2900, 2900, 2900, 2900, 2900, + 2900, 2900, 2900, 2900, 2900, 2900, 2884, 2884, + 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2895, + 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, + 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, + 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, + + 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, + 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, + 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, + 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, + 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, + 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, + 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, + 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, + 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, + 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, + 2903, 2903, 2903, 2903, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, + 2895, 2895, 2895, 2895, 2895, 2895, 2852, 2852, + 2894, 2894, 2894, 2894, 2864, 2852, 2852, 2852, + 2894, 2894, 2894, 2852, 2852, 2852, 2852, 2852, + 2894, 2894, 2894, 2864, 2864, 2864, 2864, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2894, 2894, 2894, 2894, 2894, 2894, 2864, 2864, + 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, + 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, + 2864, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2864, 2864, 2864, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 203, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, + 1611, 1611, 1611, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 2904, 2905, 2906, 2907, 2908, 2909, 2910, 2911, + 2912, 2913, 203, 203, 203, 203, 203, 203, + + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2914, 2914, + + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2916, 2916, 2916, 2916, 2916, 1752, 1752, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, + 2917, 2917, 2917, 2917, 2917, 2917, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 2914, 2914, + + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, + 1743, 1743, 1743, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 203, 203, 203, 203, 2914, 2914, + + 1405, 2769, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2914, 2914 }; #define GET_PROP_INDEX(ucs4) \ @@ -6757,6 +6838,7 @@ { 27, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 2 }, { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 28, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, { 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 }, { 23, 10, 0, 0, -1, 16, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 2 }, { 10, 18, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 17, 4, 2 }, @@ -8089,12 +8171,13 @@ { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 2 }, { 23, 10, 0, 0, -1, 1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 2 }, { 24, 10, 0, 0, -1, -1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 2 }, - { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 5, 12, 2 }, { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 12, 2 }, { 26, 6, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 0, 2 }, { 22, 10, 0, 0, -1, -1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 2 }, { 25, 10, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 12, 2 }, { 25, 10, 0, 0, -1, 0, 4, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 12, 2 }, + { 25, 10, 0, 0, -1, 0, 4, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 5, 12, 2 }, { 25, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 25, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 26, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, @@ -8152,13 +8235,14 @@ { 29, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 2 }, { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 2 }, { 29, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, { 14, 0, 0, 0, -1, 0, 1, 85, { {0, -7517}, {0, 0}, {0, 0}, {0, -7517} }, 0, 10, 12, 7, 4 }, { 14, 0, 0, 0, -1, 0, 1, 85, { {1, 207}, {0, 0}, {0, 0}, {1, 207} }, 0, 10, 12, 7, 3 }, { 14, 0, 0, 0, -1, 0, 1, 85, { {1, 209}, {0, 0}, {0, 0}, {1, 209} }, 0, 10, 12, 7, 3 }, { 29, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 28}, {0, 0}, {0, 0}, {0, 28} }, 0, 10, 12, 7, 3 }, { 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 2 }, - { 15, 0, 0, 0, -1, 0, 4, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 2 }, + { 15, 0, 0, 0, -1, 0, 4, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 10, 12, 6, 2 }, { 29, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 29, 10, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 15, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 2 }, @@ -8176,6 +8260,7 @@ { 4, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3 }, { 4, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3 }, { 29, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, + { 26, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, { 26, 10, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 29, 10, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 26, 10, 0, 0, -1, 3, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, @@ -8206,17 +8291,20 @@ { 26, 10, 0, 0, -1, 7, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 26, 10, 0, 0, -1, -8, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 26, 10, 0, 0, -1, -7, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, { 21, 10, 0, 0, -1, 1, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 2 }, { 22, 10, 0, 0, -1, -1, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 2 }, { 29, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, { 29, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, { 29, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 26, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, { 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 29, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 5, 10, 0, 0, 1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, @@ -8231,6 +8319,7 @@ { 5, 2, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 26}, {0, 0}, {0, 0}, {0, 26} }, 0, 10, 12, 7, 2 }, + { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 26}, {0, 0}, {0, 0}, {0, 26} }, 14, 10, 12, 7, 2 }, { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -26}, {0, -26}, {0, 0} }, 0, 10, 12, 6, 2 }, { 5, 10, 0, 0, 0, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 5, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, @@ -8244,19 +8333,25 @@ { 5, 10, 0, 0, 8, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 5, 10, 0, 0, 9, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 5, 10, 0, 0, 0, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, - { 29, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 }, + { 26, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, + { 29, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 2 }, { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 2 }, { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 2 }, { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 6, 0, 2 }, { 21, 10, 0, 0, -1, 1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 2 }, { 22, 10, 0, 0, -1, -1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 2 }, { 5, 10, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, @@ -8300,6 +8395,7 @@ { 26, 10, 0, 0, -1, -2106, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 26, 10, 0, 0, -1, -2108, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 26, 10, 0, 0, -1, -2250, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 29, 10, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, @@ -8371,6 +8467,7 @@ { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 11, 2 }, { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 12, 2 }, { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, { 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 37 }, { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 2 }, { 4, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 }, @@ -8380,14 +8477,14 @@ { 0, 17, 228, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 }, { 0, 17, 222, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 }, { 1, 0, 224, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 26 }, - { 20, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, + { 20, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, { 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 8, 2 }, { 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 21, 8, 2 }, { 29, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, { 4, 0, 0, 0, -1, 0, 4, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 }, { 17, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 37 }, { 18, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 2 }, - { 25, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, + { 25, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 8, 34 }, { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 34 }, { 18, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 34 }, @@ -8417,6 +8514,8 @@ { 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 36 }, { 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 36 }, { 18, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 36 }, + { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, { 18, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 5, 8, 35 }, { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 26 }, { 29, 10, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 26 }, @@ -8425,6 +8524,7 @@ { 29, 10, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, { 5, 10, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, { 29, 10, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 26 }, + { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 0, 35 }, { 29, 0, 0, 0, -1, 0, 22, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, { 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 }, @@ -8779,6 +8879,7 @@ { 19, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 17, 14, 0, 2 }, { 21, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 2 }, { 22, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 2 }, + { 25, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, { 21, 10, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 2 }, { 22, 10, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 2 }, { 25, 6, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 1, 11, 2 }, @@ -9536,6 +9637,7 @@ { 29, 13, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 18, 13, 0, 0, -1, 0, 13, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 8 }, { 26, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 }, + { 13, 0, 0, 0, -1, 0, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 0 }, { 5, 2, 0, 0, 0, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 5, 2, 0, 0, 1, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 5, 2, 0, 0, 2, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, @@ -9547,38 +9649,46 @@ { 5, 2, 0, 0, 8, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 5, 2, 0, 0, 9, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 5, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, { 29, 0, 0, 0, -1, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, { 29, 0, 0, 0, -1, 0, 12, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 2 }, { 29, 0, 0, 0, -1, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 2 }, { 29, 0, 0, 0, -1, 0, 12, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 2 }, { 29, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 2 }, { 29, 10, 0, 0, -1, 0, 13, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 21, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 21, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, + { 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 10, 12, 7, 2 }, + { 29, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 10, 12, 7, 2 }, + { 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, { 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 29, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, { 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 6, 7, 28, 0, 2 }, { 29, 0, 0, 0, -1, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 34 }, - { 29, 0, 0, 0, -1, 0, 12, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, + { 29, 0, 0, 0, -1, 0, 12, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, + { 29, 0, 0, 0, -1, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, { 29, 0, 0, 0, -1, 0, 18, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 2 }, { 28, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 31, 0, 2 }, { 29, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 2 }, { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 }, - { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 2 }, + { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 2 }, { 3, 2, 0, 0, 0, 0, 23, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 2 }, { 3, 2, 0, 0, 1, 0, 23, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 2 }, { 3, 2, 0, 0, 2, 0, 23, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 2 }, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qunicodetables_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qunicodetables_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qunicodetables_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qunicodetables_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -118,10 +118,7 @@ GraphemeBreak_T, GraphemeBreak_LV, GraphemeBreak_LVT, - Graphemebreak_E_Base, - Graphemebreak_E_Modifier, - Graphemebreak_Glue_After_Zwj, - Graphemebreak_E_Base_GAZ, + GraphemeBreak_Extended_Pictographic, NumGraphemeBreakClasses }; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qunicodetools.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qunicodetools.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/text/qunicodetools.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/text/qunicodetools.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -44,6 +44,8 @@ #include "qharfbuzz_p.h" +#include <limits.h> + #define FLAG(x) (1 << (x)) QT_BEGIN_NAMESPACE @@ -55,45 +57,90 @@ // ----------------------------------------------------------------------------------------------------- // // The text boundaries determination algorithm. -// See http://www.unicode.org/reports/tr29/tr29-31.html +// See https://www.unicode.org/reports/tr29/tr29-37.html // // ----------------------------------------------------------------------------------------------------- namespace GB { -/* - * Most grapheme break rules can be implemented table driven, but rules GB10, GB12 and GB13 need a bit - * of special treatment. - */ -enum State : uchar { - Break, - Inside, - GB10, - GB10_2, - GB10_3, - GB13, // also covers GB12 +// This table is indexed by the grapheme break classes of two +// (adjacent) code points. +// The class of the first code point selects an entry. +// If the entry's bit at position second_cp_class is set +// (in other words: if entry & (1u << second_cp_class) is non-zero) +// then there is NO grapheme break between the two code points. + +using GBTableEntryType = quint16; + +// Check that we have enough bits in the table (in case +// NumGraphemeBreakClasses grows too much). +static_assert(sizeof(GBTableEntryType) * CHAR_BIT >= QUnicodeTables::NumGraphemeBreakClasses, + "Internal error: increase the size in bits of GBTableEntryType"); + +// GB9, GB9a +static const GBTableEntryType Extend_SpacingMark_ZWJ = + FLAG(QUnicodeTables::GraphemeBreak_Extend) + | FLAG(QUnicodeTables::GraphemeBreak_SpacingMark) + | FLAG(QUnicodeTables::GraphemeBreak_ZWJ); + +static const GBTableEntryType HardBreak = 0u; + +static const GBTableEntryType breakTable[QUnicodeTables::NumGraphemeBreakClasses] = { + Extend_SpacingMark_ZWJ, // Any + FLAG(QUnicodeTables::GraphemeBreak_LF), // CR + HardBreak, // LF + HardBreak, // Control + Extend_SpacingMark_ZWJ, // Extend + Extend_SpacingMark_ZWJ, // ZWJ + Extend_SpacingMark_ZWJ, // RegionalIndicator + (Extend_SpacingMark_ZWJ + | FLAG(QUnicodeTables::GraphemeBreak_Any) + | FLAG(QUnicodeTables::GraphemeBreak_Prepend) + | FLAG(QUnicodeTables::GraphemeBreak_L) + | FLAG(QUnicodeTables::GraphemeBreak_V) + | FLAG(QUnicodeTables::GraphemeBreak_T) + | FLAG(QUnicodeTables::GraphemeBreak_LV) + | FLAG(QUnicodeTables::GraphemeBreak_LVT) + | FLAG(QUnicodeTables::GraphemeBreak_RegionalIndicator) + | FLAG(QUnicodeTables::GraphemeBreak_Extended_Pictographic) + ), // Prepend + Extend_SpacingMark_ZWJ, // SpacingMark + (Extend_SpacingMark_ZWJ + | FLAG(QUnicodeTables::GraphemeBreak_L) + | FLAG(QUnicodeTables::GraphemeBreak_V) + | FLAG(QUnicodeTables::GraphemeBreak_LV) + | FLAG(QUnicodeTables::GraphemeBreak_LVT) + ), // L + (Extend_SpacingMark_ZWJ + | FLAG(QUnicodeTables::GraphemeBreak_V) + | FLAG(QUnicodeTables::GraphemeBreak_T) + ), // V + (Extend_SpacingMark_ZWJ + | FLAG(QUnicodeTables::GraphemeBreak_T) + ), // T + (Extend_SpacingMark_ZWJ + | FLAG(QUnicodeTables::GraphemeBreak_V) + | FLAG(QUnicodeTables::GraphemeBreak_T) + ), // LV + (Extend_SpacingMark_ZWJ + | FLAG(QUnicodeTables::GraphemeBreak_T) + ), // LVT + Extend_SpacingMark_ZWJ // Extended_Pictographic }; -static const State breakTable[QUnicodeTables::NumGraphemeBreakClasses][QUnicodeTables::NumGraphemeBreakClasses] = { -// Any CR LF Control Extend ZWJ RI Prepend S-Mark L V T LV LVT E_B E_M GAZ EBG - { Break , Break , Break , Break , Inside, Inside, Break , Break , Inside, Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Any - { Break , Break , Inside, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // CR - { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // LF - { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Control - { Break , Break , Break , Break , GB10_2, Inside, Break , Break , Inside, Break , Break , Break , Break , Break , Break , GB10_3, Break , Break }, // Extend - { Break , Break , Break , Break , Inside, Inside, Break , Break , Inside, Break , Break , Break , Break , Break , Break , Break , Inside, Inside }, // ZWJ - { Break , Break , Break , Break , Inside, Inside, GB13 , Break , Inside, Break , Break , Break , Break , Break , Break , Break , Break , Break }, // RegionalIndicator - { Inside, Break , Break , Break , Inside, Inside, Inside, Inside, Inside, Inside, Inside, Inside, Inside, Inside, Inside, Inside, Inside, Inside }, // Prepend - { Break , Break , Break , Break , Inside, Inside, Break , Break , Inside, Break , Break , Break , Break , Break , Break , Break , Break , Break }, // SpacingMark - { Break , Break , Break , Break , Inside, Inside, Break , Break , Inside, Inside, Inside, Break , Inside, Inside, Break , Break , Break , Break }, // L - { Break , Break , Break , Break , Inside, Inside, Break , Break , Inside, Break , Inside, Inside, Break , Break , Break , Break , Break , Break }, // V - { Break , Break , Break , Break , Inside, Inside, Break , Break , Inside, Break , Break , Inside, Break , Break , Break , Break , Break , Break }, // T - { Break , Break , Break , Break , Inside, Inside, Break , Break , Inside, Break , Inside, Inside, Break , Break , Break , Break , Break , Break }, // LV - { Break , Break , Break , Break , Inside, Inside, Break , Break , Inside, Break , Break , Inside, Break , Break , Break , Break , Break , Break }, // LVT - { Break , Break , Break , Break , GB10 , Inside, Break , Break , Inside, Break , Break , Break , Break , Break , Break , Inside, Break , Break }, // E_B - { Break , Break , Break , Break , Inside, Inside, Break , Break , Inside, Break , Break , Break , Break , Break , Break , Break , Break , Break }, // E_M - { Break , Break , Break , Break , Inside, Inside, Break , Break , Inside, Break , Break , Break , Break , Break , Break , Break , Break , Break }, // GAZ - { Break , Break , Break , Break , GB10 , Inside, Break , Break , Inside, Break , Break , Break , Break , Break , Break , Inside, Break , Break }, // EBG +static bool shouldBreakBetweenClasses(QUnicodeTables::GraphemeBreakClass first, + QUnicodeTables::GraphemeBreakClass second) +{ + return (breakTable[first] & FLAG(second)) == 0; +} + +// Some rules (GB11, GB12, GB13) cannot be represented by the table alone, +// so we need to store some local state. +enum class State : uchar { + Normal, + GB11_ExtPicExt, // saw a Extend after a Extended_Pictographic + GB11_ExtPicExtZWJ, // saw a ZWG after a Extended_Pictographic and zero or more Extend + GB12_13_RI, // saw a RegionalIndicator following a non-RegionalIndicator }; } // namespace GB @@ -101,7 +148,7 @@ static void getGraphemeBreaks(const ushort *string, quint32 len, QCharAttributes *attributes) { QUnicodeTables::GraphemeBreakClass lcls = QUnicodeTables::GraphemeBreak_LF; // to meet GB1 - GB::State state = GB::Break; // only required to track some of the rules + GB::State state = GB::State::Normal; for (quint32 i = 0; i != len; ++i) { quint32 pos = i; uint ucs4 = string[i]; @@ -116,37 +163,67 @@ const QUnicodeTables::Properties *prop = QUnicodeTables::properties(ucs4); QUnicodeTables::GraphemeBreakClass cls = (QUnicodeTables::GraphemeBreakClass) prop->graphemeBreakClass; - switch (GB::breakTable[lcls][cls]) { - case GB::Break: - attributes[pos].graphemeBoundary = true; - state = GB::Break; - break; - case GB::Inside: - state = GB::Break; - break; - case GB::GB10: - state = GB::GB10; + bool shouldBreak = GB::shouldBreakBetweenClasses(lcls, cls); + bool handled = false; + + switch (state) { + case GB::State::Normal: + break; // will deal with it below + + case GB::State::GB11_ExtPicExt: + Q_ASSERT(lcls == QUnicodeTables::GraphemeBreak_Extend); + if (cls == QUnicodeTables::GraphemeBreak_Extend) { + // keep going in the current state + Q_ASSERT(!shouldBreak); // GB9, do not break before Extend + handled = true; + } else if (cls == QUnicodeTables::GraphemeBreak_ZWJ) { + state = GB::State::GB11_ExtPicExtZWJ; + Q_ASSERT(!shouldBreak); // GB9, do not break before ZWJ + handled = true; + } else { + state = GB::State::Normal; + } break; - case GB::GB10_2: - if (state == GB::GB10 || state == GB::GB10_2) - state = GB::GB10_2; - else - state = GB::Break; + + case GB::State::GB11_ExtPicExtZWJ: + Q_ASSERT(lcls == QUnicodeTables::GraphemeBreak_ZWJ); + if (cls == QUnicodeTables::GraphemeBreak_Extended_Pictographic) { + shouldBreak = false; + handled = true; + } + + state = GB::State::Normal; break; - case GB::GB10_3: - if (state != GB::GB10 && state != GB::GB10_2) - attributes[pos].graphemeBoundary = true; - state = GB::Break; + + case GB::State::GB12_13_RI: + Q_ASSERT(lcls == QUnicodeTables::GraphemeBreak_RegionalIndicator); + if (cls == QUnicodeTables::GraphemeBreak_RegionalIndicator) { + shouldBreak = false; + handled = true; + } + + state = GB::State::Normal; break; - case GB::GB13: - if (state != GB::GB13) { - state = GB::GB13; - } else { - attributes[pos].graphemeBoundary = true; - state = GB::Break; + } + + if (!handled) { + Q_ASSERT(state == GB::State::Normal); + if (lcls == QUnicodeTables::GraphemeBreak_Extended_Pictographic) { // GB11 + if (cls == QUnicodeTables::GraphemeBreak_Extend) { + state = GB::State::GB11_ExtPicExt; + Q_ASSERT(!shouldBreak); // GB9, do not break before Extend + } else if (cls == QUnicodeTables::GraphemeBreak_ZWJ) { + state = GB::State::GB11_ExtPicExtZWJ; + Q_ASSERT(!shouldBreak); // GB9, do not break before ZWJ + } + } else if (cls == QUnicodeTables::GraphemeBreak_RegionalIndicator) { // GB12, GB13 + state = GB::State::GB12_13_RI; } } + if (shouldBreak) + attributes[pos].graphemeBoundary = true; + lcls = cls; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/thread/qfutureinterface.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/thread/qfutureinterface.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/thread/qfutureinterface.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/thread/qfutureinterface.h 2022-11-11 15:29:17.000000000 +0800 @@ -201,7 +201,7 @@ if (store.filterMode()) { const int resultCountBefore = store.count(); store.addResult<T>(index, result); - this->reportResultsReady(resultCountBefore, resultCountBefore + store.count()); + this->reportResultsReady(resultCountBefore, store.count()); } else { const int insertIndex = store.addResult<T>(index, result); this->reportResultsReady(insertIndex, insertIndex + 1); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/thread/qorderedmutexlocker_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/thread/qorderedmutexlocker_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/thread/qorderedmutexlocker_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/thread/qorderedmutexlocker_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -74,6 +74,28 @@ { relock(); } + + Q_DISABLE_COPY(QOrderedMutexLocker) + + void swap(QOrderedMutexLocker &other) noexcept + { + qSwap(this->mtx1, other.mtx1); + qSwap(this->mtx2, other.mtx2); + qSwap(this->locked, other.locked); + } + + QOrderedMutexLocker &operator=(QOrderedMutexLocker &&other) noexcept { + QOrderedMutexLocker moved(std::move(other)); + swap(moved); + return *this; + } + + QOrderedMutexLocker(QOrderedMutexLocker &&other) noexcept + : mtx1(std::exchange(other.mtx1, nullptr)) + , mtx2(std::exchange(other.mtx2, nullptr)) + , locked(std::exchange(other.locked, false)) + {} + ~QOrderedMutexLocker() { unlock(); @@ -88,6 +110,21 @@ } } + /*! + \internal + Can be called if the mutexes have been unlocked manually, and sets the + state of the QOrderedMutexLocker to unlocked. + The caller is expected to have unlocked both of them if they + are not the same. Calling this method when the QOrderedMutexLocker is + unlocked or when the provided mutexes have not actually been unlocked is + UB. + */ + void dismiss() + { + Q_ASSERT(locked); + locked = false; + } + void unlock() { if (locked) { @@ -153,11 +190,15 @@ class QOrderedMutexLocker { public: + Q_DISABLE_COPY(QOrderedMutexLocker) QOrderedMutexLocker(QBasicMutex *, QBasicMutex *) {} + QOrderedMutexLocker(QOrderedMutexLocker &&) = default; + QOrderedMutexLocker& operator=(QOrderedMutexLocker &&other) = default; ~QOrderedMutexLocker() {} void relock() {} void unlock() {} + void dismiss() {} static bool relock(QBasicMutex *, QBasicMutex *) { return false; } }; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/thread/qresultstore.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/thread/qresultstore.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/thread/qresultstore.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/thread/qresultstore.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -185,6 +185,7 @@ int ResultStoreBase::addResults(int index, const void *results, int vectorSize, int totalCount) { if (m_filterMode == false || vectorSize == totalCount) { + Q_ASSERT(vectorSize != 0); ResultItem resultItem(results, vectorSize); return insertResultItem(index, resultItem); } else { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/thread/qresultstore.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/thread/qresultstore.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/thread/qresultstore.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/thread/qresultstore.h 2022-11-11 15:29:17.000000000 +0800 @@ -151,12 +151,19 @@ template <typename T> int addResults(int index, const QVector<T> *results) { + if (results->empty()) // reject if results are empty + return -1; + return addResults(index, new QVector<T>(*results), results->count(), results->count()); } template <typename T> int addResults(int index, const QVector<T> *results, int totalCount) { + // reject if results are empty, and nothing is filtered away + if ((m_filterMode == false || results->count() == totalCount) && results->empty()) + return -1; + if (m_filterMode == true && results->count() != totalCount && 0 == results->count()) return addResults(index, nullptr, 0, totalCount); else diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/thread/qsemaphore.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/thread/qsemaphore.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/thread/qsemaphore.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/thread/qsemaphore.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -357,47 +357,31 @@ quintptr prevValue = u.fetchAndAddRelease(nn); if (futexNeedsWake(prevValue)) { #ifdef FUTEX_OP - if (!futexHasWaiterCount) { - /* - On 32-bit systems, all waiters are waiting on the same address, - so we'll wake them all and ask the kernel to clear the high bit. - - atomic { - int oldval = u; - u = oldval & ~(1 << 31); - futexWake(u, INT_MAX); - if (oldval == 0) // impossible condition - futexWake(u, INT_MAX); - } - */ - quint32 op = FUTEX_OP_ANDN | FUTEX_OP_OPARG_SHIFT; - quint32 oparg = 31; - quint32 cmp = FUTEX_OP_CMP_EQ; - quint32 cmparg = 0; - futexWakeOp(u, INT_MAX, INT_MAX, u, FUTEX_OP(op, oparg, cmp, cmparg)); - } else { + if (futexHasWaiterCount) { /* On 64-bit systems, the single-token waiters wait on the low half and the multi-token waiters wait on the upper half. So we ask the kernel to wake up n single-token waiters and all multi-token - waiters (if any), then clear the multi-token wait bit. + waiters (if any), and clear the multi-token wait bit. atomic { int oldval = *upper; - *upper = oldval & ~(1 << 31); + *upper = oldval | 0; futexWake(lower, n); - if (oldval < 0) // sign bit set + if (oldval != 0) // always true futexWake(upper, INT_MAX); } */ - quint32 op = FUTEX_OP_ANDN | FUTEX_OP_OPARG_SHIFT; - quint32 oparg = 31; - quint32 cmp = FUTEX_OP_CMP_LT; + quint32 op = FUTEX_OP_OR; + quint32 oparg = 0; + quint32 cmp = FUTEX_OP_CMP_NE; quint32 cmparg = 0; + u.fetchAndAndRelease(futexNeedsWakeAllBit - 1); futexWakeOp(*futexLow32(&u), n, INT_MAX, *futexHigh32(&u), FUTEX_OP(op, oparg, cmp, cmparg)); + return; } -#else - // Unset the bit and wake everyone. There are two possibibilies +#endif + // Unset the bit and wake everyone. There are two possibilities // under which a thread can set the bit between the AND and the // futexWake: // 1) it did see the new counter value, but it wasn't enough for @@ -405,8 +389,12 @@ // 2) it did not see the new counter value, in which case its // futexWait will fail. u.fetchAndAndRelease(futexNeedsWakeAllBit - 1); - futexWakeAll(u); -#endif + if (futexHasWaiterCount) { + futexWakeAll(*futexLow32(&u)); + futexWakeAll(*futexHigh32(&u)); + } else { + futexWakeAll(u); + } } return; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/thread/qthread_unix.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/thread/qthread_unix.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/thread/qthread_unix.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/thread/qthread_unix.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -300,7 +300,9 @@ thr->d_func()->setPriority(QThread::Priority(thr->d_func()->priority & ~ThreadPriorityResetFlag)); } - data->threadId.storeRelaxed(to_HANDLE(pthread_self())); + // threadId is set in QThread::start() + Q_ASSERT(pthread_equal(from_HANDLE<pthread_t>(data->threadId.loadRelaxed()), + pthread_self())); set_thread_data(data); data->ref(); @@ -384,6 +386,8 @@ d->interruptionRequested = false; d->isInFinish = false; + d->data->threadId.storeRelaxed(nullptr); + d->thread_done.wakeAll(); } #ifndef QT_NO_EXCEPTIONS @@ -755,6 +759,8 @@ if (!d->thread_done.wait(locker.mutex(), deadline)) return false; } + Q_ASSERT(d->data->threadId.loadRelaxed() == nullptr); + return true; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/thread/qthreadpool.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/thread/qthreadpool.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/thread/qthreadpool.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/thread/qthreadpool.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -195,6 +195,11 @@ ++activeThreads; thread->runnable = task; + + // Ensure that the thread has actually finished, otherwise the following + // start() has no effect. + thread->wait(); + Q_ASSERT(thread->isFinished()); thread->start(); return true; } @@ -788,6 +793,7 @@ const QThreadPoolThread *poolThread = qobject_cast<const QThreadPoolThread *>(thread); if (!poolThread) return false; + QMutexLocker locker(&d->mutex); return d->allThreads.contains(const_cast<QThreadPoolThread *>(poolThread)); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qcalendar.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qcalendar.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qcalendar.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qcalendar.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -851,7 +851,7 @@ This enumerated type is used to specify a choice of calendar system. \value Gregorian The default calendar, used internationally. - \value Julian An ancient Roman calendar with too few leap years. + \value Julian An ancient Roman calendar. \value Milankovic A revised Julian calendar used by some Orthodox churches. \value Jalali The Solar Hijri calendar (also called Persian). \value IslamicCivil The (tabular) Islamic Civil calendar. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qdatetime.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qdatetime.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qdatetime.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qdatetime.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1701,22 +1701,25 @@ return rfcDateImpl(string).date; default: case Qt::TextDate: { + // Accept only "ddd MMM d yyyy" form (in contrast with QDateTime), e.g. "Sun Dec 1 1974" QVector<QStringRef> parts = string.splitRef(QLatin1Char(' '), Qt::SkipEmptyParts); - - if (parts.count() != 4) - return QDate(); - - bool ok = false; - int year = parts.at(3).toInt(&ok); - int day = ok ? parts.at(2).toInt(&ok) : 0; - if (!ok || !day) + const int count = parts.count(); + bool ok = count > 3; + int year = ok ? parts.at(count - 1).toInt(&ok) : 0; + int day = ok ? parts.at(count - 2).toInt(&ok) : 0; + if (!ok || !day || !year) return QDate(); - const int month = fromShortMonthName(parts.at(1), year); - if (month == -1) // Month name matches no English or localised name. - return QDate(); - - return QDate(year, month, day); + // Some locales have multi-word month names: + int i = count - 3; + QString monthName = parts.at(i).toString(); + while (i > 0) { + const int month = fromShortMonthName(monthName, year); + if (month > 0) // Month name matches an English or localised name. + return QDate(year, month, day); + monthName = parts.at(--i) + QLatin1Char(' ') + monthName; + } + return QDate(); } case Qt::ISODate: // Semi-strict parsing, must be long enough and have punctuators as separators @@ -5378,49 +5381,66 @@ case Qt::TextDate: { QVector<QStringRef> parts = string.splitRef(QLatin1Char(' '), Qt::SkipEmptyParts); - if ((parts.count() < 5) || (parts.count() > 6)) + const int count = parts.count(); + if (count < 5) return QDateTime(); - // Accept "Sun Dec 1 13:02:00 1974" and "Sun 1. Dec 13:02:00 1974" + // Accept "Sun Dec 1 13:02:00 1974" and "Sun 1. Dec 13:02:00 1974" with + // optional GMT-based zone-suffix, with time and year in either order; + // and some locales have spaces even in short names of months and days. + int tail = count - 1, zonePart = 0; + if (parts.at(tail).startsWith(QLatin1String("GMT"), Qt::CaseInsensitive)) + zonePart = tail--; // Year and time can be in either order. // Guess which by looking for ':' in the time - int yearPart = 3; - int timePart = 3; - if (parts.at(3).contains(QLatin1Char(':'))) - yearPart = 4; - else if (parts.at(4).contains(QLatin1Char(':'))) - timePart = 4; + int yearPart = tail; + int timePart = tail; + if (parts.at(timePart).contains(QLatin1Char(':'))) + yearPart--; + else if (parts.at(timePart - 1).contains(QLatin1Char(':'))) + timePart--; else return QDateTime(); - int month = 0; - int day = 0; - bool ok = false; + int dayPart = tail - 2; // but may be earlier, with a comma after: + for (int i = 1; i < dayPart; i++) { + if (parts.at(i).endsWith(QLatin1Char('.'))) + dayPart = i; // exits the loop + } + bool ok = false; int year = parts.at(yearPart).toInt(&ok); - if (!ok || year == 0) + int day = 0; + + if (ok && year) { + QStringRef dayStr = parts.at(dayPart); + if (dayStr.endsWith(QLatin1Char('.'))) + dayStr.chop(1); + day = dayStr.toInt(&ok); + } + if (!ok || !year || !day) return QDateTime(); - // Next try month then day - month = fromShortMonthName(parts.at(1), year); - if (month) - day = parts.at(2).toInt(&ok); - - // If failed, try day then month - if (!ok || !month || !day) { - month = fromShortMonthName(parts.at(2), year); - if (month) { - QStringRef dayStr = parts.at(1); - if (dayStr.endsWith(QLatin1Char('.'))) { - dayStr = dayStr.left(dayStr.size() - 1); - day = dayStr.toInt(&ok); - } + int month = 0; + if (dayPart < tail - 2) { + // Easy case, month is the parts from dayPart + 1 to count - 3 + int i = dayPart + 1; + QString monthName = parts.at(i).toString(); + while (++i < tail - 1) + monthName += QLatin1Char(' ') + parts.at(i); + month = fromShortMonthName(monthName, year); + } else { + int i = dayPart - 1; + QString monthName = parts.at(i).toString(); + while (i > 0) { + month = fromShortMonthName(monthName, year); + if (month > 0) + break; + monthName = parts.at(--i) + QLatin1Char(' ') + monthName; } } - - // If both failed, give up - if (!ok || !month || !day) + if (month <= 0) return QDateTime(); QDate date(year, month, day); @@ -5464,21 +5484,15 @@ if (!time.isValid()) return QDateTime(); - if (parts.count() == 5) + if (!zonePart) return QDateTime(date, time, Qt::LocalTime); - QStringView tz = parts.at(5); - if (!tz.startsWith(QLatin1String("GMT"), Qt::CaseInsensitive)) - return QDateTime(); - tz = tz.mid(3); - if (!tz.isEmpty()) { - int offset = fromOffsetString(tz, &ok); - if (!ok) - return QDateTime(); - return QDateTime(date, time, Qt::OffsetFromUTC, offset); - } else { + const QStringView tz = parts.at(zonePart).mid(3); + if (tz.isEmpty()) return QDateTime(date, time, Qt::UTC); - } + + int offset = fromOffsetString(tz, &ok); + return ok ? QDateTime(date, time, Qt::OffsetFromUTC, offset) : QDateTime(); } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qdatetimeparser.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qdatetimeparser.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qdatetimeparser.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qdatetimeparser.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1385,21 +1385,34 @@ // If hour wasn't specified, check the default we're using exists on the // given date (which might be a spring-forward, skipping an hour). - if (parserType == QMetaType::QDateTime && !(isSet & HourSectionMask) && !when.isValid()) { - qint64 msecs = when.toMSecsSinceEpoch(); - // Fortunately, that gets a useful answer, even though when is invalid ... - const QDateTime replace = + if (!(isSet & HourSectionMask) && !when.isValid()) { + switch (parserType) { + case QMetaType::QDateTime: { + qint64 msecs = when.toMSecsSinceEpoch(); + // Fortunately, that gets a useful answer, even though when is invalid ... + const QDateTime replace = #if QT_CONFIG(timezone) - tspec == Qt::TimeZone - ? QDateTime::fromMSecsSinceEpoch(msecs, timeZone) : + tspec == Qt::TimeZone ? QDateTime::fromMSecsSinceEpoch(msecs, timeZone) : #endif - QDateTime::fromMSecsSinceEpoch(msecs, tspec, zoneOffset); - const QTime tick = replace.time(); - if (replace.date() == date - && (!(isSet & MinuteSection) || tick.minute() == minute) - && (!(isSet & SecondSection) || tick.second() == second) - && (!(isSet & MSecSection) || tick.msec() == msec)) { - return StateNode(replace, state, padding, conflicts); + QDateTime::fromMSecsSinceEpoch(msecs, tspec, zoneOffset); + const QTime tick = replace.time(); + if (replace.date() == date + && (!(isSet & MinuteSection) || tick.minute() == minute) + && (!(isSet & SecondSection) || tick.second() == second) + && (!(isSet & MSecSection) || tick.msec() == msec)) { + return StateNode(replace, state, padding, conflicts); + } + } break; + case QMetaType::QDate: + // Don't care about time, so just use start of day (and ignore spec): + return StateNode(date.startOfDay(Qt::UTC), state, padding, conflicts); + break; + case QMetaType::QTime: + // Don't care about date or spec, so pick a safe spec: + return StateNode(QDateTime(date, time, Qt::UTC), state, padding, conflicts); + default: + Q_UNREACHABLE(); + return StateNode(); } } @@ -1737,6 +1750,24 @@ int index = std::distance(str.cbegin(), std::find_if(str.cbegin(), str.cend(), invalidZoneNameCharacter)); + // Limit name fragments (between slashes) to 20 characters. + // (Valid time-zone IDs are allowed up to 14 and Android has quirks up to 17.) + // Limit number of fragments to six; no known zone name has more than four. + int lastSlash = -1; + int count = 0; + Q_ASSERT(index <= str.size()); + while (lastSlash < index) { + int slash = str.indexOf(QLatin1Char('/'), lastSlash + 1); + if (slash < 0) + slash = index; // i.e. the end of the candidate text + else if (++count > 5) + index = slash; // Truncate + if (slash - lastSlash > 20) + index = lastSlash + 20; // Truncate + // If any of those conditions was met, index <= slash, so this exits the loop: + lastSlash = slash; + } + for (; index > systemLength; --index) { // Find longest match str.truncate(index); QTimeZone zone(str.toLatin1()); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qhijricalendar_data_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qhijricalendar_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qhijricalendar_data_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qhijricalendar_data_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -59,8 +59,8 @@ // GENERATED PART STARTS HERE /* - This part of the file was generated on 2020-11-09 from the - Common Locale Data Repository v38 + This part of the file was generated on 2021-04-26 from the + Common Locale Data Repository v39 http://www.unicode.org/cldr/ @@ -505,7 +505,7 @@ { 138, 7, 157,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Yoruba/Latin/Nigeria { 138, 7, 23,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Yoruba/Latin/Benin { 140, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Zulu/Latin/South Africa - { 141, 7, 161,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Norwegian Nynorsk/Latin/Norway + { 141, 7, 161,{ 5041,79 },{ 5120,107 },{ 215,27 },{ 5227,79 },{ 5120,107 },{ 215,27 }}, // Norwegian Nynorsk/Latin/Norway { 142, 7, 27,{ 10423,75 },{ 10498,100 },{ 215,27 },{ 10423,75 },{ 10498,100 },{ 215,27 }}, // Bosnian/Latin/Bosnia And Herzegowina { 142, 2, 27,{ 6638,70 },{ 6708,91 },{ 215,27 },{ 6638,70 },{ 6799,98 },{ 215,27 }}, // Bosnian/Cyrillic/Bosnia And Herzegowina { 143, 29, 131,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Divehi/Thaana/Maldives diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qjalalicalendar_data_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qjalalicalendar_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qjalalicalendar_data_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qjalalicalendar_data_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -59,8 +59,8 @@ // GENERATED PART STARTS HERE /* - This part of the file was generated on 2020-11-09 from the - Common Locale Data Repository v38 + This part of the file was generated on 2021-04-26 from the + Common Locale Data Repository v39 http://www.unicode.org/cldr/ @@ -505,7 +505,7 @@ { 138, 7, 157,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Yoruba/Latin/Nigeria { 138, 7, 23,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Yoruba/Latin/Benin { 140, 7, 195,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Zulu/Latin/South Africa - { 141, 7, 161,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Norwegian Nynorsk/Latin/Norway + { 141, 7, 161,{ 682,84 },{ 682,84 },{ 185,27 },{ 682,84 },{ 682,84 },{ 185,27 }}, // Norwegian Nynorsk/Latin/Norway { 142, 7, 27,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Bosnian/Latin/Bosnia And Herzegowina { 142, 2, 27,{ 3275,81 },{ 3275,81 },{ 185,27 },{ 3275,81 },{ 3275,81 },{ 185,27 }}, // Bosnian/Cyrillic/Bosnia And Herzegowina { 143, 29, 131,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Divehi/Thaana/Maldives diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qromancalendar_data_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qromancalendar_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qromancalendar_data_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qromancalendar_data_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -59,7 +59,7 @@ // GENERATED PART STARTS HERE /* - This part of the file was generated on 2020-11-09 from the + This part of the file was generated on 2021-04-26 from the Common Locale Data Repository v38 http://www.unicode.org/cldr/ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qtimezoneprivate.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qtimezoneprivate.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qtimezoneprivate.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qtimezoneprivate.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -356,26 +356,33 @@ // Check we do *really* have transitions for this zone: if (tran.atMSecsSinceEpoch != invalidMSecs()) { - - /* - So now tran is definitely before and nextTran is either after or only - slightly before. One is standard time; we interpret the other as DST - (although the transition might in fact by a change in standard offset). Our - hint tells us which of those to use (defaulting to standard if no hint): try - it first; if that fails, try the other; if both fail, life's tricky. - */ + /* So now tran is definitely before ... */ Q_ASSERT(forLocalMSecs < 0 || forLocalMSecs - tran.offsetFromUtc * 1000 > tran.atMSecsSinceEpoch); + // Work out the UTC value it would make sense to return if using tran: + tran.atMSecsSinceEpoch = forLocalMSecs - tran.offsetFromUtc * 1000; + // If we know of no transition after it, the answer is easy: const qint64 nextStart = nextTran.atMSecsSinceEpoch; - // Work out the UTC values it might make sense to return: + if (nextStart == invalidMSecs()) + return tran; + + /* + ... and nextTran is either after or only slightly before. We're + going to interpret one as standard time, the other as DST + (although the transition might in fact be a change in standard + offset, or a change in DST offset, e.g. to/from double-DST). Our + hint tells us which of those to use (defaulting to standard if no + hint): try it first; if that fails, try the other; if both fail, + life's tricky. + */ + // Work out the UTC value it would make sense to return if using nextTran: nextTran.atMSecsSinceEpoch = forLocalMSecs - nextTran.offsetFromUtc * 1000; - tran.atMSecsSinceEpoch = forLocalMSecs - tran.offsetFromUtc * 1000; // If both or neither have zero DST, treat the one with lower offset as standard: const bool nextIsDst = !nextTran.daylightTimeOffset == !tran.daylightTimeOffset ? tran.offsetFromUtc < nextTran.offsetFromUtc : nextTran.daylightTimeOffset; // If that agrees with hint > 0, our first guess is to use nextTran; else tran. - const bool nextFirst = nextIsDst == (hint > 0) && nextStart != invalidMSecs(); + const bool nextFirst = nextIsDst == (hint > 0); for (int i = 0; i < 2; i++) { /* On the first pass, the case we consider is what hint told us to expect @@ -384,12 +391,11 @@ by which time the second case, that we're trying, is likely right. */ if (nextFirst ? i == 0 : i) { - Q_ASSERT(nextStart != invalidMSecs()); if (nextStart <= nextTran.atMSecsSinceEpoch) return nextTran; } else { // If next is invalid, nextFirst is false, to route us here first: - if (nextStart == invalidMSecs() || nextStart > tran.atMSecsSinceEpoch) + if (nextStart > tran.atMSecsSinceEpoch) return tran; } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qtimezoneprivate_data_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qtimezoneprivate_data_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qtimezoneprivate_data_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qtimezoneprivate_data_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -115,8 +115,8 @@ // GENERATED PART STARTS HERE /* - This part of the file was generated on 2021-01-27 from the - Common Locale Data Repository v38.1 file supplemental/windowsZones.xml + This part of the file was generated on 2021-04-26 from the + Common Locale Data Repository v39 file supplemental/windowsZones.xml http://www.unicode.org/cldr/ @@ -215,283 +215,284 @@ { 36, 194, 2061 }, // E. Africa Standard Time / Somalia { 36, 210, 2078 }, // E. Africa Standard Time / Tanzania { 36, 221, 2099 }, // E. Africa Standard Time / Uganda - { 36, 254, 2114 }, // E. Africa Standard Time / South Sudan - { 37, 13, 2126 }, // E. Australia Standard Time / Australia - { 38, 141, 2164 }, // E. Europe Standard Time / Moldova - { 39, 30, 2180 }, // E. South America Standard Time / Brazil - { 40, 43, 2198 }, // Easter Island Standard Time / Chile - { 41, 0, 2213 }, // Eastern Standard Time / AnyCountry - { 41, 16, 2221 }, // Eastern Standard Time / Bahamas - { 41, 38, 2236 }, // Eastern Standard Time / Canada - { 41, 225, 2341 }, // Eastern Standard Time / United States - { 42, 139, 2498 }, // Eastern Standard Time (Mexico) / Mexico - { 43, 64, 2513 }, // Egypt Standard Time / Egypt - { 44, 178, 2526 }, // Ekaterinburg Standard Time / Russia - { 45, 72, 2545 }, // Fiji Standard Time / Fiji - { 46, 33, 2558 }, // FLE Standard Time / Bulgaria - { 46, 68, 2571 }, // FLE Standard Time / Estonia - { 46, 73, 2586 }, // FLE Standard Time / Finland - { 46, 118, 2602 }, // FLE Standard Time / Latvia - { 46, 124, 2614 }, // FLE Standard Time / Lithuania - { 46, 222, 2629 }, // FLE Standard Time / Ukraine - { 46, 248, 2675 }, // FLE Standard Time / Aland Islands - { 47, 81, 2692 }, // Georgian Standard Time / Georgia - { 48, 71, 2705 }, // GMT Standard Time / Faroe Islands - { 48, 75, 2721 }, // GMT Standard Time / Guernsey - { 48, 104, 2737 }, // GMT Standard Time / Ireland - { 48, 173, 2751 }, // GMT Standard Time / Portugal - { 48, 197, 2782 }, // GMT Standard Time / Spain - { 48, 224, 2798 }, // GMT Standard Time / United Kingdom - { 48, 251, 2812 }, // GMT Standard Time / Isle Of Man - { 48, 252, 2831 }, // GMT Standard Time / Jersey - { 49, 86, 2845 }, // Greenland Standard Time / Greenland - { 50, 34, 2861 }, // Greenwich Standard Time / Burkina Faso - { 50, 53, 2880 }, // Greenwich Standard Time / Ivory Coast - { 50, 80, 2895 }, // Greenwich Standard Time / Gambia - { 50, 83, 2909 }, // Greenwich Standard Time / Ghana - { 50, 91, 2922 }, // Greenwich Standard Time / Guinea - { 50, 92, 2937 }, // Greenwich Standard Time / Guinea Bissau - { 50, 99, 2951 }, // Greenwich Standard Time / Iceland - { 50, 121, 2970 }, // Greenwich Standard Time / Liberia - { 50, 132, 2986 }, // Greenwich Standard Time / Mali - { 50, 136, 3000 }, // Greenwich Standard Time / Mauritania - { 50, 187, 3018 }, // Greenwich Standard Time / Senegal - { 50, 189, 3031 }, // Greenwich Standard Time / Sierra Leone - { 50, 199, 3047 }, // Greenwich Standard Time / Saint Helena - { 50, 212, 3066 }, // Greenwich Standard Time / Togo - { 51, 56, 3078 }, // GTB Standard Time / Cyprus - { 51, 85, 3106 }, // GTB Standard Time / Greece - { 51, 177, 3120 }, // GTB Standard Time / Romania - { 52, 94, 3137 }, // Haiti Standard Time / Haiti - { 53, 0, 3160 }, // Hawaiian Standard Time / AnyCountry - { 53, 51, 3171 }, // Hawaiian Standard Time / Cook Islands - { 53, 77, 3189 }, // Hawaiian Standard Time / French Polynesia - { 53, 225, 3204 }, // Hawaiian Standard Time / United States - { 53, 226, 3221 }, // Hawaiian Standard Time / United States Minor Outlying Islands - { 54, 100, 3238 }, // India Standard Time / India - { 55, 102, 3252 }, // Iran Standard Time / Iran - { 56, 105, 3264 }, // Israel Standard Time / Israel - { 57, 109, 3279 }, // Jordan Standard Time / Jordan - { 58, 178, 3290 }, // Kaliningrad Standard Time / Russia - { 59, 114, 3309 }, // Korea Standard Time / South Korea - { 60, 122, 3320 }, // Libya Standard Time / Libya - { 61, 0, 3335 }, // Line Islands Standard Time / AnyCountry - { 61, 112, 3346 }, // Line Islands Standard Time / Kiribati - { 62, 13, 3365 }, // Lord Howe Standard Time / Australia - { 63, 178, 3385 }, // Magadan Standard Time / Russia - { 64, 43, 3398 }, // Magallanes Standard Time / Chile - { 65, 77, 3419 }, // Marquesas Standard Time / French Polynesia - { 66, 137, 3437 }, // Mauritius Standard Time / Mauritius - { 66, 176, 3454 }, // Mauritius Standard Time / Reunion - { 66, 188, 3469 }, // Mauritius Standard Time / Seychelles - { 67, 119, 3481 }, // Middle East Standard Time / Lebanon - { 68, 227, 3493 }, // Montevideo Standard Time / Uruguay - { 69, 145, 3512 }, // Morocco Standard Time / Morocco - { 69, 236, 3530 }, // Morocco Standard Time / Western Sahara - { 70, 139, 3546 }, // Mountain Standard Time (Mexico) / Mexico - { 71, 0, 3581 }, // Mountain Standard Time / AnyCountry - { 71, 38, 3589 }, // Mountain Standard Time / Canada - { 71, 139, 3663 }, // Mountain Standard Time / Mexico - { 71, 225, 3679 }, // Mountain Standard Time / United States - { 72, 46, 3708 }, // Myanmar Standard Time / Cocos Islands - { 72, 147, 3721 }, // Myanmar Standard Time / Myanmar - { 73, 178, 3734 }, // N. Central Asia Standard Time / Russia - { 74, 148, 3751 }, // Namibia Standard Time / Namibia - { 75, 150, 3767 }, // Nepal Standard Time / Nepal - { 76, 8, 3781 }, // New Zealand Standard Time / Antarctica - { 76, 154, 3800 }, // New Zealand Standard Time / New Zealand - { 77, 38, 3817 }, // Newfoundland Standard Time / Canada - { 78, 159, 3834 }, // Norfolk Standard Time / Norfolk Island - { 79, 178, 3850 }, // North Asia East Standard Time / Russia - { 80, 178, 3863 }, // North Asia Standard Time / Russia - { 81, 113, 3898 }, // North Korea Standard Time / North Korea - { 82, 178, 3913 }, // Omsk Standard Time / Russia - { 83, 43, 3923 }, // Pacific SA Standard Time / Chile - { 84, 0, 3940 }, // Pacific Standard Time / AnyCountry - { 84, 38, 3948 }, // Pacific Standard Time / Canada - { 84, 225, 3966 }, // Pacific Standard Time / United States - { 85, 139, 3986 }, // Pacific Standard Time (Mexico) / Mexico - { 86, 163, 4023 }, // Pakistan Standard Time / Pakistan - { 87, 168, 4036 }, // Paraguay Standard Time / Paraguay - { 88, 110, 4053 }, // Qyzylorda Standard Time / Kazakhstan - { 89, 21, 4068 }, // Romance Standard Time / Belgium - { 89, 58, 4084 }, // Romance Standard Time / Denmark - { 89, 74, 4102 }, // Romance Standard Time / France - { 89, 197, 4115 }, // Romance Standard Time / Spain - { 90, 178, 4142 }, // Russia Time Zone 3 / Russia - { 91, 178, 4156 }, // Russia Time Zone 10 / Russia - { 92, 178, 4175 }, // Russia Time Zone 11 / Russia - { 93, 178, 4202 }, // Russian Standard Time / Russia - { 93, 222, 4229 }, // Russian Standard Time / Ukraine - { 94, 0, 4247 }, // SA Eastern Standard Time / AnyCountry - { 94, 8, 4257 }, // SA Eastern Standard Time / Antarctica - { 94, 30, 4294 }, // SA Eastern Standard Time / Brazil - { 94, 70, 4373 }, // SA Eastern Standard Time / Falkland Islands - { 94, 76, 4390 }, // SA Eastern Standard Time / French Guiana - { 94, 202, 4406 }, // SA Eastern Standard Time / Suriname - { 95, 0, 4425 }, // SA Pacific Standard Time / AnyCountry - { 95, 30, 4435 }, // SA Pacific Standard Time / Brazil - { 95, 38, 4471 }, // SA Pacific Standard Time / Canada - { 95, 40, 4493 }, // SA Pacific Standard Time / Cayman Islands - { 95, 47, 4508 }, // SA Pacific Standard Time / Colombia - { 95, 63, 4523 }, // SA Pacific Standard Time / Ecuador - { 95, 107, 4541 }, // SA Pacific Standard Time / Jamaica - { 95, 166, 4557 }, // SA Pacific Standard Time / Panama - { 95, 169, 4572 }, // SA Pacific Standard Time / Peru - { 96, 0, 4585 }, // SA Western Standard Time / AnyCountry - { 96, 7, 4595 }, // SA Western Standard Time / Anguilla - { 96, 9, 4612 }, // SA Western Standard Time / Antigua And Barbuda - { 96, 12, 4628 }, // SA Western Standard Time / Aruba - { 96, 19, 4642 }, // SA Western Standard Time / Barbados - { 96, 26, 4659 }, // SA Western Standard Time / Bolivia - { 96, 30, 4674 }, // SA Western Standard Time / Brazil - { 96, 38, 4727 }, // SA Western Standard Time / Canada - { 96, 60, 4748 }, // SA Western Standard Time / Dominica - { 96, 61, 4765 }, // SA Western Standard Time / Dominican Republic - { 96, 87, 4787 }, // SA Western Standard Time / Grenada - { 96, 88, 4803 }, // SA Western Standard Time / Guadeloupe - { 96, 93, 4822 }, // SA Western Standard Time / Guyana - { 96, 135, 4837 }, // SA Western Standard Time / Martinique - { 96, 144, 4856 }, // SA Western Standard Time / Montserrat - { 96, 152, 4875 }, // SA Western Standard Time / Cura Sao - { 96, 174, 4891 }, // SA Western Standard Time / Puerto Rico - { 96, 180, 4911 }, // SA Western Standard Time / Saint Kitts And Nevis - { 96, 181, 4928 }, // SA Western Standard Time / Saint Lucia - { 96, 182, 4945 }, // SA Western Standard Time / Saint Vincent And The Grenadines - { 96, 215, 4964 }, // SA Western Standard Time / Trinidad And Tobago - { 96, 233, 4986 }, // SA Western Standard Time / British Virgin Islands - { 96, 234, 5002 }, // SA Western Standard Time / United States Virgin Islands - { 96, 244, 5020 }, // SA Western Standard Time / Saint Barthelemy - { 96, 245, 5042 }, // SA Western Standard Time / Saint Martin - { 96, 255, 5058 }, // SA Western Standard Time / Bonaire - { 96, 256, 5077 }, // SA Western Standard Time / Sint Maarten - { 97, 200, 5099 }, // Saint Pierre Standard Time / Saint Pierre And Miquelon - { 98, 178, 5116 }, // Sakhalin Standard Time / Russia - { 99, 183, 5130 }, // Samoa Standard Time / Samoa - { 100, 185, 5143 }, // Sao Tome Standard Time / Sao Tome And Principe - { 101, 178, 5159 }, // Saratov Standard Time / Russia - { 102, 0, 5174 }, // SE Asia Standard Time / AnyCountry - { 102, 8, 5184 }, // SE Asia Standard Time / Antarctica - { 102, 36, 5201 }, // SE Asia Standard Time / Cambodia - { 102, 45, 5217 }, // SE Asia Standard Time / Christmas Island - { 102, 101, 5234 }, // SE Asia Standard Time / Indonesia - { 102, 117, 5262 }, // SE Asia Standard Time / Laos - { 102, 211, 5277 }, // SE Asia Standard Time / Thailand - { 102, 232, 5290 }, // SE Asia Standard Time / Vietnam - { 103, 0, 5302 }, // Singapore Standard Time / AnyCountry - { 103, 32, 5312 }, // Singapore Standard Time / Brunei - { 103, 101, 5324 }, // Singapore Standard Time / Indonesia - { 103, 130, 5338 }, // Singapore Standard Time / Malaysia - { 103, 170, 5369 }, // Singapore Standard Time / Philippines - { 103, 190, 5381 }, // Singapore Standard Time / Singapore - { 104, 0, 5396 }, // South Africa Standard Time / AnyCountry - { 104, 28, 5406 }, // South Africa Standard Time / Botswana - { 104, 35, 5422 }, // South Africa Standard Time / Burundi - { 104, 49, 5439 }, // South Africa Standard Time / Congo Kinshasa - { 104, 120, 5457 }, // South Africa Standard Time / Lesotho - { 104, 129, 5471 }, // South Africa Standard Time / Malawi - { 104, 146, 5487 }, // South Africa Standard Time / Mozambique - { 104, 179, 5501 }, // South Africa Standard Time / Rwanda - { 104, 195, 5515 }, // South Africa Standard Time / South Africa - { 104, 204, 5535 }, // South Africa Standard Time / Swaziland - { 104, 239, 5550 }, // South Africa Standard Time / Zambia - { 104, 240, 5564 }, // South Africa Standard Time / Zimbabwe - { 105, 198, 5578 }, // Sri Lanka Standard Time / Sri Lanka - { 106, 201, 5591 }, // Sudan Standard Time / Sudan - { 107, 207, 5607 }, // Syria Standard Time / Syria - { 108, 208, 5621 }, // Taipei Standard Time / Taiwan - { 109, 13, 5633 }, // Tasmania Standard Time / Australia - { 110, 30, 5688 }, // Tocantins Standard Time / Brazil - { 111, 0, 5706 }, // Tokyo Standard Time / AnyCountry - { 111, 62, 5716 }, // Tokyo Standard Time / East Timor - { 111, 101, 5726 }, // Tokyo Standard Time / Indonesia - { 111, 108, 5740 }, // Tokyo Standard Time / Japan - { 111, 164, 5751 }, // Tokyo Standard Time / Palau - { 112, 178, 5765 }, // Tomsk Standard Time / Russia - { 113, 214, 5776 }, // Tonga Standard Time / Tonga - { 114, 178, 5794 }, // Transbaikal Standard Time / Russia - { 115, 217, 5805 }, // Turkey Standard Time / Turkey - { 116, 219, 5821 }, // Turks And Caicos Standard Time / Turks And Caicos Islands - { 117, 143, 5840 }, // Ulaanbaatar Standard Time / Mongolia - { 118, 225, 5873 }, // US Eastern Standard Time / United States - { 119, 0, 5940 }, // US Mountain Standard Time / AnyCountry - { 119, 139, 5950 }, // US Mountain Standard Time / Mexico - { 119, 225, 5969 }, // US Mountain Standard Time / United States - { 120, 0, 5985 }, // UTC-11 / AnyCountry - { 120, 4, 5996 }, // UTC-11 / American Samoa - { 120, 158, 6014 }, // UTC-11 / Niue - { 120, 226, 6027 }, // UTC-11 / United States Minor Outlying Islands - { 121, 0, 6042 }, // UTC-09 / AnyCountry - { 121, 77, 6052 }, // UTC-09 / French Polynesia - { 122, 0, 6068 }, // UTC-08 / AnyCountry - { 122, 171, 6078 }, // UTC-08 / Pitcairn - { 123, 0, 6095 }, // UTC-02 / AnyCountry - { 123, 30, 6105 }, // UTC-02 / Brazil - { 123, 196, 6121 }, // UTC-02 / South Georgia And The South Sandwich Islands - { 124, 0, 6144 }, // UTC / AnyCountry - { 124, 86, 6160 }, // UTC / Greenland - { 125, 0, 6181 }, // UTC+12 / AnyCountry - { 125, 112, 6192 }, // UTC+12 / Kiribati - { 125, 134, 6207 }, // UTC+12 / Marshall Islands - { 125, 149, 6240 }, // UTC+12 / Nauru - { 125, 220, 6254 }, // UTC+12 / Tuvalu - { 125, 226, 6271 }, // UTC+12 / United States Minor Outlying Islands - { 125, 235, 6284 }, // UTC+12 / Wallis And Futuna Islands - { 126, 0, 6299 }, // UTC+13 / AnyCountry - { 126, 112, 6310 }, // UTC+13 / Kiribati - { 126, 213, 6328 }, // UTC+13 / Tokelau - { 127, 231, 6344 }, // Venezuela Standard Time / Venezuela - { 128, 178, 6360 }, // Vladivostok Standard Time / Russia - { 129, 178, 6391 }, // Volgograd Standard Time / Russia - { 130, 13, 6408 }, // W. Australia Standard Time / Australia - { 131, 0, 6424 }, // W. Central Africa Standard Time / AnyCountry - { 131, 3, 6434 }, // W. Central Africa Standard Time / Algeria - { 131, 6, 6449 }, // W. Central Africa Standard Time / Angola - { 131, 23, 6463 }, // W. Central Africa Standard Time / Benin - { 131, 37, 6481 }, // W. Central Africa Standard Time / Cameroon - { 131, 41, 6495 }, // W. Central Africa Standard Time / Central African Republic - { 131, 42, 6509 }, // W. Central Africa Standard Time / Chad - { 131, 49, 6525 }, // W. Central Africa Standard Time / Congo Kinshasa - { 131, 50, 6541 }, // W. Central Africa Standard Time / Congo Brazzaville - { 131, 66, 6560 }, // W. Central Africa Standard Time / Equatorial Guinea - { 131, 79, 6574 }, // W. Central Africa Standard Time / Gabon - { 131, 156, 6592 }, // W. Central Africa Standard Time / Niger - { 131, 157, 6606 }, // W. Central Africa Standard Time / Nigeria - { 131, 216, 6619 }, // W. Central Africa Standard Time / Tunisia - { 132, 5, 6632 }, // W. Europe Standard Time / Andorra - { 132, 14, 6647 }, // W. Europe Standard Time / Austria - { 132, 82, 6661 }, // W. Europe Standard Time / Germany - { 132, 84, 6691 }, // W. Europe Standard Time / Gibraltar - { 132, 106, 6708 }, // W. Europe Standard Time / Italy - { 132, 123, 6720 }, // W. Europe Standard Time / Liechtenstein - { 132, 125, 6733 }, // W. Europe Standard Time / Luxembourg - { 132, 133, 6751 }, // W. Europe Standard Time / Malta - { 132, 142, 6764 }, // W. Europe Standard Time / Monaco - { 132, 151, 6778 }, // W. Europe Standard Time / Netherlands - { 132, 161, 6795 }, // W. Europe Standard Time / Norway - { 132, 184, 6807 }, // W. Europe Standard Time / San Marino - { 132, 203, 6825 }, // W. Europe Standard Time / Svalbard And Jan Mayen Islands - { 132, 205, 6845 }, // W. Europe Standard Time / Sweden - { 132, 206, 6862 }, // W. Europe Standard Time / Switzerland - { 132, 230, 6876 }, // W. Europe Standard Time / Vatican City State - { 133, 143, 6891 }, // W. Mongolia Standard Time / Mongolia - { 134, 0, 6901 }, // West Asia Standard Time / AnyCountry - { 134, 8, 6911 }, // West Asia Standard Time / Antarctica - { 134, 78, 6929 }, // West Asia Standard Time / French Southern Territories - { 134, 110, 6946 }, // West Asia Standard Time / Kazakhstan - { 134, 131, 6991 }, // West Asia Standard Time / Maldives - { 134, 209, 7007 }, // West Asia Standard Time / Tajikistan - { 134, 218, 7021 }, // West Asia Standard Time / Turkmenistan - { 134, 228, 7035 }, // West Asia Standard Time / Uzbekistan - { 135, 165, 7064 }, // West Bank Standard Time / Palestinian Territories - { 136, 0, 7086 }, // West Pacific Standard Time / AnyCountry - { 136, 8, 7097 }, // West Pacific Standard Time / Antarctica - { 136, 89, 7123 }, // West Pacific Standard Time / Guam - { 136, 140, 7136 }, // West Pacific Standard Time / Micronesia - { 136, 160, 7149 }, // West Pacific Standard Time / Northern Mariana Islands - { 136, 167, 7164 }, // West Pacific Standard Time / Papua New Guinea - { 137, 178, 7185 }, // Yakutsk Standard Time / Russia - { 138, 38, 7212 }, // Yukon Standard Time / Canada + { 37, 13, 2114 }, // E. Australia Standard Time / Australia + { 38, 141, 2152 }, // E. Europe Standard Time / Moldova + { 39, 30, 2168 }, // E. South America Standard Time / Brazil + { 40, 43, 2186 }, // Easter Island Standard Time / Chile + { 41, 0, 2201 }, // Eastern Standard Time / AnyCountry + { 41, 16, 2209 }, // Eastern Standard Time / Bahamas + { 41, 38, 2224 }, // Eastern Standard Time / Canada + { 41, 225, 2329 }, // Eastern Standard Time / United States + { 42, 139, 2486 }, // Eastern Standard Time (Mexico) / Mexico + { 43, 64, 2501 }, // Egypt Standard Time / Egypt + { 44, 178, 2514 }, // Ekaterinburg Standard Time / Russia + { 45, 72, 2533 }, // Fiji Standard Time / Fiji + { 46, 33, 2546 }, // FLE Standard Time / Bulgaria + { 46, 68, 2559 }, // FLE Standard Time / Estonia + { 46, 73, 2574 }, // FLE Standard Time / Finland + { 46, 118, 2590 }, // FLE Standard Time / Latvia + { 46, 124, 2602 }, // FLE Standard Time / Lithuania + { 46, 222, 2617 }, // FLE Standard Time / Ukraine + { 46, 248, 2663 }, // FLE Standard Time / Aland Islands + { 47, 81, 2680 }, // Georgian Standard Time / Georgia + { 48, 71, 2693 }, // GMT Standard Time / Faroe Islands + { 48, 75, 2709 }, // GMT Standard Time / Guernsey + { 48, 104, 2725 }, // GMT Standard Time / Ireland + { 48, 173, 2739 }, // GMT Standard Time / Portugal + { 48, 197, 2770 }, // GMT Standard Time / Spain + { 48, 224, 2786 }, // GMT Standard Time / United Kingdom + { 48, 251, 2800 }, // GMT Standard Time / Isle Of Man + { 48, 252, 2819 }, // GMT Standard Time / Jersey + { 49, 86, 2833 }, // Greenland Standard Time / Greenland + { 50, 34, 2849 }, // Greenwich Standard Time / Burkina Faso + { 50, 53, 2868 }, // Greenwich Standard Time / Ivory Coast + { 50, 80, 2883 }, // Greenwich Standard Time / Gambia + { 50, 83, 2897 }, // Greenwich Standard Time / Ghana + { 50, 86, 2910 }, // Greenwich Standard Time / Greenland + { 50, 91, 2931 }, // Greenwich Standard Time / Guinea + { 50, 92, 2946 }, // Greenwich Standard Time / Guinea Bissau + { 50, 99, 2960 }, // Greenwich Standard Time / Iceland + { 50, 121, 2979 }, // Greenwich Standard Time / Liberia + { 50, 132, 2995 }, // Greenwich Standard Time / Mali + { 50, 136, 3009 }, // Greenwich Standard Time / Mauritania + { 50, 187, 3027 }, // Greenwich Standard Time / Senegal + { 50, 189, 3040 }, // Greenwich Standard Time / Sierra Leone + { 50, 199, 3056 }, // Greenwich Standard Time / Saint Helena + { 50, 212, 3075 }, // Greenwich Standard Time / Togo + { 51, 56, 3087 }, // GTB Standard Time / Cyprus + { 51, 85, 3115 }, // GTB Standard Time / Greece + { 51, 177, 3129 }, // GTB Standard Time / Romania + { 52, 94, 3146 }, // Haiti Standard Time / Haiti + { 53, 0, 3169 }, // Hawaiian Standard Time / AnyCountry + { 53, 51, 3180 }, // Hawaiian Standard Time / Cook Islands + { 53, 77, 3198 }, // Hawaiian Standard Time / French Polynesia + { 53, 225, 3213 }, // Hawaiian Standard Time / United States + { 53, 226, 3230 }, // Hawaiian Standard Time / United States Minor Outlying Islands + { 54, 100, 3247 }, // India Standard Time / India + { 55, 102, 3261 }, // Iran Standard Time / Iran + { 56, 105, 3273 }, // Israel Standard Time / Israel + { 57, 109, 3288 }, // Jordan Standard Time / Jordan + { 58, 178, 3299 }, // Kaliningrad Standard Time / Russia + { 59, 114, 3318 }, // Korea Standard Time / South Korea + { 60, 122, 3329 }, // Libya Standard Time / Libya + { 61, 0, 3344 }, // Line Islands Standard Time / AnyCountry + { 61, 112, 3355 }, // Line Islands Standard Time / Kiribati + { 62, 13, 3374 }, // Lord Howe Standard Time / Australia + { 63, 178, 3394 }, // Magadan Standard Time / Russia + { 64, 43, 3407 }, // Magallanes Standard Time / Chile + { 65, 77, 3428 }, // Marquesas Standard Time / French Polynesia + { 66, 137, 3446 }, // Mauritius Standard Time / Mauritius + { 66, 176, 3463 }, // Mauritius Standard Time / Reunion + { 66, 188, 3478 }, // Mauritius Standard Time / Seychelles + { 67, 119, 3490 }, // Middle East Standard Time / Lebanon + { 68, 227, 3502 }, // Montevideo Standard Time / Uruguay + { 69, 145, 3521 }, // Morocco Standard Time / Morocco + { 69, 236, 3539 }, // Morocco Standard Time / Western Sahara + { 70, 139, 3555 }, // Mountain Standard Time (Mexico) / Mexico + { 71, 0, 3590 }, // Mountain Standard Time / AnyCountry + { 71, 38, 3598 }, // Mountain Standard Time / Canada + { 71, 139, 3672 }, // Mountain Standard Time / Mexico + { 71, 225, 3688 }, // Mountain Standard Time / United States + { 72, 46, 3717 }, // Myanmar Standard Time / Cocos Islands + { 72, 147, 3730 }, // Myanmar Standard Time / Myanmar + { 73, 178, 3743 }, // N. Central Asia Standard Time / Russia + { 74, 148, 3760 }, // Namibia Standard Time / Namibia + { 75, 150, 3776 }, // Nepal Standard Time / Nepal + { 76, 8, 3790 }, // New Zealand Standard Time / Antarctica + { 76, 154, 3809 }, // New Zealand Standard Time / New Zealand + { 77, 38, 3826 }, // Newfoundland Standard Time / Canada + { 78, 159, 3843 }, // Norfolk Standard Time / Norfolk Island + { 79, 178, 3859 }, // North Asia East Standard Time / Russia + { 80, 178, 3872 }, // North Asia Standard Time / Russia + { 81, 113, 3907 }, // North Korea Standard Time / North Korea + { 82, 178, 3922 }, // Omsk Standard Time / Russia + { 83, 43, 3932 }, // Pacific SA Standard Time / Chile + { 84, 0, 3949 }, // Pacific Standard Time / AnyCountry + { 84, 38, 3957 }, // Pacific Standard Time / Canada + { 84, 225, 3975 }, // Pacific Standard Time / United States + { 85, 139, 3995 }, // Pacific Standard Time (Mexico) / Mexico + { 86, 163, 4032 }, // Pakistan Standard Time / Pakistan + { 87, 168, 4045 }, // Paraguay Standard Time / Paraguay + { 88, 110, 4062 }, // Qyzylorda Standard Time / Kazakhstan + { 89, 21, 4077 }, // Romance Standard Time / Belgium + { 89, 58, 4093 }, // Romance Standard Time / Denmark + { 89, 74, 4111 }, // Romance Standard Time / France + { 89, 197, 4124 }, // Romance Standard Time / Spain + { 90, 178, 4151 }, // Russia Time Zone 3 / Russia + { 91, 178, 4165 }, // Russia Time Zone 10 / Russia + { 92, 178, 4184 }, // Russia Time Zone 11 / Russia + { 93, 178, 4211 }, // Russian Standard Time / Russia + { 93, 222, 4238 }, // Russian Standard Time / Ukraine + { 94, 0, 4256 }, // SA Eastern Standard Time / AnyCountry + { 94, 8, 4266 }, // SA Eastern Standard Time / Antarctica + { 94, 30, 4303 }, // SA Eastern Standard Time / Brazil + { 94, 70, 4382 }, // SA Eastern Standard Time / Falkland Islands + { 94, 76, 4399 }, // SA Eastern Standard Time / French Guiana + { 94, 202, 4415 }, // SA Eastern Standard Time / Suriname + { 95, 0, 4434 }, // SA Pacific Standard Time / AnyCountry + { 95, 30, 4444 }, // SA Pacific Standard Time / Brazil + { 95, 38, 4480 }, // SA Pacific Standard Time / Canada + { 95, 40, 4502 }, // SA Pacific Standard Time / Cayman Islands + { 95, 47, 4517 }, // SA Pacific Standard Time / Colombia + { 95, 63, 4532 }, // SA Pacific Standard Time / Ecuador + { 95, 107, 4550 }, // SA Pacific Standard Time / Jamaica + { 95, 166, 4566 }, // SA Pacific Standard Time / Panama + { 95, 169, 4581 }, // SA Pacific Standard Time / Peru + { 96, 0, 4594 }, // SA Western Standard Time / AnyCountry + { 96, 7, 4604 }, // SA Western Standard Time / Anguilla + { 96, 9, 4621 }, // SA Western Standard Time / Antigua And Barbuda + { 96, 12, 4637 }, // SA Western Standard Time / Aruba + { 96, 19, 4651 }, // SA Western Standard Time / Barbados + { 96, 26, 4668 }, // SA Western Standard Time / Bolivia + { 96, 30, 4683 }, // SA Western Standard Time / Brazil + { 96, 38, 4736 }, // SA Western Standard Time / Canada + { 96, 60, 4757 }, // SA Western Standard Time / Dominica + { 96, 61, 4774 }, // SA Western Standard Time / Dominican Republic + { 96, 87, 4796 }, // SA Western Standard Time / Grenada + { 96, 88, 4812 }, // SA Western Standard Time / Guadeloupe + { 96, 93, 4831 }, // SA Western Standard Time / Guyana + { 96, 135, 4846 }, // SA Western Standard Time / Martinique + { 96, 144, 4865 }, // SA Western Standard Time / Montserrat + { 96, 152, 4884 }, // SA Western Standard Time / Cura Sao + { 96, 174, 4900 }, // SA Western Standard Time / Puerto Rico + { 96, 180, 4920 }, // SA Western Standard Time / Saint Kitts And Nevis + { 96, 181, 4937 }, // SA Western Standard Time / Saint Lucia + { 96, 182, 4954 }, // SA Western Standard Time / Saint Vincent And The Grenadines + { 96, 215, 4973 }, // SA Western Standard Time / Trinidad And Tobago + { 96, 233, 4995 }, // SA Western Standard Time / British Virgin Islands + { 96, 234, 5011 }, // SA Western Standard Time / United States Virgin Islands + { 96, 244, 5029 }, // SA Western Standard Time / Saint Barthelemy + { 96, 245, 5051 }, // SA Western Standard Time / Saint Martin + { 96, 255, 5067 }, // SA Western Standard Time / Bonaire + { 96, 256, 5086 }, // SA Western Standard Time / Sint Maarten + { 97, 200, 5108 }, // Saint Pierre Standard Time / Saint Pierre And Miquelon + { 98, 178, 5125 }, // Sakhalin Standard Time / Russia + { 99, 183, 5139 }, // Samoa Standard Time / Samoa + { 100, 185, 5152 }, // Sao Tome Standard Time / Sao Tome And Principe + { 101, 178, 5168 }, // Saratov Standard Time / Russia + { 102, 0, 5183 }, // SE Asia Standard Time / AnyCountry + { 102, 8, 5193 }, // SE Asia Standard Time / Antarctica + { 102, 36, 5210 }, // SE Asia Standard Time / Cambodia + { 102, 45, 5226 }, // SE Asia Standard Time / Christmas Island + { 102, 101, 5243 }, // SE Asia Standard Time / Indonesia + { 102, 117, 5271 }, // SE Asia Standard Time / Laos + { 102, 211, 5286 }, // SE Asia Standard Time / Thailand + { 102, 232, 5299 }, // SE Asia Standard Time / Vietnam + { 103, 0, 5311 }, // Singapore Standard Time / AnyCountry + { 103, 32, 5321 }, // Singapore Standard Time / Brunei + { 103, 101, 5333 }, // Singapore Standard Time / Indonesia + { 103, 130, 5347 }, // Singapore Standard Time / Malaysia + { 103, 170, 5378 }, // Singapore Standard Time / Philippines + { 103, 190, 5390 }, // Singapore Standard Time / Singapore + { 104, 0, 5405 }, // South Africa Standard Time / AnyCountry + { 104, 28, 5415 }, // South Africa Standard Time / Botswana + { 104, 35, 5431 }, // South Africa Standard Time / Burundi + { 104, 49, 5448 }, // South Africa Standard Time / Congo Kinshasa + { 104, 120, 5466 }, // South Africa Standard Time / Lesotho + { 104, 129, 5480 }, // South Africa Standard Time / Malawi + { 104, 146, 5496 }, // South Africa Standard Time / Mozambique + { 104, 179, 5510 }, // South Africa Standard Time / Rwanda + { 104, 195, 5524 }, // South Africa Standard Time / South Africa + { 104, 204, 5544 }, // South Africa Standard Time / Swaziland + { 104, 239, 5559 }, // South Africa Standard Time / Zambia + { 104, 240, 5573 }, // South Africa Standard Time / Zimbabwe + { 104, 254, 5587 }, // South Africa Standard Time / South Sudan + { 105, 198, 5599 }, // Sri Lanka Standard Time / Sri Lanka + { 106, 201, 5612 }, // Sudan Standard Time / Sudan + { 107, 207, 5628 }, // Syria Standard Time / Syria + { 108, 208, 5642 }, // Taipei Standard Time / Taiwan + { 109, 13, 5654 }, // Tasmania Standard Time / Australia + { 110, 30, 5709 }, // Tocantins Standard Time / Brazil + { 111, 0, 5727 }, // Tokyo Standard Time / AnyCountry + { 111, 62, 5737 }, // Tokyo Standard Time / East Timor + { 111, 101, 5747 }, // Tokyo Standard Time / Indonesia + { 111, 108, 5761 }, // Tokyo Standard Time / Japan + { 111, 164, 5772 }, // Tokyo Standard Time / Palau + { 112, 178, 5786 }, // Tomsk Standard Time / Russia + { 113, 214, 5797 }, // Tonga Standard Time / Tonga + { 114, 178, 5815 }, // Transbaikal Standard Time / Russia + { 115, 217, 5826 }, // Turkey Standard Time / Turkey + { 116, 219, 5842 }, // Turks And Caicos Standard Time / Turks And Caicos Islands + { 117, 143, 5861 }, // Ulaanbaatar Standard Time / Mongolia + { 118, 225, 5894 }, // US Eastern Standard Time / United States + { 119, 0, 5961 }, // US Mountain Standard Time / AnyCountry + { 119, 38, 5971 }, // US Mountain Standard Time / Canada + { 119, 139, 6028 }, // US Mountain Standard Time / Mexico + { 119, 225, 6047 }, // US Mountain Standard Time / United States + { 120, 0, 6063 }, // UTC-11 / AnyCountry + { 120, 4, 6074 }, // UTC-11 / American Samoa + { 120, 158, 6092 }, // UTC-11 / Niue + { 120, 226, 6105 }, // UTC-11 / United States Minor Outlying Islands + { 121, 0, 6120 }, // UTC-09 / AnyCountry + { 121, 77, 6130 }, // UTC-09 / French Polynesia + { 122, 0, 6146 }, // UTC-08 / AnyCountry + { 122, 171, 6156 }, // UTC-08 / Pitcairn + { 123, 0, 6173 }, // UTC-02 / AnyCountry + { 123, 30, 6183 }, // UTC-02 / Brazil + { 123, 196, 6199 }, // UTC-02 / South Georgia And The South Sandwich Islands + { 124, 0, 6222 }, // UTC / AnyCountry + { 125, 0, 6238 }, // UTC+12 / AnyCountry + { 125, 112, 6249 }, // UTC+12 / Kiribati + { 125, 134, 6264 }, // UTC+12 / Marshall Islands + { 125, 149, 6297 }, // UTC+12 / Nauru + { 125, 220, 6311 }, // UTC+12 / Tuvalu + { 125, 226, 6328 }, // UTC+12 / United States Minor Outlying Islands + { 125, 235, 6341 }, // UTC+12 / Wallis And Futuna Islands + { 126, 0, 6356 }, // UTC+13 / AnyCountry + { 126, 112, 6367 }, // UTC+13 / Kiribati + { 126, 213, 6385 }, // UTC+13 / Tokelau + { 127, 231, 6401 }, // Venezuela Standard Time / Venezuela + { 128, 178, 6417 }, // Vladivostok Standard Time / Russia + { 129, 178, 6448 }, // Volgograd Standard Time / Russia + { 130, 13, 6465 }, // W. Australia Standard Time / Australia + { 131, 0, 6481 }, // W. Central Africa Standard Time / AnyCountry + { 131, 3, 6491 }, // W. Central Africa Standard Time / Algeria + { 131, 6, 6506 }, // W. Central Africa Standard Time / Angola + { 131, 23, 6520 }, // W. Central Africa Standard Time / Benin + { 131, 37, 6538 }, // W. Central Africa Standard Time / Cameroon + { 131, 41, 6552 }, // W. Central Africa Standard Time / Central African Republic + { 131, 42, 6566 }, // W. Central Africa Standard Time / Chad + { 131, 49, 6582 }, // W. Central Africa Standard Time / Congo Kinshasa + { 131, 50, 6598 }, // W. Central Africa Standard Time / Congo Brazzaville + { 131, 66, 6617 }, // W. Central Africa Standard Time / Equatorial Guinea + { 131, 79, 6631 }, // W. Central Africa Standard Time / Gabon + { 131, 156, 6649 }, // W. Central Africa Standard Time / Niger + { 131, 157, 6663 }, // W. Central Africa Standard Time / Nigeria + { 131, 216, 6676 }, // W. Central Africa Standard Time / Tunisia + { 132, 5, 6689 }, // W. Europe Standard Time / Andorra + { 132, 14, 6704 }, // W. Europe Standard Time / Austria + { 132, 82, 6718 }, // W. Europe Standard Time / Germany + { 132, 84, 6748 }, // W. Europe Standard Time / Gibraltar + { 132, 106, 6765 }, // W. Europe Standard Time / Italy + { 132, 123, 6777 }, // W. Europe Standard Time / Liechtenstein + { 132, 125, 6790 }, // W. Europe Standard Time / Luxembourg + { 132, 133, 6808 }, // W. Europe Standard Time / Malta + { 132, 142, 6821 }, // W. Europe Standard Time / Monaco + { 132, 151, 6835 }, // W. Europe Standard Time / Netherlands + { 132, 161, 6852 }, // W. Europe Standard Time / Norway + { 132, 184, 6864 }, // W. Europe Standard Time / San Marino + { 132, 203, 6882 }, // W. Europe Standard Time / Svalbard And Jan Mayen Islands + { 132, 205, 6902 }, // W. Europe Standard Time / Sweden + { 132, 206, 6919 }, // W. Europe Standard Time / Switzerland + { 132, 230, 6933 }, // W. Europe Standard Time / Vatican City State + { 133, 143, 6948 }, // W. Mongolia Standard Time / Mongolia + { 134, 0, 6958 }, // West Asia Standard Time / AnyCountry + { 134, 8, 6968 }, // West Asia Standard Time / Antarctica + { 134, 78, 6986 }, // West Asia Standard Time / French Southern Territories + { 134, 110, 7003 }, // West Asia Standard Time / Kazakhstan + { 134, 131, 7048 }, // West Asia Standard Time / Maldives + { 134, 209, 7064 }, // West Asia Standard Time / Tajikistan + { 134, 218, 7078 }, // West Asia Standard Time / Turkmenistan + { 134, 228, 7092 }, // West Asia Standard Time / Uzbekistan + { 135, 165, 7121 }, // West Bank Standard Time / Palestinian Territories + { 136, 0, 7143 }, // West Pacific Standard Time / AnyCountry + { 136, 8, 7154 }, // West Pacific Standard Time / Antarctica + { 136, 89, 7180 }, // West Pacific Standard Time / Guam + { 136, 140, 7193 }, // West Pacific Standard Time / Micronesia + { 136, 160, 7206 }, // West Pacific Standard Time / Northern Mariana Islands + { 136, 167, 7221 }, // West Pacific Standard Time / Papua New Guinea + { 137, 178, 7242 }, // Yakutsk Standard Time / Russia + { 138, 38, 7269 }, // Yukon Standard Time / Canada { 0, 0, 0 } // Trailing zeroes }; @@ -534,105 +535,105 @@ { 35, 852, 1910,-43200 }, // Dateline Standard Time { 36, 875, 2011, 10800 }, // E. Africa Standard Time { 37, 899, 7489, 36000 }, // E. Australia Standard Time - { 38, 926, 2164, 7200 }, // E. Europe Standard Time - { 39, 950, 2180,-10800 }, // E. South America Standard Time - { 40, 981, 2198,-21600 }, // Easter Island Standard Time + { 38, 926, 2152, 7200 }, // E. Europe Standard Time + { 39, 950, 2168,-10800 }, // E. South America Standard Time + { 40, 981, 2186,-21600 }, // Easter Island Standard Time { 41, 1009, 7508,-18000 }, // Eastern Standard Time - { 42, 1031, 2498,-18000 }, // Eastern Standard Time (Mexico) - { 43, 1062, 2513, 7200 }, // Egypt Standard Time - { 44, 1082, 2526, 18000 }, // Ekaterinburg Standard Time - { 45, 1109, 2545, 43200 }, // Fiji Standard Time + { 42, 1031, 2486,-18000 }, // Eastern Standard Time (Mexico) + { 43, 1062, 2501, 7200 }, // Egypt Standard Time + { 44, 1082, 2514, 18000 }, // Ekaterinburg Standard Time + { 45, 1109, 2533, 43200 }, // Fiji Standard Time { 46, 1128, 7525, 7200 }, // FLE Standard Time - { 47, 1146, 2692, 14400 }, // Georgian Standard Time - { 48, 1169, 2798, 0 }, // GMT Standard Time - { 49, 1187, 2845,-10800 }, // Greenland Standard Time - { 50, 1211, 2951, 0 }, // Greenwich Standard Time - { 51, 1235, 3120, 7200 }, // GTB Standard Time - { 52, 1253, 3137,-18000 }, // Haiti Standard Time - { 53, 1273, 3204,-36000 }, // Hawaiian Standard Time - { 54, 1296, 3238, 19800 }, // India Standard Time - { 55, 1316, 3252, 12600 }, // Iran Standard Time - { 56, 1335, 3264, 7200 }, // Israel Standard Time - { 57, 1356, 3279, 7200 }, // Jordan Standard Time - { 58, 1377, 3290, 7200 }, // Kaliningrad Standard Time - { 59, 1403, 3309, 32400 }, // Korea Standard Time - { 60, 1423, 3320, 7200 }, // Libya Standard Time - { 61, 1443, 3346, 50400 }, // Line Islands Standard Time - { 62, 1470, 3365, 37800 }, // Lord Howe Standard Time - { 63, 1494, 3385, 36000 }, // Magadan Standard Time - { 64, 1516, 3398,-10800 }, // Magallanes Standard Time - { 65, 1541, 3419,-34200 }, // Marquesas Standard Time - { 66, 1565, 3437, 14400 }, // Mauritius Standard Time - { 67, 1589, 3481, 7200 }, // Middle East Standard Time - { 68, 1615, 3493,-10800 }, // Montevideo Standard Time - { 69, 1640, 3512, 0 }, // Morocco Standard Time + { 47, 1146, 2680, 14400 }, // Georgian Standard Time + { 48, 1169, 2786, 0 }, // GMT Standard Time + { 49, 1187, 2833,-10800 }, // Greenland Standard Time + { 50, 1211, 2960, 0 }, // Greenwich Standard Time + { 51, 1235, 3129, 7200 }, // GTB Standard Time + { 52, 1253, 3146,-18000 }, // Haiti Standard Time + { 53, 1273, 3213,-36000 }, // Hawaiian Standard Time + { 54, 1296, 3247, 19800 }, // India Standard Time + { 55, 1316, 3261, 12600 }, // Iran Standard Time + { 56, 1335, 3273, 7200 }, // Israel Standard Time + { 57, 1356, 3288, 7200 }, // Jordan Standard Time + { 58, 1377, 3299, 7200 }, // Kaliningrad Standard Time + { 59, 1403, 3318, 32400 }, // Korea Standard Time + { 60, 1423, 3329, 7200 }, // Libya Standard Time + { 61, 1443, 3355, 50400 }, // Line Islands Standard Time + { 62, 1470, 3374, 37800 }, // Lord Howe Standard Time + { 63, 1494, 3394, 36000 }, // Magadan Standard Time + { 64, 1516, 3407,-10800 }, // Magallanes Standard Time + { 65, 1541, 3428,-34200 }, // Marquesas Standard Time + { 66, 1565, 3446, 14400 }, // Mauritius Standard Time + { 67, 1589, 3490, 7200 }, // Middle East Standard Time + { 68, 1615, 3502,-10800 }, // Montevideo Standard Time + { 69, 1640, 3521, 0 }, // Morocco Standard Time { 70, 1662, 7537,-25200 }, // Mountain Standard Time (Mexico) { 71, 1694, 7555,-25200 }, // Mountain Standard Time - { 72, 1717, 3721, 23400 }, // Myanmar Standard Time - { 73, 1739, 3734, 21600 }, // N. Central Asia Standard Time - { 74, 1769, 3751, 3600 }, // Namibia Standard Time - { 75, 1791, 3767, 20700 }, // Nepal Standard Time - { 76, 1811, 3800, 43200 }, // New Zealand Standard Time - { 77, 1837, 3817,-12600 }, // Newfoundland Standard Time - { 78, 1864, 3834, 39600 }, // Norfolk Standard Time - { 79, 1886, 3850, 28800 }, // North Asia East Standard Time + { 72, 1717, 3730, 23400 }, // Myanmar Standard Time + { 73, 1739, 3743, 21600 }, // N. Central Asia Standard Time + { 74, 1769, 3760, 3600 }, // Namibia Standard Time + { 75, 1791, 3776, 20700 }, // Nepal Standard Time + { 76, 1811, 3809, 43200 }, // New Zealand Standard Time + { 77, 1837, 3826,-12600 }, // Newfoundland Standard Time + { 78, 1864, 3843, 39600 }, // Norfolk Standard Time + { 79, 1886, 3859, 28800 }, // North Asia East Standard Time { 80, 1916, 7570, 25200 }, // North Asia Standard Time - { 81, 1941, 3898, 30600 }, // North Korea Standard Time - { 82, 1967, 3913, 21600 }, // Omsk Standard Time - { 83, 1986, 3923,-10800 }, // Pacific SA Standard Time - { 84, 2011, 3966,-28800 }, // Pacific Standard Time + { 81, 1941, 3907, 30600 }, // North Korea Standard Time + { 82, 1967, 3922, 21600 }, // Omsk Standard Time + { 83, 1986, 3932,-10800 }, // Pacific SA Standard Time + { 84, 2011, 3975,-28800 }, // Pacific Standard Time { 85, 2033, 7587,-28800 }, // Pacific Standard Time (Mexico) - { 86, 2064, 4023, 18000 }, // Pakistan Standard Time - { 87, 2087, 4036,-14400 }, // Paraguay Standard Time - { 88, 2110, 4053, 18000 }, // Qyzylorda Standard Time - { 89, 2134, 4102, 3600 }, // Romance Standard Time - { 90, 2156, 4142, 14400 }, // Russia Time Zone 3 - { 91, 2175, 4156, 39600 }, // Russia Time Zone 10 + { 86, 2064, 4032, 18000 }, // Pakistan Standard Time + { 87, 2087, 4045,-14400 }, // Paraguay Standard Time + { 88, 2110, 4062, 18000 }, // Qyzylorda Standard Time + { 89, 2134, 4111, 3600 }, // Romance Standard Time + { 90, 2156, 4151, 14400 }, // Russia Time Zone 3 + { 91, 2175, 4165, 39600 }, // Russia Time Zone 10 { 92, 2195, 7603, 43200 }, // Russia Time Zone 11 { 93, 2215, 7618, 10800 }, // Russian Standard Time - { 94, 2237, 4390,-10800 }, // SA Eastern Standard Time - { 95, 2262, 4508,-18000 }, // SA Pacific Standard Time - { 96, 2287, 4659,-14400 }, // SA Western Standard Time - { 97, 2312, 5099,-10800 }, // Saint Pierre Standard Time - { 98, 2339, 5116, 39600 }, // Sakhalin Standard Time - { 99, 2362, 5130, 46800 }, // Samoa Standard Time - { 100, 2382, 5143, 0 }, // Sao Tome Standard Time - { 101, 2405, 5159, 14400 }, // Saratov Standard Time - { 102, 2427, 5277, 25200 }, // SE Asia Standard Time - { 103, 2449, 5381, 28800 }, // Singapore Standard Time - { 104, 2473, 5515, 7200 }, // South Africa Standard Time - { 105, 2500, 5578, 19800 }, // Sri Lanka Standard Time - { 106, 2524, 5591, 7200 }, // Sudan Standard Time - { 107, 2544, 5607, 7200 }, // Syria Standard Time - { 108, 2564, 5621, 28800 }, // Taipei Standard Time + { 94, 2237, 4399,-10800 }, // SA Eastern Standard Time + { 95, 2262, 4517,-18000 }, // SA Pacific Standard Time + { 96, 2287, 4668,-14400 }, // SA Western Standard Time + { 97, 2312, 5108,-10800 }, // Saint Pierre Standard Time + { 98, 2339, 5125, 39600 }, // Sakhalin Standard Time + { 99, 2362, 5139, 46800 }, // Samoa Standard Time + { 100, 2382, 5152, 0 }, // Sao Tome Standard Time + { 101, 2405, 5168, 14400 }, // Saratov Standard Time + { 102, 2427, 5286, 25200 }, // SE Asia Standard Time + { 103, 2449, 5390, 28800 }, // Singapore Standard Time + { 104, 2473, 5524, 7200 }, // South Africa Standard Time + { 105, 2500, 5599, 19800 }, // Sri Lanka Standard Time + { 106, 2524, 5612, 7200 }, // Sudan Standard Time + { 107, 2544, 5628, 7200 }, // Syria Standard Time + { 108, 2564, 5642, 28800 }, // Taipei Standard Time { 109, 2585, 7632, 36000 }, // Tasmania Standard Time - { 110, 2608, 5688,-10800 }, // Tocantins Standard Time - { 111, 2632, 5740, 32400 }, // Tokyo Standard Time - { 112, 2652, 5765, 25200 }, // Tomsk Standard Time - { 113, 2672, 5776, 46800 }, // Tonga Standard Time - { 114, 2692, 5794, 32400 }, // Transbaikal Standard Time - { 115, 2718, 5805, 7200 }, // Turkey Standard Time - { 116, 2739, 5821,-14400 }, // Turks And Caicos Standard Time + { 110, 2608, 5709,-10800 }, // Tocantins Standard Time + { 111, 2632, 5761, 32400 }, // Tokyo Standard Time + { 112, 2652, 5786, 25200 }, // Tomsk Standard Time + { 113, 2672, 5797, 46800 }, // Tonga Standard Time + { 114, 2692, 5815, 32400 }, // Transbaikal Standard Time + { 115, 2718, 5826, 7200 }, // Turkey Standard Time + { 116, 2739, 5842,-14400 }, // Turks And Caicos Standard Time { 117, 2770, 7649, 28800 }, // Ulaanbaatar Standard Time { 118, 2796, 7666,-18000 }, // US Eastern Standard Time - { 119, 2821, 5969,-25200 }, // US Mountain Standard Time - { 120, 2847, 5985,-39600 }, // UTC-11 - { 121, 2854, 6042,-32400 }, // UTC-09 - { 122, 2861, 6068,-28800 }, // UTC-08 - { 123, 2868, 6095, -7200 }, // UTC-02 + { 119, 2821, 6047,-25200 }, // US Mountain Standard Time + { 120, 2847, 6063,-39600 }, // UTC-11 + { 121, 2854, 6120,-32400 }, // UTC-09 + { 122, 2861, 6146,-28800 }, // UTC-08 + { 123, 2868, 6173, -7200 }, // UTC-02 { 124, 2875, 7687, 0 }, // UTC - { 125, 2879, 6181, 43200 }, // UTC+12 - { 126, 2886, 6299, 46800 }, // UTC+13 - { 127, 2893, 6344,-16200 }, // Venezuela Standard Time + { 125, 2879, 6238, 43200 }, // UTC+12 + { 126, 2886, 6356, 46800 }, // UTC+13 + { 127, 2893, 6401,-16200 }, // Venezuela Standard Time { 128, 2917, 7695, 36000 }, // Vladivostok Standard Time - { 129, 2943, 6391, 14400 }, // Volgograd Standard Time - { 130, 2967, 6408, 28800 }, // W. Australia Standard Time - { 131, 2994, 6606, 3600 }, // W. Central Africa Standard Time + { 129, 2943, 6448, 14400 }, // Volgograd Standard Time + { 130, 2967, 6465, 28800 }, // W. Australia Standard Time + { 131, 2994, 6663, 3600 }, // W. Central Africa Standard Time { 132, 3026, 7712, 3600 }, // W. Europe Standard Time - { 133, 3050, 6891, 25200 }, // W. Mongolia Standard Time + { 133, 3050, 6948, 25200 }, // W. Mongolia Standard Time { 134, 3076, 7726, 18000 }, // West Asia Standard Time { 135, 3100, 7740, 7200 }, // West Bank Standard Time - { 136, 3124, 7164, 36000 }, // West Pacific Standard Time + { 136, 3124, 7221, 36000 }, // West Pacific Standard Time { 137, 3151, 7752, 32400 }, // Yakutsk Standard Time { 138, 3173, 7765,-25200 }, // Yukon Standard Time { 0, 0, 0, 0 } // Trailing zeroes @@ -952,266 +953,266 @@ 0x61, 0x72, 0x69, 0x76, 0x6f, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x79, 0x6f, 0x74, 0x74, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x67, 0x61, 0x64, 0x69, 0x73, 0x68, 0x75, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x72, 0x5f, 0x65, 0x73, 0x5f, 0x53, 0x61, 0x6c, 0x61, 0x61, 0x6d, 0x0, 0x41, -0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x61, 0x6d, 0x70, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, -0x2f, 0x4a, 0x75, 0x62, 0x61, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x42, 0x72, 0x69, 0x73, -0x62, 0x61, 0x6e, 0x65, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x4c, 0x69, 0x6e, 0x64, 0x65, -0x6d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x43, 0x68, 0x69, 0x73, 0x69, 0x6e, 0x61, 0x75, 0x0, -0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6f, 0x5f, 0x50, 0x61, 0x75, 0x6c, 0x6f, 0x0, 0x50, 0x61, -0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x0, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, -0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x61, 0x73, 0x73, 0x61, 0x75, 0x0, 0x41, 0x6d, 0x65, 0x72, -0x69, 0x63, 0x61, 0x2f, 0x54, 0x6f, 0x72, 0x6f, 0x6e, 0x74, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x49, 0x71, 0x61, 0x6c, 0x75, 0x69, 0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, -0x72, 0x65, 0x61, 0x6c, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x69, 0x70, 0x69, 0x67, 0x6f, 0x6e, -0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6e, 0x67, 0x6e, 0x69, 0x72, 0x74, 0x75, 0x6e, 0x67, -0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x68, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x42, 0x61, 0x79, -0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x65, 0x77, 0x5f, 0x59, 0x6f, 0x72, 0x6b, 0x20, 0x41, 0x6d, -0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x74, 0x72, 0x6f, 0x69, 0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x50, 0x65, 0x74, 0x65, 0x72, 0x73, 0x62, 0x75, 0x72, 0x67, -0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x56, 0x69, 0x6e, -0x63, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, -0x6e, 0x61, 0x2f, 0x57, 0x69, 0x6e, 0x61, 0x6d, 0x61, 0x63, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, -0x65, 0x6e, 0x74, 0x75, 0x63, 0x6b, 0x79, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x69, 0x63, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x41, -0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x75, 0x69, 0x73, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x41, 0x6d, -0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x6e, 0x63, 0x75, 0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x43, 0x61, 0x69, 0x72, 0x6f, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, 0x65, 0x6b, 0x61, 0x74, 0x65, 0x72, 0x69, 0x6e, -0x62, 0x75, 0x72, 0x67, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x46, 0x69, 0x6a, 0x69, 0x0, 0x45, 0x75, -0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x6f, 0x66, 0x69, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x54, 0x61, -0x6c, 0x6c, 0x69, 0x6e, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x48, 0x65, 0x6c, 0x73, 0x69, 0x6e, 0x6b, -0x69, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x52, 0x69, 0x67, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, -0x2f, 0x56, 0x69, 0x6c, 0x6e, 0x69, 0x75, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4b, 0x69, 0x65, 0x76, -0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x55, 0x7a, 0x68, 0x67, 0x6f, 0x72, 0x6f, 0x64, 0x20, 0x45, 0x75, 0x72, -0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x61, 0x70, 0x6f, 0x72, 0x6f, 0x7a, 0x68, 0x79, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, -0x65, 0x2f, 0x4d, 0x61, 0x72, 0x69, 0x65, 0x68, 0x61, 0x6d, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x62, 0x69, -0x6c, 0x69, 0x73, 0x69, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x46, 0x61, 0x65, 0x72, 0x6f, 0x65, -0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x47, 0x75, 0x65, 0x72, 0x6e, 0x73, 0x65, 0x79, 0x0, 0x45, 0x75, 0x72, -0x6f, 0x70, 0x65, 0x2f, 0x44, 0x75, 0x62, 0x6c, 0x69, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x69, -0x73, 0x62, 0x6f, 0x6e, 0x20, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x4d, 0x61, 0x64, 0x65, 0x69, 0x72, -0x61, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x79, 0x0, 0x45, 0x75, -0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x6f, 0x6e, 0x64, 0x6f, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x49, -0x73, 0x6c, 0x65, 0x5f, 0x6f, 0x66, 0x5f, 0x4d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4a, 0x65, -0x72, 0x73, 0x65, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x6f, 0x64, 0x74, 0x68, 0x61, 0x62, -0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4f, 0x75, 0x61, 0x67, 0x61, 0x64, 0x6f, 0x75, 0x67, 0x6f, 0x75, 0x0, -0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x62, 0x69, 0x64, 0x6a, 0x61, 0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x42, 0x61, 0x6e, 0x6a, 0x75, 0x6c, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x63, 0x63, 0x72, -0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x6f, 0x6e, 0x61, 0x6b, 0x72, 0x79, 0x0, 0x41, 0x66, 0x72, -0x69, 0x63, 0x61, 0x2f, 0x42, 0x69, 0x73, 0x73, 0x61, 0x75, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, -0x52, 0x65, 0x79, 0x6b, 0x6a, 0x61, 0x76, 0x69, 0x6b, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, -0x72, 0x6f, 0x76, 0x69, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x6d, 0x61, 0x6b, 0x6f, 0x0, -0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x75, 0x61, 0x6b, 0x63, 0x68, 0x6f, 0x74, 0x74, 0x0, 0x41, 0x66, -0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x6b, 0x61, 0x72, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x46, 0x72, -0x65, 0x65, 0x74, 0x6f, 0x77, 0x6e, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x53, 0x74, 0x5f, 0x48, -0x65, 0x6c, 0x65, 0x6e, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x6d, 0x65, 0x0, 0x41, 0x73, -0x69, 0x61, 0x2f, 0x4e, 0x69, 0x63, 0x6f, 0x73, 0x69, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x46, 0x61, 0x6d, 0x61, -0x67, 0x75, 0x73, 0x74, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x74, 0x68, 0x65, 0x6e, 0x73, 0x0, -0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x75, 0x63, 0x68, 0x61, 0x72, 0x65, 0x73, 0x74, 0x0, 0x41, 0x6d, 0x65, -0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x2d, 0x61, 0x75, 0x2d, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x65, 0x0, -0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x31, 0x30, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x52, -0x61, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x61, 0x68, -0x69, 0x74, 0x69, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x48, 0x6f, 0x6e, 0x6f, 0x6c, 0x75, 0x6c, 0x75, -0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4a, 0x6f, 0x68, 0x6e, 0x73, 0x74, 0x6f, 0x6e, 0x0, 0x41, 0x73, -0x69, 0x61, 0x2f, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x74, 0x74, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x65, 0x68, -0x72, 0x61, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x65, 0x72, 0x75, 0x73, 0x61, 0x6c, 0x65, 0x6d, 0x0, 0x41, -0x73, 0x69, 0x61, 0x2f, 0x41, 0x6d, 0x6d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4b, 0x61, 0x6c, -0x69, 0x6e, 0x69, 0x6e, 0x67, 0x72, 0x61, 0x64, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x65, 0x6f, 0x75, 0x6c, 0x0, -0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x72, 0x69, 0x70, 0x6f, 0x6c, 0x69, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, -0x4d, 0x54, 0x2d, 0x31, 0x34, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4b, 0x69, 0x72, 0x69, 0x74, 0x69, -0x6d, 0x61, 0x74, 0x69, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x4c, 0x6f, 0x72, 0x64, 0x5f, -0x48, 0x6f, 0x77, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x67, 0x61, 0x64, 0x61, 0x6e, 0x0, 0x41, 0x6d, -0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x75, 0x6e, 0x74, 0x61, 0x5f, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x0, 0x50, -0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x61, 0x72, 0x71, 0x75, 0x65, 0x73, 0x61, 0x73, 0x0, 0x49, 0x6e, 0x64, -0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x75, 0x73, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, -0x2f, 0x52, 0x65, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x68, 0x65, -0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x65, 0x69, 0x72, 0x75, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, -0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, -0x61, 0x73, 0x61, 0x62, 0x6c, 0x61, 0x6e, 0x63, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x45, 0x6c, 0x5f, -0x41, 0x61, 0x69, 0x75, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x68, 0x75, 0x61, -0x68, 0x75, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x7a, 0x61, 0x74, 0x6c, 0x61, 0x6e, -0x0, 0x4d, 0x53, 0x54, 0x37, 0x4d, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x45, 0x64, 0x6d, -0x6f, 0x6e, 0x74, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, -0x64, 0x67, 0x65, 0x5f, 0x42, 0x61, 0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x75, 0x76, -0x69, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6b, 0x6e, 0x69, -0x66, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4f, 0x6a, 0x69, 0x6e, 0x61, 0x67, 0x61, 0x0, 0x41, -0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x6e, 0x76, 0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x42, 0x6f, 0x69, 0x73, 0x65, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x43, 0x6f, 0x63, 0x6f, 0x73, -0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x52, 0x61, 0x6e, 0x67, 0x6f, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, -0x6f, 0x76, 0x6f, 0x73, 0x69, 0x62, 0x69, 0x72, 0x73, 0x6b, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x69, -0x6e, 0x64, 0x68, 0x6f, 0x65, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x74, 0x6d, 0x61, 0x6e, 0x64, 0x75, -0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x63, 0x4d, 0x75, 0x72, 0x64, 0x6f, 0x0, -0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x41, 0x75, 0x63, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x0, 0x41, 0x6d, 0x65, -0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4a, 0x6f, 0x68, 0x6e, 0x73, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, -0x63, 0x2f, 0x4e, 0x6f, 0x72, 0x66, 0x6f, 0x6c, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x49, 0x72, 0x6b, 0x75, 0x74, -0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x73, 0x6e, 0x6f, 0x79, 0x61, 0x72, 0x73, 0x6b, 0x20, -0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x6f, 0x76, 0x6f, 0x6b, 0x75, 0x7a, 0x6e, 0x65, 0x74, 0x73, 0x6b, 0x0, 0x41, 0x73, -0x69, 0x61, 0x2f, 0x50, 0x79, 0x6f, 0x6e, 0x67, 0x79, 0x61, 0x6e, 0x67, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4f, 0x6d, -0x73, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x67, 0x6f, 0x0, -0x50, 0x53, 0x54, 0x38, 0x50, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x56, 0x61, 0x6e, 0x63, -0x6f, 0x75, 0x76, 0x65, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x73, 0x5f, 0x41, 0x6e, -0x67, 0x65, 0x6c, 0x65, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x69, 0x6a, 0x75, 0x61, 0x6e, -0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x61, 0x5f, 0x49, 0x73, 0x61, 0x62, -0x65, 0x6c, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x72, 0x61, 0x63, 0x68, 0x69, 0x0, 0x41, 0x6d, 0x65, 0x72, -0x69, 0x63, 0x61, 0x2f, 0x41, 0x73, 0x75, 0x6e, 0x63, 0x69, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x51, 0x79, -0x7a, 0x79, 0x6c, 0x6f, 0x72, 0x64, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x72, 0x75, 0x73, 0x73, -0x65, 0x6c, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x43, 0x6f, 0x70, 0x65, 0x6e, 0x68, 0x61, 0x67, 0x65, -0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x50, 0x61, 0x72, 0x69, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, -0x65, 0x2f, 0x4d, 0x61, 0x64, 0x72, 0x69, 0x64, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x65, 0x75, 0x74, -0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x6d, 0x61, 0x72, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, -0x2f, 0x53, 0x72, 0x65, 0x64, 0x6e, 0x65, 0x6b, 0x6f, 0x6c, 0x79, 0x6d, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, -0x4b, 0x61, 0x6d, 0x63, 0x68, 0x61, 0x74, 0x6b, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x6e, 0x61, 0x64, 0x79, -0x72, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x6f, 0x73, 0x63, 0x6f, 0x77, 0x20, 0x45, 0x75, 0x72, 0x6f, -0x70, 0x65, 0x2f, 0x4b, 0x69, 0x72, 0x6f, 0x76, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x69, 0x6d, 0x66, -0x65, 0x72, 0x6f, 0x70, 0x6f, 0x6c, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x33, 0x0, 0x41, 0x6e, 0x74, -0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x61, 0x20, 0x41, 0x6e, 0x74, 0x61, -0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6c, 0x6d, 0x65, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x46, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x65, 0x7a, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x42, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x63, 0x65, 0x69, 0x6f, -0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x65, 0x63, 0x69, 0x66, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, -0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x61, 0x72, 0x65, 0x6d, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, -0x63, 0x2f, 0x53, 0x74, 0x61, 0x6e, 0x6c, 0x65, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, -0x79, 0x65, 0x6e, 0x6e, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x61, -0x72, 0x69, 0x62, 0x6f, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x35, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, -0x63, 0x61, 0x2f, 0x52, 0x69, 0x6f, 0x5f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x45, 0x69, 0x72, 0x75, 0x6e, 0x65, 0x70, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, -0x6f, 0x72, 0x61, 0x6c, 0x5f, 0x48, 0x61, 0x72, 0x62, 0x6f, 0x75, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, -0x2f, 0x43, 0x61, 0x79, 0x6d, 0x61, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x67, 0x6f, -0x74, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x61, 0x79, 0x61, 0x71, 0x75, 0x69, 0x6c, -0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x0, 0x41, 0x6d, 0x65, -0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6e, 0x61, 0x6d, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x4c, 0x69, 0x6d, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x34, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, -0x63, 0x61, 0x2f, 0x41, 0x6e, 0x67, 0x75, 0x69, 0x6c, 0x6c, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x41, 0x6e, 0x74, 0x69, 0x67, 0x75, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x75, 0x62, -0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64, 0x6f, 0x73, 0x0, 0x41, -0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x61, 0x5f, 0x50, 0x61, 0x7a, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x4d, 0x61, 0x6e, 0x61, 0x75, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x61, -0x5f, 0x56, 0x69, 0x73, 0x74, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x6f, -0x5f, 0x56, 0x65, 0x6c, 0x68, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6c, 0x61, 0x6e, 0x63, -0x2d, 0x53, 0x61, 0x62, 0x6c, 0x6f, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x6f, 0x6d, 0x69, -0x6e, 0x69, 0x63, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x6f, 0x5f, 0x44, -0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x72, 0x65, 0x6e, 0x61, -0x64, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x61, 0x64, 0x65, 0x6c, 0x6f, 0x75, 0x70, -0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x0, 0x41, 0x6d, 0x65, -0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, -0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x73, 0x65, 0x72, 0x72, 0x61, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, -0x63, 0x61, 0x2f, 0x43, 0x75, 0x72, 0x61, 0x63, 0x61, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, -0x75, 0x65, 0x72, 0x74, 0x6f, 0x5f, 0x52, 0x69, 0x63, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, -0x74, 0x5f, 0x4b, 0x69, 0x74, 0x74, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4c, -0x75, 0x63, 0x69, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x56, 0x69, 0x6e, 0x63, -0x65, 0x6e, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x66, 0x5f, -0x53, 0x70, 0x61, 0x69, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x6f, 0x72, 0x74, 0x6f, 0x6c, -0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x54, 0x68, 0x6f, 0x6d, 0x61, 0x73, 0x0, -0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x42, 0x61, 0x72, 0x74, 0x68, 0x65, 0x6c, 0x65, 0x6d, -0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x69, 0x67, 0x6f, 0x74, 0x0, 0x41, 0x6d, -0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x69, 0x6a, 0x6b, 0x0, 0x41, 0x6d, 0x65, -0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x65, 0x73, 0x0, 0x41, -0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x69, 0x71, 0x75, 0x65, 0x6c, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, -0x2f, 0x53, 0x61, 0x6b, 0x68, 0x61, 0x6c, 0x69, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x41, 0x70, -0x69, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6f, 0x5f, 0x54, 0x6f, 0x6d, 0x65, 0x0, 0x45, -0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x76, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, -0x54, 0x2d, 0x37, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x76, 0x69, 0x73, -0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x68, 0x6e, 0x6f, 0x6d, 0x5f, 0x50, 0x65, 0x6e, 0x68, 0x0, 0x49, 0x6e, 0x64, -0x69, 0x61, 0x6e, 0x2f, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6d, 0x61, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, -0x61, 0x6b, 0x61, 0x72, 0x74, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x6f, 0x6e, 0x74, 0x69, 0x61, 0x6e, 0x61, -0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x56, 0x69, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6e, 0x65, 0x0, 0x41, 0x73, 0x69, -0x61, 0x2f, 0x42, 0x61, 0x6e, 0x67, 0x6b, 0x6f, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x69, 0x67, 0x6f, -0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x38, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x72, 0x75, -0x6e, 0x65, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x6b, 0x61, 0x73, 0x73, 0x61, 0x72, 0x0, 0x41, 0x73, -0x69, 0x61, 0x2f, 0x4b, 0x75, 0x61, 0x6c, 0x61, 0x5f, 0x4c, 0x75, 0x6d, 0x70, 0x75, 0x72, 0x20, 0x41, 0x73, 0x69, 0x61, -0x2f, 0x4b, 0x75, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x6e, 0x69, 0x6c, 0x61, -0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x0, 0x45, 0x74, 0x63, 0x2f, -0x47, 0x4d, 0x54, 0x2d, 0x32, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x61, 0x62, 0x6f, 0x72, 0x6f, 0x6e, -0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x75, 0x6a, 0x75, 0x6d, 0x62, 0x75, 0x72, 0x61, 0x0, 0x41, -0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x62, 0x75, 0x6d, 0x62, 0x61, 0x73, 0x68, 0x69, 0x0, 0x41, 0x66, 0x72, -0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x73, 0x65, 0x72, 0x75, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6c, -0x61, 0x6e, 0x74, 0x79, 0x72, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x70, 0x75, 0x74, 0x6f, -0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x69, 0x67, 0x61, 0x6c, 0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x4a, 0x6f, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x73, 0x62, 0x75, 0x72, 0x67, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x4d, 0x62, 0x61, 0x62, 0x61, 0x6e, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x73, -0x61, 0x6b, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x72, 0x61, 0x72, 0x65, 0x0, 0x41, 0x73, -0x69, 0x61, 0x2f, 0x43, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x68, -0x61, 0x72, 0x74, 0x6f, 0x75, 0x6d, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x61, 0x6d, 0x61, 0x73, 0x63, 0x75, 0x73, -0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x61, 0x69, 0x70, 0x65, 0x69, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, -0x69, 0x61, 0x2f, 0x48, 0x6f, 0x62, 0x61, 0x72, 0x74, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, -0x43, 0x75, 0x72, 0x72, 0x69, 0x65, 0x20, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, -0x63, 0x71, 0x75, 0x61, 0x72, 0x69, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x61, 0x67, -0x75, 0x61, 0x69, 0x6e, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x39, 0x0, 0x41, 0x73, 0x69, 0x61, -0x2f, 0x44, 0x69, 0x6c, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x61, 0x79, 0x61, 0x70, 0x75, 0x72, 0x61, 0x0, -0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x6f, 0x6b, 0x79, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, -0x61, 0x6c, 0x61, 0x75, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x6f, 0x6d, 0x73, 0x6b, 0x0, 0x50, 0x61, 0x63, 0x69, -0x66, 0x69, 0x63, 0x2f, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x74, 0x61, 0x70, 0x75, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, -0x68, 0x69, 0x74, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x49, 0x73, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x6c, -0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6b, 0x0, -0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, 0x6c, 0x61, 0x61, 0x6e, 0x62, 0x61, 0x61, 0x74, 0x61, 0x72, 0x20, 0x41, 0x73, 0x69, -0x61, 0x2f, 0x43, 0x68, 0x6f, 0x69, 0x62, 0x61, 0x6c, 0x73, 0x61, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, -0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x70, 0x6f, 0x6c, 0x69, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x6f, 0x20, 0x41, 0x6d, -0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x56, 0x65, 0x76, 0x61, 0x79, 0x0, -0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x37, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x65, -0x72, 0x6d, 0x6f, 0x73, 0x69, 0x6c, 0x6c, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x68, 0x6f, -0x65, 0x6e, 0x69, 0x78, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x31, 0x31, 0x0, 0x50, 0x61, 0x63, 0x69, -0x66, 0x69, 0x63, 0x2f, 0x50, 0x61, 0x67, 0x6f, 0x5f, 0x50, 0x61, 0x67, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, -0x63, 0x2f, 0x4e, 0x69, 0x75, 0x65, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x69, 0x64, 0x77, 0x61, -0x79, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x39, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, -0x47, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x72, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x38, 0x0, 0x50, 0x61, -0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x69, 0x74, 0x63, 0x61, 0x69, 0x72, 0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, -0x4d, 0x54, 0x2b, 0x32, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x72, 0x6f, 0x6e, 0x68, 0x61, -0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x47, 0x65, 0x6f, 0x72, -0x67, 0x69, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x20, 0x45, 0x74, 0x63, 0x2f, 0x55, 0x54, 0x43, 0x0, -0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x68, 0x61, 0x76, 0x6e, -0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x32, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, -0x54, 0x61, 0x72, 0x61, 0x77, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x61, 0x6a, 0x75, 0x72, -0x6f, 0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4b, 0x77, 0x61, 0x6a, 0x61, 0x6c, 0x65, 0x69, 0x6e, 0x0, -0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, 0x61, 0x75, 0x72, 0x75, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, -0x63, 0x2f, 0x46, 0x75, 0x6e, 0x61, 0x66, 0x75, 0x74, 0x69, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x57, -0x61, 0x6b, 0x65, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x57, 0x61, 0x6c, 0x6c, 0x69, 0x73, 0x0, 0x45, -0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x33, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x6e, -0x64, 0x65, 0x72, 0x62, 0x75, 0x72, 0x79, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x46, 0x61, 0x6b, 0x61, -0x6f, 0x66, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x72, 0x61, 0x63, 0x61, 0x73, 0x0, -0x41, 0x73, 0x69, 0x61, 0x2f, 0x56, 0x6c, 0x61, 0x64, 0x69, 0x76, 0x6f, 0x73, 0x74, 0x6f, 0x6b, 0x20, 0x41, 0x73, 0x69, -0x61, 0x2f, 0x55, 0x73, 0x74, 0x2d, 0x4e, 0x65, 0x72, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x6f, -0x6c, 0x67, 0x6f, 0x67, 0x72, 0x61, 0x64, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x50, 0x65, -0x72, 0x74, 0x68, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, -0x2f, 0x41, 0x6c, 0x67, 0x69, 0x65, 0x72, 0x73, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x61, 0x6e, -0x64, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x6f, 0x2d, 0x4e, 0x6f, 0x76, 0x6f, -0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x6f, 0x75, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x42, 0x61, 0x6e, 0x67, 0x75, 0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x64, 0x6a, 0x61, -0x6d, 0x65, 0x6e, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x73, 0x61, -0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x72, 0x61, 0x7a, 0x7a, 0x61, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, -0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x6c, 0x61, 0x62, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, -0x2f, 0x4c, 0x69, 0x62, 0x72, 0x65, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, -0x69, 0x61, 0x6d, 0x65, 0x79, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x61, 0x67, 0x6f, 0x73, 0x0, 0x41, -0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x75, 0x6e, 0x69, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, -0x6e, 0x64, 0x6f, 0x72, 0x72, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x69, 0x65, 0x6e, 0x6e, 0x61, -0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, -0x65, 0x2f, 0x42, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x65, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x47, 0x69, -0x62, 0x72, 0x61, 0x6c, 0x74, 0x61, 0x72, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x52, 0x6f, 0x6d, 0x65, 0x0, -0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x61, 0x64, 0x75, 0x7a, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, -0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x6f, 0x75, 0x72, 0x67, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x61, -0x6c, 0x74, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x6f, 0x6e, 0x61, 0x63, 0x6f, 0x0, 0x45, 0x75, -0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x6d, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, 0x6d, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, -0x65, 0x2f, 0x4f, 0x73, 0x6c, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x6e, 0x5f, 0x4d, 0x61, -0x72, 0x69, 0x6e, 0x6f, 0x0, 0x41, 0x72, 0x63, 0x74, 0x69, 0x63, 0x2f, 0x4c, 0x6f, 0x6e, 0x67, 0x79, 0x65, 0x61, 0x72, -0x62, 0x79, 0x65, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x74, 0x6f, 0x63, 0x6b, 0x68, 0x6f, 0x6c, -0x6d, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x75, 0x72, 0x69, 0x63, 0x68, 0x0, 0x45, 0x75, 0x72, 0x6f, -0x70, 0x65, 0x2f, 0x56, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x48, 0x6f, 0x76, 0x64, -0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x35, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, -0x61, 0x2f, 0x4d, 0x61, 0x77, 0x73, 0x6f, 0x6e, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4b, 0x65, 0x72, 0x67, -0x75, 0x65, 0x6c, 0x65, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4f, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x73, 0x69, 0x61, -0x2f, 0x41, 0x71, 0x74, 0x61, 0x75, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x71, 0x74, 0x6f, 0x62, 0x65, 0x20, 0x41, -0x73, 0x69, 0x61, 0x2f, 0x41, 0x74, 0x79, 0x72, 0x61, 0x75, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, -0x6c, 0x64, 0x69, 0x76, 0x65, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x65, -0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x73, 0x68, 0x67, 0x61, 0x62, 0x61, 0x74, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, -0x54, 0x61, 0x73, 0x68, 0x6b, 0x65, 0x6e, 0x74, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x6d, 0x61, 0x72, 0x6b, -0x61, 0x6e, 0x64, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x48, 0x65, 0x62, 0x72, 0x6f, 0x6e, 0x20, 0x41, 0x73, 0x69, 0x61, -0x2f, 0x47, 0x61, 0x7a, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x30, 0x0, 0x41, 0x6e, 0x74, -0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x75, 0x6d, 0x6f, 0x6e, 0x74, 0x44, 0x55, 0x72, 0x76, 0x69, 0x6c, -0x6c, 0x65, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x47, 0x75, 0x61, 0x6d, 0x0, 0x50, 0x61, 0x63, 0x69, -0x66, 0x69, 0x63, 0x2f, 0x54, 0x72, 0x75, 0x6b, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x53, 0x61, 0x69, -0x70, 0x61, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x5f, 0x4d, 0x6f, 0x72, -0x65, 0x73, 0x62, 0x79, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, 0x61, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x20, 0x41, 0x73, -0x69, 0x61, 0x2f, 0x4b, 0x68, 0x61, 0x6e, 0x64, 0x79, 0x67, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x57, 0x68, 0x69, 0x74, 0x65, 0x68, 0x6f, 0x72, 0x73, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, +0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x61, 0x6d, 0x70, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, +0x6c, 0x69, 0x61, 0x2f, 0x42, 0x72, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x65, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, +0x69, 0x61, 0x2f, 0x4c, 0x69, 0x6e, 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x43, +0x68, 0x69, 0x73, 0x69, 0x6e, 0x61, 0x75, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6f, 0x5f, +0x50, 0x61, 0x75, 0x6c, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, +0x0, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x61, 0x73, +0x73, 0x61, 0x75, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x6f, 0x72, 0x6f, 0x6e, 0x74, 0x6f, 0x20, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x71, 0x61, 0x6c, 0x75, 0x69, 0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x4e, 0x69, 0x70, 0x69, 0x67, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6e, +0x67, 0x6e, 0x69, 0x72, 0x74, 0x75, 0x6e, 0x67, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x68, 0x75, +0x6e, 0x64, 0x65, 0x72, 0x5f, 0x42, 0x61, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x65, 0x77, +0x5f, 0x59, 0x6f, 0x72, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x74, 0x72, 0x6f, 0x69, +0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x50, 0x65, +0x74, 0x65, 0x72, 0x73, 0x62, 0x75, 0x72, 0x67, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, +0x69, 0x61, 0x6e, 0x61, 0x2f, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x57, 0x69, 0x6e, 0x61, 0x6d, 0x61, 0x63, 0x20, 0x41, +0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x65, 0x6e, 0x74, 0x75, 0x63, 0x6b, 0x79, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, +0x69, 0x63, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x75, 0x69, 0x73, +0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x6e, 0x63, 0x75, 0x6e, +0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x69, 0x72, 0x6f, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, +0x65, 0x6b, 0x61, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x62, 0x75, 0x72, 0x67, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, +0x2f, 0x46, 0x69, 0x6a, 0x69, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x6f, 0x66, 0x69, 0x61, 0x0, 0x45, +0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x54, 0x61, 0x6c, 0x6c, 0x69, 0x6e, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, +0x2f, 0x48, 0x65, 0x6c, 0x73, 0x69, 0x6e, 0x6b, 0x69, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x52, 0x69, 0x67, +0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x69, 0x6c, 0x6e, 0x69, 0x75, 0x73, 0x0, 0x45, 0x75, 0x72, +0x6f, 0x70, 0x65, 0x2f, 0x4b, 0x69, 0x65, 0x76, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x55, 0x7a, 0x68, 0x67, +0x6f, 0x72, 0x6f, 0x64, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x61, 0x70, 0x6f, 0x72, 0x6f, 0x7a, 0x68, +0x79, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x61, 0x72, 0x69, 0x65, 0x68, 0x61, 0x6d, 0x6e, 0x0, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x62, 0x69, 0x6c, 0x69, 0x73, 0x69, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, +0x63, 0x2f, 0x46, 0x61, 0x65, 0x72, 0x6f, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x47, 0x75, 0x65, 0x72, +0x6e, 0x73, 0x65, 0x79, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x44, 0x75, 0x62, 0x6c, 0x69, 0x6e, 0x0, 0x45, +0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x69, 0x73, 0x62, 0x6f, 0x6e, 0x20, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, +0x63, 0x2f, 0x4d, 0x61, 0x64, 0x65, 0x69, 0x72, 0x61, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x43, +0x61, 0x6e, 0x61, 0x72, 0x79, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x6f, 0x6e, 0x64, 0x6f, 0x6e, 0x0, +0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x49, 0x73, 0x6c, 0x65, 0x5f, 0x6f, 0x66, 0x5f, 0x4d, 0x61, 0x6e, 0x0, 0x45, +0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4a, 0x65, 0x72, 0x73, 0x65, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x47, 0x6f, 0x64, 0x74, 0x68, 0x61, 0x62, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4f, 0x75, 0x61, 0x67, +0x61, 0x64, 0x6f, 0x75, 0x67, 0x6f, 0x75, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x62, 0x69, 0x64, 0x6a, +0x61, 0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x6e, 0x6a, 0x75, 0x6c, 0x0, 0x41, 0x66, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x41, 0x63, 0x63, 0x72, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, +0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x68, 0x61, 0x76, 0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x6f, +0x6e, 0x61, 0x6b, 0x72, 0x79, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x69, 0x73, 0x73, 0x61, 0x75, 0x0, +0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x52, 0x65, 0x79, 0x6b, 0x6a, 0x61, 0x76, 0x69, 0x6b, 0x0, 0x41, +0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x72, 0x6f, 0x76, 0x69, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x42, 0x61, 0x6d, 0x61, 0x6b, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x75, 0x61, +0x6b, 0x63, 0x68, 0x6f, 0x74, 0x74, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x6b, 0x61, 0x72, 0x0, +0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x46, 0x72, 0x65, 0x65, 0x74, 0x6f, 0x77, 0x6e, 0x0, 0x41, 0x74, 0x6c, 0x61, +0x6e, 0x74, 0x69, 0x63, 0x2f, 0x53, 0x74, 0x5f, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x4c, 0x6f, 0x6d, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x69, 0x63, 0x6f, 0x73, 0x69, 0x61, 0x20, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x46, 0x61, 0x6d, 0x61, 0x67, 0x75, 0x73, 0x74, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, +0x65, 0x2f, 0x41, 0x74, 0x68, 0x65, 0x6e, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x75, 0x63, 0x68, +0x61, 0x72, 0x65, 0x73, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x2d, 0x61, +0x75, 0x2d, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x65, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x31, 0x30, 0x0, +0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x52, 0x61, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x0, 0x50, 0x61, +0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x61, 0x68, 0x69, 0x74, 0x69, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, +0x2f, 0x48, 0x6f, 0x6e, 0x6f, 0x6c, 0x75, 0x6c, 0x75, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4a, 0x6f, +0x68, 0x6e, 0x73, 0x74, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x74, 0x74, 0x61, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x65, 0x68, 0x72, 0x61, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x65, +0x72, 0x75, 0x73, 0x61, 0x6c, 0x65, 0x6d, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x6d, 0x6d, 0x61, 0x6e, 0x0, 0x45, +0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4b, 0x61, 0x6c, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x72, 0x61, 0x64, 0x0, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x53, 0x65, 0x6f, 0x75, 0x6c, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x72, 0x69, 0x70, +0x6f, 0x6c, 0x69, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x34, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, +0x69, 0x63, 0x2f, 0x4b, 0x69, 0x72, 0x69, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, +0x6c, 0x69, 0x61, 0x2f, 0x4c, 0x6f, 0x72, 0x64, 0x5f, 0x48, 0x6f, 0x77, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, +0x61, 0x67, 0x61, 0x64, 0x61, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x75, 0x6e, 0x74, 0x61, +0x5f, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x61, 0x72, 0x71, +0x75, 0x65, 0x73, 0x61, 0x73, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, +0x75, 0x73, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x52, 0x65, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x0, 0x49, 0x6e, +0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x68, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x65, 0x69, 0x72, 0x75, +0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6f, +0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x73, 0x61, 0x62, 0x6c, 0x61, 0x6e, 0x63, 0x61, 0x0, 0x41, +0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x45, 0x6c, 0x5f, 0x41, 0x61, 0x69, 0x75, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x68, 0x75, 0x61, 0x68, 0x75, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x4d, 0x61, 0x7a, 0x61, 0x74, 0x6c, 0x61, 0x6e, 0x0, 0x4d, 0x53, 0x54, 0x37, 0x4d, 0x44, 0x54, 0x0, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x45, 0x64, 0x6d, 0x6f, 0x6e, 0x74, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x42, 0x61, 0x79, 0x20, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x75, 0x76, 0x69, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6b, 0x6e, 0x69, 0x66, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x4f, 0x6a, 0x69, 0x6e, 0x61, 0x67, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x6e, 0x76, +0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x69, 0x73, 0x65, 0x0, 0x49, 0x6e, 0x64, +0x69, 0x61, 0x6e, 0x2f, 0x43, 0x6f, 0x63, 0x6f, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x52, 0x61, 0x6e, 0x67, 0x6f, +0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x6f, 0x76, 0x6f, 0x73, 0x69, 0x62, 0x69, 0x72, 0x73, 0x6b, 0x0, +0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x69, 0x6e, 0x64, 0x68, 0x6f, 0x65, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, +0x2f, 0x4b, 0x61, 0x74, 0x6d, 0x61, 0x6e, 0x64, 0x75, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, +0x2f, 0x4d, 0x63, 0x4d, 0x75, 0x72, 0x64, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x41, 0x75, 0x63, +0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4a, 0x6f, 0x68, +0x6e, 0x73, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, 0x6f, 0x72, 0x66, 0x6f, 0x6c, 0x6b, 0x0, 0x41, +0x73, 0x69, 0x61, 0x2f, 0x49, 0x72, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x72, 0x61, +0x73, 0x6e, 0x6f, 0x79, 0x61, 0x72, 0x73, 0x6b, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x6f, 0x76, 0x6f, 0x6b, 0x75, +0x7a, 0x6e, 0x65, 0x74, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x79, 0x6f, 0x6e, 0x67, 0x79, 0x61, 0x6e, +0x67, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4f, 0x6d, 0x73, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x53, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x67, 0x6f, 0x0, 0x50, 0x53, 0x54, 0x38, 0x50, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x56, 0x61, 0x6e, 0x63, 0x6f, 0x75, 0x76, 0x65, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x73, 0x5f, 0x41, 0x6e, 0x67, 0x65, 0x6c, 0x65, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x54, 0x69, 0x6a, 0x75, 0x61, 0x6e, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, +0x61, 0x6e, 0x74, 0x61, 0x5f, 0x49, 0x73, 0x61, 0x62, 0x65, 0x6c, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x72, +0x61, 0x63, 0x68, 0x69, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x73, 0x75, 0x6e, 0x63, 0x69, 0x6f, +0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x51, 0x79, 0x7a, 0x79, 0x6c, 0x6f, 0x72, 0x64, 0x61, 0x0, 0x45, 0x75, 0x72, +0x6f, 0x70, 0x65, 0x2f, 0x42, 0x72, 0x75, 0x73, 0x73, 0x65, 0x6c, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, +0x43, 0x6f, 0x70, 0x65, 0x6e, 0x68, 0x61, 0x67, 0x65, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x50, 0x61, +0x72, 0x69, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x61, 0x64, 0x72, 0x69, 0x64, 0x20, 0x41, 0x66, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x65, 0x75, 0x74, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, +0x6d, 0x61, 0x72, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x72, 0x65, 0x64, 0x6e, 0x65, 0x6b, 0x6f, 0x6c, 0x79, +0x6d, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x6d, 0x63, 0x68, 0x61, 0x74, 0x6b, 0x61, 0x20, 0x41, +0x73, 0x69, 0x61, 0x2f, 0x41, 0x6e, 0x61, 0x64, 0x79, 0x72, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x6f, +0x73, 0x63, 0x6f, 0x77, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4b, 0x69, 0x72, 0x6f, 0x76, 0x0, 0x45, 0x75, +0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x69, 0x6d, 0x66, 0x65, 0x72, 0x6f, 0x70, 0x6f, 0x6c, 0x0, 0x45, 0x74, 0x63, 0x2f, +0x47, 0x4d, 0x54, 0x2b, 0x33, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x6f, 0x74, +0x68, 0x65, 0x72, 0x61, 0x20, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6c, 0x6d, +0x65, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x46, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x65, 0x7a, 0x61, +0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x4d, 0x61, 0x63, 0x65, 0x69, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x65, +0x63, 0x69, 0x66, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x61, 0x72, 0x65, +0x6d, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x53, 0x74, 0x61, 0x6e, 0x6c, 0x65, 0x79, 0x0, 0x41, +0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x79, 0x65, 0x6e, 0x6e, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x61, 0x72, 0x69, 0x62, 0x6f, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, +0x54, 0x2b, 0x35, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x69, 0x6f, 0x5f, 0x42, 0x72, 0x61, 0x6e, +0x63, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x45, 0x69, 0x72, 0x75, 0x6e, 0x65, 0x70, 0x65, 0x0, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x6f, 0x72, 0x61, 0x6c, 0x5f, 0x48, 0x61, 0x72, 0x62, 0x6f, 0x75, +0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x79, 0x6d, 0x61, 0x6e, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x67, 0x6f, 0x74, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x47, 0x75, 0x61, 0x79, 0x61, 0x71, 0x75, 0x69, 0x6c, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x61, +0x6d, 0x61, 0x69, 0x63, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6e, 0x61, 0x6d, 0x61, +0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x69, 0x6d, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, +0x54, 0x2b, 0x34, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6e, 0x67, 0x75, 0x69, 0x6c, 0x6c, 0x61, +0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6e, 0x74, 0x69, 0x67, 0x75, 0x61, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x75, 0x62, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, +0x61, 0x72, 0x62, 0x61, 0x64, 0x6f, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x61, 0x5f, 0x50, +0x61, 0x7a, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x6e, 0x61, 0x75, 0x73, 0x20, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x61, 0x5f, 0x56, 0x69, 0x73, 0x74, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x6f, 0x5f, 0x56, 0x65, 0x6c, 0x68, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x42, 0x6c, 0x61, 0x6e, 0x63, 0x2d, 0x53, 0x61, 0x62, 0x6c, 0x6f, 0x6e, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x6f, 0x5f, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x47, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x47, 0x75, 0x61, 0x64, 0x65, 0x6c, 0x6f, 0x75, 0x70, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, +0x75, 0x79, 0x61, 0x6e, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, +0x69, 0x71, 0x75, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x73, 0x65, 0x72, +0x72, 0x61, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x75, 0x72, 0x61, 0x63, 0x61, 0x6f, 0x0, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x75, 0x65, 0x72, 0x74, 0x6f, 0x5f, 0x52, 0x69, 0x63, 0x6f, 0x0, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4b, 0x69, 0x74, 0x74, 0x73, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4c, 0x75, 0x63, 0x69, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x53, 0x74, 0x5f, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x50, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x66, 0x5f, 0x53, 0x70, 0x61, 0x69, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x54, 0x6f, 0x72, 0x74, 0x6f, 0x6c, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, +0x74, 0x5f, 0x54, 0x68, 0x6f, 0x6d, 0x61, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, +0x42, 0x61, 0x72, 0x74, 0x68, 0x65, 0x6c, 0x65, 0x6d, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, +0x61, 0x72, 0x69, 0x67, 0x6f, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x6c, 0x65, +0x6e, 0x64, 0x69, 0x6a, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x5f, +0x50, 0x72, 0x69, 0x6e, 0x63, 0x65, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x69, 0x71, 0x75, +0x65, 0x6c, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x6b, 0x68, 0x61, 0x6c, 0x69, 0x6e, 0x0, 0x50, +0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x41, 0x70, 0x69, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, +0x61, 0x6f, 0x5f, 0x54, 0x6f, 0x6d, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x72, 0x61, 0x74, +0x6f, 0x76, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x37, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, +0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x76, 0x69, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x68, 0x6e, 0x6f, 0x6d, +0x5f, 0x50, 0x65, 0x6e, 0x68, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6d, +0x61, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x61, 0x6b, 0x61, 0x72, 0x74, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, +0x2f, 0x50, 0x6f, 0x6e, 0x74, 0x69, 0x61, 0x6e, 0x61, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x56, 0x69, 0x65, 0x6e, +0x74, 0x69, 0x61, 0x6e, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x6e, 0x67, 0x6b, 0x6f, 0x6b, 0x0, 0x41, +0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x69, 0x67, 0x6f, 0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x38, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, +0x6b, 0x61, 0x73, 0x73, 0x61, 0x72, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x75, 0x61, 0x6c, 0x61, 0x5f, 0x4c, 0x75, +0x6d, 0x70, 0x75, 0x72, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x75, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x0, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x4d, 0x61, 0x6e, 0x69, 0x6c, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x69, 0x6e, 0x67, 0x61, +0x70, 0x6f, 0x72, 0x65, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x32, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x47, 0x61, 0x62, 0x6f, 0x72, 0x6f, 0x6e, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x75, +0x6a, 0x75, 0x6d, 0x62, 0x75, 0x72, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x62, 0x75, 0x6d, +0x62, 0x61, 0x73, 0x68, 0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x73, 0x65, 0x72, 0x75, 0x0, +0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6c, 0x61, 0x6e, 0x74, 0x79, 0x72, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x4d, 0x61, 0x70, 0x75, 0x74, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x69, 0x67, +0x61, 0x6c, 0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x6f, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x73, 0x62, +0x75, 0x72, 0x67, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x62, 0x61, 0x62, 0x61, 0x6e, 0x65, 0x0, 0x41, +0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x73, 0x61, 0x6b, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x48, 0x61, 0x72, 0x61, 0x72, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x75, 0x62, 0x61, 0x0, 0x41, +0x73, 0x69, 0x61, 0x2f, 0x43, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, +0x68, 0x61, 0x72, 0x74, 0x6f, 0x75, 0x6d, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x61, 0x6d, 0x61, 0x73, 0x63, 0x75, +0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x61, 0x69, 0x70, 0x65, 0x69, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, +0x6c, 0x69, 0x61, 0x2f, 0x48, 0x6f, 0x62, 0x61, 0x72, 0x74, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, +0x2f, 0x43, 0x75, 0x72, 0x72, 0x69, 0x65, 0x20, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d, +0x61, 0x63, 0x71, 0x75, 0x61, 0x72, 0x69, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x61, +0x67, 0x75, 0x61, 0x69, 0x6e, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x39, 0x0, 0x41, 0x73, 0x69, +0x61, 0x2f, 0x44, 0x69, 0x6c, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x61, 0x79, 0x61, 0x70, 0x75, 0x72, 0x61, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x6f, 0x6b, 0x79, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, +0x50, 0x61, 0x6c, 0x61, 0x75, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x6f, 0x6d, 0x73, 0x6b, 0x0, 0x50, 0x61, 0x63, +0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x74, 0x61, 0x70, 0x75, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, +0x43, 0x68, 0x69, 0x74, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x49, 0x73, 0x74, 0x61, 0x6e, 0x62, 0x75, +0x6c, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6b, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, 0x6c, 0x61, 0x61, 0x6e, 0x62, 0x61, 0x61, 0x74, 0x61, 0x72, 0x20, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x43, 0x68, 0x6f, 0x69, 0x62, 0x61, 0x6c, 0x73, 0x61, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x70, 0x6f, 0x6c, 0x69, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x6f, 0x20, 0x41, +0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x56, 0x65, 0x76, 0x61, 0x79, +0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x37, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x77, 0x73, 0x6f, -0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x77, 0x73, 0x6f, 0x6e, 0x5f, 0x43, 0x72, 0x65, -0x65, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x46, 0x6f, 0x72, 0x74, 0x5f, 0x4e, 0x65, 0x6c, 0x73, +0x6e, 0x5f, 0x43, 0x72, 0x65, 0x65, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x46, 0x6f, 0x72, 0x74, +0x5f, 0x4e, 0x65, 0x6c, 0x73, 0x6f, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x65, 0x72, 0x6d, +0x6f, 0x73, 0x69, 0x6c, 0x6c, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x68, 0x6f, 0x65, 0x6e, +0x69, 0x78, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x31, 0x31, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, +0x63, 0x2f, 0x50, 0x61, 0x67, 0x6f, 0x5f, 0x50, 0x61, 0x67, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, +0x4e, 0x69, 0x75, 0x65, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x69, 0x64, 0x77, 0x61, 0x79, 0x0, +0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x39, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x47, 0x61, +0x6d, 0x62, 0x69, 0x65, 0x72, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x38, 0x0, 0x50, 0x61, 0x63, 0x69, +0x66, 0x69, 0x63, 0x2f, 0x50, 0x69, 0x74, 0x63, 0x61, 0x69, 0x72, 0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, +0x2b, 0x32, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x72, 0x6f, 0x6e, 0x68, 0x61, 0x0, 0x41, +0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x47, 0x65, 0x6f, 0x72, 0x67, 0x69, +0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x55, 0x54, 0x43, 0x20, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x0, 0x45, 0x74, +0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x32, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x61, 0x72, +0x61, 0x77, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x61, 0x6a, 0x75, 0x72, 0x6f, 0x20, 0x50, +0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4b, 0x77, 0x61, 0x6a, 0x61, 0x6c, 0x65, 0x69, 0x6e, 0x0, 0x50, 0x61, 0x63, +0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, 0x61, 0x75, 0x72, 0x75, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x46, +0x75, 0x6e, 0x61, 0x66, 0x75, 0x74, 0x69, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x57, 0x61, 0x6b, 0x65, +0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x57, 0x61, 0x6c, 0x6c, 0x69, 0x73, 0x0, 0x45, 0x74, 0x63, 0x2f, +0x47, 0x4d, 0x54, 0x2d, 0x31, 0x33, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x6e, 0x64, 0x65, 0x72, +0x62, 0x75, 0x72, 0x79, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x46, 0x61, 0x6b, 0x61, 0x6f, 0x66, 0x6f, +0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x72, 0x61, 0x63, 0x61, 0x73, 0x0, 0x41, 0x73, 0x69, +0x61, 0x2f, 0x56, 0x6c, 0x61, 0x64, 0x69, 0x76, 0x6f, 0x73, 0x74, 0x6f, 0x6b, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, +0x73, 0x74, 0x2d, 0x4e, 0x65, 0x72, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x6f, 0x6c, 0x67, 0x6f, +0x67, 0x72, 0x61, 0x64, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x50, 0x65, 0x72, 0x74, 0x68, +0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6c, +0x67, 0x69, 0x65, 0x72, 0x73, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x61, 0x6e, 0x64, 0x61, 0x0, +0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x6f, 0x2d, 0x4e, 0x6f, 0x76, 0x6f, 0x0, 0x41, 0x66, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x6f, 0x75, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, +0x61, 0x6e, 0x67, 0x75, 0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x64, 0x6a, 0x61, 0x6d, 0x65, 0x6e, +0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x73, 0x61, 0x0, 0x41, 0x66, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x72, 0x61, 0x7a, 0x7a, 0x61, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x41, 0x66, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x6c, 0x61, 0x62, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x69, +0x62, 0x72, 0x65, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x69, 0x61, 0x6d, +0x65, 0x79, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x61, 0x67, 0x6f, 0x73, 0x0, 0x41, 0x66, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x54, 0x75, 0x6e, 0x69, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x6e, 0x64, 0x6f, +0x72, 0x72, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x69, 0x65, 0x6e, 0x6e, 0x61, 0x0, 0x45, 0x75, +0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, +0x75, 0x73, 0x69, 0x6e, 0x67, 0x65, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x47, 0x69, 0x62, 0x72, 0x61, +0x6c, 0x74, 0x61, 0x72, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x52, 0x6f, 0x6d, 0x65, 0x0, 0x45, 0x75, 0x72, +0x6f, 0x70, 0x65, 0x2f, 0x56, 0x61, 0x64, 0x75, 0x7a, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x75, 0x78, +0x65, 0x6d, 0x62, 0x6f, 0x75, 0x72, 0x67, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x61, 0x6c, 0x74, 0x61, +0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x6f, 0x6e, 0x61, 0x63, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, +0x65, 0x2f, 0x41, 0x6d, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, 0x6d, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4f, +0x73, 0x6c, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x6e, 0x5f, 0x4d, 0x61, 0x72, 0x69, 0x6e, +0x6f, 0x0, 0x41, 0x72, 0x63, 0x74, 0x69, 0x63, 0x2f, 0x4c, 0x6f, 0x6e, 0x67, 0x79, 0x65, 0x61, 0x72, 0x62, 0x79, 0x65, +0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x74, 0x6f, 0x63, 0x6b, 0x68, 0x6f, 0x6c, 0x6d, 0x0, 0x45, +0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x75, 0x72, 0x69, 0x63, 0x68, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, +0x56, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x48, 0x6f, 0x76, 0x64, 0x0, 0x45, 0x74, +0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x35, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d, +0x61, 0x77, 0x73, 0x6f, 0x6e, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4b, 0x65, 0x72, 0x67, 0x75, 0x65, 0x6c, +0x65, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4f, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x71, +0x74, 0x61, 0x75, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x71, 0x74, 0x6f, 0x62, 0x65, 0x20, 0x41, 0x73, 0x69, 0x61, +0x2f, 0x41, 0x74, 0x79, 0x72, 0x61, 0x75, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x6c, 0x64, 0x69, +0x76, 0x65, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x65, 0x0, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x41, 0x73, 0x68, 0x67, 0x61, 0x62, 0x61, 0x74, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x61, 0x73, +0x68, 0x6b, 0x65, 0x6e, 0x74, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x6e, 0x64, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x48, 0x65, 0x62, 0x72, 0x6f, 0x6e, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x47, 0x61, +0x7a, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x30, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, +0x74, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x75, 0x6d, 0x6f, 0x6e, 0x74, 0x44, 0x55, 0x72, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, +0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x47, 0x75, 0x61, 0x6d, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, +0x2f, 0x54, 0x72, 0x75, 0x6b, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x53, 0x61, 0x69, 0x70, 0x61, 0x6e, +0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x5f, 0x4d, 0x6f, 0x72, 0x65, 0x73, 0x62, +0x79, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, 0x61, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, +0x4b, 0x68, 0x61, 0x6e, 0x64, 0x79, 0x67, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x68, 0x69, +0x74, 0x65, 0x68, 0x6f, 0x72, 0x73, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x77, 0x73, 0x6f, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x75, 0x65, 0x6e, 0x6f, 0x73, 0x5f, 0x41, 0x69, 0x72, 0x65, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x73, 0x74, 0x72, 0x61, 0x6b, 0x68, 0x61, 0x6e, 0x0, 0x41, @@ -1231,7 +1232,7 @@ 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x6f, 0x73, 0x63, 0x6f, 0x77, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x48, 0x6f, 0x62, 0x61, 0x72, 0x74, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, 0x6c, 0x61, 0x61, 0x6e, 0x62, 0x61, 0x61, 0x74, 0x61, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, -0x61, 0x70, 0x6f, 0x6c, 0x69, 0x73, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, +0x61, 0x70, 0x6f, 0x6c, 0x69, 0x73, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x55, 0x54, 0x43, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x56, 0x6c, 0x61, 0x64, 0x69, 0x76, 0x6f, 0x73, 0x74, 0x6f, 0x6b, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x61, 0x73, 0x68, 0x6b, 0x65, 0x6e, 0x74, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x48, 0x65, 0x62, 0x72, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, 0x61, 0x6b, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qtimezoneprivate_tz.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qtimezoneprivate_tz.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/time/qtimezoneprivate_tz.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/time/qtimezoneprivate_tz.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -350,6 +350,11 @@ static QDate calculateDowDate(int year, int month, int dayOfWeek, int week) { + if (dayOfWeek == 0) // Sunday; we represent it as 7, POSIX uses 0 + dayOfWeek = 7; + else if (dayOfWeek & ~7 || month < 1 || month > 12 || week < 1 || week > 5) + return QDate(); + QDate date(year, month, 1); int startDow = date.dayOfWeek(); if (startDow <= dayOfWeek) @@ -364,28 +369,34 @@ static QDate calculatePosixDate(const QByteArray &dateRule, int year) { + bool ok; // Can start with M, J, or a digit if (dateRule.at(0) == 'M') { // nth week in month format "Mmonth.week.dow" QList<QByteArray> dateParts = dateRule.split('.'); - int month = dateParts.at(0).mid(1).toInt(); - int week = dateParts.at(1).toInt(); - int dow = dateParts.at(2).toInt(); - if (dow == 0) // Sunday; we represent it as 7 - dow = 7; - return calculateDowDate(year, month, dow, week); + if (dateParts.count() > 2) { + int month = dateParts.at(0).mid(1).toInt(&ok); + int week = ok ? dateParts.at(1).toInt(&ok) : 0; + int dow = ok ? dateParts.at(2).toInt(&ok) : 0; + if (ok) + return calculateDowDate(year, month, dow, week); + } } else if (dateRule.at(0) == 'J') { // Day of Year ignores Feb 29 - int doy = dateRule.mid(1).toInt(); - QDate date = QDate(year, 1, 1).addDays(doy - 1); - if (QDate::isLeapYear(date.year())) - date = date.addDays(-1); - return date; + int doy = dateRule.mid(1).toInt(&ok); + if (ok && doy > 0 && doy < 366) { + QDate date = QDate(year, 1, 1).addDays(doy - 1); + if (QDate::isLeapYear(date.year()) && date.month() > 2) + date = date.addDays(-1); + return date; + } } else { // Day of Year includes Feb 29 - int doy = dateRule.toInt(); - return QDate(year, 1, 1).addDays(doy - 1); + int doy = dateRule.toInt(&ok); + if (ok && doy > 0 && doy <= 366) + return QDate(year, 1, 1).addDays(doy - 1); } + return QDate(); } // returns the time in seconds, INT_MIN if we failed to parse @@ -576,7 +587,8 @@ result << data; return result; } - + if (parts.count() < 3 || parts.at(1).isEmpty() || parts.at(2).isEmpty()) + return result; // Malformed. // Get the std to dst transtion details QList<QByteArray> dstParts = parts.at(1).split('/'); @@ -596,6 +608,9 @@ else stdTime = QTime(2, 0, 0); + if (dstDateRule.isEmpty() || stdDateRule.isEmpty() || !dstTime.isValid() || !stdTime.isValid()) + return result; // Malformed. + // Limit year to the range QDateTime can represent: const int minYear = int(QDateTime::YearRange::First); const int maxYear = int(QDateTime::YearRange::Last); @@ -860,7 +875,7 @@ void QTzTimeZonePrivate::init(const QByteArray &ianaId) { static QTzTimeZoneCache tzCache; - const auto &entry = tzCache.fetchEntry(ianaId); + auto entry = tzCache.fetchEntry(ianaId); if (entry.m_tranTimes.isEmpty() && entry.m_posixRule.isEmpty()) return; // Invalid after all ! @@ -1169,8 +1184,11 @@ */ const StatIdent local = identify("/etc/localtime"); const StatIdent tz = identify("/etc/TZ"); - if (!m_name.isEmpty() && m_last.isValid() && (m_last == local || m_last == tz)) + const StatIdent timezone = identify("/etc/timezone"); + if (!m_name.isEmpty() && m_last.isValid() + && (m_last == local || m_last == tz || m_last == timezone)) { return m_name; + } m_name = etcLocalTime(); if (!m_name.isEmpty()) { @@ -1178,12 +1196,19 @@ return m_name; } - m_name = etcTZ(); - m_last = m_name.isEmpty() ? StatIdent() : tz; + // Some systems (e.g. uClibc) have a default value for $TZ in /etc/TZ: + m_name = etcContent(QStringLiteral("/etc/TZ")); + if (!m_name.isEmpty()) { + m_last = tz; + return m_name; + } + + // Gentoo still (2020, QTBUG-87326) uses this: + m_name = etcContent(QStringLiteral("/etc/timezone")); + m_last = m_name.isEmpty() ? StatIdent() : timezone; return m_name; } - private: QByteArray m_name; struct StatIdent @@ -1224,10 +1249,8 @@ return QByteArray(); } - static QByteArray etcTZ() + static QByteArray etcContent(const QString &path) { - // Some systems (e.g. uClibc) have a default value for $TZ in /etc/TZ: - const QString path = QStringLiteral("/etc/TZ"); QFile zone(path); if (zone.open(QIODevice::ReadOnly)) return zone.readAll().trimmed(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qduplicatetracker_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qduplicatetracker_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qduplicatetracker_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qduplicatetracker_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -64,11 +64,18 @@ template <typename T, size_t Prealloc = 32> class QDuplicateTracker { #ifdef __cpp_lib_memory_resource - char buffer[Prealloc * sizeof(T)]; + struct node_guesstimate { void *next; size_t hash; T value; }; + static constexpr size_t bufferSize(size_t N) { + return N * sizeof(void*) // bucket list + + N * sizeof(node_guesstimate); // nodes + } + + char buffer[bufferSize(Prealloc)]; std::pmr::monotonic_buffer_resource res{buffer, sizeof buffer}; - std::pmr::unordered_set<T> set{&res}; + std::pmr::unordered_set<T> set{Prealloc, &res}; #else - QSet<T> set; + static QSet<T> makeQSet() { QSet<T> r; r.reserve(Prealloc); return r; } + QSet<T> set = makeQSet(); int setSize = 0; #endif Q_DISABLE_COPY_MOVE(QDuplicateTracker); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qlist.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qlist.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qlist.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qlist.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -2017,7 +2017,7 @@ \include containers-range-constructor.qdocinc - \sa fromSet(), toVector(), QVector::toList() + \sa toVector(), QVector::toList() */ /*! \fn template <class T> QVector<T> QList<T>::toVector() const @@ -2030,61 +2030,91 @@ \include containers-range-constructor.qdocinc - \sa toSet(), fromVector(), QVector::fromList() + \sa fromVector(), QVector::fromList() */ /*! \fn template <class T> QList<T> QList<T>::fromSet(const QSet<T> &set) + \obsolete Returns a QList object with the data contained in \a set. The order of the elements in the QList is undefined. - Example: - - \snippet code/src_corelib_tools_qlistdata.cpp 23 - \include containers-range-constructor.qdocinc - \sa fromVector(), toSet(), QSet::toList() + \oldcode + QSet<int> set; + // ... + QList<int> list = QList<int>::fromSet(set); + \newcode + QSet<int> set; + // ... + QList<int> list(set.begin(), set.end()); + \endcode + + \sa QList(InputIterator, InputIterator), fromVector(), toSet(), QSet::toList() */ /*! \fn template <class T> QSet<T> QList<T>::toSet() const + \obsolete Returns a QSet object with the data contained in this QList. Since QSet doesn't allow duplicates, the resulting QSet might be smaller than the original list was. - Example: - - \snippet code/src_corelib_tools_qlistdata.cpp 24 - \include containers-range-constructor.qdocinc - \sa toVector(), fromSet(), QSet::fromList() + \oldcode + QStringList list; + // ... + QSet<QString> set = list.toSet(); + \newcode + QStringList list; + // ... + QSet<QString> set(list.begin(), list.end()); + \endcode + + \sa QSet::QSet(InputIterator, InputIterator), toVector(), fromSet(), QSet::fromList() */ /*! \fn template <class T> QList<T> QList<T>::fromStdList(const std::list<T> &list) + \obsolete Returns a QList object with the data contained in \a list. The order of the elements in the QList is the same as in \a list. - Example: - - \snippet code/src_corelib_tools_qlistdata.cpp 25 - \include containers-range-constructor.qdocinc - \sa toStdList(), QVector::fromStdVector() + \oldcode + std::list<double> stdlist; + // ... + QList<double> list = QList<double>::fromStdList(stdlist); + \newcode + std::list<double> stdlist; + // ... + QList<double> list(stdlist.begin(), stdlist.end()); + \endcode + + \sa QList(InputIterator, InputIterator), toStdList(), QVector::fromStdVector() */ /*! \fn template <class T> std::list<T> QList<T>::toStdList() const + \obsolete Returns a std::list object with the data contained in this QList. Example: - \snippet code/src_corelib_tools_qlistdata.cpp 26 - \include containers-range-constructor.qdocinc + \oldcode + QList<double> list; + // ... + std::list<double> stdlist = list.toStdList(); + \newcode + QList<double> list; + // ... + std::list<double> stdlist(list.begin(), list.end()); + \endcode + \sa fromStdList(), QVector::toStdVector() */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qoffsetstringarray_p.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qoffsetstringarray_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qoffsetstringarray_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qoffsetstringarray_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -55,6 +55,7 @@ #include <tuple> #include <array> +#include <limits> QT_BEGIN_NAMESPACE diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qset.qdoc qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qset.qdoc --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qset.qdoc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qset.qdoc 2022-11-11 15:29:17.000000000 +0800 @@ -1071,17 +1071,32 @@ */ /*! \fn template <class T> QList<T> QSet<T>::toList() const + \obsolete Returns a new QList containing the elements in the set. The order of the elements in the QList is undefined. - Example: - - \snippet code/doc_src_qset.cpp 13 - \include containers-range-constructor.qdocinc - \sa fromList(), QList::fromSet() + \oldcode + QSet<QString> set; + // ... + QList<QString> list = set.toList(); + \newcode + QSet<QString> set; + // ... + QList<QString> list(set.begin(), set.end()); + \endcode + + or + + \code + QSet<QString> set; + // ... + QList<QString> list = set.values(); + \endcode + + \sa QList::QList(InputIterator, InputIterator), values(), fromList(), QList::fromSet() */ /*! \fn template <class T> QList<T> QSet<T>::values() const @@ -1089,28 +1104,44 @@ Returns a new QList containing the elements in the set. The order of the elements in the QList is undefined. - This is the same as toList(). - \include containers-range-constructor.qdocinc - \sa fromList(), QList::fromSet() + \oldcode + QSet<QString> set; + // ... + QList<QString> list = set.values(); + \newcode + QSet<QString> set; + // ... + QList<QString> list(set.begin(), set.end()); + \endcode + + + \sa QList::QList(InputIterator, InputIterator) */ /*! \fn template <class T> QSet<T> QSet<T>::fromList(const QList<T> &list) + \obsolete Returns a new QSet object containing the data contained in \a list. Since QSet doesn't allow duplicates, the resulting QSet might be smaller than the \a list, because QList can contain duplicates. - Example: - - \snippet code/doc_src_qset.cpp 14 - \include containers-range-constructor.qdocinc - \sa toList(), QList::toSet() + \oldcode + QStringList list; + // ... + QSet<QString> set = QSet<QString>::fromList(list); + \newcode + QStringList list; + // ... + QSet<QString> set(list.begin(), list.end()); + \endcode + + \sa QSet(InputIterator, InputIterator), values(), QList::toSet() */ /*! diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qsharedpointer_impl.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qsharedpointer_impl.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qsharedpointer_impl.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qsharedpointer_impl.h 2022-11-11 15:29:17.000000000 +0800 @@ -881,7 +881,7 @@ template <class T> Q_INLINE_TEMPLATE uint qHash(const QSharedPointer<T> &ptr, uint seed = 0) { - return QT_PREPEND_NAMESPACE(qHash)(ptr.data(), seed); + return qHash(ptr.data(), seed); } @@ -1012,15 +1012,11 @@ using element_type = typename std::shared_ptr<X>::element_type; auto castResult = qobject_cast<element_type *>(src.get()); if (castResult) { - auto result = std::shared_ptr<X>(std::move(src), castResult); -#if __cplusplus <= 201703L // C++2a's move aliasing constructor will leave src empty. // Before C++2a we don't really know if the compiler has support for it. // The move aliasing constructor is the resolution for LWG2996, // which does not impose a feature-testing macro. So: clear src. - src.reset(); -#endif - return result; + return std::shared_ptr<X>(qExchange(src, nullptr), castResult); } return std::shared_ptr<X>(); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qsimd.cpp qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qsimd.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qsimd.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qsimd.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -132,7 +132,7 @@ #if defined(Q_OS_LINUX) # if defined(Q_PROCESSOR_ARM_V8) && defined(Q_PROCESSOR_ARM_64) - features |= Q_UINT64_C(1) << CpuFeatureNEON; // NEON is always available on ARMv8 64bit. + features |= CpuFeatureNEON; // NEON is always available on ARMv8 64bit. # endif int auxv = qt_safe_open("/proc/self/auxv", O_RDONLY); if (auxv != -1) { @@ -151,17 +151,17 @@ # if defined(Q_PROCESSOR_ARM_V8) && defined(Q_PROCESSOR_ARM_64) // For Aarch64: if (vector[i+1] & HWCAP_CRC32) - features |= Q_UINT64_C(1) << CpuFeatureCRC32; + features |= CpuFeatureCRC32; # endif // Aarch32, or ARMv7 or before: if (vector[i+1] & HWCAP_NEON) - features |= Q_UINT64_C(1) << CpuFeatureNEON; + features |= CpuFeatureNEON; } # if defined(Q_PROCESSOR_ARM_32) // For Aarch32: if (vector[i] == AT_HWCAP2) { if (vector[i+1] & HWCAP2_CRC32) - features |= Q_UINT64_C(1) << CpuFeatureCRC32; + features |= CpuFeatureCRC32; } # endif } @@ -174,10 +174,10 @@ #endif #if defined(__ARM_NEON__) - features |= Q_UINT64_C(1) << CpuFeatureNEON; + features |= CpuFeatureNEON; #endif #if defined(__ARM_FEATURE_CRC32) - features |= Q_UINT64_C(1) << CpuFeatureCRC32; + features |= CpuFeatureCRC32; #endif return features; @@ -505,18 +505,18 @@ quint64 flags = 0; #if defined __mips_dsp - flags |= Q_UINT64_C(1) << CpuFeatureDSP; + flags |= CpuFeatureDSP; # if defined __mips_dsp_rev && __mips_dsp_rev >= 2 - flags |= Q_UINT64_C(1) << CpuFeatureDSPR2; + flags |= CpuFeatureDSPR2; # elif defined(Q_OS_LINUX) if (procCpuinfoContains("cpu model", "MIPS 74Kc") || procCpuinfoContains("cpu model", "MIPS 74Kf")) - flags |= Q_UINT64_C(1) << CpuFeatureDSPR2; + flags |= CpuFeatureDSPR2; # endif #elif defined(Q_OS_LINUX) if (procCpuinfoContains("ASEs implemented", "dsp")) { - flags |= Q_UINT64_C(1) << CpuFeatureDSP; + flags |= CpuFeatureDSP; if (procCpuinfoContains("cpu model", "MIPS 74Kc") || procCpuinfoContains("cpu model", "MIPS 74Kf")) - flags |= Q_UINT64_C(1) << CpuFeatureDSPR2; + flags |= CpuFeatureDSPR2; } #endif diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qvarlengtharray.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qvarlengtharray.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qvarlengtharray.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qvarlengtharray.h 2022-11-11 15:29:17.000000000 +0800 @@ -152,19 +152,18 @@ if (s == a) { // i.e. s != 0 T copy(t); realloc(s, s<<1); - const int idx = s++; - new (ptr + idx) T(std::move(copy)); + new (end()) T(std::move(copy)); } else { - const int idx = s++; - new (ptr + idx) T(t); + new (end()) T(t); } + ++s; } void append(T &&t) { if (s == a) realloc(s, s << 1); - const int idx = s++; - new (ptr + idx) T(std::move(t)); + new (end()) T(std::move(t)); + ++s; } void append(const T *buf, int size); @@ -501,14 +500,14 @@ } template <class T, int Prealloc> -Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthArray<T, Prealloc>::insert(const_iterator before, size_type n, const T &t) +Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthArray<T, Prealloc>::insert(const_iterator before, int n, const T &t) { Q_ASSERT_X(isValidIterator(before), "QVarLengthArray::insert", "The specified const_iterator argument 'before' is invalid"); int offset = int(before - ptr); if (n != 0) { + const T copy(t); // `t` could alias an element in [begin(), end()[ resize(s + n); - const T copy(t); if (!QTypeInfoQuery<T>::isRelocatable) { T *b = ptr + offset; T *j = ptr + s; @@ -538,6 +537,12 @@ int f = int(abegin - ptr); int l = int(aend - ptr); int n = l - f; + + if (n == 0) // avoid UB in std::copy() below + return data() + f; + + Q_ASSERT(n > 0); // aend must be reachable from abegin + if (QTypeInfo<T>::isComplex) { std::copy(ptr + l, ptr + s, QT_MAKE_CHECKED_ARRAY_ITERATOR(ptr + f, s - f)); T *i = ptr + s; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qvarlengtharray.qdoc qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qvarlengtharray.qdoc --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qvarlengtharray.qdoc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qvarlengtharray.qdoc 2022-11-11 15:29:17.000000000 +0800 @@ -90,6 +90,11 @@ \sa QVector, QList, QLinkedList */ +/*! \fn template<class T, int Prealloc> QVarLengthArray<T, Prealloc>::QVarLengthArray() + + Constructs an array with an initial size of zero. +*/ + /*! \fn template<class T, int Prealloc> QVarLengthArray<T, Prealloc>::QVarLengthArray(int size) Constructs an array with an initial size of \a size elements. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qvector.h qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qvector.h --- qtbase-opensource-src-5.15.3+dfsg/src/corelib/tools/qvector.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/corelib/tools/qvector.h 2022-11-11 15:29:17.000000000 +0800 @@ -523,7 +523,7 @@ d = Data::allocate(asize); Q_CHECK_PTR(d); d->size = asize; - T* i = d->end(); + auto i = d->end(); while (i != d->begin()) new (--i) T(t); } else { @@ -835,18 +835,25 @@ if (!isDetached() || d->size + n > int(d->alloc)) realloc(d->size + n, QArrayData::Grow); if (!QTypeInfoQuery<T>::isRelocatable) { - T *b = d->end(); - T *i = d->end() + n; - while (i != b) - new (--i) T; - i = d->end(); + T *const e = d->end(); + T *const b = d->begin() + offset; + + T *i = e; T *j = i + n; - b = d->begin() + offset; - while (i != b) - *--j = *--i; - i = b+n; + + // move old elements into the uninitialized space + while (i != b && j > e) + new (--j) T(std::move(*--i)); + // move the rest of old elements into the tail using assignment while (i != b) - *--i = copy; + *--j = std::move(*--i); + + // construct copies of t inside the uninitialized space + while (j != b && j > e) + new (--j) T(copy); + // use assignment to fill the recently-moved-from space + while (j != b) + *--j = copy; } else { T *b = d->begin() + offset; T *i = b + n; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/doc/snippets/code/src_gui_painting_qtransform.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/doc/snippets/code/src_gui_painting_qtransform.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/doc/snippets/code/src_gui_painting_qtransform.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/doc/snippets/code/src_gui_painting_qtransform.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -51,7 +51,7 @@ //! [0] x' = m11*x + m21*y + dx y' = m22*y + m12*x + dy -if (is not affine) { +if (!isAffine()) { w' = m13*x + m23*y + m33 x' /= w' y' /= w' @@ -62,7 +62,7 @@ //! [1] x' = m11*x + m21*y + dx y' = m22*y + m12*x + dy -if (is not affine) { +if (!isAffine()) { w' = m13*x + m23*y + m33 x' /= w' y' /= w' @@ -73,7 +73,7 @@ //! [2] x' = m11*x + m21*y + dx y' = m22*y + m12*x + dy -if (is not affine) { +if (!isAffine()) { w' = m13*x + m23*y + m33 x' /= w' y' /= w' @@ -84,7 +84,7 @@ //! [3] x' = m11*x + m21*y + dx y' = m22*y + m12*x + dy -if (is not affine) { +if (!isAffine()) { w' = m13*x + m23*y + m33 x' /= w' y' /= w' diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/doc/snippets/transform/main.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/doc/snippets/transform/main.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/doc/snippets/transform/main.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/doc/snippets/transform/main.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -47,8 +47,12 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ +#include <QApplication> +#include <QMath> +#include <QPainter> +#include <QVBoxLayout> +#include <QWidget> -#include <QtGui> #include <cmath> class SimpleTransformation : public QWidget @@ -103,18 +107,15 @@ //! [2] void BasicOperations::paintEvent(QPaintEvent *) { - double pi = 3.14; - - double a = pi/180 * 45.0; + const double a = qDegreesToRadians(45.0); double sina = sin(a); double cosa = cos(a); - QTransform translationTransform(1, 0, 0, 1, 50.0, 50.0); - QTransform rotationTransform(cosa, sina, -sina, cosa, 0, 0); - QTransform scalingTransform(0.5, 0, 0, 1.0, 0, 0); + QTransform scale(0.5, 0, 0, 1.0, 0, 0); + QTransform rotate(cosa, sina, -sina, cosa, 0, 0); + QTransform translate(1, 0, 0, 1, 50.0, 50.0); - QTransform transform; - transform = scalingTransform * rotationTransform * translationTransform; + QTransform transform = scale * rotate * translate; QPainter painter(this); painter.setPen(QPen(Qt::blue, 1, Qt::DashLine)); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/image/qimage.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/image/qimage.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/image/qimage.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/image/qimage.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1749,10 +1749,14 @@ w, d->height, d->bytes_per_line); return; } else if (d->depth == 16) { + if (d->format == Format_RGB444) + pixel |= 0xf000; qt_rectfill<quint16>(reinterpret_cast<quint16*>(d->data), pixel, 0, 0, d->width, d->height, d->bytes_per_line); return; } else if (d->depth == 24) { + if (d->format == Format_RGB666) + pixel |= 0xfc0000; qt_rectfill<quint24>(reinterpret_cast<quint24*>(d->data), pixel, 0, 0, d->width, d->height, d->bytes_per_line); return; @@ -2153,7 +2157,7 @@ QImage dest(src.size(), format); dest.setColorTable(clut); - QImageData::get(dest)->text = QImageData::get(src)->text; + copyMetadata(QImageData::get(dest), QImageData::get(src)); int h = src.height(); int w = src.width(); @@ -2254,6 +2258,7 @@ // In case detach() ran out of memory if (!d) { d = oldD; + d->ref.ref(); return false; } } @@ -2493,7 +2498,7 @@ ((uint *)s)[x] = index_or_rgb; return; case Format_RGB16: - ((quint16 *)s)[x] = qConvertRgb32To16(qUnpremultiply(index_or_rgb)); + ((quint16 *)s)[x] = qConvertRgb32To16(index_or_rgb); return; case Format_RGBX8888: ((uint *)s)[x] = ARGB2RGBA(0xff000000 | index_or_rgb); @@ -2514,6 +2519,10 @@ case Format_A2RGB30_Premultiplied: ((uint *)s)[x] = qConvertArgb32ToA2rgb30<PixelOrderRGB>(index_or_rgb); return; + case Format_RGBA64: + case Format_RGBA64_Premultiplied: + ((QRgba64 *)s)[x] = QRgba64::fromArgb32(index_or_rgb); + return; case Format_Invalid: case NImageFormats: Q_ASSERT(false); @@ -2523,7 +2532,10 @@ } const QPixelLayout *layout = &qPixelLayouts[d->format]; - layout->storeFromARGB32PM(s, &index_or_rgb, x, 1, nullptr, nullptr); + if (!hasAlphaChannel()) + layout->storeFromRGB32(s, &index_or_rgb, x, 1, nullptr, nullptr); + else + layout->storeFromARGB32PM(s, &index_or_rgb, x, 1, nullptr, nullptr); } /*! diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/image/qpixmap.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/image/qpixmap.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/image/qpixmap.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/image/qpixmap.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -926,6 +926,7 @@ // it will be filled with new pixel data anyway. QPlatformPixmap *d = data->createCompatiblePlatformPixmap(); d->resize(data->width(), data->height()); + d->setDevicePixelRatio(data->devicePixelRatio()); data = d; } data->fill(color); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/image/qpixmapcache.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/image/qpixmapcache.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/image/qpixmapcache.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/image/qpixmapcache.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -461,6 +461,11 @@ for (int i = 0; i < keys.size(); ++i) keys.at(i).d->isValid = false; QCache<QPixmapCache::Key, QPixmapCacheEntry>::clear(); + // Nothing left to flush; stop the timer + if (theid) { + killTimer(theid); + theid = 0; + } } QPixmapCache::KeyData* QPMCache::getKeyData(QPixmapCache::Key *key) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/image/qpnghandler.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/image/qpnghandler.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/image/qpnghandler.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/image/qpnghandler.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -612,7 +612,7 @@ png_get_iCCP(png_ptr, info_ptr, &name, &compressionType, &profileData, &profLen); colorSpace = QColorSpace::fromIccProfile(QByteArray((const char *)profileData, profLen)); if (!colorSpace.isValid()) { - qWarning() << "QPngHandler: Failed to parse ICC profile"; + qDebug() << "QPngHandler: Failed to parse ICC profile"; } else { QColorSpacePrivate *csD = QColorSpacePrivate::getWritable(colorSpace); if (csD->description.isEmpty()) @@ -649,10 +649,10 @@ } if (primaries.areValid()) { colorSpace = QColorSpace(primaries.whitePoint, primaries.redPoint, primaries.greenPoint, primaries.bluePoint, - QColorSpace::TransferFunction::Gamma, fileGamma); + QColorSpace::TransferFunction::Gamma, 1.0f / fileGamma); } else { colorSpace = QColorSpace(QColorSpace::Primaries::SRgb, - QColorSpace::TransferFunction::Gamma, fileGamma); + QColorSpace::TransferFunction::Gamma, 1.0f / fileGamma); } colorSpaceState = GammaChrm; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/image/qppmhandler.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/image/qppmhandler.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/image/qppmhandler.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/image/qppmhandler.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -63,7 +63,7 @@ } while (res > 0 && buf[res-1] != '\n'); } -static int read_pbm_int(QIODevice *d) +static int read_pbm_int(QIODevice *d, bool *ok) { char c; int val = -1; @@ -97,6 +97,8 @@ else break; } + if (val < 0) + *ok = false; return hasOverflow ? -1 : val; } @@ -113,16 +115,17 @@ if (type < '1' || type > '6') return false; - w = read_pbm_int(device); // get image width - h = read_pbm_int(device); // get image height + bool ok = true; + w = read_pbm_int(device, &ok); // get image width + h = read_pbm_int(device, &ok); // get image height if (type == '1' || type == '4') mcc = 1; // ignore max color component else - mcc = read_pbm_int(device); // get max color component + mcc = read_pbm_int(device, &ok); // get max color component - if (w <= 0 || w > 32767 || h <= 0 || h > 32767 || mcc <= 0 || mcc > 0xffff) - return false; // weird P.M image + if (!ok || w <= 0 || w > 32767 || h <= 0 || h > 32767 || mcc <= 0 || mcc > 0xffff) + return false; // weird P.M image return true; } @@ -233,18 +236,18 @@ } else { // read ascii data uchar *p; int n; - char buf; - for (y = 0; (y < h) && (device->peek(&buf, 1) == 1); y++) { + bool ok = true; + for (y = 0; y < h && ok; y++) { p = outImage->scanLine(y); n = pbm_bpl; if (nbits == 1) { int b; int bitsLeft = w; - while (n--) { + while (n-- && ok) { b = 0; for (int i=0; i<8; i++) { if (i < bitsLeft) - b = (b << 1) | (read_pbm_int(device) & 1); + b = (b << 1) | (read_pbm_int(device, &ok) & 1); else b = (b << 1) | (0 & 1); // pad it our self if we need to } @@ -253,36 +256,38 @@ } } else if (nbits == 8) { if (mcc == 255) { - while (n--) { - *p++ = read_pbm_int(device); + while (n-- && ok) { + *p++ = read_pbm_int(device, &ok); } } else { - while (n--) { - *p++ = (read_pbm_int(device) & 0xffff) * 255 / mcc; + while (n-- && ok) { + *p++ = (read_pbm_int(device, &ok) & 0xffff) * 255 / mcc; } } } else { // 32 bits n /= 4; int r, g, b; if (mcc == 255) { - while (n--) { - r = read_pbm_int(device); - g = read_pbm_int(device); - b = read_pbm_int(device); + while (n-- && ok) { + r = read_pbm_int(device, &ok); + g = read_pbm_int(device, &ok); + b = read_pbm_int(device, &ok); *((QRgb*)p) = qRgb(r, g, b); p += 4; } } else { - while (n--) { - r = read_pbm_int(device); - g = read_pbm_int(device); - b = read_pbm_int(device); + while (n-- && ok) { + r = read_pbm_int(device, &ok); + g = read_pbm_int(device, &ok); + b = read_pbm_int(device, &ok); *((QRgb*)p) = scale_pbm_color(mcc, r, g, b); p += 4; } } } } + if (!ok) + return false; } if (format == QImage::Format_Mono) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/image/qxpmhandler.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/image/qxpmhandler.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/image/qxpmhandler.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/image/qxpmhandler.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -50,6 +50,7 @@ #include <qvariant.h> #include <algorithm> +#include <array> QT_BEGIN_NAMESPACE @@ -924,7 +925,7 @@ colorMap.insert(xpmHash(QLatin1String(index.constData())), 0); } } else { - QRgb c_rgb; + QRgb c_rgb = 0; if (((buf.length()-1) % 3) && (buf[0] == '#')) { buf.truncate(((buf.length()-1) / 4 * 3) + 1); // remove alpha channel left by imagemagick } @@ -1056,15 +1057,23 @@ return read_xpm_body(device, source, index, state, cpp, ncols, w, h, image); } -static const char* xpm_color_name(int cpp, int index) +namespace { +template <size_t N> +struct CharBuffer : std::array<char, N> +{ + CharBuffer() {} // avoid value-initializing the whole array +}; +} + +static const char* xpm_color_name(int cpp, int index, CharBuffer<5> && returnable = {}) { - static char returnable[5]; static const char code[] = ".#abcdefghijklmnopqrstuvwxyzABCD" "EFGHIJKLMNOPQRSTUVWXYZ0123456789"; // cpp is limited to 4 and index is limited to 64^cpp if (cpp > 1) { if (cpp > 2) { if (cpp > 3) { + returnable[4] = '\0'; returnable[3] = code[index % 64]; index /= 64; } else @@ -1084,7 +1093,7 @@ returnable[1] = '\0'; returnable[0] = code[index]; - return returnable; + return returnable.data(); } @@ -1121,8 +1130,11 @@ ++cpp; // limit to 4 characters per pixel // 64^4 colors is enough for a 4096x4096 image - if (cpp > 4) - break; + if (cpp > 4) { + qWarning("Qt does not support writing XPM images with more than " + "64^4 colors (requested: %d colors).", ncolors); + return false; + } } // write header @@ -1150,16 +1162,7 @@ const QRgb *yp = reinterpret_cast<const QRgb *>(image.constScanLine(y)); for(x=0; x<w; x++) { int color = (int)(*(yp + x)); - const QByteArray chars(xpm_color_name(cpp, colorMap[color])); - line.append(chars[0]); - if (cpp > 1) { - line.append(chars[1]); - if (cpp > 2) { - line.append(chars[2]); - if (cpp > 3) - line.append(chars[3]); - } - } + line.append(xpm_color_name(cpp, colorMap[color])); } s << ',' << Qt::endl << '\"' << line << '\"'; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/kernel/qcursor.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/kernel/qcursor.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/kernel/qcursor.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/kernel/qcursor.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -529,8 +529,7 @@ */ /*! - Returns the cursor shape identifier. The return value is one of - the \l Qt::CursorShape enum values (cast to an int). + Returns the cursor shape identifier. \sa setShape() */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/kernel/qguiapplication.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/kernel/qguiapplication.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/kernel/qguiapplication.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/kernel/qguiapplication.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1316,7 +1316,10 @@ } #endif - fontSmoothingGamma = QGuiApplicationPrivate::platformIntegration()->styleHint(QPlatformIntegration::FontSmoothingGamma).toReal(); + const auto platformIntegration = QGuiApplicationPrivate::platformIntegration(); + fontSmoothingGamma = platformIntegration->styleHint(QPlatformIntegration::FontSmoothingGamma).toReal(); + QCoreApplication::setAttribute(Qt::AA_DontShowShortcutsInContextMenus, + !platformIntegration->styleHint(QPlatformIntegration::ShowShortcutsInContextMenus).toBool()); } static void init_plugins(const QList<QByteArray> &pluginList) @@ -1382,11 +1385,11 @@ QGuiApplication::tr("ID of the X11 Visual to use."), QStringLiteral("id"))); // Not using the "QStringList names" solution for those aliases, because it makes the first column too wide options->append(QCommandLineOption(QStringLiteral("geometry"), - QGuiApplication::tr("Alias for --windowgeometry."), QStringLiteral("geometry"))); + QGuiApplication::tr("Alias for --qwindowgeometry."), QStringLiteral("geometry"))); options->append(QCommandLineOption(QStringLiteral("icon"), - QGuiApplication::tr("Alias for --windowicon."), QStringLiteral("icon"))); + QGuiApplication::tr("Alias for --qwindowicon."), QStringLiteral("icon"))); options->append(QCommandLineOption(QStringLiteral("title"), - QGuiApplication::tr("Alias for --windowtitle."), QStringLiteral("title"))); + QGuiApplication::tr("Alias for --qwindowtitle."), QStringLiteral("title"))); } } #endif // QT_CONFIG(commandlineparser) @@ -2156,7 +2159,7 @@ processMouseEvent(e); // the original mouse event return; } - if (mouseMove && !positionChanged) { + if (type == QEvent::MouseMove && !positionChanged) { // On Windows, and possibly other platforms, a touchpad can send a mouse move // that does not change position, between a press and a release. This may // confuse applications, so we always filter out these mouse events for diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/kernel/qopenglcontext.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/kernel/qopenglcontext.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/kernel/qopenglcontext.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/kernel/qopenglcontext.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1031,7 +1031,8 @@ || qstrcmp(rendererString, "GC800 core") == 0 || qstrcmp(rendererString, "GC1000 core") == 0 || strstr(rendererString, "GC2000") != nullptr - || qstrcmp(rendererString, "Immersion.16") == 0; + || qstrcmp(rendererString, "Immersion.16") == 0 + || qstrncmp(rendererString, "Apple Mx", 7) == 0; } needsWorkaroundSet = true; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/kernel/qplatformwindow.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/kernel/qplatformwindow.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/kernel/qplatformwindow.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/kernel/qplatformwindow.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -229,7 +229,7 @@ */ bool QPlatformWindow::isAncestorOf(const QPlatformWindow *child) const { - for (const QPlatformWindow *parent = child->parent(); parent; parent = child->parent()) { + for (const QPlatformWindow *parent = child->parent(); parent; parent = parent->parent()) { if (parent == this) return true; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/kernel/qwindow.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/kernel/qwindow.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/kernel/qwindow.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/kernel/qwindow.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -614,6 +614,13 @@ By default, the window is not visible, you must call setVisible(true), or show() or similar to make it visible. + \note Hiding a window does not remove the window from the windowing system, + it only hides it. On windowing systems that give full screen applications a + dedicated desktop (such as macOS), hiding a full screen window will not remove + that desktop, but leave it blank. Another window from the same application + might be shown full screen, and will fill that desktop. Use QWindow::close to + completely remove a window from the windowing system. + \sa show() */ void QWindow::setVisible(bool visible) @@ -1224,11 +1231,13 @@ */ /*! - Returns \c true if the window should appear active from a style perspective. + Returns \c true if the window is active. This is the case for the window that has input focus as well as windows that are in the same parent / transient parent chain as the focus window. + Typically active windows should appear active from a style perspective. + To get the window that currently has focus, use QGuiApplication::focusWindow(). */ bool QWindow::isActive() const @@ -1926,7 +1935,12 @@ Q_D(QWindow); d->positionPolicy = QWindowPrivate::WindowFrameExclusive; if (d->platformWindow) { - d->platformWindow->setGeometry(QHighDpi::toNativePixels(QRect(position(), newSize), this)); + if (isTopLevel()) { + d->platformWindow->setGeometry(QHighDpi::toNativePixels(QRect(position(), newSize), this)); + } else { + d->platformWindow->setGeometry(QRect(QHighDpi::toNativeLocalPosition(position(), this), + QHighDpi::toNativePixels(newSize, this))); + } } else { const QSize oldSize = d->geometry.size(); d->geometry.setSize(newSize); @@ -2201,6 +2215,9 @@ Equivalent to calling setWindowStates(Qt::WindowFullScreen) and then setVisible(true). + See the \l{QWidget::showFullScreen()} documentation for platform-specific + considerations and limitations. + \sa setWindowStates(), setVisible() */ void QWindow::showFullScreen() diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/math3d/qquaternion.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/math3d/qquaternion.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/math3d/qquaternion.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/math3d/qquaternion.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -534,7 +534,11 @@ zw /= lengthSquared; } - *pitch = std::asin(-2.0f * (yz - xw)); + const float sinp = -2.0f * (yz - xw); + if (std::abs(sinp) >= 1.0f) + *pitch = std::copysign(M_PI_2, sinp); + else + *pitch = std::asin(sinp); if (*pitch < M_PI_2) { if (*pitch > -M_PI_2) { *yaw = std::atan2(2.0f * (xz + yw), 1.0f - 2.0f * (xx + yy)); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/opengl/qopenglpaintdevice.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/opengl/qopenglpaintdevice.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/opengl/qopenglpaintdevice.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/opengl/qopenglpaintdevice.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -331,7 +331,7 @@ void QOpenGLPaintDevice::setDotsPerMeterY(qreal dpmy) { - d_ptr->dpmx = dpmy; + d_ptr->dpmy = dpmy; } /*! diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/opengl/qopenglprogrambinarycache.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/opengl/qopenglprogrambinarycache.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/opengl/qopenglprogrambinarycache.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/opengl/qopenglprogrambinarycache.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -120,20 +120,24 @@ { const QString subPath = QLatin1String("/qtshadercache-") + QSysInfo::buildAbi() + QLatin1Char('/'); const QString sharedCachePath = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation); + m_globalCacheDir = sharedCachePath + subPath; + m_localCacheDir = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + subPath; + if (!sharedCachePath.isEmpty()) { - m_cacheDir = sharedCachePath + subPath; - m_cacheWritable = qt_ensureWritableDir(m_cacheDir); + m_currentCacheDir = m_globalCacheDir; + m_cacheWritable = qt_ensureWritableDir(m_currentCacheDir); } if (!m_cacheWritable) { - m_cacheDir = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + subPath; - m_cacheWritable = qt_ensureWritableDir(m_cacheDir); + m_currentCacheDir = m_localCacheDir; + m_cacheWritable = qt_ensureWritableDir(m_currentCacheDir); } - qCDebug(lcOpenGLProgramDiskCache, "Cache location '%s' writable = %d", qPrintable(m_cacheDir), m_cacheWritable); + + qCDebug(lcOpenGLProgramDiskCache, "Cache location '%s' writable = %d", qPrintable(m_currentCacheDir), m_cacheWritable); } QString QOpenGLProgramBinaryCache::cacheFileName(const QByteArray &cacheKey) const { - return m_cacheDir + QString::fromUtf8(cacheKey); + return m_currentCacheDir + QString::fromUtf8(cacheKey); } #define BASE_HEADER_SIZE (int(4 * sizeof(quint32))) @@ -362,6 +366,25 @@ *p += str.size(); } +static inline bool writeFile(const QString &filename, const QByteArray &data) +{ +#if QT_CONFIG(temporaryfile) + QSaveFile f(filename); + if (f.open(QIODevice::WriteOnly | QIODevice::Truncate)) { + f.write(data); + if (f.commit()) + return true; + } +#else + QFile f(filename); + if (f.open(QIODevice::WriteOnly | QIODevice::Truncate)) { + if (f.write(data) == data.length()) + return true; + } +#endif + return false; +} + void QOpenGLProgramBinaryCache::save(const QByteArray &cacheKey, uint programId) { if (!m_cacheWritable) @@ -428,20 +451,20 @@ writeUInt(&blobFormatPtr, blobFormat); -#if QT_CONFIG(temporaryfile) - QSaveFile f(cacheFileName(cacheKey)); - if (f.open(QIODevice::WriteOnly | QIODevice::Truncate)) { - f.write(blob); - if (!f.commit()) -#else - QFile f(cacheFileName(cacheKey)); - if (f.open(QIODevice::WriteOnly | QIODevice::Truncate)) { - if (f.write(blob) < blob.length()) -#endif - qCDebug(lcOpenGLProgramDiskCache, "Failed to write %s to shader cache", qPrintable(f.fileName())); - } else { - qCDebug(lcOpenGLProgramDiskCache, "Failed to create %s in shader cache", qPrintable(f.fileName())); + QString filename = cacheFileName(cacheKey); + bool ok = writeFile(filename, blob); + if (!ok && m_currentCacheDir == m_globalCacheDir) { + m_currentCacheDir = m_localCacheDir; + m_cacheWritable = qt_ensureWritableDir(m_currentCacheDir); + qCDebug(lcOpenGLProgramDiskCache, "Cache location changed to '%s' writable = %d", + qPrintable(m_currentCacheDir), m_cacheWritable); + if (m_cacheWritable) { + filename = cacheFileName(cacheKey); + ok = writeFile(filename, blob); + } } + if (!ok) + qCDebug(lcOpenGLProgramDiskCache, "Failed to write %s to shader cache", qPrintable(filename)); } #if defined(QT_OPENGL_ES_2) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/opengl/qopenglprogrambinarycache_p.h qtbase-opensource-src-5.15.8+dfsg/src/gui/opengl/qopenglprogrambinarycache_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/gui/opengl/qopenglprogrambinarycache_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/opengl/qopenglprogrambinarycache_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -89,7 +89,9 @@ bool verifyHeader(const QByteArray &buf) const; bool setProgramBinary(uint programId, uint blobFormat, const void *p, uint blobSize); - QString m_cacheDir; + QString m_globalCacheDir; + QString m_localCacheDir; + QString m_currentCacheDir; bool m_cacheWritable; struct MemCacheEntry { MemCacheEntry(const void *p, int size, uint format) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/opengl/qopengltextureblitter.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/opengl/qopengltextureblitter.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/opengl/qopengltextureblitter.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/opengl/qopengltextureblitter.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -44,10 +44,20 @@ #include <QtGui/QOpenGLVertexArrayObject> #include <QtGui/QOpenGLContext> #include <QtGui/QOpenGLFunctions> +#include <QtGui/QOpenGLExtraFunctions> #ifndef GL_TEXTURE_EXTERNAL_OES #define GL_TEXTURE_EXTERNAL_OES 0x8D65 #endif +#ifndef GL_TEXTURE_RECTANGLE +#define GL_TEXTURE_RECTANGLE 0x84F5 +#endif +#ifndef GL_TEXTURE_WIDTH +#define GL_TEXTURE_WIDTH 0x1000 +#endif +#ifndef GL_TEXTURE_HEIGHT +#define GL_TEXTURE_HEIGHT 0x1001 +#endif QT_BEGIN_NAMESPACE @@ -153,6 +163,30 @@ " gl_FragColor = swizzle ? tmpFragColor.bgra : tmpFragColor;" "}"; +static const char fragment_shader_rectangle[] = + "varying highp vec2 uv;" + "uniform sampler2DRect textureSampler;" + "uniform bool swizzle;" + "uniform highp float opacity;" + "void main() {" + " highp vec4 tmpFragColor = texture2DRect(textureSampler,uv);" + " tmpFragColor.a *= opacity;" + " gl_FragColor = swizzle ? tmpFragColor.bgra : tmpFragColor;" + "}"; + +static const char fragment_shader150_rectangle[] = + "#version 150 core\n" + "in vec2 uv;" + "out vec4 fragcolor;" + "uniform sampler2DRect textureSampler;" + "uniform bool swizzle;" + "uniform float opacity;" + "void main() {" + " vec4 tmpFragColor = texture(textureSampler, uv);" + " tmpFragColor.a *= opacity;" + " fragcolor = swizzle ? tmpFragColor.bgra : tmpFragColor;" + "}"; + static const GLfloat vertex_buffer_data[] = { -1,-1, 0, -1, 1, 0, @@ -198,7 +232,8 @@ enum ProgramIndex { TEXTURE_2D, - TEXTURE_EXTERNAL_OES + TEXTURE_EXTERNAL_OES, + TEXTURE_RECTANGLE }; QOpenGLTextureBlitterPrivate() : @@ -210,11 +245,15 @@ bool buildProgram(ProgramIndex idx, const char *vs, const char *fs); - void blit(GLuint texture, const QMatrix4x4 &vertexTransform, const QMatrix3x3 &textureTransform); - void blit(GLuint texture, const QMatrix4x4 &vertexTransform, QOpenGLTextureBlitter::Origin origin); + void blit(GLuint texture, const QMatrix4x4 &targetTransform, const QMatrix3x3 &sourceTransform); + void blit(GLuint texture, const QMatrix4x4 &targetTransform, QOpenGLTextureBlitter::Origin origin); + + QMatrix3x3 toTextureCoordinates(const QMatrix3x3 &sourceTransform) const; void prepareProgram(const QMatrix4x4 &vertexTransform); + bool supportsRectangleTarget() const; + QOpenGLBuffer vertexBuffer; QOpenGLBuffer textureBuffer; struct Program { @@ -239,7 +278,7 @@ bool swizzle; float opacity; TextureMatrixUniform textureMatrixUniformState; - } programs[2]; + } programs[3]; bool swizzle; float opacity; QScopedPointer<QOpenGLVertexArrayObject> vao; @@ -253,6 +292,8 @@ return QOpenGLTextureBlitterPrivate::TEXTURE_2D; case GL_TEXTURE_EXTERNAL_OES: return QOpenGLTextureBlitterPrivate::TEXTURE_EXTERNAL_OES; + case GL_TEXTURE_RECTANGLE: + return QOpenGLTextureBlitterPrivate::TEXTURE_RECTANGLE; default: qWarning("Unsupported texture target 0x%x", target); return QOpenGLTextureBlitterPrivate::TEXTURE_2D; @@ -286,14 +327,33 @@ } } +QMatrix3x3 QOpenGLTextureBlitterPrivate::toTextureCoordinates(const QMatrix3x3 &sourceTransform) const +{ + if (currentTarget == GL_TEXTURE_RECTANGLE) { + // Non-normalized coordinates + QMatrix4x4 textureTransform(sourceTransform); + if (auto *glFunctions = QOpenGLContext::currentContext()->extraFunctions()) { + int width, height; + glFunctions->glGetTexLevelParameteriv(currentTarget, 0, GL_TEXTURE_WIDTH, &width); + glFunctions->glGetTexLevelParameteriv(currentTarget, 0, GL_TEXTURE_HEIGHT, &height); + textureTransform.scale(width, height); + } + return textureTransform.toGenericMatrix<3, 3>(); + } + + return sourceTransform; // Normalized coordinates +} + void QOpenGLTextureBlitterPrivate::blit(GLuint texture, - const QMatrix4x4 &vertexTransform, - const QMatrix3x3 &textureTransform) + const QMatrix4x4 &targetTransform, + const QMatrix3x3 &sourceTransform) { TextureBinder binder(currentTarget, texture); - prepareProgram(vertexTransform); + prepareProgram(targetTransform); Program *program = &programs[targetToProgramIndex(currentTarget)]; + + const QMatrix3x3 textureTransform = toTextureCoordinates(sourceTransform); program->glProgram->setUniformValue(program->textureTransformUniformPos, textureTransform); program->textureMatrixUniformState = User; @@ -301,23 +361,26 @@ } void QOpenGLTextureBlitterPrivate::blit(GLuint texture, - const QMatrix4x4 &vertexTransform, + const QMatrix4x4 &targetTransform, QOpenGLTextureBlitter::Origin origin) { TextureBinder binder(currentTarget, texture); - prepareProgram(vertexTransform); + prepareProgram(targetTransform); Program *program = &programs[targetToProgramIndex(currentTarget)]; + if (origin == QOpenGLTextureBlitter::OriginTopLeft) { if (program->textureMatrixUniformState != IdentityFlipped) { - QMatrix3x3 flipped; - flipped(1,1) = -1; - flipped(1,2) = 1; - program->glProgram->setUniformValue(program->textureTransformUniformPos, flipped); + QMatrix3x3 sourceTransform; + sourceTransform(1,1) = -1; + sourceTransform(1,2) = 1; + const QMatrix3x3 textureTransform = toTextureCoordinates(sourceTransform); + program->glProgram->setUniformValue(program->textureTransformUniformPos, textureTransform); program->textureMatrixUniformState = IdentityFlipped; } } else if (program->textureMatrixUniformState != Identity) { - program->glProgram->setUniformValue(program->textureTransformUniformPos, QMatrix3x3()); + const QMatrix3x3 textureTransform = toTextureCoordinates(QMatrix3x3()); + program->glProgram->setUniformValue(program->textureTransformUniformPos, textureTransform); program->textureMatrixUniformState = Identity; } @@ -408,12 +471,18 @@ if (format.profile() == QSurfaceFormat::CoreProfile && format.version() >= qMakePair(3,2)) { if (!d->buildProgram(QOpenGLTextureBlitterPrivate::TEXTURE_2D, vertex_shader150, fragment_shader150)) return false; + if (d->supportsRectangleTarget()) + if (!d->buildProgram(QOpenGLTextureBlitterPrivate::TEXTURE_RECTANGLE, vertex_shader150, fragment_shader150_rectangle)) + return false; } else { if (!d->buildProgram(QOpenGLTextureBlitterPrivate::TEXTURE_2D, vertex_shader, fragment_shader)) return false; if (supportsExternalOESTarget()) if (!d->buildProgram(QOpenGLTextureBlitterPrivate::TEXTURE_EXTERNAL_OES, vertex_shader, fragment_shader_external_oes)) return false; + if (d->supportsRectangleTarget()) + if (!d->buildProgram(QOpenGLTextureBlitterPrivate::TEXTURE_RECTANGLE, vertex_shader, fragment_shader_rectangle)) + return false; } // Create and bind the VAO, if supported. @@ -459,6 +528,7 @@ Q_D(QOpenGLTextureBlitter); d->programs[QOpenGLTextureBlitterPrivate::TEXTURE_2D].glProgram.reset(); d->programs[QOpenGLTextureBlitterPrivate::TEXTURE_EXTERNAL_OES].glProgram.reset(); + d->programs[QOpenGLTextureBlitterPrivate::TEXTURE_RECTANGLE].glProgram.reset(); d->vertexBuffer.destroy(); d->textureBuffer.destroy(); d->vao.reset(); @@ -477,13 +547,39 @@ } /*! + \return \c true when bind() accepts \c GL_TEXTURE_RECTANGLE as + its target argument. + + \sa bind(), blit() + */ +bool QOpenGLTextureBlitterPrivate::supportsRectangleTarget() const +{ + QOpenGLContext *ctx = QOpenGLContext::currentContext(); + if (!ctx || ctx->isOpenGLES()) + return false; + + if (ctx->hasExtension("GL_ARB_texture_rectangle")) + return true; + + if (ctx->hasExtension("GL_EXT_texture_rectangle")) + return true; + + QSurfaceFormat f = ctx->format(); + const auto version = qMakePair(f.majorVersion(), f.minorVersion()); + if (version >= qMakePair(3, 1)) + return true; + + return false; +} + +/*! Binds the graphics resources used by the blitter. This must be called before calling blit(). Code modifying the OpenGL state should be avoided between the call to bind() and blit() because otherwise conflicts may arise. \a target is the texture target for the source texture and must be - either \c GL_TEXTURE_2D or \c GL_OES_EGL_image_external. + either \c GL_TEXTURE_2D, \c GL_TEXTURE_RECTANGLE, or \c GL_OES_EGL_image_external. \sa release(), blit() */ @@ -586,7 +682,7 @@ Origin sourceOrigin) { Q_D(QOpenGLTextureBlitter); - d->blit(texture,targetTransform, sourceOrigin); + d->blit(texture, targetTransform, sourceOrigin); } /*! diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/painting.pri qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/painting.pri --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/painting.pri 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/painting.pri 2022-11-11 15:29:17.000000000 +0800 @@ -146,7 +146,7 @@ NEON_HEADERS += painting/qdrawhelper_neon_p.h } !uikit:!win32:contains(QT_ARCH, "arm"): CONFIG += no_clang_integrated_as -!android:!uikit:!win32:!integrity:!contains(QT_ARCH, "arm64") { +!macos:!android:!uikit:!win32:!integrity:!contains(QT_ARCH, "arm64") { NEON_ASM += ../3rdparty/pixman/pixman-arm-neon-asm.S painting/qdrawhelper_neon_asm.S DEFINES += ENABLE_PIXMAN_DRAWHELPERS } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qcolorspace.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qcolorspace.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qcolorspace.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qcolorspace.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -146,13 +146,17 @@ QColorVector srcCone = abrad.map(wXyz); QColorVector dstCone = abrad.map(wXyzD50); - QColorMatrix wToD50 = { { dstCone.x / srcCone.x, 0, 0 }, - { 0, dstCone.y / srcCone.y, 0 }, - { 0, 0, dstCone.z / srcCone.z } }; + if (srcCone.x && srcCone.y && srcCone.z) { + QColorMatrix wToD50 = { { dstCone.x / srcCone.x, 0, 0 }, + { 0, dstCone.y / srcCone.y, 0 }, + { 0, 0, dstCone.z / srcCone.z } }; - QColorMatrix chromaticAdaptation = abradinv * (wToD50 * abrad); - toXyz = chromaticAdaptation * toXyz; + QColorMatrix chromaticAdaptation = abradinv * (wToD50 * abrad); + toXyz = chromaticAdaptation * toXyz; + } else { + toXyz.r = {0, 0, 0}; // set to invalid value + } } return toXyz; @@ -331,6 +335,7 @@ } trc[1] = trc[0]; trc[2] = trc[0]; + lut.generated.storeRelease(0); } QColorTransform QColorSpacePrivate::transformationToColorSpace(const QColorSpacePrivate *out) const diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qcolortransfertable_p.h qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qcolortransfertable_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qcolortransfertable_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qcolortransfertable_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -138,7 +138,7 @@ return 1.0f; if (!m_table16.isEmpty()) { float v = x * 65535.0f; - uint32_t i = std::floor(resultLargerThan * (m_tableSize - 1)) + 1; + uint32_t i = std::floor(resultLargerThan * (m_tableSize - 1)); for ( ; i < m_tableSize; ++i) { if (m_table16[i] > v) break; @@ -147,14 +147,14 @@ return 1.0f; float y1 = m_table16[i - 1]; float y2 = m_table16[i]; - Q_ASSERT(x >= y1 && x < y2); + Q_ASSERT(v >= y1 && v <= y2); float fr = (v - y1) / (y2 - y1); return (i + fr) * (1.0f / (m_tableSize - 1)); } if (!m_table8.isEmpty()) { float v = x * 255.0f; - uint32_t i = std::floor(resultLargerThan * (m_tableSize - 1)) + 1; + uint32_t i = std::floor(resultLargerThan * (m_tableSize - 1)); for ( ; i < m_tableSize; ++i) { if (m_table8[i] > v) break; @@ -163,7 +163,7 @@ return 1.0f; float y1 = m_table8[i - 1]; float y2 = m_table8[i]; - Q_ASSERT(x >= y1 && x < y2); + Q_ASSERT(v >= y1 && v <= y2); float fr = (v - y1) / (y2 - y1); return (i + fr) * (1.0f / (m_tableSize - 1)); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qcolortrc_p.h qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qcolortrc_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qcolortrc_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qcolortrc_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -114,7 +114,7 @@ if (x >= 0.0f && x <= 1.0f) return applyInverse(x); if (m_type == Type::Function) - return std::copysign(applyInverse(x), x); + return std::copysign(applyInverse(std::abs(x)), x); if (m_type == Type::Table) return x < 0.0f ? 0.0f : 1.0f; return x; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qdrawhelper.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qdrawhelper.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qdrawhelper.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qdrawhelper.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1419,7 +1419,7 @@ { QRgba64 *d = reinterpret_cast<QRgba64 *>(dest) + index; for (int i = 0; i < count; ++i) - d[i] = QRgba64::fromArgb32(src[i]); + d[i] = QRgba64::fromArgb32(src[i] | 0xff000000); } static const uint *QT_FASTCALL fetchRGBA64ToARGB32PM(uint *buffer, const uchar *src, int index, int count, @@ -1431,12 +1431,24 @@ return buffer; } +template<bool Mask> static void QT_FASTCALL storeRGBA64FromARGB32PM(uchar *dest, const uint *src, int index, int count, const QVector<QRgb> *, QDitherInfo *) { QRgba64 *d = reinterpret_cast<QRgba64 *>(dest) + index; - for (int i = 0; i < count; ++i) + for (int i = 0; i < count; ++i) { d[i] = QRgba64::fromArgb32(src[i]).unpremultiplied(); + if (Mask) + d[i].setAlpha(65535); + } +} + +static void QT_FASTCALL storeRGBA64FromARGB32(uchar *dest, const uint *src, int index, int count, + const QVector<QRgb> *, QDitherInfo *) +{ + QRgba64 *d = reinterpret_cast<QRgba64 *>(dest) + index; + for (int i = 0; i < count; ++i) + d[i] = QRgba64::fromArgb32(src[i]); } // Note: @@ -1523,15 +1535,15 @@ { false, false, QPixelLayout::BPP64, nullptr, convertPassThrough, nullptr, fetchRGB64ToRGB32, fetchPassThrough64, - storeRGB64FromRGB32, storeRGB64FromRGB32 }, // Format_RGBX64 + storeRGBA64FromARGB32PM<true>, storeRGB64FromRGB32 }, // Format_RGBX64 { true, false, QPixelLayout::BPP64, nullptr, convertARGB32ToARGB32PM, nullptr, fetchRGBA64ToARGB32PM, fetchRGBA64ToRGBA64PM, - storeRGBA64FromARGB32PM, storeRGB64FromRGB32 }, // Format_RGBA64 + storeRGBA64FromARGB32PM<false>, storeRGB64FromRGB32 }, // Format_RGBA64 { true, true, QPixelLayout::BPP64, nullptr, convertPassThrough, nullptr, fetchRGB64ToRGB32, fetchPassThrough64, - storeRGB64FromRGB32, storeRGB64FromRGB32 }, // Format_RGBA64_Premultiplied + storeRGBA64FromARGB32, storeRGB64FromRGB32 }, // Format_RGBA64_Premultiplied { false, false, QPixelLayout::BPP16, nullptr, convertGrayscale16ToRGB32, convertGrayscale16ToRGBA64, fetchGrayscale16ToRGB32, fetchGrayscale16ToRGBA64, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qicc.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qicc.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qicc.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qicc.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -52,7 +52,7 @@ #include <array> QT_BEGIN_NAMESPACE -Q_LOGGING_CATEGORY(lcIcc, "qt.gui.icc") +Q_LOGGING_CATEGORY(lcIcc, "qt.gui.icc", QtWarningMsg) struct ICCProfileHeader { @@ -165,7 +165,7 @@ struct CurvTagData : GenericTagData { quint32_be valueCount; - quint16_be value[1]; + // followed by curv values: quint16_be[] }; struct ParaTagData : GenericTagData { @@ -237,18 +237,20 @@ } if (header.profileClass != uint(ProfileClass::Input) - && header.profileClass != uint(ProfileClass::Display)) { - qCWarning(lcIcc, "Unsupported ICC profile class %x", quint32(header.profileClass)); + && header.profileClass != uint(ProfileClass::Display) + && (header.profileClass != uint(ProfileClass::Output) + || header.inputColorSpace != uint(ColorSpaceType::Gray))) { + qCInfo(lcIcc, "Unsupported ICC profile class 0x%x", quint32(header.profileClass)); return false; } if (header.inputColorSpace != uint(ColorSpaceType::Rgb) && header.inputColorSpace != uint(ColorSpaceType::Gray)) { - qCWarning(lcIcc, "Unsupported ICC input color space %x", quint32(header.inputColorSpace)); + qCInfo(lcIcc, "Unsupported ICC input color space 0x%x", quint32(header.inputColorSpace)); return false; } if (header.pcs != 0x58595a20 /* 'XYZ '*/) { // ### support PCSLAB - qCWarning(lcIcc, "Unsupported ICC profile connection space %x", quint32(header.pcs)); + qCInfo(lcIcc, "Unsupported ICC profile connection space 0x%x", quint32(header.pcs)); return false; } @@ -468,25 +470,26 @@ const GenericTagData trcData = qFromUnaligned<GenericTagData>(data.constData() + tagEntry.offset); if (trcData.type == quint32(Tag::curv)) { + Q_STATIC_ASSERT(sizeof(CurvTagData) == 12); const CurvTagData curv = qFromUnaligned<CurvTagData>(data.constData() + tagEntry.offset); if (curv.valueCount > (1 << 16)) return false; if (tagEntry.size - 12 < 2 * curv.valueCount) return false; + const auto valueOffset = tagEntry.offset + sizeof(CurvTagData); if (curv.valueCount == 0) { gamma.m_type = QColorTrc::Type::Function; gamma.m_fun = QColorTransferFunction(); // Linear } else if (curv.valueCount == 1) { - float g = curv.value[0] * (1.0f / 256.0f); + const quint16 v = qFromBigEndian<quint16>(data.constData() + valueOffset); gamma.m_type = QColorTrc::Type::Function; - gamma.m_fun = QColorTransferFunction::fromGamma(g); + gamma.m_fun = QColorTransferFunction::fromGamma(v * (1.0f / 256.0f)); } else { QVector<quint16> tabl; tabl.resize(curv.valueCount); static_assert(sizeof(GenericTagData) == 2 * sizeof(quint32_be), "GenericTagData has padding. The following code is a subject to UB."); - const auto offset = tagEntry.offset + sizeof(GenericTagData) + sizeof(quint32_be); - qFromBigEndian<quint16>(data.constData() + offset, curv.valueCount, tabl.data()); + qFromBigEndian<quint16>(data.constData() + valueOffset, curv.valueCount, tabl.data()); QColorTransferTable table = QColorTransferTable(curv.valueCount, std::move(tabl)); QColorTransferFunction curve; if (!table.checkValidity()) { @@ -702,7 +705,7 @@ if (!tagIndex.contains(Tag::rXYZ) || !tagIndex.contains(Tag::gXYZ) || !tagIndex.contains(Tag::bXYZ) || !tagIndex.contains(Tag::rTRC) || !tagIndex.contains(Tag::gTRC) || !tagIndex.contains(Tag::bTRC) || !tagIndex.contains(Tag::wtpt)) { - qCWarning(lcIcc) << "fromIccProfile: Unsupported ICC profile - not three component matrix based"; + qCInfo(lcIcc) << "fromIccProfile: Unsupported ICC profile - not three component matrix based"; return false; } } else { @@ -747,7 +750,7 @@ QColorVector whitePoint; if (!parseXyzData(data, tagIndex[Tag::wtpt], whitePoint)) return false; - if (!qFuzzyCompare(whitePoint.y, 1.0f) || (1.0f + whitePoint.z - whitePoint.x) == 0.0f) { + if (!qFuzzyCompare(whitePoint.y, 1.0f) || (1.0f + whitePoint.z + whitePoint.x) == 0.0f) { qCWarning(lcIcc) << "fromIccProfile: Invalid ICC profile - gray white-point not normalized"; return false; } @@ -756,12 +759,12 @@ } else { colorspaceDPtr->primaries = QColorSpace::Primaries::Custom; // Calculate chromaticity from xyz (assuming y == 1.0f). - float y = 1.0f / (1.0f + whitePoint.z - whitePoint.x); + float y = 1.0f / (1.0f + whitePoint.z + whitePoint.x); float x = whitePoint.x * y; QColorSpacePrimaries primaries(QColorSpace::Primaries::SRgb); primaries.whitePoint = QPointF(x,y); if (!primaries.areValid()) { - qCWarning(lcIcc) << "fromIccProfile: Invalid ICC profile - invalid white-point"; + qCWarning(lcIcc, "fromIccProfile: Invalid ICC profile - invalid white-point(%f, %f)", x, y); return false; } colorspaceDPtr->toXyz = primaries.toXyzMatrix(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qmemrotate.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qmemrotate.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qmemrotate.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qmemrotate.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -43,12 +43,11 @@ static const int tileSize = 32; -template <class T> -static -inline void qt_memrotate90_tiled(const T *src, int w, int h, int sstride, T *dest, int dstride) +template<class T> +static inline void qt_memrotate90_tiled(const T *src, int w, int h, int isstride, T *dest, int idstride) { - sstride /= sizeof(T); - dstride /= sizeof(T); + const qsizetype sstride = isstride / sizeof(T); + const qsizetype dstride = idstride / sizeof(T); const int pack = sizeof(quint32) / sizeof(T); const int unaligned = @@ -102,11 +101,11 @@ } } -template <class T> -static -inline void qt_memrotate90_tiled_unpacked(const T *src, int w, int h, int sstride, T *dest, - int dstride) +template<class T> +static inline void qt_memrotate90_tiled_unpacked(const T *src, int w, int h, int isstride, T *dest, int idstride) { + const qsizetype sstride = isstride; + const qsizetype dstride = idstride; const int numTilesX = (w + tileSize - 1) / tileSize; const int numTilesY = (h + tileSize - 1) / tileSize; @@ -130,12 +129,11 @@ } } -template <class T> -static -inline void qt_memrotate270_tiled(const T *src, int w, int h, int sstride, T *dest, int dstride) +template<class T> +static inline void qt_memrotate270_tiled(const T *src, int w, int h, int isstride, T *dest, int idstride) { - sstride /= sizeof(T); - dstride /= sizeof(T); + const qsizetype sstride = isstride / sizeof(T); + const qsizetype dstride = idstride / sizeof(T); const int pack = sizeof(quint32) / sizeof(T); const int unaligned = @@ -189,11 +187,11 @@ } } -template <class T> -static -inline void qt_memrotate270_tiled_unpacked(const T *src, int w, int h, int sstride, T *dest, - int dstride) +template<class T> +static inline void qt_memrotate270_tiled_unpacked(const T *src, int w, int h, int isstride, T *dest, int idstride) { + const qsizetype sstride = isstride; + const qsizetype dstride = idstride; const int numTilesX = (w + tileSize - 1) / tileSize; const int numTilesY = (h + tileSize - 1) / tileSize; @@ -245,10 +243,12 @@ qt_memrotate90_tiled_unpacked(src, w, h, sstride, dest, dstride); } -template <class T> -static -inline void qt_memrotate180_template(const T *src, int w, int h, int sstride, T *dest, int dstride) +template<class T> +static inline void qt_memrotate180_template(const T *src, int w, int h, int isstride, T *dest, int idstride) { + const qsizetype sstride = isstride; + const qsizetype dstride = idstride; + const char *s = (const char*)(src) + (h - 1) * sstride; for (int dy = 0; dy < h; ++dy) { T *d = reinterpret_cast<T*>((char *)(dest) + dy * dstride); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpagesize.h qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpagesize.h --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpagesize.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpagesize.h 2022-11-11 15:29:17.000000000 +0800 @@ -228,7 +228,7 @@ }; QPageSize(); - explicit QPageSize(PageSizeId pageSizeId); + /*implicit*/ QPageSize(PageSizeId pageSizeId); explicit QPageSize(const QSize &pointSize, const QString &name = QString(), SizeMatchPolicy matchPolicy = FuzzyMatch); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpaintengine_raster.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpaintengine_raster.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpaintengine_raster.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpaintengine_raster.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -2414,15 +2414,20 @@ QRectF targetBounds = s->matrix.mapRect(r); bool exceedsPrecision = r.width() > 0x7fff || r.height() > 0x7fff + || targetBounds.left() < -0x7fff + || targetBounds.top() < -0x7fff + || targetBounds.right() > 0x7fff + || targetBounds.bottom() > 0x7fff || targetBounds.width() > 0x7fff || targetBounds.height() > 0x7fff || s->matrix.m11() >= 512 || s->matrix.m22() >= 512; - if (!exceedsPrecision && d->canUseFastImageBlending(d->rasterBuffer->compositionMode, img)) { if (s->matrix.type() > QTransform::TxScale) { SrcOverTransformFunc func = qTransformFunctions[d->rasterBuffer->format][img.format()]; - if (func && (!clip || clip->hasRectClip)) { + // The fast transform methods doesn't really work on small targets, see QTBUG-93475 + // And it can't antialias the edges + if (func && (!clip || clip->hasRectClip) && !s->flags.antialiased && targetBounds.width() >= 16 && targetBounds.height() >= 16) { func(d->rasterBuffer->buffer(), d->rasterBuffer->bytesPerLine(), img.bits(), img.bytesPerLine(), r, sr, !clip ? d->deviceRect : clip->clipRect, s->matrix, s->intOpacity); @@ -3309,6 +3314,11 @@ qreal length = line.length(); Q_ASSERT(length > 0); + if (length / (patternLength * width) > QDashStroker::repetitionLimit()) { + rasterizer->rasterizeLine(line.p1(), line.p2(), width / length, squareCap); + return; + } + while (length > 0) { const bool rasterize = *inDash; qreal dash = (pattern.at(*dashIndex) - *dashOffset) * width; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpaintengineex.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpaintengineex.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpaintengineex.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpaintengineex.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -385,7 +385,7 @@ Q_GUI_EXPORT extern bool qt_scaleForTransform(const QTransform &transform, qreal *scale); // qtransform.cpp -void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen) +void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &inPen) { #ifdef QT_DEBUG_DRAW qDebug() << "QPaintEngineEx::stroke()" << pen; @@ -403,6 +403,38 @@ d->stroker.setCubicToHook(qpaintengineex_cubicTo); } + QRectF clipRect; + QPen pen = inPen; + if (pen.style() > Qt::SolidLine) { + QRectF cpRect = path.controlPointRect(); + const QTransform &xf = state()->matrix; + if (qt_pen_is_cosmetic(pen, state()->renderHints)) { + clipRect = d->exDeviceRect; + cpRect.translate(xf.dx(), xf.dy()); + } else { + clipRect = xf.inverted().mapRect(QRectF(d->exDeviceRect)); + } + // Check to avoid generating unwieldy amount of dashes that will not be visible anyway + qreal pw = pen.widthF() ? pen.widthF() : 1; + QRectF extentRect = cpRect.adjusted(-pw, -pw, pw, pw) & clipRect; + qreal extent = qMax(extentRect.width(), extentRect.height()); + qreal patternLength = 0; + const QVector<qreal> pattern = pen.dashPattern(); + const int patternSize = qMin(pattern.size(), 32); + for (int i = 0; i < patternSize; i++) + patternLength += qMax(pattern.at(i), qreal(0)); + patternLength *= pw; + if (qFuzzyIsNull(patternLength)) { + pen.setStyle(Qt::NoPen); + } else if (extent / patternLength > QDashStroker::repetitionLimit()) { + // approximate stream of tiny dashes with semi-transparent solid line + pen.setStyle(Qt::SolidLine); + QColor color(pen.color()); + color.setAlpha(color.alpha() / 2); + pen.setColor(color); + } + } + if (!qpen_fast_equals(pen, d->strokerPen)) { d->strokerPen = pen; d->stroker.setJoinStyle(pen.joinStyle()); @@ -430,14 +462,8 @@ return; } - if (pen.style() > Qt::SolidLine) { - if (qt_pen_is_cosmetic(pen, state()->renderHints)){ - d->activeStroker->setClipRect(d->exDeviceRect); - } else { - QRectF clipRect = state()->matrix.inverted().mapRect(QRectF(d->exDeviceRect)); - d->activeStroker->setClipRect(clipRect); - } - } + if (!clipRect.isNull()) + d->activeStroker->setClipRect(clipRect); if (d->activeStroker == &d->stroker) d->stroker.setForceOpen(path.hasExplicitOpen()); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpainter.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpainter.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpainter.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpainter.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -175,6 +175,23 @@ } #endif +static bool needsEmulation(const QBrush &brush) +{ + bool res = false; + + const QGradient *bg = brush.gradient(); + if (bg) { + res = (bg->coordinateMode() > QGradient::LogicalMode); + } else if (brush.style() == Qt::TexturePattern) { + if (qHasPixmapTexture(brush)) + res = !qFuzzyCompare(brush.texture().devicePixelRatio(), qreal(1.0)); + else + res = !qFuzzyCompare(brush.textureImage().devicePixelRatio(), qreal(1.0)); + } + + return res; +} + void QPainterPrivate::checkEmulation() { Q_ASSERT(extended); @@ -182,21 +199,12 @@ if (state->bgMode == Qt::OpaqueMode) doEmulation = true; - const QGradient *bg = state->brush.gradient(); - if (bg && bg->coordinateMode() > QGradient::LogicalMode) + if (needsEmulation(state->brush)) doEmulation = true; - const QGradient *pg = qpen_brush(state->pen).gradient(); - if (pg && pg->coordinateMode() > QGradient::LogicalMode) + if (needsEmulation(qpen_brush(state->pen))) doEmulation = true; - if (state->brush.style() == Qt::TexturePattern) { - if (qHasPixmapTexture(state->brush)) - doEmulation |= !qFuzzyCompare(state->brush.texture().devicePixelRatioF(), 1.0); - else - doEmulation |= !qFuzzyCompare(state->brush.textureImage().devicePixelRatioF(), 1.0); - } - if (doEmulation && extended->flags() & QPaintEngineEx::DoNotEmulate) return; @@ -3319,12 +3327,9 @@ if (path.isEmpty()) return; - if (d->extended) { - const QGradient *g = qpen_brush(pen).gradient(); - if (!g || g->coordinateMode() == QGradient::LogicalMode) { - d->extended->stroke(qtVectorPathForPath(path), pen); - return; - } + if (d->extended && !needsEmulation(pen.brush())) { + d->extended->stroke(qtVectorPathForPath(path), pen); + return; } QBrush oldBrush = d->state->brush; @@ -3362,12 +3367,9 @@ if (path.isEmpty()) return; - if (d->extended) { - const QGradient *g = brush.gradient(); - if (!g || g->coordinateMode() == QGradient::LogicalMode) { - d->extended->fill(qtVectorPathForPath(path), brush); - return; - } + if (d->extended && !needsEmulation(brush)) { + d->extended->fill(qtVectorPathForPath(path), brush); + return; } QBrush oldBrush = d->state->brush; @@ -6956,12 +6958,9 @@ if (!d->engine) return; - if (d->extended) { - const QGradient *g = brush.gradient(); - if (!g || g->coordinateMode() == QGradient::LogicalMode) { - d->extended->fillRect(r, brush); - return; - } + if (d->extended && !needsEmulation(brush)) { + d->extended->fillRect(r, brush); + return; } QPen oldPen = pen(); @@ -6994,12 +6993,9 @@ if (!d->engine) return; - if (d->extended) { - const QGradient *g = brush.gradient(); - if (!g || g->coordinateMode() == QGradient::LogicalMode) { - d->extended->fillRect(r, brush); - return; - } + if (d->extended && !needsEmulation(brush)) { + d->extended->fillRect(r, brush); + return; } QPen oldPen = pen(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpainterpath.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpainterpath.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpainterpath.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpainterpath.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1372,7 +1372,7 @@ */ Qt::FillRule QPainterPath::fillRule() const { - return isEmpty() ? Qt::OddEvenFill : d_func()->fillRule; + return !d_func() ? Qt::OddEvenFill : d_func()->fillRule; } /*! diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpainterpath_p.h qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpainterpath_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpainterpath_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpainterpath_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -313,7 +313,6 @@ elements.clear(); cStart = 0; - fillRule = Qt::OddEvenFill; bounds = {}; controlBounds = {}; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpdf.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpdf.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpdf.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpdf.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -856,14 +856,14 @@ if (!d->hasPen && !d->hasBrush) return; - if (d->simplePen || !d->hasPen) { - // draw strokes natively in this case for better output - if(!d->simplePen && !d->stroker.matrix.isIdentity()) + if ((d->simplePen && !d->needsTransform) || !d->hasPen) { + // draw natively in this case for better output + if (!d->hasPen && d->needsTransform) // i.e. this is just a fillrect *d->currentPage << "q\n" << QPdf::generateMatrix(d->stroker.matrix); for (int i = 0; i < rectCount; ++i) *d->currentPage << rects[i].x() << rects[i].y() << rects[i].width() << rects[i].height() << "re\n"; *d->currentPage << (d->hasPen ? (d->hasBrush ? "B\n" : "S\n") : "f\n"); - if(!d->simplePen && !d->stroker.matrix.isIdentity()) + if (!d->hasPen && d->needsTransform) *d->currentPage << "Q\n"; } else { QPainterPath p; @@ -920,7 +920,8 @@ if (d->simplePen) { // draw strokes natively in this case for better output - *d->currentPage << QPdf::generatePath(p, QTransform(), d->hasBrush ? QPdf::FillAndStrokePath : QPdf::StrokePath); + *d->currentPage << QPdf::generatePath(p, d->needsTransform ? d->stroker.matrix : QTransform(), + d->hasBrush ? QPdf::FillAndStrokePath : QPdf::StrokePath); } else { if (d->hasBrush) *d->currentPage << QPdf::generatePath(p, d->stroker.matrix, QPdf::FillPath); @@ -967,7 +968,7 @@ *d->currentPage << QPdf::generateMatrix(QTransform(rectangle.width() / sr.width(), 0, 0, rectangle.height() / sr.height(), - rectangle.x(), rectangle.y()) * (d->simplePen ? QTransform() : d->stroker.matrix)); + rectangle.x(), rectangle.y()) * (!d->needsTransform ? QTransform() : d->stroker.matrix)); if (bitmap) { // set current pen as d->brush d->brush = d->pen.brush(); @@ -1007,7 +1008,7 @@ *d->currentPage << QPdf::generateMatrix(QTransform(rectangle.width() / sr.width(), 0, 0, rectangle.height() / sr.height(), - rectangle.x(), rectangle.y()) * (d->simplePen ? QTransform() : d->stroker.matrix)); + rectangle.x(), rectangle.y()) * (!d->needsTransform ? QTransform() : d->stroker.matrix)); setBrush(); d->currentPage->streamImage(im.width(), im.height(), object); *d->currentPage << "Q\n"; @@ -1056,7 +1057,7 @@ } *d->currentPage << "q\n"; - if(!d->simplePen) + if (d->needsTransform) *d->currentPage << QPdf::generateMatrix(d->stroker.matrix); bool hp = d->hasPen; @@ -1135,12 +1136,12 @@ d->pen = state.pen(); } d->hasPen = d->pen.style() != Qt::NoPen; + bool oldCosmetic = d->stroker.cosmeticPen; d->stroker.setPen(d->pen, state.renderHints()); QBrush penBrush = d->pen.brush(); - bool cosmeticPen = qt_pen_is_cosmetic(d->pen, state.renderHints()); bool oldSimple = d->simplePen; - d->simplePen = (d->hasPen && !cosmeticPen && (penBrush.style() == Qt::SolidPattern) && penBrush.isOpaque() && d->opacity == 1.0); - if (oldSimple != d->simplePen) + d->simplePen = (d->hasPen && (penBrush.style() == Qt::SolidPattern) && penBrush.isOpaque() && d->opacity == 1.0); + if (oldSimple != d->simplePen || oldCosmetic != d->stroker.cosmeticPen) flags |= DirtyTransform; } else if (flags & DirtyHints) { d->stroker.setPen(d->pen, state.renderHints()); @@ -1224,8 +1225,13 @@ if (flags & DirtyTransform) { *d->currentPage << "q\n"; - if (d->simplePen && !d->stroker.matrix.isIdentity()) - *d->currentPage << QPdf::generateMatrix(d->stroker.matrix); + d->needsTransform = false; + if (!d->stroker.matrix.isIdentity()) { + if (d->simplePen && !d->stroker.cosmeticPen) + *d->currentPage << QPdf::generateMatrix(d->stroker.matrix); + else + d->needsTransform = true; // I.e. page-wide xf not set, local xf needed + } } if (flags & DirtyBrush) setBrush(); @@ -1480,7 +1486,7 @@ QPdfEnginePrivate::QPdfEnginePrivate() : clipEnabled(false), allClipped(false), hasPen(true), hasBrush(false), simplePen(false), - pdfVersion(QPdfEngine::Version_1_4), + needsTransform(false), pdfVersion(QPdfEngine::Version_1_4), outDevice(nullptr), ownsDevice(false), embedFonts(true), grayscale(false), @@ -1539,6 +1545,7 @@ d->graphicsState = 0; d->patternColorSpace = 0; d->simplePen = false; + d->needsTransform = false; d->pages.clear(); d->imageCache.clear(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpdf_p.h qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpdf_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qpdf_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qpdf_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -271,6 +271,7 @@ bool hasPen; bool hasBrush; bool simplePen; + bool needsTransform; qreal opacity; QPdfEngine::PdfVersion pdfVersion; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qstroker.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qstroker.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qstroker.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qstroker.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1179,32 +1179,41 @@ bool done = pos >= estop; - if (clipping) { - // Check if the entire line can be clipped away. - if (!lineIntersectsRect(prev, e, clip_tl, clip_br)) { - // Cut away full dash sequences. - elen -= qFloor(elen * invSumLength) * sumLength; - // Update dash offset. - while (!done) { - qreal dpos = pos + dashes[idash] - doffset - estart; + // Check if the entire line should be clipped away or simplified + bool clipIt = clipping && !lineIntersectsRect(prev, e, clip_tl, clip_br); + bool skipDashing = elen * invSumLength > repetitionLimit(); + if (skipDashing || clipIt) { + // Cut away full dash sequences. + elen -= std::floor(elen * invSumLength) * sumLength; + // Update dash offset. + while (!done) { + qreal dpos = pos + dashes[idash] - doffset - estart; - Q_ASSERT(dpos >= 0); + Q_ASSERT(dpos >= 0); - if (dpos > elen) { // dash extends this line - doffset = dashes[idash] - (dpos - elen); // subtract the part already used - pos = estop; // move pos to next path element - done = true; - } else { // Dash is on this line - pos = dpos + estart; - done = pos >= estop; - if (++idash >= dashCount) - idash = 0; - doffset = 0; // full segment so no offset on next. - } + if (dpos > elen) { // dash extends this line + doffset = dashes[idash] - (dpos - elen); // subtract the part already used + pos = estop; // move pos to next path element + done = true; + } else { // Dash is on this line + pos = dpos + estart; + done = pos >= estop; + if (++idash >= dashCount) + idash = 0; + doffset = 0; // full segment so no offset on next. } + } + if (clipIt) { hasMoveTo = false; - move_to_pos = e; + } else { + // skip costly dashing, just draw solid line + if (!hasMoveTo) { + emitMoveTo(move_to_pos.x, move_to_pos.y); + hasMoveTo = true; + } + emitLineTo(e.x, e.y); } + move_to_pos = e; } // Dash away... diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qstroker_p.h qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qstroker_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qstroker_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qstroker_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -268,6 +268,7 @@ QStroker *stroker() const { return m_stroker; } static QVector<qfixed> patternForStyle(Qt::PenStyle style); + static int repetitionLimit() { return 10000; } void setDashPattern(const QVector<qfixed> &dashPattern) { m_dashPattern = dashPattern; } QVector<qfixed> dashPattern() const { return m_dashPattern; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qtransform.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qtransform.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qtransform.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qtransform.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -222,6 +222,7 @@ transformation is achieved by setting both the projection factors and the scaling factors. + \section2 Combining Transforms Here's the combined transformations example using basic matrix operations: @@ -232,6 +233,26 @@ \snippet transform/main.cpp 2 \endtable + The combined transform first scales each operand, then rotates it, and + finally translates it, just as in the order in which the product of its + factors is written. This means the point to which the transforms are + applied is implicitly multiplied on the left with the transform + to its right. + + \section2 Relation to Matrix Notation + The matrix notation in QTransform is the transpose of a commonly-taught + convention which represents transforms and points as matrices and vectors. + That convention multiplies its matrix on the left and column vector to the + right. In other words, when several transforms are applied to a point, the + right-most matrix acts directly on the vector first. Then the next matrix + to the left acts on the result of the first operation - and so on. As a + result, that convention multiplies the matrices that make up a composite + transform in the reverse of the order in QTransform, as you can see in + \l {Combining Transforms}. Transposing the matrices, and combining them to + the right of a row vector that represents the point, lets the matrices of + transforms appear, in their product, in the order in which we think of the + transforms being applied to the point. + \sa QPainter, {Coordinate System}, {painting/affine}{Affine Transformations Example}, {Transformations Example} */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qtriangulatingstroker.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qtriangulatingstroker.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/painting/qtriangulatingstroker.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/painting/qtriangulatingstroker.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -50,6 +50,7 @@ void QTriangulatingStroker::endCapOrJoinClosed(const qreal *start, const qreal *cur, bool implicitClose, bool endsAtStart) { + Q_ASSERT(start); if (endsAtStart) { join(start + 2); } else if (implicitClose) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/qtgui.tracepoints qtbase-opensource-src-5.15.8+dfsg/src/gui/qtgui.tracepoints --- qtbase-opensource-src-5.15.3+dfsg/src/gui/qtgui.tracepoints 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/qtgui.tracepoints 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,9 @@ { QT_BEGIN_NAMESPACE class QImageReader; +#include <private/qopengl2pexvertexarray_p.h> +#include <private/qopengltextureuploader_p.h> +#include <qopenglframebufferobject.h> QT_END_NAMESPACE } @@ -39,3 +42,10 @@ QImageReader_read_before_reading(QImageReader *reader, const QString &filename) QImageReader_read_after_reading(QImageReader *reader, bool result) + +QOpenGLFramebufferObjectPrivate_init_entry(QOpenGLFramebufferObject *qfbo, const QSize &size, QOpenGLFramebufferObject::Attachment attachment, GLenum texture_target, GLenum internal_format, GLint samples, bool mipmap) +QOpenGLFramebufferObjectPrivate_init_exit() +QOpenGL2PaintEngineExPrivate_drawTexture_entry(const QOpenGLRect& dest, const QOpenGLRect& src, const QSize &textureSize, bool opaque, bool pattern) +QOpenGL2PaintEngineExPrivate_drawTexture_exit() +QOpenGLTextureCache_bindTexture_entry(QOpenGLContext *context, qint64 key, const QImage &image, QOpenGLTextureUploader::BindOptions options) +QOpenGLTextureCache_bindTexture_exit() diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/rhi/qrhimetal.mm qtbase-opensource-src-5.15.8+dfsg/src/gui/rhi/qrhimetal.mm --- qtbase-opensource-src-5.15.3+dfsg/src/gui/rhi/qrhimetal.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/rhi/qrhimetal.mm 2022-11-11 15:29:17.000000000 +0800 @@ -3738,10 +3738,42 @@ return &rtWrapper; } +#ifdef TARGET_IPHONE_SIMULATOR +API_AVAILABLE(ios(13.0)) +#endif +static inline CAMetalLayer *layerForWindow(QWindow *window) +{ + Q_ASSERT(window); +#ifdef Q_OS_MACOS + NSView *view = reinterpret_cast<NSView *>(window->winId()); +#else + UIView *view = reinterpret_cast<UIView *>(window->winId()); +#endif + Q_ASSERT(view); + return static_cast<CAMetalLayer *>(view.layer); +} + QSize QMetalSwapChain::surfacePixelSize() { +#ifdef TARGET_IPHONE_SIMULATOR + if (@available(ios 13.0, *)) { +#endif + Q_ASSERT(m_window); - return m_window->size() * m_window->devicePixelRatio(); + CAMetalLayer *layer = d->layer; + if (!layer) + layer = layerForWindow(m_window); + + CGSize layerSize = layer.bounds.size; + layerSize.width *= layer.contentsScale; + layerSize.height *= layer.contentsScale; + return QSizeF::fromCGSize(layerSize).toSize(); + +#ifdef TARGET_IPHONE_SIMULATOR + } else { + return QSize(); + } +#endif } QRhiRenderPassDescriptor *QMetalSwapChain::newCompatibleRenderPassDescriptor() @@ -3800,13 +3832,7 @@ return false; } -#ifdef Q_OS_MACOS - NSView *view = reinterpret_cast<NSView *>(window->winId()); -#else - UIView *view = reinterpret_cast<UIView *>(window->winId()); -#endif - Q_ASSERT(view); - d->layer = static_cast<CAMetalLayer *>(view.layer); + d->layer = layerForWindow(window); Q_ASSERT(d->layer); chooseFormats(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qcssparser.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qcssparser.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qcssparser.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qcssparser.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1140,14 +1140,14 @@ s.chop(2); value.variant = s; if (value.variant.convert((QVariant::Type)qMetaTypeId<qreal>())) { - font->setPointSizeF(value.variant.toReal()); + font->setPointSizeF(qBound(qreal(0), value.variant.toReal(), qreal(1 << 24) - 1)); valid = true; } } else if (s.endsWith(QLatin1String("px"), Qt::CaseInsensitive)) { s.chop(2); value.variant = s; if (value.variant.convert(QMetaType::Int)) { - font->setPixelSize(value.variant.toInt()); + font->setPixelSize(qBound(0, value.variant.toInt(), (1 << 24) - 1)); valid = true; } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qfont.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qfont.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qfont.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qfont.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -220,8 +220,10 @@ if (engineData && !engineData->ref.deref()) delete engineData; engineData = nullptr; - if (scFont && scFont != this) - scFont->ref.deref(); + if (scFont && scFont != this) { + if (!scFont->ref.deref()) + delete scFont; + } scFont = nullptr; } @@ -630,8 +632,10 @@ if (d->engineData && !d->engineData->ref.deref()) delete d->engineData; d->engineData = nullptr; - if (d->scFont && d->scFont != d.data()) - d->scFont->ref.deref(); + if (d->scFont && d->scFont != d.data()) { + if (!d->scFont->ref.deref()) + delete d->scFont; + } d->scFont = nullptr; return; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qfontdatabase.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qfontdatabase.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qfontdatabase.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qfontdatabase.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -414,6 +414,25 @@ Q_ASSERT_X(populated, Q_FUNC_INFO, qPrintable(name)); } +/*! + \internal + + Tests if the given family \a family supports writing system \a writingSystem, + including the special case for Han script mapping to several subsequent writing systems +*/ +static bool familySupportsWritingSystem(QtFontFamily *family, size_t writingSystem) +{ + Q_ASSERT(family != nullptr); + Q_ASSERT(writingSystem != QFontDatabase::Any && writingSystem < QFontDatabase::WritingSystemsCount); + + size_t ws = writingSystem; + do { + if ((family->writingSystems[ws] & QtFontFamily::Supported) != 0) + return true; + } while (writingSystem >= QFontDatabase::SimplifiedChinese && writingSystem <= QFontDatabase::Japanese && ++ws <= QFontDatabase::Japanese); + + return false; +} struct FallbacksCacheKey { QString family; @@ -826,7 +845,7 @@ f->ensurePopulated(); - if (writingSystem > QFontDatabase::Any && f->writingSystems[writingSystem] != QtFontFamily::Supported) + if (writingSystem > QFontDatabase::Any && !familySupportsWritingSystem(f, writingSystem)) continue; for (int j = 0; j < f->count; ++j) { @@ -1219,9 +1238,13 @@ Tries to find the best match for a given request and family/foundry */ -static int match(int script, const QFontDef &request, - const QString &family_name, const QString &foundry_name, - QtFontDesc *desc, const QList<int> &blacklistedFamilies) +static int match(int script, + const QFontDef &request, + const QString &family_name, + const QString &foundry_name, + QtFontDesc *desc, + const QList<int> &blacklistedFamilies, + unsigned int *resultingScore = nullptr) { int result = -1; @@ -1271,8 +1294,10 @@ test.family->ensurePopulated(); // Check if family is supported in the script we want - if (writingSystem != QFontDatabase::Any && !(test.family->writingSystems[writingSystem] & QtFontFamily::Supported)) + if (writingSystem != QFontDatabase::Any + && !familySupportsWritingSystem(test.family, writingSystem)) { continue; + } // as we know the script is supported, we can be sure // to find a matching font here. @@ -1296,6 +1321,10 @@ if (newscore < 10) // xlfd instead of FT... just accept it break; } + + if (resultingScore != nullptr) + *resultingScore = score; + return result; } @@ -1729,13 +1758,19 @@ for (int j = 0; j < f->count; j++) { QtFontFoundry *foundry = f->foundries[j]; if (foundryName.isEmpty() || foundry->name.compare(foundryName, Qt::CaseInsensitive) == 0) { - for (int k = 0; k < foundry->count; k++) - if ((style.isEmpty() || - foundry->styles[k]->styleName == style || - foundry->styles[k]->key == styleKey) && foundry->styles[k]->smoothScalable) { - smoothScalable = true; + for (int k = 0; k < foundry->count; k++) { + QtFontStyle *fontStyle = foundry->styles[k]; + smoothScalable = + fontStyle->smoothScalable + && ((style.isEmpty() + || fontStyle->styleName == style + || fontStyle->key == styleKey) + || (fontStyle->styleName.isEmpty() + && style == styleStringHelper(fontStyle->key.weight, + QFont::Style(fontStyle->key.style)))); + if (smoothScalable) goto end; - } + } } } end: @@ -2474,13 +2509,12 @@ with removeApplicationFont() or to retrieve the list of family names contained in the font. +//! [add-application-font-doc] The function returns -1 if the font could not be loaded. Currently only TrueType fonts, TrueType font collections, and OpenType fonts are supported. - - \note Adding application fonts on Unix/X11 platforms without fontconfig is - currently not supported. +//! [add-application-font-doc] \sa addApplicationFontFromData(), applicationFontFamilies(), removeApplicationFont() */ @@ -2508,12 +2542,7 @@ with removeApplicationFont() or to retrieve the list of family names contained in the font. - The function returns -1 if the font could not be loaded. - - Currently only TrueType fonts and TrueType font collections are supported. - - \b{Note:} Adding application fonts on Unix/X11 platforms without fontconfig is - currently not supported. + \include qfontdatabase.cpp add-application-font-doc \sa addApplicationFont(), applicationFontFamilies(), removeApplicationFont() */ @@ -2648,7 +2677,9 @@ /*! \internal */ -QFontEngine *QFontDatabase::findFont(const QFontDef &request, int script) +QFontEngine *QFontDatabase::findFont(const QFontDef &request, + int script, + bool preferScriptOverFamily) { QMutexLocker locker(fontDatabaseMutex()); @@ -2690,11 +2721,20 @@ parseFontName(requestFamily, foundry_name, family_name); QtFontDesc desc; QList<int> blackListed; - int index = match(multi ? QChar::Script_Common : script, request, family_name, foundry_name, &desc, blackListed); - if (index < 0 && QGuiApplicationPrivate::platformIntegration()->fontDatabase()->populateFamilyAliases(family_name)) { + unsigned int score = UINT_MAX; + int index = match(multi ? QChar::Script_Common : script, request, family_name, foundry_name, &desc, blackListed, &score); + if (score > 0 && QGuiApplicationPrivate::platformIntegration()->fontDatabase()->populateFamilyAliases(family_name)) { // We populated familiy aliases (e.g. localized families), so try again index = match(multi ? QChar::Script_Common : script, request, family_name, foundry_name, &desc, blackListed); } + + // If we do not find a match and NoFontMerging is set, use the requested font even if it does + // not support the script. + // + // (we do this at the end to prefer foundries that support the script if they exist) + if (index < 0 && !multi && !preferScriptOverFamily) + index = match(QChar::Script_Common, request, family_name, foundry_name, &desc, blackListed); + if (index >= 0) { QFontDef fontDef = request; @@ -2887,10 +2927,8 @@ } uint order = i; - if (testFamily == nullptr - || (testFamily->writingSystems[writingSystem] & QtFontFamily::Supported) == 0) { + if (testFamily == nullptr || !familySupportsWritingSystem(testFamily, writingSystem)) order |= 1u << 31; - } supported.insert(order, family); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qfontdatabase.h qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qfontdatabase.h --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qfontdatabase.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qfontdatabase.h 2022-11-11 15:29:17.000000000 +0800 @@ -160,7 +160,7 @@ static void createDatabase(); static void parseFontName(const QString &name, QString &foundry, QString &family); static QString resolveFontFamilyAlias(const QString &family); - static QFontEngine *findFont(const QFontDef &request, int script /* QChar::Script */); + static QFontEngine *findFont(const QFontDef &request, int script /* QChar::Script */, bool preferScriptOverFamily = false); static void load(const QFontPrivate *d, int script /* QChar::Script */); friend struct QFontDef; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qfontmetrics.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qfontmetrics.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qfontmetrics.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qfontmetrics.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -273,9 +273,8 @@ The ascent of a font is the distance from the baseline to the highest position characters extend to. In practice, some font designers break this rule, e.g. when they put more than one accent - on top of a character, or to accommodate an unusual character in - an exotic language, so it is possible (though rare) that this - value will be too small. + on top of a character, or to accommodate a certain character, so it + is possible (though rare) that this value will be too small. \sa descent() */ @@ -310,8 +309,8 @@ The descent is the distance from the base line to the lowest point characters extend to. In practice, some font designers break this rule, - e.g. to accommodate an unusual character in an exotic language, so - it is possible (though rare) that this value will be too small. + e.g. to accommodate a certain character, so it is possible (though + rare) that this value will be too small. \sa ascent() */ @@ -1242,9 +1241,8 @@ The ascent of a font is the distance from the baseline to the highest position characters extend to. In practice, some font designers break this rule, e.g. when they put more than one accent - on top of a character, or to accommodate an unusual character in - an exotic language, so it is possible (though rare) that this - value will be too small. + on top of a character, or to accommodate a certain character, so + it is possible (though rare) that this value will be too small. \sa descent() */ @@ -1280,8 +1278,8 @@ The descent is the distance from the base line to the lowest point characters extend to. (Note that this is different from X, which adds 1 pixel.) In practice, some font designers break this rule, - e.g. to accommodate an unusual character in an exotic language, so - it is possible (though rare) that this value will be too small. + e.g. to accommodate a certain character, so it is possible (though + rare) that this value will be too small. \sa ascent() */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qrawfont.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qrawfont.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qrawfont.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qrawfont.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -760,7 +760,7 @@ QFontDef request(multiEngine->fontDef); request.styleStrategy |= QFont::NoFontMerging; - if (QFontEngine *engine = QFontDatabase::findFont(request, script)) { + if (QFontEngine *engine = QFontDatabase::findFont(request, script, true)) { if (request.weight > QFont::Normal) engine->fontDef.weight = request.weight; if (request.style > QFont::StyleNormal) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextdocument.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextdocument.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextdocument.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextdocument.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -3032,10 +3032,12 @@ if (fragmentMarkers && block.position() + block.length() == doc->docHandle()->length()) html += QLatin1String("<!--EndFragment-->"); + QString closeTags; + if (pre) html += QLatin1String("</pre>"); else if (list) - html += QLatin1String("</li>"); + closeTags += QLatin1String("</li>"); else { int headingLevel = blockFormat.headingLevel(); if (headingLevel > 0 && headingLevel <= 6) @@ -3047,9 +3049,30 @@ if (list) { if (list->itemNumber(block) == list->count() - 1) { // last item? close list if (isOrderedList(list->format().style())) - html += QLatin1String("</ol>"); + closeTags += QLatin1String("</ol>"); else - html += QLatin1String("</ul>"); + closeTags += QLatin1String("</ul>"); + } + const QTextBlock nextBlock = block.next(); + // If the next block is the beginning of a new deeper nested list, then we don't + // want to close the current list item just yet. This should be closed when this + // item is fully finished + if (nextBlock.isValid() && nextBlock.textList() && + nextBlock.textList()->itemNumber(nextBlock) == 0 && + nextBlock.textList()->format().indent() > list->format().indent()) { + QString lastTag; + if (!closingTags.isEmpty() && list->itemNumber(block) == list->count() - 1) + lastTag = closingTags.takeLast(); + lastTag.prepend(closeTags); + closingTags << lastTag; + } else if (list->itemNumber(block) == list->count() - 1) { + // If we are at the end of the list now then we can add in the closing tags for that + // current block + html += closeTags; + if (!closingTags.isEmpty()) + html += closingTags.takeLast(); + } else { + html += closeTags; } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextdocument_p.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextdocument_p.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextdocument_p.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextdocument_p.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -381,8 +381,11 @@ Q_ASSERT(blocks.length() == fragments.length()); QTextBlockGroup *group = qobject_cast<QTextBlockGroup *>(objectForFormat(blockFormat)); - if (group) + if (group) { group->blockInserted(QTextBlock(this, b)); + docChangeOldLength--; + docChangeLength--; + } QTextFrame *frame = qobject_cast<QTextFrame *>(objectForFormat(formats.format(format))); if (frame) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextdocument_p.h qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextdocument_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextdocument_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextdocument_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -405,6 +405,7 @@ QTextCharFormat defaultCharFormat; const QTextDocument *doc; bool fragmentMarkers; + QStringList closingTags; }; QT_END_NAMESPACE diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextdocumentfragment.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextdocumentfragment.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextdocumentfragment.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextdocumentfragment.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1296,5 +1296,6 @@ return res; } -QT_END_NAMESPACE #endif // QT_NO_TEXTHTMLPARSER + +QT_END_NAMESPACE diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextdocumentlayout.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextdocumentlayout.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextdocumentlayout.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextdocumentlayout.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -2186,9 +2186,11 @@ painter->setRenderHint(QPainter::Antialiasing); + const bool marker = bl.blockFormat().marker() != QTextBlockFormat::MarkerType::NoMarker; if (selectionFormat) { painter->setPen(QPen(selectionFormat->foreground(), 0)); - painter->fillRect(r, selectionFormat->background()); + if (!marker) + painter->fillRect(r, selectionFormat->background()); } else { QBrush fg = charFormat.foreground(); if (fg == Qt::NoBrush) @@ -2198,19 +2200,21 @@ QBrush brush = context.palette.brush(QPalette::Text); - bool marker = bl.blockFormat().marker() != QTextBlockFormat::MarkerType::NoMarker; if (marker) { int adj = fontMetrics.lineSpacing() / 6; r.adjust(-adj, 0, -adj, 0); + const QRectF outer = r.adjusted(-adj, -adj, adj, adj); + if (selectionFormat) + painter->fillRect(outer, selectionFormat->background()); if (bl.blockFormat().marker() == QTextBlockFormat::MarkerType::Checked) { - // ### Qt6: render with QStyle / PE_IndicatorCheckBox. We don't currently + // ### Qt7: render with QStyle / PE_IndicatorCheckBox. We don't currently // have access to that here, because it would be a widget dependency. painter->setPen(QPen(painter->pen().color(), 2)); painter->drawLine(r.topLeft(), r.bottomRight()); painter->drawLine(r.topRight(), r.bottomLeft()); painter->setPen(QPen(painter->pen().color(), 0)); } - painter->drawRect(r.adjusted(-adj, -adj, adj, adj)); + painter->drawRect(outer); } switch (style) { @@ -2357,9 +2361,10 @@ floatMinWidth = qMax(floatMinWidth, cd->minimumWidth); } - // constraint the maximumWidth by the minimum width of the fixed size floats, to - // keep them visible + // constraint the maximum/minimumWidth by the minimum width of the fixed size floats, + // to keep them visible layoutStruct.maximumWidth = qMax(layoutStruct.maximumWidth, floatMinWidth); + layoutStruct.minimumWidth = qMax(layoutStruct.minimumWidth, floatMinWidth); // as floats in cells get added to the table's float list but must not affect // floats in other cells we must clear the list here. @@ -2536,6 +2541,8 @@ for (int n = 0; n < cspan; ++n) { const int col = i + n; QFixed w = widthToDistribute / (cspan - n); + if (td->maxWidths[col] != QFIXED_MAX) + w = qMax(td->maxWidths[col], w); td->maxWidths[col] = qMax(td->minWidths.at(col), w); widthToDistribute -= td->maxWidths.at(col); if (widthToDistribute <= 0) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextdocumentwriter.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextdocumentwriter.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextdocumentwriter.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextdocumentwriter.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -249,9 +249,11 @@ */ bool QTextDocumentWriter::write(const QTextDocument *document) { - QByteArray suffix; + if (!d->device) + return false; - if (d->device && d->format.isEmpty()) { + QByteArray suffix; + if (d->format.isEmpty()) { // if there's no format, see if device is a file, and if so, find // the file suffix if (QFile *file = qobject_cast<QFile *>(d->device)) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextengine.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextengine.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextengine.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextengine.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -258,7 +258,7 @@ for (int i = 0; i < length; ++i) { int pos = i; uint uc = text[i].unicode(); - if (QChar::isHighSurrogate(uc) && i < length - 1) { + if (QChar::isHighSurrogate(uc) && i < length - 1 && text[i + 1].isLowSurrogate()) { ++i; analysis[i].bidiDirection = QChar::DirNSM; uc = QChar::surrogateToUcs4(ushort(uc), text[i].unicode()); @@ -1373,9 +1373,15 @@ if (!fontEngine->symbol) { // U+00AD [SOFT HYPHEN] is a default ignorable codepoint, // so we replace its glyph and metrics with ones for - // U+002D [HYPHEN-MINUS] and make it visible if it appears at line-break + // U+002D [HYPHEN-MINUS] or U+2010 [HYPHEN] and make + // it visible if it appears at line-break const uint engineIndex = glyphs->glyphs[glyphPosition] & 0xff000000; - glyphs->glyphs[glyphPosition] = fontEngine->glyphIndex('-'); + glyph_t glyph = fontEngine->glyphIndex(0x002d); + if (glyph == 0) + glyph = fontEngine->glyphIndex(0x2010); + if (glyph == 0) + glyph = fontEngine->glyphIndex(0x00ad); + glyphs->glyphs[glyphPosition] = glyph; if (Q_LIKELY(glyphs->glyphs[glyphPosition] != 0)) { glyphs->glyphs[glyphPosition] |= engineIndex; QGlyphLayout tmp = glyphs->mid(glyphPosition, 1); @@ -2173,20 +2179,35 @@ QTextDocumentPrivate::FragmentIterator end = p->find(block.position() + block.length() - 1); // -1 to omit the block separator char int format = it.value()->format; + int preeditPosition = s ? s->preeditPosition : INT_MAX; int prevPosition = 0; int position = prevPosition; while (1) { const QTextFragmentData * const frag = it.value(); if (it == end || format != frag->format) { - if (s && position >= s->preeditPosition) { + if (s && position >= preeditPosition) { position += s->preeditText.length(); - s = nullptr; + preeditPosition = INT_MAX; } Q_ASSERT(position <= length); QFont::Capitalization capitalization = formatCollection()->charFormat(format).hasProperty(QTextFormat::FontCapitalization) ? formatCollection()->charFormat(format).fontCapitalization() : formatCollection()->defaultFont().capitalization(); + if (s) { + for (const auto &range : qAsConst(s->formats)) { + if (range.start + range.length <= prevPosition || range.start >= position) + continue; + if (range.format.hasProperty(QTextFormat::FontCapitalization)) { + if (range.start > prevPosition) + itemizer.generate(prevPosition, range.start - prevPosition, capitalization); + int newStart = std::max(prevPosition, range.start); + int newEnd = std::min(position, range.start + range.length); + itemizer.generate(newStart, newEnd - newStart, range.format.fontCapitalization()); + prevPosition = newEnd; + } + } + } itemizer.generate(prevPosition, position - prevPosition, capitalization); if (it == end) { if (position < length) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtexthtmlparser.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtexthtmlparser.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtexthtmlparser.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtexthtmlparser.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1677,7 +1677,7 @@ node->tableCellRowSpan = qMax(1, node->tableCellRowSpan); } else if (key == QLatin1String("colspan")) { if (setIntAttribute(&node->tableCellColSpan, value)) - node->tableCellColSpan = qMax(1, node->tableCellColSpan); + node->tableCellColSpan = qBound(1, node->tableCellColSpan, 20480); } break; case Html_table: diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextlayout.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextlayout.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextlayout.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextlayout.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1173,10 +1173,17 @@ QRectF fullLineRect(tl.rect()); fullLineRect.translate(position); fullLineRect.setRight(QFIXED_MAX); - if (!selectionEndInLine) - region.addRect(clipIfValid(QRectF(lineRect.topRight(), fullLineRect.bottomRight()), clip)); - if (!selectionStartInLine) - region.addRect(clipIfValid(QRectF(fullLineRect.topLeft(), lineRect.bottomLeft()), clip)); + + const bool rightToLeft = d->isRightToLeft(); + + if (!selectionEndInLine) { + region.addRect(clipIfValid(rightToLeft ? QRectF(fullLineRect.topLeft(), lineRect.bottomLeft()) + : QRectF(lineRect.topRight(), fullLineRect.bottomRight()), clip)); + } + if (!selectionStartInLine) { + region.addRect(clipIfValid(rightToLeft ? QRectF(lineRect.topRight(), fullLineRect.bottomRight()) + : QRectF(fullLineRect.topLeft(), lineRect.bottomLeft()), clip)); + } } else if (!selectionEndInLine && isLastLineInBlock &&!(d->option.flags() & QTextOption::ShowLineAndParagraphSeparators)) { @@ -1980,7 +1987,8 @@ if (lbh.currentPosition >= eng->layoutData->string.length() || isBreakableSpace - || attributes[lbh.currentPosition].lineBreak) { + || attributes[lbh.currentPosition].lineBreak + || lbh.tmpData.textWidth >= QFIXED_MAX) { sb_or_ws = true; break; } else if (attributes[lbh.currentPosition].graphemeBoundary) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextodfwriter.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextodfwriter.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/text/qtextodfwriter.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/text/qtextodfwriter.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -455,7 +455,7 @@ name.prepend(QLatin1String("qrc")); QUrl url = QUrl(name); const QVariant variant = m_document->resource(QTextDocument::ImageResource, url); - if (variant.userType() == QMetaType::QImage) { + if (variant.userType() == QMetaType::QPixmap || variant.userType() == QMetaType::QImage) { image = qvariant_cast<QImage>(variant); } else if (variant.userType() == QMetaType::QByteArray) { data = variant.toByteArray(); @@ -476,7 +476,7 @@ QBuffer imageBytes; int imgQuality = imageFormat.quality(); - if (imgQuality >= 100 || imgQuality < 0 || image.hasAlphaChannel()) { + if (imgQuality >= 100 || imgQuality <= 0 || image.hasAlphaChannel()) { QImageWriter imageWriter(&imageBytes, "png"); imageWriter.write(image); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/gui/util/qvalidator.cpp qtbase-opensource-src-5.15.8+dfsg/src/gui/util/qvalidator.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/gui/util/qvalidator.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/gui/util/qvalidator.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -84,8 +84,8 @@ \list \li For a line edit that accepts integers from 10 to 1000 inclusive, - 42 and 123 are \l Acceptable, the empty string and 5 are \l - Intermediate, and "asdf" and 1114 is \l Invalid. + 42 and 123 are \l Acceptable, the empty string, 5, or 1234 are \l + Intermediate, and "asdf" and 10114 is \l Invalid. \li For an editable combobox that accepts URLs, any well-formed URL is \l Acceptable, "http://example.com/," is \l Intermediate diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/access/http2/http2frames.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/access/http2/http2frames.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/access/http2/http2frames.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/access/http2/http2frames.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -233,7 +233,8 @@ Q_ASSERT(validatePayload() == FrameStatus::goodFrame); quint32 size = payloadSize(); - if (const uchar pad = padding()) { + if (flags().testFlag(FrameFlag::PADDED)) { + const uchar pad = padding(); // + 1 one for a byte with padding number itself: size -= pad + 1; } @@ -269,7 +270,7 @@ return nullptr; const uchar *src = &buffer[0] + frameHeaderSize; - if (padding()) + if (flags().testFlag(FrameFlag::PADDED)) ++src; if (priority()) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/access/http2/http2protocol_p.h qtbase-opensource-src-5.15.8+dfsg/src/network/access/http2/http2protocol_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/network/access/http2/http2protocol_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/access/http2/http2protocol_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -133,9 +133,6 @@ maxPayloadSize = (1 << 24) - 1, // HTTP/2 6.5.2 defaultSessionWindowSize = 65535, // HTTP/2 6.5.2 - // Using 1000 (rather arbitrarily), just to - // impose *some* upper limit: - maxPeerConcurrentStreams = 1000, maxConcurrentStreams = 100 // HTTP/2, 6.5.2 }; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/access/qhttp2protocolhandler.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/access/qhttp2protocolhandler.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/access/qhttp2protocolhandler.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/access/qhttp2protocolhandler.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -393,7 +393,8 @@ initReplyFromPushPromise(message, key); } - const auto streamsToUse = std::min<quint32>(maxConcurrentStreams - activeStreams.size(), + const auto streamsToUse = std::min<quint32>(maxConcurrentStreams > quint32(activeStreams.size()) + ? maxConcurrentStreams - quint32(activeStreams.size()) : 0, requests.size()); auto it = requests.begin(); for (quint32 i = 0; i < streamsToUse; ++i) { @@ -495,6 +496,10 @@ #ifndef QT_NO_NETWORKPROXY useProxy = m_connection->d_func()->networkProxy.type() != QNetworkProxy::NoProxy; #endif + if (stream.request().withCredentials()) { + m_connection->d_func()->createAuthorization(m_socket, stream.request()); + stream.request().d->needResendWithCredentials = false; + } const auto headers = build_headers(stream.request(), maxHeaderListSize, useProxy); if (!headers.size()) // nothing fits into maxHeaderListSize return false; @@ -520,7 +525,7 @@ Q_ASSERT(replyPrivate); auto slot = std::min<qint32>(sessionSendWindowSize, stream.sendWindow); - while (!stream.data()->atEnd() && slot) { + while (replyPrivate->totallyUploadedData < request.contentLength() && slot) { qint64 chunkSize = 0; const uchar *src = reinterpret_cast<const uchar *>(stream.data()->readPointer(slot, chunkSize)); @@ -1019,8 +1024,10 @@ if (activeStreams.contains(streamID)) { Stream &stream = activeStreams[streamID]; updateStream(stream, decoder.decodedHeader()); - // No DATA frames. - if (continuedFrames[0].flags() & FrameFlag::END_STREAM) { + // Needs to resend the request; we should finish and delete the current stream + const bool needResend = stream.request().d->needResendWithCredentials; + // No DATA frames. Or needs to resend. + if (continuedFrames[0].flags() & FrameFlag::END_STREAM || needResend) { finishStream(stream); deleteActiveStream(stream.streamID); } @@ -1078,17 +1085,12 @@ QMetaObject::invokeMethod(this, "resumeSuspendedStreams", Qt::QueuedConnection); } - if (identifier == Settings::MAX_CONCURRENT_STREAMS_ID) { - if (newValue > maxPeerConcurrentStreams) { - connectionError(PROTOCOL_ERROR, "SETTINGS invalid number of concurrent streams"); - return false; - } + if (identifier == Settings::MAX_CONCURRENT_STREAMS_ID) maxConcurrentStreams = newValue; - } if (identifier == Settings::MAX_FRAME_SIZE_ID) { if (newValue < Http2::minPayloadLimit || newValue > Http2::maxPayloadSize) { - connectionError(PROTOCOL_ERROR, "SETTGINGS max frame size is out of range"); + connectionError(PROTOCOL_ERROR, "SETTINGS max frame size is out of range"); return false; } maxFrameSize = newValue; @@ -1108,7 +1110,7 @@ Qt::ConnectionType connectionType) { const auto httpReply = stream.reply(); - const auto &httpRequest = stream.request(); + auto &httpRequest = stream.request(); Q_ASSERT(httpReply || stream.state == Stream::remoteReserved); if (!httpReply) { @@ -1146,6 +1148,7 @@ if (name == ":status") { statusCode = value.left(3).toInt(); httpReply->setStatusCode(statusCode); + m_channel->lastStatus = statusCode; // Mostly useless for http/2, needed for auth httpReplyPrivate->reasonPhrase = QString::fromLatin1(value.mid(4)); } else if (name == ":version") { httpReplyPrivate->majorVersion = value.at(5) - '0'; @@ -1165,21 +1168,79 @@ } } + const auto handleAuth = [&, this](const QByteArray &authField, bool isProxy) -> bool { + Q_ASSERT(httpReply); + const auto auth = authField.trimmed(); + if (auth.startsWith("Negotiate") || auth.startsWith("NTLM")) { + // @todo: We're supposed to fall back to http/1.1: + // https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10/http2-on-iis#when-is-http2-not-supported + // "Windows authentication (NTLM/Kerberos/Negotiate) is not supported with HTTP/2. + // In this case IIS will fall back to HTTP/1.1." + // Though it might be OK to ignore this. The server shouldn't let us connect with + // HTTP/2 if it doesn't support us using it. + } else if (!auth.isEmpty()) { + // Somewhat mimics parts of QHttpNetworkConnectionChannel::handleStatus + bool resend = false; + const bool authenticateHandled = m_connection->d_func()->handleAuthenticateChallenge( + m_socket, httpReply, isProxy, resend); + if (authenticateHandled && resend) { + httpReply->d_func()->eraseData(); + // Add the request back in queue, we'll retry later now that + // we've gotten some username/password set on it: + httpRequest.d->needResendWithCredentials = true; + m_channel->spdyRequestsToSend.insert(httpRequest.priority(), stream.httpPair); + httpReply->d_func()->clearHeaders(); + // If we have data we were uploading we need to reset it: + if (stream.data()) { + stream.data()->reset(); + httpReplyPrivate->totallyUploadedData = 0; + } + return true; + } // else: Authentication failed or was cancelled + } + return false; + }; + + if (httpReply) { + // See Note further down. These statuses would in HTTP/1.1 be handled + // by QHttpNetworkConnectionChannel::handleStatus. But because h2 has + // multiple streams/requests in a single channel this structure does not + // map properly to that function. + if (httpReply->statusCode() == 401) { + const auto wwwAuth = httpReply->headerField("www-authenticate"); + if (handleAuth(wwwAuth, false)) { + sendRST_STREAM(stream.streamID, CANCEL); + markAsReset(stream.streamID); + // The stream is finalized and deleted after returning + return; + } // else: errors handled later + } else if (httpReply->statusCode() == 407) { + const auto proxyAuth = httpReply->headerField("proxy-authenticate"); + if (handleAuth(proxyAuth, true)) { + sendRST_STREAM(stream.streamID, CANCEL); + markAsReset(stream.streamID); + // The stream is finalized and deleted after returning + return; + } // else: errors handled later + } + } + if (QHttpNetworkReply::isHttpRedirect(statusCode) && redirectUrl.isValid()) httpReply->setRedirectUrl(redirectUrl); if (httpReplyPrivate->isCompressed() && httpRequest.d->autoDecompress) httpReplyPrivate->removeAutoDecompressHeader(); - if (QHttpNetworkReply::isHttpRedirect(statusCode) - || statusCode == 401 || statusCode == 407) { - // These are the status codes that can trigger uploadByteDevice->reset() - // in QHttpNetworkConnectionChannel::handleStatus. Alas, we have no - // single request/reply, we multiplex several requests and thus we never - // simply call 'handleStatus'. If we have byte-device - we try to reset - // it here, we don't (and can't) handle any error during reset operation. - if (stream.data()) + if (QHttpNetworkReply::isHttpRedirect(statusCode)) { + // Note: This status code can trigger uploadByteDevice->reset() in + // QHttpNetworkConnectionChannel::handleStatus. Alas, we have no single + // request/reply, we multiplex several requests and thus we never simply + // call 'handleStatus'. If we have a byte-device - we try to reset it + // here, we don't (and can't) handle any error during reset operation. + if (stream.data()) { stream.data()->reset(); + httpReplyPrivate->totallyUploadedData = 0; + } } if (connectionType == Qt::DirectConnection) @@ -1248,10 +1309,12 @@ if (stream.data()) stream.data()->disconnect(this); - if (connectionType == Qt::DirectConnection) - emit httpReply->finished(); - else - QMetaObject::invokeMethod(httpReply, "finished", connectionType); + if (!stream.request().d->needResendWithCredentials) { + if (connectionType == Qt::DirectConnection) + emit httpReply->finished(); + else + QMetaObject::invokeMethod(httpReply, "finished", connectionType); + } } qCDebug(QT_HTTP2) << "stream" << stream.streamID << "closed"; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/access/qhttpnetworkconnection.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/access/qhttpnetworkconnection.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/access/qhttpnetworkconnection.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/access/qhttpnetworkconnection.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -510,8 +510,8 @@ channels[i].authenticator = QAuthenticator(); // authentication is cancelled, send the current contents to the user. - emit channels[i].reply->headerChanged(); - emit channels[i].reply->readyRead(); + emit reply->headerChanged(); + emit reply->readyRead(); QNetworkReply::NetworkError errorCode = isProxy ? QNetworkReply::ProxyAuthenticationRequiredError @@ -1120,30 +1120,49 @@ int normalRequests = queuedRequests - preConnectRequests; neededOpenChannels = qMax(normalRequests, preConnectRequests); } + + if (neededOpenChannels <= 0) + return; + + QQueue<int> channelsToConnect; + + // use previously used channels first for (int i = 0; i < activeChannelCount && neededOpenChannels > 0; ++i) { - bool connectChannel = false; - if (channels[i].socket) { - if ((channels[i].socket->state() == QAbstractSocket::ConnectingState) - || (channels[i].socket->state() == QAbstractSocket::HostLookupState) - || channels[i].pendingEncrypt) // pendingEncrypt == "EncryptingState" - neededOpenChannels--; - - if (neededOpenChannels <= 0) - break; - if (!channels[i].reply && !channels[i].isSocketBusy() && (channels[i].socket->state() == QAbstractSocket::UnconnectedState)) - connectChannel = true; - } else { // not previously used channel - connectChannel = true; - } - - if (connectChannel) { - if (networkLayerState == IPv4) - channels[i].networkLayerPreference = QAbstractSocket::IPv4Protocol; - else if (networkLayerState == IPv6) - channels[i].networkLayerPreference = QAbstractSocket::IPv6Protocol; - channels[i].ensureConnection(); + if (!channels[i].socket) + continue; + + if ((channels[i].socket->state() == QAbstractSocket::ConnectingState) + || (channels[i].socket->state() == QAbstractSocket::HostLookupState) + || channels[i].pendingEncrypt) { // pendingEncrypt == "EncryptingState" neededOpenChannels--; + continue; } + + if (!channels[i].reply && !channels[i].isSocketBusy() + && (channels[i].socket->state() == QAbstractSocket::UnconnectedState)) { + channelsToConnect.enqueue(i); + neededOpenChannels--; + } + } + + // use other channels + for (int i = 0; i < activeChannelCount && neededOpenChannels > 0; ++i) { + if (channels[i].socket) + continue; + + channelsToConnect.enqueue(i); + neededOpenChannels--; + } + + while (!channelsToConnect.isEmpty()) { + const int channel = channelsToConnect.dequeue(); + + if (networkLayerState == IPv4) + channels[channel].networkLayerPreference = QAbstractSocket::IPv4Protocol; + else if (networkLayerState == IPv6) + channels[channel].networkLayerPreference = QAbstractSocket::IPv6Protocol; + + channels[channel].ensureConnection(); } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/access/qhttpnetworkconnectionchannel.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/access/qhttpnetworkconnectionchannel.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/access/qhttpnetworkconnectionchannel.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/access/qhttpnetworkconnectionchannel.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -697,17 +697,19 @@ //this happens if server closes connection while QHttpNetworkConnectionPrivate::_q_startNextRequest is pending return false; } - QNonContiguousByteDevice* uploadByteDevice = request.uploadByteDevice(); - if (!uploadByteDevice) - return true; - - if (uploadByteDevice->reset()) { + if (connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP2Direct + || switchedToHttp2) { + // The else branch doesn't make any sense for HTTP/2, since 1 channel is multiplexed into + // many streams. And having one stream fail to reset upload data should not completely close + // the channel. Handled in the http2 protocol handler. + } else if (QNonContiguousByteDevice *uploadByteDevice = request.uploadByteDevice()) { + if (!uploadByteDevice->reset()) { + connection->d_func()->emitReplyError(socket, reply, QNetworkReply::ContentReSendError); + return false; + } written = 0; - return true; - } else { - connection->d_func()->emitReplyError(socket, reply, QNetworkReply::ContentReSendError); - return false; } + return true; } #ifndef QT_NO_NETWORKPROXY @@ -1284,6 +1286,10 @@ connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP2Direct) { // we call setSpdyWasUsed(true) on the replies in the SPDY handler when the request is sent if (spdyRequestsToSend.count() > 0) { + // Similar to HTTP/1.1 counterpart below: + const auto &pairs = spdyRequestsToSend.values(); // (request, reply) + const auto &pair = pairs.first(); + emit pair.second->encrypted(); // In case our peer has sent us its settings (window size, max concurrent streams etc.) // let's give _q_receiveReply a chance to read them first ('invokeMethod', QueuedConnection). QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/access/qhttpnetworkrequest.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/access/qhttpnetworkrequest.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/access/qhttpnetworkrequest.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/access/qhttpnetworkrequest.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -65,6 +65,7 @@ withCredentials(other.withCredentials), ssl(other.ssl), preConnect(other.preConnect), + needResendWithCredentials(other.needResendWithCredentials), redirectCount(other.redirectCount), redirectPolicy(other.redirectPolicy), peerVerifyName(other.peerVerifyName) @@ -92,7 +93,8 @@ && (ssl == other.ssl) && (preConnect == other.preConnect) && (redirectPolicy == other.redirectPolicy) - && (peerVerifyName == other.peerVerifyName); + && (peerVerifyName == other.peerVerifyName) + && (needResendWithCredentials == other.needResendWithCredentials); } QByteArray QHttpNetworkRequest::methodName() const diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/access/qhttpnetworkrequest_p.h qtbase-opensource-src-5.15.8+dfsg/src/network/access/qhttpnetworkrequest_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/network/access/qhttpnetworkrequest_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/access/qhttpnetworkrequest_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -183,6 +183,7 @@ bool withCredentials; bool ssl; bool preConnect; + bool needResendWithCredentials = false; int redirectCount; QNetworkRequest::RedirectPolicy redirectPolicy; QString peerVerifyName; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/access/qnetworkaccessmanager.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/access/qnetworkaccessmanager.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/access/qnetworkaccessmanager.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/access/qnetworkaccessmanager.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1411,7 +1411,6 @@ bool isLocalFile = req.url().isLocalFile(); QString scheme = req.url().scheme(); -#ifndef Q_OS_WASM // fast path for GET on file:// URLs // The QNetworkAccessFileBackend will right now only be used for PUT @@ -1446,7 +1445,6 @@ return reply; } } -#endif QNetworkRequest request = req; if (!request.header(QNetworkRequest::ContentLengthHeader).isValid() && outgoingData && !outgoingData->isSequential()) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/access/qnetworkdiskcache.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/access/qnetworkdiskcache.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/access/qnetworkdiskcache.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/access/qnetworkdiskcache.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -271,14 +271,12 @@ Q_ASSERT(!fileName.isEmpty()); if (QFile::exists(fileName)) { - if (!QFile::remove(fileName)) { + if (!removeFile(fileName)) { qWarning() << "QNetworkDiskCache: couldn't remove the cache file " << fileName; return; } } - if (currentCacheSize > 0) - currentCacheSize += 1024 + cacheItem->size(); currentCacheSize = q->expire(); if (!cacheItem->file) { QString templateName = tmpCacheFileName(); @@ -417,18 +415,7 @@ buffer->setData(d->lastItem.data.data()); } else { buffer.reset(new QBuffer); - // ### verify that QFile uses the fd size and not the file name - qint64 size = file->size() - file->pos(); - const uchar *p = nullptr; -#if !defined(Q_OS_INTEGRITY) - p = file->map(file->pos(), size); -#endif - if (p) { - buffer->setData((const char *)p, size); - file.take()->setParent(buffer.data()); - } else { - buffer->setData(file->readAll()); - } + buffer->setData(file->readAll()); } } buffer->open(QBuffer::ReadOnly); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/access/qnetworkreplywasmimpl.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/access/qnetworkreplywasmimpl.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/access/qnetworkreplywasmimpl.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/access/qnetworkreplywasmimpl.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -67,10 +67,6 @@ QNetworkReplyWasmImplPrivate::~QNetworkReplyWasmImplPrivate() { - if (m_fetch) { - emscripten_fetch_close(m_fetch); - m_fetch = 0; - } } QNetworkReplyWasmImpl::QNetworkReplyWasmImpl(QObject *parent) @@ -115,12 +111,14 @@ void QNetworkReplyWasmImpl::abort() { - Q_D( QNetworkReplyWasmImpl); + Q_D(QNetworkReplyWasmImpl); if (d->state == QNetworkReplyPrivate::Finished || d->state == QNetworkReplyPrivate::Aborted) return; d->state = QNetworkReplyPrivate::Aborted; - d->doAbort(); + d->m_fetch->userData = nullptr; + + d->emitReplyError(QNetworkReply::OperationCanceledError, QStringLiteral("Operation canceled")); close(); } @@ -198,11 +196,6 @@ handler->q_func()->setAttribute(QNetworkRequest::HttpReasonPhraseAttribute, statusReason); } -void QNetworkReplyWasmImplPrivate::doAbort() const -{ - emscripten_fetch_close(m_fetch); -} - constexpr int getArraySize (int factor) { return 2 * factor + 1; } @@ -283,7 +276,6 @@ q->setError(errorCode, errorString); emit q->errorOccurred(errorCode); - emit q->finished(); } void QNetworkReplyWasmImplPrivate::emitDataReadProgress(qint64 bytesReceived, qint64 bytesTotal) @@ -447,23 +439,18 @@ void QNetworkReplyWasmImplPrivate::downloadSucceeded(emscripten_fetch_t *fetch) { - QNetworkReplyWasmImplPrivate *reply = - reinterpret_cast<QNetworkReplyWasmImplPrivate*>(fetch->userData); + auto reply = reinterpret_cast<QNetworkReplyWasmImplPrivate*>(fetch->userData); if (reply) { - QByteArray buffer(fetch->data, fetch->numBytes); - reply->dataReceived(buffer, buffer.size()); - - QByteArray statusText(fetch->statusText); - reply->setStatusCode(fetch->status, statusText); - reply->setReplyFinished(); + if (reply->state != QNetworkReplyPrivate::Aborted) { + QByteArray buffer(fetch->data, fetch->numBytes); + reply->dataReceived(buffer, buffer.size()); + QByteArray statusText(fetch->statusText); + reply->setStatusCode(fetch->status, statusText); + reply->setReplyFinished(); + } + reply->m_fetch = nullptr; } -} - -void QNetworkReplyWasmImplPrivate::setStatusCode(int status, const QByteArray &statusText) -{ - Q_Q(QNetworkReplyWasmImpl); - q->setAttribute(QNetworkRequest::HttpStatusCodeAttribute, status); - q->setAttribute(QNetworkRequest::HttpReasonPhraseAttribute, statusText); + emscripten_fetch_close(fetch); } void QNetworkReplyWasmImplPrivate::setReplyFinished() @@ -474,24 +461,36 @@ emit q->finished(); } +void QNetworkReplyWasmImplPrivate::setStatusCode(int status, const QByteArray &statusText) +{ + Q_Q(QNetworkReplyWasmImpl); + q->setAttribute(QNetworkRequest::HttpStatusCodeAttribute, status); + q->setAttribute(QNetworkRequest::HttpReasonPhraseAttribute, statusText); +} + void QNetworkReplyWasmImplPrivate::stateChange(emscripten_fetch_t *fetch) { - if (fetch->readyState == /*HEADERS_RECEIVED*/ 2) { - size_t headerLength = emscripten_fetch_get_response_headers_length(fetch); - QByteArray str(headerLength, Qt::Uninitialized); - emscripten_fetch_get_response_headers(fetch, str.data(), str.size()); - QNetworkReplyWasmImplPrivate *reply = - reinterpret_cast<QNetworkReplyWasmImplPrivate*>(fetch->userData); - reply->headersReceived(str); + if (fetch) { + if (!quintptr(fetch->userData)) + return; + auto reply = reinterpret_cast<QNetworkReplyWasmImplPrivate*>(fetch->userData); + if (reply->state != QNetworkReplyPrivate::Aborted) { + if (fetch->readyState == /*HEADERS_RECEIVED*/ 2) { + size_t headerLength = emscripten_fetch_get_response_headers_length(fetch); + QByteArray str(headerLength, Qt::Uninitialized); + emscripten_fetch_get_response_headers(fetch, str.data(), str.size()); + + reply->headersReceived(str); + } + } } } void QNetworkReplyWasmImplPrivate::downloadProgress(emscripten_fetch_t *fetch) { - QNetworkReplyWasmImplPrivate *reply = - reinterpret_cast<QNetworkReplyWasmImplPrivate*>(fetch->userData); - Q_ASSERT(reply); - + auto reply = reinterpret_cast<QNetworkReplyWasmImplPrivate*>(fetch->userData); + if (!reply || reply->state == QNetworkReplyPrivate::Aborted) + return; if (fetch->status < 400) { uint64_t bytes = fetch->dataOffset + fetch->numBytes; uint64_t tBytes = fetch->totalBytes; // totalBytes can be 0 if server not reporting content length @@ -503,10 +502,13 @@ void QNetworkReplyWasmImplPrivate::downloadFailed(emscripten_fetch_t *fetch) { - QNetworkReplyWasmImplPrivate *reply = reinterpret_cast<QNetworkReplyWasmImplPrivate*>(fetch->userData); + + auto reply = reinterpret_cast<QNetworkReplyWasmImplPrivate*>(fetch->userData); + if (reply) { + QString reasonStr; - if (fetch->status > 600 || reply->state == QNetworkReplyPrivate::Aborted) + if (fetch->status > 600) reasonStr = QStringLiteral("Operation canceled"); else reasonStr = QString::fromUtf8(fetch->statusText); @@ -514,10 +516,10 @@ QByteArray statusText(fetch->statusText); reply->setStatusCode(fetch->status, statusText); reply->emitReplyError(reply->statusCodeFromHttp(fetch->status, reply->request.url()), reasonStr); + reply->m_fetch = nullptr; } - if (fetch->status >= 400) - emscripten_fetch_close(fetch); // Also free data on failure. + emscripten_fetch_close(fetch); } //taken from qhttpthreaddelegate.cpp diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/access/qnetworkreplywasmimpl_p.h qtbase-opensource-src-5.15.8+dfsg/src/network/access/qnetworkreplywasmimpl_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/network/access/qnetworkreplywasmimpl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/access/qnetworkreplywasmimpl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -137,8 +137,6 @@ QSharedPointer<QRingBuffer> outgoingDataBuffer; QByteArray requestData; - void doAbort() const; - static void downloadProgress(emscripten_fetch_t *fetch); static void downloadFailed(emscripten_fetch_t *fetch); static void downloadSucceeded(emscripten_fetch_t *fetch); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/access/qspdyprotocolhandler.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/access/qspdyprotocolhandler.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/access/qspdyprotocolhandler.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/access/qspdyprotocolhandler.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -762,7 +762,8 @@ void QSpdyProtocolHandler::_q_uploadDataReadyRead() { QNonContiguousByteDevice *device = qobject_cast<QNonContiguousByteDevice *>(sender()); - Q_ASSERT(device); + if (!device) + return; qint32 streamID = m_streamIDs.value(device); Q_ASSERT(streamID > 0); uploadData(streamID); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/doc/src/qtnetwork.qdoc qtbase-opensource-src-5.15.8+dfsg/src/network/doc/src/qtnetwork.qdoc --- qtbase-opensource-src-5.15.3+dfsg/src/network/doc/src/qtnetwork.qdoc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/doc/src/qtnetwork.qdoc 2022-11-11 15:29:17.000000000 +0800 @@ -43,7 +43,9 @@ Add \c network to the \c QT variable: - \snippet snippets.pro 0 + \code + QT += network + \endcode \section1 Articles and Guides diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/doc/src/ssl.qdoc qtbase-opensource-src-5.15.8+dfsg/src/network/doc/src/ssl.qdoc --- qtbase-opensource-src-5.15.3+dfsg/src/network/doc/src/ssl.qdoc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/doc/src/ssl.qdoc 2022-11-11 15:29:17.000000000 +0800 @@ -36,8 +36,8 @@ the Secure Sockets Layer (SSL) protocol, using the \l{OpenSSL Toolkit} to perform encryption and protocol handling. - From Qt version 5.6 onwards, the officially supported version for OpenSSL - is 1.0.0 or later. + From Qt version 5.15 onwards, the officially supported version for OpenSSL + is 1.1.1 or later. \annotatedlist ssl diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/kernel/qauthenticator.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/kernel/qauthenticator.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/kernel/qauthenticator.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/kernel/qauthenticator.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -423,6 +423,22 @@ } } +static bool verifyDigestMD5(const QByteArray &value) +{ + auto opts = QAuthenticatorPrivate::parseDigestAuthenticationChallenge(value); + auto it = opts.constFind("algorithm"); + if (it != opts.cend()) { + QByteArray alg = it.value(); + if (alg.size() < 3) + return false; + // Just compare the first 3 characters, that way we match other subvariants as well, such as + // "MD5-sess" + auto view = QByteArray::fromRawData(alg.data(), 3); + return view.compare("MD5", Qt::CaseInsensitive) == 0; + } + return true; // assume it's ok if algorithm is not specified +} + void QAuthenticatorPrivate::parseHttpResponse(const QList<QPair<QByteArray, QByteArray> > &values, bool isProxy, const QString &host) { #if !QT_CONFIG(gssapi) @@ -454,8 +470,13 @@ method = Ntlm; headerVal = current.second.mid(5); } else if (method < DigestMd5 && str.startsWith("digest")) { + // Make sure the algorithm is actually MD5 before committing to it: + QByteArray fieldValue = current.second.mid(7); + if (!verifyDigestMD5(fieldValue)) + continue; + method = DigestMd5; - headerVal = current.second.mid(7); + headerVal = fieldValue; } else if (method < Negotiate && str.startsWith("negotiate")) { #if QT_CONFIG(sspi) || QT_CONFIG(gssapi) // if it's not supported then we shouldn't try to use it #if QT_CONFIG(gssapi) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/socket/qhttpsocketengine.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/socket/qhttpsocketengine.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/socket/qhttpsocketengine.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/socket/qhttpsocketengine.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -645,7 +645,7 @@ d->socket->readAll(); //We're done with the reply and need to reset it for the next connection delete d->reply; - d->reply = new QHttpNetworkReply; + d->reply = new QHttpNetworkReply(QUrl(), this); } if (priv->phase == QAuthenticatorPrivate::Done) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/socket/qlocalsocket.h qtbase-opensource-src-5.15.8+dfsg/src/network/socket/qlocalsocket.h --- qtbase-opensource-src-5.15.3+dfsg/src/network/socket/qlocalsocket.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/socket/qlocalsocket.h 2022-11-11 15:29:17.000000000 +0800 @@ -44,6 +44,10 @@ #include <QtCore/qiodevice.h> #include <QtNetwork/qabstractsocket.h> +#ifndef QT_NO_DEBUG_STREAM +#include <QtCore/qdebug.h> +#endif + QT_REQUIRE_CONFIG(localserver); QT_BEGIN_NAMESPACE @@ -146,7 +150,6 @@ }; #ifndef QT_NO_DEBUG_STREAM -#include <QtCore/qdebug.h> Q_NETWORK_EXPORT QDebug operator<<(QDebug, QLocalSocket::LocalSocketError); Q_NETWORK_EXPORT QDebug operator<<(QDebug, QLocalSocket::LocalSocketState); #endif diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/socket/qlocalsocket_win.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/socket/qlocalsocket_win.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/socket/qlocalsocket_win.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/socket/qlocalsocket_win.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -255,13 +255,10 @@ emit q->disconnected(); pipeReader->stop(); + delete pipeWriter; + pipeWriter = nullptr; destroyPipeHandles(); handle = INVALID_HANDLE_VALUE; - - if (pipeWriter) { - delete pipeWriter; - pipeWriter = 0; - } } qint64 QLocalSocket::bytesAvailable() const diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/ssl/qasn1element.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/ssl/qasn1element.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/ssl/qasn1element.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/ssl/qasn1element.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -318,8 +318,9 @@ return 0; } - // NOTE: negative numbers are not handled - if (mValue.at(0) & 0x80) { + // NOTE: - negative numbers are not handled + // - greater sizes would overflow + if (mValue.at(0) & 0x80 || mValue.size() > 8) { if (ok) *ok = false; return 0; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/ssl/qsslcertificate_openssl.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/ssl/qsslcertificate_openssl.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/ssl/qsslcertificate_openssl.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/ssl/qsslcertificate_openssl.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -44,6 +44,7 @@ #include "qsslkey_p.h" #include "qsslcertificateextension_p.h" +#include <QtCore/qscopeguard.h> #include <QtCore/qendian.h> #include <QtCore/qmutex.h> @@ -330,12 +331,11 @@ */ static QVariant x509UnknownExtensionToValue(X509_EXTENSION *ext) { - // Get the extension specific method object if available + Q_ASSERT(ext); + // Get the extension specific method object if available, // we cast away the const-ness here because some versions of openssl // don't use const for the parameters in the functions pointers stored // in the object. - Q_ASSERT(ext); - X509V3_EXT_METHOD *meth = const_cast<X509V3_EXT_METHOD *>(q_X509V3_EXT_get(ext)); if (!meth) { ASN1_OCTET_STRING *value = q_X509_EXTENSION_get_data(ext); @@ -345,18 +345,34 @@ return result; } - //const unsigned char *data = ext->value->data; void *ext_internal = q_X509V3_EXT_d2i(ext); + if (!ext_internal) + return {}; + + const auto extCleaner = qScopeGuard([meth, ext_internal]{ + Q_ASSERT(ext_internal && meth); + + if (meth->it) + q_ASN1_item_free(static_cast<ASN1_VALUE *>(ext_internal), ASN1_ITEM_ptr(meth->it)); + else if (meth->ext_free) + meth->ext_free(ext_internal); + else + qCWarning(lcSsl, "No method to free an unknown extension, a potential memory leak?"); + }); // If this extension can be converted - if (meth->i2v && ext_internal) { + if (meth->i2v) { STACK_OF(CONF_VALUE) *val = meth->i2v(meth, ext_internal, nullptr); + const auto stackCleaner = qScopeGuard([val]{ + if (val) + q_OPENSSL_sk_pop_free((OPENSSL_STACK *)val, (void(*)(void*))q_X509V3_conf_free); + }); QVariantMap map; QVariantList list; bool isMap = false; - for (int j = 0; j < q_SKM_sk_num(CONF_VALUE, val); j++) { + for (int j = 0; j < q_SKM_sk_num(val); j++) { CONF_VALUE *nval = q_SKM_sk_value(CONF_VALUE, val, j); if (nval->name && nval->value) { isMap = true; @@ -372,10 +388,12 @@ return map; else return list; - } else if (meth->i2s && ext_internal) { - QVariant result(QString::fromUtf8(meth->i2s(meth, ext_internal))); + } else if (meth->i2s) { + const char *hexString = meth->i2s(meth, ext_internal); + QVariant result(hexString ? QString::fromUtf8(hexString) : QString{}); + q_OPENSSL_free((void *)hexString); return result; - } else if (meth->i2r && ext_internal) { + } else if (meth->i2r) { QByteArray result; BIO *bio = q_BIO_new(q_BIO_s_mem()); @@ -405,13 +423,36 @@ ASN1_OBJECT *obj = q_X509_EXTENSION_get_object(ext); int nid = q_OBJ_obj2nid(obj); + // We cast away the const-ness here because some versions of openssl + // don't use const for the parameters in the functions pointers stored + // in the object. + X509V3_EXT_METHOD *meth = const_cast<X509V3_EXT_METHOD *>(q_X509V3_EXT_get(ext)); + + void *ext_internal = nullptr; // The value, returned by X509V3_EXT_d2i. + const auto extCleaner = qScopeGuard([meth, &ext_internal]() { + if (!meth || !ext_internal) + return; + + if (meth->it) + q_ASN1_item_free(static_cast<ASN1_VALUE *>(ext_internal), ASN1_ITEM_ptr(meth->it)); + else if (meth->ext_free) + meth->ext_free(ext_internal); + else + qWarning(lcSsl, "Cannot free an extension, a potential memory leak?"); + }); + + const char * hexString = nullptr; // The value returned by meth->i2s. + const auto hexStringCleaner = qScopeGuard([&hexString](){ + if (hexString) + q_OPENSSL_free((void*)hexString); + }); + switch (nid) { case NID_basic_constraints: { BASIC_CONSTRAINTS *basic = reinterpret_cast<BASIC_CONSTRAINTS *>(q_X509V3_EXT_d2i(ext)); if (!basic) - return QVariant(); - + return {}; QVariantMap result; result[QLatin1String("ca")] = basic->ca ? true : false; if (basic->pathlen) @@ -425,10 +466,9 @@ { AUTHORITY_INFO_ACCESS *info = reinterpret_cast<AUTHORITY_INFO_ACCESS *>(q_X509V3_EXT_d2i(ext)); if (!info) - return QVariant(); - + return {}; QVariantMap result; - for (int i=0; i < q_SKM_sk_num(ACCESS_DESCRIPTION, info); i++) { + for (int i=0; i < q_SKM_sk_num(info); i++) { ACCESS_DESCRIPTION *ad = q_SKM_sk_value(ACCESS_DESCRIPTION, info, i); GENERAL_NAME *name = ad->location; @@ -448,29 +488,25 @@ } } - q_OPENSSL_sk_pop_free((OPENSSL_STACK*)info, reinterpret_cast<void(*)(void *)>(q_OPENSSL_sk_free)); + q_AUTHORITY_INFO_ACCESS_free(info); return result; } break; case NID_subject_key_identifier: { - void *ext_internal = q_X509V3_EXT_d2i(ext); + ext_internal = q_X509V3_EXT_d2i(ext); if (!ext_internal) - return QVariant(); - // we cast away the const-ness here because some versions of openssl - // don't use const for the parameters in the functions pointers stored - // in the object. - X509V3_EXT_METHOD *meth = const_cast<X509V3_EXT_METHOD *>(q_X509V3_EXT_get(ext)); + return {}; - return QVariant(QString::fromUtf8(meth->i2s(meth, ext_internal))); + hexString = meth->i2s(meth, ext_internal); + return QVariant(QString::fromUtf8(hexString)); } break; - case NID_authority_key_identifier: + case NID_authority_key_identifier: { AUTHORITY_KEYID *auth_key = reinterpret_cast<AUTHORITY_KEYID *>(q_X509V3_EXT_d2i(ext)); if (!auth_key) - return QVariant(); - + return {}; QVariantMap result; // keyid @@ -493,7 +529,7 @@ break; } - return QVariant(); + return {}; } QSslCertificateExtension QSslCertificatePrivate::convertExtension(X509_EXTENSION *ext) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/ssl/qsslkey_openssl.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/ssl/qsslkey_openssl.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/ssl/qsslkey_openssl.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/ssl/qsslkey_openssl.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -348,7 +348,10 @@ EVP_CIPHER_CTX *ctx = q_EVP_CIPHER_CTX_new(); q_EVP_CIPHER_CTX_reset(ctx); - q_EVP_CipherInit(ctx, type, nullptr, nullptr, enc); + if (q_EVP_CipherInit(ctx, type, nullptr, nullptr, enc) != 1) { + QSslSocketBackendPrivate::logAndClearErrorQueue(); + return QByteArray(); + } q_EVP_CIPHER_CTX_set_key_length(ctx, key.size()); if (cipher == QSslKeyPrivate::Rc2Cbc) q_EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_SET_RC2_KEY_BITS, 8 * key.size(), nullptr); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/ssl/qsslsocket_openssl.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/ssl/qsslsocket_openssl.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/ssl/qsslsocket_openssl.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/ssl/qsslsocket_openssl.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -213,15 +213,22 @@ Q_ASSERT(d); Q_ASSERT(d->mode == QSslSocket::SslClientMode); #endif + unsigned retVal = 0; + + // Let developers opt-in to having the normal PSK callback get called for TLS 1.3 + // PSK (which works differently in a few ways, and is called at the start of every connection). + // When they do opt-in we just call the old callback from here. + if (qEnvironmentVariableIsSet("QT_USE_TLS_1_3_PSK")) + retVal = q_ssl_psk_client_callback(ssl, hint, identity, max_identity_len, psk, max_psk_len); + q_SSL_set_psk_client_callback(ssl, &q_ssl_psk_client_callback); - return 0; + return retVal; } static int q_ssl_psk_use_session_callback(SSL *ssl, const EVP_MD *md, const unsigned char **id, size_t *idlen, SSL_SESSION **sess) { - Q_UNUSED(ssl); Q_UNUSED(md); Q_UNUSED(id); Q_UNUSED(idlen); @@ -455,7 +462,7 @@ const QSharedPointer<OCSP_CERTID> guard(recreatedId, q_OCSP_CERTID_free); if (q_OCSP_id_cmp(const_cast<OCSP_CERTID *>(certId), recreatedId)) { - qDebug(lcSsl, "Certificate ID mismatch"); + qCDebug(lcSsl, "Certificate ID mismatch"); return false; } // Bingo! @@ -484,8 +491,23 @@ // during a handshake, a pointer to the SSL object is stored into the X509_STORE_CTX object // to identify the connection affected. To retrieve this pointer the X509_STORE_CTX_get_ex_data() // function can be used with the correct index." - if (SSL *ssl = static_cast<SSL *>(q_X509_STORE_CTX_get_ex_data(ctx, q_SSL_get_ex_data_X509_STORE_CTX_idx()))) + if (SSL *ssl = static_cast<SSL *>(q_X509_STORE_CTX_get_ex_data( + ctx, q_SSL_get_ex_data_X509_STORE_CTX_idx()))) { + + // We may be in a renegotiation, check if we are inside a call to SSL_read: + const auto tlsOffset = QSslSocketBackendPrivate::s_indexForSSLExtraData; + auto tls = static_cast<QSslSocketBackendPrivate *>(q_SSL_get_ex_data(ssl, tlsOffset)); + Q_ASSERT(tls); + if (tls->isInSslRead()) { + // We are in a renegotiation, make a note of this for later. + // We'll check that the certificate is the same as the one we got during + // the initial handshake + tls->setRenegotiated(true); + return 1; + } + errors = ErrorListPtr(q_SSL_get_ex_data(ssl, QSslSocketBackendPrivate::s_indexForSSLExtraData + 1)); + } } if (!errors) { @@ -1149,7 +1171,25 @@ break; } // Don't use SSL_pending(). It's very unreliable. + inSslRead = true; readBytes = q_SSL_read(ssl, buffer.reserve(bytesToRead), bytesToRead); + inSslRead = false; + if (renegotiated) { + renegotiated = false; + X509 *x509 = q_SSL_get_peer_certificate(ssl); + const auto peerCertificate = + QSslCertificatePrivate::QSslCertificate_from_X509(x509); + // Fail the renegotiate if the certificate has changed, else: continue. + if (peerCertificate != q->peerCertificate()) { + const ScopedBool bg(inSetAndEmitError, true); + setErrorAndEmit( + QAbstractSocket::RemoteHostClosedError, + QSslSocket::tr( + "TLS certificate unexpectedly changed during renegotiation!")); + q->abort(); + return; + } + } if (readBytes > 0) { #ifdef QSSLSOCKET_DEBUG qCDebug(lcSsl) << "QSslSocketBackendPrivate::transmit: decrypted" << readBytes << "bytes"; @@ -1593,6 +1633,16 @@ return pskLength; } +bool QSslSocketBackendPrivate::isInSslRead() const +{ + return inSslRead; +} + +void QSslSocketBackendPrivate::setRenegotiated(bool renegotiated) +{ + this->renegotiated = renegotiated; +} + #ifdef Q_OS_WIN void QSslSocketBackendPrivate::fetchCaRootForCert(const QSslCertificate &cert) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/ssl/qsslsocket_openssl_p.h qtbase-opensource-src-5.15.8+dfsg/src/network/ssl/qsslsocket_openssl_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/network/ssl/qsslsocket_openssl_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/ssl/qsslsocket_openssl_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -134,6 +134,9 @@ bool inSetAndEmitError = false; + bool inSslRead = false; + bool renegotiated = false; + // Platform specific functions void startClientEncryption() override; void startServerEncryption() override; @@ -149,6 +152,10 @@ int handleNewSessionTicket(SSL *context); unsigned int tlsPskClientCallback(const char *hint, char *identity, unsigned int max_identity_len, unsigned char *psk, unsigned int max_psk_len); unsigned int tlsPskServerCallback(const char *identity, unsigned char *psk, unsigned int max_psk_len); + + bool isInSslRead() const; + void setRenegotiated(bool renegotiated); + #ifdef Q_OS_WIN void fetchCaRootForCert(const QSslCertificate &cert); void _q_caRootLoaded(QSslCertificate,QSslCertificate) override; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/ssl/qsslsocket_openssl_symbols.cpp qtbase-opensource-src-5.15.8+dfsg/src/network/ssl/qsslsocket_openssl_symbols.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/network/ssl/qsslsocket_openssl_symbols.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/ssl/qsslsocket_openssl_symbols.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -178,6 +178,8 @@ DEFINEFUNC(void, X509_up_ref, X509 *a, a, return, DUMMYARG) DEFINEFUNC(ASN1_TIME *, X509_getm_notBefore, X509 *a, a, return nullptr, return) DEFINEFUNC(ASN1_TIME *, X509_getm_notAfter, X509 *a, a, return nullptr, return) +DEFINEFUNC2(void, ASN1_item_free, ASN1_VALUE *val, val, const ASN1_ITEM *it, it, return, return) +DEFINEFUNC(void, X509V3_conf_free, CONF_VALUE *val, val, return, return) DEFINEFUNC(long, X509_get_version, X509 *a, a, return -1, return) DEFINEFUNC(EVP_PKEY *, X509_get_pubkey, X509 *a, a, return nullptr, return) DEFINEFUNC2(void, X509_STORE_set_verify_cb, X509_STORE *a, a, X509_STORE_CTX_verify_cb verify_cb, verify_cb, return, DUMMYARG) @@ -234,6 +236,7 @@ const EVP_MD *dg, dg, STACK_OF(X509) *cs, cs, unsigned long flags, flags, return 0, return) #endif // ocsp +DEFINEFUNC(void, AUTHORITY_INFO_ACCESS_free, AUTHORITY_INFO_ACCESS *p, p, return, return) DEFINEFUNC2(void, BIO_set_data, BIO *a, a, void *ptr, ptr, return, DUMMYARG) DEFINEFUNC(void *, BIO_get_data, BIO *a, a, return nullptr, return) DEFINEFUNC2(void, BIO_set_init, BIO *a, a, int init, init, return, DUMMYARG) @@ -672,7 +675,14 @@ LoadedOpenSsl result; // With OpenSSL 1.1 the names have changed to libssl-1_1 and libcrypto-1_1 for builds using - // MSVC and GCC, with architecture suffixes for non-x86 builds. + // MSVC and GCC. For 3.0 the version suffix changed again, to just '3'. + // For non-x86 builds, an architecture suffix is also appended. + +#if (OPENSSL_VERSION_NUMBER >> 28) < 3 +#define QT_OPENSSL_VERSION "1_1" +#elif OPENSSL_VERSION_MAJOR == 3 // Starting with 3.0 this define is available +#define QT_OPENSSL_VERSION "3" +#endif // > 3 intentionally left undefined #if defined(Q_PROCESSOR_X86_64) #define QT_SSL_SUFFIX "-x64" @@ -684,8 +694,8 @@ #define QT_SSL_SUFFIX #endif - tryToLoadOpenSslWin32Library(QLatin1String("libssl-1_1" QT_SSL_SUFFIX), - QLatin1String("libcrypto-1_1" QT_SSL_SUFFIX), result); + tryToLoadOpenSslWin32Library(QLatin1String("libssl-" QT_OPENSSL_VERSION QT_SSL_SUFFIX), + QLatin1String("libcrypto-" QT_OPENSSL_VERSION QT_SSL_SUFFIX), result); #undef QT_SSL_SUFFIX return result; @@ -791,6 +801,11 @@ const QStringList cryptoList = findAllLibCrypto(); for (const QString &crypto : cryptoList) { +#ifdef Q_OS_DARWIN + // Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI + if (crypto.endsWith("libcrypto.dylib")) + continue; +#endif libcrypto->setFileNameAndVersion(crypto, -1); if (libcrypto->load()) { QFileInfo fi(crypto); @@ -848,6 +863,7 @@ RESOLVEFUNC(OPENSSL_init_crypto) RESOLVEFUNC(ASN1_STRING_get0_data) RESOLVEFUNC(EVP_CIPHER_CTX_reset) + RESOLVEFUNC(AUTHORITY_INFO_ACCESS_free) RESOLVEFUNC(EVP_PKEY_up_ref) RESOLVEFUNC(EVP_PKEY_CTX_new) RESOLVEFUNC(EVP_PKEY_param_check) @@ -884,6 +900,8 @@ RESOLVEFUNC(X509_STORE_CTX_get0_chain) RESOLVEFUNC(X509_getm_notBefore) RESOLVEFUNC(X509_getm_notAfter) + RESOLVEFUNC(ASN1_item_free) + RESOLVEFUNC(X509V3_conf_free) RESOLVEFUNC(X509_get_version) RESOLVEFUNC(X509_get_pubkey) RESOLVEFUNC(X509_STORE_set_verify_cb) @@ -893,13 +911,25 @@ RESOLVEFUNC(OpenSSL_version_num) RESOLVEFUNC(OpenSSL_version) - if (!_q_OpenSSL_version) { + if (!_q_OpenSSL_version || !_q_OpenSSL_version_num) { // Apparently, we were built with OpenSSL 1.1 enabled but are now using // a wrong library. qCWarning(lcSsl, "Incompatible version of OpenSSL"); return false; } +#if OPENSSL_VERSION_NUMBER >= 0x30000000 + if (q_OpenSSL_version_num() < 0x30000000) { + qCWarning(lcSsl, "Incompatible version of OpenSSL (built with OpenSSL >= 3.x, runtime version is < 3.x)"); + return false; + } +#else + if (q_OpenSSL_version_num() >= 0x30000000) { + qCWarning(lcSsl, "Incompatible version of OpenSSL (built with OpenSSL 1.x, runtime version is >= 3.x)"); + return false; + } +#endif // OPENSSL_VERSION_NUMBER + RESOLVEFUNC(SSL_SESSION_get_ticket_lifetime_hint) RESOLVEFUNC(DH_bits) RESOLVEFUNC(DSA_bits) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/network/ssl/qsslsocket_openssl_symbols_p.h qtbase-opensource-src-5.15.8+dfsg/src/network/ssl/qsslsocket_openssl_symbols_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/network/ssl/qsslsocket_openssl_symbols_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/network/ssl/qsslsocket_openssl_symbols_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -231,6 +231,7 @@ Q_AUTOTEST_EXPORT const BIO_METHOD *q_BIO_s_mem(); int q_DSA_bits(DSA *a); +void q_AUTHORITY_INFO_ACCESS_free(AUTHORITY_INFO_ACCESS *a); int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a); EVP_PKEY_CTX *q_EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); @@ -255,6 +256,8 @@ const SSL_METHOD *q_TLS_server_method(); ASN1_TIME *q_X509_getm_notBefore(X509 *a); ASN1_TIME *q_X509_getm_notAfter(X509 *a); +void q_ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); +void q_X509V3_conf_free(CONF_VALUE *val); Q_AUTOTEST_EXPORT void q_X509_up_ref(X509 *a); long q_X509_get_version(X509 *a); @@ -269,8 +272,8 @@ # define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) -#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_OPENSSL_sk_num)(st) -#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_OPENSSL_sk_value)(st, i) +#define q_SKM_sk_num(st) q_OPENSSL_sk_num((OPENSSL_STACK *)st) +#define q_SKM_sk_value(type, st,i) (type *)q_OPENSSL_sk_value((OPENSSL_STACK *)st, i) #define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ | OPENSSL_INIT_ADD_ALL_DIGESTS \ @@ -279,8 +282,6 @@ | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); -void q_CRYPTO_free(void *str, const char *file, int line); - long q_OpenSSL_version_num(); const char *q_OpenSSL_version(int type); @@ -611,14 +612,14 @@ #define q_BIO_get_mem_data(b, pp) (int)q_BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp) #define q_BIO_pending(b) (int)q_BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) #define q_SSL_CTX_set_mode(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) -#define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num(GENERAL_NAME, (st)) +#define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num((st)) #define q_sk_GENERAL_NAME_value(st, i) q_SKM_sk_value(GENERAL_NAME, (st), (i)) void q_GENERAL_NAME_free(GENERAL_NAME *a); -#define q_sk_X509_num(st) q_SKM_sk_num(X509, (st)) +#define q_sk_X509_num(st) q_SKM_sk_num((st)) #define q_sk_X509_value(st, i) q_SKM_sk_value(X509, (st), (i)) -#define q_sk_SSL_CIPHER_num(st) q_SKM_sk_num(SSL_CIPHER, (st)) +#define q_sk_SSL_CIPHER_num(st) q_SKM_sk_num((st)) #define q_sk_SSL_CIPHER_value(st, i) q_SKM_sk_value(SSL_CIPHER, (st), (i)) #define q_SSL_CTX_add_extra_chain_cert(ctx,x509) \ q_SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509) @@ -747,6 +748,8 @@ void *q_CRYPTO_malloc(size_t num, const char *file, int line); #define q_OPENSSL_malloc(num) q_CRYPTO_malloc(num, "", 0) +void q_CRYPTO_free(void *str, const char *file, int line); +#define q_OPENSSL_free(addr) q_CRYPTO_free(addr, "", 0) int q_SSL_CTX_get_security_level(const SSL_CTX *ctx); void q_SSL_CTX_set_security_level(SSL_CTX *ctx, int level); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/opengl/opengl.pro qtbase-opensource-src-5.15.8+dfsg/src/opengl/opengl.pro --- qtbase-opensource-src-5.15.3+dfsg/src/opengl/opengl.pro 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/opengl/opengl.pro 2022-11-11 15:29:17.000000000 +0800 @@ -55,6 +55,3 @@ } load(qt_module) - -TRACEPOINT_PROVIDER = $$PWD/qtopengl.tracepoints -CONFIG += qt_tracepoints diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/opengl/qgl.cpp qtbase-opensource-src-5.15.8+dfsg/src/opengl/qgl.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/opengl/qgl.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/opengl/qgl.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -493,7 +493,8 @@ retFormat.setSamples(format.samples() == -1 ? 4 : format.samples()); if (format.stencil()) retFormat.setStencilBufferSize(format.stencilBufferSize() == -1 ? 1 : format.stencilBufferSize()); - retFormat.setSwapInterval(format.swapInterval()); + if (format.swapInterval() >= 0) + retFormat.setSwapInterval(format.swapInterval()); retFormat.setStereo(format.stereo()); retFormat.setMajorVersion(format.majorVersion()); retFormat.setMinorVersion(format.minorVersion()); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/opengl/qtopengl.tracepoints qtbase-opensource-src-5.15.8+dfsg/src/opengl/qtopengl.tracepoints --- qtbase-opensource-src-5.15.3+dfsg/src/opengl/qtopengl.tracepoints 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/opengl/qtopengl.tracepoints 1970-01-01 08:00:00.000000000 +0800 @@ -1,3 +0,0 @@ -QOpenGLFramebufferObjectPrivate_init(QOpenGLFramebufferObject *qfbo, const QSize &size, QOpenGLFramebufferObject::Attachment attachment, GLenum texture_target, GLenum internal_format, GLint samples, bool mipmap) -QOpenGL2PaintEngineExPrivate_drawTexture(const QOpenGLRect& dest, const QOpenGLRect& src, const QSize &textureSize, bool opaque, bool pattern) -QOpenGLTextureCache_bindTexture(QOpenGLContext *context, qint64 key, const QImage &image, QOpenGLTextureUploader::BindOptions options) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -536,6 +536,11 @@ } +QFontconfigDatabase::~QFontconfigDatabase() +{ + FcConfigDestroy(FcConfigGetCurrent()); +} + void QFontconfigDatabase::populateFontDatabase() { FcInit(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -61,6 +61,7 @@ class QFontconfigDatabase : public QFreeTypeFontDatabase { public: + ~QFontconfigDatabase() override; void populateFontDatabase() override; void invalidate() override; QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script) override; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -756,7 +756,8 @@ } // underline metrics line_thickness = QFixed::fromFixed(FT_MulFix(face->underline_thickness, face->size->metrics.y_scale)); - underline_position = QFixed::fromFixed(-FT_MulFix(face->underline_position, face->size->metrics.y_scale)); + QFixed center_position = QFixed::fromFixed(-FT_MulFix(face->underline_position, face->size->metrics.y_scale)); + underline_position = center_position - line_thickness / 2; } else { // ad hoc algorithm int score = fontDef.weight * fontDef.pixelSize; @@ -903,7 +904,7 @@ static inline bool areMetricsTooLarge(const QFontEngineFT::GlyphInfo &info) { // false if exceeds QFontEngineFT::Glyph metrics - return info.width > 0xFF || info.height > 0xFF; + return info.width > 0xFF || info.height > 0xFF || info.linearAdvance > 0x7FFF; } static inline void transformBoundingBox(int *left, int *top, int *right, int *bottom, FT_Matrix *matrix) @@ -1051,6 +1052,7 @@ info.height = TRUNC(top - bottom); // If any of the metrics are too large to fit, don't cache them + // Also, avoid integer overflow when linearAdvance is to large to fit in a signed short if (areMetricsTooLarge(info)) return nullptr; @@ -1781,7 +1783,10 @@ glyph_metrics_t QFontEngineFT::alphaMapBoundingBox(glyph_t glyph, QFixed subPixelPosition, const QTransform &matrix, QFontEngine::GlyphFormat format) { - Glyph *g = loadGlyphFor(glyph, subPixelPosition, format, matrix, true); + // When rendering glyphs into a cache via the alphaMap* functions, we disable + // outline drawing. To ensure the bounding box matches the rendered glyph, we + // need to do the same here. + Glyph *g = loadGlyphFor(glyph, subPixelPosition, format, matrix, true, true); glyph_metrics_t overall; if (g) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/fontdatabases/freetype/qfreetypefontdatabase.cpp qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/fontdatabases/freetype/qfreetypefontdatabase.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/fontdatabases/freetype/qfreetypefontdatabase.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/fontdatabases/freetype/qfreetypefontdatabase.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -153,6 +153,7 @@ } } + QFont::Stretch stretch = QFont::Unstretched; TT_OS2 *os2 = (TT_OS2 *)FT_Get_Sfnt_Table(face, ft_sfnt_os2); if (os2) { quint32 unicodeRange[4] = { @@ -191,6 +192,36 @@ else if (w <= 10) weight = QFont::Black; } + + switch (os2->usWidthClass) { + case 1: + stretch = QFont::UltraCondensed; + break; + case 2: + stretch = QFont::ExtraCondensed; + break; + case 3: + stretch = QFont::Condensed; + break; + case 4: + stretch = QFont::SemiCondensed; + break; + case 5: + stretch = QFont::Unstretched; + break; + case 6: + stretch = QFont::SemiExpanded; + break; + case 7: + stretch = QFont::Expanded; + break; + case 8: + stretch = QFont::ExtraExpanded; + break; + case 9: + stretch = QFont::UltraExpanded; + break; + } } QString family = QString::fromLatin1(face->family_name); @@ -198,7 +229,6 @@ fontFile->fileName = QFile::decodeName(file); fontFile->indexValue = index; - QFont::Stretch stretch = QFont::Unstretched; registerFont(family,QString::fromLatin1(face->style_name),QString(),weight,style,stretch,true,true,0,fixedPitch,writingSystems,fontFile); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm --- qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm 2022-11-11 15:29:17.000000000 +0800 @@ -255,13 +255,15 @@ }; QCFType<CFDictionaryRef> allTraits = CTFontCopyTraits(ctfont); - fontDef.weight = QCoreTextFontEngine::qtWeightFromCFWeight(getTraitValue(allTraits, kCTFontWeightTrait)); int slant = static_cast<int>(getTraitValue(allTraits, kCTFontSlantTrait) * 500 + 500); if (slant > 500 && !(traits & kCTFontItalicTrait)) fontDef.style = QFont::StyleOblique; if (fontDef.weight >= QFont::Bold && !(traits & kCTFontBoldTrait) && !qEnvironmentVariableIsSet("QT_NO_SYNTHESIZED_BOLD")) synthesisFlags |= SynthesizedBold; + else + fontDef.weight = QCoreTextFontEngine::qtWeightFromCFWeight(getTraitValue(allTraits, kCTFontWeightTrait)); + // XXX: we probably don't need to synthesis italic for oblique font if (fontDef.style != QFont::StyleNormal && !(traits & kCTFontItalicTrait) && !qEnvironmentVariableIsSet("QT_NO_SYNTHESIZED_ITALIC")) synthesisFlags |= SynthesizedItalic; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1038,7 +1038,9 @@ const QString foundryName; // No such concept. const bool fixed = !(textmetric->tmPitchAndFamily & TMPF_FIXED_PITCH); const bool ttf = (textmetric->tmPitchAndFamily & TMPF_TRUETYPE); - const bool scalable = textmetric->tmPitchAndFamily & (TMPF_VECTOR|TMPF_TRUETYPE); + const bool unreliableTextMetrics = type == 0; + const bool scalable = (textmetric->tmPitchAndFamily & (TMPF_VECTOR|TMPF_TRUETYPE)) + && !unreliableTextMetrics; const int size = scalable ? SMOOTH_SCALABLE : textmetric->tmHeight; const QFont::Style style = textmetric->tmItalic ? QFont::StyleItalic : QFont::StyleNormal; const bool antialias = false; @@ -1717,6 +1719,7 @@ }; static const char *jp_tryFonts [] = { + "Yu Gothic UI", "MS UI Gothic", "Arial", "Gulim", diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -502,6 +502,7 @@ void QWindowsFontEngineDirectWrite::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs, QPainterPath *path, QTextItem::RenderFlags flags) { + Q_UNUSED(flags); QVarLengthArray<UINT16> glyphIndices(nglyphs); QVarLengthArray<DWRITE_GLYPH_OFFSET> glyphOffsets(nglyphs); QVarLengthArray<FLOAT> glyphAdvances(nglyphs); @@ -521,7 +522,7 @@ glyphOffsets.data(), nglyphs, false, - flags & QTextItem::RightToLeft, + false, &geometrySink ); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -138,7 +138,11 @@ qCDebug(qLcEvdevKey, "Opening keyboard at %ls", qUtf16Printable(device)); - QFdContainer fd(qt_safe_open(device.toLocal8Bit().constData(), O_RDONLY | O_NDELAY, 0)); + QFdContainer fd(qt_safe_open(device.toLocal8Bit().constData(), O_RDWR | O_NDELAY, 0)); + if (fd.get() < 0) { + qCDebug(qLcEvdevKey, "Keyboard device could not be opened as read-write, trying read-only"); + fd.reset(qt_safe_open(device.toLocal8Bit().constData(), O_RDONLY | O_NDELAY, 0)); + } if (fd.get() >= 0) { ::ioctl(fd.get(), EVIOCGRAB, grab); if (repeatDelay > 0 && repeatRate > 0) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -143,6 +143,7 @@ int release() noexcept { int result = m_fd; m_fd = -1; return result; } void reset() noexcept; + void reset(int fd) { reset(); m_fd = fd; } }; class QEvdevKeyboardHandler : public QObject diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -756,7 +756,7 @@ if (m_screen) screen = m_screen; } - return QHighDpi::toNativePixels(screen->geometry(), screen); + return screen ? QHighDpi::toNativePixels(screen->geometry(), screen) : QRect(); } void QEvdevTouchScreenData::reportPoints() diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/input/libinput/qlibinputtouch.cpp qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/input/libinput/qlibinputtouch.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/input/libinput/qlibinputtouch.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/input/libinput/qlibinputtouch.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -82,7 +82,7 @@ if (m_screen) screen = m_screen; } - const QRect geom = QHighDpi::toNativePixels(screen->geometry(), screen); + const QRect geom = screen ? QHighDpi::toNativePixels(screen->geometry(), screen) : QRect(); const double x = libinput_event_touch_get_x_transformed(e, geom.width()); const double y = libinput_event_touch_get_y_transformed(e, geom.height()); return geom.topLeft() + QPointF(x, y); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/input/xkbcommon/qxkbcommon.cpp qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/input/xkbcommon/qxkbcommon.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/input/xkbcommon/qxkbcommon.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/input/xkbcommon/qxkbcommon.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -41,7 +41,9 @@ #include <private/qmakearray_p.h> +#include <QtCore/private/qstringiterator_p.h> #include <QtCore/QMetaMethod> + #include <QtGui/QKeyEvent> #include <QtGui/private/qguiapplication_p.h> @@ -574,7 +576,9 @@ // e.g CTRL + ۲ (arabic two), is mapped to CTRL + Qt::Key_2. qtKey = Qt::Key_0 + text.unicode()->digitValue(); } else { - qtKey = text.unicode()->toUpper().unicode(); + text = text.toUpper(); + QStringIterator i(text); + qtKey = i.next(0); } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/linuxaccessibility/application.cpp qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/linuxaccessibility/application.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/linuxaccessibility/application.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/linuxaccessibility/application.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -48,6 +48,8 @@ #include "deviceeventcontroller_adaptor.h" #include "atspi/atspi-constants.h" +#include <xcb/xproto.h> + //#define KEYBOARD_DEBUG QT_BEGIN_NAMESPACE @@ -62,7 +64,7 @@ */ QSpiApplicationAdaptor::QSpiApplicationAdaptor(const QDBusConnection &connection, QObject *parent) - : QObject(parent), dbusConnection(connection), inCapsLock(false) + : QObject(parent), dbusConnection(connection) { } @@ -143,13 +145,9 @@ de.text = QStringLiteral("Escape"); else if (keyEvent->key() == Qt::Key_Space) de.text = QStringLiteral("space"); - else if (keyEvent->key() == Qt::Key_CapsLock) { + else if (keyEvent->key() == Qt::Key_CapsLock) de.text = QStringLiteral("Caps_Lock"); - if (event->type() == QEvent::KeyPress) - inCapsLock = true; - else - inCapsLock = false; - } else if (keyEvent->key() == Qt::Key_NumLock) + else if (keyEvent->key() == Qt::Key_NumLock) de.text = QStringLiteral("Num_Lock"); else if (keyEvent->key() == Qt::Key_Insert) de.text = QStringLiteral("Insert"); @@ -161,9 +159,10 @@ de.isText = !de.text.isEmpty(); de.modifiers = 0; - if (!inCapsLock && keyEvent->modifiers() & Qt::ShiftModifier) + if ((keyEvent->modifiers() & Qt::ShiftModifier) && (keyEvent->key() != Qt::Key_Shift)) de.modifiers |= 1 << ATSPI_MODIFIER_SHIFT; - if (inCapsLock && (keyEvent->key() != Qt::Key_CapsLock)) + // TODO rather introduce Qt::CapslockModifier into KeyboardModifier + if (keyEvent->nativeModifiers() & XCB_MOD_MASK_LOCK ) de.modifiers |= 1 << ATSPI_MODIFIER_SHIFTLOCK; if ((keyEvent->modifiers() & Qt::ControlModifier) && (keyEvent->key() != Qt::Key_Control)) de.modifiers |= 1 << ATSPI_MODIFIER_CONTROL; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/linuxaccessibility/application_p.h qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/linuxaccessibility/application_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/platformsupport/linuxaccessibility/application_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/platformsupport/linuxaccessibility/application_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -90,7 +90,6 @@ QQueue<QPair<QPointer<QObject>, QKeyEvent*> > keyEvents; QDBusConnection dbusConnection; - bool inCapsLock; }; QT_END_NAMESPACE diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -71,10 +71,16 @@ } m_initialized = true; - const char *locale = setlocale(LC_CTYPE, ""); - if (!locale) - locale = setlocale(LC_CTYPE, nullptr); - qCDebug(lcXkbCompose) << "detected locale (LC_CTYPE):" << locale; + // Get locale from user env settings, see also + // https://xkbcommon.org/doc/current/group__compose.html#compose-locale + const char *locale = getenv("LC_ALL"); + if (!locale || !*locale) + locale = getenv("LC_CTYPE"); + if (!locale || !*locale) + locale = getenv("LANG"); + if (!locale || !*locale) + locale = "C"; + qCDebug(lcXkbCompose) << "detected locale:" << locale; m_composeTable = xkb_compose_table_new_from_locale(m_XkbContext, locale, XKB_COMPOSE_COMPILE_NO_FLAGS); if (m_composeTable) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/androidjniinput.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/androidjniinput.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/androidjniinput.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/androidjniinput.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -59,7 +59,6 @@ namespace QtAndroidInput { static bool m_ignoreMouseEvents = false; - static bool m_softwareKeyboardVisible = false; static QRect m_softwareKeyboardRect; static QList<QWindowSystemInterface::TouchPoint> m_touchPoints; @@ -90,8 +89,7 @@ width, height, inputHints, - enterKeyType - ); + enterKeyType); #ifdef QT_DEBUG_ANDROID_IM_PROTOCOL qDebug() << "@@@ SHOWSOFTWAREKEYBOARD" << left << top << width << height << inputHints << enterKeyType; #endif @@ -115,7 +113,7 @@ bool isSoftwareKeyboardVisible() { - return m_softwareKeyboardVisible; + return QJNIObjectPrivate::callStaticMethod<jboolean>(applicationClass(), "isSoftwareKeyboardVisible"); } QRect softwareKeyboardRect() @@ -516,7 +514,7 @@ return Qt::Key_Search; case 0x00000055: // KEYCODE_MEDIA_PLAY_PAUSE - return Qt::Key_MediaPlay; + return Qt::Key_MediaTogglePlayPause; case 0x00000056: // KEYCODE_MEDIA_STOP return Qt::Key_MediaStop; @@ -795,7 +793,6 @@ static void keyboardVisibilityChanged(JNIEnv */*env*/, jobject /*thiz*/, jboolean visibility) { - m_softwareKeyboardVisible = visibility; if (!visibility) m_softwareKeyboardRect = QRect(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/androidjnimain.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/androidjnimain.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/androidjnimain.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/androidjnimain.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -60,10 +60,11 @@ #include "qandroideventdispatcher.h" #include <android/api-level.h> -#include <QtCore/qresource.h> -#include <QtCore/qthread.h> #include <QtCore/private/qjnihelpers_p.h> #include <QtCore/private/qjni_p.h> +#include <QtCore/qbasicatomic.h> +#include <QtCore/qresource.h> +#include <QtCore/qthread.h> #include <QtGui/private/qguiapplication_p.h> #include <QtGui/private/qhighdpiscaling_p.h> @@ -125,6 +126,8 @@ static const char m_classErrorMsg[] = "Can't find class \"%s\""; static const char m_methodErrorMsg[] = "Can't find method \"%s%s\""; +static QBasicAtomicInt startQtAndroidPluginCalled = Q_BASIC_ATOMIC_INITIALIZER(0); + namespace QtAndroid { QBasicMutex *platformInterfaceMutex() @@ -238,6 +241,11 @@ QJNIObjectPrivate::callStaticMethod<void>(m_applicationClass, "notifyObjectFocus","(I)V", accessibilityObjectId); } + void notifyQtAndroidPluginRunning(bool running) + { + QJNIObjectPrivate::callStaticMethod<void>(m_applicationClass, "notifyQtAndroidPluginRunning","(Z)V", running); + } + jobject createBitmap(QImage img, JNIEnv *env) { if (!m_bitmapClass) @@ -533,7 +541,7 @@ QtAndroidPrivate::waitForServiceSetup(); } -static jboolean startQtApplication(JNIEnv */*env*/, jclass /*clazz*/) +static void startQtApplication(JNIEnv */*env*/, jclass /*clazz*/) { { JNIEnv* env = nullptr; @@ -554,6 +562,7 @@ for (int i = 0; i < m_applicationParams.size(); i++) params[i] = static_cast<const char *>(m_applicationParams[i].constData()); + startQtAndroidPluginCalled.fetchAndAddRelease(1); int ret = m_main(m_applicationParams.length(), const_cast<char **>(params.data())); if (m_mainLibraryHnd) { @@ -572,7 +581,8 @@ sem_destroy(&m_exitSemaphore); // We must call exit() to ensure that all global objects will be destructed - exit(ret); + if (!qEnvironmentVariableIsSet("QT_ANDROID_NO_EXIT_CALL")) + exit(ret); } static void quitQtCoreApplication(JNIEnv *env, jclass /*clazz*/) @@ -600,7 +610,9 @@ QAndroidEventDispatcherStopper::instance()->goingToStop(false); } - sem_wait(&m_terminateSemaphore); + if (startQtAndroidPluginCalled.loadAcquire()) + sem_wait(&m_terminateSemaphore); + sem_destroy(&m_terminateSemaphore); env->DeleteGlobalRef(m_applicationClass); @@ -643,11 +655,12 @@ jint widthPixels, jint heightPixels, jint desktopWidthPixels, jint desktopHeightPixels, jdouble xdpi, jdouble ydpi, - jdouble scaledDensity, jdouble density) + jdouble scaledDensity, jdouble density, bool forceUpdate) { // Android does not give us the correct screen size for immersive mode, but // the surface does have the right size + bool updateDesktopSize = m_desktopWidthPixels != desktopWidthPixels; widthPixels = qMax(widthPixels, desktopWidthPixels); heightPixels = qMax(heightPixels, desktopHeightPixels); @@ -668,7 +681,9 @@ m_androidPlatformIntegration->setDisplayMetrics(qRound(double(widthPixels) / xdpi * 25.4), qRound(double(heightPixels) / ydpi * 25.4)); m_androidPlatformIntegration->setScreenSize(widthPixels, heightPixels); - m_androidPlatformIntegration->setDesktopSize(desktopWidthPixels, desktopHeightPixels); + if (updateDesktopSize || forceUpdate) { + m_androidPlatformIntegration->setDesktopSize(desktopWidthPixels, desktopHeightPixels); + } } } @@ -794,7 +809,7 @@ {"quitQtCoreApplication", "()V", (void *)quitQtCoreApplication}, {"terminateQt", "()V", (void *)terminateQt}, {"waitForServiceSetup", "()V", (void *)waitForServiceSetup}, - {"setDisplayMetrics", "(IIIIDDDD)V", (void *)setDisplayMetrics}, + {"setDisplayMetrics", "(IIIIDDDDZ)V", (void *)setDisplayMetrics}, {"setSurface", "(ILjava/lang/Object;II)V", (void *)setSurface}, {"updateWindow", "()V", (void *)updateWindow}, {"updateApplicationState", "(I)V", (void *)updateApplicationState}, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/androidjnimain.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/androidjnimain.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/androidjnimain.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/androidjnimain.h 2022-11-11 15:29:17.000000000 +0800 @@ -98,6 +98,7 @@ void notifyAccessibilityLocationChange(); void notifyObjectHide(uint accessibilityObjectId); void notifyObjectFocus(uint accessibilityObjectId); + void notifyQtAndroidPluginRunning(bool running); const char *classErrorMsgFmt(); const char *methodErrorMsgFmt(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/extract-dummy.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/extract-dummy.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/extract-dummy.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/extract-dummy.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -44,8 +44,3 @@ { return 0; } - -extern "C" JNIEXPORT jintArray JNICALL Java_org_qtproject_qt5_android_ExtractStyle_extractChunkInfo20(JNIEnv *, jobject, jbyteArray) -{ - return 0; -} diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/extract.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/extract.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/extract.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/extract.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1,5 +1,6 @@ /**************************************************************************** ** +** Copyright (C) 2021 The Qt Company Ltd. ** Copyright (C) 2014 BogDan Vatra <bogdan@kde.org> ** Contact: https://www.qt.io/licensing/ ** @@ -123,20 +124,6 @@ return result; } -extern "C" JNIEXPORT jintArray JNICALL Java_org_qtproject_qt5_android_ExtractStyle_extractChunkInfo20(JNIEnv * env, jobject obj, jbyteArray chunkObj) -{ - size_t chunkSize = env->GetArrayLength(chunkObj); - void* storage = alloca(chunkSize); - env->GetByteArrayRegion(chunkObj, 0, chunkSize, - reinterpret_cast<jbyte*>(storage)); - - if (!env->ExceptionCheck()) - return Java_org_qtproject_qt5_android_ExtractStyle_extractNativeChunkInfo20(env, obj, long(storage)); - else - env->ExceptionClear(); - return 0; -} - static inline void fill9patchOffsets(Res_png_9patch20* patch) { patch->xDivsOffset = sizeof(Res_png_9patch20); patch->yDivsOffset = patch->xDivsOffset + (patch->numXDivs * sizeof(int32_t)); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/qandroidinputcontext.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/qandroidinputcontext.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/qandroidinputcontext.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/qandroidinputcontext.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -47,6 +47,7 @@ #include "qandroideventdispatcher.h" #include "androiddeadlockprotector.h" #include "qandroidplatformintegration.h" +#include <private/qhighdpiscaling_p.h> #include <QDebug> #include <qevent.h> #include <qguiapplication.h> @@ -94,6 +95,7 @@ static QAndroidInputContext *m_androidInputContext = 0; static char const *const QtNativeInputConnectionClassName = "org/qtproject/qt5/android/QtNativeInputConnection"; static char const *const QtExtractedTextClassName = "org/qtproject/qt5/android/QtExtractedText"; +static char const *const QtObjectType = "QDialog"; static jclass m_extractedTextClass = 0; static jmethodID m_classConstructorMethodID = 0; static jfieldID m_partialEndOffsetFieldID = 0; @@ -645,7 +647,7 @@ } auto curRect = im->cursorRectangle(); - QPoint cursorPoint = qGuiApp->focusWindow()->mapToGlobal(QPoint(curRect.x() + (curRect.width() / 2), curRect.y() + curRect.height())); + QPoint cursorPoint(window->mapToGlobal(QPoint(curRect.x() + (curRect.width() / 2), curRect.y() + curRect.height()))); QPoint editMenuPoint(cursorPoint.x(), cursorPoint.y()); m_handleMode &= ShowEditPopup; m_handleMode |= ShowCursor; @@ -665,10 +667,12 @@ if (cpos > anchor) std::swap(leftRect, rightRect); - QPoint leftPoint(leftRect.bottomLeft().toPoint() * pixelDensity); - QPoint righPoint(rightRect.bottomRight().toPoint() * pixelDensity); - QPoint editPoint(leftRect.united(rightRect).topLeft().toPoint() * pixelDensity); - QtAndroidInput::updateHandles(m_handleMode, editPoint, EditContext::AllButtons, leftPoint, righPoint, + QPoint leftPoint(window->mapToGlobal(leftRect.bottomLeft().toPoint())); + QPoint righPoint(window->mapToGlobal(rightRect.bottomRight().toPoint())); + QPoint editPoint(window->mapToGlobal(leftRect.united(rightRect) + .topLeft().toPoint())); + QtAndroidInput::updateHandles(m_handleMode, editPoint * pixelDensity, EditContext::AllButtons, + leftPoint * pixelDensity, righPoint * pixelDensity, query.value(Qt::ImCurrentSelection).toString().isRightToLeft()); m_hideCursorHandleTimer.stop(); } @@ -692,7 +696,17 @@ double pixelDensity = window ? QHighDpiScaling::factor(window) : QHighDpiScaling::factor(QtAndroid::androidPlatformIntegration()->screen()); - QPointF point(x / pixelDensity, y / pixelDensity); + auto object = m_focusObject->parent(); + int dialogMoveX = 0; + while (object) { + if (QString::compare(object->metaObject()->className(), + QtObjectType, Qt::CaseInsensitive) == 0) { + dialogMoveX += object->property("x").toInt(); + } + object = object->parent(); + }; + + QPointF point((x / pixelDensity) - dialogMoveX, y / pixelDensity); point.setY(point.y() - leftRect.width() / 2); QInputMethodQueryEvent query(Qt::ImCursorPosition | Qt::ImAnchorPosition @@ -1195,13 +1209,21 @@ m_composingCursor = -1; - // Moving Qt's cursor to where the preedit cursor used to be - QList<QInputMethodEvent::Attribute> attributes; - attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Selection, localCursorPos, 0)); - - QInputMethodEvent event(QString(), attributes); - event.setCommitString(m_composingText); - sendInputMethodEvent(&event); + { + // commit the composing test + QList<QInputMethodEvent::Attribute> attributes; + QInputMethodEvent event(QString(), attributes); + event.setCommitString(m_composingText); + sendInputMethodEvent(&event); + } + { + // Moving Qt's cursor to where the preedit cursor used to be + QList<QInputMethodEvent::Attribute> attributes; + attributes.append( + QInputMethodEvent::Attribute(QInputMethodEvent::Selection, localCursorPos, 0)); + QInputMethodEvent event(QString(), attributes); + sendInputMethodEvent(&event); + } return true; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/qandroidplatformfiledialoghelper.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -45,6 +45,7 @@ #include <QMimeType> #include <QMimeDatabase> #include <QRegularExpression> +#include <QUrl> QT_BEGIN_NAMESPACE @@ -118,7 +119,7 @@ uri.object(), modeFlags); } -void QAndroidPlatformFileDialogHelper::setIntentTitle(const QString &title) +void QAndroidPlatformFileDialogHelper::setInitialFileName(const QString &title) { const QJNIObjectPrivate extraTitle = QJNIObjectPrivate::getStaticObjectField( JniIntentClass, "EXTRA_TITLE", "Ljava/lang/String;"); @@ -147,10 +148,10 @@ { QStringList ret; #if QT_CONFIG(regularexpression) - QRegularExpression re("(\\*\\.?\\w*)"); + QRegularExpression re("(\\*\\.[a-z .]+)"); QRegularExpressionMatchIterator i = re.globalMatch(nameFilters); while (i.hasNext()) - ret << i.next().captured(1); + ret << i.next().captured(1).trimmed(); #endif // QT_CONFIG(regularexpression) ret.removeAll("*"); return ret; @@ -159,23 +160,24 @@ void QAndroidPlatformFileDialogHelper::setMimeTypes() { QStringList mimeTypes = options()->mimeTypeFilters(); - const QString nameFilter = options()->initiallySelectedNameFilter(); + const QStringList nameFilters = options()->nameFilters(); + const QString nameFilter = nameFilters.isEmpty() ? QString() : nameFilters.first(); - if (mimeTypes.isEmpty() && !nameFilter.isEmpty()) { + if (!nameFilter.isEmpty()) { QMimeDatabase db; for (const QString &filter : nameFilterExtensions(nameFilter)) - mimeTypes.append(db.mimeTypeForFile(filter).name()); + mimeTypes.append(db.mimeTypeForFile(filter, QMimeDatabase::MatchExtension).name()); } - QString type = !mimeTypes.isEmpty() ? mimeTypes.at(0) : QLatin1String("*/*"); + const QString initialType = mimeTypes.size() == 1 ? mimeTypes.at(0) : QLatin1String("*/*"); m_intent.callObjectMethod("setType", "(Ljava/lang/String;)Landroid/content/Intent;", - QJNIObjectPrivate::fromString(type).object()); + QJNIObjectPrivate::fromString(initialType).object()); if (!mimeTypes.isEmpty()) { const QJNIObjectPrivate extraMimeType = QJNIObjectPrivate::getStaticObjectField( JniIntentClass, "EXTRA_MIME_TYPES", "Ljava/lang/String;"); - QJNIObjectPrivate mimeTypesArray = QJNIObjectPrivate::callStaticObjectMethod( + const QJNIObjectPrivate mimeTypesArray = QJNIObjectPrivate::callStaticObjectMethod( "org/qtproject/qt5/android/QtNative", "getStringArray", "(Ljava/lang/String;)[Ljava/lang/String;", @@ -207,6 +209,12 @@ if (options()->acceptMode() == QFileDialogOptions::AcceptSave) { m_intent = getFileDialogIntent("ACTION_CREATE_DOCUMENT"); + const QList<QUrl> selectedFiles = options()->initiallySelectedFiles(); + if (selectedFiles.size() > 0) { + // TODO: The initial folder to show at the start should be handled by EXTRA_INITIAL_URI + // Take only the file name. + setInitialFileName(selectedFiles.first().fileName()); + } } else if (options()->acceptMode() == QFileDialogOptions::AcceptOpen) { switch (options()->fileMode()) { case QFileDialogOptions::FileMode::DirectoryOnly: @@ -230,8 +238,6 @@ setMimeTypes(); } - setIntentTitle(options()->windowTitle()); - QtAndroidPrivate::registerActivityResultListener(this); m_activity.callMethod<void>("startActivityForResult", "(Landroid/content/Intent;I)V", m_intent.object(), REQUEST_CODE); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/qandroidplatformfiledialoghelper.h 2022-11-11 15:29:17.000000000 +0800 @@ -75,7 +75,7 @@ private: QJNIObjectPrivate getFileDialogIntent(const QString &intentType); void takePersistableUriPermission(const QJNIObjectPrivate &uri); - void setIntentTitle(const QString &title); + void setInitialFileName(const QString &title); void setOpenableCategory(); void setAllowMultipleSelections(bool allowMultiple); void setMimeTypes(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/qandroidplatformintegration.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/qandroidplatformintegration.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/qandroidplatformintegration.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/qandroidplatformintegration.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -90,6 +90,7 @@ Qt::ScreenOrientation QAndroidPlatformIntegration::m_nativeOrientation = Qt::PrimaryOrientation; bool QAndroidPlatformIntegration::m_showPasswordEnabled = false; +static bool m_running = false; void *QAndroidPlatformNativeInterface::nativeResourceForIntegration(const QByteArray &resource) { @@ -158,6 +159,10 @@ api->accessibility()->setActive(QtAndroidAccessibility::isActive()); #endif // QT_NO_ACCESSIBILITY + if (!m_running) { + m_running = true; + QtAndroid::notifyQtAndroidPluginRunning(m_running); + } api->flushPendingUpdates(); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/qandroidplatformscreen.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/qandroidplatformscreen.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/qandroidplatformscreen.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/qandroidplatformscreen.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -303,7 +303,7 @@ return m_rasterSurfaces; } -void QAndroidPlatformScreen::doRedraw() +void QAndroidPlatformScreen::doRedraw(QImage* screenGrabImage) { PROFILE_SCOPE; if (!QtAndroid::activity()) @@ -358,15 +358,14 @@ } int bpp = 4; - QImage::Format format = QImage::Format_RGBA8888_Premultiplied; if (nativeWindowBuffer.format == WINDOW_FORMAT_RGB_565) { bpp = 2; - format = QImage::Format_RGB16; + m_pixelFormat = QImage::Format_RGB16; } QImage screenImage(reinterpret_cast<uchar *>(nativeWindowBuffer.bits) , nativeWindowBuffer.width, nativeWindowBuffer.height - , nativeWindowBuffer.stride * bpp , format); + , nativeWindowBuffer.stride * bpp , m_pixelFormat); QPainter compositePainter(&screenImage); compositePainter.setCompositionMode(QPainter::CompositionMode_Source); @@ -399,6 +398,31 @@ ret = ANativeWindow_unlockAndPost(m_nativeSurface); if (ret >= 0) m_dirtyRect = QRect(); + + if (screenGrabImage) { + if (screenGrabImage->size() != screenImage.size()) { + uchar* bytes = static_cast<uchar*>(malloc(screenImage.height() * screenImage.bytesPerLine())); + *screenGrabImage = QImage(bytes, screenImage.width(), screenImage.height(), + screenImage.bytesPerLine(), m_pixelFormat, + [](void* ptr){ if (ptr) free (ptr);}); + } + memcpy(screenGrabImage->bits(), + screenImage.bits(), + screenImage.bytesPerLine() * screenImage.height()); + } + m_repaintOccurred = true; +} + +QPixmap QAndroidPlatformScreen::doScreenShot(QRect grabRect) +{ + if (!m_repaintOccurred) + return QPixmap::fromImage(m_lastScreenshot.copy(grabRect)); + QRect tmp = m_dirtyRect; + m_dirtyRect = geometry(); + doRedraw(&m_lastScreenshot); + m_dirtyRect = tmp; + m_repaintOccurred = false; + return QPixmap::fromImage(m_lastScreenshot.copy(grabRect)); } static const int androidLogicalDpi = 72; @@ -446,4 +470,44 @@ } } +/*! + This function is called when Qt needs to be able to grab the content of a window. + + Returns the content of the window specified with the WId handle within the boundaries of + QRect(x, y, width, height). +*/ +QPixmap QAndroidPlatformScreen::grabWindow(WId window, int x, int y, int width, int height) const +{ + QRectF screenshotRect(x, y, width, height); + QWindow* wnd = 0; + if (window) + { + const auto windowList = qApp->allWindows(); + for (QWindow *w : windowList) + if (w->winId() == window) { + wnd = w; + break; + } + } + if (wnd) { + const qreal factor = logicalDpi().first / androidLogicalDpi; //HighDPI factor; + QRectF wndRect = wnd->geometry(); + if (wnd->parent()) + wndRect.moveTopLeft(wnd->parent()->mapToGlobal(wndRect.topLeft().toPoint())); + if (!qFuzzyCompare(factor, 1)) + wndRect = QRectF(wndRect.left() * factor, wndRect.top() * factor, + wndRect.width() * factor, wndRect.height() * factor); + + if (!screenshotRect.isEmpty()) { + screenshotRect.moveTopLeft(wndRect.topLeft() + screenshotRect.topLeft()); + screenshotRect = screenshotRect.intersected(wndRect); + } else { + screenshotRect = wndRect; + } + } else { + screenshotRect = screenshotRect.isValid() ? screenshotRect : geometry(); + } + return const_cast<QAndroidPlatformScreen *>(this)->doScreenShot(screenshotRect.toRect()); +} + QT_END_NAMESPACE diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/qandroidplatformscreen.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/qandroidplatformscreen.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/android/qandroidplatformscreen.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/android/qandroidplatformscreen.h 2022-11-11 15:29:17.000000000 +0800 @@ -106,12 +106,14 @@ QDpi logicalBaseDpi() const override; Qt::ScreenOrientation orientation() const override; Qt::ScreenOrientation nativeOrientation() const override; + QPixmap grabWindow(WId window, int x, int y, int width, int height) const override; void surfaceChanged(JNIEnv *env, jobject surface, int w, int h) override; void releaseSurface(); void applicationStateChanged(Qt::ApplicationState); + QPixmap doScreenShot(QRect grabRect = QRect()); private slots: - void doRedraw(); + void doRedraw(QImage *screenGrabImage = nullptr); private: int m_id = -1; @@ -119,6 +121,10 @@ ANativeWindow* m_nativeSurface = nullptr; QWaitCondition m_surfaceWaitCondition; QSize m_size; + + QImage m_lastScreenshot; + QImage::Format m_pixelFormat = QImage::Format_RGBA8888_Premultiplied; + bool m_repaintOccurred = false; }; QT_END_NAMESPACE diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm 2022-11-11 15:29:17.000000000 +0800 @@ -246,7 +246,7 @@ return iface->text(QAccessible::Name).toNSString(); } -- (BOOL) accessibilityEnabledAttribute { +- (BOOL) isAccessibilityEnabled { QAccessibleInterface *iface = QAccessible::accessibleInterface(axid); if (!iface || !iface->isValid()) return false; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm 2022-11-11 15:29:17.000000000 +0800 @@ -324,9 +324,9 @@ bool show(Qt::WindowModality windowModality, QWindow *parent) { Q_UNUSED(parent); - if (windowModality != Qt::WindowModal) + if (windowModality != Qt::ApplicationModal) [mDelegate showModelessPanel]; - // no need to show a Qt::WindowModal dialog here, because it's necessary to call exec() in that case + // no need to show a Qt::ApplicationModal dialog here, because it will be shown in runApplicationModalPanel return true; } @@ -390,9 +390,8 @@ bool QCocoaColorDialogHelper::show(Qt::WindowFlags, Qt::WindowModality windowModality, QWindow *parent) { - if (windowModality == Qt::WindowModal) - windowModality = Qt::ApplicationModal; - + if (windowModality == Qt::ApplicationModal) + windowModality = Qt::WindowModal; // Workaround for Apple rdar://25792119: If you invoke // -setShowsAlpha: multiple times before showing the color // picker, its height grows irrevocably. Instead, only diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm 2022-11-11 15:29:17.000000000 +0800 @@ -314,9 +314,9 @@ bool show(Qt::WindowModality windowModality, QWindow *parent) { Q_UNUSED(parent); - if (windowModality != Qt::WindowModal) + if (windowModality != Qt::ApplicationModal) [mDelegate showModelessPanel]; - // no need to show a Qt::WindowModal dialog here, because it's necessary to call exec() in that case + // no need to show a Qt::ApplicationModal dialog here, because it will be shown in runApplicationModalPanel return true; } @@ -380,8 +380,8 @@ bool QCocoaFontDialogHelper::show(Qt::WindowFlags, Qt::WindowModality windowModality, QWindow *parent) { - if (windowModality == Qt::WindowModal) - windowModality = Qt::ApplicationModal; + if (windowModality == Qt::ApplicationModal) + windowModality = Qt::WindowModal; sharedFontPanel()->init(this); return sharedFontPanel()->show(windowModality, parent); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoamenu.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoamenu.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoamenu.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoamenu.mm 2022-11-11 15:29:17.000000000 +0800 @@ -290,27 +290,26 @@ QMacAutoReleasePool pool; if (enable) { bool previousIsSeparator = true; // setting to true kills all the separators placed at the top. - NSMenuItem *previousItem = nil; + NSMenuItem *lastVisibleItem = nil; for (NSMenuItem *item in m_nativeMenu.itemArray) { if (item.separatorItem) { + // hide item if previous was a separator, or if it's explicitly hidden + bool hideItem = previousIsSeparator; if (auto *cocoaItem = qt_objc_cast<QCocoaNSMenuItem *>(item).platformMenuItem) - cocoaItem->setVisible(!previousIsSeparator); - item.hidden = previousIsSeparator; + hideItem = previousIsSeparator || !cocoaItem->isVisible(); + item.hidden = hideItem; } if (!item.hidden) { - previousItem = item; - previousIsSeparator = previousItem.separatorItem; + lastVisibleItem = item; + previousIsSeparator = lastVisibleItem.separatorItem; } } // We now need to check the final item since we don't want any separators at the end of the list. - if (previousItem && previousIsSeparator) { - if (auto *cocoaItem = qt_objc_cast<QCocoaNSMenuItem *>(previousItem).platformMenuItem) - cocoaItem->setVisible(false); - previousItem.hidden = YES; - } + if (lastVisibleItem && lastVisibleItem.separatorItem) + lastVisibleItem.hidden = YES; } else { for (auto *item : qAsConst(m_menuItems)) { if (!item->isSeparator()) @@ -351,6 +350,17 @@ NSView *view = cocoaWindow ? cocoaWindow->view() : nil; NSMenuItem *nsItem = item ? ((QCocoaMenuItem *)item)->nsItem() : nil; + // store the window that this popup belongs to so that we can evaluate whether we are modally blocked + bool resetMenuParent = false; + if (!menuParent()) { + setMenuParent(cocoaWindow); + resetMenuParent = true; + } + auto menuParentGuard = qScopeGuard([&]{ + if (resetMenuParent) + setMenuParent(nullptr); + }); + QScreen *screen = nullptr; if (parentWindow) screen = parentWindow->screen(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoamenuitem.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoamenuitem.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoamenuitem.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoamenuitem.h 2022-11-11 15:29:17.000000000 +0800 @@ -117,6 +117,7 @@ inline bool isMerged() const { return m_merged; } inline bool isEnabled() const { return m_enabled && m_parentEnabled; } inline bool isSeparator() const { return m_isSeparator; } + inline bool isVisible() const { return m_isVisible; } QCocoaMenu *menu() const { return m_menu; } MenuRole effectiveRole() const; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoamenuitem.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoamenuitem.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoamenuitem.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoamenuitem.mm 2022-11-11 15:29:17.000000000 +0800 @@ -300,8 +300,7 @@ while (depth < 3 && p && !(menubar = qobject_cast<QCocoaMenuBar *>(p))) { ++depth; QCocoaMenuObject *menuObject = dynamic_cast<QCocoaMenuObject *>(p); - Q_ASSERT(menuObject); - p = menuObject->menuParent(); + p = menuObject ? menuObject->menuParent() : nullptr; } if (menubar && depth < 3) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoascreen.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoascreen.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoascreen.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoascreen.h 2022-11-11 15:29:17.000000000 +0800 @@ -45,6 +45,7 @@ #include "qcocoacursor.h" #include <qpa/qplatformintegration.h> +#include <QtCore/private/qcore_mac_p.h> QT_BEGIN_NAMESPACE @@ -96,8 +97,8 @@ static void updateScreens(); static void cleanupScreens(); - static bool updateScreensIfNeeded(); - static NSArray *s_screenConfigurationBeforeUpdate; + static QMacNotificationObserver s_screenParameterObserver; + static CGDisplayReconfigurationCallBack s_displayReconfigurationCallBack; static void add(CGDirectDisplayID displayId); QCocoaScreen(CGDirectDisplayID displayId); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoascreen.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoascreen.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoascreen.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoascreen.mm 2022-11-11 15:29:17.000000000 +0800 @@ -72,91 +72,33 @@ Q_ENUM_NS(DisplayChange) } -NSArray *QCocoaScreen::s_screenConfigurationBeforeUpdate = nil; +QMacNotificationObserver QCocoaScreen::s_screenParameterObserver; +CGDisplayReconfigurationCallBack QCocoaScreen::s_displayReconfigurationCallBack = nullptr; void QCocoaScreen::initializeScreens() { updateScreens(); - CGDisplayRegisterReconfigurationCallback([](CGDirectDisplayID displayId, CGDisplayChangeSummaryFlags flags, void *userInfo) { + s_displayReconfigurationCallBack = [](CGDirectDisplayID displayId, CGDisplayChangeSummaryFlags flags, void *userInfo) { Q_UNUSED(userInfo); - // Displays are reconfigured in batches, and we want to update our screens - // once a batch ends, so that all the states of the displays are up to date. - static int displayReconfigurationsInProgress = 0; - const bool beforeReconfigure = flags & kCGDisplayBeginConfigurationFlag; - qCDebug(lcQpaScreen).verbosity(0).nospace() << "Display " << displayId - << (beforeReconfigure ? " about to reconfigure" : " was ") - << QFlags<CoreGraphics::DisplayChange>(flags) - << " with " << displayReconfigurationsInProgress - << " display configuration(s) in progress"; - - if (!flags) { - // CGDisplayRegisterReconfigurationCallback has been observed to be called - // with flags unset. This seems like a bug. The callback is not paired with - // a matching "completion" callback either, so we don't know whether to treat - // it as a begin or end of reconfigure. - return; - } - - if (beforeReconfigure) { - if (!displayReconfigurationsInProgress++) { - // There might have been a screen reconfigure before this that - // we didn't process yet, so do that now if that's the case. - updateScreensIfNeeded(); - - Q_ASSERT(!s_screenConfigurationBeforeUpdate); - s_screenConfigurationBeforeUpdate = NSScreen.screens; - qCDebug(lcQpaScreen, "Display reconfigure transaction started" - " with screen configuration %p", s_screenConfigurationBeforeUpdate); - - static void (^tryScreenUpdate)(); - tryScreenUpdate = ^void () { - qCDebug(lcQpaScreen) << "Attempting screen update from runloop block"; - if (!updateScreensIfNeeded()) - CFRunLoopPerformBlock(CFRunLoopGetMain(), kCFRunLoopCommonModes, tryScreenUpdate); - }; - CFRunLoopPerformBlock(CFRunLoopGetMain(), kCFRunLoopCommonModes, tryScreenUpdate); - } - } else { - Q_ASSERT_X(displayReconfigurationsInProgress, "QCococaScreen", - "Display configuration transactions are expected to be balanced"); - - if (!--displayReconfigurationsInProgress) { - qCDebug(lcQpaScreen) << "Display reconfigure transaction completed"; - // We optimistically update now, in case the NSScreens have changed - updateScreensIfNeeded(); - } - } - }, nullptr); + qCDebug(lcQpaScreen).verbosity(0) << "Display" << displayId + << (beforeReconfigure ? "beginning" : "finished") << "reconfigure" + << QFlags<CoreGraphics::DisplayChange>(flags); + + if (!beforeReconfigure) + updateScreens(); + }; + CGDisplayRegisterReconfigurationCallback(s_displayReconfigurationCallBack, nullptr); - static QMacNotificationObserver screenParameterObserver(NSApplication.sharedApplication, + s_screenParameterObserver = QMacNotificationObserver(NSApplication.sharedApplication, NSApplicationDidChangeScreenParametersNotification, [&]() { qCDebug(lcQpaScreen) << "Received screen parameter change notification"; - updateScreensIfNeeded(); // As a last resort we update screens here + updateScreens(); }); } -bool QCocoaScreen::updateScreensIfNeeded() -{ - if (!s_screenConfigurationBeforeUpdate) { - qCDebug(lcQpaScreen) << "QScreens have already been updated, all good"; - return true; - } - - if (s_screenConfigurationBeforeUpdate == NSScreen.screens) { - qCDebug(lcQpaScreen) << "Still waiting for NSScreen configuration change"; - return false; - } - - qCDebug(lcQpaScreen, "NSScreen configuration changed to %p", NSScreen.screens); - updateScreens(); - - s_screenConfigurationBeforeUpdate = nil; - return true; -} - /* Update the list of available QScreens, and the properties of existing screens. @@ -239,6 +181,12 @@ // Remove screens in reverse order to avoid crash in case of multiple screens for (QScreen *screen : backwards(QGuiApplication::screens())) static_cast<QCocoaScreen*>(screen->handle())->remove(); + + Q_ASSERT(s_displayReconfigurationCallBack); + CGDisplayRemoveReconfigurationCallback(s_displayReconfigurationCallBack, nullptr); + s_displayReconfigurationCallBack = nullptr; + + s_screenParameterObserver.remove(); } void QCocoaScreen::remove() @@ -310,15 +258,18 @@ Q_ASSERT(isOnline()); + // Some properties are only available via NSScreen + NSScreen *nsScreen = nativeScreen(); + if (!nsScreen) { + qCDebug(lcQpaScreen) << "Corresponding NSScreen not yet available. Deferring update"; + return; + } + const QRect previousGeometry = m_geometry; const QRect previousAvailableGeometry = m_availableGeometry; const QDpi previousLogicalDpi = m_logicalDpi; const qreal previousRefreshRate = m_refreshRate; - // Some properties are only available via NSScreen - NSScreen *nsScreen = nativeScreen(); - Q_ASSERT(nsScreen); - // The reference screen for the geometry is always the primary screen QRectF primaryScreenGeometry = QRectF::fromCGRect(CGDisplayBounds(CGMainDisplayID())); m_geometry = qt_mac_flip(QRectF::fromCGRect(nsScreen.frame), primaryScreenGeometry).toRect(); @@ -714,13 +665,17 @@ QCocoaScreen *QCocoaScreen::get(NSScreen *nsScreen) { - if (s_screenConfigurationBeforeUpdate) { - qCWarning(lcQpaScreen) << "Trying to resolve screen while waiting for screen reconfigure!"; - if (!updateScreensIfNeeded()) - qCWarning(lcQpaScreen) << "Failed to do last minute screen update. Expect crashes."; + auto displayId = nsScreen.qt_displayId; + auto *cocoaScreen = get(displayId); + if (!cocoaScreen) { + qCWarning(lcQpaScreen) << "Failed to map" << nsScreen + << "to QCocoaScreen. Doing last minute update."; + updateScreens(); + cocoaScreen = get(displayId); + if (!cocoaScreen) + qCWarning(lcQpaScreen) << "Last minute update failed!"; } - - return get(nsScreen.qt_displayId); + return cocoaScreen; } QCocoaScreen *QCocoaScreen::get(CGDirectDisplayID displayId) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoawindow.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoawindow.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoawindow.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoawindow.h 2022-11-11 15:29:17.000000000 +0800 @@ -56,6 +56,8 @@ #include <MoltenVK/mvk_vulkan.h> #endif +#include <QHash> + QT_BEGIN_NAMESPACE #ifndef QT_NO_DEBUG_STREAM diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoawindow.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoawindow.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qcocoawindow.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qcocoawindow.mm 2022-11-11 15:29:17.000000000 +0800 @@ -367,12 +367,18 @@ if (window()->windowState() != Qt::WindowMinimized) { if (parentCocoaWindow && (window()->modality() == Qt::WindowModal || window()->type() == Qt::Sheet)) { // Show the window as a sheet - [parentCocoaWindow->nativeWindow() beginSheet:m_view.window completionHandler:nil]; + NSWindow *nativeParentWindow = parentCocoaWindow->nativeWindow(); + if (!nativeParentWindow.attachedSheet) + [nativeParentWindow beginSheet:m_view.window completionHandler:nil]; + else + [nativeParentWindow beginCriticalSheet:m_view.window completionHandler:nil]; } else if (window()->modality() == Qt::ApplicationModal) { // Show the window as application modal eventDispatcher()->beginModalSession(window()); } else if (m_view.window.canBecomeKeyWindow) { - bool shouldBecomeKeyNow = !NSApp.modalWindow || m_view.window.worksWhenModal; + bool shouldBecomeKeyNow = !NSApp.modalWindow + || m_view.window.worksWhenModal + || !NSApp.modalWindow.visible; // Panels with becomesKeyOnlyIfNeeded set should not activate until a view // with needsPanelToBecomeKey, for example a line edit, is clicked. @@ -522,7 +528,10 @@ NSUInteger styleMask = (frameless || !resizable) ? NSWindowStyleMaskBorderless : NSWindowStyleMaskResizable; if (frameless) { - // No further customizations for frameless since there are no window decorations. + // Frameless windows do not display the traffic lights buttons for + // e.g. minimize, however StyleMaskMiniaturizable is required to allow + // programmatic minimize. + styleMask |= NSWindowStyleMaskMiniaturizable; } else if (flags & Qt::CustomizeWindowHint) { if (flags & Qt::WindowTitleHint) styleMask |= NSWindowStyleMaskTitled; @@ -545,9 +554,11 @@ if (m_drawContentBorderGradient) styleMask |= NSWindowStyleMaskTexturedBackground; - // Don't wipe fullscreen state + // Don't wipe existing states if (m_view.window.styleMask & NSWindowStyleMaskFullScreen) styleMask |= NSWindowStyleMaskFullScreen; + if (m_view.window.styleMask & NSWindowStyleMaskFullSizeContentView) + styleMask |= NSWindowStyleMaskFullSizeContentView; return styleMask; } @@ -1265,11 +1276,15 @@ return; // Note: When a window is resized to 0x0 Cocoa will report the window's screen as nil - auto *currentScreen = QCocoaScreen::get(m_view.window.screen); + NSScreen *nsScreen = m_view.window.screen; + + qCDebug(lcQpaWindow) << window() << "did change" << nsScreen; + QCocoaScreen::updateScreens(); + auto *previousScreen = static_cast<QCocoaScreen*>(screen()); + auto *currentScreen = QCocoaScreen::get(nsScreen); - Q_ASSERT_X(!m_view.window.screen || currentScreen, - "QCocoaWindow", "Failed to get QCocoaScreen for NSScreen"); + qCDebug(lcQpaWindow) << "Screen changed for" << window() << "from" << previousScreen << "to" << currentScreen; // Note: The previous screen may be the same as the current screen, either because // a) the screen was just reconfigured, which still results in AppKit sending an @@ -1282,7 +1297,6 @@ // device-pixel ratio may have changed, and needs to be delivered to all // windows, both top level and child windows. - qCDebug(lcQpaWindow) << "Screen changed for" << window() << "from" << previousScreen << "to" << currentScreen; QWindowSystemInterface::handleWindowScreenChanged<QWindowSystemInterface::SynchronousDelivery>( window(), currentScreen ? currentScreen->screen() : nullptr); @@ -1307,10 +1321,19 @@ bool QCocoaWindow::windowShouldClose() { qCDebug(lcQpaWindow) << "QCocoaWindow::windowShouldClose" << window(); + // This callback should technically only determine if the window // should (be allowed to) close, but since our QPA API to determine // that also involves actually closing the window we do both at the // same time, instead of doing the latter in windowWillClose. + + // If the window is closed, we will release and deallocate the NSWindow. + // But frames higher up in the stack might still expect the window to + // be alive, since the windowShouldClose: callback is technically only + // supposed to answer YES or NO. To ensure the window is still alive + // we put an autorelease in the closest pool (typically the runloop). + [[m_view.window retain] autorelease]; + return QWindowSystemInterface::handleCloseEvent<QWindowSystemInterface::SynchronousDelivery>(window()); } @@ -1714,6 +1737,20 @@ view.cursor = cursor; [m_view.window invalidateCursorRectsForView:m_view]; + + // There's a bug in AppKit where calling invalidateCursorRectsForView when + // there's an override cursor active (for example when hovering over the + // window frame), will not result in a cursorUpdate: callback. To work around + // this we synthesize a cursor update event and call the callback ourselves, + // if we detect that the mouse is currently over the view. + auto locationInWindow = m_view.window.mouseLocationOutsideOfEventStream; + auto locationInSuperview = [m_view.superview convertPoint:locationInWindow fromView:nil]; + if ([m_view hitTest:locationInSuperview] == m_view) { + [m_view cursorUpdate:[NSEvent enterExitEventWithType:NSEventTypeCursorUpdate + location:locationInWindow modifierFlags:0 timestamp:0 + windowNumber:m_view.window.windowNumber context:nil + eventNumber:0 trackingNumber:0 userData:0]]; + } } void QCocoaWindow::registerTouch(bool enable) @@ -1866,7 +1903,7 @@ // This function speaks up if there's any reason // to refuse key window or first responder state. - if (window()->flags() & Qt::WindowDoesNotAcceptFocus) + if (window()->flags() & (Qt::WindowDoesNotAcceptFocus | Qt::WindowTransparentForInput)) return true; if (m_inSetVisible) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h 2022-11-11 15:29:17.000000000 +0800 @@ -43,6 +43,8 @@ #include <qpa/qplatformgraphicsbuffer.h> #include <private/qcore_mac_p.h> +#include <CoreGraphics/CGColorSpace.h> + QT_BEGIN_NAMESPACE class QIOSurfaceGraphicsBuffer : public QPlatformGraphicsBuffer diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qnsview.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qnsview.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qnsview.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qnsview.h 2022-11-11 15:29:17.000000000 +0800 @@ -61,6 +61,7 @@ @interface QNSView (MouseAPI) - (void)handleFrameStrutMouseEvent:(NSEvent *)theEvent; +- (bool)closePopups:(NSEvent *)theEvent; - (void)resetMouseButtons; @end diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qnsview_dragging.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qnsview_dragging.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qnsview_dragging.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qnsview_dragging.mm 2022-11-11 15:29:17.000000000 +0800 @@ -297,7 +297,9 @@ QCocoaDrag* nativeDrag = QCocoaIntegration::instance()->drag(); Q_ASSERT(nativeDrag); nativeDrag->exitDragLoop(); - nativeDrag->setAcceptedAction(qt_mac_mapNSDragOperation(operation)); + // for internal drag'n'drop, don't override the action the drop event accepted + if (!nativeDrag->currentDrag()) + nativeDrag->setAcceptedAction(qt_mac_mapNSDragOperation(operation)); // Qt starts drag-and-drop on a mouse button press event. Cococa in // this case won't send the matching release event, so we have to diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qnsview_menus.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qnsview_menus.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qnsview_menus.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qnsview_menus.mm 2022-11-11 15:29:17.000000000 +0800 @@ -74,17 +74,20 @@ return YES; // Check if a modal dialog is active. If so, enable only menu - // items explicitly belonging to this window's own menu bar. + // items explicitly belonging to this window's own menu bar, or to the window. if (QGuiApplication::modalWindow() && QGuiApplication::modalWindow()->isActive()) { QCocoaMenuBar *menubar = nullptr; + QCocoaWindow *menuWindow = nullptr; QObject *menuParent = platformItem->menuParent(); while (menuParent && !(menubar = qobject_cast<QCocoaMenuBar *>(menuParent))) { + menuWindow = qobject_cast<QCocoaWindow *>(menuParent); auto *menuObject = dynamic_cast<QCocoaMenuObject *>(menuParent); - menuParent = menuObject->menuParent(); + menuParent = menuObject ? menuObject->menuParent() : nullptr; } - if (!menubar || menubar->cocoaWindow() != self.platformWindow) + if ((!menuWindow || menuWindow->window() != QGuiApplication::modalWindow()) + && (!menubar || menubar->cocoaWindow() != self.platformWindow)) return NO; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qnsview_mouse.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qnsview_mouse.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qnsview_mouse.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qnsview_mouse.mm 2022-11-11 15:29:17.000000000 +0800 @@ -103,21 +103,14 @@ if (!m_platformWindow) return; - // get m_buttons in sync - // Don't send frme strut events if we are in the middle of a mouse drag. - if (m_buttons != Qt::NoButton) - return; - switch (theEvent.type) { case NSEventTypeLeftMouseDown: - case NSEventTypeLeftMouseDragged: m_frameStrutButtons |= Qt::LeftButton; break; case NSEventTypeLeftMouseUp: m_frameStrutButtons &= ~Qt::LeftButton; break; case NSEventTypeRightMouseDown: - case NSEventTypeRightMouseDragged: m_frameStrutButtons |= Qt::RightButton; break; case NSEventTypeRightMouseUp: @@ -132,6 +125,22 @@ break; } + // m_buttons can sometimes get out of sync with the button state in AppKit + // E.g if the QNSView where a drag starts is reparented to another window + // while the drag is ongoing, it will not get the corresponding mouseUp + // call. This will result in m_buttons to be stuck on Qt::LeftButton. + // Since we know which buttons was pressed/released directly on the frame + // strut, we can rectify m_buttons here so that we at least don't return early + // from the drag test underneath because of the faulty m_buttons state. + // FIXME: get m_buttons in sync with AppKit/NSEvent all over in QNSView. + m_buttons &= ~m_frameStrutButtons; + + if (m_buttons != Qt::NoButton) { + // Don't send frame strut events if we are in the middle of + // a mouse drag that didn't start on the frame strut. + return; + } + NSWindow *window = [self window]; NSPoint windowPoint = [theEvent locationInWindow]; @@ -176,6 +185,39 @@ QWindowSystemInterface::handleFrameStrutMouseEvent(m_platformWindow->window(), timestamp, qtWindowPoint, qtScreenPoint, m_frameStrutButtons, button, eventType); } + +- (bool)closePopups:(NSEvent *)theEvent +{ + QList<QCocoaWindow *> *popups = QCocoaIntegration::instance()->popupWindowStack(); + if (!popups->isEmpty()) { + // Check if the click is outside all popups. + bool inside = false; + QPointF qtScreenPoint = QCocoaScreen::mapFromNative([self screenMousePoint:theEvent]); + for (QList<QCocoaWindow *>::const_iterator it = popups->begin(); it != popups->end(); ++it) { + if ((*it)->geometry().contains(qtScreenPoint.toPoint())) { + inside = true; + break; + } + } + // Close the popups if the click was outside. + if (!inside) { + bool selfClosed = false; + Qt::WindowType type = QCocoaIntegration::instance()->activePopupWindow()->window()->type(); + while (QCocoaWindow *popup = QCocoaIntegration::instance()->popPopupWindow()) { + selfClosed = self == popup->view(); + QWindowSystemInterface::handleCloseEvent(popup->window()); + QWindowSystemInterface::flushWindowSystemEvents(); + if (!m_platformWindow) + return true; // Bail out if window was destroyed + } + // Consume the mouse event when closing the popup, except for tool tips + // were it's expected that the event is processed normally. + if (type != Qt::ToolTip || selfClosed) + return true; + } + } + return false; +} @end @implementation QNSView (Mouse) @@ -381,34 +423,8 @@ // that particular poup type (for example context menus). However, Qt expects // that plain popup QWindows will also be closed, so we implement the logic // here as well. - QList<QCocoaWindow *> *popups = QCocoaIntegration::instance()->popupWindowStack(); - if (!popups->isEmpty()) { - // Check if the click is outside all popups. - bool inside = false; - QPointF qtScreenPoint = QCocoaScreen::mapFromNative([self screenMousePoint:theEvent]); - for (QList<QCocoaWindow *>::const_iterator it = popups->begin(); it != popups->end(); ++it) { - if ((*it)->geometry().contains(qtScreenPoint.toPoint())) { - inside = true; - break; - } - } - // Close the popups if the click was outside. - if (!inside) { - bool selfClosed = false; - Qt::WindowType type = QCocoaIntegration::instance()->activePopupWindow()->window()->type(); - while (QCocoaWindow *popup = QCocoaIntegration::instance()->popPopupWindow()) { - selfClosed = self == popup->view(); - QWindowSystemInterface::handleCloseEvent(popup->window()); - QWindowSystemInterface::flushWindowSystemEvents(); - if (!m_platformWindow) - return; // Bail out if window was destroyed - } - // Consume the mouse event when closing the popup, except for tool tips - // were it's expected that the event is processed normally. - if (type != Qt::ToolTip || selfClosed) - return; - } - } + if ([self closePopups:theEvent]) + return; QPointF qtWindowPoint; QPointF qtScreenPoint; @@ -655,11 +671,11 @@ // had time to emit a momentum phase event. if ([NSApp nextEventMatchingMask:NSEventMaskScrollWheel untilDate:[NSDate distantPast] inMode:@"QtMomementumEventSearchMode" dequeue:NO].momentumPhase == NSEventPhaseBegan) { - Q_ASSERT(pixelDelta.isNull() && angleDelta.isNull()); - return; // Ignore this event, as it has a delta of 0,0 + return; // Ignore, even if it has delta + } else { + phase = Qt::ScrollEnd; + m_scrolling = false; } - phase = Qt::ScrollEnd; - m_scrolling = false; } else if (theEvent.momentumPhase == NSEventPhaseBegan) { Q_ASSERT(!pixelDelta.isNull() && !angleDelta.isNull()); phase = Qt::ScrollUpdate; // Send as update, it has a delta diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qnswindow.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qnswindow.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/cocoa/qnswindow.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/cocoa/qnswindow.mm 2022-11-11 15:29:17.000000000 +0800 @@ -104,7 +104,7 @@ // Unfortunately there's no NSWindowListOrderedBackToFront, // so we have to manually reverse the order using an array. - NSMutableArray<NSWindow *> *windows = [NSMutableArray<NSWindow *> new]; + NSMutableArray<NSWindow *> *windows = [[NSMutableArray<NSWindow *> new] autorelease]; [application enumerateWindowsWithOptions:NSWindowListOrderedFrontToBack usingBlock:^(NSWindow *window, BOOL *) { // For some reason AppKit will give us nil-windows, skip those @@ -321,8 +321,18 @@ - (NSColor *)backgroundColor { - return self.styleMask == NSWindowStyleMaskBorderless ? - [NSColor clearColor] : [super backgroundColor]; + // FIXME: Plumb to a WA_NoSystemBackground-like window flag, + // or a QWindow::backgroundColor() property. In the meantime + // we assume that if you have translucent content, without a + // frame then you intend to do all background drawing yourself. + const QWindow *window = m_platformWindow ? m_platformWindow->window() : nullptr; + if (!self.opaque && window && window->flags().testFlag(Qt::FramelessWindowHint)) + return [NSColor clearColor]; + + // This still allows you to have translucent content with a frame, + // where the system background (or color set via NSWindow) will + // shine through. + return [super backgroundColor]; } - (void)sendEvent:(NSEvent*)theEvent @@ -347,18 +357,29 @@ return; } + const bool mouseEventInFrameStrut = [theEvent, self]{ + if (isMouseEvent(theEvent)) { + const NSPoint loc = theEvent.locationInWindow; + const NSRect windowFrame = [self convertRectFromScreen:self.frame]; + const NSRect contentFrame = self.contentView.frame; + if (NSMouseInRect(loc, windowFrame, NO) && !NSMouseInRect(loc, contentFrame, NO)) + return true; + } + return false; + }(); + // Any mouse-press in the frame of the window, including the title bar buttons, should + // close open popups. Presses within the window's content are handled to do that in the + // NSView::mouseDown implementation. + if (theEvent.type == NSEventTypeLeftMouseDown && mouseEventInFrameStrut) + [qnsview_cast(m_platformWindow->view()) closePopups:theEvent]; + [super sendEvent:theEvent]; if (!m_platformWindow) return; // Platform window went away while processing event - if (m_platformWindow->frameStrutEventsEnabled() && isMouseEvent(theEvent)) { - NSPoint loc = [theEvent locationInWindow]; - NSRect windowFrame = [self convertRectFromScreen:self.frame]; - NSRect contentFrame = self.contentView.frame; - if (NSMouseInRect(loc, windowFrame, NO) && !NSMouseInRect(loc, contentFrame, NO)) - [qnsview_cast(m_platformWindow->view()) handleFrameStrutMouseEvent:theEvent]; - } + if (m_platformWindow->frameStrutEventsEnabled() && mouseEventInFrameStrut) + [qnsview_cast(m_platformWindow->view()) handleFrameStrutMouseEvent:theEvent]; } - (void)closeAndRelease diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -58,7 +58,12 @@ { Q_ASSERT(fd() == -1); - int fd = drmOpen(devicePath().toLocal8Bit().constData(), nullptr); + int fd = -1; + + if (devicePath().compare("drm-nvdc") == 0) + fd = drmOpen(devicePath().toLocal8Bit().constData(), nullptr); + else + fd = qt_safe_open(devicePath().toLocal8Bit().constData(), O_RDWR); if (Q_UNLIKELY(fd < 0)) qFatal("Could not open DRM (NV) device"); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/ios/qiosinputcontext.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/ios/qiosinputcontext.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/ios/qiosinputcontext.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/ios/qiosinputcontext.mm 2022-11-11 15:29:17.000000000 +0800 @@ -667,7 +667,8 @@ // focus object. We try to detect code paths that fail this assertion and smooth // over the situation by doing a manual update of the focus object. if (qApp->focusObject() != m_imeState.focusObject && updatedProperties != Qt::ImQueryAll) { - qWarning() << "stale focus object" << m_imeState.focusObject << ", doing manual update"; + qWarning() << "stale focus object" << static_cast<void *>(m_imeState.focusObject) + << ", doing manual update"; setFocusObject(qApp->focusObject()); return; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/ios/qiostextresponder.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/ios/qiostextresponder.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/ios/qiostextresponder.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/ios/qiostextresponder.mm 2022-11-11 15:29:17.000000000 +0800 @@ -227,13 +227,11 @@ self.keyboardType = UIKeyboardTypeEmailAddress; else if (hints & Qt::ImhDigitsOnly) self.keyboardType = UIKeyboardTypeNumberPad; - else if (hints & Qt::ImhFormattedNumbersOnly) - self.keyboardType = UIKeyboardTypeDecimalPad; else if (hints & Qt::ImhDialableCharactersOnly) self.keyboardType = UIKeyboardTypePhonePad; else if (hints & Qt::ImhLatinOnly) self.keyboardType = UIKeyboardTypeASCIICapable; - else if (hints & Qt::ImhPreferNumbers) + else if (hints & (Qt::ImhPreferNumbers | Qt::ImhFormattedNumbersOnly)) self.keyboardType = UIKeyboardTypeNumbersAndPunctuation; else self.keyboardType = UIKeyboardTypeDefault; @@ -516,15 +514,23 @@ // from within a undo callback. NSUndoManager *undoMgr = self.undoManager; [undoMgr removeAllActions]; + + [undoMgr beginUndoGrouping]; + [undoMgr registerUndoWithTarget:self selector:@selector(undo) object:nil]; + [undoMgr endUndoGrouping]; [undoMgr beginUndoGrouping]; [undoMgr registerUndoWithTarget:self selector:@selector(undo) object:nil]; [undoMgr endUndoGrouping]; - // Schedule an operation that we immediately pop off to be able to schedule a redo + // Schedule operations that we immediately pop off to be able to schedule redos + [undoMgr beginUndoGrouping]; + [undoMgr registerUndoWithTarget:self selector:@selector(registerRedo) object:nil]; + [undoMgr endUndoGrouping]; [undoMgr beginUndoGrouping]; [undoMgr registerUndoWithTarget:self selector:@selector(registerRedo) object:nil]; [undoMgr endUndoGrouping]; [undoMgr undo]; + [undoMgr undo]; // Note that, perhaps because of a bug in UIKit, the buttons on the shortcuts bar ends up // disabled if a undo/redo callback doesn't lead to a [UITextInputDelegate textDidChange]. @@ -532,6 +538,11 @@ // become disabled when there is nothing more to undo (Qt didn't change anything upon receiving // an undo request). This seems to be OK behavior, so we let it stay like that unless it shows // to cause problems. + + // QTBUG-63393: Having two operations on the rebuilt undo stack keeps the undo/redo widgets + // always enabled on the shortcut bar. This workaround was found by experimenting with + // removing the removeAllActions call, and is related to the unknown internal implementation + // details of how the shortcut bar updates the dimming of its buttons. }); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/ios/qiosviewcontroller.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/ios/qiosviewcontroller.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/ios/qiosviewcontroller.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/ios/qiosviewcontroller.mm 2022-11-11 15:29:17.000000000 +0800 @@ -145,9 +145,13 @@ UIWindow *uiWindow = self.window; if (uiWindow.screen != [UIScreen mainScreen] && self.subviews.count == 1) { - // Removing the last view of an external screen, go back to mirror mode - uiWindow.screen = [UIScreen mainScreen]; - uiWindow.hidden = YES; + // We're about to remove the last view of an external screen, so go back + // to mirror mode, but defer it until after the view has been removed, + // to ensure that we don't try to layout the view that's being removed. + dispatch_async(dispatch_get_main_queue(), ^{ + uiWindow.hidden = YES; + uiWindow.screen = [UIScreen mainScreen]; + }); } } @@ -246,6 +250,7 @@ @implementation QIOSViewController { BOOL m_updatingProperties; QMetaObject::Connection m_focusWindowChangeConnection; + QMetaObject::Connection m_appStateChangedConnection; } #ifndef Q_OS_TVOS @@ -274,7 +279,7 @@ }); QIOSApplicationState *applicationState = &QIOSIntegration::instance()->applicationState; - QObject::connect(applicationState, &QIOSApplicationState::applicationStateDidChange, + m_appStateChangedConnection = QObject::connect(applicationState, &QIOSApplicationState::applicationStateDidChange, [self](Qt::ApplicationState oldState, Qt::ApplicationState newState) { if (oldState == Qt::ApplicationSuspended && newState != Qt::ApplicationSuspended) { // We may have ignored an earlier layout because the application was suspended, @@ -294,6 +299,7 @@ - (void)dealloc { QObject::disconnect(m_focusWindowChangeConnection); + QObject::disconnect(m_appStateChangedConnection); [super dealloc]; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/ios/qioswindow.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/ios/qioswindow.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/ios/qioswindow.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/ios/qioswindow.mm 2022-11-11 15:29:17.000000000 +0800 @@ -46,6 +46,7 @@ #include "qiosscreen.h" #include "qiosviewcontroller.h" #include "quiview.h" +#include "qiosinputcontext.h" #include <QtGui/private/qwindow_p.h> #include <qpa/qplatformintegration.h> diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/ios/quiaccessibilityelement.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/ios/quiaccessibilityelement.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/ios/quiaccessibilityelement.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/ios/quiaccessibilityelement.mm 2022-11-11 15:29:17.000000000 +0800 @@ -123,8 +123,7 @@ if (val) { return val->currentValue().toString().toNSString(); } else if (QAccessibleTextInterface *text = iface->textInterface()) { - // FIXME doesn't work? - return text->text(0, text->characterCount() - 1).toNSString(); + return text->text(0, text->characterCount()).toNSString(); } return [super accessibilityHint]; @@ -158,8 +157,16 @@ if (state.searchEdit) traits |= UIAccessibilityTraitSearchField; - if (iface->role() == QAccessible::Button) + const auto accessibleRole = iface->role(); + if (accessibleRole == QAccessible::Button) { traits |= UIAccessibilityTraitButton; + } else if (accessibleRole == QAccessible::EditableText) { + static auto defaultTextFieldTraits = []{ + auto *textField = [[[UITextField alloc] initWithFrame:CGRectZero] autorelease]; + return textField.accessibilityTraits; + }(); + traits |= defaultTextFieldTraits; + } if (iface->valueInterface()) traits |= UIAccessibilityTraitAdjustable; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/ios/quiview.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/ios/quiview.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/ios/quiview.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/ios/quiview.mm 2022-11-11 15:29:17.000000000 +0800 @@ -45,6 +45,7 @@ #include "qiostextresponder.h" #include "qiosscreen.h" #include "qioswindow.h" +#include "qiosinputcontext.h" #ifndef Q_OS_TVOS #include "qiosmenu.h" #endif @@ -263,7 +264,8 @@ - (BOOL)canBecomeFirstResponder { - return !(self.platformWindow->window()->flags() & Qt::WindowDoesNotAcceptFocus); + return !(self.platformWindow->window()->flags() & (Qt::WindowDoesNotAcceptFocus + | Qt::WindowTransparentForInput)); } - (BOOL)becomeFirstResponder @@ -652,6 +654,18 @@ [super addInteraction:interaction]; } +- (UIEditingInteractionConfiguration)editingInteractionConfiguration +{ + // We only want the three-finger-tap edit menu to be available when there's + // actually something to edit. Otherwise the OS will cause a slight delay + // before delivering the release of three finger touch input. Note that we + // do not do any hit testing here to check that the focus object is the one + // being tapped, as the behavior of native iOS apps is to trigger the menu + // regardless of where the gesture is being made. + return QIOSInputContext::instance()->inputMethodAccepted() ? + UIEditingInteractionConfigurationDefault : UIEditingInteractionConfigurationNone; +} + @end @implementation UIView (QtHelpers) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/ios/quiview_accessibility.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/ios/quiview_accessibility.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/ios/quiview_accessibility.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/ios/quiview_accessibility.mm 2022-11-11 15:29:17.000000000 +0800 @@ -66,6 +66,11 @@ - (void)initAccessibility { + // The window may have gone away, but with the view + // temporarily caught in the a11y subsystem. + if (!self.platformWindow) + return; + static bool init = false; if (!init) QGuiApplicationPrivate::platformIntegration()->accessibility()->setActive(true); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/vnc/qvnc.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/vnc/qvnc.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/vnc/qvnc.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/vnc/qvnc.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -477,6 +477,9 @@ // server->screen()->geometry().height()); // } + const QImage screenImage = client->server()->screenImage(); + rgn &= screenImage.rect(); + const auto rectsInRegion = rgn.rectCount(); { @@ -492,8 +495,6 @@ if (rectsInRegion <= 0) return; - const QImage screenImage = client->server()->screenImage(); - for (const QRect &tileRect: rgn) { const QRfbRect rect(tileRect.x(), tileRect.y(), tileRect.width(), tileRect.height()); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmcompositor.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmcompositor.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmcompositor.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmcompositor.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -126,7 +126,11 @@ m_windowStack.removeAll(window); m_compositedWindows.remove(window); - notifyTopWindowChanged(window); + if (!m_windowStack.isEmpty() && !QGuiApplication::focusWindow()) { + auto lastWindow = m_windowStack.last(); + lastWindow->requestActivateWindow(); + notifyTopWindowChanged(lastWindow); + } } void QWasmCompositor::setVisible(QWasmWindow *window, bool visible) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmcursor.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmcursor.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmcursor.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmcursor.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -41,20 +41,24 @@ void QWasmCursor::changeCursor(QCursor *windowCursor, QWindow *window) { - if (!windowCursor || !window) + if (!window) return; QScreen *screen = window->screen(); if (!screen) return; - // Bitmap and custom cursors are not implemented (will fall back to "auto") - if (windowCursor->shape() == Qt::BitmapCursor || windowCursor->shape() >= Qt::CustomCursor) - qWarning() << "QWasmCursor: bitmap and custom cursors are not supported"; + QByteArray htmlCursorName; + if (windowCursor) { - QByteArray htmlCursorName = cursorShapeToHtml(windowCursor->shape()); + // Bitmap and custom cursors are not implemented (will fall back to "auto") + if (windowCursor->shape() == Qt::BitmapCursor || windowCursor->shape() >= Qt::CustomCursor) + qWarning() << "QWasmCursor: bitmap and custom cursors are not supported"; + + htmlCursorName = cursorShapeToHtml(windowCursor->shape()); + } if (htmlCursorName.isEmpty()) - htmlCursorName = "auto"; + htmlCursorName = "default"; // Set cursor on the canvas val canvas = QWasmScreen::get(screen)->canvas(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmeventtranslator.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmeventtranslator.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmeventtranslator.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmeventtranslator.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -136,139 +136,11 @@ Emkb2Qt< Qt::Key_F21, 'F','2','1' >, Emkb2Qt< Qt::Key_F22, 'F','2','2' >, Emkb2Qt< Qt::Key_F23, 'F','2','3' >, - Emkb2Qt< Qt::Key_Space, ' ' >, - Emkb2Qt< Qt::Key_Comma, ',' >, - Emkb2Qt< Qt::Key_Minus, '-' >, - Emkb2Qt< Qt::Key_Period, '.' >, - Emkb2Qt< Qt::Key_Slash, '/' >, - Emkb2Qt< Qt::Key_0, 'D','i','g','i','t','0' >, - Emkb2Qt< Qt::Key_1, 'D','i','g','i','t','1' >, - Emkb2Qt< Qt::Key_2, 'D','i','g','i','t','2' >, - Emkb2Qt< Qt::Key_3, 'D','i','g','i','t','3' >, - Emkb2Qt< Qt::Key_4, 'D','i','g','i','t','4' >, - Emkb2Qt< Qt::Key_5, 'D','i','g','i','t','5' >, - Emkb2Qt< Qt::Key_6, 'D','i','g','i','t','6' >, - Emkb2Qt< Qt::Key_7, 'D','i','g','i','t','7' >, - Emkb2Qt< Qt::Key_8, 'D','i','g','i','t','8' >, - Emkb2Qt< Qt::Key_9, 'D','i','g','i','t','9' >, - Emkb2Qt< Qt::Key_Semicolon, ';' >, - Emkb2Qt< Qt::Key_Equal, '=' >, - Emkb2Qt< Qt::Key_A, 'K','e','y','A' >, - Emkb2Qt< Qt::Key_B, 'K','e','y','B' >, - Emkb2Qt< Qt::Key_C, 'K','e','y','C' >, - Emkb2Qt< Qt::Key_D, 'K','e','y','D' >, - Emkb2Qt< Qt::Key_E, 'K','e','y','E' >, - Emkb2Qt< Qt::Key_F, 'K','e','y','F' >, - Emkb2Qt< Qt::Key_G, 'K','e','y','G' >, - Emkb2Qt< Qt::Key_H, 'K','e','y','H' >, - Emkb2Qt< Qt::Key_I, 'K','e','y','I' >, - Emkb2Qt< Qt::Key_J, 'K','e','y','J' >, - Emkb2Qt< Qt::Key_K, 'K','e','y','K' >, - Emkb2Qt< Qt::Key_L, 'K','e','y','L' >, - Emkb2Qt< Qt::Key_M, 'K','e','y','M' >, - Emkb2Qt< Qt::Key_N, 'K','e','y','N' >, - Emkb2Qt< Qt::Key_O, 'K','e','y','O' >, - Emkb2Qt< Qt::Key_P, 'K','e','y','P' >, - Emkb2Qt< Qt::Key_Q, 'K','e','y','Q' >, - Emkb2Qt< Qt::Key_R, 'K','e','y','R' >, - Emkb2Qt< Qt::Key_S, 'K','e','y','S' >, - Emkb2Qt< Qt::Key_T, 'K','e','y','T' >, - Emkb2Qt< Qt::Key_U, 'K','e','y','U' >, - Emkb2Qt< Qt::Key_V, 'K','e','y','V' >, - Emkb2Qt< Qt::Key_W, 'K','e','y','W' >, - Emkb2Qt< Qt::Key_X, 'K','e','y','X' >, - Emkb2Qt< Qt::Key_Y, 'K','e','y','Y' >, - Emkb2Qt< Qt::Key_Z, 'K','e','y','Z' >, - Emkb2Qt< Qt::Key_BracketLeft, '[' >, - Emkb2Qt< Qt::Key_Backslash, '\\' >, - Emkb2Qt< Qt::Key_BracketRight, ']' >, - Emkb2Qt< Qt::Key_Apostrophe, '\'' >, - Emkb2Qt< Qt::Key_QuoteLeft, 'B','a','c','k','q','u','o','t','e' >, - Emkb2Qt< Qt::Key_multiply, 'N','u','m','p','a','d','M','u','l','t','i','p','l','y' >, - Emkb2Qt< Qt::Key_Minus, 'N','u','m','p','a','d','S','u','b','t','r','a','c','t' >, - Emkb2Qt< Qt::Key_Period, 'N','u','m','p','a','d','D','e','c','i','m','a','l' >, - Emkb2Qt< Qt::Key_Plus, 'N','u','m','p','a','d','A','d','d' >, - Emkb2Qt< Qt::Key_division, 'N','u','m','p','a','d','D','i','v','i','d','e' >, - Emkb2Qt< Qt::Key_Equal, 'N','u','m','p','a','d','E','q','u','a','l' >, - Emkb2Qt< Qt::Key_0, 'N','u','m','p','a','d','0' >, - Emkb2Qt< Qt::Key_1, 'N','u','m','p','a','d','1' >, - Emkb2Qt< Qt::Key_2, 'N','u','m','p','a','d','2' >, - Emkb2Qt< Qt::Key_3, 'N','u','m','p','a','d','3' >, - Emkb2Qt< Qt::Key_4, 'N','u','m','p','a','d','4' >, - Emkb2Qt< Qt::Key_5, 'N','u','m','p','a','d','5' >, - Emkb2Qt< Qt::Key_6, 'N','u','m','p','a','d','6' >, - Emkb2Qt< Qt::Key_7, 'N','u','m','p','a','d','7' >, - Emkb2Qt< Qt::Key_8, 'N','u','m','p','a','d','8' >, - Emkb2Qt< Qt::Key_9, 'N','u','m','p','a','d','9' >, - Emkb2Qt< Qt::Key_Comma, 'N','u','m','p','a','d','C','o','m','m','a' >, - Emkb2Qt< Qt::Key_Enter, 'N','u','m','p','a','d','E','n','t','e','r' >, Emkb2Qt< Qt::Key_Paste, 'P','a','s','t','e' >, Emkb2Qt< Qt::Key_AltGr, 'A','l','t','R','i','g','h','t' >, Emkb2Qt< Qt::Key_Help, 'H','e','l','p' >, - Emkb2Qt< Qt::Key_Equal, '=' >, Emkb2Qt< Qt::Key_yen, 'I','n','t','l','Y','e','n' >, - - Emkb2Qt< Qt::Key_Exclam, '\x21' >, - Emkb2Qt< Qt::Key_QuoteDbl, '\x22' >, - Emkb2Qt< Qt::Key_NumberSign, '\x23' >, - Emkb2Qt< Qt::Key_Dollar, '\x24' >, - Emkb2Qt< Qt::Key_Percent, '\x25' >, - Emkb2Qt< Qt::Key_Ampersand, '\x26' >, - Emkb2Qt< Qt::Key_ParenLeft, '\x28' >, - Emkb2Qt< Qt::Key_ParenRight, '\x29' >, - Emkb2Qt< Qt::Key_Asterisk, '\x2a' >, - Emkb2Qt< Qt::Key_Plus, '\x2b' >, - Emkb2Qt< Qt::Key_Colon, '\x3a' >, - Emkb2Qt< Qt::Key_Semicolon, '\x3b' >, - Emkb2Qt< Qt::Key_Less, '\x3c' >, - Emkb2Qt< Qt::Key_Equal, '\x3d' >, - Emkb2Qt< Qt::Key_Greater, '\x3e' >, - Emkb2Qt< Qt::Key_Question, '\x3f' >, - Emkb2Qt< Qt::Key_At, '\x40' >, - Emkb2Qt< Qt::Key_BracketLeft, '\x5b' >, - Emkb2Qt< Qt::Key_Backslash, '\x5c' >, - Emkb2Qt< Qt::Key_BracketRight, '\x5d' >, - Emkb2Qt< Qt::Key_AsciiCircum, '\x5e' >, - Emkb2Qt< Qt::Key_Underscore, '\x5f' >, - Emkb2Qt< Qt::Key_QuoteLeft, '\x60'>, - Emkb2Qt< Qt::Key_BraceLeft, '\x7b'>, - Emkb2Qt< Qt::Key_Bar, '\x7c'>, - Emkb2Qt< Qt::Key_BraceRight, '\x7d'>, - Emkb2Qt< Qt::Key_AsciiTilde, '\x7e'>, - Emkb2Qt< Qt::Key_Space, '\x20' >, - Emkb2Qt< Qt::Key_Comma, '\x2c' >, - Emkb2Qt< Qt::Key_Minus, '\x2d' >, - Emkb2Qt< Qt::Key_Period, '\x2e' >, - Emkb2Qt< Qt::Key_Slash, '\x2f' >, - Emkb2Qt< Qt::Key_Apostrophe, '\x27' >, - Emkb2Qt< Qt::Key_Menu, 'C','o','n','t','e','x','t','M','e','n','u' >, - - Emkb2Qt< Qt::Key_Agrave, '\xc3','\xa0' >, - Emkb2Qt< Qt::Key_Aacute, '\xc3','\xa1' >, - Emkb2Qt< Qt::Key_Acircumflex, '\xc3','\xa2' >, - Emkb2Qt< Qt::Key_Adiaeresis, '\xc3','\xa4' >, - Emkb2Qt< Qt::Key_AE, '\xc3','\xa6' >, - Emkb2Qt< Qt::Key_Atilde, '\xc3','\xa3' >, - Emkb2Qt< Qt::Key_Aring, '\xc3','\xa5' >, - Emkb2Qt< Qt::Key_Ccedilla, '\xc3','\xa7' >, - Emkb2Qt< Qt::Key_Egrave, '\xc3','\xa8' >, - Emkb2Qt< Qt::Key_Eacute, '\xc3','\xa9' >, - Emkb2Qt< Qt::Key_Ecircumflex, '\xc3','\xaa' >, - Emkb2Qt< Qt::Key_Ediaeresis, '\xc3','\xab' >, - Emkb2Qt< Qt::Key_Icircumflex, '\xc3','\xae' >, - Emkb2Qt< Qt::Key_Idiaeresis, '\xc3','\xaf' >, - Emkb2Qt< Qt::Key_Ocircumflex, '\xc3','\xb4' >, - Emkb2Qt< Qt::Key_Odiaeresis, '\xc3','\xb6' >, - Emkb2Qt< Qt::Key_Ograve, '\xc3','\xb2' >, - Emkb2Qt< Qt::Key_Oacute, '\xc3','\xb3' >, - Emkb2Qt< Qt::Key_Ooblique, '\xc3','\xb8' >, - Emkb2Qt< Qt::Key_Otilde, '\xc3','\xb5' >, - Emkb2Qt< Qt::Key_Ucircumflex, '\xc3','\xbb' >, - Emkb2Qt< Qt::Key_Udiaeresis, '\xc3','\xbc' >, - Emkb2Qt< Qt::Key_Ugrave, '\xc3','\xb9' >, - Emkb2Qt< Qt::Key_Uacute, '\xc3','\xba' >, - Emkb2Qt< Qt::Key_Ntilde, '\xc3','\xb1' >, - Emkb2Qt< Qt::Key_ydiaeresis, '\xc3','\xbf' > + Emkb2Qt< Qt::Key_Menu, 'C','o','n','t','e','x','t','M','e','n','u' > >::Data{} ); @@ -469,29 +341,21 @@ if (it1 != KeyTbl.end() && (qstrcmp(searchKey1.em, it1->em) == 0)) { qtKey = static_cast<Qt::Key>(it1->qt); } - - } else if (qstrncmp(emscriptKey->code, "Key", 3) == 0 || qstrncmp(emscriptKey->code, "Numpad", 6) == 0 || - qstrncmp(emscriptKey->code, "Digit", 5) == 0) { - emkb2qt_t searchKey{emscriptKey->code, 0}; // search emcsripten code - auto it1 = std::lower_bound(KeyTbl.cbegin(), KeyTbl.cend(), searchKey); - if (it1 != KeyTbl.end() && !(searchKey < *it1)) { - qtKey = static_cast<Qt::Key>(it1->qt); - } } - if (qtKey == Qt::Key_unknown) { - emkb2qt_t searchKey{emscriptKey->key, 0}; // search unicode key + emkb2qt_t searchKey{emscriptKey->key, 0}; + // search key auto it1 = std::lower_bound(KeyTbl.cbegin(), KeyTbl.cend(), searchKey); if (it1 != KeyTbl.end() && !(searchKey < *it1)) { qtKey = static_cast<Qt::Key>(it1->qt); } } - if (qtKey == Qt::Key_unknown) {//try harder with shifted number keys - emkb2qt_t searchKey1{emscriptKey->key, 0}; - for (auto it1 = KeyTbl.cbegin(); it1 != KeyTbl.end(); ++it1) - if (it1 != KeyTbl.end() && (qstrcmp(searchKey1.em, it1->em) == 0)) { - qtKey = static_cast<Qt::Key>(it1->qt); - } + + if (qtKey == Qt::Key_unknown) { + // cast to unicode key + QString str = QString::fromUtf8(emscriptKey->key); + ushort c = str.unicode()->toUpper().unicode(); // uppercase + qtKey = static_cast<Qt::Key>(c); } return qtKey; @@ -586,9 +450,6 @@ if (resizeMode == QWasmWindow::ResizeNone) window2 = screen()->compositor()->windowAt(globalPoint, 5); - if (lastWindow && lastWindow->cursor() != Qt::ArrowCursor) { - lastWindow->setCursor(Qt::ArrowCursor); - } if (window2 == nullptr) { window2 = lastWindow; } else { @@ -817,7 +678,7 @@ quint64 QWasmEventTranslator::getTimestamp() { - return QDeadlineTimer::current().deadlineNSecs() / 1000; + return static_cast<quint64>(emscripten_performance_now()); } struct KeyMapping { Qt::Key from, to; }; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmeventtranslator.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmeventtranslator.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmeventtranslator.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmeventtranslator.h 2022-11-11 15:29:17.000000000 +0800 @@ -42,6 +42,7 @@ #endif #include <QHash> #include <QCursor> +#include <QPointer> QT_BEGIN_NAMESPACE @@ -86,9 +87,9 @@ QMap <int, QPointF> pressedTouchIds; private: - QWindow *draggedWindow; - QWindow *pressedWindow; - QWindow *lastWindow; + QPointer<QWindow> draggedWindow; + QPointer<QWindow> pressedWindow; + QPointer<QWindow> lastWindow; Qt::MouseButtons pressedButtons; QWasmWindow::ResizeMode resizeMode; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmopenglcontext.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmopenglcontext.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmopenglcontext.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmopenglcontext.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -38,14 +38,6 @@ : m_requestedFormat(format) { m_requestedFormat.setRenderableType(QSurfaceFormat::OpenGLES); - - // if we set one, we need to set the other as well since in webgl, these are tied together - if (format.depthBufferSize() < 0 && format.stencilBufferSize() > 0) - m_requestedFormat.setDepthBufferSize(16); - - if (format.stencilBufferSize() < 0 && format.depthBufferSize() > 0) - m_requestedFormat.setStencilBufferSize(8); - } QWasmOpenGLContext::~QWasmOpenGLContext() @@ -105,14 +97,10 @@ attributes.majorVersion = format.majorVersion() - 1; attributes.minorVersion = format.minorVersion(); - // WebGL doesn't allow separate attach buffers to STENCIL_ATTACHMENT and DEPTH_ATTACHMENT - // we need both or none - bool useDepthStencil = (format.depthBufferSize() > 0 || format.stencilBufferSize() > 0); - // WebGL offers enable/disable control but not size control for these attributes.alpha = format.alphaBufferSize() > 0; - attributes.depth = useDepthStencil; - attributes.stencil = useDepthStencil; + attributes.depth = format.depthBufferSize() > 0; + attributes.stencil = format.stencilBufferSize() > 0; QByteArray convasSelector = "#" + canvasId.toUtf8(); EMSCRIPTEN_WEBGL_CONTEXT_HANDLE context = emscripten_webgl_create_context(convasSelector.constData(), &attributes); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmscreen.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmscreen.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmscreen.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmscreen.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -57,7 +57,6 @@ { m_compositor = new QWasmCompositor(this); m_eventTranslator = new QWasmEventTranslator(this); - installCanvasResizeObserver(); updateQScreenAndCanvasRenderSize(); m_canvas.call<void>("focus"); } @@ -210,8 +209,8 @@ m_canvas.set("height", canvasSize.height()); QPoint offset; - offset.setX(m_canvas["offsetTop"].as<int>()); - offset.setY(m_canvas["offsetLeft"].as<int>()); + offset.setX(m_canvas["offsetLeft"].as<int>()); + offset.setY(m_canvas["offsetTop"].as<int>()); emscripten::val rect = m_canvas.call<emscripten::val>("getBoundingClientRect"); QPoint position(rect["left"].as<int>() - offset.x(), rect["top"].as<int>() - offset.y()); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmwindow.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmwindow.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmwindow.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmwindow.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -171,7 +171,12 @@ void QWasmWindow::propagateSizeHints() { -// get rid of base class warning + QRect rect = windowGeometry(); + if (rect.size().width() < windowMinimumSize().width() + && rect.size().height() < windowMinimumSize().height()) { + rect.setSize(windowMinimumSize()); + setGeometry(rect); + } } void QWasmWindow::injectMousePressed(const QPoint &local, const QPoint &global, @@ -408,4 +413,11 @@ && !window()->flags().testFlag(Qt::Popup); } +void QWasmWindow::requestActivateWindow() +{ + if (window()->isTopLevel()) + raise(); + QPlatformWindow::requestActivateWindow(); +} + QT_END_NAMESPACE diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmwindow.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmwindow.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/wasm/qwasmwindow.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/wasm/qwasmwindow.h 2022-11-11 15:29:17.000000000 +0800 @@ -74,6 +74,7 @@ QRect normalGeometry() const override; qreal devicePixelRatio() const override; void requestUpdate() override; + void requestActivateWindow() override; QWasmScreen *platformScreen() const; void setBackingStore(QWasmBackingStore *store) { m_backingStore = store; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowscontext.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowscontext.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowscontext.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowscontext.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -252,14 +252,12 @@ \internal */ -typedef QHash<HWND, QWindowsWindow *> HandleBaseWindowHash; - struct QWindowsContextPrivate { QWindowsContextPrivate(); unsigned m_systemInfo = 0; QSet<QString> m_registeredWindowClassNames; - HandleBaseWindowHash m_windows; + QWindowsContext::HandleBaseWindowHash m_windows; HDC m_displayContext = nullptr; int m_defaultDPI = 96; QWindowsKeyMapper m_keyMapper; @@ -513,6 +511,11 @@ return d->m_keyMapper.possibleKeys(e); } +QWindowsContext::HandleBaseWindowHash &QWindowsContext::windows() +{ + return d->m_windows; +} + QSharedPointer<QWindowCreationContext> QWindowsContext::setWindowCreationContext(const QSharedPointer<QWindowCreationContext> &ctx) { const QSharedPointer<QWindowCreationContext> old = d->m_creationContext; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowscontext.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowscontext.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowscontext.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowscontext.h 2022-11-11 15:29:17.000000000 +0800 @@ -157,6 +157,7 @@ { Q_DISABLE_COPY_MOVE(QWindowsContext) public: + using HandleBaseWindowHash = QHash<HWND, QWindowsWindow *>; enum SystemInfoFlags { @@ -236,6 +237,8 @@ bool useRTLExtensions() const; QList<int> possibleKeys(const QKeyEvent *e) const; + HandleBaseWindowHash &windows(); + static bool isSessionLocked(); QWindowsMimeConverter &mimeConverter() const; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowscursor.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowscursor.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowscursor.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowscursor.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -652,6 +652,11 @@ SetCursor(m_overriddenCursor); m_overriddenCursor = m_overrideCursor = nullptr; } + auto &windows = QWindowsContext::instance()->windows(); + for (auto it = windows.cbegin(), end = windows.cend(); it != end; ++it) { + if (it.value()->screen() == m_screen) + it.value()->setFlag(QWindowsWindow::RestoreOverrideCursor); + } } QPoint QWindowsCursor::mousePosition() diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowsmousehandler.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowsmousehandler.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowsmousehandler.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowsmousehandler.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -280,8 +280,13 @@ globalPosition = winEventPosition; clientPosition = QWindowsGeometryHint::mapFromGlobal(hwnd, globalPosition); } else { - clientPosition = winEventPosition; globalPosition = QWindowsGeometryHint::mapToGlobal(hwnd, winEventPosition); + auto targetHwnd = hwnd; + if (auto *pw = window->handle()) + targetHwnd = HWND(pw->winId()); + clientPosition = targetHwnd == hwnd + ? winEventPosition + : QWindowsGeometryHint::mapFromGlobal(targetHwnd, globalPosition); } // Windows sends a mouse move with no buttons pressed to signal "Enter" @@ -494,7 +499,7 @@ } if (!discardEvent && mouseEvent.type != QEvent::None) { - QWindowSystemInterface::handleMouseEvent(window, winEventPosition, globalPosition, buttons, + QWindowSystemInterface::handleMouseEvent(window,clientPosition, globalPosition, buttons, mouseEvent.button, mouseEvent.type, keyModifiers, source); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowspointerhandler.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowspointerhandler.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowspointerhandler.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowspointerhandler.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -447,6 +447,8 @@ { Q_UNUSED(hwnd); + auto *touchInfo = static_cast<POINTER_TOUCH_INFO *>(vTouchInfo); + if (et & QtWindows::NonClientEventFlag) return false; // Let DefWindowProc() handle Non Client messages. @@ -456,10 +458,19 @@ if (msg.message == WM_POINTERCAPTURECHANGED) { QWindowSystemInterface::handleTouchCancelEvent(window, m_touchDevice, QWindowsKeyMapper::queryKeyboardModifiers()); - m_lastTouchPositions.clear(); + m_lastTouchPoints.clear(); return true; } + if (msg.message == WM_POINTERLEAVE) { + for (quint32 i = 0; i < count; ++i) { + const quint32 pointerId = touchInfo[i].pointerInfo.pointerId; + int id = m_touchInputIDToTouchPointID.value(pointerId, -1); + if (id != -1) + m_lastTouchPoints.remove(id); + } + } + // Only handle down/up/update, ignore others like WM_POINTERENTER, WM_POINTERLEAVE, etc. if (msg.message > WM_POINTERUP) return false; @@ -470,8 +481,6 @@ if (!screen) return false; - auto *touchInfo = static_cast<POINTER_TOUCH_INFO *>(vTouchInfo); - const QRect screenGeometry = screen->geometry(); QList<QWindowSystemInterface::TouchPoint> touchPoints; @@ -483,6 +492,7 @@ << " count=" << Qt::dec << count; Qt::TouchPointStates allStates; + QSet<int> inputIds; for (quint32 i = 0; i < count; ++i) { if (QWindowsContext::verbose > 1) @@ -495,14 +505,17 @@ const quint32 pointerId = touchInfo[i].pointerInfo.pointerId; int id = m_touchInputIDToTouchPointID.value(pointerId, -1); if (id == -1) { + // Start tracking after fingers touch the screen. Ignore bogus updates after touch is released. + if ((touchInfo[i].pointerInfo.pointerFlags & POINTER_FLAG_DOWN) == 0) + continue; id = m_touchInputIDToTouchPointID.size(); m_touchInputIDToTouchPointID.insert(pointerId, id); } touchPoint.id = id; touchPoint.pressure = (touchInfo[i].touchMask & TOUCH_MASK_PRESSURE) ? touchInfo[i].pressure / 1024.0 : 1.0; - if (m_lastTouchPositions.contains(touchPoint.id)) - touchPoint.normalPosition = m_lastTouchPositions.value(touchPoint.id); + if (m_lastTouchPoints.contains(touchPoint.id)) + touchPoint.normalPosition = m_lastTouchPoints.value(touchPoint.id).normalPosition; const QPointF screenPos = QPointF(touchInfo[i].pointerInfo.ptPixelLocation.x, touchInfo[i].pointerInfo.ptPixelLocation.y); @@ -518,22 +531,36 @@ if (touchInfo[i].pointerInfo.pointerFlags & POINTER_FLAG_DOWN) { touchPoint.state = Qt::TouchPointPressed; - m_lastTouchPositions.insert(touchPoint.id, touchPoint.normalPosition); + m_lastTouchPoints.insert(touchPoint.id, touchPoint); } else if (touchInfo[i].pointerInfo.pointerFlags & POINTER_FLAG_UP) { touchPoint.state = Qt::TouchPointReleased; - m_lastTouchPositions.remove(touchPoint.id); + m_lastTouchPoints.remove(touchPoint.id); } else { touchPoint.state = stationaryTouchPoint ? Qt::TouchPointStationary : Qt::TouchPointMoved; - m_lastTouchPositions.insert(touchPoint.id, touchPoint.normalPosition); + m_lastTouchPoints.insert(touchPoint.id, touchPoint); } allStates |= touchPoint.state; touchPoints.append(touchPoint); + inputIds.insert(touchPoint.id); // Avoid getting repeated messages for this frame if there are multiple pointerIds QWindowsContext::user32dll.skipPointerFrameMessages(touchInfo[i].pointerInfo.pointerId); } + // Some devices send touches for each finger in a different message/frame, instead of consolidating + // them in the same frame as we were expecting. We account for missing unreleased touches here. + for (auto tp : qAsConst(m_lastTouchPoints)) { + if (!inputIds.contains(tp.id)) { + tp.state = Qt::TouchPointStationary; + allStates |= tp.state; + touchPoints.append(tp); + } + } + + if (touchPoints.count() == 0) + return false; + // all touch points released, forget the ids we've seen. if (allStates == Qt::TouchPointReleased) m_touchInputIDToTouchPointID.clear(); @@ -712,8 +739,13 @@ globalPos = eventPos; localPos = QWindowsGeometryHint::mapFromGlobal(hwnd, eventPos); } else { - localPos = eventPos; globalPos = QWindowsGeometryHint::mapToGlobal(hwnd, eventPos); + auto targetHwnd = hwnd; + if (auto *pw = window->handle()) + targetHwnd = HWND(pw->winId()); + localPos = targetHwnd == hwnd + ? eventPos + : QWindowsGeometryHint::mapFromGlobal(targetHwnd, globalPos); } const Qt::KeyboardModifiers keyModifiers = QWindowsKeyMapper::queryKeyboardModifiers(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowspointerhandler.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowspointerhandler.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowspointerhandler.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowspointerhandler.h 2022-11-11 15:29:17.000000000 +0800 @@ -47,6 +47,7 @@ #include <QtCore/qscopedpointer.h> #include <QtCore/qhash.h> #include <QtGui/qevent.h> +#include <qpa/qwindowsysteminterface.h> QT_BEGIN_NAMESPACE @@ -74,7 +75,7 @@ void handleEnterLeave(QWindow *window, QWindow *currentWindowUnderPointer, QPoint globalPos); QTouchDevice *m_touchDevice = nullptr; - QHash<int, QPointF> m_lastTouchPositions; + QHash<int, QWindowSystemInterface::TouchPoint> m_lastTouchPoints; QHash<DWORD, int> m_touchInputIDToTouchPointID; QPointer<QWindow> m_windowUnderPointer; QPointer<QWindow> m_currentWindow; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowswindow.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowswindow.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowswindow.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowswindow.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -2156,6 +2156,7 @@ QWindowsWindowData result = m_data; result.flags = creationData.flags; result.embedded = creationData.embedded; + result.hasFrame = (creationData.style & (WS_DLGFRAME | WS_THICKFRAME)); return result; } @@ -2819,7 +2820,14 @@ void QWindowsWindow::setCursor(const CursorHandlePtr &c) { #ifndef QT_NO_CURSOR - if (c->handle() != m_cursor->handle()) { + bool changed = c->handle() != m_cursor->handle(); + // QTBUG-98856: Cursors can get out of sync after restoring override + // cursors on native windows. Force an update. + if (testFlag(RestoreOverrideCursor)) { + clearFlag(RestoreOverrideCursor); + changed = true; + } + if (changed) { const bool apply = applyNewCursor(window()); qCDebug(lcQpaWindows) << window() << __FUNCTION__ << c->handle() << " doApply=" << apply; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowswindow.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowswindow.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/qwindowswindow.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/qwindowswindow.h 2022-11-11 15:29:17.000000000 +0800 @@ -225,7 +225,8 @@ WithinDpiChanged = 0x400000, VulkanSurface = 0x800000, ResizeMoveActive = 0x1000000, - DisableNonClientScaling = 0x2000000 + DisableNonClientScaling = 0x2000000, + RestoreOverrideCursor = 0x4000000 }; QWindowsWindow(QWindow *window, const QWindowsWindowData &data); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/uiautomation/qwindowsuiamainprovider.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/uiautomation/qwindowsuiamainprovider.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/uiautomation/qwindowsuiamainprovider.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/uiautomation/qwindowsuiamainprovider.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -107,6 +107,17 @@ void QWindowsUiaMainProvider::notifyFocusChange(QAccessibleEvent *event) { if (QAccessibleInterface *accessible = event->accessibleInterface()) { + // If this is a table/tree/list, raise event for the focused cell/item instead. + if (accessible->tableInterface()) { + int count = accessible->childCount(); + for (int i = 0; i < count; ++i) { + QAccessibleInterface *item = accessible->child(i); + if (item && item->isValid() && item->state().focused) { + accessible = item; + break; + } + } + } if (QWindowsUiaMainProvider *provider = providerForAccessible(accessible)) { QWindowsUiaWrapper::instance()->raiseAutomationEvent(provider, UIA_AutomationFocusChangedEventId); } @@ -513,7 +524,7 @@ while (obj) { QString name = obj->objectName(); if (name.isEmpty()) - return QString(); + return result; if (!result.isEmpty()) result.prepend(u'.'); result.prepend(name); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/uiautomation/qwindowsuiautils.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/uiautomation/qwindowsuiautils.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/windows/uiautomation/qwindowsuiautils.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/windows/uiautomation/qwindowsuiautils.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -132,22 +132,19 @@ void rectToNativeUiaRect(const QRect &rect, const QWindow *w, UiaRect *uiaRect) { if (w && uiaRect) { - const qreal factor = QHighDpiScaling::factor(w); - uiaRect->left = qreal(rect.x()) * factor; - uiaRect->top = qreal(rect.y()) * factor; - uiaRect->width = qreal(rect.width()) * factor; - uiaRect->height = qreal(rect.height()) * factor; + QRectF r = QHighDpi::toNativePixels(QRectF(rect), w); + uiaRect->left =r.x(); + uiaRect->top = r.y(); + uiaRect->width = r.width(); + uiaRect->height = r.height(); } } // Scales a point from native coordinates, according to high dpi settings. void nativeUiaPointToPoint(const UiaPoint &uiaPoint, const QWindow *w, QPoint *point) { - if (w && point) { - const qreal factor = QHighDpiScaling::factor(w); - point->setX(int(std::lround(uiaPoint.x / factor))); - point->setY(int(std::lround(uiaPoint.y / factor))); - } + if (w && point) + *point = QHighDpi::fromNativePixels(QPoint(uiaPoint.x, uiaPoint.y), w); } // Maps an accessibility role ID to an UI Automation control type ID. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbclipboard.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbclipboard.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbclipboard.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbclipboard.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -71,7 +71,7 @@ break; default: - qWarning("QXcbClipboardMime: Internal error: Unsupported clipboard mode"); + qCWarning(lcQpaClipboard, "QXcbClipboardMime: Internal error: Unsupported clipboard mode"); break; } } @@ -265,7 +265,7 @@ if (auto event = waitForClipboardEvent(m_owner, XCB_SELECTION_NOTIFY, true)) { free(event); } else { - qWarning("QXcbClipboard: Unable to receive an event from the " + qCWarning(lcQpaClipboard, "QXcbClipboard: Unable to receive an event from the " "clipboard manager in a reasonable time"); } } @@ -371,7 +371,7 @@ xcb_set_selection_owner(xcb_connection(), newOwner, modeAtom, connection()->time()); if (getSelectionOwner(modeAtom) != newOwner) { - qWarning("QXcbClipboard::setMimeData: Cannot set X11 selection owner"); + qCWarning(lcQpaClipboard, "QXcbClipboard::setMimeData: Cannot set X11 selection owner"); } emitChanged(mode); @@ -538,7 +538,7 @@ void QXcbClipboard::handleSelectionRequest(xcb_selection_request_event_t *req) { if (requestor() && req->requestor == requestor()) { - qWarning("QXcbClipboard: Selection request should be caught before"); + qCWarning(lcQpaClipboard, "QXcbClipboard: Selection request should be caught before"); return; } @@ -553,7 +553,8 @@ QMimeData *d; QClipboard::Mode mode = modeForAtom(req->selection); if (mode > QClipboard::Selection) { - qWarning() << "QXcbClipboard: Unknown selection" << connection()->atomName(req->selection); + qCWarning(lcQpaClipboard, "QXcbClipboard: Unknown selection %s", + connection()->atomName(req->selection).constData()); xcb_send_event(xcb_connection(), false, req->requestor, XCB_EVENT_MASK_NO_EVENT, (const char *)&event); return; } @@ -561,14 +562,14 @@ d = m_clientClipboard[mode]; if (!d) { - qWarning("QXcbClipboard: Cannot transfer data, no data available"); + qCWarning(lcQpaClipboard, "QXcbClipboard: Cannot transfer data, no data available"); xcb_send_event(xcb_connection(), false, req->requestor, XCB_EVENT_MASK_NO_EVENT, (const char *)&event); return; } if (m_timestamp[mode] == XCB_CURRENT_TIME // we don't own the selection anymore || (req->time != XCB_CURRENT_TIME && req->time < m_timestamp[mode])) { - qWarning("QXcbClipboard: SelectionRequest too old"); + qCDebug(lcQpaClipboard, "QXcbClipboard: SelectionRequest too old"); xcb_send_event(xcb_connection(), false, req->requestor, XCB_EVENT_MASK_NO_EVENT, (const char *)&event); return; } @@ -623,7 +624,7 @@ property, XCB_ATOM_INTEGER, 32, 1, &m_timestamp[mode]); ret = property; } else { - qWarning("QXcbClipboard: Invalid data timestamp"); + qCWarning(lcQpaClipboard, "QXcbClipboard: Invalid data timestamp"); } } else if (target == targetsAtom) { ret = sendTargetsSelection(d, req->requestor, property); @@ -728,7 +729,7 @@ // recover -- this shouldn't normally happen, but it doesn't // hurt to be defensive if ((int)(buffer_offset + length) > buffer->size()) { - qWarning("QXcbClipboard: buffer overflow"); + qCWarning(lcQpaClipboard, "QXcbClipboard: buffer overflow"); length = buffer->size() - buffer_offset; // escape loop @@ -835,6 +836,8 @@ alloc_error = buf.size() != nbytes+1; } + QElapsedTimer timer; + timer.start(); for (;;) { connection()->flush(); xcb_generic_event_t *ge = waitForClipboardEvent(win, XCB_PROPERTY_NOTIFY); @@ -870,9 +873,11 @@ tmp_buf.resize(0); offset += length; } - } else { - break; } + + const auto elapsed = timer.elapsed(); + if (elapsed > clipboard_timeout) + break; } // timed out ... create a new requestor window, otherwise the requestor diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbconnection.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbconnection.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbconnection.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbconnection.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -221,6 +221,12 @@ } #define CASE_PRINT_AND_RETURN(name) case name : PRINT_AND_RETURN(#name); +#define XI_PRINT_AND_RETURN(name) { \ + qCDebug(log, "%s | XInput Event(%s) | sequence: %d", message, name, sequence); \ + return; \ +} +#define XI_CASE_PRINT_AND_RETURN(name) case name : XI_PRINT_AND_RETURN(#name); + switch (response_type) { CASE_PRINT_AND_RETURN( XCB_KEY_PRESS ); CASE_PRINT_AND_RETURN( XCB_KEY_RELEASE ); @@ -255,7 +261,44 @@ CASE_PRINT_AND_RETURN( XCB_COLORMAP_NOTIFY ); CASE_PRINT_AND_RETURN( XCB_CLIENT_MESSAGE ); CASE_PRINT_AND_RETURN( XCB_MAPPING_NOTIFY ); - CASE_PRINT_AND_RETURN( XCB_GE_GENERIC ); + case XCB_GE_GENERIC: { + if (hasXInput2() && isXIEvent(event)) { + auto *xiDeviceEvent = reinterpret_cast<const xcb_input_button_press_event_t*>(event); // qt_xcb_input_device_event_t + switch (xiDeviceEvent->event_type) { + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_KEY_PRESS ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_KEY_RELEASE ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_BUTTON_PRESS ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_BUTTON_RELEASE ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_MOTION ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_ENTER ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_LEAVE ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_FOCUS_IN ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_FOCUS_OUT ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_HIERARCHY ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_PROPERTY ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_RAW_KEY_PRESS ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_RAW_KEY_RELEASE ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_RAW_BUTTON_PRESS ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_RAW_BUTTON_RELEASE ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_RAW_MOTION ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_TOUCH_BEGIN ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_TOUCH_UPDATE ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_TOUCH_END ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_TOUCH_OWNERSHIP ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_RAW_TOUCH_BEGIN ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_RAW_TOUCH_UPDATE ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_RAW_TOUCH_END ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_BARRIER_HIT ); + XI_CASE_PRINT_AND_RETURN( XCB_INPUT_BARRIER_LEAVE ); + default: + qCDebug(log, "%s | XInput Event(other type) | sequence: %d", message, sequence); + return; + } + } else { + qCDebug(log, "%s | %s(%d) | sequence: %d", message, "XCB_GE_GENERIC", response_type, sequence); + return; + } + } } // XFixes if (isXFixesType(response_type, XCB_XFIXES_SELECTION_NOTIFY)) @@ -707,7 +750,7 @@ case XCB_XKB_NEW_KEYBOARD_NOTIFY: { xcb_xkb_new_keyboard_notify_event_t *ev = &xkb_event->new_keyboard_notify; if (ev->changed & XCB_XKB_NKN_DETAIL_KEYCODES) - m_keyboard->updateKeymap(); + m_keyboard->updateKeymap(ev); break; } default: @@ -795,7 +838,13 @@ xcb_window_t QXcbConnection::getSelectionOwner(xcb_atom_t atom) const { - return Q_XCB_REPLY(xcb_get_selection_owner, xcb_connection(), atom)->owner; + auto reply = Q_XCB_REPLY(xcb_get_selection_owner, xcb_connection(), atom); + if (!reply) { + qCDebug(lcQpaXcb) << "failed to query selection owner"; + return XCB_NONE; + } + + return reply->owner; } xcb_window_t QXcbConnection::getQtSelectionOwner() diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbconnection_basic.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbconnection_basic.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbconnection_basic.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbconnection_basic.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -179,7 +179,13 @@ if (!name || *name == 0) return XCB_NONE; - return Q_XCB_REPLY(xcb_intern_atom, m_xcbConnection, false, strlen(name), name)->atom; + auto reply = Q_XCB_REPLY(xcb_intern_atom, m_xcbConnection, false, strlen(name), name); + if (!reply) { + qCDebug(lcQpaXcb) << "failed to query intern atom: " << name; + return XCB_NONE; + } + + return reply->atom; } QByteArray QXcbBasicConnection::atomName(xcb_atom_t atom) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbcursor.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbcursor.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbcursor.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbcursor.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -534,6 +534,8 @@ Q_UNUSED(screen); Q_UNUSED(name); QXcbCursor *self = static_cast<QXcbCursor *>(handle); + self->m_cursorHash.clear(); + updateCursorTheme(self->connection()->xlib_display(),property.toByteArray()); } @@ -559,14 +561,16 @@ int cursorId = cursorIdForShape(cshape); xcb_cursor_t cursor = XCB_NONE; - // Try Xcursor first #if QT_CONFIG(xcb_xlib) && QT_CONFIG(library) + if (m_screen->xSettings()->initialized()) + m_screen->xSettings()->registerCallbackForProperty("Gtk/CursorThemeName",cursorThemePropertyChanged,this); + + // Try Xcursor first if (cshape >= 0 && cshape <= Qt::LastCursor) { void *dpy = connection()->xlib_display(); cursor = loadCursor(dpy, cshape); if (!cursor && !m_gtkCursorThemeInitialized && m_screen->xSettings()->initialized()) { QByteArray gtkCursorTheme = m_screen->xSettings()->setting("Gtk/CursorThemeName").toByteArray(); - m_screen->xSettings()->registerCallbackForProperty("Gtk/CursorThemeName",cursorThemePropertyChanged,this); if (updateCursorTheme(dpy,gtkCursorTheme)) { cursor = loadCursor(dpy, cshape); } @@ -668,7 +672,8 @@ { QXcbVirtualDesktop *virtualDesktop = nullptr; queryPointer(connection(), &virtualDesktop, nullptr); - xcb_warp_pointer(xcb_connection(), XCB_NONE, virtualDesktop->root(), 0, 0, 0, 0, pos.x(), pos.y()); + if (virtualDesktop) + xcb_warp_pointer(xcb_connection(), XCB_NONE, virtualDesktop->root(), 0, 0, 0, 0, pos.x(), pos.y()); xcb_flush(xcb_connection()); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbkeyboard.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbkeyboard.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbkeyboard.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbkeyboard.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -365,6 +365,17 @@ updateKeymap(); } +void QXcbKeyboard::updateKeymap(xcb_xkb_new_keyboard_notify_event_t *event) +{ + if (!event) + return; + + if (event->deviceID != event->oldDeviceID) + m_config = false; + + updateKeymap(); +} + void QXcbKeyboard::updateKeymap() { KeysymModifierMap keysymMods; @@ -372,8 +383,6 @@ keysymMods = keysymsToModifiers(); updateModifiers(keysymMods); - m_config = true; - if (!m_xkbContext) { m_xkbContext.reset(xkb_context_new(XKB_CONTEXT_NO_DEFAULT_INCLUDES)); if (!m_xkbContext) { @@ -389,8 +398,13 @@ if (connection()->hasXKB()) { m_xkbKeymap.reset(xkb_x11_keymap_new_from_device(m_xkbContext.get(), xcb_connection(), core_device_id, XKB_KEYMAP_COMPILE_NO_FLAGS)); - if (m_xkbKeymap) - m_xkbState.reset(xkb_x11_state_new_from_device(m_xkbKeymap.get(), xcb_connection(), core_device_id)); + if (m_xkbKeymap) { + if (m_config) + m_xkbState.reset(xkb_state_new(m_xkbKeymap.get())); + else + m_xkbState.reset(xkb_x11_state_new_from_device(m_xkbKeymap.get(), xcb_connection(), core_device_id)); + + } } else { m_xkbKeymap.reset(keymapFromCore(keysymMods)); if (m_xkbKeymap) @@ -411,6 +425,8 @@ updateXKBMods(); QXkbCommon::verifyHasLatinLayout(m_xkbKeymap.get()); + + m_config = true; } QList<int> QXcbKeyboard::possibleKeys(const QKeyEvent *event) const diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbkeyboard.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbkeyboard.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbkeyboard.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbkeyboard.h 2022-11-11 15:29:17.000000000 +0800 @@ -69,6 +69,7 @@ Qt::KeyboardModifiers translateModifiers(int s) const; void updateKeymap(xcb_mapping_notify_event_t *event); + void updateKeymap(xcb_xkb_new_keyboard_notify_event_t *event); void updateKeymap(); QList<int> possibleKeys(const QKeyEvent *event) const; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbscreen.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbscreen.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbscreen.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbscreen.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -114,17 +114,13 @@ } auto dpiChangedCallback = [](QXcbVirtualDesktop *desktop, const QByteArray &, const QVariant &property, void *) { - bool ok; - int dpiTimes1k = property.toInt(&ok); - if (!ok) + if (!desktop->setDpiFromXSettings(property)) return; - int dpi = dpiTimes1k / 1024; - if (desktop->m_forcedDpi == dpi) - return; - desktop->m_forcedDpi = dpi; + const auto dpi = desktop->forcedDpi(); for (QXcbScreen *screen : desktop->connection()->screens()) QWindowSystemInterface::handleScreenLogicalDotsPerInchChange(screen->QPlatformScreen::screen(), dpi, dpi); }; + setDpiFromXSettings(xSettings()->setting("Xft/DPI")); xSettings()->registerCallbackForProperty("Xft/DPI", dpiChangedCallback, nullptr); } @@ -425,6 +421,19 @@ } } +bool QXcbVirtualDesktop::setDpiFromXSettings(const QVariant &property) +{ + bool ok; + int dpiTimes1k = property.toInt(&ok); + if (!ok) + return false; + int dpi = dpiTimes1k / 1024; + if (m_forcedDpi == dpi) + return false; + m_forcedDpi = dpi; + return true; +} + QSurfaceFormat QXcbVirtualDesktop::surfaceFormatFor(const QSurfaceFormat &format) const { const xcb_visualid_t xcb_visualid = connection()->hasDefaultVisualId() ? connection()->defaultVisualId() diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbscreen.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbscreen.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbscreen.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbscreen.h 2022-11-11 15:29:17.000000000 +0800 @@ -118,6 +118,8 @@ QByteArray &stringValue); void readXResources(); + bool setDpiFromXSettings(const QVariant &property); + xcb_screen_t *m_screen; const int m_number; QList<QPlatformScreen *> m_screens; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbwindow.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbwindow.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbwindow.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbwindow.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -258,7 +258,7 @@ | XCB_EVENT_MASK_POINTER_MOTION, transparentForInputEventMask = baseEventMask - | XCB_EVENT_MASK_VISIBILITY_CHANGE | XCB_EVENT_MASK_RESIZE_REDIRECT + | XCB_EVENT_MASK_VISIBILITY_CHANGE | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | XCB_EVENT_MASK_COLOR_MAP_CHANGE | XCB_EVENT_MASK_OWNER_GRAB_BUTTON }; @@ -564,6 +564,11 @@ { QPlatformWindow::setGeometry(rect); + if (shouldDeferTask(Task::SetGeometry)) { + m_deferredGeometry = rect; + return; + } + propagateSizeHints(); QXcbScreen *currentScreen = xcbScreen(); @@ -688,6 +693,9 @@ void QXcbWindow::show() { + if (shouldDeferTask(Task::Map)) + return; + if (window()->isTopLevel()) { // update WM_NORMAL_HINTS @@ -738,6 +746,10 @@ void QXcbWindow::hide() { + if (shouldDeferTask(Task::Unmap)) + return; + + m_wmStateValid = false; xcb_unmap_window(xcb_connection(), m_window); // send synthetic UnmapNotify event according to icccm 4.1.4 @@ -897,6 +909,9 @@ void QXcbWindow::setWindowFlags(Qt::WindowFlags flags) { + if (shouldDeferTask(Task::SetWindowFlags)) + return; + Qt::WindowType type = static_cast<Qt::WindowType>(int(flags & Qt::WindowType_Mask)); if (type == Qt::ToolTip) @@ -926,6 +941,8 @@ setTransparentForMouseEvents(flags & Qt::WindowTransparentForInput); updateDoesNotAcceptFocus(flags & Qt::WindowDoesNotAcceptFocus); + + m_isWmManagedWindow = !(flags & Qt::X11BypassWindowManagerHint); } void QXcbWindow::setMotifWmHints(Qt::WindowFlags flags) @@ -1125,27 +1142,47 @@ if (state == m_windowState) return; - if ((m_windowState & Qt::WindowMinimized) && !(state & Qt::WindowMinimized)) { + if (shouldDeferTask(Task::SetWindowState)) + return; + + // unset old state + if (m_windowState & Qt::WindowMinimized) xcb_map_window(xcb_connection(), m_window); - } else if (!(m_windowState & Qt::WindowMinimized) && (state & Qt::WindowMinimized)) { - xcb_client_message_event_t event; + if (m_windowState & Qt::WindowMaximized) + setNetWmState(false, + atom(QXcbAtom::_NET_WM_STATE_MAXIMIZED_HORZ), + atom(QXcbAtom::_NET_WM_STATE_MAXIMIZED_VERT)); + if (m_windowState & Qt::WindowFullScreen) + setNetWmState(false, atom(QXcbAtom::_NET_WM_STATE_FULLSCREEN)); - event.response_type = XCB_CLIENT_MESSAGE; - event.format = 32; - event.sequence = 0; - event.window = m_window; - event.type = atom(QXcbAtom::WM_CHANGE_STATE); - event.data.data32[0] = XCB_ICCCM_WM_STATE_ICONIC; - event.data.data32[1] = 0; - event.data.data32[2] = 0; - event.data.data32[3] = 0; - event.data.data32[4] = 0; + // set new state + if (state & Qt::WindowMinimized) { + { + xcb_client_message_event_t event; - xcb_send_event(xcb_connection(), 0, xcbScreen()->root(), - XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, - (const char *)&event); + event.response_type = XCB_CLIENT_MESSAGE; + event.format = 32; + event.sequence = 0; + event.window = m_window; + event.type = atom(QXcbAtom::WM_CHANGE_STATE); + event.data.data32[0] = XCB_ICCCM_WM_STATE_ICONIC; + event.data.data32[1] = 0; + event.data.data32[2] = 0; + event.data.data32[3] = 0; + event.data.data32[4] = 0; + + xcb_send_event(xcb_connection(), 0, xcbScreen()->root(), + XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, + (const char *)&event); + } m_minimized = true; } + if (state & Qt::WindowMaximized) + setNetWmState(true, + atom(QXcbAtom::_NET_WM_STATE_MAXIMIZED_HORZ), + atom(QXcbAtom::_NET_WM_STATE_MAXIMIZED_VERT)); + if (state & Qt::WindowFullScreen) + setNetWmState(true, atom(QXcbAtom::_NET_WM_STATE_FULLSCREEN)); setNetWmState(state); @@ -1857,6 +1894,10 @@ if (event->window == m_window) { m_mapped = false; QWindowSystemInterface::handleExposeEvent(window(), QRegion()); + if (!m_isWmManagedWindow || parent()) { + m_wmStateValid = true; + handleDeferredTasks(); + } } } @@ -2171,30 +2212,98 @@ handleLeaveNotifyEvent(event->root_x, event->root_y, event->mode, event->detail, event->time); } +bool QXcbWindow::shouldDeferTask(Task task) +{ + if (m_wmStateValid) + return false; + + m_deferredTasks.append(task); + return true; +} + +void QXcbWindow::handleDeferredTasks() +{ + Q_ASSERT(m_wmStateValid == true); + if (m_deferredTasks.isEmpty()) + return; + + bool map = false; + bool unmap = false; + + QVector<Task> tasks; + for (auto taskIt = m_deferredTasks.rbegin(); taskIt != m_deferredTasks.rend(); ++taskIt) { + if (!tasks.contains(*taskIt)) + tasks.prepend(*taskIt); + } + + for (Task task : tasks) { + switch (task) { + case Task::Map: + map = true; + unmap = false; + break; + case Task::Unmap: + unmap = true; + map = false; + break; + case Task::SetGeometry: + setGeometry(m_deferredGeometry); + break; + case Task::SetWindowFlags: + setWindowFlags(window()->flags()); + break; + case Task::SetWindowState: + setWindowState(window()->windowState()); + break; + } + } + m_deferredTasks.clear(); + + if (map) { + Q_ASSERT(unmap == false); + show(); + } + if (unmap) { + Q_ASSERT(map == false); + hide(); + } +} + void QXcbWindow::handlePropertyNotifyEvent(const xcb_property_notify_event_t *event) { connection()->setTime(event->time); - const bool propertyDeleted = event->state == XCB_PROPERTY_DELETE; - - if (event->atom == atom(QXcbAtom::_NET_WM_STATE) || event->atom == atom(QXcbAtom::WM_STATE)) { - if (propertyDeleted) + const bool wmStateChanged = event->atom == atom(QXcbAtom::WM_STATE); + const bool netWmStateChanged = event->atom == atom(QXcbAtom::_NET_WM_STATE); + if (netWmStateChanged || wmStateChanged) { + if (wmStateChanged && !m_wmStateValid && m_isWmManagedWindow) { + // ICCCM 4.1.4 + // Clients that want to re-use a client window (e.g. by mapping it again) + // after withdrawing it must wait for the withdrawal to be complete before + // proceeding. The preferred method for doing this is for clients to wait for + // a window manager to update or remove the WM_STATE property. + m_wmStateValid = true; + handleDeferredTasks(); + } + if (event->state == XCB_PROPERTY_DELETE) return; - Qt::WindowStates newState = Qt::WindowNoState; - - if (event->atom == atom(QXcbAtom::WM_STATE)) { // WM_STATE: Quick check for 'Minimize'. + if (wmStateChanged) { auto reply = Q_XCB_REPLY(xcb_get_property, xcb_connection(), 0, m_window, atom(QXcbAtom::WM_STATE), XCB_ATOM_ANY, 0, 1024); if (reply && reply->format == 32 && reply->type == atom(QXcbAtom::WM_STATE)) { - const quint32 *data = (const quint32 *)xcb_get_property_value(reply.get()); - if (reply->length != 0) - m_minimized = (data[0] == XCB_ICCCM_WM_STATE_ICONIC - || (data[0] == XCB_ICCCM_WM_STATE_WITHDRAWN && m_minimized)); + auto data = static_cast<const quint32 *>(xcb_get_property_value(reply.get())); + if (reply->length != 0) { + const bool changedToWithdrawn = data[0] == XCB_ICCCM_WM_STATE_WITHDRAWN; + const bool changedToIconic = data[0] == XCB_ICCCM_WM_STATE_ICONIC; + m_minimized = changedToIconic || (changedToWithdrawn && m_minimized); + } } } + // _NET_WM_STATE handling + Qt::WindowStates newState = Qt::WindowNoState; const NetWmStates states = netWmStates(); // _NET_WM_STATE_HIDDEN should be set by the Window Manager to indicate that a window would // not be visible on the screen if its desktop/viewport were active and its coordinates were @@ -2216,7 +2325,6 @@ if ((m_windowState & Qt::WindowMinimized) && connection()->mouseGrabber() == this) connection()->setMouseGrabber(nullptr); } - return; } else if (event->atom == atom(QXcbAtom::_NET_FRAME_EXTENTS)) { m_dirtyFrameMargins = true; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbwindow.h qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbwindow.h --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platforms/xcb/qxcbwindow.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platforms/xcb/qxcbwindow.h 2022-11-11 15:29:17.000000000 +0800 @@ -74,6 +74,14 @@ Q_DECLARE_FLAGS(NetWmStates, NetWmState) + enum Task { + Map, + Unmap, + SetGeometry, + SetWindowFlags, + SetWindowState + }; + QXcbWindow(QWindow *window); ~QXcbWindow(); @@ -143,6 +151,9 @@ QXcbWindow *toWindow() override; + bool shouldDeferTask(Task task); + void handleDeferredTasks(); + void handleMouseEvent(xcb_timestamp_t time, const QPoint &local, const QPoint &global, Qt::KeyboardModifiers modifiers, QEvent::Type type, Qt::MouseEventSource source); @@ -281,6 +292,11 @@ int m_swapInterval = -1; qreal m_sizeHintsScaleFactor = 1.0; + + bool m_wmStateValid = true; + QVector<Task> m_deferredTasks; + bool m_isWmManagedWindow = true; + QRect m_deferredGeometry; }; class QXcbForeignWindow : public QXcbWindow diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -185,7 +185,7 @@ QLatin1String("/org/freedesktop/portal/desktop"), QLatin1String("org.freedesktop.portal.FileChooser"), d->saveFile ? QLatin1String("SaveFile") : QLatin1String("OpenFile")); - QString parentWindowId = QLatin1String("x11:") + QString::number(d->winId); + QString parentWindowId = QLatin1String("x11:") + QString::number(d->winId, 16); QVariantMap options; if (!d->acceptLabel.isEmpty()) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/sqldrivers/mysql/qsql_mysql.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/sqldrivers/mysql/qsql_mysql.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/sqldrivers/mysql/qsql_mysql.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/sqldrivers/mysql/qsql_mysql.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -158,6 +158,20 @@ #endif } +// check if this client and server version of MySQL/MariaDB support prepared statements +static inline bool checkPreparedQueries(MYSQL *mysql) +{ + std::unique_ptr<MYSQL_STMT, decltype(&mysql_stmt_close)> stmt(mysql_stmt_init(mysql), &mysql_stmt_close); + if (!stmt) + return false; + + static const char dummyQuery[] = "SELECT ? + ?"; + if (mysql_stmt_prepare(stmt.get(), dummyQuery, sizeof(dummyQuery) - 1)) + return false; + + return mysql_stmt_param_count(stmt.get()) == 2; +} + class QMYSQLResultPrivate; class QMYSQLResult : public QSqlResult @@ -1371,8 +1385,7 @@ } #endif // MYSQL_VERSION_ID >= 50007 - d->preparedQuerysEnabled = mysql_get_client_version() >= 40108 - && mysql_get_server_version(d->mysql) >= 40100; + d->preparedQuerysEnabled = checkPreparedQueries(d->mysql); #if QT_CONFIG(thread) mysql_thread_init(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/sqldrivers/oci/qsql_oci.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/sqldrivers/oci/qsql_oci.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/sqldrivers/oci/qsql_oci.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/sqldrivers/oci/qsql_oci.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -224,6 +224,7 @@ OCISvcCtx *svc; OCIServer *srvhp; OCISession *authp; + OCITrans *trans = nullptr; OCIError *err; bool transaction; int serverVersion; @@ -1483,6 +1484,7 @@ columns[i].lengths[row] = columns[i].maxLen; QOCIDateTime *date = new QOCIDateTime(d->env, d->err, val.toDateTime()); *reinterpret_cast<OCIDateTime**>(dataPtr) = date->dateTime; + tmpStorage.dateTimes.append(date); break; } case QVariant::Int: @@ -2296,11 +2298,12 @@ r = OCIAttrSet(d->authp, OCI_HTYPE_SESSION, const_cast<ushort *>(password.utf16()), password.length() * sizeof(QChar), OCI_ATTR_PASSWORD, d->err); - OCITrans* trans; - if (r == OCI_SUCCESS) - r = OCIHandleAlloc(d->env, reinterpret_cast<void **>(&trans), OCI_HTYPE_TRANS, 0, 0); + if (r == OCI_SUCCESS) { + r = OCIHandleAlloc(d->env, reinterpret_cast<void **>(&d->trans), OCI_HTYPE_TRANS, + 0, nullptr); + } if (r == OCI_SUCCESS) - r = OCIAttrSet(d->svc, OCI_HTYPE_SVCCTX, trans, 0, OCI_ATTR_TRANS, d->err); + r = OCIAttrSet(d->svc, OCI_HTYPE_SVCCTX, d->trans, 0, OCI_ATTR_TRANS, d->err); if (r == OCI_SUCCESS) { if (user.isEmpty() && password.isEmpty()) @@ -2314,12 +2317,18 @@ if (r != OCI_SUCCESS) { setLastError(qMakeError(tr("Unable to logon"), QSqlError::ConnectionError, d->err)); setOpenError(true); + if (d->trans) + OCIHandleFree(d->trans, OCI_HTYPE_TRANS); + d->trans = nullptr; if (d->authp) OCIHandleFree(d->authp, OCI_HTYPE_SESSION); - d->authp = 0; + d->authp = nullptr; + if (d->svc) + OCIHandleFree(d->svc, OCI_HTYPE_SVCCTX); + d->svc = nullptr; if (d->srvhp) OCIHandleFree(d->srvhp, OCI_HTYPE_SERVER); - d->srvhp = 0; + d->srvhp = nullptr; return false; } @@ -2357,12 +2366,14 @@ OCISessionEnd(d->svc, d->err, d->authp, OCI_DEFAULT); OCIServerDetach(d->srvhp, d->err, OCI_DEFAULT); + OCIHandleFree(d->trans, OCI_HTYPE_TRANS); + d->trans = nullptr; OCIHandleFree(d->authp, OCI_HTYPE_SESSION); - d->authp = 0; - OCIHandleFree(d->srvhp, OCI_HTYPE_SERVER); - d->srvhp = 0; + d->authp = nullptr; OCIHandleFree(d->svc, OCI_HTYPE_SVCCTX); - d->svc = 0; + d->svc = nullptr; + OCIHandleFree(d->srvhp, OCI_HTYPE_SERVER); + d->srvhp = nullptr; setOpen(false); setOpenError(false); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -74,13 +74,18 @@ QT_BEGIN_NAMESPACE -static QString _q_escapeIdentifier(const QString &identifier) +static QString _q_escapeIdentifier(const QString &identifier, QSqlDriver::IdentifierType type) { QString res = identifier; + // If it contains [ and ] then we assume it to be escaped properly already as this indicates + // the syntax is exactly how it should be + if (identifier.contains(QLatin1Char('[')) && identifier.contains(QLatin1Char(']'))) + return res; if (!identifier.isEmpty() && !identifier.startsWith(QLatin1Char('"')) && !identifier.endsWith(QLatin1Char('"'))) { res.replace(QLatin1Char('"'), QLatin1String("\"\"")); res.prepend(QLatin1Char('"')).append(QLatin1Char('"')); - res.replace(QLatin1Char('.'), QLatin1String("\".\"")); + if (type == QSqlDriver::TableName) + res.replace(QLatin1Char('.'), QLatin1String("\".\"")); } return res; } @@ -496,7 +501,7 @@ if (paramCountIsValid) { for (int i = 0; i < paramCount; ++i) { res = SQLITE_OK; - const QVariant value = values.at(i); + const QVariant &value = values.at(i); if (value.isNull()) { res = sqlite3_bind_null(d->stmt, i + 1); @@ -905,13 +910,24 @@ { QString schema; QString table(tableName); - int indexOfSeparator = tableName.indexOf(QLatin1Char('.')); + const int indexOfSeparator = tableName.indexOf(QLatin1Char('.')); if (indexOfSeparator > -1) { - schema = tableName.left(indexOfSeparator).append(QLatin1Char('.')); - table = tableName.mid(indexOfSeparator + 1); + const int indexOfCloseBracket = tableName.indexOf(QLatin1Char(']')); + if (indexOfCloseBracket != tableName.size() - 1) { + // Handles a case like databaseName.tableName + schema = tableName.left(indexOfSeparator + 1); + table = tableName.mid(indexOfSeparator + 1); + } else { + const int indexOfOpenBracket = tableName.lastIndexOf(QLatin1Char('['), indexOfCloseBracket); + if (indexOfOpenBracket > 0) { + // Handles a case like databaseName.[tableName] + schema = tableName.left(indexOfOpenBracket); + table = tableName.mid(indexOfOpenBracket); + } + } } - q.exec(QLatin1String("PRAGMA ") + schema + QLatin1String("table_info (") + _q_escapeIdentifier(table) + QLatin1Char(')')); - + q.exec(QLatin1String("PRAGMA ") + schema + QLatin1String("table_info (") + + _q_escapeIdentifier(table, QSqlDriver::TableName) + QLatin1Char(')')); QSqlIndex ind; while (q.next()) { bool isPk = q.value(5).toInt(); @@ -973,8 +989,7 @@ QString QSQLiteDriver::escapeIdentifier(const QString &identifier, IdentifierType type) const { - Q_UNUSED(type); - return _q_escapeIdentifier(identifier); + return _q_escapeIdentifier(identifier, type); } static void handle_sqlite_callback(void *qobj,int aoperation, char const *adbname, char const *atablename, diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/styles/mac/qmacstyle_mac.mm qtbase-opensource-src-5.15.8+dfsg/src/plugins/styles/mac/qmacstyle_mac.mm --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/styles/mac/qmacstyle_mac.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/styles/mac/qmacstyle_mac.mm 2022-11-11 15:29:17.000000000 +0800 @@ -195,10 +195,6 @@ const int QMacStylePrivate::PushButtonRightOffset = 12; const int QMacStylePrivate::PushButtonContentPadding = 6; -const int pushButtonBevelRectOffsets[3] = { - QMacStylePrivate::PushButtonLeftOffset, 5, 5 -}; - QVector<QPointer<QObject> > QMacStylePrivate::scrollBars; // Title bar gradient colors for Lion were determined by inspecting PSDs exported @@ -1167,6 +1163,8 @@ void QMacStylePrivate::drawFocusRing(QPainter *p, const QRectF &targetRect, int hMargin, int vMargin, const CocoaControl &cw) const { + const bool isBigSurOrAbove = QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSBigSur; + QPainterPath focusRingPath; focusRingPath.setFillRule(Qt::OddEvenFill); @@ -1216,7 +1214,6 @@ } case Button_PullDown: case Button_PushButton: { - const bool isBigSurOrAbove = QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSBigSur; QRectF focusRect; auto *pb = static_cast<NSButton *>(cocoaControl(cw)); const QRectF frameRect = cw.adjustedControlFrame(targetRect.adjusted(hMargin, vMargin, -hMargin, -vMargin)); @@ -1247,11 +1244,16 @@ } case Button_PopupButton: case SegmentedControl_Single: { - const qreal innerRadius = cw.type == Button_PushButton ? 3 : 4; + QRectF focusRect = targetRect; + if (isBigSurOrAbove) + focusRect.translate(0, -1.5); + else if (QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSCatalina) + focusRect.adjust(0, 0, 0, -1); + const qreal innerRadius = 4; const qreal outerRadius = innerRadius + focusRingWidth; - hOffset = targetRect.left(); - vOffset = targetRect.top(); - const auto innerRect = targetRect.translated(-targetRect.topLeft()); + hOffset = focusRect.left(); + vOffset = focusRect.top(); + const auto innerRect = focusRect.translated(-focusRect.topLeft()); const auto outerRect = innerRect.adjusted(-hMargin, -vMargin, hMargin, vMargin); focusRingPath.addRoundedRect(innerRect, innerRadius, innerRadius); focusRingPath.addRoundedRect(outerRect, outerRadius, outerRadius); @@ -1603,8 +1605,7 @@ const auto frameSize = defaultFrameSize(); if (type == QMacStylePrivate::Button_SquareButton) { frameRect = rect.adjusted(3, 1, -3, -1) - .adjusted(focusRingWidth, focusRingWidth, -focusRingWidth, -focusRingWidth) - .adjusted(-6.5, 0, 6.5, 0); + .adjusted(focusRingWidth, focusRingWidth, -focusRingWidth, -focusRingWidth); } else if (type == QMacStylePrivate::Button_PushButton) { // Start from the style option's top-left corner. frameRect = QRectF(rect.topLeft(), @@ -1613,8 +1614,6 @@ frameRect = frameRect.translated(0, 1.5); else if (size == QStyleHelper::SizeMini) frameRect = frameRect.adjusted(0, 0, -8, 0).translated(4, 4); - frameRect = frameRect.adjusted(-pushButtonBevelRectOffsets[size], 0, - pushButtonBevelRectOffsets[size], 0); } else { // Center in the style option's rect. frameRect = QRectF(QPointF(0, (rect.height() - frameSize.height()) / 2.0), @@ -1627,9 +1626,6 @@ frameRect = frameRect.adjusted(0, 0, -4, 0).translated(2, 1); else if (size == QStyleHelper::SizeMini) frameRect = frameRect.adjusted(0, 0, -9, 0).translated(5, 0); - if (type == QMacStylePrivate::Button_PullDown) - frameRect = frameRect.adjusted(-pushButtonBevelRectOffsets[size], 0, - pushButtonBevelRectOffsets[size], 0); } else if (type == QMacStylePrivate::ComboBox) { frameRect = frameRect.adjusted(0, 0, -6, 0).translated(4, 0); } @@ -3791,11 +3787,7 @@ QRect textRect = itemTextRect( btn.fontMetrics, freeContentRect, Qt::AlignCenter, isEnabled, btn.text); if (hasMenu) { - if (ct == QMacStylePrivate::Button_SquareButton) - textRect.moveTo(w ? 8 : 11, textRect.top()); - else - textRect.moveTo(w ? (15 - pushButtonBevelRectOffsets[d->effectiveAquaSizeConstrain(b, w)]) - : 11, textRect.top()); // Supports Qt Quick Controls + textRect.moveTo(w ? 15 : 11, textRect.top()); // Supports Qt Quick Controls } // Draw the icon: if (hasIcon) { @@ -4394,8 +4386,10 @@ // line-break the string if it doesn't fit the given rect. It's better to draw outside // the rect and possibly overlap something than to have part of the text disappear. [s.toNSString() drawAtPoint:CGPointMake(xpos, yPos) - withAttributes:@{ NSFontAttributeName:f, NSForegroundColorAttributeName:c, - NSObliquenessAttributeName: [NSNumber numberWithDouble: myFont.italic() ? 0.3 : 0.0]}]; + withAttributes:@{ NSFontAttributeName:f, NSForegroundColorAttributeName:c, + NSObliquenessAttributeName: [NSNumber numberWithDouble: myFont.italic() ? 0.3 : 0.0], + NSUnderlineStyleAttributeName: [NSNumber numberWithInt: myFont.underline() ? NSUnderlineStyleSingle + : NSUnderlineStyleNone]}]; d->restoreNSGraphicsContext(cgCtx); } else { @@ -4943,24 +4937,14 @@ = qstyleoption_cast<const QStyleOptionButton *>(opt)) { if ((buttonOpt->features & QStyleOptionButton::Flat)) break; // leave rect alone - if ((buttonOpt->features & QStyleOptionButton::CommandLinkButton)) { - rect = opt->rect; - if (controlSize == QStyleHelper::SizeLarge) - rect.adjust(+6, +4, -6, -8); - else if (controlSize == QStyleHelper::SizeSmall) - rect.adjust(+5, +4, -5, -6); - else - rect.adjust(+1, 0, -1, -2); - break; - } } rect = opt->rect; if (controlSize == QStyleHelper::SizeLarge) { - rect.adjust(0, +4, 0, -8); + rect.adjust(+6, +4, -6, -8); } else if (controlSize == QStyleHelper::SizeSmall) { - rect.adjust(0, +4, 0, -6); + rect.adjust(+5, +4, -5, -6); } else { - rect.adjust(0, 0, 0, -2); + rect.adjust(+1, 0, -1, -2); } break; case SE_RadioButtonLayoutItem: @@ -5199,7 +5183,7 @@ if (const QStyleOptionSlider *sb = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { const bool drawTrack = sb->subControls & SC_ScrollBarGroove; - const bool drawKnob = sb->subControls & SC_ScrollBarSlider; + const bool drawKnob = sb->subControls & SC_ScrollBarSlider && sb->minimum != sb->maximum; if (!drawTrack && !drawKnob) break; @@ -6389,12 +6373,9 @@ break; #endif case QStyle::CT_PushButton: { - bool isFlat = false; - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { +if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) if (btn->features & QStyleOptionButton::CommandLinkButton) return QCommonStyle::sizeFromContents(ct, opt, sz, widget); - isFlat = btn->features & QStyleOptionButton::Flat; - } // By default, we fit the contents inside a normal rounded push button. // Do this by add enough space around the contents so that rounded @@ -6409,24 +6390,12 @@ // All values as measured from HIThemeGetButtonBackgroundBounds() if (controlSize != QStyleHelper::SizeMini) sz.rwidth() += 12; // We like 12 over here. - - if (controlSize == QStyleHelper::SizeLarge) { - if (!isFlat) - sz.rwidth() -= 12; - if (sz.height() > 16) - sz.rheight() += pushButtonDefaultHeight[QStyleHelper::SizeLarge] - 16; - else - sz.setHeight(pushButtonDefaultHeight[QStyleHelper::SizeLarge]); - } else { - if (!isFlat) - sz.rwidth() -= 10; - if (controlSize == QStyleHelper::SizeMini) - sz.setHeight(24); - else - sz.setHeight(pushButtonDefaultHeight[QStyleHelper::SizeSmall]); - } - if (isFlat) - sz.rwidth() -= 13; + if (controlSize == QStyleHelper::SizeLarge && sz.height() > 16) + sz.rheight() += pushButtonDefaultHeight[QStyleHelper::SizeLarge] - 16; + else if (controlSize == QStyleHelper::SizeMini) + sz.setHeight(24); // FIXME Our previous HITheme-based logic returned this. + else + sz.setHeight(pushButtonDefaultHeight[controlSize]); break; } case QStyle::CT_MenuItem: diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/plugins/styles/windowsvista/qwindowsxpstyle.cpp qtbase-opensource-src-5.15.8+dfsg/src/plugins/styles/windowsvista/qwindowsxpstyle.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/plugins/styles/windowsvista/qwindowsxpstyle.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/plugins/styles/windowsvista/qwindowsxpstyle.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -999,7 +999,7 @@ #endif img = QImage(bufferPixels, bufferW, bufferH, format); if (hasCorrectionFactor) - img = img.scaled(w, h, Qt::KeepAspectRatio, Qt::SmoothTransformation); + img = img.scaled(img.size() * correctionFactor, Qt::KeepAspectRatio, Qt::SmoothTransformation); img.setDevicePixelRatio(additionalDevicePixelRatio); } @@ -2498,7 +2498,7 @@ // Calculate an small (max 2), empirical correction factor for scaling up // WP_MDICLOSEBUTTON, WP_MDIRESTOREBUTTON, WP_MDIMINBUTTON, which are too // small on High DPI screens (QTBUG-75927). -qreal mdiButtonCorrectionFactor(XPThemeData &theme, const QPaintDevice *pd = nullptr) +static qreal mdiButtonCorrectionFactor(XPThemeData &theme, const QPaintDevice *pd = nullptr) { const auto dpr = pd ? pd->devicePixelRatioF() : qApp->devicePixelRatio(); const QSizeF nativeSize = QSizeF(theme.size()) / dpr; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/printsupport/dialogs/qpagesetupdialog_win.cpp qtbase-opensource-src-5.15.8+dfsg/src/printsupport/dialogs/qpagesetupdialog_win.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/printsupport/dialogs/qpagesetupdialog_win.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/printsupport/dialogs/qpagesetupdialog_win.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -134,10 +134,35 @@ QDialog::setVisible(false); if (result) { engine->setGlobalDevMode(psd.hDevNames, psd.hDevMode); - d->printer->setPageSize(QPageSize(QSizeF(psd.ptPaperSize.x / multiplier, psd.ptPaperSize.y / multiplier), - layout.units() == QPageLayout::Inch ? QPageSize::Inch : QPageSize::Millimeter)); + QPageSize pageSize; + // try to read orientation and paper size ID from the dialog's devmode struct + if (psd.hDevMode) { + DEVMODE *rDevmode = reinterpret_cast<DEVMODE*>(GlobalLock(psd.hDevMode)); + if (rDevmode->dmFields & DM_ORIENTATION) { + layout.setOrientation(rDevmode->dmOrientation == DMORIENT_PORTRAIT + ? QPageLayout::Portrait : QPageLayout::Landscape); + } + if (rDevmode->dmFields & DM_PAPERSIZE) + pageSize = QPageSize::id(rDevmode->dmPaperSize); + GlobalUnlock(rDevmode); + } + // fall back to use our own matching, and assume that paper that's wider than long means landscape + if (!pageSize.isValid() || pageSize.id() == QPageSize::Custom) { + QSizeF unitSize(psd.ptPaperSize.x / multiplier, psd.ptPaperSize.y / multiplier); + if (unitSize.width() > unitSize.height()) { + layout.setOrientation(QPageLayout::Landscape); + unitSize.transpose(); + } else { + layout.setOrientation(QPageLayout::Portrait); + } + pageSize = QPageSize(unitSize, layout.units() == QPageLayout::Inch + ? QPageSize::Inch : QPageSize::Millimeter); + } + layout.setPageSize(pageSize); + const QMarginsF margins(psd.rtMargin.left, psd.rtMargin.top, psd.rtMargin.right, psd.rtMargin.bottom); - d->printer->setPageMargins(margins / multiplier, layout.units()); + layout.setMargins(margins / multiplier); + d->printer->setPageLayout(layout); // copy from our temp DEVMODE struct if (!engine->globalDevMode() && hDevMode) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/printsupport/dialogs/qprintdialog_unix.cpp qtbase-opensource-src-5.15.8+dfsg/src/printsupport/dialogs/qprintdialog_unix.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/printsupport/dialogs/qprintdialog_unix.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/printsupport/dialogs/qprintdialog_unix.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1184,6 +1184,8 @@ widget.printers->insertSeparator(widget.printers->count()); widget.printers->addItem(QPrintDialog::tr("Print to File (PDF)")); filePrintersAdded = true; + if (widget.printers->count() == 1) + _q_printerChanged(0); } if (!printToFile && filePrintersAdded) { widget.printers->removeItem(widget.printers->count()-1); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/sql/models/qsqltablemodel.cpp qtbase-opensource-src-5.15.8+dfsg/src/sql/models/qsqltablemodel.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/sql/models/qsqltablemodel.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/sql/models/qsqltablemodel.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1003,7 +1003,8 @@ //we can safely escape the field because it would have been obtained from the database //and have the correct case - QString field = d->tableName + QLatin1Char('.') + QString field = d->db.driver()->escapeIdentifier(d->tableName, QSqlDriver::TableName) + + QLatin1Char('.') + d->db.driver()->escapeIdentifier(f.name(), QSqlDriver::FieldName); field = d->sortOrder == Qt::AscendingOrder ? Sql::asc(field) : Sql::desc(field); return Sql::orderBy(field); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/testlib/doc/src/qttestlib-manual.qdoc qtbase-opensource-src-5.15.8+dfsg/src/testlib/doc/src/qttestlib-manual.qdoc --- qtbase-opensource-src-5.15.3+dfsg/src/testlib/doc/src/qttestlib-manual.qdoc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/testlib/doc/src/qttestlib-manual.qdoc 2022-11-11 15:29:17.000000000 +0800 @@ -154,6 +154,12 @@ All labeled targets will be run when \c {test} target is called on the command line. + \note On Android, if you have one connected device or emulator, tests will + run on that device. If you have more than one device connected, set the + environment variable \c {ANDROID_DEVICE_SERIAL} to the + \l {Android: Query for devices}{ADB serial number} of the device that + you want to run tests on. + There are several other advantages with CMake. For example, the result of a test run can be published on a web server using CDash with virtually no effort. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/testlib/qabstractitemmodeltester.cpp qtbase-opensource-src-5.15.8+dfsg/src/testlib/qabstractitemmodeltester.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/testlib/qabstractitemmodeltester.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/testlib/qabstractitemmodeltester.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -438,7 +438,7 @@ // when asked for the parent of an invalid index. MODELTESTER_VERIFY(!model->parent(QModelIndex()).isValid()); - if (model->rowCount() == 0) + if (model->rowCount() == 0 || model->columnCount() == 0) return; // Column 0 | Column 1 | @@ -570,7 +570,7 @@ // recursively go down the children if (model->hasChildren(index) && currentDepth < 10) - checkChildren(index, ++currentDepth); + checkChildren(index, currentDepth + 1); // make sure that after testing the children that the index doesn't change. QModelIndex newerIndex = model->index(r, c, parent); @@ -720,12 +720,12 @@ Changing c; c.parent = parent; c.oldSize = model->rowCount(parent); - if (start > 0) { + if (start > 0 && model->columnCount(parent) > 0) { const QModelIndex startIndex = model->index(start - 1, 0, parent); MODELTESTER_VERIFY(startIndex.isValid()); c.last = model->data(startIndex); } - if (end < c.oldSize - 1) { + if (end < c.oldSize - 1 && model->columnCount(parent) > 0) { const QModelIndex endIndex = model->index(end + 1, 0, parent); MODELTESTER_VERIFY(endIndex.isValid()); c.next = model->data(endIndex); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/testlib/qtestcase.cpp qtbase-opensource-src-5.15.8+dfsg/src/testlib/qtestcase.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/testlib/qtestcase.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/testlib/qtestcase.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -212,13 +212,13 @@ if (debuggerPresent() || hasSystemCrashReporter()) return; -#if defined(Q_OS_LINUX) || defined(Q_OS_MACOS) +#if defined(Q_OS_LINUX) || (defined(Q_OS_MACOS) && !defined(Q_PROCESSOR_ARM_64)) const int msecsFunctionTime = qRound(QTestLog::msecsFunctionTime()); const int msecsTotalTime = qRound(QTestLog::msecsTotalTime()); fprintf(stderr, "\n=== Received signal at function time: %dms, total time: %dms, dumping stack ===\n", msecsFunctionTime, msecsTotalTime); -#endif -#ifdef Q_OS_LINUX + +# ifdef Q_OS_LINUX char cmd[512]; qsnprintf(cmd, 512, "gdb --pid %d 2>/dev/null <<EOF\n" "set prompt\n" @@ -231,7 +231,7 @@ if (system(cmd) == -1) fprintf(stderr, "calling gdb failed\n"); fprintf(stderr, "=== End of stack trace ===\n"); -#elif defined(Q_OS_MACOS) +# elif defined(Q_OS_MACOS) char cmd[512]; qsnprintf(cmd, 512, "lldb -p %d 2>/dev/null <<EOF\n" "bt all\n" @@ -241,6 +241,8 @@ if (system(cmd) == -1) fprintf(stderr, "calling lldb failed\n"); fprintf(stderr, "=== End of stack trace ===\n"); +# endif + #endif } @@ -2798,6 +2800,11 @@ /*! \internal */ +char *QTest::toString(const volatile void *p) // Use volatile to match compare_ptr_helper() +{ + return QTest::toString(const_cast<const void *>(p)); +} + char *QTest::toString(const void *p) { char *msg = new char[128]; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/testlib/qtestcase.h qtbase-opensource-src-5.15.8+dfsg/src/testlib/qtestcase.h --- qtbase-opensource-src-5.15.3+dfsg/src/testlib/qtestcase.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/testlib/qtestcase.h 2022-11-11 15:29:17.000000000 +0800 @@ -101,6 +101,7 @@ " but no exception caught", __FILE__, __LINE__);\ return;\ } QT_CATCH (const exceptiontype &) {\ + /* success */\ }\ } QT_CATCH (const std::exception &e) {\ QByteArray msg = QByteArray() + "Expected exception of type " #exceptiontype \ @@ -110,7 +111,7 @@ } QT_CATCH (...) {\ QTest::qFail("Expected exception of type " #exceptiontype " to be thrown" \ " but unknown exception caught", __FILE__, __LINE__);\ - return;\ + QT_RETHROW;\ }\ } while (false) @@ -283,7 +284,8 @@ Q_TESTLIB_EXPORT char *toPrettyCString(const char *unicode, int length); Q_TESTLIB_EXPORT char *toPrettyUnicode(QStringView string); Q_TESTLIB_EXPORT char *toString(const char *); - Q_TESTLIB_EXPORT char *toString(const void *); + Q_TESTLIB_EXPORT char *toString(const volatile void *); + Q_TESTLIB_EXPORT char *toString(const void *); // ### FIXME: Qt 7: Remove Q_TESTLIB_EXPORT void qInit(QObject *testObject, int argc = 0, char **argv = nullptr); Q_TESTLIB_EXPORT int qRun(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/testlib/qtestcase.qdoc qtbase-opensource-src-5.15.8+dfsg/src/testlib/qtestcase.qdoc --- qtbase-opensource-src-5.15.3+dfsg/src/testlib/qtestcase.qdoc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/testlib/qtestcase.qdoc 2022-11-11 15:29:17.000000000 +0800 @@ -149,15 +149,24 @@ \relates QTest - The QVERIFY_EXCEPTION_THROWN macro executes an \a expression and tries - to catch an exception thrown from the \a expression. If the \a expression - throws an exception and its type is the same as \a exceptiontype - or \a exceptiontype is substitutable with the type of thrown exception - (i.e. usually the type of thrown exception is publicly derived - from \a exceptiontype) then execution will be continued. If not-substitutable - type of exception is thrown or the \a expression doesn't throw an exception - at all, then a failure will be recorded in the test log and - the test won't be executed further. + The QVERIFY_EXCEPTION_THROWN macro executes \a expression + and tries to catch an exception thrown from \a expression. + + There are several possible outcomes: + + \list + \li If \a expression throws an exception that is either the same as + \a exceptiontype or derived from \a exceptiontype, then execution will continue. + + \li Otherwise, if \a expression throws no exception, or the + exception thrown derives from \c{std::exception}, then a failure + will be recorded in the test log and the macro returns early + (from enclosing function). + + \li If the thrown exception derives neither from \c{std::exception} nor from + \a exceptiontype, a failure will be recorded in the test log, and the exception is + re-thrown. This avoids problems with e.g. pthread cancellation exceptions. + \endlist \note This macro can only be used in a test function that is invoked by the test framework. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/testlib/qtestlog.cpp qtbase-opensource-src-5.15.8+dfsg/src/testlib/qtestlog.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/testlib/qtestlog.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/testlib/qtestlog.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -338,6 +338,8 @@ QTEST_ASSERT(msg); QTEST_ASSERT(file); + // Will be counted in addPass() if we get there. + FOREACH_TEST_LOGGER logger->addIncident(QAbstractTestLogger::XFail, msg, file, line); } @@ -390,7 +392,7 @@ QTEST_ASSERT(msg); QTEST_ASSERT(file); - ++QTest::blacklists; + // Will be counted in addBPass() if we get there. FOREACH_TEST_LOGGER logger->addIncident(QAbstractTestLogger::BlacklistedXFail, msg, file, line); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/tools/androiddeployqt/main.cpp qtbase-opensource-src-5.15.8+dfsg/src/tools/androiddeployqt/main.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/tools/androiddeployqt/main.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/tools/androiddeployqt/main.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -174,7 +174,7 @@ QString versionName; QString versionCode; QByteArray minSdkVersion{"21"}; - QByteArray targetSdkVersion{"29"}; + QByteArray targetSdkVersion{"30"}; // lib c++ path QString stdCppPath; @@ -2260,9 +2260,9 @@ if (line.trimmed().startsWith('#')) continue; - QList<QByteArray> prop(line.split('=')); - if (prop.size() > 1) - properties[prop.at(0).trimmed()] = prop.at(1).trimmed(); + const int idx = line.indexOf('='); + if (idx > -1) + properties[line.left(idx).trimmed()] = line.mid(idx + 1).trimmed(); } file.close(); return properties; @@ -2465,7 +2465,7 @@ path += QLatin1String(".aab"); } } - return shellQuote(path); + return path; } bool installApk(const Options &options) @@ -2592,9 +2592,10 @@ auto signPackage = [&](const QString &file) { fprintf(stdout, "Signing file %s\n", qPrintable(file)); fflush(stdout); - auto command = jarSignerTool + QLatin1String(" %1 %2") - .arg(file) - .arg(shellQuote(options.keyStoreAlias)); + QString command = jarSignerTool + + QLatin1String(" %1 %2") + .arg(shellQuote(file)) + .arg(shellQuote(options.keyStoreAlias)); FILE *jarSignerCommand = openProcess(command); if (jarSignerCommand == 0) { @@ -2640,10 +2641,10 @@ } zipAlignTool = QLatin1String("%1%2 -f 4 %3 %4") - .arg(shellQuote(zipAlignTool), - options.verbose ? QLatin1String(" -v") : QLatin1String(), - packagePath(options, UnsignedAPK), - packagePath(options, SignedAPK)); + .arg(shellQuote(zipAlignTool), + options.verbose ? QLatin1String(" -v") : QLatin1String(), + shellQuote(packagePath(options, UnsignedAPK)), + shellQuote(packagePath(options, SignedAPK))); FILE *zipAlignCommand = openProcess(zipAlignTool); if (zipAlignCommand == 0) { @@ -2694,28 +2695,54 @@ } } - zipAlignTool = QLatin1String("%1%2 -f 4 %3 %4") - .arg(shellQuote(zipAlignTool), - options.verbose ? QLatin1String(" -v") : QLatin1String(), - packagePath(options, UnsignedAPK), - packagePath(options, SignedAPK)); + auto zipalignRunner = [](const QString &zipAlignCommandLine) { + FILE *zipAlignCommand = openProcess(zipAlignCommandLine); + if (zipAlignCommand == 0) { + fprintf(stderr, "Couldn't run zipalign.\n"); + return false; + } - FILE *zipAlignCommand = openProcess(zipAlignTool); - if (zipAlignCommand == 0) { - fprintf(stderr, "Couldn't run zipalign.\n"); - return false; - } + char buffer[512]; + while (fgets(buffer, sizeof(buffer), zipAlignCommand) != 0) + fprintf(stdout, "%s", buffer); - char buffer[512]; - while (fgets(buffer, sizeof(buffer), zipAlignCommand) != 0) - fprintf(stdout, "%s", buffer); + return pclose(zipAlignCommand) == 0; + }; - int errorCode = pclose(zipAlignCommand); - if (errorCode != 0) { - fprintf(stderr, "zipalign command failed.\n"); - if (!options.verbose) - fprintf(stderr, " -- Run with --verbose for more information.\n"); - return false; + const QString verifyZipAlignCommandLine = + QLatin1String("%1%2 -c 4 %3") + .arg(shellQuote(zipAlignTool), + options.verbose ? QLatin1String(" -v") : QLatin1String(), + shellQuote(packagePath(options, UnsignedAPK))); + + if (zipalignRunner(verifyZipAlignCommandLine)) { + if (options.verbose) + fprintf(stdout, "APK already aligned, copying it for signing.\n"); + + if (QFile::exists(packagePath(options, SignedAPK))) + QFile::remove(packagePath(options, SignedAPK)); + + if (!QFile::copy(packagePath(options, UnsignedAPK), packagePath(options, SignedAPK))) { + fprintf(stderr, "Could not copy unsigned APK.\n"); + return false; + } + } else { + if (options.verbose) + fprintf(stdout, "APK not aligned, aligning it for signing.\n"); + + const QString zipAlignCommandLine = + QLatin1String("%1%2 -f 4 %3 %4") + .arg(shellQuote(zipAlignTool), + options.verbose ? QLatin1String(" -v") : QLatin1String(), + shellQuote(packagePath(options, UnsignedAPK)), + shellQuote(packagePath(options, SignedAPK))); + + if (!zipalignRunner(zipAlignCommandLine)) { + fprintf(stderr, "zipalign command failed.\n"); + if (!options.verbose) + fprintf(stderr, " -- Run with --verbose for more information.\n"); + return false; + } } QString apkSignerCommandLine = QLatin1String("%1 sign --ks %2") @@ -2733,8 +2760,7 @@ if (options.verbose) apkSignerCommandLine += QLatin1String(" --verbose"); - apkSignerCommandLine += QLatin1String(" %1") - .arg(packagePath(options, SignedAPK)); + apkSignerCommandLine += QLatin1String(" %1").arg(shellQuote(packagePath(options, SignedAPK))); auto apkSignerRunner = [&] { FILE *apkSignerCommand = openProcess(apkSignerCommandLine); @@ -2747,7 +2773,7 @@ while (fgets(buffer, sizeof(buffer), apkSignerCommand) != 0) fprintf(stdout, "%s", buffer); - errorCode = pclose(apkSignerCommand); + int errorCode = pclose(apkSignerCommand); if (errorCode != 0) { fprintf(stderr, "apksigner command failed.\n"); if (!options.verbose) @@ -2761,8 +2787,9 @@ if (!apkSignerRunner()) return false; - apkSignerCommandLine = QLatin1String("%1 verify --verbose %2") - .arg(shellQuote(apksignerTool), packagePath(options, SignedAPK)); + apkSignerCommandLine = + QLatin1String("%1 verify --verbose %2") + .arg(shellQuote(apksignerTool), shellQuote(packagePath(options, SignedAPK))); // Verify the package and remove the unsigned apk return apkSignerRunner() && QFile::remove(packagePath(options, UnsignedAPK)); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/tools/moc/moc.cpp qtbase-opensource-src-5.15.8+dfsg/src/tools/moc/moc.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/tools/moc/moc.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/tools/moc/moc.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -219,6 +219,7 @@ case DOUBLE: case VOID: case BOOL: + case AUTO: type.name += lexem(); isVoid |= (lookup(0) == VOID); break; @@ -305,10 +306,9 @@ return IncludeState::NoInclude; }; do { + handleInclude(); if (lookup() == RBRACE) // accept trailing comma break; - if ( handleInclude() == IncludeState::IncludeEnd) - continue; next(IDENTIFIER); def->values += lexem(); handleInclude(); @@ -458,15 +458,6 @@ scopedFunctionName = tempType.isScoped; } - // we don't support references as return types, it's too dangerous - if (def->type.referenceType == Type::Reference) { - QByteArray rawName = def->type.rawName; - def->type = Type("void"); - def->type.rawName = rawName; - } - - def->normalizedType = normalizeType(def->type.name); - if (!test(RPAREN)) { parseFunctionArguments(def); next(RPAREN); @@ -489,6 +480,10 @@ next(LPAREN); until(RPAREN); } + + if (def->type.name == "auto" && test(ARROW)) + def->type = parseType(); // Parse trailing return-type + if (test(SEMIC)) ; else if ((def->inlineCode = test(LBRACE))) @@ -506,6 +501,22 @@ warning(msg.constData()); return false; } + + QList<QByteArray> typeNameParts = normalizeType(def->type.name).split(' '); + if (typeNameParts.contains("auto")) { + // We expected a trailing return type but we haven't seen one + error("Function declared with auto as return type but missing trailing return type. " + "Return type deduction is not supported."); + } + + // we don't support references as return types, it's too dangerous + if (def->type.referenceType == Type::Reference) { + QByteArray rawName = def->type.rawName; + def->type = Type("void"); + def->type.rawName = rawName; + } + + def->normalizedType = normalizeType(def->type.name); return true; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/tools/uic/python/pythonwriteimports.cpp qtbase-opensource-src-5.15.8+dfsg/src/tools/uic/python/pythonwriteimports.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/tools/uic/python/pythonwriteimports.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/tools/uic/python/pythonwriteimports.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -39,9 +39,9 @@ QT_BEGIN_NAMESPACE static const char *standardImports = -R"I(from PySide2.QtCore import * -from PySide2.QtGui import * -from PySide2.QtWidgets import * +R"I(from PySide2.QtCore import * # type: ignore +from PySide2.QtGui import * # type: ignore +from PySide2.QtWidgets import * # type: ignore )I"; // Change the name of a qrc file "dir/foo.qrc" file to the Python diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/dialogs/qfilesystemmodel.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/dialogs/qfilesystemmodel.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/dialogs/qfilesystemmodel.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/dialogs/qfilesystemmodel.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -397,8 +397,11 @@ if (absolutePath.endsWith(QLatin1Char('/'))) trailingSeparator = QLatin1String("\\"); int r = 0; - QFileSystemModelPrivate::QFileSystemNode *rootNode = const_cast<QFileSystemModelPrivate::QFileSystemNode*>(&root); - if (!root.children.contains(host.toLower())) { + auto rootNode = const_cast<QFileSystemModelPrivate::QFileSystemNode*>(&root); + auto it = root.children.constFind(host); + if (it != root.children.cend()) { + host = it.key(); // Normalize case for lookup in visibleLocation() + } else { if (pathElements.count() == 1 && !absolutePath.endsWith(QLatin1Char('/'))) return rootNode; QFileInfo info(host); @@ -723,6 +726,9 @@ switch (role) { case Qt::EditRole: + if (index.column() == 0) + return d->name(index); + Q_FALLTHROUGH(); case Qt::DisplayRole: switch (index.column()) { case 0: return d->displayName(index); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/dialogs/qfontdialog.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/dialogs/qfontdialog.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/dialogs/qfontdialog.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/dialogs/qfontdialog.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -593,6 +593,14 @@ cstyle.replace(QLatin1String("Oblique"), QLatin1String("Italic")); first = false; goto redo; + } else if (cstyle.contains(QLatin1String("Regular"))) { + cstyle.replace(QLatin1String("Regular"), QLatin1String("Normal")); + first = false; + goto redo; + } else if (cstyle.contains(QLatin1String("Normal"))) { + cstyle.replace(QLatin1String("Normal"), QLatin1String("Regular")); + first = false; + goto redo; } } if (!found) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/dialogs/qmessagebox.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/dialogs/qmessagebox.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/dialogs/qmessagebox.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/dialogs/qmessagebox.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -2046,7 +2046,7 @@ void QMessageBoxPrivate::retranslateStrings() { #if QT_CONFIG(textedit) - if (detailsButton) + if (detailsButton && detailsText) detailsButton->setLabel(detailsText->isHidden() ? ShowLabel : HideLabel); #endif } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/doc/src/guibooks.qdoc qtbase-opensource-src-5.15.8+dfsg/src/widgets/doc/src/guibooks.qdoc --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/doc/src/guibooks.qdoc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/doc/src/guibooks.qdoc 2022-11-11 15:29:17.000000000 +0800 @@ -88,17 +88,4 @@ recognize, find and activate them. This book explains these goals from scratch and how to reach them, both with single icons and icon families. Some 500 examples are scattered throughout the text. - - - \section1 Buying these Books from Amazon.com - - These books are made available in association with Amazon.com, our - favorite online bookstore. Here is more information about - \link http://www.amazon.com/exec/obidos/subst/help/shipping-policy.html/t - Amazon.com's shipping options\endlink and its - \link http://www.amazon.com/exec/obidos/subst/help/desk.html/t - customer service.\endlink When you buy a book by following one of these - links, Amazon.com gives about 15% of the purchase price to - \link http://www.amnesty.org/ Amnesty International.\endlink - */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc qtbase-opensource-src-5.15.8+dfsg/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc 2022-11-11 15:29:17.000000000 +0800 @@ -2167,7 +2167,7 @@ subclasses, QAbstractSpinBox subclasses, QCheckBox, QComboBox, QFrame, QGroupBox, QLabel, QLineEdit, QMenu, QMenuBar, QPushButton, QRadioButton, QSizeGrip, QSpinBox, - QSplitter, QStatusBar, QTextEdit, and QToolTip. + QSplitter, QStatusBar, QTextEdit, QToolButton, and QToolTip. If this property is not specified, the minimum height is derived based on the widget's contents and the style. @@ -2179,6 +2179,9 @@ \snippet code/doc_src_stylesheet.qdoc 66 + \note Setting this property might allow widgets to shrink + smaller than the space required for the contents. + See also \l{#min-width-prop}{min-width}. \row @@ -2190,7 +2193,7 @@ subclasses, QAbstractSpinBox subclasses, QCheckBox, QComboBox, QFrame, QGroupBox, QLabel, QLineEdit, QMenu, QMenuBar, QPushButton, QRadioButton, QSizeGrip, QSpinBox, - QSplitter, QStatusBar, QTextEdit, and QToolTip. + QSplitter, QStatusBar, QTextEdit, QToolButton, and QToolTip. If this property is not specified, the minimum width is derived based on the widget's contents and the style. @@ -2202,6 +2205,9 @@ \snippet code/doc_src_stylesheet.qdoc 67 + \note Setting this property might allow widgets to shrink + smaller than the space required for the contents. + See also \l{#min-height-prop}{min-height}. \row diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/graphicsview/qgraphicsitem.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/graphicsview/qgraphicsitem.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/graphicsview/qgraphicsitem.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/graphicsview/qgraphicsitem.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -2297,7 +2297,7 @@ If no cursor has been set, the cursor of the item beneath is used. \sa setCursor(), hasCursor(), unsetCursor(), QWidget::cursor, - QApplication::overrideCursor() + QGuiApplication::overrideCursor() */ QCursor QGraphicsItem::cursor() const { @@ -2317,7 +2317,7 @@ If no cursor has been set, the cursor of the item beneath is used. \sa cursor(), hasCursor(), unsetCursor(), QWidget::cursor, - QApplication::overrideCursor() + QGuiApplication::overrideCursor() */ void QGraphicsItem::setCursor(const QCursor &cursor) { @@ -10297,6 +10297,7 @@ case QEvent::GraphicsSceneMouseRelease: case QEvent::KeyPress: case QEvent::KeyRelease: + case QEvent::InputMethod: // Reset the focus widget's input context, regardless // of how this item gained or lost focus. if (event->type() == QEvent::FocusIn || event->type() == QEvent::FocusOut) { @@ -10516,14 +10517,16 @@ v = int(inputMethodHints()); else if (dd->control) v = dd->control->inputMethodQuery(query, QVariant()); - if (v.userType() == QMetaType::QRectF) - v = v.toRectF().translated(-dd->controlOffset()); - else if (v.userType() == QMetaType::QPointF) - v = v.toPointF() - dd->controlOffset(); - else if (v.userType() == QMetaType::QRect) - v = v.toRect().translated(-dd->controlOffset().toPoint()); - else if (v.userType() == QMetaType::QPoint) - v = v.toPoint() - dd->controlOffset().toPoint(); + if (dd->control) { + if (v.userType() == QMetaType::QRectF) + v = v.toRectF().translated(-dd->controlOffset()); + else if (v.userType() == QMetaType::QPointF) + v = v.toPointF() - dd->controlOffset(); + else if (v.userType() == QMetaType::QRect) + v = v.toRect().translated(-dd->controlOffset().toPoint()); + else if (v.userType() == QMetaType::QPoint) + v = v.toPoint() - dd->controlOffset().toPoint(); + } return v; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/graphicsview/qgraphicsproxywidget.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/graphicsview/qgraphicsproxywidget.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/graphicsview/qgraphicsproxywidget.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/graphicsview/qgraphicsproxywidget.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -832,6 +832,10 @@ return QGraphicsWidget::event(event); switch (event->type()) { + case QEvent::WindowActivate: + case QEvent::WindowDeactivate: + QCoreApplication::sendEvent(d->widget, event); + break; case QEvent::StyleChange: // Propagate style changes to the embedded widget. if (!d->styleChangeMode) { @@ -1551,6 +1555,10 @@ if (exposedWidgetRect.isEmpty()) return; + // When rendering to pdf etc. painting may go outside widget boundaries unless clipped + if (painter->device()->devType() != QInternal::Widget && (flags() & ItemClipsChildrenToShape)) + painter->setClipRect(d->widget->geometry(), Qt::IntersectClip); + d->widget->render(painter, exposedWidgetRect.topLeft(), exposedWidgetRect); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/itemviews/qabstractitemdelegate.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/itemviews/qabstractitemdelegate.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/itemviews/qabstractitemdelegate.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/itemviews/qabstractitemdelegate.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -389,10 +389,12 @@ { if (!event || !view) return false; - Q_D(QAbstractItemDelegate); + Q_UNUSED(index); + Q_UNUSED(option); switch (event->type()) { #ifndef QT_NO_TOOLTIP case QEvent::ToolTip: { + Q_D(QAbstractItemDelegate); QHelpEvent *he = static_cast<QHelpEvent*>(event); const int precision = inherits("QItemDelegate") ? 10 : 6; // keep in sync with DBL_DIG in qitemdelegate.cpp const QString tooltip = index.isValid() ? @@ -413,6 +415,7 @@ event->setAccepted(index.data(Qt::WhatsThisRole).isValid()); break; case QEvent::WhatsThis: { + Q_D(QAbstractItemDelegate); QHelpEvent *he = static_cast<QHelpEvent*>(event); const int precision = inherits("QItemDelegate") ? 10 : 6; // keep in sync with DBL_DIG in qitemdelegate.cpp const QString whatsthis = index.isValid() ? @@ -423,6 +426,7 @@ break; } #endif + case QEvent::None: default: break; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/itemviews/qabstractitemview.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/itemviews/qabstractitemview.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/itemviews/qabstractitemview.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/itemviews/qabstractitemview.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -87,6 +87,7 @@ pressedModifiers(Qt::NoModifier), pressedPosition(QPoint(-1, -1)), pressedAlreadySelected(false), + releaseFromDoubleClick(false), viewportEnteredNeeded(false), state(QAbstractItemView::NoState), stateBeforeAnimation(QAbstractItemView::NoState), @@ -1754,6 +1755,7 @@ void QAbstractItemView::mousePressEvent(QMouseEvent *event) { Q_D(QAbstractItemView); + d->releaseFromDoubleClick = false; d->delayedAutoScroll.stop(); //any interaction with the view cancel the auto scrolling QPoint pos = event->pos(); QPersistentModelIndex index = indexAt(pos); @@ -1899,6 +1901,8 @@ void QAbstractItemView::mouseReleaseEvent(QMouseEvent *event) { Q_D(QAbstractItemView); + const bool releaseFromDoubleClick = d->releaseFromDoubleClick; + d->releaseFromDoubleClick = false; QPoint pos = event->pos(); QPersistentModelIndex index = indexAt(pos); @@ -1911,7 +1915,7 @@ return; } - bool click = (index == d->pressedIndex && index.isValid()); + bool click = (index == d->pressedIndex && index.isValid() && !releaseFromDoubleClick); bool selectedClicked = click && (event->button() == Qt::LeftButton) && d->pressedAlreadySelected; EditTrigger trigger = (selectedClicked ? SelectedClicked : NoEditTriggers); const bool edited = click ? edit(index, trigger, event) : false; @@ -1964,7 +1968,7 @@ if ((event->button() == Qt::LeftButton) && !edit(persistent, DoubleClicked, event) && !style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick, nullptr, this)) emit activated(persistent); - d->pressedIndex = QModelIndex(); + d->releaseFromDoubleClick = true; } #if QT_CONFIG(draganddrop) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/itemviews/qabstractitemview_p.h qtbase-opensource-src-5.15.8+dfsg/src/widgets/itemviews/qabstractitemview_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/itemviews/qabstractitemview_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/itemviews/qabstractitemview_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -385,6 +385,7 @@ Qt::KeyboardModifiers pressedModifiers; QPoint pressedPosition; bool pressedAlreadySelected; + bool releaseFromDoubleClick; //forces the next mouseMoveEvent to send the viewportEntered signal //if the mouse is over the viewport and not over an item diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/itemviews/qlistview.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/itemviews/qlistview.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/itemviews/qlistview.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/itemviews/qlistview.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -572,6 +572,8 @@ return; const QRect rect = visualRect(index); + if (!rect.isValid()) + return; if (hint == EnsureVisible && d->viewport->rect().contains(rect)) { d->viewport->update(rect); return; @@ -2930,6 +2932,8 @@ dd->stopAutoScroll(); draggedItems.clear(); dd->emitIndexesMoved(indexes); + // do not delete item on internal move, see filterStartDrag() + dd->dropEventMoved = true; e->accept(); // we have handled the event // if the size has not grown, we need to check if it has shrinked if (contentsSize != contents) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/itemviews/qtreeview.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/itemviews/qtreeview.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/itemviews/qtreeview.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/itemviews/qtreeview.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1448,7 +1448,8 @@ void QTreeView::drawTree(QPainter *painter, const QRegion ®ion) const { Q_D(const QTreeView); - const QVector<QTreeViewItem> viewItems = d->viewItems; + // d->viewItems changes when posted layouts are executed in itemDecorationAt, so don't copy + const QVector<QTreeViewItem> &viewItems = d->viewItems; QStyleOptionViewItem option = d->viewOptionsV1(); const QStyle::State state = option.state; @@ -1947,7 +1948,7 @@ if (!style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick, nullptr, this)) emit activated(persistent); - d->pressedIndex = QModelIndex(); + d->releaseFromDoubleClick = true; d->executePostedLayout(); // we need to make sure viewItems is updated if (d->itemsExpandable && d->expandsOnDoubleClick @@ -2664,7 +2665,10 @@ \since 4.2 Expands all expandable items. - \warning: if the model contains a large number of items, + \note This function will not try to \l{QAbstractItemModel::fetchMore}{fetch more} + data. + + \warning If the model contains a large number of items, this function will take some time to execute. \sa collapseAll(), expand(), collapse(), setExpanded() @@ -2686,7 +2690,10 @@ A \a depth of -1 will expand all children, a \a depth of 0 will only expand the given \a index. - \warning: if the model contains a large number of items, + \note This function will not try to \l{QAbstractItemModel::fetchMore}{fetch more} + data. + + \warning If the model contains a large number of items, this function will take some time to execute. \sa expandAll() @@ -2751,6 +2758,9 @@ \since 4.3 Expands all expandable items to the given \a depth. + \note This function will not try to \l{QAbstractItemModel::fetchMore}{fetch more} + data. + \sa expandAll(), collapseAll(), expand(), collapse(), setExpanded() */ void QTreeView::expandToDepth(int depth) @@ -3459,6 +3469,7 @@ int QTreeViewPrivate::itemHeight(int item) const { + Q_ASSERT(item < viewItems.count()); if (uniformRowHeights) return defaultItemHeight; if (viewItems.isEmpty()) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/itemviews/qtreewidget.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/itemviews/qtreewidget.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/itemviews/qtreewidget.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/itemviews/qtreewidget.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -508,22 +508,18 @@ bool QTreeModel::removeRows(int row, int count, const QModelIndex &parent) { if (count < 1 || row < 0 || (row + count) > rowCount(parent)) return false; - - beginRemoveRows(parent, row, row + count - 1); - - QSignalBlocker blocker(this); - - QTreeWidgetItem *itm = item(parent); + QTreeWidgetItem *parentItem = item(parent); + // if parentItem is valid, begin/end RemoveRows is handled by takeChild below + if (!parentItem) + beginRemoveRows(parent, row, row + count - 1); for (int i = row + count - 1; i >= row; --i) { - QTreeWidgetItem *child = itm ? itm->takeChild(i) : rootItem->children.takeAt(i); + QTreeWidgetItem *child = parentItem ? parentItem->takeChild(i) : rootItem->children.takeAt(i); Q_ASSERT(child); child->view = nullptr; delete child; - child = nullptr; } - blocker.unblock(); - - endRemoveRows(); + if (!parentItem) + endRemoveRows(); return true; } @@ -2601,9 +2597,6 @@ This signal is emitted when the specified \a item is expanded so that all of its children are displayed. - \note This signal will not be emitted if an item changes its state when - expandAll() is invoked. - \sa QTreeWidgetItem::isExpanded(), itemCollapsed(), expandItem() */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/kernel/qaction.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/kernel/qaction.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/kernel/qaction.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/kernel/qaction.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1304,8 +1304,7 @@ shown via a context menu, when it is false, it is not shown. The default is to follow whether the Qt::AA_DontShowShortcutsInContextMenus attribute - is set for the application, falling back to the widget style hint. - Explicitly setting this property overrides the presence (or abscence) of the attribute. + is set for the application. Explicitly setting this property overrides the attribute. \sa QAction::shortcut, QCoreApplication::setAttribute() */ @@ -1327,8 +1326,7 @@ { Q_D(const QAction); if (d->shortcutVisibleInContextMenu == -1) { - return !QCoreApplication::testAttribute(Qt::AA_DontShowShortcutsInContextMenus) - && QGuiApplication::styleHints()->showShortcutsInContextMenus(); + return !QCoreApplication::testAttribute(Qt::AA_DontShowShortcutsInContextMenus); } return d->shortcutVisibleInContextMenu; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/kernel/qapplication.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/kernel/qapplication.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/kernel/qapplication.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/kernel/qapplication.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -2135,7 +2135,10 @@ // \a next). This is to ensure that we can tab in and out of compound widgets // without getting stuck in a tab-loop between parent and child. QWidget *focusProxy = test->d_func()->deepestFocusProxy(); - const bool canTakeFocus = ((focusProxy ? focusProxy->focusPolicy() : test->focusPolicy()) + auto effectiveFocusPolicy = [](QWidget *widget) { + return widget->isEnabled() ? widget->focusPolicy() : Qt::NoFocus; + }; + const bool canTakeFocus = (effectiveFocusPolicy(focusProxy ? focusProxy : test) & focus_flag) == focus_flag; const bool composites = focusProxy ? (next ? focusProxy->isAncestorOf(test) : test->isAncestorOf(focusProxy)) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/kernel/qgridlayout.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/kernel/qgridlayout.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/kernel/qgridlayout.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/kernel/qgridlayout.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -149,14 +149,14 @@ QRect cellRect(int row, int col) const; inline QLayoutItem *itemAt(int index) const { - if (index < things.count()) + if (index >= 0 && index < things.count()) return things.at(index)->item(); else return nullptr; } inline QLayoutItem *takeAt(int index) { Q_Q(QGridLayout); - if (index < things.count()) { + if (index >= 0 && index < things.count()) { if (QGridBox *b = things.takeAt(index)) { QLayoutItem *item = b->takeItem(); if (QLayout *l = item->layout()) { @@ -184,7 +184,7 @@ } void getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const { - if (index < things.count()) { + if (index >= 0 && index < things.count()) { const QGridBox *b = things.at(index); int toRow = b->toRow(rr); int toCol = b->toCol(cc); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/kernel/qlayout.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/kernel/qlayout.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/kernel/qlayout.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/kernel/qlayout.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1386,6 +1386,11 @@ */ void QLayout::removeWidget(QWidget *widget) { + if (Q_UNLIKELY(!widget)) { + qWarning("QLayout::removeWidget: Cannot remove a null widget."); + return; + } + int i = 0; QLayoutItem *child; while ((child = itemAt(i))) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/kernel/qsizepolicy.h qtbase-opensource-src-5.15.8+dfsg/src/widgets/kernel/qsizepolicy.h --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/kernel/qsizepolicy.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/kernel/qsizepolicy.h 2022-11-11 15:29:17.000000000 +0800 @@ -133,9 +133,10 @@ Q_DECL_RELAXED_CONSTEXPR void setVerticalPolicy(Policy d) noexcept { bits.verPolicy = d; } void setControlType(ControlType type) noexcept; + // ### Qt 7: consider making Policy a QFlags and removing these casts QT_SIZEPOLICY_CONSTEXPR Qt::Orientations expandingDirections() const noexcept { - return ( (verticalPolicy() & ExpandFlag) ? Qt::Vertical : Qt::Orientations() ) - | ( (horizontalPolicy() & ExpandFlag) ? Qt::Horizontal : Qt::Orientations() ) ; + return ( (verticalPolicy() & static_cast<Policy>(ExpandFlag)) ? Qt::Vertical : Qt::Orientations() ) + | ( (horizontalPolicy() & static_cast<Policy>(ExpandFlag)) ? Qt::Horizontal : Qt::Orientations() ) ; } Q_DECL_RELAXED_CONSTEXPR void setHeightForWidth(bool b) noexcept { bits.hfw = b; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/kernel/qwidget.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/kernel/qwidget.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/kernel/qwidget.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/kernel/qwidget.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -783,6 +783,8 @@ and a compositing window manager. \li Windows: The widget needs to have the Qt::FramelessWindowHint window flag set for the translucency to work. + \li \macos: The widget needs to have the Qt::FramelessWindowHint window flag set + for the translucency to work. \endlist @@ -2958,9 +2960,9 @@ Calling this function only affects \l{isWindow()}{windows}. - To return from full-screen mode, call showNormal(). + To return from full-screen mode, call showNormal() or close(). - Full-screen mode works fine under Windows, but has certain + \note Full-screen mode works fine under Windows, but has certain problems under X. These problems are due to limitations of the ICCCM protocol that specifies the communication between X11 clients and the window manager. ICCCM simply does not understand @@ -2980,7 +2982,14 @@ X11 window managers that follow modern post-ICCCM specifications support full-screen mode properly. - \sa showNormal(), showMaximized(), show(), hide(), isVisible() + On macOS, showing a window full screen puts the entire application in + full-screen mode, providing it with a dedicated desktop. Showing another + window while the application runs in full-screen mode might automatically + make that window full screen as well. To prevent that, exit full-screen + mode by calling showNormal() or by close() on the full screen window + before showing another window. + + \sa showNormal(), showMaximized(), show(), isVisible(), close() */ void QWidget::showFullScreen() { @@ -4682,7 +4691,9 @@ /*! \property QWidget::layoutDirection - \brief the layout direction for this widget + \brief the layout direction for this widget. + + \note This method no longer affects text layout direction since Qt 4.7. By default, this property is set to Qt::LeftToRight. @@ -4693,7 +4704,6 @@ has been called for the parent do not inherit the parent's layout direction. - This method no longer affects text layout direction since Qt 4.7. \sa QApplication::layoutDirection */ @@ -5286,10 +5296,11 @@ QWidgetEffectSourcePrivate *sourced = static_cast<QWidgetEffectSourcePrivate *> (source->d_func()); if (!sourced->context) { - QWidgetPaintContext context(pdev, rgn, offset, flags, sharedPainter, repaintManager); + const QRegion effectRgn(rgn.boundingRect()); + QWidgetPaintContext context(pdev, effectRgn, offset, flags, sharedPainter, repaintManager); sourced->context = &context; if (!sharedPainter) { - setSystemClip(pdev->paintEngine(), pdev->devicePixelRatioF(), rgn.translated(offset)); + setSystemClip(pdev->paintEngine(), pdev->devicePixelRatioF(), effectRgn.translated(offset)); QPainter p(pdev); p.translate(offset); context.painter = &p; @@ -5303,7 +5314,7 @@ } sharedPainter->save(); sharedPainter->translate(offset); - setSystemClip(sharedPainter->paintEngine(), sharedPainter->device()->devicePixelRatioF(), rgn.translated(offset)); + setSystemClip(sharedPainter->paintEngine(), sharedPainter->device()->devicePixelRatioF(), effectRgn.translated(offset)); graphicsEffect->draw(sharedPainter); setSystemClip(sharedPainter->paintEngine(), 1, QRegion()); sharedPainter->restore(); @@ -5311,7 +5322,7 @@ sourced->context = nullptr; if (repaintManager) - repaintManager->markNeedsFlush(q, rgn, offset); + repaintManager->markNeedsFlush(q, effectRgn, offset); return; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/kernel/qwidgetrepaintmanager.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/kernel/qwidgetrepaintmanager.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/kernel/qwidgetrepaintmanager.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/kernel/qwidgetrepaintmanager.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -801,6 +801,18 @@ return true; } +static bool isDrawnInEffect(const QWidget *w) +{ +#if QT_CONFIG(graphicseffect) + do { + if (w->graphicsEffect()) + return true; + w = w->parentWidget(); + } while (w); +#endif + return false; +} + void QWidgetRepaintManager::paintAndFlush() { qCInfo(lcWidgetPainting) << "Painting and flushing dirty" @@ -888,7 +900,8 @@ } #endif - if (!hasDirtySiblingsAbove && wd->isOpaque && !dirty.intersects(widgetDirty.boundingRect())) { + if (!isDrawnInEffect(w) && !hasDirtySiblingsAbove && wd->isOpaque + && !dirty.intersects(widgetDirty.boundingRect())) { opaqueNonOverlappedWidgets.append(w); } else { resetWidget(w); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/styles/qstylesheetstyle.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/styles/qstylesheetstyle.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/styles/qstylesheetstyle.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/styles/qstylesheetstyle.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -60,6 +60,7 @@ #if QT_CONFIG(textedit) #include <qtextedit.h> #endif +#include <qplaintextedit.h> #include <private/qwindowsstyle_p.h> #if QT_CONFIG(combobox) #include <qcombobox.h> @@ -120,6 +121,9 @@ #if QT_CONFIG(toolbar) #include <QtWidgets/qtoolbar.h> #endif +#if QT_CONFIG(pushbutton) +#include <QtWidgets/qpushbutton.h> +#endif #include <QtGui/qpainterpath.h> #include <QtGui/qscreen.h> @@ -2089,6 +2093,9 @@ } #endif + else if (const QPlainTextEdit *edit = qobject_cast<const QPlainTextEdit *>(obj)) { + extraClass |= (edit->isReadOnly() ? PseudoClass_ReadOnly : PseudoClass_Editable); + } #if QT_CONFIG(textedit) else if (const QTextEdit *edit = qobject_cast<const QTextEdit *>(obj)) { extraClass |= (edit->isReadOnly() ? PseudoClass_ReadOnly : PseudoClass_Editable); @@ -2525,7 +2532,9 @@ pc |= (edit->isReadOnly() ? PseudoClass_ReadOnly : PseudoClass_Editable); } else #endif - { } // required for the above ifdef'ery to work + if (const QPlainTextEdit *edit = qobject_cast<const QPlainTextEdit *>(w)) { + pc |= (edit->isReadOnly() ? PseudoClass_ReadOnly : PseudoClass_Editable); + } return pc; } @@ -2922,6 +2931,12 @@ if (!rule.hasBackground() || rule.background()->isTransparent() || rule.hasBox() || (!rule.hasNativeBorder() && !rule.border()->isOpaque())) w->setAttribute(Qt::WA_OpaquePaintEvent, false); + if (rule.hasBox() || !rule.hasNativeBorder() +#if QT_CONFIG(pushbutton) + || (qobject_cast<QPushButton *>(w)) +#endif + ) + w->setAttribute(Qt::WA_MacShowFocusRect, false); } } @@ -3527,7 +3542,8 @@ if (btn->features & QStyleOptionButton::HasMenu) { QRenderRule subRule = renderRule(w, opt, PseudoElement_PushButtonMenuIndicator); - QRect ir = positionRect(w, rule, subRule, PseudoElement_PushButtonMenuIndicator, opt->rect, opt->direction); + QRect ir = positionRect(w, rule, subRule, PseudoElement_PushButtonMenuIndicator, + baseStyle()->subElementRect(SE_PushButtonBevel, btn, w), opt->direction); if (subRule.hasDrawable()) { subRule.drawRule(p, ir); } else { @@ -3552,10 +3568,10 @@ QRect textRect = button->rect; const uint horizontalAlignMask = Qt::AlignHCenter | Qt::AlignLeft | Qt::AlignRight; - const uint verticalAlignMask = Qt::AlignVCenter | Qt::AlignTop | Qt::AlignLeft; + const uint verticalAlignMask = Qt::AlignVCenter | Qt::AlignTop | Qt::AlignBottom; - const Qt::Alignment textAlignment = rule.position()->textAlignment; - if (rule.hasPosition() && textAlignment != 0) { + if (rule.hasPosition() && rule.position()->textAlignment != 0) { + Qt::Alignment textAlignment = rule.position()->textAlignment; tf |= (textAlignment & verticalAlignMask) ? (textAlignment & verticalAlignMask) : Qt::AlignVCenter; tf |= (textAlignment & horizontalAlignMask) ? (textAlignment & horizontalAlignMask) : Qt::AlignHCenter; if (!styleHint(SH_UnderlineShortcut, button, w)) @@ -3614,8 +3630,6 @@ iconRect.translate(pixelMetric(PM_ButtonShiftHorizontal, opt, w), pixelMetric(PM_ButtonShiftVertical, opt, w)); p->drawPixmap(iconRect, pixmap); - }else { - tf |= textAlignment; } if (button->state & (State_On | State_Sunken)) @@ -4435,14 +4449,14 @@ case PE_PanelLineEdit: if (const QStyleOptionFrame *frm = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { -#if QT_CONFIG(spinbox) - if (w && qobject_cast<const QAbstractSpinBox *>(w->parentWidget())) { - QRenderRule spinboxRule = renderRule(w->parentWidget(), opt); - if (!spinboxRule.hasNativeBorder() || !spinboxRule.baseStyleCanDraw()) + QWidget *container = containerWidget(w); + if (container != w) { + QRenderRule containerRule = renderRule(container, opt); + if (!containerRule.hasNativeBorder() || !containerRule.baseStyleCanDraw()) return; - rule = spinboxRule; + rule = containerRule; } -#endif + if (rule.hasNativeBorder()) { QStyleOptionFrame frmOpt(*frm); rule.configurePalette(&frmOpt.palette, QPalette::Text, QPalette::Base); @@ -5157,18 +5171,19 @@ QSize sz(csz); if (mi->text.contains(QLatin1Char('\t'))) sz.rwidth() += 12; //as in QCommonStyle - bool checkable = mi->checkType != QStyleOptionMenuItem::NotCheckable; if (!mi->icon.isNull()) { const int pmSmall = pixelMetric(PM_SmallIconSize); const QSize pmSize = mi->icon.actualSize(QSize(pmSmall, pmSmall)); - sz.rwidth() += pmSize.width() + 4; - } else if (checkable) { + sz.rwidth() += std::max(mi->maxIconWidth, pmSize.width()) + 4; + } else if (mi->menuHasCheckableItems) { QRenderRule subSubRule = renderRule(w, opt, PseudoElement_MenuCheckMark); QRect checkmarkRect = positionRect(w, subRule, subSubRule, PseudoElement_MenuCheckMark, opt->rect, opt->direction); sz.rwidth() += std::max(mi->maxIconWidth, checkmarkRect.width()) + 4; + } else { + sz.rwidth() += mi->maxIconWidth; } if (subRule.hasFont) { - QFontMetrics fm(subRule.font); + QFontMetrics fm(subRule.font.resolve(mi->font)); const QRect r = fm.boundingRect(QRect(), Qt::TextSingleLine | Qt::TextShowMnemonic, mi->text); sz = sz.expandedTo(r.size()); } @@ -5841,6 +5856,13 @@ case SE_PushButtonBevel: case SE_PushButtonFocusRect: if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { + if (btn->features & QStyleOptionButton::HasMenu + && hasStyleRule(w, PseudoElement_PushButtonMenuIndicator)) { + QStyleOptionButton btnOpt(*btn); + btnOpt.features &= ~QStyleOptionButton::HasMenu; + return rule.baseStyleCanDraw() ? baseStyle()->subElementRect(se, &btnOpt, w) + : QWindowsStyle::subElementRect(se, &btnOpt, w); + } if (rule.hasBox() || !rule.hasNativeBorder()) { return visualRect(opt->direction, opt->rect, se == SE_PushButtonBevel ? rule.borderRect(opt->rect) diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/util/qcompleter.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/util/qcompleter.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/util/qcompleter.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/util/qcompleter.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1208,7 +1208,7 @@ /*! \property QCompleter::filterMode - \brief how the filtering is performed + \brief This property controls how filtering is performed. \since 5.2 If filterMode is set to Qt::MatchStartsWith, only those entries that start @@ -1216,11 +1216,14 @@ the entries that contain the typed characters, and Qt::MatchEndsWith the ones that end with the typed characters. - Currently, only these three modes are implemented. Setting filterMode to - any other Qt::MatchFlag will issue a warning, and no action will be - performed. + Setting filterMode to any other Qt::MatchFlag will issue a warning, and no + action will be performed. Because of this, the \c Qt::MatchCaseSensitive + flag has no effect. Use the \l caseSensitivity property to control case + sensitivity. The default mode is Qt::MatchStartsWith. + + \sa caseSensitivity */ void QCompleter::setFilterMode(Qt::MatchFlags filterMode) @@ -1747,9 +1750,9 @@ \property QCompleter::caseSensitivity \brief the case sensitivity of the matching - The default is Qt::CaseSensitive. + The default value is \c Qt::CaseSensitive. - \sa completionColumn, completionRole, modelSorting + \sa completionColumn, completionRole, modelSorting, filterMode */ void QCompleter::setCaseSensitivity(Qt::CaseSensitivity cs) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qabstractscrollarea.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qabstractscrollarea.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qabstractscrollarea.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qabstractscrollarea.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -442,8 +442,10 @@ viewportRect.adjust(right, top, -left, -bottom); else viewportRect.adjust(left, top, -right, -bottom); + viewportRect = QStyle::visualRect(opt.direction, opt.rect, viewportRect); + viewportRect.translate(-overshoot); + viewport->setGeometry(viewportRect); // resize the viewport last - viewport->setGeometry(QStyle::visualRect(opt.direction, opt.rect, viewportRect)); // resize the viewport last *needHorizontalScrollbar = needh; *needVerticalScrollbar = needv; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qcombobox.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qcombobox.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qcombobox.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qcombobox.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -547,8 +547,6 @@ setLineWidth(1); } - setFrameStyle(combo->style()->styleHint(QStyle::SH_ComboBox_PopupFrameStyle, &opt, combo)); - if (top) { layout->insertWidget(0, top); connect(top, SIGNAL(doScroll(int)), this, SLOT(scrollItemView(int))); @@ -561,7 +559,7 @@ // Some styles (Mac) have a margin at the top and bottom of the popup. layout->insertSpacing(0, 0); layout->addSpacing(0); - updateTopBottomMargin(); + updateStyleSettings(); } void QComboBoxPrivateContainer::scrollItemView(int action) @@ -744,14 +742,20 @@ boxLayout->invalidate(); } +void QComboBoxPrivateContainer::updateStyleSettings() +{ + // add scroller arrows if style needs them + QStyleOptionComboBox opt = comboStyleOption(); + view->setMouseTracking(combo->style()->styleHint(QStyle::SH_ComboBox_ListMouseTracking, &opt, combo) || + combo->style()->styleHint(QStyle::SH_ComboBox_Popup, &opt, combo)); + setFrameStyle(combo->style()->styleHint(QStyle::SH_ComboBox_PopupFrameStyle, &opt, combo)); + updateTopBottomMargin(); +} + void QComboBoxPrivateContainer::changeEvent(QEvent *e) { - if (e->type() == QEvent::StyleChange) { - QStyleOptionComboBox opt = comboStyleOption(); - view->setMouseTracking(combo->style()->styleHint(QStyle::SH_ComboBox_ListMouseTracking, &opt, combo) || - combo->style()->styleHint(QStyle::SH_ComboBox_Popup, &opt, combo)); - setFrameStyle(combo->style()->styleHint(QStyle::SH_ComboBox_PopupFrameStyle, &opt, combo)); - } + if (e->type() == QEvent::StyleChange) + updateStyleSettings(); QFrame::changeEvent(e); } @@ -2896,13 +2900,15 @@ QGuiApplication::inputMethod()->reset(); } - QScrollBar *sb = view()->horizontalScrollBar(); - Qt::ScrollBarPolicy policy = view()->horizontalScrollBarPolicy(); - bool needHorizontalScrollBar = (policy == Qt::ScrollBarAsNeeded || policy == Qt::ScrollBarAlwaysOn) - && sb->minimum() < sb->maximum(); - if (needHorizontalScrollBar) { + const QScrollBar *sb = view()->horizontalScrollBar(); + const auto needHorizontalScrollBar = [this, sb]{ + const Qt::ScrollBarPolicy policy = view()->horizontalScrollBarPolicy(); + return (policy == Qt::ScrollBarAsNeeded || policy == Qt::ScrollBarAlwaysOn) + && sb->minimum() < sb->maximum(); + }; + const bool neededHorizontalScrollBar = needHorizontalScrollBar(); + if (neededHorizontalScrollBar) listRect.adjust(0, 0, 0, sb->height()); - } // Hide the scrollers here, so that the listrect gets the full height of the container // If the scrollers are truly needed, the later call to container->updateScrollers() @@ -2945,6 +2951,11 @@ } } container->show(); + if (!neededHorizontalScrollBar && needHorizontalScrollBar()) { + listRect.adjust(0, 0, 0, sb->height()); + container->setGeometry(listRect); + } + container->updateScrollers(); view()->setFocus(); @@ -3114,6 +3125,8 @@ Q_D(QComboBox); switch (e->type()) { case QEvent::StyleChange: + if (d->container) + d->container->updateStyleSettings(); d->updateDelegate(); #ifdef Q_OS_MAC case QEvent::MacSizeChange: diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qcombobox_p.h qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qcombobox_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qcombobox_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qcombobox_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -223,6 +223,7 @@ int topMargin() const; int bottomMargin() const { return topMargin(); } void updateTopBottomMargin(); + void updateStyleSettings(); QTimer blockMouseReleaseTimer; QBasicTimer adjustSizeTimer; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qdatetimeedit_p.h qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qdatetimeedit_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qdatetimeedit_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qdatetimeedit_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -107,7 +107,7 @@ if (keyboardTracking) return maximum.toDateTime(); if (spec != Qt::LocalTime) - return QDateTime(QDATETIMEEDIT_DATE_MIN.startOfDay(spec)); + return QDateTime(QDATETIMEEDIT_DATE_MAX.endOfDay(spec)); return QDateTimeParser::getMaximum(); } QLocale locale() const override { return q_func()->locale(); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qdockwidget.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qdockwidget.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qdockwidget.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qdockwidget.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -973,13 +973,27 @@ && mwlayout->pluggingWidget == nullptr && (event->pos() - state->pressPos).manhattanLength() > QApplication::startDragDistance()) { - startDrag(); - q->grabMouse(); - ret = true; + +#ifdef Q_OS_MACOS + if (windowHandle() && !q->isFloating()) { + // When using native widgets on mac, we have not yet been successful in + // starting a drag on an NSView that belongs to one window (QMainWindow), + // but continue the drag on another (QDockWidget). This is what happens if + // we try to make this widget floating during a drag. So as a fall back + // solution, we simply make this widget floating instead, when we would + // otherwise start a drag. + q->setFloating(true); + } else +#endif + { + startDrag(); + q->grabMouse(); + ret = true; + } } } - if (state->dragging && !state->nca) { + if (state && state->dragging && !state->nca) { QMargins windowMargins = q->window()->windowHandle()->frameMargins(); QPoint windowMarginOffset = QPoint(windowMargins.left(), windowMargins.top()); QPoint pos = event->globalPos() - state->pressPos - windowMarginOffset; @@ -1222,6 +1236,11 @@ on whether it is docked; a docked QDockWidget has no frame and a smaller title bar. + \note On macOS, if the QDockWidget has a native window handle (for example, + if winId() is called on it or the child widget), then due to a limitation it will not be + possible to drag the dock widget when undocking. Starting the drag will undock + the dock widget, but a second drag will be needed to move the dock widget itself. + \sa QMainWindow, {Dock Widgets Example} */ diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qfontcombobox.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qfontcombobox.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qfontcombobox.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qfontcombobox.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -313,6 +313,10 @@ void QFontComboBoxPrivate::_q_updateModel() { Q_Q(QFontComboBox); + + if (QCoreApplication::closingDown()) + return; + const int scalableMask = (QFontComboBox::ScalableFonts | QFontComboBox::NonScalableFonts); const int spacingMask = (QFontComboBox::ProportionalFonts | QFontComboBox::MonospacedFonts); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qlineedit.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qlineedit.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qlineedit.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qlineedit.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -82,8 +82,7 @@ #include "private/qapplication_p.h" #include "private/qshortcutmap_p.h" #include "qkeysequence.h" -#define ACCEL_KEY(k) ((!QCoreApplication::testAttribute(Qt::AA_DontShowIconsInMenus) \ - && QGuiApplication::styleHints()->showShortcutsInContextMenus()) \ +#define ACCEL_KEY(k) (!QCoreApplication::testAttribute(Qt::AA_DontShowShortcutsInContextMenus) \ && !QGuiApplicationPrivate::instance()->shortcutMap.hasShortcutForKeySequence(k) ? \ QLatin1Char('\t') + QKeySequence(k).toString(QKeySequence::NativeText) : QString()) #else @@ -1901,8 +1900,11 @@ d->control->moveCursor(d->control->nextMaskBlank(0)); else if (!d->control->hasSelectedText()) selectAll(); + else + updateMicroFocus(); } else if (e->reason() == Qt::MouseFocusReason) { d->clickCausedFocus = 1; + updateMicroFocus(); } #ifdef QT_KEYPAD_NAVIGATION if (!QApplicationPrivate::keypadNavigationEnabled() || (hasEditFocus() && ( e->reason() == Qt::PopupFocusReason))) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qlineedit_p.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qlineedit_p.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qlineedit_p.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qlineedit_p.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -407,8 +407,9 @@ void QLineEditIconButton::onAnimationFinished() { - if (shouldHideWithText() && isVisible() && !m_wasHidden) { + if (shouldHideWithText() && isVisible() && m_fadingOut) { hide(); + m_fadingOut = false; // Invalidate previous geometry to take into account new size of side widgets if (auto le = lineEditPrivate()) @@ -418,7 +419,7 @@ void QLineEditIconButton::animateShow(bool visible) { - m_wasHidden = visible; + m_fadingOut = !visible; if (shouldHideWithText() && !isVisible()) { show(); @@ -480,7 +481,7 @@ Q_Q(QLineEdit); if (!q->text().isEmpty()) { q->clear(); - emit q->textEdited(QString()); + _q_textEdited(QString()); } } @@ -664,10 +665,18 @@ if (widgets.empty()) return defaultMargin; - return defaultMargin + (parameters.margin + parameters.widgetWidth) * - int(std::count_if(widgets.begin(), widgets.end(), + const auto visibleSideWidgetCount = std::count_if(widgets.begin(), widgets.end(), [](const QLineEditPrivate::SideWidgetEntry &e) { - return e.widget->isVisibleTo(e.widget->parentWidget()); })); +#if QT_CONFIG(animation) + // a button that's fading out doesn't get any space + if (auto* iconButton = qobject_cast<QLineEditIconButton*>(e.widget)) + return iconButton->needsSpace(); + +#endif + return e.widget->isVisibleTo(e.widget->parentWidget()); + }); + + return defaultMargin + (parameters.margin + parameters.widgetWidth) * visibleSideWidgetCount; } QMargins QLineEditPrivate::effectiveTextMargins() const diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qlineedit_p.h qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qlineedit_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qlineedit_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qlineedit_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -95,6 +95,11 @@ bool shouldHideWithText() const; void setHideWithText(bool hide); + bool needsSpace() const { + if (m_fadingOut) + return false; + return isVisibleTo(parentWidget()); + } #endif protected: @@ -118,7 +123,7 @@ #if QT_CONFIG(animation) bool m_hideWithText = false; - bool m_wasHidden = false; + bool m_fadingOut = false; #endif }; diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm 2022-11-11 15:29:17.000000000 +0800 @@ -48,6 +48,7 @@ /*! \class QMacCocoaViewContainer + \obsolete Use QWidget::createWindowContainer() and QWindow::fromWinId() instead. \since 4.5 \brief The QMacCocoaViewContainer class provides a widget for \macos that can be used to wrap arbitrary diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qmacnativewidget_mac.mm qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qmacnativewidget_mac.mm --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qmacnativewidget_mac.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qmacnativewidget_mac.mm 2022-11-11 15:29:17.000000000 +0800 @@ -47,6 +47,7 @@ /*! \class QMacNativeWidget + \obsolete Use QWidget::winId() instead. \since 4.5 \brief The QMacNativeWidget class provides a widget for \macos that provides a way to put Qt widgets into Cocoa hierarchies. diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qmdisubwindow.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qmdisubwindow.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qmdisubwindow.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qmdisubwindow.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -259,11 +259,28 @@ return nullptr; } +QString QMdiSubWindowPrivate::originalWindowTitleHelper() const +{ + Q_Q(const QMdiSubWindow); + // QTBUG-92240: When DontMaximizeSubWindowOnActivation is set and + // there is another subwindow maximized, use its original title. + if (auto *mdiArea = q->mdiArea()) { + const auto &subWindows = mdiArea->subWindowList(); + for (auto *subWindow : subWindows) { + if (subWindow != q && subWindow->isMaximized()) { + auto *subWindowD = static_cast<QMdiSubWindowPrivate *>(qt_widget_private(subWindow)); + if (!subWindowD->originalTitle.isNull()) + return subWindowD->originalTitle; + } + } + } + return q->window()->windowTitle(); +} + QString QMdiSubWindowPrivate::originalWindowTitle() { - Q_Q(QMdiSubWindow); if (originalTitle.isNull()) { - originalTitle = q->window()->windowTitle(); + originalTitle = originalWindowTitleHelper(); if (originalTitle.isNull()) originalTitle = QLatin1String(""); } @@ -278,11 +295,17 @@ return; QString original = originalWindowTitle(); if (!original.isEmpty()) { - if (!original.contains(QMdiSubWindow::tr("- [%1]").arg(childTitle))) - q->window()->setWindowTitle(QMdiSubWindow::tr("%1 - [%2]").arg(original, childTitle)); + if (!original.contains(QMdiSubWindow::tr("- [%1]").arg(childTitle))) { + auto title = QMdiSubWindow::tr("%1 - [%2]").arg(original, childTitle); + ignoreWindowTitleChange = true; + q->window()->setWindowTitle(title); + ignoreWindowTitleChange = false; + } } else { + ignoreWindowTitleChange = true; q->window()->setWindowTitle(childTitle); + ignoreWindowTitleChange = false; } } @@ -395,7 +418,7 @@ Q_UNUSED(subWindow); setFocusPolicy(Qt::NoFocus); updateWindowIcon(); - setFixedSize(label.size()); + setFixedSize(label.size() / label.devicePixelRatio()); } /* @@ -403,7 +426,7 @@ */ QSize ControlLabel::sizeHint() const { - return label.size(); + return label.size() / label.devicePixelRatio(); } /* diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qmdisubwindow_p.h qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qmdisubwindow_p.h --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qmdisubwindow_p.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qmdisubwindow_p.h 2022-11-11 15:29:17.000000000 +0800 @@ -286,6 +286,7 @@ #endif void updateInternalWindowTitle(); QString originalWindowTitle(); + QString originalWindowTitleHelper() const; void setNewWindowTitle(); inline int titleBarHeight() const diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qplaintextedit.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qplaintextedit.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qplaintextedit.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qplaintextedit.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1942,7 +1942,7 @@ // keep right margin clean from full-width selection int maxX = offset.x() + qMax((qreal)viewportRect.width(), maximumWidth) - - document()->documentMargin(); + - document()->documentMargin() + cursorWidth(); er.setRight(qMin(er.right(), maxX)); painter.setClipRect(er); diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qscrollarea.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qscrollarea.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qscrollarea.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qscrollarea.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -196,7 +196,23 @@ if (resizable) { if ((widget->layout() ? widget->layout()->hasHeightForWidth() : widget->sizePolicy().hasHeightForWidth())) { QSize p_hfw = p.expandedTo(min).boundedTo(max); - int h = widget->heightForWidth( p_hfw.width() ); + int h = widget->heightForWidth(p_hfw.width()); + // If the height we calculated requires a vertical scrollbar, + // then we need to constrain the width and calculate the height again, + // otherwise we end up flipping the scrollbar on and off all the time. + if (vbarpolicy == Qt::ScrollBarAsNeeded) { + int vbarWidth = vbar->sizeHint().width(); + QSize m_hfw = m.expandedTo(min).boundedTo(max); + // is there any point in searching? + if (widget->heightForWidth(m_hfw.width() - vbarWidth) <= m.height()) { + while (h > m.height() && vbarWidth) { + --vbarWidth; + --m_hfw.rwidth(); + h = widget->heightForWidth(m_hfw.width()); + } + } + max = QSize(m_hfw.width(), qMax(m_hfw.height(), h)); + } min = QSize(p_hfw.width(), qMax(p_hfw.height(), h)); } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qtabbar.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qtabbar.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qtabbar.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qtabbar.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -407,10 +407,12 @@ { Q_Q(QTabBar); leftB = new QToolButton(q); + leftB->setObjectName(QStringLiteral("ScrollLeftButton")); leftB->setAutoRepeat(true); QObject::connect(leftB, SIGNAL(clicked()), q, SLOT(_q_scrollTabs())); leftB->hide(); rightB = new QToolButton(q); + rightB->setObjectName(QStringLiteral("ScrollRightButton")); rightB->setAutoRepeat(true); QObject::connect(rightB, SIGNAL(clicked()), q, SLOT(_q_scrollTabs())); rightB->hide(); @@ -831,21 +833,24 @@ Q_Q(QTabBar); const QObject *sender = q->sender(); const bool horizontal = !verticalTabs(shape); - const QRect scrollRect = normalizedScrollRect(); + const QRect scrollRect = normalizedScrollRect().translated(scrollOffset, 0); + int i = -1; if (sender == leftB) { for (i = tabList.count() - 1; i >= 0; --i) { int start = horizontal ? tabList.at(i).rect.left() : tabList.at(i).rect.top(); - if (start < scrollRect.left() + scrollOffset) { + if (start < scrollRect.left()) { makeVisible(i); return; } } } else if (sender == rightB) { for (i = 0; i < tabList.count(); ++i) { - int end = horizontal ? tabList.at(i).rect.right() : tabList.at(i).rect.bottom(); - if (end > scrollRect.right() + scrollOffset) { + const auto tabRect = tabList.at(i).rect; + int start = horizontal ? tabRect.left() : tabRect.top(); + int end = horizontal ? tabRect.right() : tabRect.bottom(); + if (end > scrollRect.right() && start > scrollOffset) { makeVisible(i); return; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qwidgettextcontrol.cpp qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qwidgettextcontrol.cpp --- qtbase-opensource-src-5.15.3+dfsg/src/widgets/widgets/qwidgettextcontrol.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/src/widgets/widgets/qwidgettextcontrol.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -97,8 +97,7 @@ #include "private/qapplication_p.h" #include "private/qshortcutmap_p.h" #include <qkeysequence.h> -#define ACCEL_KEY(k) ((!QCoreApplication::testAttribute(Qt::AA_DontShowShortcutsInContextMenus) \ - && QGuiApplication::styleHints()->showShortcutsInContextMenus()) \ +#define ACCEL_KEY(k) (!QCoreApplication::testAttribute(Qt::AA_DontShowShortcutsInContextMenus) \ && !QGuiApplicationPrivate::instance()->shortcutMap.hasShortcutForKeySequence(k) ? \ QLatin1Char('\t') + QKeySequence(k).toString(QKeySequence::NativeText) : QString()) @@ -1281,7 +1280,7 @@ // example) repaintSelection(); - if (e->key() == Qt::Key_Backspace && !(e->modifiers() & ~Qt::ShiftModifier)) { + if (e->key() == Qt::Key_Backspace && !(e->modifiers() & ~(Qt::ShiftModifier | Qt::GroupSwitchModifier))) { QTextBlockFormat blockFmt = cursor.blockFormat(); QTextList *list = cursor.currentList(); if (list && cursor.atBlockStart() && !cursor.hasSelection()) { diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -126,7 +126,8 @@ void tst_QtConcurrentIterateKernel::instantiate() { - startThreadEngine(new PrintFor(0, 40)).startBlocking(); + auto future = startThreadEngine(new PrintFor(0, 40)).startAsynchronously(); + future.waitForFinished(); QCOMPARE(iterations.loadRelaxed(), 40); } @@ -165,8 +166,10 @@ const int times = 50; for (int i = 0; i < times; ++i) { counter.storeRelaxed(0); - CountFor f(0, iterations); - f.startBlocking(); + // ThreadEngine will delete f when it finishes + auto f = new CountFor(0, iterations); + auto future = f->startAsynchronously(); + future.waitForFinished(); QCOMPARE(counter.loadRelaxed(), iterations); } } @@ -174,8 +177,11 @@ void tst_QtConcurrentIterateKernel::noIterations() { const int times = 20000; - for (int i = 0; i < times; ++i) - startThreadEngine(new IterateKernel<TestIterator, void>(0, 0)).startBlocking(); + for (int i = 0; i < times; ++i) { + auto future = startThreadEngine(new IterateKernel<TestIterator, void>(0, 0)) + .startAsynchronously(); + future.waitForFinished(); + } } QMutex threadsMutex; @@ -230,8 +236,10 @@ threads.clear(); - ThrottleFor f(0, totalIterations); - f.startBlocking(); + // ThreadEngine will delete f when it finishes + auto f = new ThrottleFor(0, totalIterations); + auto future = f->startAsynchronously(); + future.waitForFinished(); QCOMPARE(iterations.loadRelaxed(), totalIterations); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -65,16 +65,9 @@ void tst_QtConcurrentThreadEngine::runDirectly() { - { - PrintUser engine; - engine.startSingleThreaded(); - engine.startBlocking(); - } - { - PrintUser *engine = new PrintUser(); - QFuture<void> f = engine->startAsynchronously(); - f.waitForFinished(); - } + PrintUser *engine = new PrintUser(); + QFuture<void> f = engine->startAsynchronously(); + f.waitForFinished(); } class StringResultUser : public ThreadEngine<QString> @@ -106,8 +99,10 @@ void tst_QtConcurrentThreadEngine::result() { - StringResultUser engine; - QCOMPARE(*engine.startBlocking(), QString("Foo")); + // ThreadEngine will delete 'engine' when it finishes + auto engine = new StringResultUser(); + auto future = engine->startAsynchronously(); + QCOMPARE(future.result(), QString("Foo")); } class VoidResultUser : public ThreadEngine<void> @@ -133,17 +128,9 @@ void tst_QtConcurrentThreadEngine::runThroughStarter() { - { - ThreadEngineStarter<QString> starter = startThreadEngine(new StringResultUser()); - QFuture<QString> f = starter.startAsynchronously(); - QCOMPARE(f.result(), QString("Foo")); - } - - { - ThreadEngineStarter<QString> starter = startThreadEngine(new StringResultUser()); - QString str = starter.startBlocking(); - QCOMPARE(str, QString("Foo")); - } + ThreadEngineStarter<QString> starter = startThreadEngine(new StringResultUser()); + QFuture<QString> f = starter.startAsynchronously(); + QCOMPARE(f.result(), QString("Foo")); } class CancelUser : public ThreadEngine<void> @@ -226,12 +213,6 @@ f.waitForFinished(); QCOMPARE(count.loadRelaxed(), 0); } - - for (int i = 0; i < repeats; ++i) { - ThrottleAlwaysUser t; - t.startBlocking(); - QCOMPARE(count.loadRelaxed(), 0); - } } QSet<QThread *> threads; @@ -266,40 +247,21 @@ void tst_QtConcurrentThreadEngine::threadCount() { - //QTBUG-23333: This test is unstable - const int repeats = 10; for (int i = 0; i < repeats; ++i) { - ThreadCountUser t; - t.startBlocking(); - int count = threads.count(); - int count_expected = QThreadPool::globalInstance()->maxThreadCount() + 1; // +1 for the main thread. - if (count != count_expected) - QEXPECT_FAIL("", "QTBUG-23333", Abort); - QCOMPARE(count, count_expected); - (new ThreadCountUser())->startAsynchronously().waitForFinished(); - count = threads.count(); - count_expected = QThreadPool::globalInstance()->maxThreadCount(); - if (count != count_expected) - QEXPECT_FAIL("", "QTBUG-23333", Abort); - QCOMPARE(count, count_expected); + const auto count = threads.count(); + const auto maxThreadCount = QThreadPool::globalInstance()->maxThreadCount(); + QVERIFY(count <= maxThreadCount); + QVERIFY(!threads.contains(QThread::currentThread())); } // Set the finish flag immediately, this should give us one thread only. for (int i = 0; i < repeats; ++i) { - ThreadCountUser t(true /*finishImmediately*/); - t.startBlocking(); - int count = threads.count(); - if (count != 1) - QEXPECT_FAIL("", "QTBUG-23333", Abort); - QCOMPARE(count, 1); - (new ThreadCountUser(true /*finishImmediately*/))->startAsynchronously().waitForFinished(); - count = threads.count(); - if (count != 1) - QEXPECT_FAIL("", "QTBUG-23333", Abort); + const auto count = threads.count(); QCOMPARE(count, 1); + QVERIFY(!threads.contains(QThread::currentThread())); } } @@ -438,7 +400,6 @@ void tst_QtConcurrentThreadEngine::exceptions() { - // Asynchronous mode: { bool caught = false; try { @@ -451,32 +412,6 @@ QVERIFY2(caught, "did not get exception"); } - // Blocking mode: - // test throwing the exception from a worker thread. - { - bool caught = false; - try { - QtConcurrentExceptionThrower e(QThread::currentThread()); - e.startBlocking(); - } catch (const QException &) { - caught = true; - } - QVERIFY2(caught, "did not get exception"); - } - - // test throwing the exception from the main thread (different code path) - { - bool caught = false; - try { - QtConcurrentExceptionThrower e(0); - e.startBlocking(); - } catch (const QException &) { - caught = true; - } - QVERIFY2(caught, "did not get exception"); - } - - // Asynchronous mode: { bool caught = false; try { @@ -486,31 +421,6 @@ } catch (const QUnhandledException &) { caught = true; } - QVERIFY2(caught, "did not get exception"); - } - - // Blocking mode: - // test throwing the exception from a worker thread. - { - bool caught = false; - try { - UnrelatedExceptionThrower e(QThread::currentThread()); - e.startBlocking(); - } catch (const QUnhandledException &) { - caught = true; - } - QVERIFY2(caught, "did not get exception"); - } - - // test throwing the exception from the main thread (different code path) - { - bool caught = false; - try { - UnrelatedExceptionThrower e(0); - e.startBlocking(); - } catch (const QUnhandledException &) { - caught = true; - } QVERIFY2(caught, "did not get exception"); } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/codecs/qtextcodec/test.pro qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/codecs/qtextcodec/test.pro --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/codecs/qtextcodec/test.pro 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/codecs/qtextcodec/test.pro 2022-11-11 15:29:17.000000000 +0800 @@ -1,5 +1,5 @@ CONFIG += testcase -QT = core testlib +QT = core-private testlib SOURCES = tst_qtextcodec.cpp TARGET = tst_qtextcodec diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -38,6 +38,11 @@ #endif #include <QThreadPool> +#include <private/qglobal_p.h> // for the icu feature test +#if QT_CONFIG(icu) +# include <unicode/uvernum.h> +#endif + class tst_QTextCodec : public QObject { Q_OBJECT @@ -96,6 +101,9 @@ void shiftJis(); void userCodec(); + + void canEncode(); + void canEncode_data(); }; void tst_QTextCodec::toUnicode_data() @@ -2455,6 +2463,67 @@ QCOMPARE(pcodec, nullptr); } +void tst_QTextCodec::canEncode() +{ + QFETCH(QString, codecName); + QFETCH(QString, inputString); + QFETCH(QByteArray, expectedData); + QFETCH(bool, canEncode); + + QTextCodec *codec = QTextCodec::codecForName(codecName.toLatin1()); + QVERIFY(codec != nullptr); + + QCOMPARE(codec->canEncode(inputString), canEncode); + QByteArray encoded = codec->fromUnicode(inputString); + QCOMPARE(encoded, expectedData); +} + +void tst_QTextCodec::canEncode_data() +{ + QTest::addColumn<QString>("codecName"); + QTest::addColumn<QString>("inputString"); + QTest::addColumn<QByteArray>("expectedData"); + QTest::addColumn<bool>("canEncode"); + + QTest::newRow("English ISO-8859-1") << "ISO-8859-1" << "Hello World" + << QByteArray("Hello World") << true; + QTest::newRow("English big5") << "Big5" << "Hello World" << QByteArray("Hello World") << true; + + QTest::newRow("Greek win1252") + << "Windows-1252" + << QString("\u03c0\u03bf\u03bb\u03cd\u03c4\u03c1\u03bf\u03c0\u03bf\u03bd") + << QByteArray("??????????") << false; + QTest::newRow("Greek win1253") + << "Windows-1253" + << QString("\u03c0\u03bf\u03bb\u03cd\u03c4\u03c1\u03bf\u03c0\u03bf\u03bd") + << QByteArray("\xF0\xEF\xEB\xFD\xF4\xF1\xEF\xF0\xEF\xED") << true; + + QTest::newRow("Russian win1252") + << "Windows-1252" << QString("\u041f\u0440\u0438\u0432\u0435\u0442 \u043c\u0438\u0440") + << QByteArray("?????? ???") << false; + QTest::newRow("Russian win1251") + << "Windows-1251" << QString("\u041f\u0440\u0438\u0432\u0435\u0442 \u043c\u0438\u0440") + << QByteArray("\xCF\xF0\xE8\xE2\xE5\xF2 \xEC\xE8\xF0") << true; + + QTest::newRow("English from ucs4") + << "ISO-8859-1" << QString("\u0048\u0065\u006c\u006c\u006f\u0021") + << QByteArray("Hello!") << true; + + // ICU on Linux RHEL 7.6 seems to be old, and does not handle NULL + // characters properly. It returns 0x01 instead of 0x00 for it, so + // we just skip the test. +#if !QT_CONFIG(icu) || (U_ICU_VERSION_MAJOR_NUM > 56) + QTest::newRow("With null") << "ISO-8859-1" << QString::fromUcs4(U"Hello\u0000World", 11) + << QByteArray("Hello\x00World", 11) << true; +#endif + + QTest::newRow("With special chars") + << "ISO-8859-1" << QString("\u0001\u0002\u0003\u0008\u0009\u000a\u000b\u000d") + << QByteArray("\x01\x02\x03\b\t\n\x0B\r") << true; + + QTest::newRow("Pencil icon") << "ISO-8859-1" << QString("\u270f") << QByteArray("?") << false; +} + struct DontCrashAtExit { ~DontCrashAtExit() { QTextCodec *c = QTextCodec::codecForName("utf8"); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/io/qprocess/tst_qprocess.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/io/qprocess/tst_qprocess.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/io/qprocess/tst_qprocess.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/io/qprocess/tst_qprocess.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Copyright (C) 2020 Intel Corporation. ** Contact: https://www.qt.io/licensing/ ** @@ -39,6 +39,7 @@ #include <QtCore/QRegExp> #include <QtCore/QDebug> #include <QtCore/QMetaType> +#include <QtCore/QScopeGuard> #include <QtNetwork/QHostInfo> #include <qplatformdefs.h> @@ -1271,17 +1272,15 @@ threadCount = qMax(threadCount, QThread::idealThreadCount() + 2); QVector<TestThread *> threads(threadCount); + auto cleanup = qScopeGuard([&threads]() { qDeleteAll(threads); }); for (int j = 0; j < threadCount; ++j) threads[j] = new TestThread; for (int j = 0; j < threadCount; ++j) threads[j]->start(); - for (int j = 0; j < threadCount; ++j) { + for (int j = 0; j < threadCount; ++j) QVERIFY(threads[j]->wait(10000)); - } - for (int j = 0; j < threadCount; ++j) { + for (int j = 0; j < threadCount; ++j) QCOMPARE(threads[j]->code(), 0); - } - qDeleteAll(threads); } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/io/qsettings/tst_qsettings.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/io/qsettings/tst_qsettings.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/io/qsettings/tst_qsettings.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/io/qsettings/tst_qsettings.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -742,6 +742,10 @@ QTest::newRow("@bytearray\\0") << QVariant(bytes); QTest::newRow("@string\\0") << QVariant(QString::fromLatin1(bytes.data(), bytes.size())); + + bytes = QByteArray("@\xdd\x7d", 3); + QTest::newRow("@-prefixed data") << QVariant(bytes); + QTest::newRow("@-prefixed data as string") << QVariant(QString::fromLatin1(bytes.data(), bytes.size())); } void tst_QSettings::embeddedZeroByte() diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/io/qurl/tst_qurl.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/io/qurl/tst_qurl.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/io/qurl/tst_qurl.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/io/qurl/tst_qurl.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1334,6 +1334,10 @@ << QString(QString("//somehost") + suffix).replace('/', '\\') << QString("file://somehost") + suffix << QString(suffix); + QTest::addRow("windows-backslash-extlen-%s", pathDescription) + << QString(QString("//?") + suffix).replace('/', '\\') + << QString("file:////%3F") + suffix + << QString("//?") + suffix; #endif QTest::addRow("windows-extlen-%s", pathDescription) << QString("//?") + suffix diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -116,6 +116,7 @@ void shouldPropagateDropBetweenItemsAtModelBoundary(); void shouldPropagateDropAfterLastRow_data(); void shouldPropagateDropAfterLastRow(); + void qtbug91788(); private: QStandardItemModel mod; @@ -453,6 +454,17 @@ const QModelIndex indexD = pm.mapFromSource(mod2.index(0, 0)); QVERIFY(indexD.isValid()); QCOMPARE(indexD, pm.index(1, 0)); + + // Test setData in an ignored column (QTBUG-91253) + QSignalSpy dataChangedSpy(&pm, SIGNAL(dataChanged(QModelIndex,QModelIndex))); + mod.setData(mod.index(0, 1), "b"); + QCOMPARE(dataChangedSpy.count(), 0); + + // Test dataChanged across all columns, some visible, some ignored + mod.dataChanged(mod.index(0, 0), mod.index(0, 2)); + QCOMPARE(dataChangedSpy.count(), 1); + QCOMPARE(dataChangedSpy.at(0).at(0).toModelIndex(), pm.index(0, 0)); + QCOMPARE(dataChangedSpy.at(0).at(1).toModelIndex(), pm.index(0, 0)); } void tst_QConcatenateTablesProxyModel::shouldIncreaseColumnCountWhenRemovingFirstModel() @@ -818,6 +830,19 @@ } +void tst_QConcatenateTablesProxyModel::qtbug91788() +{ + QConcatenateTablesProxyModel proxyConcat; + QStringList strList{QString("one"),QString("two")}; + QStringListModel strListModelA(strList); + QSortFilterProxyModel proxyFilter; + proxyFilter.setSourceModel(&proxyConcat); + + proxyConcat.addSourceModel(&strListModelA); + proxyConcat.removeSourceModel(&strListModelA); // This should not assert + QCOMPARE(proxyConcat.columnCount(), 0); +} + QTEST_GUILESS_MAIN(tst_QConcatenateTablesProxyModel) #include "tst_qconcatenatetablesproxymodel.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -2220,6 +2220,40 @@ QCOMPARE(afterDataChangedSpy.size(), 1); } +void tst_QSortFilterProxyModel::changeSourceDataTreeModel() +{ + QStandardItemModel treeModel; + QSortFilterProxyModel treeProxyModelBefore; + QSortFilterProxyModel treeProxyModelAfter; + + QSignalSpy treeBaseDataChangedSpy(&treeModel, &QStandardItemModel::dataChanged); + QSignalSpy treeBeforeDataChangedSpy(&treeProxyModelBefore, &QSortFilterProxyModel::dataChanged); + QSignalSpy treeAfterDataChangedSpy(&treeProxyModelAfter, &QSortFilterProxyModel::dataChanged); + + QVERIFY(treeBaseDataChangedSpy.isValid()); + QVERIFY(treeBeforeDataChangedSpy.isValid()); + QVERIFY(treeAfterDataChangedSpy.isValid()); + + treeProxyModelBefore.setSourceModel(&treeModel); + QStandardItem treeNode1("data1"); + QStandardItem treeNode11("data11"); + QStandardItem treeNode111("data111"); + + treeNode1.appendRow(&treeNode11); + treeNode11.appendRow(&treeNode111); + treeModel.appendRow(&treeNode1); + treeProxyModelAfter.setSourceModel(&treeModel); + + QCOMPARE(treeBaseDataChangedSpy.size(), 0); + QCOMPARE(treeBeforeDataChangedSpy.size(), 0); + QCOMPARE(treeAfterDataChangedSpy.size(), 0); + + treeNode111.setData(QStringLiteral("new data"), Qt::DisplayRole); + QCOMPARE(treeBaseDataChangedSpy.size(), 1); + QCOMPARE(treeBeforeDataChangedSpy.size(), 1); + QCOMPARE(treeAfterDataChangedSpy.size(), 1); +} + void tst_QSortFilterProxyModel::changeSourceDataProxyFilterSingleColumn() { enum modelRow { Row0, Row1, RowCount }; diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h 2022-11-11 15:29:17.000000000 +0800 @@ -91,6 +91,7 @@ void changeSourceDataKeepsStableSorting_qtbug1548(); void changeSourceDataForwardsRoles_qtbug35440(); void changeSourceDataProxySendDataChanged_qtbug87781(); + void changeSourceDataTreeModel(); void changeSourceDataProxyFilterSingleColumn(); void changeSourceDataProxyFilterMultipleColumns(); void resortingDoesNotBreakTreeModels(); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/kernel/qeventdispatcher/tst_qeventdispatcher.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/kernel/qeventdispatcher/tst_qeventdispatcher.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/kernel/qeventdispatcher/tst_qeventdispatcher.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/kernel/qeventdispatcher/tst_qeventdispatcher.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -69,6 +69,7 @@ void processEventsOnlySendsQueuedEvents(); void postedEventsPingPong(); void eventLoopExit(); + void interruptTrampling(); }; bool tst_QEventDispatcher::event(QEvent *e) @@ -419,5 +420,31 @@ QVERIFY(!timeoutObserved); } +// Based on QTBUG-91539: In the event dispatcher on Windows we overwrite the +// interrupt once we start processing events (this pattern is also in the 'unix' dispatcher) +// which would lead the dispatcher to accidentally ignore certain interrupts and, +// as in the bug report, would not quit, leaving the thread alive and running. +void tst_QEventDispatcher::interruptTrampling() +{ + class WorkerThread : public QThread + { + void run() override { + auto dispatcher = eventDispatcher(); + QVERIFY(dispatcher); + dispatcher->processEvents(QEventLoop::AllEvents); + QTimer::singleShot(0, [dispatcher]() { + dispatcher->wakeUp(); + }); + dispatcher->processEvents(QEventLoop::WaitForMoreEvents); + dispatcher->interrupt(); + dispatcher->processEvents(QEventLoop::WaitForMoreEvents); + } + }; + WorkerThread thread; + thread.start(); + QVERIFY(thread.wait(1000)); + QVERIFY(thread.isFinished()); +} + QTEST_MAIN(tst_QEventDispatcher) #include "tst_qeventdispatcher.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/kernel/qtimer/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/kernel/qtimer/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/kernel/qtimer/BLACKLIST 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/kernel/qtimer/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,3 @@ +[zeroTimer] +ubuntu-20.04 + diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -135,24 +135,53 @@ void tst_QTimer::remainingTime() { - QTimer timer; - QSignalSpy timeoutSpy(&timer, &QTimer::timeout); - timer.setTimerType(Qt::PreciseTimer); - timer.start(200); - - QCOMPARE(timeoutSpy.count(), 0); - QTest::qWait(50); - QCOMPARE(timeoutSpy.count(), 0); - - int remainingTime = timer.remainingTime(); - QVERIFY2(remainingTime >= 50 && remainingTime <= 200, qPrintable(QString::number(remainingTime))); - - QVERIFY(timeoutSpy.wait()); - QCOMPARE(timeoutSpy.count(), 1); - - // the timer is still active, so it should have a non-zero remaining time - remainingTime = timer.remainingTime(); - QVERIFY2(remainingTime >= 50, qPrintable(QString::number(remainingTime))); + QTimer tested; + tested.setTimerType(Qt::PreciseTimer); + + QTimer tester; + tester.setTimerType(Qt::PreciseTimer); + tester.setSingleShot(true); + + const int testedInterval = 200; + const int testerInterval = 50; + const int expectedRemainingTime = testedInterval - testerInterval; + + int testIteration = 0; + const int desiredTestCount = 2; + + auto connection = QObject::connect(&tested, &QTimer::timeout, [&tester]() { + // We let tested (which isn't a single-shot) run repeatedly, to verify + // it *does* repeat, and check that the single-shot tester, starting + // at the same time, does finish first each time, by about the right duration. + tester.start(); // Start tester again. + }); + + QObject::connect(&tester, &QTimer::timeout, [&]() { + const int remainingTime = tested.remainingTime(); + // We expect that remainingTime is at most 150 and not overdue. + const bool remainingTimeInRange = remainingTime > 0 + && remainingTime <= expectedRemainingTime; + if (remainingTimeInRange) + ++testIteration; + else + testIteration = desiredTestCount; // We are going to fail on QVERIFY2() + // below, so we don't want to iterate + // anymore and quickly exit the QTRY_...() + // with this failure. + if (testIteration == desiredTestCount) + QObject::disconnect(connection); // Last iteration, don't start tester again. + QVERIFY2(remainingTimeInRange, qPrintable("Remaining time " + + QByteArray::number(remainingTime) + "ms outside expected range (0ms, " + + QByteArray::number(expectedRemainingTime) + "ms]")); + }); + + tested.start(testedInterval); + tester.start(testerInterval); // Start tester for the 1st time. + + // Test it desiredTestCount times, give it reasonable amount of time + // (twice as much as needed). + QTRY_COMPARE_WITH_TIMEOUT(testIteration, desiredTestCount, + testedInterval * desiredTestCount * 2); } void tst_QTimer::remainingTimeInitial_data() diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/kernel/qtranslator/android_testdata.qrc qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/kernel/qtranslator/android_testdata.qrc --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/kernel/qtranslator/android_testdata.qrc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/kernel/qtranslator/android_testdata.qrc 1970-01-01 08:00:00.000000000 +0800 @@ -1,8 +0,0 @@ -<RCC> - <qresource prefix="/android_testdata"> - <file>hellotr_la.qm</file> - <file>hellotr_empty.qm</file> - <file>msgfmt_from_po.qm</file> - <file>dependencies_la.qm</file> - </qresource> -</RCC> diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,8 @@ <RCC> <qresource prefix="/tst_qtranslator"> + <file>dependencies_la.qm</file> <file>hellotr_la.qm</file> <file>hellotr_empty.qm</file> + <file>msgfmt_from_po.qm</file> </qresource> </RCC> diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -29,6 +29,7 @@ #include <QtTest/QtTest> #include <qtranslator.h> #include <qfile.h> +#include <qtemporarydir.h> class tst_QTranslator : public QObject { @@ -40,9 +41,11 @@ bool eventFilter(QObject *obj, QEvent *event); private slots: void initTestCase(); + void init(); void load_data(); void load(); + void loadLocale(); void threadLoad(); void testLanguageChange(); void plural(); @@ -64,38 +67,14 @@ void tst_QTranslator::initTestCase() { -#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_EMBEDDED) - QString sourceDir(":/android_testdata/"); - QDirIterator it(sourceDir, QDirIterator::Subdirectories); - while (it.hasNext()) { - it.next(); - - QFileInfo sourceFileInfo = it.fileInfo(); - if (!sourceFileInfo.isDir()) { - QFileInfo destinationFileInfo(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1Char('/') + sourceFileInfo.filePath().mid(sourceDir.length())); - - if (!destinationFileInfo.exists()) { - QVERIFY(QDir().mkpath(destinationFileInfo.path())); - QVERIFY(QFile::copy(sourceFileInfo.filePath(), destinationFileInfo.filePath())); - } - } - } - - QDir::setCurrent(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)); -#endif - - // chdir into the directory containing our testdata, - // to make the code simpler (load testdata via relative paths) -#ifdef Q_OS_WINRT - // ### TODO: Use this for all platforms in 5.7 - dataDir = QEXTRACTTESTDATA(QStringLiteral("/")); + dataDir = QEXTRACTTESTDATA(QStringLiteral("/tst_qtranslator")); QVERIFY2(!dataDir.isNull(), qPrintable("Could not extract test data")); - QVERIFY2(QDir::setCurrent(dataDir->path()), qPrintable("Could not chdir to " + dataDir->path())); -#else // !Q_OS_WINRT - QString testdata_dir = QFileInfo(QFINDTESTDATA("hellotr_la.qm")).absolutePath(); - QVERIFY2(QDir::setCurrent(testdata_dir), qPrintable("Could not chdir to " + testdata_dir)); -#endif // !Q_OS_WINRT +} +void tst_QTranslator::init() +{ + QVERIFY2(QDir::setCurrent(dataDir->path()), + qPrintable("Could not chdir to " + dataDir->path())); } bool tst_QTranslator::eventFilter(QObject *, QEvent *event) @@ -155,6 +134,73 @@ } } +void tst_QTranslator::loadLocale() +{ + QLocale locale; + auto localeName = locale.uiLanguages().value(0).replace('-', '_'); + if (localeName.isEmpty()) + QSKIP("This test requires at least one available UI language."); + + QByteArray ba; + { + QFile file(":/tst_qtranslator/hellotr_la.qm"); + QVERIFY2(file.open(QFile::ReadOnly), qPrintable(file.errorString())); + ba = file.readAll(); + QVERIFY(!ba.isEmpty()); + } + + QTemporaryDir dir; + QVERIFY(dir.isValid()); + + auto path = dir.path(); + QFile file(path + "/dummy"); + QVERIFY2(file.open(QFile::WriteOnly), qPrintable(file.errorString())); + QCOMPARE(file.write(ba), ba.size()); + file.close(); + + /* + Test the following order: + + /tmp/tmpDir/foo-en_US.qm + /tmp/tmpDir/foo-en_US + /tmp/tmpDir/foo-en.qm + /tmp/tmpDir/foo-en + /tmp/tmpDir/foo.qm + /tmp/tmpDir/foo- + /tmp/tmpDir/foo + */ + + QStringList files; + while (true) { + files.append(path + "/foo-" + localeName + ".qm"); + QVERIFY2(file.copy(files.last()), qPrintable(file.errorString())); + + files.append(path + "/foo-" + localeName); + QVERIFY2(file.copy(files.last()), qPrintable(file.errorString())); + + int rightmost = localeName.lastIndexOf(QLatin1Char('_')); + if (rightmost <= 0) + break; + localeName.truncate(rightmost); + } + + files.append(path + "/foo.qm"); + QVERIFY2(file.copy(files.last()), qPrintable(file.errorString())); + + files.append(path + "/foo-"); + QVERIFY2(file.copy(files.last()), qPrintable(file.errorString())); + + files.append(path + "/foo"); + QVERIFY2(file.rename(files.last()), qPrintable(file.errorString())); + + QTranslator tor; + for (const auto &filePath : files) { + QVERIFY(tor.load(locale, "foo", "-", path, ".qm")); + QCOMPARE(tor.filePath(), filePath); + QVERIFY2(file.remove(filePath), qPrintable(file.errorString())); + } +} + class TranslatorThread : public QThread { void run() { @@ -307,6 +353,15 @@ QVERIFY(!tor.isEmpty()); QCOMPARE(tor.translate("QPushButton", "Hello world!"), QLatin1String("Hallo Welt!")); } + + { + // Test resolution of paths relative to main file + const QString absoluteFile = QFileInfo("dependencies_la").absoluteFilePath(); + QDir::setCurrent(QDir::tempPath()); + QTranslator tor; + QVERIFY(tor.load(absoluteFile)); + QVERIFY(!tor.isEmpty()); + } } struct TranslateThread : public QThread diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -228,6 +228,9 @@ void tst_QPlugin::scanInvalidPlugin() { +#if defined(Q_OS_MACOS) && defined(Q_PROCESSOR_ARM) + QSKIP("This test crashes on ARM macOS"); +#endif const auto fileNames = dir.entryList({"*invalid*"}, QDir::Files); QString invalidPluginName; if (fileNames.isEmpty()) diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest.pro qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest.pro --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest.pro 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest.pro 2022-11-11 15:29:17.000000000 +0800 @@ -1,15 +1,11 @@ TEMPLATE = subdirs SUBDIRS = \ - machtest_i386.pro \ + machtest_arm64.pro \ machtest_x86_64.pro \ - machtest_ppc64.pro \ machtest_fat.pro machtest_fat-pro.depends = \ - machtest_i386.pro \ - machtest_x86_64.pro \ - machtest_ppc64.pro - -machtest_ppc64-pro.depends = \ + machtest_arm64.pro \ machtest_x86_64.pro + diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_arm64.pro qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_arm64.pro --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_arm64.pro 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_arm64.pro 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,3 @@ +QMAKE_APPLE_DEVICE_ARCHS = arm64 +include(machtest.pri) + diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_fat.pro qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_fat.pro --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_fat.pro 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_fat.pro 2022-11-11 15:29:17.000000000 +0800 @@ -7,41 +7,42 @@ # Generate a fat binary with three architectures fat_all.target = good.fat.all.dylib fat_all.commands = lipo -create -output $@ \ - -arch ppc64 good.ppc64.dylib \ - -arch i386 good.i386.dylib \ + -arch arm64 good.arm64.dylib \ -arch x86_64 good.x86_64.dylib -fat_all.depends += good.i386.dylib good.x86_64.dylib good.ppc64.dylib +fat_all.depends += good.arm64.dylib good.x86_64.dylib -fat_no_i386.target = good.fat.no-i386.dylib -fat_no_i386.commands = lipo -create -output $@ -arch x86_64 good.x86_64.dylib -arch ppc64 good.ppc64.dylib -fat_no_i386.depends += good.x86_64.dylib good.ppc64.dylib +fat_no_arm64.target = good.fat.no-arm64.dylib +fat_no_arm64.commands = lipo -create -output $@ -arch x86_64 good.x86_64.dylib +fat_no_arm64.depends += good.x86_64.dylib fat_no_x86_64.target = good.fat.no-x86_64.dylib -fat_no_x86_64.commands = lipo -create -output $@ -arch i386 good.i386.dylib -arch ppc64 good.ppc64.dylib -fat_no_x86_64.depends += good.i386.dylib good.ppc64.dylib +fat_no_x86_64.commands = lipo -create -output $@ -arch arm64 good.arm64.dylib +fat_no_x86_64.depends += good.arm64.dylib -stub_i386.commands = $$QMAKE_CXX -shared -arch i386 -o stub.i386.dylib $$PWD/stub.cpp -stub_i386.depends += $$PWD/stub.cpp +stub_flags = -L$$system(xcrun --show-sdk-path)/usr/lib/ -stdlib=libc++ -stub_x86_64.commands = $$QMAKE_CXX -shared -arch x86_64 -o stub.x86_64.dylib $$PWD/stub.cpp +stub_arm64.commands = $$QMAKE_CXX $$stub_flags -shared -arch arm64 -o stub.arm64.dylib $$PWD/stub.cpp +stub_arm64.depends += $$PWD/stub.cpp + +stub_x86_64.commands = $$QMAKE_CXX $$stub_flags -shared -arch x86_64 -o stub.x86_64.dylib $$PWD/stub.cpp stub_x86_64.depends += $$PWD/stub.cpp -fat_stub_i386.target = good.fat.stub-i386.dylib -fat_stub_i386.commands = lipo -create -output $@ -arch ppc64 good.ppc64.dylib -arch i386 stub.i386.dylib -fat_stub_i386.depends += stub_i386 good.x86_64.dylib good.ppc64.dylib +fat_stub_arm64.target = good.fat.stub-arm64.dylib +fat_stub_arm64.commands = lipo -create -output $@ -arch arm64 stub.arm64.dylib +fat_stub_arm64.depends += stub_arm64 good.x86_64.dylib fat_stub_x86_64.target = good.fat.stub-x86_64.dylib -fat_stub_x86_64.commands = lipo -create -output $@ -arch ppc64 good.ppc64.dylib -arch x86_64 stub.x86_64.dylib -fat_stub_x86_64.depends += stub_x86_64 good.i386.dylib good.ppc64.dylib +fat_stub_x86_64.commands = lipo -create -output $@ -arch x86_64 stub.x86_64.dylib +fat_stub_x86_64.depends += stub_x86_64 good.arm64.dylib bad.commands = $$PWD/generate-bad.pl bad.depends += $$PWD/generate-bad.pl -MYTARGETS = $$fat_all.depends fat_all fat_no_x86_64 fat_no_i386 \ - fat_stub_i386 fat_stub_x86_64 bad stub_i386 stub_x86_64 +MYTARGETS = $$fat_all.depends fat_all fat_no_x86_64 fat_no_arm64 \ + fat_stub_arm64 fat_stub_x86_64 bad stub_arm64 stub_x86_64 all.depends += $$MYTARGETS QMAKE_EXTRA_TARGETS += $$MYTARGETS all -QMAKE_CLEAN += $$fat_all.target $$fat_no_i386.target $$fat_no_x86_64.target \ - $$fat_stub_i386.target $$fat_stub_x86_64.target \ +QMAKE_CLEAN += $$fat_all.target $$fat_no_arm64.target $$fat_no_x86_64.target \ + $$fat_stub_arm64.target $$fat_stub_x86_64.target \ "bad*.dylib" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_i386.pro qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_i386.pro --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_i386.pro 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_i386.pro 1970-01-01 08:00:00.000000000 +0800 @@ -1,3 +0,0 @@ -QMAKE_APPLE_DEVICE_ARCHS = i386 -include(machtest.pri) - diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_ppc64.pro qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_ppc64.pro --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_ppc64.pro 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/plugin/qpluginloader/machtest/machtest_ppc64.pro 1970-01-01 08:00:00.000000000 +0800 @@ -1,9 +0,0 @@ -QMAKE_APPLE_DEVICE_ARCHS = ppc64 -include(machtest.pri) - -OTHER_FILES += ppcconverter.pl - -# Current macOS toolchains have no compiler for PPC anymore -# So we fake it by converting an x86-64 binary to (little-endian!) PPC64 -goodlib.commands = $$PWD/ppcconverter.pl $< $@ -goodlib.depends = good.x86_64.dylib $$PWD/ppcconverter.pl diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -341,22 +341,19 @@ # ifdef Q_PROCESSOR_X86_64 QTest::newRow("machtest/good.x86_64.dylib") << int(QMachOParser::QtMetaDataSection); - QTest::newRow("machtest/good.i386.dylib") << int(QMachOParser::NotSuitable); + QTest::newRow("machtest/good.arm64.dylib") << int(QMachOParser::NotSuitable); QTest::newRow("machtest/good.fat.no-x86_64.dylib") << int(QMachOParser::NotSuitable); - QTest::newRow("machtest/good.fat.no-i386.dylib") << int(QMachOParser::QtMetaDataSection); -# elif defined(Q_PROCESSOR_X86_32) - QTest::newRow("machtest/good.i386.dylib") << int(QMachOParser::QtMetaDataSection); + QTest::newRow("machtest/good.fat.no-arm64.dylib") << int(QMachOParser::QtMetaDataSection); +# elif defined(Q_PROCESSOR_ARM) + QTest::newRow("machtest/good.arm64.dylib") << int(QMachOParser::QtMetaDataSection); QTest::newRow("machtest/good.x86_64.dylib") << int(QMachOParser::NotSuitable); - QTest::newRow("machtest/good.fat.no-i386.dylib") << int(QMachOParser::NotSuitable); + QTest::newRow("machtest/good.fat.no-arm64.dylib") << int(QMachOParser::NotSuitable); QTest::newRow("machtest/good.fat.no-x86_64.dylib") << int(QMachOParser::QtMetaDataSection); # endif -# ifndef Q_PROCESSOR_POWER_64 - QTest::newRow("machtest/good.ppc64.dylib") << int(QMachOParser::NotSuitable); -# endif QTest::newRow("machtest/good.fat.all.dylib") << int(QMachOParser::QtMetaDataSection); QTest::newRow("machtest/good.fat.stub-x86_64.dylib") << int(QMachOParser::NotSuitable); - QTest::newRow("machtest/good.fat.stub-i386.dylib") << int(QMachOParser::NotSuitable); + QTest::newRow("machtest/good.fat.stub-arm64.dylib") << int(QMachOParser::NotSuitable); QDir d(QFINDTESTDATA("machtest")); QStringList badlist = d.entryList(QStringList() << "bad*.dylib"); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/text/qchar/tst_qchar.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/text/qchar/tst_qchar.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/text/qchar/tst_qchar.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/text/qchar/tst_qchar.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -980,6 +980,25 @@ QVERIFY(decomposed.normalized(QString::NormalizationForm_KD) == decomposed); QVERIFY(decomposed.normalized(QString::NormalizationForm_KC) == composed); } + // QTBUG-71894 - erratum fixed in Unicode 4.1.0; SCount bounds are < not <= + { + // Hangul compose, test 0x11a7: + const QChar c[] = { QChar(0xae30), QChar(0x11a7), {} }; + const QChar d[] = { QChar(0x1100), QChar(0x1175), QChar(0x11a7), {} }; + const QString composed(c, 2); + const QString decomposed(d, 3); + + QCOMPARE(decomposed.normalized(QString::NormalizationForm_C), composed); + } + { + // Hangul compose, test 0x11c3: + const QChar c[] = { QChar(0xae30), QChar(0x11c3), {} }; + const QChar d[] = { QChar(0x1100), QChar(0x1175), QChar(0x11c3), {} }; + const QString composed(c, 2); + const QString decomposed(d, 3); + + QCOMPARE(decomposed.normalized(QString::NormalizationForm_C), composed); + } } void tst_QChar::normalizationCorrections() diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/text/qlocale/tst_qlocale.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/text/qlocale/tst_qlocale.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/text/qlocale/tst_qlocale.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/text/qlocale/tst_qlocale.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -2477,6 +2477,10 @@ const QLocale ir("ga_IE"); QCOMPARE(ir.dateFormat(QLocale::ShortFormat), QLatin1String("dd/MM/yyyy")); + + const auto sys = QLocale::system(); // QTBUG-92018, ru_RU on MS + const QDate date(2021, 3, 17); + QCOMPARE(sys.toString(date, sys.dateFormat(QLocale::LongFormat)), sys.toString(date)); } void tst_QLocale::timeFormat() @@ -2535,18 +2539,21 @@ // 'de' locale doesn't have narrow month name QCOMPARE(de.monthName(12, QLocale::NarrowFormat), QLatin1String("D")); - QLocale ru("ru_RU"); + const QLocale ru("ru_RU"); QCOMPARE(ru.monthName(1, QLocale::LongFormat), QString::fromUtf8("\321\217\320\275\320\262\320\260\321\200\321\217")); QCOMPARE(ru.monthName(1, QLocale::ShortFormat), QString::fromUtf8("\321\217\320\275\320\262\56")); QCOMPARE(ru.monthName(1, QLocale::NarrowFormat), QString::fromUtf8("\320\257")); + const auto sys = QLocale::system(); + if (sys.language() == QLocale::Russian) // QTBUG-92018 + QVERIFY(sys.monthName(3) != sys.standaloneMonthName(3)); - QLocale ir("ga_IE"); + const QLocale ir("ga_IE"); QCOMPARE(ir.monthName(1, QLocale::ShortFormat), QLatin1String("Ean")); QCOMPARE(ir.monthName(12, QLocale::ShortFormat), QLatin1String("Noll")); - QLocale cz("cs_CZ"); + const QLocale cz("cs_CZ"); QCOMPARE(cz.monthName(1, QLocale::ShortFormat), QLatin1String("led")); QCOMPARE(cz.monthName(12, QLocale::ShortFormat), QLatin1String("pro")); } @@ -2630,6 +2637,8 @@ const QLocale es_CR(QLocale::Spanish, QLocale::CostaRica); QCOMPARE(es_CR.toCurrencyString(double(1565.25)), QString::fromUtf8("\xE2\x82\xA1" "1\xC2\xA0" "565,25")); + QCOMPARE(es_CR.toCurrencyString(double(12565.25)), + QString::fromUtf8("\xE2\x82\xA1" "12\xC2\xA0" "565,25")); const QLocale system = QLocale::system(); QVERIFY(system.toCurrencyString(1, QLatin1String("FOO")).contains(QLatin1String("FOO"))); @@ -2981,13 +2990,13 @@ class MySystemLocale : public QSystemLocale { public: - MySystemLocale(const QLocale &locale) : m_locale(locale) + MySystemLocale(const QString &locale) : m_name(locale), m_locale(locale) { } - QVariant query(QueryType /*type*/, QVariant /*in*/) const override + QVariant query(QueryType type, QVariant /*in*/) const override { - return QVariant(); + return type == UILanguages ? QVariant(QStringList{m_name}) : QVariant(); } QLocale fallbackUiLocale() const override @@ -2996,16 +3005,32 @@ } private: + const QString m_name; const QLocale m_locale; }; void tst_QLocale::systemLocale_data() { + // Test uses MySystemLocale, so is platform-independent. QTest::addColumn<QString>("name"); QTest::addColumn<QLocale::Language>("language"); - QTest::addRow("catalan") << QString("ca") << QLocale::Catalan; - QTest::addRow("ukrainian") << QString("uk") << QLocale::Ukrainian; - QTest::addRow("german") << QString("de") << QLocale::German; + QTest::addColumn<QStringList>("uiLanguages"); + + QTest::addRow("catalan") + << QString("ca") << QLocale::Catalan + << QStringList{QStringLiteral("ca"), QStringLiteral("ca-ES"), QStringLiteral("ca-Latn-ES")}; + QTest::addRow("ukrainian") + << QString("uk") << QLocale::Ukrainian + << QStringList{QStringLiteral("uk"), QStringLiteral("uk-UA"), QStringLiteral("uk-Cyrl-UA")}; + QTest::addRow("german") + << QString("de") << QLocale::German + << QStringList{QStringLiteral("de"), QStringLiteral("de-DE"), QStringLiteral("de-Latn-DE")}; + QTest::addRow("chinese-min") + << QString("zh") << QLocale::Chinese + << QStringList{QStringLiteral("zh"), QStringLiteral("zh-CN"), QStringLiteral("zh-Hans-CN")}; + QTest::addRow("chinese-full") + << QString("zh-Hans-CN") << QLocale::Chinese + << QStringList{QStringLiteral("zh-Hans-CN"), QStringLiteral("zh"), QStringLiteral("zh-CN")}; } void tst_QLocale::systemLocale() @@ -3015,11 +3040,13 @@ QFETCH(QString, name); QFETCH(QLocale::Language, language); + QFETCH(QStringList, uiLanguages); { MySystemLocale sLocale(name); QCOMPARE(QLocale().language(), language); QCOMPARE(QLocale::system().language(), language); + QCOMPARE(QLocale::system().uiLanguages(), uiLanguages); } QCOMPARE(QLocale(), originalLocale); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/text/qregularexpression/tst_qregularexpression.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/text/qregularexpression/tst_qregularexpression.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/text/qregularexpression/tst_qregularexpression.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/text/qregularexpression/tst_qregularexpression.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -80,6 +80,7 @@ void threadSafety_data(); void threadSafety(); + void returnsViewsIntoOriginalString(); void wildcard_data(); void wildcard(); void testInvalidWildcard_data(); @@ -2188,6 +2189,31 @@ } } +void tst_QRegularExpression::returnsViewsIntoOriginalString() +{ + // https://bugreports.qt.io/browse/QTBUG-98653 + + auto to_void = [](const QChar *p) -> const void* { return p; }; + + // GIVEN + // a QString with dynamically-allocated data: + const QString string = QLatin1String("A\nA\nB\nB\n\nC\nC"); // NOT QStringLiteral! + const auto stringDataAddress = to_void(string.data()); + + // and a view over said QString: + QStringView view(string); + const auto viewDataAddress = to_void(view.data()); + QCOMPARE(stringDataAddress, viewDataAddress); + + // WHEN + // we call view.split() with a temporary QRegularExpression object + const auto split = view.split(QRegularExpression( "(\r\n|\n|\r)" ), Qt::KeepEmptyParts); + + // THEN + // the returned views should point into the underlying string: + QCOMPARE(to_void(split.front().data()), stringDataAddress); +} + void tst_QRegularExpression::wildcard_data() { QTest::addColumn<QString>("pattern"); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/text/qstring/tst_qstring.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/text/qstring/tst_qstring.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/text/qstring/tst_qstring.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/text/qstring/tst_qstring.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -600,6 +600,7 @@ void isValidUtf16_data(); void isValidUtf16(); void unicodeStrings(); + void vasprintfWithPrecision(); }; template <class T> const T &verifyZeroTermination(const T &t) { return t; } @@ -1674,7 +1675,7 @@ QCOMPARE(haystack.lastIndexOf(needle.toLatin1(), from, cs), expected); QCOMPARE(haystack.lastIndexOf(needle.toLatin1().data(), from, cs), expected); - if (from >= -1 && from < haystack.size() && needle.size() > 0) { + if (from >= -1 && from < haystack.size()) { // unfortunately, QString and QRegExp don't have the same out of bound semantics // I think QString is wrong -- See file log for contact information. { @@ -7148,6 +7149,35 @@ QTEST(string.isValidUtf16(), "valid"); } +static QString doVasprintf(const char *msg, ...) { + va_list args; + va_start(args, msg); + const QString result = QString::vasprintf(msg, args); + va_end(args); + return result; +} + +void tst_QString::vasprintfWithPrecision() +{ + { + const char *msg = "Endpoint %.*s with"; + static const char arg0[3] = { 'a', 'b', 'c' }; + static const char arg1[4] = { 'a', 'b', 'c', '\0' }; + QCOMPARE(doVasprintf(msg, 3, arg0), QStringLiteral("Endpoint abc with")); + QCOMPARE(doVasprintf(msg, 9, arg1), QStringLiteral("Endpoint abc with")); + QCOMPARE(doVasprintf(msg, 0, nullptr), QStringLiteral("Endpoint with")); + } + + { + const char *msg = "Endpoint %.*ls with"; + static const ushort arg0[3] = { 'a', 'b', 'c' }; + static const ushort arg1[4] = { 'a', 'b', 'c', '\0' }; + QCOMPARE(doVasprintf(msg, 3, arg0), QStringLiteral("Endpoint abc with")); + QCOMPARE(doVasprintf(msg, 9, arg1), QStringLiteral("Endpoint abc with")); + QCOMPARE(doVasprintf(msg, 0, nullptr), QStringLiteral("Endpoint with")); + } +} + QTEST_APPLESS_MAIN(tst_QString) #include "tst_qstring.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/text/qtextboundaryfinder/data/GraphemeBreakTest.txt qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/text/qtextboundaryfinder/data/GraphemeBreakTest.txt --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/text/qtextboundaryfinder/data/GraphemeBreakTest.txt 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/text/qtextboundaryfinder/data/GraphemeBreakTest.txt 2022-11-11 15:29:17.000000000 +0800 @@ -618,11 +618,11 @@ ÷ 0061 ÷ 0600 × 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) × [9.2] LATIN SMALL LETTER B (Other) ÷ [0.3] ÷ 1F476 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3] ÷ 0061 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3] -# ÷ 0061 × 1F3FF ÷ 1F476 × 200D × 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] -# ÷ 1F476 × 1F3FF × 0308 × 200D × 1F476 × 1F3FF ÷ # ÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [0.3] -# ÷ 1F6D1 × 200D × 1F6D1 ÷ # ÷ [0.2] OCTAGONAL SIGN (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] +÷ 0061 × 1F3FF ÷ 1F476 × 200D × 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] +÷ 1F476 × 1F3FF × 0308 × 200D × 1F476 × 1F3FF ÷ # ÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [0.3] +÷ 1F6D1 × 200D × 1F6D1 ÷ # ÷ [0.2] OCTAGONAL SIGN (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] ÷ 0061 × 200D ÷ 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] -# ÷ 2701 × 200D × 2701 ÷ # ÷ [0.2] UPPER BLADE SCISSORS (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] UPPER BLADE SCISSORS (Other) ÷ [0.3] +÷ 2701 × 200D × 2701 ÷ # ÷ [0.2] UPPER BLADE SCISSORS (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] UPPER BLADE SCISSORS (Other) ÷ [0.3] ÷ 0061 × 200D ÷ 2701 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] UPPER BLADE SCISSORS (Other) ÷ [0.3] # # Lines: 602 diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/text/qtextboundaryfinder/data/GraphemeBreakTest.txt.full qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/text/qtextboundaryfinder/data/GraphemeBreakTest.txt.full --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/text/qtextboundaryfinder/data/GraphemeBreakTest.txt.full 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/text/qtextboundaryfinder/data/GraphemeBreakTest.txt.full 1970-01-01 08:00:00.000000000 +0800 @@ -1,630 +0,0 @@ -# GraphemeBreakTest-13.0.0.txt -# Date: 2019-11-15, 19:49:10 GMT -# © 2019 Unicode®, Inc. -# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# -# Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ -# -# Default Grapheme_Cluster_Break Test -# -# Format: -# <string> (# <comment>)? -# <string> contains hex Unicode code points, with -# ÷ wherever there is a break opportunity, and -# × wherever there is not. -# <comment> the format can change, but currently it shows: -# - the sample character name -# - (x) the Grapheme_Cluster_Break property value for the sample character -# - [x] the rule that determines whether there is a break or not, -# as listed in the Rules section of GraphemeBreakTest.html -# -# These samples may be extended or changed in the future. -# -÷ 0020 ÷ 0020 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 0020 × 0308 ÷ 0020 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 0020 ÷ 000D ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 0020 × 0308 ÷ 000D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 0020 ÷ 000A ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 0020 × 0308 ÷ 000A ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 0020 ÷ 0001 ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 0020 × 0308 ÷ 0001 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 0020 × 034F ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 0020 × 0308 × 034F ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 0020 ÷ 1F1E6 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 0020 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 0020 ÷ 0600 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 0020 × 0308 ÷ 0600 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 0020 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 0020 × 0308 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 0020 ÷ 1100 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 0020 × 0308 ÷ 1100 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 0020 ÷ 1160 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 0020 × 0308 ÷ 1160 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 0020 ÷ 11A8 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 0020 × 0308 ÷ 11A8 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 0020 ÷ AC00 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 0020 × 0308 ÷ AC00 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 0020 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 0020 × 0308 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 0020 ÷ 231A ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 0020 × 0308 ÷ 231A ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 0020 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 0020 × 0308 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 0020 × 200D ÷ # ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 0020 × 0308 × 200D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 0020 ÷ 0378 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 0020 × 0308 ÷ 0378 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 000D ÷ 0020 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] SPACE (Other) ÷ [0.3] -÷ 000D ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 000D ÷ 000D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 000D ÷ 0308 ÷ 000D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 000D × 000A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 000D ÷ 0308 ÷ 000A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 000D ÷ 0001 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 000D ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 000D ÷ 034F ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 000D ÷ 0308 × 034F ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 000D ÷ 1F1E6 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 000D ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 000D ÷ 0600 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 000D ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 000D ÷ 0903 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 000D ÷ 0308 × 0903 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 000D ÷ 1100 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 000D ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 000D ÷ 1160 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 000D ÷ 0308 ÷ 1160 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 000D ÷ 11A8 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 000D ÷ 0308 ÷ 11A8 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 000D ÷ AC00 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 000D ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 000D ÷ AC01 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 000D ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 000D ÷ 231A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] WATCH (ExtPict) ÷ [0.3] -÷ 000D ÷ 0308 ÷ 231A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 000D ÷ 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 000D ÷ 0308 × 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 000D ÷ 200D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 000D ÷ 0308 × 200D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 000D ÷ 0378 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3] -÷ 000D ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 000A ÷ 0020 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] SPACE (Other) ÷ [0.3] -÷ 000A ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 000A ÷ 000D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 000A ÷ 0308 ÷ 000D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 000A ÷ 000A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 000A ÷ 0308 ÷ 000A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 000A ÷ 0001 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 000A ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 000A ÷ 034F ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 000A ÷ 0308 × 034F ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 000A ÷ 1F1E6 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 000A ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 000A ÷ 0600 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 000A ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 000A ÷ 0903 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 000A ÷ 0308 × 0903 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 000A ÷ 1100 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 000A ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 000A ÷ 1160 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 000A ÷ 0308 ÷ 1160 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 000A ÷ 11A8 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 000A ÷ 0308 ÷ 11A8 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 000A ÷ AC00 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 000A ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 000A ÷ AC01 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 000A ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 000A ÷ 231A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] WATCH (ExtPict) ÷ [0.3] -÷ 000A ÷ 0308 ÷ 231A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 000A ÷ 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 000A ÷ 0308 × 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 000A ÷ 200D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 000A ÷ 0308 × 200D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 000A ÷ 0378 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3] -÷ 000A ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 0001 ÷ 0020 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] SPACE (Other) ÷ [0.3] -÷ 0001 ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 0001 ÷ 000D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 0001 ÷ 0308 ÷ 000D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 0001 ÷ 000A ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 0001 ÷ 0308 ÷ 000A ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 0001 ÷ 0001 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 0001 ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 0001 ÷ 034F ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 0001 ÷ 0308 × 034F ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 0001 ÷ 1F1E6 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 0001 ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 0001 ÷ 0600 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 0001 ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 0001 ÷ 0903 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 0001 ÷ 0308 × 0903 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 0001 ÷ 1100 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 0001 ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 0001 ÷ 1160 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 0001 ÷ 0308 ÷ 1160 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 0001 ÷ 11A8 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 0001 ÷ 0308 ÷ 11A8 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 0001 ÷ AC00 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 0001 ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 0001 ÷ AC01 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 0001 ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 0001 ÷ 231A ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] WATCH (ExtPict) ÷ [0.3] -÷ 0001 ÷ 0308 ÷ 231A ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 0001 ÷ 0300 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 0001 ÷ 0308 × 0300 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 0001 ÷ 200D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 0001 ÷ 0308 × 200D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 0001 ÷ 0378 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3] -÷ 0001 ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 034F ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 034F × 0308 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 034F ÷ 000D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 034F × 0308 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 034F ÷ 000A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 034F × 0308 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 034F ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 034F × 0308 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 034F × 034F ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 034F × 0308 × 034F ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 034F ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 034F × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 034F ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 034F × 0308 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 034F × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 034F × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 034F ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 034F × 0308 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 034F ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 034F × 0308 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 034F ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 034F × 0308 ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 034F ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 034F × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 034F ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 034F × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 034F ÷ 231A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 034F × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 034F × 0300 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 034F × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 034F × 200D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 034F × 0308 × 200D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 034F ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 034F × 0308 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 1F1E6 ÷ 0020 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 1F1E6 × 0308 ÷ 0020 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 1F1E6 ÷ 000D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 1F1E6 × 0308 ÷ 000D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 1F1E6 ÷ 000A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 1F1E6 × 0308 ÷ 000A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 1F1E6 ÷ 0001 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 1F1E6 × 0308 ÷ 0001 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 1F1E6 × 034F ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 1F1E6 × 0308 × 034F ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 1F1E6 × 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [12.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 1F1E6 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 1F1E6 ÷ 0600 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 1F1E6 × 0308 ÷ 0600 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 1F1E6 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 1F1E6 × 0308 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 1F1E6 ÷ 1100 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 1F1E6 × 0308 ÷ 1100 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 1F1E6 ÷ 1160 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 1F1E6 × 0308 ÷ 1160 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 1F1E6 ÷ 11A8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 1F1E6 × 0308 ÷ 11A8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 1F1E6 ÷ AC00 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 1F1E6 × 0308 ÷ AC00 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 1F1E6 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 1F1E6 × 0308 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 1F1E6 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 1F1E6 × 0308 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 1F1E6 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 1F1E6 × 0308 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 1F1E6 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 1F1E6 × 0308 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 1F1E6 ÷ 0378 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 1F1E6 × 0308 ÷ 0378 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 0600 × 0020 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] SPACE (Other) ÷ [0.3] -÷ 0600 × 0308 ÷ 0020 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 0600 ÷ 000D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 0600 × 0308 ÷ 000D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 0600 ÷ 000A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 0600 × 0308 ÷ 000A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 0600 ÷ 0001 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 0600 × 0308 ÷ 0001 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 0600 × 034F ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 0600 × 0308 × 034F ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 0600 × 1F1E6 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 0600 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 0600 × 0600 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 0600 × 0308 ÷ 0600 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 0600 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 0600 × 0308 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 0600 × 1100 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 0600 × 0308 ÷ 1100 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 0600 × 1160 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 0600 × 0308 ÷ 1160 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 0600 × 11A8 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 0600 × 0308 ÷ 11A8 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 0600 × AC00 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 0600 × 0308 ÷ AC00 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 0600 × AC01 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 0600 × 0308 ÷ AC01 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 0600 × 231A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] WATCH (ExtPict) ÷ [0.3] -÷ 0600 × 0308 ÷ 231A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 0600 × 0300 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 0600 × 0308 × 0300 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 0600 × 200D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 0600 × 0308 × 200D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 0600 × 0378 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] <reserved-0378> (Other) ÷ [0.3] -÷ 0600 × 0308 ÷ 0378 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 0903 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 0903 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 0903 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 0903 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 0903 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 0903 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 0903 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 0903 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 0903 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 0903 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 0903 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 0903 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 0903 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 0903 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 0903 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 0903 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 0903 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 0903 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 0903 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 0903 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 0903 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 0903 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 0903 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 0903 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 0903 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 0903 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 0903 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 0903 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 0903 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 0903 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 0903 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 0903 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 0903 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 0903 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 1100 ÷ 0020 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 1100 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 1100 ÷ 000D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 1100 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 1100 ÷ 000A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 1100 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 1100 ÷ 0001 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 1100 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 1100 × 034F ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 1100 × 0308 × 034F ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 1100 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 1100 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 1100 ÷ 0600 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 1100 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 1100 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 1100 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 1100 × 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 1100 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 1100 × 1160 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 1100 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 1100 ÷ 11A8 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 1100 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 1100 × AC00 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 1100 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 1100 × AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 1100 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 1100 ÷ 231A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 1100 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 1100 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 1100 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 1100 × 200D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 1100 × 0308 × 200D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 1100 ÷ 0378 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 1100 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 1160 ÷ 0020 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 1160 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 1160 ÷ 000D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 1160 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 1160 ÷ 000A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 1160 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 1160 ÷ 0001 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 1160 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 1160 × 034F ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 1160 × 0308 × 034F ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 1160 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 1160 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 1160 ÷ 0600 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 1160 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 1160 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 1160 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 1160 ÷ 1100 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 1160 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 1160 × 1160 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [7.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 1160 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 1160 × 11A8 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 1160 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 1160 ÷ AC00 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 1160 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 1160 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 1160 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 1160 ÷ 231A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 1160 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 1160 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 1160 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 1160 × 200D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 1160 × 0308 × 200D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 1160 ÷ 0378 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 1160 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 11A8 ÷ 0020 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 11A8 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 11A8 ÷ 000D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 11A8 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 11A8 ÷ 000A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 11A8 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 11A8 ÷ 0001 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 11A8 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 11A8 × 034F ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 11A8 × 0308 × 034F ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 11A8 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 11A8 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 11A8 ÷ 0600 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 11A8 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 11A8 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 11A8 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 11A8 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 11A8 ÷ 1160 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 11A8 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 11A8 × 11A8 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 11A8 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 11A8 ÷ AC00 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 11A8 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 11A8 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 11A8 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 11A8 ÷ 231A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 11A8 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 11A8 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 11A8 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 11A8 × 200D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 11A8 × 0308 × 200D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 11A8 ÷ 0378 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 11A8 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ AC00 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ AC00 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ AC00 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ AC00 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ AC00 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ AC00 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ AC00 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ AC00 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ AC00 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ AC00 × 0308 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ AC00 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ AC00 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ AC00 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ AC00 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ AC00 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ AC00 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ AC00 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ AC00 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ AC00 × 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ AC00 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ AC00 × 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ AC00 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ AC00 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ AC00 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ AC00 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ AC00 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ AC00 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ AC00 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ AC00 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ AC00 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ AC00 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ AC00 × 0308 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ AC00 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ AC00 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ AC01 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ AC01 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ AC01 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ AC01 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ AC01 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ AC01 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ AC01 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ AC01 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ AC01 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ AC01 × 0308 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ AC01 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ AC01 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ AC01 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ AC01 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ AC01 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ AC01 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ AC01 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ AC01 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ AC01 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ AC01 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ AC01 × 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ AC01 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ AC01 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ AC01 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ AC01 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ AC01 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ AC01 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ AC01 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ AC01 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ AC01 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ AC01 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ AC01 × 0308 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ AC01 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ AC01 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 231A ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 231A × 0308 ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 231A ÷ 000D ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 231A × 0308 ÷ 000D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 231A ÷ 000A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 231A × 0308 ÷ 000A ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 231A ÷ 0001 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 231A × 0308 ÷ 0001 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 231A × 034F ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 231A × 0308 × 034F ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 231A ÷ 1F1E6 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 231A × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 231A ÷ 0600 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 231A × 0308 ÷ 0600 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 231A × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 231A × 0308 × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 231A ÷ 1100 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 231A × 0308 ÷ 1100 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 231A ÷ 1160 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 231A × 0308 ÷ 1160 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 231A ÷ 11A8 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 231A × 0308 ÷ 11A8 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 231A ÷ AC00 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 231A × 0308 ÷ AC00 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 231A ÷ AC01 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 231A × 0308 ÷ AC01 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 231A ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 231A × 0308 ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 231A × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 231A × 0308 × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 231A × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 231A × 0308 × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 231A ÷ 0378 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 231A × 0308 ÷ 0378 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 0300 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 0300 × 0308 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 0300 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 0300 × 0308 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 0300 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 0300 × 0308 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 0300 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 0300 × 0308 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 0300 × 034F ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 0300 × 0308 × 034F ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 0300 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 0300 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 0300 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 0300 × 0308 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 0300 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 0300 × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 0300 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 0300 × 0308 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 0300 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 0300 × 0308 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 0300 ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 0300 × 0308 ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 0300 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 0300 × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 0300 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 0300 × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 0300 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 0300 × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 0300 × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 0300 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 0300 × 0308 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 0300 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 0300 × 0308 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 200D ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 200D × 0308 ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 200D ÷ 000D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 200D × 0308 ÷ 000D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 200D ÷ 000A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 200D × 0308 ÷ 000A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 200D ÷ 0001 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 200D × 0308 ÷ 0001 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 200D × 034F ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 200D × 0308 × 034F ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 200D ÷ 1F1E6 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 200D × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 200D ÷ 0600 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 200D × 0308 ÷ 0600 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 200D × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 200D × 0308 × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 200D ÷ 1100 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 200D × 0308 ÷ 1100 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 200D ÷ 1160 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 200D × 0308 ÷ 1160 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 200D ÷ 11A8 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 200D × 0308 ÷ 11A8 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 200D ÷ AC00 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 200D × 0308 ÷ AC00 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 200D ÷ AC01 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 200D × 0308 ÷ AC01 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 200D ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 200D × 0308 ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 200D × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 200D × 0308 × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 200D × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 200D × 0308 × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 200D ÷ 0378 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 200D × 0308 ÷ 0378 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 0378 ÷ 0020 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 0378 × 0308 ÷ 0020 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 0378 ÷ 000D ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 0378 × 0308 ÷ 000D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3] -÷ 0378 ÷ 000A ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 0378 × 0308 ÷ 000A ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3] -÷ 0378 ÷ 0001 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 0378 × 0308 ÷ 0001 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3] -÷ 0378 × 034F ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 0378 × 0308 × 034F ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] -÷ 0378 ÷ 1F1E6 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 0378 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -÷ 0378 ÷ 0600 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 0378 × 0308 ÷ 0600 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] -÷ 0378 × 0903 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 0378 × 0308 × 0903 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] -÷ 0378 ÷ 1100 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 0378 × 0308 ÷ 1100 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 0378 ÷ 1160 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 0378 × 0308 ÷ 1160 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] -÷ 0378 ÷ 11A8 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 0378 × 0308 ÷ 11A8 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] -÷ 0378 ÷ AC00 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 0378 × 0308 ÷ AC00 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] -÷ 0378 ÷ AC01 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 0378 × 0308 ÷ AC01 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] -÷ 0378 ÷ 231A ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 0378 × 0308 ÷ 231A ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] -÷ 0378 × 0300 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 0378 × 0308 × 0300 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] -÷ 0378 × 200D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 0378 × 0308 × 200D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 0378 ÷ 0378 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 0378 × 0308 ÷ 0378 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3] -÷ 000D × 000A ÷ 0061 ÷ 000A ÷ 0308 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN SMALL LETTER A (Other) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [0.3] -÷ 0061 × 0308 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [0.3] -÷ 0020 × 200D ÷ 0646 ÷ # ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] ARABIC LETTER NOON (Other) ÷ [0.3] -÷ 0646 × 200D ÷ 0020 ÷ # ÷ [0.2] ARABIC LETTER NOON (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] -÷ 1100 × 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ AC00 × 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ AC01 × 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] -÷ 1F1E6 × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [12.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] -÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] -÷ 0061 ÷ 1F1E6 × 1F1E7 × 200D ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] -÷ 0061 ÷ 1F1E6 × 200D ÷ 1F1E7 × 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] -÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 × 1F1E9 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER D (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] -÷ 0061 × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] -÷ 0061 × 0308 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] -÷ 0061 × 0903 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] -÷ 0061 ÷ 0600 × 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) × [9.2] LATIN SMALL LETTER B (Other) ÷ [0.3] -÷ 1F476 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3] -÷ 0061 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3] -÷ 0061 × 1F3FF ÷ 1F476 × 200D × 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] -÷ 1F476 × 1F3FF × 0308 × 200D × 1F476 × 1F3FF ÷ # ÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [0.3] -÷ 1F6D1 × 200D × 1F6D1 ÷ # ÷ [0.2] OCTAGONAL SIGN (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] -÷ 0061 × 200D ÷ 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] -÷ 2701 × 200D × 2701 ÷ # ÷ [0.2] UPPER BLADE SCISSORS (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] UPPER BLADE SCISSORS (Other) ÷ [0.3] -÷ 0061 × 200D ÷ 2701 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] UPPER BLADE SCISSORS (Other) ÷ [0.3] -# -# Lines: 602 -# -# EOF diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/text/qtextboundaryfinder/tst_qtextboundaryfinder.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/text/qtextboundaryfinder/tst_qtextboundaryfinder.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/text/qtextboundaryfinder/tst_qtextboundaryfinder.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/text/qtextboundaryfinder/tst_qtextboundaryfinder.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -51,6 +51,9 @@ void lineBoundariesDefault(); #endif + void graphemeBoundaries_manual_data(); + void graphemeBoundaries_manual(); + void wordBoundaries_manual_data(); void wordBoundaries_manual(); void sentenceBoundaries_manual_data(); @@ -286,6 +289,104 @@ } #endif // QT_BUILD_INTERNAL +void tst_QTextBoundaryFinder::graphemeBoundaries_manual_data() +{ + QTest::addColumn<QString>("testString"); + QTest::addColumn<QList<int>>("expectedBreakPositions"); + + { + // QTBUG-94951 + QChar s[] = { QChar(0x2764), // U+2764 HEAVY BLACK HEART + QChar(0xFE0F), // U+FE0F VARIATION SELECTOR-16 + QChar(0xD83D), QChar(0xDCF2), // U+1F4F2 MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT + QChar(0xD83D), QChar(0xDCE9), // U+1F4E9 ENVELOPE WITH DOWNWARDS ARROW ABOVE + }; + QString testString(s, sizeof(s)/sizeof(s[0])); + + QList<int> expectedBreakPositions{0, 2, 4, 6}; + QTest::newRow("+EXTPICxEXT+EXTPIC+EXTPIC+") << testString << expectedBreakPositions; + } + + { + QChar s[] = { QChar(0x2764), // U+2764 HEAVY BLACK HEART + QChar(0xFE0F), // U+FE0F VARIATION SELECTOR-16 + QChar(0x2764), // U+2764 HEAVY BLACK HEART + QChar(0xFE0F), // U+FE0F VARIATION SELECTOR-16 + }; + QString testString(s, sizeof(s)/sizeof(s[0])); + + QList<int> expectedBreakPositions{0, 2, 4}; + QTest::newRow("+EXTPICxEXT+EXTPICxEXT+") << testString << expectedBreakPositions; + } + + { + QChar s[] = { QChar(0x2764), // U+2764 HEAVY BLACK HEART + QChar(0xFE0F), // U+FE0F VARIATION SELECTOR-16 + QChar(0xFE0F), // U+FE0F VARIATION SELECTOR-16 + QChar(0xFE0F), // U+FE0F VARIATION SELECTOR-16 + QChar(0x2764), // U+2764 HEAVY BLACK HEART + QChar(0xFE0F), // U+FE0F VARIATION SELECTOR-16 + QChar(0xFE0F), // U+FE0F VARIATION SELECTOR-16 + }; + QString testString(s, sizeof(s)/sizeof(s[0])); + + QList<int> expectedBreakPositions{0, 4, 7}; + QTest::newRow("+EXTPICxEXTxEXTxEXT+EXTPICxEXTxEXT+") << testString << expectedBreakPositions; + } + + { + QChar s[] = { QChar(0x2764), // U+2764 HEAVY BLACK HEART + QChar(0xFE0F), // U+FE0F VARIATION SELECTOR-16 + QChar(0xFE0F), // U+FE0F VARIATION SELECTOR-16 + QChar(0x200D), // U+200D ZERO WIDTH JOINER + QChar(0xD83D), QChar(0xDCF2), // U+1F4F2 MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT + QChar(0xFE0F), // U+FE0F VARIATION SELECTOR-16 + }; + QString testString(s, sizeof(s)/sizeof(s[0])); + + QList<int> expectedBreakPositions{0, 7}; + QTest::newRow("+EXTPICxEXTxEXTxZWJxEXTPICxEXTxEXT+") << testString << expectedBreakPositions; + } + + { + QChar s[] = { QChar(0x2764), // U+2764 HEAVY BLACK HEART + QChar(0xFE0F), // U+FE0F VARIATION SELECTOR-16 + QChar(0xFE0F), // U+FE0F VARIATION SELECTOR-16 + QChar(0x200D), // U+200D ZERO WIDTH JOINER + QChar(0x0041), // U+0041 LATIN CAPITAL LETTER A + QChar(0xD83D), QChar(0xDCF2), // U+1F4F2 MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT + }; + QString testString(s, sizeof(s)/sizeof(s[0])); + + QList<int> expectedBreakPositions{0, 4, 5, 7}; + QTest::newRow("+EXTPICxEXTxEXTxZWJ+Any+EXTPIC+") << testString << expectedBreakPositions; + } + + { + QChar s[] = { QChar(0x2764), // U+2764 HEAVY BLACK HEART + QChar(0xFE0F), // U+FE0F VARIATION SELECTOR-16 + QChar(0xD83C), QChar(0xDDEA), // U+1F1EA REGIONAL INDICATOR SYMBOL LETTER E + QChar(0xD83C), QChar(0xDDFA), // U+1F1FA REGIONAL INDICATOR SYMBOL LETTER U + QChar(0xD83C), QChar(0xDDEA), // U+1F1EA REGIONAL INDICATOR SYMBOL LETTER E + QChar(0xD83C), QChar(0xDDFA), // U+1F1FA REGIONAL INDICATOR SYMBOL LETTER U + QChar(0xD83C), QChar(0xDDEA), // U+1F1EA REGIONAL INDICATOR SYMBOL LETTER E + QChar(0x0041), // U+0041 LATIN CAPITAL LETTER A + }; + QString testString(s, sizeof(s)/sizeof(s[0])); + + QList<int> expectedBreakPositions{0, 2, 6, 10, 12, 13}; + QTest::newRow("+EXTPICxEXT+RIxRI+RIxRI+RI+ANY+") << testString << expectedBreakPositions; + } +} + +void tst_QTextBoundaryFinder::graphemeBoundaries_manual() +{ + QFETCH(QString, testString); + QFETCH(QList<int>, expectedBreakPositions); + + doTestData(testString, expectedBreakPositions, QTextBoundaryFinder::Grapheme); +} + void tst_QTextBoundaryFinder::wordBoundaries_manual_data() { QTest::addColumn<QString>("testString"); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -94,6 +94,7 @@ void nestedExceptions(); #endif void nonGlobalThreadPool(); + void resultsReadyAt(); }; void tst_QFuture::resultStore() @@ -627,6 +628,26 @@ VoidResult a; a.run().waitForFinished(); } + + { + QFutureInterface<int> fi; + fi.reportStarted(); + fi.reportResults(QVector<int> {}); + fi.reportFinished(); + + QVERIFY(fi.results().empty()); + } + + { + QFutureInterface<int> fi; + fi.reportStarted(); + QVector<int> values = { 1, 2, 3 }; + fi.reportResults(values); + fi.reportResults(QVector<int> {}); + fi.reportFinished(); + + QCOMPARE(fi.results(), values.toList()); + } } template <typename T> @@ -1557,5 +1578,63 @@ } } +void tst_QFuture::resultsReadyAt() +{ + QFutureInterface<int> iface; + QFutureWatcher<int> watcher; + watcher.setFuture(iface.future()); + + QTestEventLoop eventProcessor; + connect(&watcher, &QFutureWatcher<int>::finished, &eventProcessor, &QTestEventLoop::exitLoop); + + const int nExpectedResults = 4; + int reported = 0; + int taken = 0; + connect(&watcher, &QFutureWatcher<int>::resultsReadyAt, + [&iface, &reported, &taken](int begin, int end) + { + auto future = iface.future(); + QVERIFY(end - begin > 0); + for (int i = begin; i < end; ++i, ++reported) { + QVERIFY(future.isResultReadyAt(i)); + taken |= 1 << i; + } + }); + + auto report = [&iface](int index) + { + int dummyResult = 0b101010; + iface.reportResult(&dummyResult, index); + }; + + const QSignalSpy readyCounter(&watcher, &QFutureWatcher<int>::resultsReadyAt); + QTimer::singleShot(0, [&iface, &report]{ + // With filter mode == true, the result may go into the pending results. + // Reporting it as ready will allow an application to try and access the + // result, crashing on invalid (store.end()) iterator dereferenced. + iface.setFilterMode(true); + iface.reportStarted(); + report(0); + report(1); + // This one - should not be reported (it goes into pending): + report(3); + // Let's close the 'gap' and make them all ready: + report(-1); + iface.reportFinished(); + }); + + // Run event loop, QCoreApplication::postEvent is in use + // in QFutureInterface: + eventProcessor.enterLoopMSecs(2000); + QVERIFY(!eventProcessor.timeout()); + if (QTest::currentTestFailed()) // Failed in our lambda observing 'ready at' + return; + + QCOMPARE(reported, nExpectedResults); + QCOMPARE(nExpectedResults, iface.future().resultCount()); + QCOMPARE(readyCounter.count(), 3); + QCOMPARE(taken, 0b1111); +} + QTEST_MAIN(tst_QFuture) #include "tst_qfuture.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/thread/qresultstore/tst_qresultstore.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/thread/qresultstore/tst_qresultstore.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/thread/qresultstore/tst_qresultstore.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/thread/qresultstore/tst_qresultstore.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -175,6 +175,14 @@ ++it; QCOMPARE(it, store.end()); + + QVector<int> empty; + const auto countBefore = store.count(); + QCOMPARE(store.addResults(countBefore, &empty), -1); + QCOMPARE(store.count(), countBefore); + + QCOMPARE(store.addResults(countBefore, &vec1), countBefore); + QCOMPARE(store.count(), countBefore + vec1.size()); } void tst_QtConcurrentResultStore::resultIndex() @@ -338,6 +346,14 @@ QCOMPARE(store.contains(6), true); QCOMPARE(store.contains(7), true); QCOMPARE(store.contains(8), false); + + QVector<int> empty; + const auto countBefore = store.count(); + QCOMPARE(store.addResults(countBefore, &empty), -1); + QCOMPARE(store.count(), countBefore); + + QCOMPARE(store.addResult(countBefore, &int2), countBefore); + QCOMPARE(store.count(), countBefore + 1); } void tst_QtConcurrentResultStore::addCanceledResult() diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/thread/qthread/tst_qthread.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/thread/qthread/tst_qthread.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/thread/qthread/tst_qthread.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/thread/qthread/tst_qthread.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. @@ -36,6 +36,7 @@ #include <qwaitcondition.h> #include <qdebug.h> #include <qmetaobject.h> +#include <qscopeguard.h> #ifdef Q_OS_UNIX #include <pthread.h> @@ -106,6 +107,7 @@ void quitLock(); void create(); + void threadIdReuse(); }; enum { one_minute = 60 * 1000, five_minutes = 5 * one_minute }; @@ -1082,8 +1084,8 @@ qPrintable(msgElapsed(elapsed))); } - -class SlowSlotObject : public QObject { +class SlowSlotObject : public QObject +{ Q_OBJECT public: QMutex mutex; @@ -1099,22 +1101,23 @@ { SlowSlotObject slow; QThread thread; - QObject::connect(&thread, SIGNAL(finished()), &slow, SLOT(slowSlot()), Qt::DirectConnection); - - enum { WaitTime = 1800 }; + QObject::connect(&thread, &QThread::finished, + &slow, &SlowSlotObject::slowSlot, Qt::DirectConnection); QElapsedTimer timer; thread.start(); thread.quit(); - //the quit function will cause the thread to finish and enter the slowSlot that is blocking + // Calling quit() will cause the thread to finish and enter the blocking slowSlot(). timer.start(); - QVERIFY(!thread.wait(Waiting_Thread::WaitTime)); - qint64 elapsed = timer.elapsed(); - QVERIFY2(elapsed >= Waiting_Thread::WaitTime - 1, qPrintable(QString::fromLatin1("elapsed: %1").arg(elapsed))); - - slow.cond.wakeOne(); - //now the thread should finish quickly + { + // Ensure thread finishes quickly after the checks - regardless of success: + const auto wakeSlow = qScopeGuard([&slow]() -> void { slow.cond.wakeOne(); }); + QVERIFY(!thread.wait(Waiting_Thread::WaitTime)); + const qint64 elapsed = timer.elapsed(); + QVERIFY2(elapsed >= Waiting_Thread::WaitTime - 1, + qPrintable(QString::fromLatin1("elapsed: %1").arg(elapsed))); + } QVERIFY(thread.wait(one_minute)); } @@ -1631,5 +1634,71 @@ QVERIFY(!thread.isInterruptionRequested()); } +/* + This is a regression test for QTBUG-96846. + + Incorrect system thread ID cleanup can cause QThread::wait() to report that + a thread is trying to wait for itself. +*/ +void tst_QThread::threadIdReuse() +{ + class Thread1 : public QThread { + public: + // It's important that those thread ID's are not accessed concurrently + Qt::HANDLE savedThreadId; + + void run() override { savedThreadId = QThread::currentThreadId(); } + }; + + class Thread2 : public Thread1 { + public: + bool waitOk; + Thread2(QThread *otherThread) : Thread1(), waitOk(false), otherThread(otherThread) {} + + void run() override { + Thread1::run(); + waitOk = otherThread->wait(); + } + + private: + QThread *const otherThread; + }; + + Thread1 thread1; + thread1.start(); + QVERIFY(thread1.wait()); + + // If the system thread allocated for thread1 is destroyed before thread2 is + // started, at least on some versions of Linux the system thread ID for + // thread2 would be the same as one that was used for thread1. + + // The system thread may be alive for some time after returning from + // QThread::wait() because the implementation is using detachable threads, so + // some additional time is required for the system thread to terminate. Not + // waiting long enough here would result in a new system thread ID being + // allocated for thread2 and this test passing even without a fix for + // QTBUG-96846. + bool threadIdReused = false; + + for (int i = 0; i < 42; i++) { + QThread::msleep(1); + + Thread2 thread2(&thread1); + thread2.start(); + QVERIFY(thread2.wait()); + QVERIFY(thread2.waitOk); + + if (thread1.savedThreadId == thread2.savedThreadId) { + qDebug("Thread ID reused at iteration %d", i); + threadIdReused = true; + break; + } + } + + if (!threadIdReused) { + QSKIP("Thread ID was not reused"); + } +} + QTEST_MAIN(tst_QThread) #include "tst_qthread.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/thread/qthreadpool/tst_qthreadpool.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/thread/qthreadpool/tst_qthreadpool.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/thread/qthreadpool/tst_qthreadpool.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/thread/qthreadpool/tst_qthreadpool.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -104,6 +104,7 @@ void stressTest(); void takeAllAndIncreaseMaxThreadCount(); void waitForDoneAfterTake(); + void threadReuse(); private: QMutex m_functionTestMutex; @@ -803,7 +804,7 @@ CounterTask task; QThreadPool threadPool; - for (int i = 0; i < 20; ++i) { + for (int i = 0; i < 4*QThread::idealThreadCount(); ++i) { if (threadPool.tryStart(&task) == false) QTest::qWait(10); } @@ -1385,5 +1386,29 @@ } +/* + Try trigger reuse of expired threads and check that all tasks execute. + + This is a regression test for QTBUG-72872. +*/ +void tst_QThreadPool::threadReuse() +{ + QThreadPool manager; + manager.setExpiryTimeout(-1); + manager.setMaxThreadCount(1); + + constexpr int repeatCount = 10000; + constexpr int timeoutMs = 1000; + QSemaphore sem; + + for (int i = 0; i < repeatCount; i++) { + manager.start([&sem]() { sem.release(); }); + manager.start([&sem]() { sem.release(); }); + manager.releaseThread(); + QVERIFY(sem.tryAcquire(2, timeoutMs)); + manager.reserveThread(); + } +} + QTEST_MAIN(tst_QThreadPool); #include "tst_qthreadpool.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/time/qdate/tst_qdate.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/time/qdate/tst_qdate.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/time/qdate/tst_qdate.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/time/qdate/tst_qdate.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -90,7 +90,6 @@ void yearsZeroToNinetyNine(); void printNegativeYear_data() const; void printNegativeYear() const; - void roundtripGermanLocale() const; #if QT_CONFIG(textdate) && QT_DEPRECATED_SINCE(5, 10) void shortDayName() const; void standaloneShortDayName() const; @@ -100,6 +99,7 @@ void standaloneShortMonthName() const; void longMonthName() const; void standaloneLongMonthName() const; + void roundtripString() const; #endif // textdate void roundtrip() const; void qdebug() const; @@ -1484,16 +1484,6 @@ QCOMPARE(date.toString(QLatin1String("yyyy")), expect); } -void tst_QDate::roundtripGermanLocale() const -{ - /* This code path should not result in warnings. */ - const QDate theDate(QDate::currentDate()); - theDate.fromString(theDate.toString(Qt::TextDate), Qt::TextDate); - - const QDateTime theDateTime(QDateTime::currentDateTime()); - theDateTime.fromString(theDateTime.toString(Qt::TextDate), Qt::TextDate); -} - #if QT_CONFIG(textdate) && QT_DEPRECATED_SINCE(5, 10) QT_WARNING_PUSH // the methods tested here are all deprecated QT_WARNING_DISABLE_GCC("-Wdeprecated-declarations") @@ -1626,6 +1616,17 @@ } } QT_WARNING_POP + +void tst_QDate::roundtripString() const +{ + /* This code path should not result in warnings, no matter what locale is set. */ + const QDate date(QDate::currentDate()); + QCOMPARE(date.fromString(date.toString(Qt::TextDate), Qt::TextDate), date); + + const QDateTime now(QDateTime::currentDateTime()); + const QDateTime when = now.addMSecs(-now.time().msec()); // TextDate rounds to whole seconds. + QCOMPARE(when.fromString(when.toString(Qt::TextDate), Qt::TextDate), when); +} #endif // textdate void tst_QDate::roundtrip() const diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Copyright (C) 2016 Intel Corporation. ** Contact: https://www.qt.io/licensing/ ** @@ -152,6 +152,7 @@ void isDaylightTime() const; void daylightTransitions() const; void timeZones() const; + void systemTimeZoneChange_data() const; void systemTimeZoneChange() const; void invalid_data() const; @@ -825,7 +826,7 @@ QTest::newRow("negative non-integral OffsetFromUTC") << dt << Qt::ISODate << QString("1978-11-09T13:28:34-00:15"); - QTest::newRow("invalid") + QTest::newRow("invalid") // ISODate < 2019 doesn't allow -ve year numbers; QTBUG-91070 << QDateTime(QDate(-1, 11, 9), QTime(13, 28, 34), Qt::UTC) << Qt::ISODate << QString(); QTest::newRow("without-ms") @@ -838,30 +839,31 @@ void tst_QDateTime::toString_isoDate() { - QFETCH(QDateTime, datetime); - QFETCH(Qt::DateFormat, format); - QFETCH(QString, expected); + QFETCH(const QDateTime, datetime); + QFETCH(const Qt::DateFormat, format); + QFETCH(const QString, expected); #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QLocale oldLocale; QLocale::setDefault(QLocale("en_US")); #endif // ### Qt 6: remove - QString result = datetime.toString(format); + const QString result = datetime.toString(format); QCOMPARE(result, expected); - QDateTime resultDatetime = QDateTime::fromString(result, format); - // If expecting invalid result the datetime may still be valid, i.e. year < 0 or > 9999 - if (!expected.isEmpty()) { - QEXPECT_FAIL("without-ms", "Qt::ISODate truncates milliseconds (QTBUG-56552)", Abort); - - QCOMPARE(resultDatetime, datetime); - QCOMPARE(resultDatetime.date(), datetime.date()); - QCOMPARE(resultDatetime.time(), datetime.time()); - QCOMPARE(resultDatetime.timeSpec(), datetime.timeSpec()); - QCOMPARE(resultDatetime.offsetFromUtc(), datetime.offsetFromUtc()); - } else { + const QDateTime resultDatetime = QDateTime::fromString(result, format); + if (QByteArray(QTest::currentDataTag()) == "invalid") { QCOMPARE(resultDatetime, QDateTime()); + } else { + const QDateTime when = + QByteArray(QTest::currentDataTag()) == "without-ms" + ? datetime.addMSecs(-datetime.time().msec()) : datetime; + QCOMPARE(resultDatetime.toMSecsSinceEpoch(), when.toMSecsSinceEpoch()); + QCOMPARE(resultDatetime, when); + QCOMPARE(resultDatetime.date(), when.date()); + QCOMPARE(resultDatetime.time(), when.time()); + QCOMPARE(resultDatetime.timeSpec(), when.timeSpec()); + QCOMPARE(resultDatetime.offsetFromUtc(), when.offsetFromUtc()); } #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) @@ -3721,38 +3723,63 @@ #endif } -void tst_QDateTime::systemTimeZoneChange() const +void tst_QDateTime::systemTimeZoneChange_data() const { #ifdef Q_OS_WINRT QSKIP("UWP applications cannot change the system`s time zone (sandboxing)"); #endif - // Set the timezone to Brisbane time - TimeZoneRollback useZone(QByteArray("AEST-10:00")); + QTest::addColumn<QDate>("date"); + QTest::newRow("short") << QDate(1970, 1, 1); + QTest::newRow("2012") << QDate(2012, 6, 1); // short on 64-bit, pimpled on 32-bit + QTest::newRow("pimpled") << QDate(1150000, 6, 1); +} + +void tst_QDateTime::systemTimeZoneChange() const +{ + QFETCH(const QDate, date); + const QTime early(2, 15, 30); - QDateTime localDate = QDateTime(QDate(2012, 6, 1), QTime(2, 15, 30), Qt::LocalTime); - QDateTime utcDate = QDateTime(QDate(2012, 6, 1), QTime(2, 15, 30), Qt::UTC); + // Start out in Brisbane time: + TimeZoneRollback useZone(QByteArray("AEST-10:00")); + if (QDateTime(date, early, Qt::LocalTime).offsetFromUtc() != 600 * 60) + QSKIP("Test depends on system support for changing zone to AEST-10:00"); #if QT_CONFIG(timezone) - QDateTime tzDate = QDateTime(QDate(2012, 6, 1), QTime(2, 15, 30), QTimeZone("Australia/Brisbane")); + QVERIFY(QTimeZone::systemTimeZone().isValid()); #endif - qint64 localMsecs = localDate.toMSecsSinceEpoch(); - qint64 utcMsecs = utcDate.toMSecsSinceEpoch(); + + const QDateTime localDate = QDateTime(date, early, Qt::LocalTime); + const QDateTime utcDate = QDateTime(date, early, Qt::UTC); + const qint64 localMsecs = localDate.toMSecsSinceEpoch(); + const qint64 utcMsecs = utcDate.toMSecsSinceEpoch(); #if QT_CONFIG(timezone) - qint64 tzMsecs = tzDate.toMSecsSinceEpoch(); + const QTimeZone aest("Australia/Brisbane"); // no transitions since 1992 + // Check that Australia/Brisbane is known: + QVERIFY(aest.isValid()); + const QDateTime tzDate = QDateTime(date, early, aest); - // check that Australia/Brisbane is known + // Check we got the right zone ! QVERIFY(tzDate.timeZone().isValid()); + QCOMPARE(tzDate.timeZone(), aest); + const qint64 tzMsecs = tzDate.toMSecsSinceEpoch(); #endif // Change to Indian time useZone.reset(QByteArray("IST-05:30")); + if (QDateTime(date, early, Qt::LocalTime).offsetFromUtc() != 330 * 60) + QSKIP("Test depends on system support for changing zone to IST-05:30"); +#if QT_CONFIG(timezone) + QVERIFY(QTimeZone::systemTimeZone().isValid()); +#endif - QCOMPARE(localDate, QDateTime(QDate(2012, 6, 1), QTime(2, 15, 30), Qt::LocalTime)); - QVERIFY(localMsecs != localDate.toMSecsSinceEpoch()); - QCOMPARE(utcDate, QDateTime(QDate(2012, 6, 1), QTime(2, 15, 30), Qt::UTC)); + QCOMPARE(localDate, QDateTime(date, early, Qt::LocalTime)); + // Note: localDate.toMSecsSinceEpoch == localMsecs, unchanged, iff localDate is pimpled. + QVERIFY(localMsecs != QDateTime(date, early, Qt::LocalTime).toMSecsSinceEpoch()); + QCOMPARE(utcDate, QDateTime(date, early, Qt::UTC)); QCOMPARE(utcDate.toMSecsSinceEpoch(), utcMsecs); #if QT_CONFIG(timezone) - QCOMPARE(tzDate, QDateTime(QDate(2012, 6, 1), QTime(2, 15, 30), QTimeZone("Australia/Brisbane"))); QCOMPARE(tzDate.toMSecsSinceEpoch(), tzMsecs); + QCOMPARE(tzDate.timeZone(), aest); + QCOMPARE(tzDate, QDateTime(date, early, aest)); #endif } diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -62,6 +62,7 @@ void windowsId(); void isValidId_data(); void isValidId(); + void malformed(); // Backend tests void utcTest(); void icuTest(); @@ -931,6 +932,21 @@ #endif } +void tst_QTimeZone::malformed() +{ + // Regression test for QTBUG-92808 + // Strings that look enough like a POSIX zone specifier that the constructor + // accepts them, but the specifier is invalid. + // Must not crash or trigger assertions when calling offsetFromUtc() + const QDateTime now = QDateTime::currentDateTime(); + QTimeZone barf("QUT4tCZ0 , /"); + if (barf.isValid()) + barf.offsetFromUtc(now); + barf = QTimeZone("QtC+09,,MA"); + if (barf.isValid()) + barf.offsetFromUtc(now); +} + void tst_QTimeZone::utcTest() { #ifdef QT_BUILD_INTERNAL diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -40,8 +40,10 @@ #include <algorithm> #include <functional> #include <vector> // for reference +#include <iostream> #include <list> #include <set> +#include <sstream> #include <map> // MSVC has these containers from the Standard Library, but it lacks @@ -64,6 +66,28 @@ #include <unordered_map> #endif +QT_BEGIN_NAMESPACE +std::ostream &operator<<(std::ostream &os, const QChar &c) +{ + Q_ASSERT(c == QLatin1Char{c.toLatin1()}); + return os << c.toLatin1(); +} +std::istream &operator>>(std::istream &os, QChar &c) +{ + char cL1; + os >> cL1; + c = QLatin1Char{cL1}; + return os; +} +QT_END_NAMESPACE + +namespace { +template <typename T> +struct is_qlist : std::false_type {}; +template <typename T> +struct is_qlist<QList<T>> : std::true_type {}; +} + struct Movable { explicit Movable(int i = 0) Q_DECL_NOTHROW @@ -85,6 +109,11 @@ int i; static int instanceCount; + + friend std::ostream &operator<<(std::ostream &os, const Movable &m) + { return os << m.i; } + friend std::istream &operator>>(std::istream &os, Movable &m) + { return os >> m.i; } }; int Movable::instanceCount = 0; @@ -124,6 +153,11 @@ int i; static int instanceCount; + + friend std::ostream &operator<<(std::ostream &os, const Complex &c) + { return os << c.i; } + friend std::istream &operator>>(std::istream &os, Complex &c) + { return os >> c.i; } }; int Complex::instanceCount = 0; @@ -550,12 +584,30 @@ // from itself const Container c4(reference.begin(), reference.end()); + // from stringsteam (= pure input_iterator) + const Container c5 = [&] { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) // QTBUG-99036 + if constexpr (is_qlist<Container>::value) { + return c4; + } else +#endif + { + std::stringstream ss; + for (auto &v : values1) + ss << v << ' '; + ss.seekg(0); + return Container(std::istream_iterator<V>{ss}, + std::istream_iterator<V>{}); + } + }(); + QCOMPARE(c1, reference); QCOMPARE(c2a, reference); QCOMPARE(c2b, reference); QCOMPARE(c3a, reference); QCOMPARE(c3b, reference); QCOMPARE(c4, reference); + QCOMPARE(c5, reference); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/tools/qhashfunctions/tst_qhashfunctions.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/tools/qhashfunctions/tst_qhashfunctions.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/tools/qhashfunctions/tst_qhashfunctions.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/tools/qhashfunctions/tst_qhashfunctions.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -230,8 +230,14 @@ struct Hashable { int i; }; inline uint qHash(Hashable h, uint seed = 0) { return QT_PREPEND_NAMESPACE(qHash)(h.i, seed); } -} + struct AdlHashable { + int i; + private: + friend size_t qHash(AdlHashable h, size_t seed = 0) + { return QT_PREPEND_NAMESPACE(qHash)(h.i, seed); } + }; +} void tst_QHashFunctions::range() { static const int ints[] = {0, 1, 2, 3, 4, 5}; @@ -253,10 +259,16 @@ QCOMPARE(qHashRange(ints, ints + numInts, seed), qHashRange(it, end, seed)); } - SomeNamespace::Hashable hashables[] = {{0}, {1}, {2}, {3}, {4}, {5}}; - static const size_t numHashables = sizeof hashables / sizeof *hashables; - // compile check: is qHash() found using ADL? - (void)qHashRange(hashables, hashables + numHashables, seed); + { + SomeNamespace::Hashable hashables[] = {{0}, {1}, {2}, {3}, {4}, {5}}; + // compile check: is qHash() found using ADL? + [[maybe_unused]] auto r = qHashRange(std::begin(hashables), std::end(hashables), seed); + } + { + SomeNamespace::AdlHashable hashables[] = {{0}, {1}, {2}, {3}, {4}, {5}}; + // compile check: is qHash() found as a hidden friend? + [[maybe_unused]] auto r = qHashRange(std::begin(hashables), std::end(hashables), seed); + } } void tst_QHashFunctions::rangeCommutative() @@ -279,10 +291,16 @@ QCOMPARE(qHashRangeCommutative(ints, ints + numInts, seed), qHashRangeCommutative(it, end, seed)); } - SomeNamespace::Hashable hashables[] = {{0}, {1}, {2}, {3}, {4}, {5}}; - static const size_t numHashables = sizeof hashables / sizeof *hashables; - // compile check: is qHash() found using ADL? - (void)qHashRangeCommutative(hashables, hashables + numHashables, seed); + { + SomeNamespace::Hashable hashables[] = {{0}, {1}, {2}, {3}, {4}, {5}}; + // compile check: is qHash() found using ADL? + [[maybe_unused]] auto r = qHashRangeCommutative(std::begin(hashables), std::end(hashables), seed); + } + { + SomeNamespace::AdlHashable hashables[] = {{0}, {1}, {2}, {3}, {4}, {5}}; + // compile check: is qHash() found as a hidden friend? + [[maybe_unused]] auto r = qHashRangeCommutative(std::begin(hashables), std::end(hashables), seed); + } } void tst_QHashFunctions::stdHash() diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/tools/qtimeline/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/tools/qtimeline/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/tools/qtimeline/BLACKLIST 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/tools/qtimeline/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -1,5 +1,5 @@ [interpolation] -windows-10 msvc-2015 +windows osx [frameRate] macos diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -29,6 +29,7 @@ #include <QtTest/QTest> #include <qvarlengtharray.h> #include <qvariant.h> +#include <qscopedvaluerollback.h> #include <memory> @@ -36,10 +37,13 @@ { Q_OBJECT private slots: + void defaultConstructor_int() { defaultConstructor<int>(); } + void defaultConstructor_QString() { defaultConstructor<QString>(); } void append(); void removeLast(); void oldTests(); void appendCausingRealloc(); + void appendIsStronglyExceptionSafe(); void resize(); void realloc(); void reverseIterators(); @@ -61,6 +65,8 @@ void implicitDefaultCtor(); private: + template <typename T> + void defaultConstructor(); template<typename T> void initializeList(); }; @@ -80,6 +86,23 @@ int Tracker::count = 0; +template <typename T> +void tst_QVarLengthArray::defaultConstructor() +{ + { + QVarLengthArray<T, 123> vla; + QCOMPARE(vla.size(), 0); + QVERIFY(vla.empty()); + QVERIFY(vla.isEmpty()); + QCOMPARE(vla.begin(), vla.end()); + QCOMPARE(vla.capacity(), 123); + } + { + QVarLengthArray<T> vla; + QCOMPARE(vla.capacity(), 256); // notice, should we change the default + } +} + void tst_QVarLengthArray::append() { QVarLengthArray<QString, 2> v; @@ -245,6 +268,49 @@ d.append(i); } +void tst_QVarLengthArray::appendIsStronglyExceptionSafe() +{ +#ifdef QT_NO_EXCEPTIONS + QSKIP("This test requires exception support enabled in the compiler."); +#else + static bool throwOnCopyNow = false; + static bool throwOnMoveNow = false; + struct Thrower { + Thrower() = default; + Thrower(const Thrower &) + { + if (throwOnCopyNow) + throw 1; + } + Thrower &operator=(const Thrower &) = default; + Thrower(Thrower &&) + { + if (throwOnMoveNow) + throw 1; + } + Thrower &operator=(Thrower &&) = default; + ~Thrower() = default; + }; + + { + // ### TODO: QVLA isn't exception-safe when throwing during reallocation, + // ### so check with size() < capacity() for now + QVarLengthArray<Thrower, 2> vla(1); + { + Thrower t; + const QScopedValueRollback<bool> rb(throwOnCopyNow, true); + QVERIFY_EXCEPTION_THROWN(vla.push_back(t), int); + QCOMPARE(vla.size(), 1); + } + { + const QScopedValueRollback<bool> rb(throwOnMoveNow, true); + QVERIFY_EXCEPTION_THROWN(vla.push_back({}), int); + QCOMPARE(vla.size(), 1); + } + } +#endif +} + void tst_QVarLengthArray::resize() { //MOVABLE diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/tools/qvector/tst_qvector.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/tools/qvector/tst_qvector.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/corelib/tools/qvector/tst_qvector.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/corelib/tools/qvector/tst_qvector.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -183,6 +183,94 @@ Q_DECLARE_METATYPE(Custom); +// Similar to Custom but not default-constructible and has move constructor and assignment +struct NonDefaultConstructible { + NonDefaultConstructible() = delete; + NonDefaultConstructible(char input) + : i(input) + , that(this) + , state(Constructed) + { + counter.fetchAndAddRelaxed(1); + } + NonDefaultConstructible(const NonDefaultConstructible &other) + : i(other.i) + , that(this) + , state(Constructed) + { + check(&other); + counter.fetchAndAddRelaxed(1); + } + NonDefaultConstructible(NonDefaultConstructible &&other) + : i(other.i) + , that(this) + , state(Constructed) + { + check(&other); + other.state = MovedFrom; + counter.fetchAndAddRelaxed(1); + } + ~NonDefaultConstructible() + { + check(this, true); + i = 0; + counter.fetchAndAddRelaxed(-1); + state = Destructed; + } + + bool operator==(const NonDefaultConstructible &other) const + { + check(&other); + check(this); + return i == other.i; + } + + bool operator<(const NonDefaultConstructible &other) const + { + check(&other); + check(this); + return i < other.i; + } + + NonDefaultConstructible &operator=(const NonDefaultConstructible &other) + { + check(&other); + check(this, true); + i = other.i; + state = Constructed; + return *this; + } + + NonDefaultConstructible &operator=(NonDefaultConstructible &&other) + { + check(&other); + check(this, true); + i = other.i; + state = Constructed; + other.state = MovedFrom; + return *this; + } + static QAtomicInt counter; + + char i; // used to identify origin of an instance +private: + NonDefaultConstructible *that; // used to catch copying using mem{cpy,move}() + + enum State { Constructed = 106, Destructed = 110, MovedFrom = 120 }; + State state; + + static void check(const NonDefaultConstructible *c, bool movedOk = false) + { + // check if c object has been moved incorrectly + QCOMPARE(c, c->that); + if (!movedOk || c->state != MovedFrom) + QCOMPARE(c->state, Constructed); + } +}; +QAtomicInt NonDefaultConstructible::counter = 0; + +inline uint qHash(const NonDefaultConstructible &key, uint seed = 0) { return qHash(key.i, seed); } + // tests depends on the fact that: Q_STATIC_ASSERT(!QTypeInfo<int>::isStatic); Q_STATIC_ASSERT(!QTypeInfo<int>::isComplex); @@ -190,6 +278,8 @@ Q_STATIC_ASSERT(QTypeInfo<Movable>::isComplex); Q_STATIC_ASSERT(QTypeInfo<Custom>::isStatic); Q_STATIC_ASSERT(QTypeInfo<Custom>::isComplex); +Q_STATIC_ASSERT(QTypeInfo<NonDefaultConstructible>::isStatic); +Q_STATIC_ASSERT(QTypeInfo<NonDefaultConstructible>::isComplex); class tst_QVector : public QObject @@ -263,6 +353,7 @@ void insertInt() const; void insertMovable() const; void insertCustom() const; + void insertNonDefaultConstructible() const; void isEmpty() const; void last() const; void lastIndexOf() const; @@ -273,6 +364,7 @@ void prependInt() const; void prependMovable() const; void prependCustom() const; + void prependNonDefaultConstructible() const; void qhashInt() const { qhash<int>(); } void qhashMovable() const { qhash<Movable>(); } void qhashCustom() const { qhash<Custom>(); } @@ -390,6 +482,10 @@ const Movable SimpleValue<Movable>::Values[] = { 110, 105, 101, 114, 111, 98 }; template<> const Custom SimpleValue<Custom>::Values[] = { 110, 105, 101, 114, 111, 98 }; +template<> +const NonDefaultConstructible SimpleValue<NonDefaultConstructible>::Values[] = + { 110, 105, 101, 114, 111, 98 }; + // Make some macros for the tests to use in order to be slightly more readable... #define T_FOO SimpleValue<T>::at(0) @@ -1592,6 +1688,11 @@ insert<Custom>(); } +void tst_QVector::insertNonDefaultConstructible() const +{ + insert<NonDefaultConstructible>(); +} + void tst_QVector::isEmpty() const { QVector<QString> myvec; @@ -1831,6 +1932,13 @@ QCOMPARE(instancesCount, Custom::counter.loadAcquire()); } +void tst_QVector::prependNonDefaultConstructible() const +{ + const int instancesCount = NonDefaultConstructible::counter.loadAcquire(); + prepend<NonDefaultConstructible>(); + QCOMPARE(instancesCount, NonDefaultConstructible::counter.loadAcquire()); +} + void tst_QVector::removeAllWithAlias() const { QVector<QString> strings; diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/image/qimage/tst_qimage.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/image/qimage/tst_qimage.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/image/qimage/tst_qimage.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/image/qimage/tst_qimage.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -103,6 +103,10 @@ void setPixel_data(); void setPixel(); + void setPixelWithAlpha_data(); + void setPixelWithAlpha(); + void setPixelColorWithAlpha_data(); + void setPixelColorWithAlpha(); void defaultColorTable_data(); void defaultColorTable(); @@ -1478,6 +1482,62 @@ } } +void tst_QImage::setPixelWithAlpha_data() +{ + QTest::addColumn<QImage::Format>("format"); + + for (int c = QImage::Format_RGB32; c < QImage::NImageFormats; ++c) { + if (c == QImage::Format_Grayscale8) + continue; + if (c == QImage::Format_Grayscale16) + continue; + if (c == QImage::Format_Alpha8) + continue; + QTest::newRow(qPrintable(formatToString(QImage::Format(c)))) << QImage::Format(c); + } +} + +void tst_QImage::setPixelWithAlpha() +{ + QFETCH(QImage::Format, format); + QImage image(1, 1, format); + QRgb referenceColor = qRgba(0, 170, 85, 170); + image.setPixel(0, 0, referenceColor); + + if (!image.hasAlphaChannel()) + referenceColor = 0xff000000 | referenceColor; + + QRgb color = image.pixel(0, 0); + QCOMPARE(qRed(color) & 0xf0, qRed(referenceColor) & 0xf0); + QCOMPARE(qGreen(color) & 0xf0, qGreen(referenceColor) & 0xf0); + QCOMPARE(qBlue(color) & 0xf0, qBlue(referenceColor) & 0xf0); + QCOMPARE(qAlpha(color) & 0xf0, qAlpha(referenceColor) & 0xf0); +} + +void tst_QImage::setPixelColorWithAlpha_data() +{ + setPixelWithAlpha_data(); +} + +void tst_QImage::setPixelColorWithAlpha() +{ + QFETCH(QImage::Format, format); + QImage image(1, 1, format); + image.setPixelColor(0, 0, QColor(170, 85, 255, 170)); + QRgb referenceColor = qRgba(170, 85, 255, 170); + + if (!image.hasAlphaChannel()) + referenceColor = 0xff000000 | referenceColor; + else if (image.pixelFormat().premultiplied() == QPixelFormat::Premultiplied) + referenceColor = qPremultiply(referenceColor); + + QRgb color = image.pixel(0, 0); + QCOMPARE(qRed(color) & 0xf0, qRed(referenceColor) & 0xf0); + QCOMPARE(qGreen(color) & 0xf0, qGreen(referenceColor) & 0xf0); + QCOMPARE(qBlue(color) & 0xf0, qBlue(referenceColor) & 0xf0); + QCOMPARE(qAlpha(color) & 0xf0, qAlpha(referenceColor) & 0xf0); +} + void tst_QImage::convertToFormatPreserveDotsPrMeter() { QImage img(100, 100, QImage::Format_ARGB32_Premultiplied); @@ -2345,17 +2405,7 @@ void tst_QImage::fillColorWithAlpha_data() { - QTest::addColumn<QImage::Format>("format"); - - for (int c = QImage::Format_RGB32; c < QImage::NImageFormats; ++c) { - if (c == QImage::Format_Grayscale8) - continue; - if (c == QImage::Format_Grayscale16) - continue; - if (c == QImage::Format_Alpha8) - continue; - QTest::newRow(qPrintable(formatToString(QImage::Format(c)))) << QImage::Format(c); - } + setPixelWithAlpha_data(); } void tst_QImage::fillColorWithAlpha() @@ -2400,10 +2450,13 @@ QTest::newRow("RGB16, transparent") << QImage::Format_RGB16 << 0x0u << 0xff000000u; QTest::newRow("RGB32, transparent") << QImage::Format_RGB32 << 0x0u << 0xff000000u; + QTest::newRow("RGB444, transparent") << QImage::Format_RGB444 << 0x0u << 0xff000000u; + QTest::newRow("RGB666, transparent") << QImage::Format_RGB666 << 0x0u << 0xff000000u; QTest::newRow("RGBx8888, transparent") << QImage::Format_RGBX8888 << 0x0u << 0xff000000u; QTest::newRow("ARGB32, transparent") << QImage::Format_ARGB32 << 0x0u << 0x00000000u; QTest::newRow("ARGB32pm, transparent") << QImage::Format_ARGB32_Premultiplied << 0x0u << 0x00000000u; QTest::newRow("RGBA8888pm, transparent") << QImage::Format_RGBA8888_Premultiplied << 0x0u << 0x00000000u; + QTest::newRow("Grayscale8, transparent") << QImage::Format_Grayscale8 << 0x0u << 0xff000000u; QTest::newRow("Alpha8, transparent") << QImage::Format_Alpha8 << 0x0u << 0x00000000u; QTest::newRow("RGB16, red") << QImage::Format_RGB16 << (uint)qConvertRgb32To16(0xffff0000) << 0xffff0000u; @@ -2411,13 +2464,14 @@ QTest::newRow("ARGB32, red") << QImage::Format_ARGB32 << 0xffff0000u << 0xffff0000u; QTest::newRow("RGBA8888, red") << QImage::Format_RGBA8888 << 0xff0000ffu << 0xffff0000u; - QTest::newRow("Grayscale8, grey") << QImage::Format_Grayscale8 << 0xff808080u << 0xff808080u; + QTest::newRow("Grayscale8, grey") << QImage::Format_Grayscale8 << 0x80u << 0xff808080u; QTest::newRow("RGB32, semi-red") << QImage::Format_RGB32 << 0x80ff0000u << 0xffff0000u; QTest::newRow("ARGB32, semi-red") << QImage::Format_ARGB32 << 0x80ff0000u << 0x80ff0000u; QTest::newRow("ARGB32pm, semi-red") << QImage::Format_ARGB32 << 0x80800000u << 0x80800000u; QTest::newRow("RGBA8888pm, semi-red") << QImage::Format_RGBA8888_Premultiplied << 0x80000080u << 0x80800000u; - QTest::newRow("Alpha8, semi-red") << QImage::Format_Alpha8 << 0x80000080u << 0x80000000u; + + QTest::newRow("Alpha8, semi-transparent") << QImage::Format_Alpha8 << 0x80u << 0x80000000u; } void tst_QImage::fillPixel() @@ -2430,6 +2484,8 @@ image.fill(color); QCOMPARE(image.pixel(0, 0), pixelValue); + if (image.depth() == 8) + QCOMPARE(*(const uchar *)image.constBits(), color); } void tst_QImage::rgbSwapped_data() @@ -3516,6 +3572,13 @@ QCOMPARE(converted.dotsPerMeterY(), a.dotsPerMeterY()); QCOMPARE(converted.devicePixelRatio(), a.devicePixelRatio()); + QVector<QRgb> clut({ 0xFFFF0000, 0xFF00FF00, 0xFF0000FF }); + QImage convertedWithClut = a.convertToFormat(QImage::Format_Indexed8, clut); + QCOMPARE(convertedWithClut.text(QStringLiteral("Test")), a.text(QStringLiteral("Test"))); + QCOMPARE(convertedWithClut.dotsPerMeterX(), a.dotsPerMeterX()); + QCOMPARE(convertedWithClut.dotsPerMeterY(), a.dotsPerMeterY()); + QCOMPARE(convertedWithClut.devicePixelRatio(), a.devicePixelRatio()); + QImage copied = a.copy(0, 0, a.width() / 2, a.height() / 2); QCOMPARE(copied.text(QStringLiteral("Test")), a.text(QStringLiteral("Test"))); QCOMPARE(copied.dotsPerMeterX(), a.dotsPerMeterX()); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -120,6 +120,7 @@ void copy(); void deepCopyPreservesDpr(); + void fillPreservesDpr(); void dprPassthrough(); void depthOfNullObjects(); @@ -1156,6 +1157,19 @@ QCOMPARE(dest.devicePixelRatio(), dpr); } +// Check that the DPR is preserved after doing a fill after an +// assigned copy of the QPixmap +void tst_QPixmap::fillPreservesDpr() +{ + const qreal dpr = 2; + QPixmap src(32, 32); + src.setDevicePixelRatio(dpr); + src.fill(Qt::red); + QPixmap dest = src; + dest.fill(Qt::blue); + QCOMPARE(dest.devicePixelRatio(), dpr); +} + void tst_QPixmap::dprPassthrough() { const qreal dpr = 2; diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1088,35 +1088,38 @@ QTest::addColumn<float>("yaw"); QTest::addColumn<float>("roll"); + QTest::addColumn<QQuaternion>("quaternion"); + QTest::newRow("null") - << 0.0f << 0.0f << 0.0f; + << 0.0f << 0.0f << 0.0f << QQuaternion(1.0f, 0.0f, 0.0f, 0.0f); QTest::newRow("xonly") - << 90.0f << 0.0f << 0.0f; + << 90.0f << 0.0f << 0.0f << QQuaternion(0.707107f, 0.707107f, 0.0f, 0.0f); QTest::newRow("yonly") - << 0.0f << 180.0f << 0.0f; + << 0.0f << 180.0f << 0.0f << QQuaternion(0.0f, 0.0f, 1.0f, 0.0f); QTest::newRow("zonly") - << 0.0f << 0.0f << 270.0f; + << 0.0f << 0.0f << 270.0f << QQuaternion(-0.707107f, 0.0f, 0.0f, 0.707107f); QTest::newRow("x+z") - << 30.0f << 0.0f << 45.0f; + << 30.0f << 0.0f << 45.0f << QQuaternion(0.892399f, 0.239118f, -0.099046f, 0.369644f); QTest::newRow("x+y") - << 30.0f << 90.0f << 0.0f; + << 30.0f << 90.0f << 0.0f << QQuaternion(0.683013f, 0.183013f, 0.683013f, -0.183013f); QTest::newRow("y+z") - << 0.0f << 45.0f << 30.0f; + << 0.0f << 45.0f << 30.0f << QQuaternion(0.892399f, 0.099046f, 0.369644f, 0.239118f); QTest::newRow("complex") - << 30.0f << 240.0f << -45.0f; + << 30.0f << 240.0f << -45.0f << QQuaternion(-0.531976f, -0.43968f, 0.723317f, -0.02226f); } void tst_QQuaternion::fromEulerAngles() { QFETCH(float, pitch); QFETCH(float, yaw); QFETCH(float, roll); + QFETCH(QQuaternion, quaternion); // Use a straight-forward implementation of the algorithm at: // http://www.j3d.org/matrix_faq/matrfaq_latest.html#Q60 @@ -1132,11 +1135,22 @@ QVERIFY(myFuzzyCompare(answer.z(), result.z())); QVERIFY(myFuzzyCompare(answer.scalar(), result.scalar())); + // quaternion should be the same as the result + QVERIFY(myFuzzyCompare(answer.x(), quaternion.x())); + QVERIFY(myFuzzyCompare(answer.y(), quaternion.y())); + QVERIFY(myFuzzyCompare(answer.z(), quaternion.z())); + QVERIFY(myFuzzyCompare(answer.scalar(), quaternion.scalar())); + { QVector3D answerEulerAngles = answer.toEulerAngles(); QVERIFY(myFuzzyCompareDegrees(answerEulerAngles.x(), pitch)); QVERIFY(myFuzzyCompareDegrees(answerEulerAngles.y(), yaw)); QVERIFY(myFuzzyCompareDegrees(answerEulerAngles.z(), roll)); + + QVector3D quaternionEulerAngles = quaternion.toEulerAngles(); + QVERIFY(myFuzzyCompareDegrees(quaternionEulerAngles.x(), pitch)); + QVERIFY(myFuzzyCompareDegrees(quaternionEulerAngles.y(), yaw)); + QVERIFY(myFuzzyCompareDegrees(quaternionEulerAngles.z(), roll)); } answer = QQuaternion::fromEulerAngles(pitch, yaw, roll); @@ -1151,6 +1165,12 @@ QVERIFY(myFuzzyCompareDegrees(answerPitch, pitch)); QVERIFY(myFuzzyCompareDegrees(answerYaw, yaw)); QVERIFY(myFuzzyCompareDegrees(answerRoll, roll)); + + float quaternionPitch, quaternionYaw, quaternionRoll; + quaternion.getEulerAngles(&quaternionPitch, &quaternionYaw, &quaternionRoll); + QVERIFY(myFuzzyCompareDegrees(quaternionPitch, pitch)); + QVERIFY(myFuzzyCompareDegrees(quaternionYaw, yaw)); + QVERIFY(myFuzzyCompareDegrees(quaternionRoll, roll)); } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/painting/qcolorspace/tst_qcolorspace.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/painting/qcolorspace/tst_qcolorspace.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/painting/qcolorspace/tst_qcolorspace.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/painting/qcolorspace/tst_qcolorspace.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -59,6 +59,10 @@ void imageConversion_data(); void imageConversion(); + void imageConversion64_data(); + void imageConversion64(); + void imageConversionOverLargerGamut_data(); + void imageConversionOverLargerGamut(); void loadImage(); @@ -234,6 +238,7 @@ QTest::newRow("Adobe RGB -> sRGB") << QColorSpace::AdobeRgb << QColorSpace::SRgb << 2; QTest::newRow("Display-P3 -> Adobe RGB") << QColorSpace::DisplayP3 << QColorSpace::AdobeRgb << 2; QTest::newRow("sRGB -> sRGB Linear") << QColorSpace::SRgb << QColorSpace::SRgbLinear << 0; + QTest::newRow("sRGB Linear -> sRGB") << QColorSpace::SRgbLinear << QColorSpace::SRgb << 0; } void tst_QColorSpace::imageConversion() @@ -284,6 +289,120 @@ } } +void tst_QColorSpace::imageConversion64_data() +{ + QTest::addColumn<QColorSpace::NamedColorSpace>("fromColorSpace"); + QTest::addColumn<QColorSpace::NamedColorSpace>("toColorSpace"); + + QTest::newRow("sRGB -> Display-P3") << QColorSpace::SRgb << QColorSpace::DisplayP3; + QTest::newRow("sRGB -> Adobe RGB") << QColorSpace::SRgb << QColorSpace::AdobeRgb; + QTest::newRow("Display-P3 -> sRGB") << QColorSpace::DisplayP3 << QColorSpace::SRgb; + QTest::newRow("Display-P3 -> Adobe RGB") << QColorSpace::DisplayP3 << QColorSpace::AdobeRgb; + QTest::newRow("sRGB -> sRGB Linear") << QColorSpace::SRgb << QColorSpace::SRgbLinear; + QTest::newRow("sRGB Linear -> sRGB") << QColorSpace::SRgbLinear << QColorSpace::SRgb; +} + +void tst_QColorSpace::imageConversion64() +{ + QFETCH(QColorSpace::NamedColorSpace, fromColorSpace); + QFETCH(QColorSpace::NamedColorSpace, toColorSpace); + + QImage testImage(256, 1, QImage::Format_RGBX64); + + for (int i = 0; i < 256; ++i) + testImage.setPixel(i, 0, qRgb(i, i, i)); + + testImage.setColorSpace(fromColorSpace); + QCOMPARE(testImage.colorSpace(), QColorSpace(fromColorSpace)); + + testImage.convertToColorSpace(toColorSpace); + QCOMPARE(testImage.colorSpace(), QColorSpace(toColorSpace)); + + int lastRed = 0; + int lastGreen = 0; + int lastBlue = 0; + for (int i = 0; i < 256; ++i) { + QRgb p = testImage.pixel(i, 0); + QVERIFY(qRed(p) >= lastRed); + QVERIFY(qGreen(p) >= lastGreen); + QVERIFY(qBlue(p) >= lastBlue); + lastRed = qRed(p); + lastGreen = qGreen(p); + lastBlue = qBlue(p); + } + + lastRed = 0; + lastGreen = 0; + lastBlue = 0; + testImage.convertToColorSpace(fromColorSpace); + QCOMPARE(testImage.colorSpace(), QColorSpace(fromColorSpace)); + for (int i = 0; i < 256; ++i) { + QRgb p = testImage.pixel(i, 0); + QCOMPARE(qRed(p), qGreen(p)); + QCOMPARE(qRed(p), qBlue(p)); + QVERIFY((lastRed - qRed(p)) <= 0); + QVERIFY((lastGreen - qGreen(p)) <= 0); + QVERIFY((lastBlue - qBlue(p)) <= 0); + lastRed = qRed(p); + lastGreen = qGreen(p); + lastBlue = qBlue(p); + } +} + +void tst_QColorSpace::imageConversionOverLargerGamut_data() +{ + QTest::addColumn<QColorSpace::NamedColorSpace>("fromColorSpace"); + QTest::addColumn<QColorSpace::NamedColorSpace>("toColorSpace"); + + QTest::newRow("sRGB -> Display-P3") << QColorSpace::SRgb << QColorSpace::DisplayP3; + QTest::newRow("sRGB -> Adobe RGB") << QColorSpace::SRgb << QColorSpace::AdobeRgb; + QTest::newRow("sRGB -> ProPhoto RGB") << QColorSpace::SRgb << QColorSpace::ProPhotoRgb; + QTest::newRow("Display-P3 -> ProPhoto RGB") << QColorSpace::DisplayP3 << QColorSpace::ProPhotoRgb; + QTest::newRow("Adobe RGB -> ProPhoto RGB") << QColorSpace::AdobeRgb << QColorSpace::ProPhotoRgb; +} + +void tst_QColorSpace::imageConversionOverLargerGamut() +{ + QFETCH(QColorSpace::NamedColorSpace, fromColorSpace); + QFETCH(QColorSpace::NamedColorSpace, toColorSpace); + + QColorSpace csfrom(fromColorSpace); + QColorSpace csto(toColorSpace); + csfrom.setTransferFunction(QColorSpace::TransferFunction::Linear); + csto.setTransferFunction(QColorSpace::TransferFunction::Linear); + + QImage testImage(256, 256, QImage::Format_RGBX64); + testImage.setColorSpace(csfrom); + for (int y = 0; y < 256; ++y) + for (int x = 0; x < 256; ++x) + testImage.setPixel(x, y, qRgb(x, y, 0)); + + QImage resultImage = testImage.convertedToColorSpace(csto); + for (int y = 0; y < 256; ++y) { + int lastRed = 0; + for (int x = 0; x < 256; ++x) { + QRgb p = resultImage.pixel(x, y); + QVERIFY(qRed(p) >= lastRed); + lastRed = qRed(p); + } + } + for (int x = 0; x < 256; ++x) { + int lastGreen = 0; + for (int y = 0; y < 256; ++y) { + QRgb p = resultImage.pixel(x, y); + QVERIFY(qGreen(p) >= lastGreen); + lastGreen = qGreen(p); + } + } + + resultImage.convertToColorSpace(csfrom); + // The images are not exactly identical at 4x16bit, but they preserve 4x8bit accuracy. + for (int y = 0; y < 256; ++y) { + for (int x = 0; x < 256; ++x) { + QCOMPARE(resultImage.pixel(x, y), testImage.pixel(x, y)); + } + } +} void tst_QColorSpace::loadImage() { diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/painting/qpainter/tst_qpainter.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/painting/qpainter/tst_qpainter.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/painting/qpainter/tst_qpainter.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/painting/qpainter/tst_qpainter.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -308,6 +308,7 @@ void fillPolygon(); void drawImageAtPointF(); + void scaledDashes(); private: void fillData(); @@ -5468,6 +5469,36 @@ paint.end(); } +void tst_QPainter::scaledDashes() +{ + // Test that we do not hit the limit-huge-number-of-dashes path + QRgb fore = qRgb(0, 0, 0xff); + QRgb back = qRgb(0xff, 0xff, 0); + QImage image(5, 32, QImage::Format_RGB32); + image.fill(back); + QPainter p(&image); + QPen pen(QColor(fore), 3, Qt::DotLine); + p.setPen(pen); + p.scale(1, 2); + p.drawLine(2, 0, 2, 16); + p.end(); + + bool foreFound = false; + bool backFound = false; + int i = 0; + while (i < 32 && (!foreFound || !backFound)) { + QRgb pix = image.pixel(3, i); + if (pix == fore) + foreFound = true; + else if (pix == back) + backFound = true; + i++; + } + + QVERIFY(foreFound); + QVERIFY(backFound); +} + QTEST_MAIN(tst_QPainter) #include "tst_qpainter.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/painting/qpainterpath/tst_qpainterpath.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/painting/qpainterpath/tst_qpainterpath.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/painting/qpainterpath/tst_qpainterpath.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/painting/qpainterpath/tst_qpainterpath.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -173,8 +173,18 @@ p1.setFillRule(Qt::WindingFill); QVERIFY(p1 != p3); p1.clear(); - QCOMPARE(p1.fillRule(), Qt::OddEvenFill); + QVERIFY(p1 != p3); + p1.setFillRule(Qt::OddEvenFill); QCOMPARE(p1, p2); + + QPainterPath p4; + QCOMPARE(p4.fillRule(), Qt::OddEvenFill); + p4.setFillRule(Qt::WindingFill); + QCOMPARE(p4.fillRule(), Qt::WindingFill); + p4.clear(); + QCOMPARE(p4.fillRule(), Qt::WindingFill); + p4 = QPainterPath(); + QCOMPARE(p4.fillRule(), Qt::OddEvenFill); } void tst_QPainterPath::reserveAndCapacity() diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -33,6 +33,8 @@ #include <qfontmetrics.h> #include <qtextlayout.h> #include <private/qrawfont_p.h> +#include <private/qfont_p.h> +#include <private/qfontengine_p.h> #include <qpa/qplatformfontdatabase.h> Q_LOGGING_CATEGORY(lcTests, "qt.text.tests") @@ -277,7 +279,7 @@ QVERIFY(QFontDatabase::removeApplicationFont(id)); QCOMPARE(fontDbChangedSpy.count(), 2); - QCOMPARE(db.families(), oldFamilies); + QVERIFY(db.families().count() <= oldFamilies.count()); } void tst_QFontDatabase::addTwoAppFontsFromFamily() @@ -411,7 +413,11 @@ tfcByStyleName.setStyleName("Condensed"); #ifdef Q_OS_WIN - QEXPECT_FAIL("","No matching of sub-family by stretch on Windows", Continue); + QFont f; + f.setStyleStrategy(QFont::NoFontMerging); + QFontPrivate *font_d = QFontPrivate::get(f); + if (font_d->engineForScript(QChar::Script_Common)->type() != QFontEngine::Freetype) + QEXPECT_FAIL("","No matching of sub-family by stretch on Windows", Continue); #endif #ifdef Q_OS_ANDROID diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/text/qrawfont/tst_qrawfont.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/text/qrawfont/tst_qrawfont.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/text/qrawfont/tst_qrawfont.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/text/qrawfont/tst_qrawfont.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -654,6 +654,7 @@ QTest::addColumn<QFont::HintingPreference>("hintingPreference"); QTest::addColumn<QString>("familyName"); QTest::addColumn<QFontDatabase::WritingSystem>("writingSystem"); + QTest::addColumn<QFont::StyleStrategy>("styleStrategy"); for (int i=QFont::PreferDefaultHinting; i<=QFont::PreferFullHinting; ++i) { QString titleBase = QString::fromLatin1("%2, hintingPreference=%1, writingSystem=%3") @@ -667,7 +668,8 @@ << fileName << QFont::HintingPreference(i) << "QtBidiTestFont" - << writingSystem; + << writingSystem + << QFont::PreferDefault; } { @@ -679,7 +681,8 @@ << fileName << QFont::HintingPreference(i) << "QtBidiTestFont" - << writingSystem; + << writingSystem + << QFont::PreferDefault; } { @@ -691,9 +694,24 @@ << fileName << QFont::HintingPreference(i) << "QtBidiTestFont" - << writingSystem; + << writingSystem + << QFont::PreferDefault; } } + + { + QString fileName = testFont; + QFontDatabase::WritingSystem writingSystem = QFontDatabase::Arabic; + + QString title = QStringLiteral("No font merging + unsupported script"); + QTest::newRow(qPrintable(title)) + << fileName + << QFont::PreferDefaultHinting + << "QtBidiTestFont" + << writingSystem + << QFont::NoFontMerging; + } + } void tst_QRawFont::fromFont() @@ -702,6 +720,7 @@ QFETCH(QFont::HintingPreference, hintingPreference); QFETCH(QString, familyName); QFETCH(QFontDatabase::WritingSystem, writingSystem); + QFETCH(QFont::StyleStrategy, styleStrategy); QFontDatabase fontDatabase; int id = fontDatabase.addApplicationFont(fileName); @@ -710,6 +729,8 @@ QFont font(familyName); font.setHintingPreference(hintingPreference); font.setPixelSize(26.0); + if (styleStrategy != QFont::PreferDefault) + font.setStyleStrategy(styleStrategy); QRawFont rawFont = QRawFont::fromFont(font, writingSystem); QVERIFY(rawFont.isValid()); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -197,6 +197,9 @@ void clearUndoRedoStacks(); void mergeFontFamilies(); + void contentsChangeIndices_data(); + void contentsChangeIndices(); + private: void backgroundImage_checkExpectedHtml(const QTextDocument &doc); void buildRegExpData(); @@ -1772,6 +1775,59 @@ << QString("EMPTYBLOCK") + QString("<ul style=\"margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;\"><li DEFAULTBLOCKSTYLE>Blah</li></ul>"); } + { + CREATE_DOC_AND_CURSOR(); + const QString listHtml = "<ul><li>item-1</li><li>item-2<ul><li>item-2.1</li><li>item-2.2" + "<ul><li>item-2.2.1</li></ul></li><li>item-2.3<ul><li>item-2.3.1" + "</li></ul></li></ul></li><li>item-3</li></ul>"; + cursor.insertHtml(listHtml); + + QTest::newRow("nested-lists-one") << QTextDocumentFragment(&doc) + << QString("<ul DEFAULTULSTYLE 1;\"><li style=\" margin-top:12px; margin-bottom:0px; " + "margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">" + "item-1</li>\n<li DEFAULTBLOCKSTYLE>item-2\n<ul DEFAULTULSTYLE 2;\"><li " + "DEFAULTBLOCKSTYLE>item-2.1</li>\n<li DEFAULTBLOCKSTYLE>item-2.2\n<ul " + "DEFAULTULSTYLE 3;\"><li DEFAULTBLOCKSTYLE>item-2.2.1</li></ul></li>\n" + "<li DEFAULTBLOCKSTYLE>item-2.3\n<ul DEFAULTULSTYLE 3;\"><li DEFAULTBLOCKSTYLE>" + "item-2.3.1</li></ul></li></ul></li>\n<li DEFAULTLASTLISTYLE>item-3</li></ul>"); + } + { + CREATE_DOC_AND_CURSOR(); + const QString listHtml = "<ul><li>item-1</li><li>item-2<ul><li>item-2.1</li></ul></li></ul>"; + cursor.insertHtml(listHtml); + + QTest::newRow("nested-lists-two") << QTextDocumentFragment(&doc) + << QString("<ul DEFAULTULSTYLE 1;\"><li style=\" margin-top:12px; margin-bottom:0px; " + "margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">" + "item-1</li>\n<li DEFAULTLASTLISTYLE>item-2\n<ul DEFAULTULSTYLE 2;\"><li " + "DEFAULTBLOCKSTYLE>item-2.1</li></ul></li></ul>"); + } + { + CREATE_DOC_AND_CURSOR(); + const QString listHtml = "<ul><li>item-1</li><li>item-2<ul><li>item-2.1</li><li>item-2.2" + "</li></ul></li></ul>"; + cursor.insertHtml(listHtml); + + QTest::newRow("nested-lists-three") << QTextDocumentFragment(&doc) + << QString("<ul DEFAULTULSTYLE 1;\"><li style=\" margin-top:12px; margin-bottom:0px; " + "margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">" + "item-1</li>\n<li DEFAULTLASTLISTYLE>item-2\n<ul DEFAULTULSTYLE 2;\"><li " + "DEFAULTBLOCKSTYLE>item-2.1</li>\n<li DEFAULTBLOCKSTYLE>item-2.2</li></ul>" + "</li></ul>"); + } + { + CREATE_DOC_AND_CURSOR(); + const QString listHtml = "<ul><li>item-1.1</li><li>item-1.2<li></ul>" + "<ul><li>item-2.1</li></ul>"; + cursor.insertHtml(listHtml); + + QTest::newRow("not-nested-list") << QTextDocumentFragment(&doc) + << QString("<ul DEFAULTULSTYLE 1;\"><li style=\" margin-top:12px; margin-bottom:0px; " + "margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">" + "item-1.1</li>\n<li DEFAULTBLOCKSTYLE>item-1.2</li></ul>\n<ul DEFAULTULSTYLE 1;\">" + "<li style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; " + "margin-right:0px; -qt-block-indent:0; text-indent:0px;\">item-2.1</li></ul>"); + } } void tst_QTextDocument::toHtml() @@ -1786,6 +1842,11 @@ expectedOutput.replace("OPENDEFAULTBLOCKSTYLE", "style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"); expectedOutput.replace("DEFAULTBLOCKSTYLE", "style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\""); expectedOutput.replace("EMPTYBLOCK", "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p>\n"); + expectedOutput.replace("DEFAULTULSTYLE", "style=\"margin-top: 0px; margin-bottom: 0px; " + "margin-left: 0px; margin-right: 0px; -qt-list-indent:"); + expectedOutput.replace("DEFAULTLASTLISTYLE", "style=\" margin-top:0px; margin-bottom:12px; " + "margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\""); + if (expectedOutput.endsWith(QLatin1Char('\n'))) expectedOutput.chop(1); expectedOutput.append(htmlTail); @@ -3658,5 +3719,62 @@ } +void tst_QTextDocument::contentsChangeIndices_data() +{ + QTest::addColumn<QString>("html"); + // adding list entries change the entire block, so change position is + // not the same as the cursor position if this value is >= 0 + QTest::addColumn<int>("expectedBegin"); + + QTest::addRow("text") << "Test" << -1; + QTest::addRow("unnumbered list") << "<ul><li>Test</li></ul>" << 0; + QTest::addRow("numbered list") << "<ol><li>Test</li></ol>" << 0; + QTest::addRow("table") << "<table><tr><td>Test</td></tr></table>" << -1; +} + +void tst_QTextDocument::contentsChangeIndices() +{ + QFETCH(QString, html); + QFETCH(int, expectedBegin); + + QTextDocument doc; + QTestDocumentLayout *layout = new QTestDocumentLayout(&doc); + doc.setDocumentLayout(layout); + doc.setHtml(QString("<html><body>%1</body></html>").arg(html)); + + int documentLength = 0; + int cursorLength = 0; + int changeBegin = 0; + int changeRemoved = 0; + int changeAdded = 0; + connect(&doc, &QTextDocument::contentsChange, this, [&](int pos, int removed, int added){ + documentLength = doc.characterCount(); + + QTextCursor cursor(&doc); + cursor.movePosition(QTextCursor::End); + // includes end-of-paragraph character + cursorLength = cursor.position() + 1; + + changeBegin = pos; + changeRemoved = removed; + changeAdded = added; + }); + + QTextCursor cursor(&doc); + cursor.movePosition(QTextCursor::End); + if (expectedBegin < 0) + expectedBegin = cursor.position(); + cursor.insertBlock(); + + const int changeEnd = changeBegin + changeAdded; + + QVERIFY(documentLength > 0); + QCOMPARE(documentLength, cursorLength); + QVERIFY(documentLength >= changeEnd); + QCOMPARE(changeBegin, expectedBegin); + QCOMPARE(changeAdded - changeRemoved, 1); +} + + QTEST_MAIN(tst_QTextDocument) #include "tst_qtextdocument.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/text/qtextlayout/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/text/qtextlayout/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/text/qtextlayout/BLACKLIST 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/text/qtextlayout/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,3 @@ +[softHyphens] +winrt + diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -141,6 +141,7 @@ void showLineAndParagraphSeparatorsCrash(); void koreanWordWrap(); void tooManyDirectionalCharctersCrash_qtbug77819(); + void softHyphens_data(); void softHyphens(); void min_maximumWidth(); @@ -1909,6 +1910,20 @@ QFontMetricsF fm(layout.font()); QVERIFY(layout.maximumWidth() - fm.horizontalAdvance(' ') <= QFIXED_MAX); } + + { + QTextLayout layout(QString("AAAAAAAA").repeated(200000)); + layout.setCacheEnabled(true); + layout.beginLayout(); + forever { + QTextLine line = layout.createLine(); + if (!line.isValid()) + break; + } + layout.endLayout(); + QFontMetricsF fm(layout.font()); + QVERIFY(layout.maximumWidth() - fm.horizontalAdvance('A') <= QFIXED_MAX); + } } void tst_QTextLayout::widthOfTabs() @@ -2415,22 +2430,45 @@ tl.endLayout(); } +void tst_QTextLayout::softHyphens_data() +{ + QTest::addColumn<int>("fontSize"); + + QTest::newRow("12") << 12; + QTest::newRow("14") << 14; + QTest::newRow("16") << 16; +} + void tst_QTextLayout::softHyphens() { + QFETCH(int, fontSize); QString text = QStringLiteral("xxxx\u00ad") + QStringLiteral("xxxx\u00ad"); QFont font; - font.setPixelSize(14); + font.setPixelSize(fontSize); font.setHintingPreference(QFont::PreferNoHinting); - const float xAdvance = QFontMetricsF(font).horizontalAdvance(QChar('x')); - const float shyAdvance = QFontMetricsF(font).horizontalAdvance(QChar::SoftHyphen); - if (xAdvance < (shyAdvance + 1.0f)) - QSKIP("Default font not suitable for this test."); + const float xAdvance = QFontMetricsF(font).horizontalAdvance(QChar::fromLatin1('x')); + float shyWidth = 0.0f; QTextLayout layout(text, font); QTextOption option; option.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); layout.setTextOption(option); - + { + // Calculate the effective width of a line-ending hyphen + // This calculation is currently done to work-around odditities on + // macOS 11 (see QTBUG-90698). + QTextLayout test(QStringLiteral("x\u00ad"), font); + // Note: This only works because Qt show the soft-hyphen when ending a text. + // This _could_ be considered a bug and the test would need to be changed + // if we stop doing that. + test.beginLayout(); + QTextLine line = test.createLine(); + line.setLineWidth(10 * xAdvance); + line.setPosition(QPoint(0, 0)); + shyWidth = line.naturalTextWidth() - xAdvance; + test.endLayout(); + } + qreal linefit; // Loose fit // xxxx- | // xxxx- | @@ -2439,21 +2477,22 @@ int y = 0; layout.beginLayout(); QTextLine line = layout.createLine(); - line.setLineWidth(qCeil(5 * xAdvance) + 1); + line.setLineWidth(qCeil(5 * xAdvance + shyWidth) + 1); line.setPosition(QPoint(0, y)); QCOMPARE(line.textStart(), pos); QCOMPARE(line.textLength(), 5); - QVERIFY(qAbs(line.naturalTextWidth() - (4 * xAdvance + shyAdvance)) <= 1); + linefit = line.naturalTextWidth(); + QVERIFY(qAbs(linefit - qCeil(4 * xAdvance + shyWidth)) <= 1.0); pos += line.textLength(); y += qRound(line.ascent() + line.descent()); line = layout.createLine(); - line.setLineWidth(qCeil(5 * xAdvance) + 1); + line.setLineWidth(qCeil(5 * xAdvance + shyWidth) + 1); line.setPosition(QPoint(0, y)); QCOMPARE(line.textStart(), pos); QCOMPARE(line.textLength(), 5); - QVERIFY(qAbs(line.naturalTextWidth() - (4 * xAdvance + shyAdvance)) <= 1); + QVERIFY(qAbs(line.naturalTextWidth() - linefit) <= 1.0); layout.endLayout(); } @@ -2465,21 +2504,21 @@ int y = 0; layout.beginLayout(); QTextLine line = layout.createLine(); - line.setLineWidth(qCeil(4 * xAdvance + shyAdvance) + 1); + line.setLineWidth(qCeil(linefit) + 1); line.setPosition(QPoint(0, y)); QCOMPARE(line.textStart(), pos); QCOMPARE(line.textLength(), 5); - QVERIFY(qAbs(line.naturalTextWidth() - (4 * xAdvance + shyAdvance)) <= 1); + QVERIFY(qAbs(line.naturalTextWidth() - linefit) <= 1.0); pos += line.textLength(); y += qRound(line.ascent() + line.descent()); line = layout.createLine(); - line.setLineWidth(qCeil(4 * xAdvance + shyAdvance) + 1); + line.setLineWidth(qCeil(linefit) + 1); line.setPosition(QPoint(0, y)); QCOMPARE(line.textStart(), pos); QCOMPARE(line.textLength(), 5); - QVERIFY(qAbs(line.naturalTextWidth() - (4 * xAdvance + shyAdvance)) <= 1); + QVERIFY(qAbs(line.naturalTextWidth() - linefit) <= 1.0); layout.endLayout(); } @@ -2496,7 +2535,7 @@ line.setPosition(QPoint(0, y)); QCOMPARE(line.textStart(), pos); QCOMPARE(line.textLength(), 4); - QVERIFY(qAbs(line.naturalTextWidth() - 4 * xAdvance) <= 1); + QVERIFY(qAbs(line.naturalTextWidth() - qCeil(4 * xAdvance)) <= 1.0); pos += line.textLength(); y += qRound(line.ascent() + line.descent()); @@ -2506,7 +2545,7 @@ line.setPosition(QPoint(0, y)); QCOMPARE(line.textStart(), pos); QCOMPARE(line.textLength(), 5); - QVERIFY(qAbs(line.naturalTextWidth() - 4 * xAdvance) <= 1); + QVERIFY(qAbs(line.naturalTextWidth() - qCeil(4 * xAdvance)) <= 1.0); pos += line.textLength(); y += qRound(line.ascent() + line.descent()); @@ -2516,7 +2555,7 @@ line.setPosition(QPoint(0, y)); QCOMPARE(line.textStart(), pos); QCOMPARE(line.textLength(), 1); - QVERIFY(qAbs(line.naturalTextWidth() - shyAdvance) <= 1); + QVERIFY(qAbs(line.naturalTextWidth() - shyWidth) <= 1.0); layout.endLayout(); } } diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -29,7 +29,7 @@ #include <QtTest/QtTest> - +#include <qbuffer.h> #include <qtextdocument.h> #include <qtextdocumentfragment.h> #include <qtexttable.h> @@ -44,6 +44,7 @@ #include <QPainter> #include <QPaintEngine> #endif +#include <private/qtextdocumentlayout_p.h> #include <private/qpagedpaintdevice_p.h> typedef QList<int> IntList; @@ -100,6 +101,13 @@ void checkBorderAttributes_data(); void checkBorderAttributes(); +#ifndef QT_NO_WIDGETS + void columnWidthWithSpans(); + + void columnWidthWithImage_data(); + void columnWidthWithImage(); +#endif + private: QTextTable *create2x2Table(); QTextTable *create4x4Table(); @@ -1278,5 +1286,84 @@ } } +#ifndef QT_NO_WIDGETS +void tst_QTextTable::columnWidthWithSpans() +{ + cleanup(); + init(); + QTextTable *table = cursor.insertTable(4, 4); + QTextEdit textEdit; + textEdit.setDocument(doc); + textEdit.show(); + QVERIFY(QTest::qWaitForWindowExposed(&textEdit)); + + for (int i = 0; i < table->columns(); ++i) + table->cellAt(0, i).firstCursorPosition().insertText(QString("Header %1").arg(i)); + + QTextBlock block = table->cellAt(0, 0).firstCursorPosition().block(); + const QRectF beforeRect = table->document()->documentLayout()->blockBoundingRect(block); + table->mergeCells(1, 0, 1, table->columns()); + block = table->cellAt(0, 0).firstCursorPosition().block(); + const QRectF afterRect = table->document()->documentLayout()->blockBoundingRect(block); + QCOMPARE(afterRect, beforeRect); +} + +void tst_QTextTable::columnWidthWithImage_data() +{ + const auto imageHtml = [](int width, int height) { + QImage image(width, height, QImage::Format_RGB32); + image.fill(Qt::red); + QByteArray imageBytes; + QBuffer buffer(&imageBytes); + buffer.open(QIODevice::WriteOnly); + image.save(&buffer, "png"); + return QString("<td><img src='data:image/png;base64,%1'/></td>") + .arg(QString::fromLatin1(imageBytes.toBase64())); + }; + + QTest::addColumn<QString>("leftHtml"); + QTest::addColumn<QString>("rightHtml"); + QTest::addColumn<QSize>("imageSize"); + QTest::addRow("image") + << imageHtml(500, 32) << "<td></td>" << QSize(500, 32); + QTest::addRow("image, text") + << imageHtml(32, 32) << "<td>abc</td>" << QSize(32, 32); + QTest::addRow("image, 100%% text") + << imageHtml(32, 32) << "<td style='background-color: grey' width='100%'>abc</td>" + << QSize(32, 32); + QTest::addRow("image, image") + << imageHtml(256, 32) << imageHtml(256, 32) << QSize(256, 32); +} + +void tst_QTextTable::columnWidthWithImage() +{ + const QString tableTemplate = "<table><tr>%1 %2</tr></table>"; + + QFETCH(QString, leftHtml); + QFETCH(QString, rightHtml); + QFETCH(QSize, imageSize); + + QTextDocument doc; + doc.setHtml(tableTemplate.arg(leftHtml).arg(rightHtml)); + QTextEdit textEdit; + textEdit.setDocument(&doc); + textEdit.show(); + QVERIFY(QTest::qWaitForWindowExposed(&textEdit)); + + QTextCursor cursor(doc.firstBlock()); + cursor.movePosition(QTextCursor::Right); + + QTextTable *currentTable = cursor.currentTable(); + QVERIFY(currentTable); + + QTextBlock block = currentTable->cellAt(0, 0).firstCursorPosition().block(); + const QRectF leftRect = currentTable->document()->documentLayout()->blockBoundingRect(block); + block = currentTable->cellAt(0, 1).firstCursorPosition().block(); + const QRectF rightRect = currentTable->document()->documentLayout()->blockBoundingRect(block); + QCOMPARE(leftRect.size().toSize(), imageSize); + QVERIFY(rightRect.left() > leftRect.right()); +} +#endif + QTEST_MAIN(tst_QTextTable) #include "tst_qtexttable.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/access/http2/http2srv.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/access/http2/http2srv.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/access/http2/http2srv.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/access/http2/http2srv.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -120,6 +120,11 @@ responseBody = body; } +void Http2Server::setAuthenticationHeader(const QByteArray &authentication) +{ + authenticationHeader = authentication; +} + void Http2Server::emulateGOAWAY(int timeout) { Q_ASSERT(timeout >= 0); @@ -138,6 +143,17 @@ return connectionType == H2Type::h2c || connectionType == H2Type::h2cDirect; } +QByteArray Http2Server::requestAuthorizationHeader() +{ + const auto isAuthHeader = [](const HeaderField &field) { + return field.name == "authorization"; + }; + const auto requestHeaders = decoder.decodedHeader(); + const auto authentication = + std::find_if(requestHeaders.cbegin(), requestHeaders.cend(), isAuthHeader); + return authentication == requestHeaders.cend() ? QByteArray() : authentication->value; +} + void Http2Server::startServer() { if (listen()) { @@ -732,10 +748,15 @@ } if (inboundFrame.flags().testFlag(FrameFlag::END_STREAM)) { - closedStreams.insert(streamID); // Enter "half-closed remote" state. - streamWindows.erase(it); + if (responseBody.isEmpty()) { + closedStreams.insert(streamID); // Enter "half-closed remote" state. + streamWindows.erase(it); + } emit receivedData(streamID); } + emit receivedDATAFrame(streamID, + QByteArray(reinterpret_cast<const char *>(inboundFrame.dataBegin()), + inboundFrame.dataSize())); } void Http2Server::handleWINDOW_UPDATE() @@ -816,6 +837,9 @@ if (emptyBody) writer.addFlag(FrameFlag::END_STREAM); + // We assume any auth is correct. Leaves the checking to the test itself + const bool hasAuth = !requestAuthorizationHeader().isEmpty(); + HttpHeader header; if (redirectWhileReading) { if (redirectSent) { @@ -832,6 +856,10 @@ header.push_back({"location", url.arg(isClearText() ? QStringLiteral("http") : QStringLiteral("https"), QString::number(targetPort)).toLatin1()}); + } else if (!authenticationHeader.isEmpty() && !hasAuth) { + header.push_back({ ":status", "401" }); + header.push_back(HPack::HeaderField("www-authenticate", authenticationHeader)); + authenticationHeader.clear(); } else { header.push_back({":status", "200"}); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/access/http2/http2srv.h qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/access/http2/http2srv.h --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/access/http2/http2srv.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/access/http2/http2srv.h 2022-11-11 15:29:17.000000000 +0800 @@ -86,11 +86,15 @@ // To be called before server started: void enablePushPromise(bool enabled, const QByteArray &path = QByteArray()); void setResponseBody(const QByteArray &body); + // No authentication data is generated for the method, the full header value must be set + void setAuthenticationHeader(const QByteArray &authentication); void emulateGOAWAY(int timeout); void redirectOpenStream(quint16 targetPort); bool isClearText() const; + QByteArray requestAuthorizationHeader(); + // Invokables, since we can call them from the main thread, // but server (can) work on its own thread. Q_INVOKABLE void startServer(); @@ -127,6 +131,8 @@ void decompressionFailed(quint32 streamID); void receivedRequest(quint32 streamID); void receivedData(quint32 streamID); + // Emitted for every DATA frame. Includes the content of the frame as \a body. + void receivedDATAFrame(quint32 streamID, const QByteArray &body); void windowUpdate(quint32 streamID); void sendingData(); @@ -211,6 +217,8 @@ bool redirectSent = false; quint16 targetPort = 0; QAtomicInt interrupted; + + QByteArray authenticationHeader; protected slots: void ignoreErrorSlot(); }; diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/access/http2/tst_http2.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/access/http2/tst_http2.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/access/http2/tst_http2.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/access/http2/tst_http2.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -110,6 +110,10 @@ void connectToHost_data(); void connectToHost(); void maxFrameSize(); + void http2DATAFrames(); + + void authenticationRequired_data(); + void authenticationRequired(); protected slots: // Slots to listen to our in-process server: @@ -154,6 +158,7 @@ int windowUpdates = 0; bool prefaceOK = false; bool serverGotSettingsACK = false; + bool POSTResponseHEADOnly = true; static const RawSettings defaultServerSettings; }; @@ -267,6 +272,10 @@ request.setAttribute(h2Attribute, QVariant(true)); auto reply = manager->get(request); +#if QT_CONFIG(ssl) + QSignalSpy encSpy(reply, &QNetworkReply::encrypted); +#endif // QT_CONFIG(ssl) + connect(reply, &QNetworkReply::finished, this, &tst_Http2::replyFinished); // Since we're using self-signed certificates, // ignore SSL errors: @@ -281,6 +290,11 @@ QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(reply->isFinished()); + +#if QT_CONFIG(ssl) + if (connectionType == H2Type::h2Alpn || connectionType == H2Type::h2Direct) + QCOMPARE(encSpy.count(), 1); +#endif // QT_CONFIG(ssl) } void tst_Http2::multipleRequests() @@ -767,6 +781,180 @@ QVERIFY(serverGotSettingsACK); } +void tst_Http2::http2DATAFrames() +{ + using namespace Http2; + + { + // 0. DATA frame with payload, no padding. + + FrameWriter writer(FrameType::DATA, FrameFlag::EMPTY, 1); + writer.append(uchar(1)); + writer.append(uchar(2)); + writer.append(uchar(3)); + + const Frame frame = writer.outboundFrame(); + const auto &buffer = frame.buffer; + // Frame's header is 9 bytes + 3 bytes of payload + // (+ 0 bytes of padding and no padding length): + QCOMPARE(int(buffer.size()), 12); + + QVERIFY(!frame.padding()); + QCOMPARE(int(frame.payloadSize()), 3); + QCOMPARE(int(frame.dataSize()), 3); + QCOMPARE(frame.dataBegin() - buffer.data(), 9); + QCOMPARE(char(*frame.dataBegin()), uchar(1)); + } + + { + // 1. DATA with padding. + + const int padLength = 10; + FrameWriter writer(FrameType::DATA, FrameFlag::END_STREAM | FrameFlag::PADDED, 1); + writer.append(uchar(padLength)); // The length of padding is 1 byte long. + writer.append(uchar(1)); + for (int i = 0; i < padLength; ++i) + writer.append(uchar(0)); + + const Frame frame = writer.outboundFrame(); + const auto &buffer = frame.buffer; + // Frame's header is 9 bytes + 1 byte for padding length + // + 1 byte of data + 10 bytes of padding: + QCOMPARE(int(buffer.size()), 21); + + QCOMPARE(frame.padding(), padLength); + QCOMPARE(int(frame.payloadSize()), 12); // Includes padding, its length + data. + QCOMPARE(int(frame.dataSize()), 1); + + // Skipping 9 bytes long header and padding length: + QCOMPARE(frame.dataBegin() - buffer.data(), 10); + + QCOMPARE(char(frame.dataBegin()[0]), uchar(1)); + QCOMPARE(char(frame.dataBegin()[1]), uchar(0)); + + QVERIFY(frame.flags().testFlag(FrameFlag::END_STREAM)); + QVERIFY(frame.flags().testFlag(FrameFlag::PADDED)); + } + { + // 2. DATA with PADDED flag, but 0 as padding length. + + FrameWriter writer(FrameType::DATA, FrameFlag::END_STREAM | FrameFlag::PADDED, 1); + + writer.append(uchar(0)); // Number of padding bytes is 1 byte long. + writer.append(uchar(1)); + + const Frame frame = writer.outboundFrame(); + const auto &buffer = frame.buffer; + + // Frame's header is 9 bytes + 1 byte for padding length + 1 byte of data + // + 0 bytes of padding: + QCOMPARE(int(buffer.size()), 11); + + QCOMPARE(frame.padding(), 0); + QCOMPARE(int(frame.payloadSize()), 2); // Includes padding (0 bytes), its length + data. + QCOMPARE(int(frame.dataSize()), 1); + + // Skipping 9 bytes long header and padding length: + QCOMPARE(frame.dataBegin() - buffer.data(), 10); + + QCOMPARE(char(*frame.dataBegin()), uchar(1)); + + QVERIFY(frame.flags().testFlag(FrameFlag::END_STREAM)); + QVERIFY(frame.flags().testFlag(FrameFlag::PADDED)); + } +} + +void tst_Http2::authenticationRequired_data() +{ + QTest::addColumn<bool>("success"); + QTest::addColumn<bool>("responseHEADOnly"); + + QTest::addRow("failed-auth") << false << true; + QTest::addRow("successful-auth") << true << true; + // Include a DATA frame in the response from the remote server. An example would be receiving a + // JSON response on a request along with the 401 error. + QTest::addRow("failed-auth-with-response") << false << false; + QTest::addRow("successful-auth-with-response") << true << false; +} + +void tst_Http2::authenticationRequired() +{ + clearHTTP2State(); + serverPort = 0; + QFETCH(const bool, responseHEADOnly); + POSTResponseHEADOnly = responseHEADOnly; + + QFETCH(const bool, success); + + ServerPtr targetServer(newServer(defaultServerSettings, defaultConnectionType())); + targetServer->setResponseBody("Hello"); + targetServer->setAuthenticationHeader("Basic realm=\"Shadow\""); + + QMetaObject::invokeMethod(targetServer.data(), "startServer", Qt::QueuedConnection); + runEventLoop(); + + QVERIFY(serverPort != 0); + + nRequests = 1; + + auto url = requestUrl(defaultConnectionType()); + url.setPath("/index.html"); + QNetworkRequest request(url); + + QByteArray expectedBody = "Hello, World!"; + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); + request.setAttribute(QNetworkRequest::Http2AllowedAttribute, QVariant(true)); + QScopedPointer<QNetworkReply> reply; + reply.reset(manager->post(request, expectedBody)); + + bool authenticationRequested = false; + connect(manager.get(), &QNetworkAccessManager::authenticationRequired, reply.get(), + [&](QNetworkReply *, QAuthenticator *auth) { + authenticationRequested = true; + if (success) { + auth->setUser("admin"); + auth->setPassword("admin"); + } + }); + + QByteArray receivedBody; + connect(targetServer.get(), &Http2Server::receivedDATAFrame, reply.get(), + [&receivedBody](quint32 streamID, const QByteArray &body) { + if (streamID == 3) // The expected body is on the retry, so streamID == 3 + receivedBody += body; + }); + + if (success) + connect(reply.get(), &QNetworkReply::finished, this, &tst_Http2::replyFinished); + else + connect(reply.get(), &QNetworkReply::errorOccurred, this, &tst_Http2::replyFinishedWithError); + // Since we're using self-signed certificates, + // ignore SSL errors: + reply->ignoreSslErrors(); + + runEventLoop(); + STOP_ON_FAILURE + + if (!success) + QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError); + // else: no error (is checked in tst_Http2::replyFinished) + + QVERIFY(authenticationRequested); + + const auto isAuthenticated = [](QByteArray bv) { + return bv == "Basic YWRtaW46YWRtaW4="; // admin:admin + }; + // Get the "authorization" header out from the server and make sure it's as expected: + auto reqAuthHeader = targetServer->requestAuthorizationHeader(); + QCOMPARE(isAuthenticated(reqAuthHeader), success); + if (success) + QCOMPARE(receivedBody, expectedBody); + // In the `!success` case we need to wait for the server to emit this or it might cause issues + // in the next test running after this. In the `success` case we anyway expect it to have been + // received. + QTRY_VERIFY(serverGotSettingsACK); +} + void tst_Http2::serverStarted(quint16 port) { serverPort = port; @@ -778,6 +966,7 @@ windowUpdates = 0; prefaceOK = false; serverGotSettingsACK = false; + POSTResponseHEADOnly = true; } void tst_Http2::runEventLoop(int ms) @@ -910,7 +1099,7 @@ Q_ASSERT(srv); QMetaObject::invokeMethod(srv, "sendResponse", Qt::QueuedConnection, Q_ARG(quint32, streamID), - Q_ARG(bool, true /*HEADERS only*/)); + Q_ARG(bool, POSTResponseHEADOnly /*true = HEADERS only*/)); } void tst_Http2::windowUpdated(quint32 streamID) diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/access/qdecompresshelper/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/access/qdecompresshelper/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/access/qdecompresshelper/BLACKLIST 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/access/qdecompresshelper/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,2 @@ +[bigZlib] +macos arm diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -35,6 +35,7 @@ #include <algorithm> #define EXAMPLE_URL "http://user:pass@localhost:4/#foo" +#define EXAMPLE_URL2 "http://user:pass@localhost:4/bar" //cached objects are organized into these many subdirs #define NUM_SUBDIRECTORIES 16 @@ -141,7 +142,7 @@ public: ~SubQNetworkDiskCache() { - if (!cacheDirectory().isEmpty()) + if (!cacheDirectory().isEmpty() && clearOnDestruction) clear(); } @@ -170,6 +171,11 @@ d->write("Hello World!"); insert(d); } + + void setClearCacheOnDestruction(bool value) { clearOnDestruction = value; } + +private: + bool clearOnDestruction = true; }; tst_QNetworkDiskCache::tst_QNetworkDiskCache() @@ -241,17 +247,39 @@ // public qint64 cacheSize() const void tst_QNetworkDiskCache::cacheSize() { - SubQNetworkDiskCache cache; - cache.setCacheDirectory(tempDir.path()); - QCOMPARE(cache.cacheSize(), qint64(0)); + qint64 cacheSize = 0; + { + SubQNetworkDiskCache cache; + cache.setCacheDirectory(tempDir.path()); + QCOMPARE(cache.cacheSize(), qint64(0)); + + { + QUrl url(EXAMPLE_URL); + QNetworkCacheMetaData metaData; + metaData.setUrl(url); + QIODevice *d = cache.prepare(metaData); + cache.insert(d); + cacheSize = cache.cacheSize(); + QVERIFY(cacheSize > qint64(0)); + } + // Add a second item, some difference in behavior when the cache is not empty + { + QUrl url(EXAMPLE_URL2); + QNetworkCacheMetaData metaData; + metaData.setUrl(url); + QIODevice *d = cache.prepare(metaData); + cache.insert(d); + QVERIFY(cache.cacheSize() > cacheSize); + cacheSize = cache.cacheSize(); + } - QUrl url(EXAMPLE_URL); - QNetworkCacheMetaData metaData; - metaData.setUrl(url); - QIODevice *d = cache.prepare(metaData); - cache.insert(d); - QVERIFY(cache.cacheSize() > qint64(0)); + // Don't clear the cache on destruction so we can re-open the cache and test its size. + cache.setClearCacheOnDestruction(false); + } + SubQNetworkDiskCache cache; + cache.setCacheDirectory(tempDir.path()); + QCOMPARE(cache.cacheSize(), cacheSize); cache.clear(); QCOMPARE(cache.cacheSize(), qint64(0)); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/access/qnetworkreply/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/access/qnetworkreply/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/access/qnetworkreply/BLACKLIST 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/access/qnetworkreply/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -32,13 +32,14 @@ # QTBUG-66247 b2qt windows-10 msvc-2015 -ubuntu -rhel +linux [ioHttpRedirectPolicy] opensuse-leap b2qt ubuntu windows-10 +sles-15 +opensuse-15.1 [putToFtp] windows-10 [putWithServerClosingConnectionImmediately] diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/access/qnetworkreply/certs/qt-test-server-cacert.pem qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/access/qnetworkreply/certs/qt-test-server-cacert.pem --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/access/qnetworkreply/certs/qt-test-server-cacert.pem 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/access/qnetworkreply/certs/qt-test-server-cacert.pem 2022-11-11 15:29:17.000000000 +0800 @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICpzCCAhACCQCzAF1hyRVzAjANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UEBhMC -Tk8xDTALBgNVBAgTBE9zbG8xDTALBgNVBAcTBE9zbG8xDjAMBgNVBAoTBU5va2lh -MTUwMwYDVQQLFCxRdCBTb2Z0d2FyZS9lbWFpbEFkZHJlc3M9bm9ib2R5QG5vZG9t -YWluLm9yZzEjMCEGA1UEAxMacXQtdGVzdC1zZXJ2ZXIucXQtdGVzdC1uZXQwHhcN -MTkwNjI0MTI0OTIxWhcNMjIwNjIzMTI0OTIxWjCBlzELMAkGA1UEBhMCTk8xDTAL -BgNVBAgTBE9zbG8xDTALBgNVBAcTBE9zbG8xDjAMBgNVBAoTBU5va2lhMTUwMwYD -VQQLFCxRdCBTb2Z0d2FyZS9lbWFpbEFkZHJlc3M9bm9ib2R5QG5vZG9tYWluLm9y -ZzEjMCEGA1UEAxMacXQtdGVzdC1zZXJ2ZXIucXQtdGVzdC1uZXQwgZ8wDQYJKoZI -hvcNAQEBBQADgY0AMIGJAoGBAM2q22/WNMmn8cC+5EEYGeICySLmp9W6Ay6eKHr0 -Xxp3X3epETuPfvAuxp7rOtkS18EMUegkUj8jw0IMEcbyHKFC/rTCaYOt93CxGBXM -IChiMPAsFeYzGa/D6xzAkfcRaJRQ+Ek3CDLXPnXfo7xpABXezYcPXAJrgsgBfWrw -HdxzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEASCKbqEX5ysC549mq90ydk4jyDW3m -PUyet01fKpcRqVs+OJxdExFBTra3gho6WzzpTSPsuX2ZKOLF5k6KkCvdCGvhC1Kv -HHPIExurfzvdlSRzj6HbKyPuSfxyOloH0bBp7/Gg5RIuBPKlbmfbnTLtwEjhhbMU -SoYI8HZd3HfY87c= +MIICyjCCAjMCFHPGDqJR+klHni4XbETMk6GLn/UEMA0GCSqGSIb3DQEBDQUAMIGj +MRcwFQYDVQQKEw5UaGUgUXQgQ29tcGFueTEUMBIGA1UECxMLUXQgU29mdHdhcmUx +IjAgBgkqhkiG9w0BCQEWE25vYm9keUBub2RvbWFpbi5vcmcxDTALBgNVBAcTBE9z +bG8xDTALBgNVBAgTBE9zbG8xCzAJBgNVBAYTAk5PMSMwIQYDVQQDExpxdC10ZXN0 +LXNlcnZlci5xdC10ZXN0LW5ldDAeFw0yMjA2MjQxMTU4NDlaFw0zMjA2MjExMTU4 +NDlaMIGjMRcwFQYDVQQKEw5UaGUgUXQgQ29tcGFueTEUMBIGA1UECxMLUXQgU29m +dHdhcmUxIjAgBgkqhkiG9w0BCQEWE25vYm9keUBub2RvbWFpbi5vcmcxDTALBgNV +BAcTBE9zbG8xDTALBgNVBAgTBE9zbG8xCzAJBgNVBAYTAk5PMSMwIQYDVQQDExpx +dC10ZXN0LXNlcnZlci5xdC10ZXN0LW5ldDCBnzANBgkqhkiG9w0BAQEFAAOBjQAw +gYkCgYEAzarbb9Y0yafxwL7kQRgZ4gLJIuan1boDLp4oevRfGndfd6kRO49+8C7G +nus62RLXwQxR6CRSPyPDQgwRxvIcoUL+tMJpg633cLEYFcwgKGIw8CwV5jMZr8Pr +HMCR9xFolFD4STcIMtc+dd+jvGkAFd7Nhw9cAmuCyAF9avAd3HMCAwEAATANBgkq +hkiG9w0BAQ0FAAOBgQCZyRe25WqOjrNS6BKPs7ep7eyCON3NKdWnfABZrSjGJQ87 +PoFKl6+9YBSlSpl8qk7c29ic+wA4qFQzPJkrbYIXjwVMAr+cC1kVrlUVqcwmvnKo +5vj57/v8S0Uc4/GesIsxZR7QM+3diPDyk7Bsc3IkpINb31Dl0mlg25nztg8NxA== -----END CERTIFICATE----- diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -48,6 +48,8 @@ void ntlmAuth_data(); void ntlmAuth(); + void sha256AndMd5Digest(); + void equalityOperators(); }; @@ -149,6 +151,34 @@ QVERIFY(priv->calculateResponse("GET", "/", "").startsWith("NTLM ")); } +// We don't (currently) support SHA256. So, when presented with the option of MD5 or SHA256, +// we should always pick MD5. +void tst_QAuthenticator::sha256AndMd5Digest() +{ + QByteArray md5 = "Digest realm=\"\", nonce=\"\", algorithm=MD5, qop=\"auth\""; + QByteArray sha256 = "Digest realm=\"\", nonce=\"\", algorithm=SHA-256, qop=\"auth\""; + + QAuthenticator auth; + auth.setUser("unimportant"); + auth.setPassword("unimportant"); + + QAuthenticatorPrivate *priv = QAuthenticatorPrivate::getPrivate(auth); + + QCOMPARE(priv->phase, QAuthenticatorPrivate::Start); + QList<QPair<QByteArray, QByteArray>> headers; + // Put sha256 first, so that its parsed first... + headers.push_back({"WWW-Authenticate", sha256}); + headers.push_back({"WWW-Authenticate", md5}); + priv->parseHttpResponse(headers, false, QString()); + + QByteArray response = priv->calculateResponse("GET", "/index", {}); + QCOMPARE(priv->phase, QAuthenticatorPrivate::Done); + + QVERIFY(!response.isEmpty()); + QVERIFY(!response.contains("algorithm=SHA-256")); + QVERIFY(response.contains("algorithm=MD5")); +} + void tst_QAuthenticator::equalityOperators() { QAuthenticator s1, s2; diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/socket/qsocks5socketengine/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/socket/qsocks5socketengine/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/socket/qsocks5socketengine/BLACKLIST 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/socket/qsocks5socketengine/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -9,3 +9,6 @@ windows-10 msvc-2015 windows-7sp1 +# QTBUG-96345 +[simpleConnectToIMAP] +ubuntu diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/socket/qtcpserver/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/socket/qtcpserver/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/socket/qtcpserver/BLACKLIST 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/socket/qtcpserver/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -14,3 +14,6 @@ windows-7sp1 windows-10 +[linkLocal] +macos arm + diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/socket/qtcpsocket/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/socket/qtcpsocket/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/socket/qtcpsocket/BLACKLIST 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/socket/qtcpsocket/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -2,3 +2,5 @@ windows # QTBUG-66247 +[bind] +macos arm diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/socket/qudpsocket/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/socket/qudpsocket/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/socket/qudpsocket/BLACKLIST 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/socket/qudpsocket/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -7,3 +7,7 @@ opensuse-42.3 [readyReadForEmptyDatagram] linux +[multicast] +macos arm +[linkLocalIPv6] +macos arm diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qdtlscookie/tst_qdtlscookie.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qdtlscookie/tst_qdtlscookie.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qdtlscookie/tst_qdtlscookie.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qdtlscookie/tst_qdtlscookie.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -343,7 +343,7 @@ clientsToAdd = clientsToWait = 100; - testLoop.enterLoop(handshakeTimeoutMS * clientsToWait); + testLoop.enterLoopMSecs(handshakeTimeoutMS * clientsToWait); QVERIFY(!testLoop.timeout()); QVERIFY(clientsToWait == 0); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1128,6 +1128,7 @@ #if QT_CONFIG(securetransport) QSKIP("Not implemented in SecureTransport"); #endif + QList<QSslError> errors; QList<QSslCertificate> toVerify; diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/README qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/README --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/README 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/README 2022-11-11 15:29:17.000000000 +0800 @@ -1,2 +1,9 @@ openssl verify -CAfile cacert.pem -untrusted test-intermediate-ca-cert.pem test-intermediate-is-ca-cert.pem openssl verify -CAfile cacert.pem -untrusted test-ocsp-good-cert.pem test-intermediate-not-ca-cert.pem + +1. cacert.pem is, obviously, a root CA certificate. +2. test-intermediate-ca-cert.pem is a certificate, signed by the root CA, an intermediate CA. +3. test-intermediate-is-ca-cert.pem is a certificate, signed by test-intermediate-ca-cert.pem. +4. test-ocsp-good-cert.pem is signed by root CA, it has CA:FALSE but keyUsage allowing to sign + CSRs - this is how OpenSSL would report us 'invalid CA certificate' instead of 'No issuer found'. +5. test-intermediate-not-ca-cert.pem is signed by test-ocsp-good-cert.pem. diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/cacert.pem qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/cacert.pem --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/cacert.pem 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/cacert.pem 2022-11-11 15:29:17.000000000 +0800 @@ -1,23 +1,25 @@ -----BEGIN CERTIFICATE----- -MIID6zCCAtOgAwIBAgIJAP4bjANFSx0BMA0GCSqGSIb3DQEBBQUAMIGrMSYwJAYD -VQQDEx1XZXN0cG9pbnQgQ2VydGlmaWNhdGUgVGVzdCBDQTETMBEGA1UECBMKTGFu -Y2FzaGlyZTELMAkGA1UEBhMCVUsxHTAbBgkqhkiG9w0BCQEWDmNhQGV4YW1wbGUu -Y29tMUAwPgYDVQQKEzdXZXN0cG9pbnQgQ2VydGlmaWNhdGUgVGVzdCBSb290IENl -cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTExMDczMTIxMDExNloXDTIxMDcyODIx -MDExNlowgasxJjAkBgNVBAMTHVdlc3Rwb2ludCBDZXJ0aWZpY2F0ZSBUZXN0IENB -MRMwEQYDVQQIEwpMYW5jYXNoaXJlMQswCQYDVQQGEwJVSzEdMBsGCSqGSIb3DQEJ -ARYOY2FAZXhhbXBsZS5jb20xQDA+BgNVBAoTN1dlc3Rwb2ludCBDZXJ0aWZpY2F0 -ZSBUZXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQC5xMKXviXuxFO67WzFIImO5RY3Y+dqt7maTB+p -JiHkn98rJoBB4J1cDnEUIs5ErO+kqOjW7JwF50fePNJ5K+I6SbRVn9gxAI59ZA6O -9UvOPZOw4/6GM24UY4B4mUcp8oXg9fhwgtjVhfXiMD2GvKQq3RazIiCoSW4aJWEq -L58Q+sIo+jL72qwk648xIwIhuC3XzcOOE/+rCOtZmu812/NN08UfsL2qup0aaaGv -aL36n6OIx5AYFcCD5uOxXAmUy14mhwQyDHAl6K42ghSm5b43VMMSQ+N9AQpentWl -RH6Vt1eY52YTxjNxpRlj88GBnYxdr8WgjKOV7v8OPGXP6zWlAgMBAAGjEDAOMAwG -A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADptDEfvsh8aq/tTc7ciGkHG -jh7WFELVTcdWBTyveZ24298Hl9UOfsAfLqjMGMs3delAaZocchba9Og2xSZyRstH -GUtlJXd4PnSJSx/TksPf2DCANo5sxBWBITs1Iprm3Nlm3/xPZM2QLIamRYi2J6Ed -JTfWvMpoaW1umJX49jKqk1gfdcS6eUSaXetgYP2FQV7DstqPLYfQ731nEXZ1LXFM -PO7IoPccqk4YJ0KOV7hFb7NCq4a6cz/Gf0S0qJ44vqHz6iRZpmWIo5UFivwtLw9r -iMbdJ1mCCMR0oN5om3muKc7Sz+l2ItxdYMcLkZ1/3ouvQqOX+qIOrYEUN1RZCzI= +MIIENzCCAx+gAwIBAgIUdn+WSglXIMBvW46H1+kauM81p1UwDQYJKoZIhvcNAQEL +BQAwgaIxCzAJBgNVBAYTAk5PMQ8wDQYDVQQIDAZOb3J3YXkxDTALBgNVBAcMBE9z +bG8xDTALBgNVBAoMBFRRdEMxLzAtBgNVBAsMJlRRdEMgVGVzdCBSb290IEF1dGhv +cml6YXRpb24gQXV0aG9yaXR5MRowGAYDVQQDDBFUUXRDIHRlc3Qgcm9vdCBDQTEX +MBUGCSqGSIb3DQEJARYIY2FAcXQuaW8wHhcNMjEwNzI5MTIzNDM5WhcNMzEwNzI3 +MTIzNDM5WjCBojELMAkGA1UEBhMCTk8xDzANBgNVBAgMBk5vcndheTENMAsGA1UE +BwwET3NsbzENMAsGA1UECgwEVFF0QzEvMC0GA1UECwwmVFF0QyBUZXN0IFJvb3Qg +QXV0aG9yaXphdGlvbiBBdXRob3JpdHkxGjAYBgNVBAMMEVRRdEMgdGVzdCByb290 +IENBMRcwFQYJKoZIhvcNAQkBFghjYUBxdC5pbzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAOXrt0DU0NCmvB/vsw3d5Ztn3Ab77AmnVSNSkWKOyei7bQ55 +Qx2FR+ihcPL3+HRQ+UAZsV/ryurkrCdFOOpkBC8a1Kq1ErXM9RbBdX9kyX7IG1KD +iwnFuci/2cDgounfxNDLPCWImukKfWGUfWlpnbbF4nYdaeP/S+LvsCklgphGdtLE +uO+bNLUNFT61X3d0eg/NQ0tMFFgjTQkKYueYpoAtS8zsHfJxLKzNVjdkUaqEsN1x +AmE6LLVhMwf7EHwlgCMb3H59R9N+kz8bjCNQrErctF0crvdZjlX9AudZGz6e6xso +Mmw6epkGSGF6eMjK62mQX4Y/15ruNIvuLla1dzcCAwEAAaNjMGEwHQYDVR0OBBYE +FFpvgro1qjV/QzO+gq/hScIGw7CpMB8GA1UdIwQYMBaAFFpvgro1qjV/QzO+gq/h +ScIGw7CpMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 +DQEBCwUAA4IBAQC+Xbv1f2r2YBXTM7/Uc48DFjdCb4dOKOF8anIGmsG5IfcG77DW +PkyVvPVBVQYw11GtyEwdl5nYyM5VMUT2Jv0kL3sRjQASaQLQCJa3KpYKUV6/7+0W +h8oUSb6FyP8Ks/GTVgHGlSSWU6TixG2k85kKSDNinUDHqrjyS+EYXR4FZHY68lu1 +JSSDBrdEEMmBcChj7Yze9LcdcEUbsALori4363rJCsDmfE6M5nZCFGSn1oUAB8LS +XJ62DI16XbKjwSSFsvJA87n3Ujivytjgdq0e1EgpeNjFvcq5lJ83pQHK/G6+hIna +toLOSqYHUzZv5+NalkbfTUOLSuecUMDTz+KG -----END CERTIFICATE----- diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-ca-cert.pem qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-ca-cert.pem --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-ca-cert.pem 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-ca-cert.pem 2022-11-11 15:29:17.000000000 +0800 @@ -1,66 +1,26 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 28 (0x1c) - Signature Algorithm: sha1WithRSAEncryption - Issuer: CN=Westpoint Certificate Test CA, ST=Lancashire, C=UK/emailAddress=ca@example.com, O=Westpoint Certificate Test Root Certification Authority - Validity - Not Before: Jul 31 21:01:18 2011 GMT - Not After : Jul 28 21:01:18 2021 GMT - Subject: ST=Lancashire, C=UK/emailAddress=test@example.com, O=Test intermediate CA - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - Public-Key: (1024 bit) - Modulus: - 00:bc:bd:83:c1:bc:36:d8:9c:74:68:5a:46:48:25: - 83:59:f8:35:1e:8f:dc:2c:52:3b:7c:2e:ea:40:c4: - 93:b6:39:31:df:f5:a6:f8:01:17:67:93:21:59:9b: - 89:7f:ed:2a:19:7b:25:a5:e1:71:12:99:e5:14:28: - df:75:b5:17:1c:3b:1d:3d:74:48:4f:b7:42:f4:3a: - ab:56:05:2b:fc:d3:27:97:01:08:5b:ad:26:9b:f2: - 87:51:9c:7e:e1:f1:ef:1c:bf:ad:7e:38:d9:76:89: - 30:a6:8c:2f:6f:87:9f:9e:57:13:14:b4:45:30:f3: - be:58:df:8a:d2:ee:7b:1d:89 - Exponent: 65537 (0x10001) - X509v3 extensions: - Authority Information Access: - OCSP - URI:http://ocsp.example.com:8888/ - - X509v3 Basic Constraints: - CA:TRUE - Signature Algorithm: sha1WithRSAEncryption - 33:84:9d:0e:b2:59:04:dc:ef:e3:04:8b:00:6c:64:ea:58:9e: - 36:59:76:27:59:a0:b8:ee:0d:86:83:ff:db:65:eb:6c:1f:16: - 47:e7:f5:e6:c3:88:81:73:7e:ed:12:8d:7e:fd:5e:b1:5c:68: - 47:f8:f9:ca:e3:e0:c0:f3:12:b2:24:3b:77:2c:98:de:05:6d: - a8:ec:27:b8:af:ab:84:25:26:73:b4:58:4c:7c:c1:74:97:98: - ab:0e:e6:99:70:bc:38:b0:9a:e3:d9:5c:75:fa:46:d2:87:55: - 09:86:8f:ef:4a:e4:ef:3e:32:c6:ac:9d:27:86:29:b8:78:38: - 7b:87:6c:57:72:bd:57:99:73:36:db:fa:52:bd:7b:a7:05:cd: - 28:b8:85:fc:11:47:5e:c6:77:72:6a:fb:73:3e:8b:a4:6d:f8: - 17:f4:12:d5:36:e0:ef:5c:f8:b2:a1:69:3e:4c:cf:86:5f:63: - f6:02:60:95:7f:61:e8:cb:7f:14:66:da:36:2e:78:13:3e:68: - ae:3f:13:c1:79:88:18:18:3f:23:f3:9a:e1:e7:7e:ae:50:e4: - b7:80:76:31:92:74:79:2c:de:d0:74:fe:81:7c:f6:01:14:6a: - 1f:5f:88:85:6a:11:1d:50:af:f1:97:4d:67:40:c3:e9:ae:6f: - 60:e2:bc:e2 -----BEGIN CERTIFICATE----- -MIIDUDCCAjigAwIBAgIBHDANBgkqhkiG9w0BAQUFADCBqzEmMCQGA1UEAxMdV2Vz -dHBvaW50IENlcnRpZmljYXRlIFRlc3QgQ0ExEzARBgNVBAgTCkxhbmNhc2hpcmUx -CzAJBgNVBAYTAlVLMR0wGwYJKoZIhvcNAQkBFg5jYUBleGFtcGxlLmNvbTFAMD4G -A1UEChM3V2VzdHBvaW50IENlcnRpZmljYXRlIFRlc3QgUm9vdCBDZXJ0aWZpY2F0 -aW9uIEF1dGhvcml0eTAeFw0xMTA3MzEyMTAxMThaFw0yMTA3MjgyMTAxMThaMGIx -EzARBgNVBAgTCkxhbmNhc2hpcmUxCzAJBgNVBAYTAlVLMR8wHQYJKoZIhvcNAQkB -FhB0ZXN0QGV4YW1wbGUuY29tMR0wGwYDVQQKExRUZXN0IGludGVybWVkaWF0ZSBD -QTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvL2Dwbw22Jx0aFpGSCWDWfg1 -Ho/cLFI7fC7qQMSTtjkx3/Wm+AEXZ5MhWZuJf+0qGXslpeFxEpnlFCjfdbUXHDsd -PXRIT7dC9DqrVgUr/NMnlwEIW60mm/KHUZx+4fHvHL+tfjjZdokwpowvb4efnlcT -FLRFMPO+WN+K0u57HYkCAwEAAaNLMEkwOQYIKwYBBQUHAQEELTArMCkGCCsGAQUF -BzABhh1odHRwOi8vb2NzcC5leGFtcGxlLmNvbTo4ODg4LzAMBgNVHRMEBTADAQH/ -MA0GCSqGSIb3DQEBBQUAA4IBAQAzhJ0OslkE3O/jBIsAbGTqWJ42WXYnWaC47g2G -g//bZetsHxZH5/Xmw4iBc37tEo1+/V6xXGhH+PnK4+DA8xKyJDt3LJjeBW2o7Ce4 -r6uEJSZztFhMfMF0l5irDuaZcLw4sJrj2Vx1+kbSh1UJho/vSuTvPjLGrJ0nhim4 -eDh7h2xXcr1XmXM22/pSvXunBc0ouIX8EUdexndyavtzPoukbfgX9BLVNuDvXPiy -oWk+TM+GX2P2AmCVf2Hoy38UZto2LngTPmiuPxPBeYgYGD8j85rh536uUOS3gHYx -knR5LN7QdP6BfPYBFGofX4iFahEdUK/xl01nQMPprm9g4rzi +MIIEbTCCA1WgAwIBAgICEAcwDQYJKoZIhvcNAQELBQAwgaIxCzAJBgNVBAYTAk5P +MQ8wDQYDVQQIDAZOb3J3YXkxDTALBgNVBAcMBE9zbG8xDTALBgNVBAoMBFRRdEMx +LzAtBgNVBAsMJlRRdEMgVGVzdCBSb290IEF1dGhvcml6YXRpb24gQXV0aG9yaXR5 +MRowGAYDVQQDDBFUUXRDIHRlc3Qgcm9vdCBDQTEXMBUGCSqGSIb3DQEJARYIY2FA +cXQuaW8wHhcNMjEwNzI5MTcxNjA3WhcNMzEwNjA3MTcxNjA3WjCBqzELMAkGA1UE +BhMCTk8xDzANBgNVBAgMBk5vcndheTENMAsGA1UECgwEVFF0QzEwMC4GA1UECwwn +VFF0QyBJbnRlcm1lZGlhdGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MTAwLgYDVQQD +DCdUUXRDIEludGVybWVkaWF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxGDAWBgkq +hkiG9w0BCQEWCWljYUBxdC5pbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAK1zsW+VafypIPdVrDavxgPJ8LIdYyIJtijHNvWmGDl9fgK8EZWm6uIsvHOL +D2ZtHmBRXCGXOuXFonZh2vpuPUzBdD8E4CQVE31QHHb2eoalpNgiIRODJEfOwMJZ +V5FP/iE5g5TJmbiqMwui2v4g4AWoQpsiSYnlgLd/XbZePpSSAqyZYsxGmzbcf2Vq +v5Tv8SbjLjuRZdwHsrXi/7S4qyybiPHLLoLD7+woDRo8wy+z0wQ8v2XsRzjqvBUn +QvuOvk5MXKHQzXheClMizcDDOcjaK0AKzVopQa6s0+Pmg+DW162DOrK4SGqpeBlp +OujEtiQk9+1hycAadbntYQ+/kHcCAwEAAaOBoTCBnjAdBgNVHQ4EFgQUemD1HaWM +WxNLlSONkvAiFhlmtVowHwYDVR0jBBgwFoAUWm+CujWqNX9DM76Cr+FJwgbDsKkw +EgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwOAYIKwYBBQUHAQEE +LDAqMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5leGFtcGxlLmNvbTo4ODg4MA0G +CSqGSIb3DQEBCwUAA4IBAQBxfeQrh/xnjL8vLLQB0PrPawCUB4X0RHheNAB8BZh/ +5t96StDZspB1p14iW1b9ziiN+w8hghdLO+UbEmbnfK9m0sxXPxGdO/dK5PeKkEZA +1Clbu1qPEwmbCeuPDHpcXMzYUEm/vHTJFNxfvLgiLYwZpxhYZiHeMMEUYxQRrmI1 +DJbcpZT4nYyaVKinvMmw5KG85cLsyjIgzhUwLGSAfB+p4pIX+R8GQZtdn26+FN9c +U+ZDfAUJ0hrPmd89KuSXm96tarx/EYnGzwletTL2IJWS1zxpGFlpyFgWq3m054iD +UAWX8IPCQRMwhoKmSqNbhtYIKLXyDe3Xg6yD0ySDKjlB -----END CERTIFICATE----- diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-is-ca-cert.pem qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-is-ca-cert.pem --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-is-ca-cert.pem 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-is-ca-cert.pem 2022-11-11 15:29:17.000000000 +0800 @@ -1,53 +1,25 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 29 (0x1d) - Signature Algorithm: sha1WithRSAEncryption - Issuer: ST=Lancashire, C=UK/emailAddress=test@example.com, O=Test intermediate CA - Validity - Not Before: Jul 31 21:01:18 2011 GMT - Not After : Jul 28 21:01:18 2021 GMT - Subject: CN=example.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - Public-Key: (1024 bit) - Modulus: - 00:c9:bb:98:5b:27:cd:b1:8a:a9:38:fc:aa:bb:ad: - a1:ed:cb:94:94:3e:79:90:ae:35:f3:87:b1:2a:4e: - d5:ff:55:93:e0:1a:68:2a:36:94:05:38:a7:72:64: - a3:31:0f:61:5c:ec:76:41:f1:35:4a:5e:bc:ef:51: - 90:9e:33:b4:08:7a:3f:f0:04:a8:46:99:96:25:b3: - 03:c8:cd:8c:33:42:76:82:b9:db:61:c6:91:ed:76: - 86:ae:04:38:d7:e5:5c:a9:a9:f9:b6:13:f4:90:40: - 6d:ec:2f:ba:ed:bc:ff:88:05:f0:7b:c8:ac:bd:d0: - 72:3a:91:64:86:06:89:66:0d - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Authority Information Access: - OCSP - URI:http://ocsp.example.com:8888/ - - Signature Algorithm: sha1WithRSAEncryption - 22:30:97:01:ea:d0:a8:d8:b5:32:97:c8:c9:8b:7d:01:02:53: - 74:f8:0a:10:dc:fc:73:b2:50:bb:59:47:f3:e4:9f:44:94:d5: - ca:c0:64:da:83:00:95:43:15:a5:e3:30:ce:66:ca:55:8c:16: - 03:1e:55:02:8b:c7:ad:ed:2e:ae:ee:31:59:53:37:ff:26:86: - 93:9d:e2:69:2e:c0:2a:66:38:a5:b5:54:a1:02:0a:83:67:e0: - 91:cf:fc:09:c3:70:71:b6:cf:fc:d3:e9:9f:f5:1c:4d:55:ec: - 66:f7:07:71:fc:d6:17:de:e1:ab:e6:f2:7b:83:46:1e:b9:96: - 95:8f -----BEGIN CERTIFICATE----- -MIICNjCCAZ+gAwIBAgIBHTANBgkqhkiG9w0BAQUFADBiMRMwEQYDVQQIEwpMYW5j -YXNoaXJlMQswCQYDVQQGEwJVSzEfMB0GCSqGSIb3DQEJARYQdGVzdEBleGFtcGxl -LmNvbTEdMBsGA1UEChMUVGVzdCBpbnRlcm1lZGlhdGUgQ0EwHhcNMTEwNzMxMjEw -MTE4WhcNMjEwNzI4MjEwMTE4WjAWMRQwEgYDVQQDEwtleGFtcGxlLmNvbTCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAybuYWyfNsYqpOPyqu62h7cuUlD55kK41 -84exKk7V/1WT4BpoKjaUBTincmSjMQ9hXOx2QfE1Sl6871GQnjO0CHo/8ASoRpmW -JbMDyM2MM0J2grnbYcaR7XaGrgQ41+Vcqan5thP0kEBt7C+67bz/iAXwe8isvdBy -OpFkhgaJZg0CAwEAAaNIMEYwCQYDVR0TBAIwADA5BggrBgEFBQcBAQQtMCswKQYI -KwYBBQUHMAGGHWh0dHA6Ly9vY3NwLmV4YW1wbGUuY29tOjg4ODgvMA0GCSqGSIb3 -DQEBBQUAA4GBACIwlwHq0KjYtTKXyMmLfQECU3T4ChDc/HOyULtZR/Pkn0SU1crA -ZNqDAJVDFaXjMM5mylWMFgMeVQKLx63tLq7uMVlTN/8mhpOd4mkuwCpmOKW1VKEC -CoNn4JHP/AnDcHG2z/zT6Z/1HE1V7Gb3B3H81hfe4avm8nuDRh65lpWP +MIIEMjCCAxqgAwIBAgIUaR2Q0yCxxvaNVph0ASc+zhzQj2wwDQYJKoZIhvcNAQEL +BQAwgasxCzAJBgNVBAYTAk5PMQ8wDQYDVQQIDAZOb3J3YXkxDTALBgNVBAoMBFRR +dEMxMDAuBgNVBAsMJ1RRdEMgSW50ZXJtZWRpYXRlIENlcnRpZmljYXRlIEF1dGhv +cml0eTEwMC4GA1UEAwwnVFF0QyBJbnRlcm1lZGlhdGUgQ2VydGlmaWNhdGUgQXV0 +aG9yaXR5MRgwFgYJKoZIhvcNAQkBFglpY2FAcXQuaW8wHhcNMjEwNzI5MTcyODQy +WhcNMzEwNjA3MTcyODQyWjCBjDELMAkGA1UEBhMCTk8xDzANBgNVBAgMBk5vcndh +eTENMAsGA1UEBwwET3NsbzENMAsGA1UECgwEVFF0QzEXMBUGA1UECwwOUXQgRm91 +bmRhdGlvbnMxFDASBgNVBAMMC2V4YW1wbGUuY29tMR8wHQYJKoZIhvcNAQkBFhB0 +ZXN0QGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +4oQJn7Q5RC3suFgq+mDXbheEG8CQWlCgRoiX4s6ZYVvkwAyh+AfKz6bF6uAkGhSU +BqRGfrTnU46V+IHZT3mxa9KUThhQKzGwEACAoZK1IivDRxA6y/BK3LfJc/hcFqA1 +kVWAs949fOgmJpai8LHXlGMdVnoWJE9jL4OnfHDloVzFLXqUzcvJWOFiEHnGvD8J +S+VmYbMc5Yyw73hrqVgpe302TdGr5x4vgeQwk99r37v1dmHKWiI9PcQyy/Qp576Y +V6pdL164D4cD6OgohSzqd0d3BwAvC8lO9MCJiL5l2TiaJpcEMxS8ycQCwaUp6HC1 +y+HHtfSYu9DRu4PXKccWlQIDAQABo2swaTAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0l +BBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDgGCCsGAQUFBwEBBCwwKjAoBggrBgEF +BQcwAYYcaHR0cDovL29jc3AuZXhhbXBsZS5jb206ODg4ODANBgkqhkiG9w0BAQsF +AAOCAQEAcMAO6aZesrll+VnceYD2A77Uckqu7UaJ+Cno/aXxaZuBVmfyhdUyK9DF +bqLNGooR2DGbCjnoOpAaNGngfEkLH/aiDOaGgF9hPOfeUo2Axw7ElfVvwoyEy4zy +h7GLaA491mjg3XF5ZB56wxbWiBO7nvnHP2ln6x8L5A9RZIofxmChwNuDulB5aog5 +xfoZn8nqM+HQZNUNx5gX/QgPaVu3ytcVy0t8KYQesATc4hu3kaUPP372Unm4qOyA +WjX8g4zgCs4aVhjNqWEuX4FPyZQeY0IE5BK+H50z0m+rfH02Amlvq7TYpN50A9wL +qLirP+moVzEWJKJP0HWT/jo7Ze53FA== -----END CERTIFICATE----- diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-not-ca-cert.pem qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-not-ca-cert.pem --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-not-ca-cert.pem 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-not-ca-cert.pem 2022-11-11 15:29:17.000000000 +0800 @@ -1,54 +1,24 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 27 (0x1b) - Signature Algorithm: sha1WithRSAEncryption - Issuer: CN=example.com, ST=Lancashire, C=UK/emailAddress=test@example.com, O=Some organisation - Validity - Not Before: Jul 31 21:01:18 2011 GMT - Not After : Jul 28 21:01:18 2021 GMT - Subject: CN=example.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - Public-Key: (1024 bit) - Modulus: - 00:ea:d6:97:b5:3c:f4:37:8a:58:b4:7a:49:31:55: - dd:c8:84:ee:36:f6:72:3a:31:99:d1:df:af:bb:f9: - 17:e9:d8:47:d2:20:4b:94:ce:ea:c1:6b:23:9a:da: - 02:41:29:51:34:05:13:c0:98:4d:87:f8:91:a8:85: - 81:e4:ab:26:3d:26:59:29:16:7d:04:db:57:7b:f0: - b6:2b:5d:cf:e7:82:ba:83:a7:bc:63:43:03:2a:2b: - 18:40:89:4c:1e:90:bc:bf:10:24:81:50:0d:2e:e8: - 8e:a9:0a:fc:f8:cd:97:98:3c:cc:55:b7:f2:b2:0d: - 0e:36:53:3a:b2:d0:45:90:8b - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Authority Information Access: - OCSP - URI:http://ocsp.example.com:8888/ - - Signature Algorithm: sha1WithRSAEncryption - 82:d8:53:9c:d8:0b:0a:b3:9d:b4:0a:9f:93:ec:96:a6:31:6b: - 79:c9:d2:1c:76:0b:b7:f3:9f:b9:7a:dd:d7:b7:7b:26:ba:0a: - 54:2a:a3:ad:89:8e:3c:b8:8e:ea:09:53:58:73:9a:b3:a0:40: - 90:02:f2:60:04:b8:f0:2a:61:bd:91:9b:5e:81:5f:bf:cc:f2: - 33:33:8a:70:07:f5:ea:c0:05:38:34:f7:dc:ea:0c:74:01:5d: - dd:92:ab:f2:87:64:1b:7c:be:ae:37:c1:6c:ae:99:73:a5:aa: - 45:20:32:57:19:cb:30:45:61:2c:3b:23:52:ee:f0:cc:12:80: - 97:34 -----BEGIN CERTIFICATE----- -MIICSTCCAbKgAwIBAgIBGzANBgkqhkiG9w0BAQUFADB1MRQwEgYDVQQDEwtleGFt -cGxlLmNvbTETMBEGA1UECBMKTGFuY2FzaGlyZTELMAkGA1UEBhMCVUsxHzAdBgkq -hkiG9w0BCQEWEHRlc3RAZXhhbXBsZS5jb20xGjAYBgNVBAoTEVNvbWUgb3JnYW5p -c2F0aW9uMB4XDTExMDczMTIxMDExOFoXDTIxMDcyODIxMDExOFowFjEUMBIGA1UE -AxMLZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOrWl7U8 -9DeKWLR6STFV3ciE7jb2cjoxmdHfr7v5F+nYR9IgS5TO6sFrI5raAkEpUTQFE8CY -TYf4kaiFgeSrJj0mWSkWfQTbV3vwtitdz+eCuoOnvGNDAyorGECJTB6QvL8QJIFQ -DS7ojqkK/PjNl5g8zFW38rINDjZTOrLQRZCLAgMBAAGjSDBGMAkGA1UdEwQCMAAw -OQYIKwYBBQUHAQEELTArMCkGCCsGAQUFBzABhh1odHRwOi8vb2NzcC5leGFtcGxl -LmNvbTo4ODg4LzANBgkqhkiG9w0BAQUFAAOBgQCC2FOc2AsKs520Cp+T7JamMWt5 -ydIcdgu385+5et3Xt3smugpUKqOtiY48uI7qCVNYc5qzoECQAvJgBLjwKmG9kZte -gV+/zPIzM4pwB/XqwAU4NPfc6gx0AV3dkqvyh2QbfL6uN8FsrplzpapFIDJXGcsw -RWEsOyNS7vDMEoCXNA== +MIID+jCCAuKgAwIBAgIUM3pG/f45Mn2QOCxAjTxuzXfIYj4wDQYJKoZIhvcNAQEL +BQAwgYcxCzAJBgNVBAYTAk5PMQ8wDQYDVQQIDAZOb3J3YXkxDTALBgNVBAcMBE9z +bG8xDTALBgNVBAoMBFRRdEMxEjAQBgNVBAsMCVNvbWUgVW5pdDEUMBIGA1UEAwwL +ZXhhbXBsZS5jb20xHzAdBgkqhkiG9w0BCQEWEHRlc3RAZXhhbXBsZS5jb20wHhcN +MjEwODA2MDQ0MjE1WhcNMzEwNjE1MDQ0MjE1WjCBjDELMAkGA1UEBhMCTk8xDzAN +BgNVBAgMBk5vcndheTENMAsGA1UEBwwET3NsbzENMAsGA1UECgwEVFF0QzEUMBIG +A1UECwwLRm91bmRhdGlvbnMxFDASBgNVBAMMC2V4YW1wbGUuY29tMSIwIAYJKoZI +hvcNAQkBFhNzaWduZWRieW5vbmNhQHF0LmlvMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEApXDPgUmyVw89XB1o+9yPepTyXOUnY4/4JHu333l3IQcEsK17 +tmOftWOa2TGzScrN0sbi73IhCx48/hYI3skHNiocXhHlrNI8tHkwHKWf5k957tMN +xeSIgddRXMegMc4Xxo9IMxFmvAi1q7gnIkEpBg+6NWRGhB3N2Iw8nUtyOc+wx6Us +EzRi/HpITzNsmeuwHPzlKe8HQsL5VeM9oo7HdH7Bb2M7t4+oizZe8jbvhbUWbylb +HDkD1ZoxDRyYAPYkYyvsIodDBSFOQmon7kZtshrmZO+VGPEDisaDJFYppyZNOmmA +g65IUf+0oJW73uuG5dZWwmjEhHlKhkmvqXBoUQIDAQABo1cwVTAOBgNVHQ8BAf8E +BAMCBeAwOAYIKwYBBQUHAQEELDAqMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5l +eGFtcGxlLmNvbTo4ODg4MAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBACBb +ERwLEJ9zGMk4lpnSK4hr2v8JZdVRbozKHUo0Vky3yyVoaFfKZqha9JpP0Ig71lSv +h8tmM41uFmIWCBc+JEu3PIGvZcs45/Py7NHHY5bua3/szRhkz0FbsEYbrCCE/Fom +rYxOd21q9+Aj0/ZGFccpc5v47SW8UFFjn5rhDKXqX7IZjFY/O6ILD/MnDePK963C +pGltAzKw1RRTQoXQWWWOQZx6jT+JFRQ1cc+QlY106461/qg1m1AhBG6/S6tjkcdI +h1jq4yMhfPP9BhxquZB4/mrBUY2rvUO40973m50trszjXSsdRgyScmEJKWco4MAZ +ZccSsplcBjL5ksfejH4= -----END CERTIFICATE----- diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-ocsp-good-cert.pem qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-ocsp-good-cert.pem --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-ocsp-good-cert.pem 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslcertificate/verify-certs/test-ocsp-good-cert.pem 2022-11-11 15:29:17.000000000 +0800 @@ -1,67 +1,24 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 1 (0x1) - Signature Algorithm: sha1WithRSAEncryption - Issuer: CN=Westpoint Certificate Test CA, ST=Lancashire, C=UK/emailAddress=ca@example.com, O=Westpoint Certificate Test Root Certification Authority - Validity - Not Before: Jul 31 21:01:16 2011 GMT - Not After : Jul 28 21:01:16 2021 GMT - Subject: CN=example.com, ST=Lancashire, C=UK/emailAddress=test@example.com, O=Some organisation - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - Public-Key: (1024 bit) - Modulus: - 00:97:c9:92:27:81:a7:4c:64:82:a2:30:d6:07:b7: - 57:e0:9c:ea:cd:eb:53:be:ea:b6:b5:47:66:d0:68: - 54:25:a7:ed:21:5c:dc:fd:da:41:f6:c7:c0:35:ae: - 97:72:fd:8b:af:29:3d:38:5a:67:8b:39:8a:ce:86: - 25:0f:38:a7:b5:38:b3:8e:81:f0:ea:79:99:cb:f5: - 23:64:55:f3:4b:a4:b6:23:64:29:ea:ba:f3:29:52: - a7:7f:32:dc:0d:b6:d9:d4:e6:13:de:01:41:86:9a: - 2d:8f:bb:0c:18:88:09:ac:d4:6a:e9:cb:8a:17:8a: - 85:09:a6:ae:a6:1c:05:e9:55 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Authority Information Access: - OCSP - URI:http://ocsp.example.com:8888/ - - Signature Algorithm: sha1WithRSAEncryption - 8b:9b:96:fb:8e:1b:77:f5:70:39:fe:76:51:ac:a9:6b:80:a5: - b7:95:8b:c3:1a:9c:1f:bb:d1:d1:68:43:40:96:62:d6:a6:da: - d9:fd:9d:9a:9e:8a:84:fa:f5:54:ce:a8:d7:37:c7:0c:95:fc: - 11:8b:e9:32:53:e5:59:61:0a:53:70:f3:d6:ed:3f:b1:f4:49: - bf:86:c1:77:0d:b1:ac:65:7e:62:d2:f2:5a:31:50:a7:ed:28: - bb:63:d5:f3:4f:43:3a:3f:bf:3b:d0:94:aa:a1:74:95:be:a4: - 0f:8b:e0:6f:d8:33:84:76:71:b2:da:f4:0e:1e:d2:eb:f0:c3: - 1e:33:79:21:35:93:18:05:38:db:63:85:1a:e4:84:41:0a:c3: - fb:fd:5c:69:3d:18:0a:38:b8:16:18:d3:23:b9:51:47:2e:54: - 08:d1:fc:2e:b6:63:62:78:9c:26:59:c2:5e:5a:38:76:47:e7: - f0:f8:7b:b7:00:46:34:b0:44:28:a9:33:d7:e5:1d:52:c8:fb: - 32:a5:25:86:21:0c:80:f0:4b:37:60:a0:45:69:9f:6b:b0:34: - 91:5e:4c:62:45:99:83:1d:80:48:78:bb:ee:d4:83:39:76:c3: - e6:fb:31:e9:20:f0:64:90:24:4e:c6:07:75:40:1f:7e:97:77: - 1f:bf:a2:ef -----BEGIN CERTIFICATE----- -MIIDYDCCAkigAwIBAgIBATANBgkqhkiG9w0BAQUFADCBqzEmMCQGA1UEAxMdV2Vz -dHBvaW50IENlcnRpZmljYXRlIFRlc3QgQ0ExEzARBgNVBAgTCkxhbmNhc2hpcmUx -CzAJBgNVBAYTAlVLMR0wGwYJKoZIhvcNAQkBFg5jYUBleGFtcGxlLmNvbTFAMD4G -A1UEChM3V2VzdHBvaW50IENlcnRpZmljYXRlIFRlc3QgUm9vdCBDZXJ0aWZpY2F0 -aW9uIEF1dGhvcml0eTAeFw0xMTA3MzEyMTAxMTZaFw0yMTA3MjgyMTAxMTZaMHUx -FDASBgNVBAMTC2V4YW1wbGUuY29tMRMwEQYDVQQIEwpMYW5jYXNoaXJlMQswCQYD -VQQGEwJVSzEfMB0GCSqGSIb3DQEJARYQdGVzdEBleGFtcGxlLmNvbTEaMBgGA1UE -ChMRU29tZSBvcmdhbmlzYXRpb24wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB -AJfJkieBp0xkgqIw1ge3V+Cc6s3rU77qtrVHZtBoVCWn7SFc3P3aQfbHwDWul3L9 -i68pPThaZ4s5is6GJQ84p7U4s46B8Op5mcv1I2RV80uktiNkKeq68ylSp38y3A22 -2dTmE94BQYaaLY+7DBiICazUaunLiheKhQmmrqYcBelVAgMBAAGjSDBGMAkGA1Ud -EwQCMAAwOQYIKwYBBQUHAQEELTArMCkGCCsGAQUFBzABhh1odHRwOi8vb2NzcC5l -eGFtcGxlLmNvbTo4ODg4LzANBgkqhkiG9w0BAQUFAAOCAQEAi5uW+44bd/VwOf52 -Uaypa4Clt5WLwxqcH7vR0WhDQJZi1qba2f2dmp6KhPr1VM6o1zfHDJX8EYvpMlPl -WWEKU3Dz1u0/sfRJv4bBdw2xrGV+YtLyWjFQp+0ou2PV809DOj+/O9CUqqF0lb6k -D4vgb9gzhHZxstr0Dh7S6/DDHjN5ITWTGAU422OFGuSEQQrD+/1caT0YCji4FhjT -I7lRRy5UCNH8LrZjYnicJlnCXlo4dkfn8Ph7twBGNLBEKKkz1+UdUsj7MqUlhiEM -gPBLN2CgRWmfa7A0kV5MYkWZgx2ASHi77tSDOXbD5vsx6SDwZJAkTsYHdUAffpd3 -H7+i7w== +MIIEEDCCAvigAwIBAgIUQrpDlYwLae3IBtw7fjH/oCSCWMYwDQYJKoZIhvcNAQEL +BQAwgaIxCzAJBgNVBAYTAk5PMQ8wDQYDVQQIDAZOb3J3YXkxDTALBgNVBAcMBE9z +bG8xDTALBgNVBAoMBFRRdEMxLzAtBgNVBAsMJlRRdEMgVGVzdCBSb290IEF1dGhv +cml6YXRpb24gQXV0aG9yaXR5MRowGAYDVQQDDBFUUXRDIHRlc3Qgcm9vdCBDQTEX +MBUGCSqGSIb3DQEJARYIY2FAcXQuaW8wHhcNMjEwODA2MDQzNzIyWhcNMzEwNjE1 +MDQzNzIyWjCBhzELMAkGA1UEBhMCTk8xDzANBgNVBAgMBk5vcndheTENMAsGA1UE +BwwET3NsbzENMAsGA1UECgwEVFF0QzESMBAGA1UECwwJU29tZSBVbml0MRQwEgYD +VQQDDAtleGFtcGxlLmNvbTEfMB0GCSqGSIb3DQEJARYQdGVzdEBleGFtcGxlLmNv +bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMEmu/GCuiQwbQf8qluK +5UovaQ4L3MHScVFbHlHu1Nyc12wmhhpzC3jC+OikxdCPpvxdNmdsOHonhNkO55sL +YygX4c4sCNM4B6VbJTfdOKHRBV6ySxFVS4jjBwB88Ouz9KieGiOAA6Lf6nqIBitU +eYQtBPye1lSqX4dAFHx7Il6Ad8Z3U9hUkqEpcW3AGSxFS6GebfTNleN85lXyLhHm +v66vEcHOGM7YSjWjUDto4C5LpYQHMvKe4/oZylQkRwevy8pZ+dK6ZiJuxzKVu2M2 ++LuYFeCRnFry5NBUBhpeLSOgJO2BYJZroRWygjBNUD6yToZFOX77ctL0+lXIgqZ8 +vT0CAwEAAaNXMFUwDgYDVR0PAQH/BAQDAgLkMDgGCCsGAQUFBwEBBCwwKjAoBggr +BgEFBQcwAYYcaHR0cDovL29jc3AuZXhhbXBsZS5jb206ODg4ODAJBgNVHRMEAjAA +MA0GCSqGSIb3DQEBCwUAA4IBAQAReaLhTl0k8+pmVNvnqkPg7UvwmZ1EStWyz0hn +Ar+NZSIdHUWqGqvoQVzcH5ODW3yfkNadhwfm8BJcFuy0ioTqhGuho3cI8Qr9MRQl +s0NNIjeENYbBElBXmJup4OdgCSy0GL3DeCoe3xR+IwHYeER/oH6VDBZrpVovHAk9 +6FlL6eBXgWu1YzXhKU4/enVIJ0A4LRF9WnyhQSucLwo3+bOvPxLBtmP+lWtXyKap +wMMNPu6EULAQ2IYcTgafCW9BWR1UWDXHBRO5ytBV4KFrhXiPoPmA4x0ACxnclH41 +b3Pj0pBur9cQuvap/FSz1uEfJdsYISw6srTfD4zNUuXXhSbz -----END CERTIFICATE----- diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslsocket/certs/qt-test-server-cacert.pem qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslsocket/certs/qt-test-server-cacert.pem --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslsocket/certs/qt-test-server-cacert.pem 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslsocket/certs/qt-test-server-cacert.pem 2022-11-11 15:29:17.000000000 +0800 @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICpzCCAhACCQCzAF1hyRVzAjANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UEBhMC -Tk8xDTALBgNVBAgTBE9zbG8xDTALBgNVBAcTBE9zbG8xDjAMBgNVBAoTBU5va2lh -MTUwMwYDVQQLFCxRdCBTb2Z0d2FyZS9lbWFpbEFkZHJlc3M9bm9ib2R5QG5vZG9t -YWluLm9yZzEjMCEGA1UEAxMacXQtdGVzdC1zZXJ2ZXIucXQtdGVzdC1uZXQwHhcN -MTkwNjI0MTI0OTIxWhcNMjIwNjIzMTI0OTIxWjCBlzELMAkGA1UEBhMCTk8xDTAL -BgNVBAgTBE9zbG8xDTALBgNVBAcTBE9zbG8xDjAMBgNVBAoTBU5va2lhMTUwMwYD -VQQLFCxRdCBTb2Z0d2FyZS9lbWFpbEFkZHJlc3M9bm9ib2R5QG5vZG9tYWluLm9y -ZzEjMCEGA1UEAxMacXQtdGVzdC1zZXJ2ZXIucXQtdGVzdC1uZXQwgZ8wDQYJKoZI -hvcNAQEBBQADgY0AMIGJAoGBAM2q22/WNMmn8cC+5EEYGeICySLmp9W6Ay6eKHr0 -Xxp3X3epETuPfvAuxp7rOtkS18EMUegkUj8jw0IMEcbyHKFC/rTCaYOt93CxGBXM -IChiMPAsFeYzGa/D6xzAkfcRaJRQ+Ek3CDLXPnXfo7xpABXezYcPXAJrgsgBfWrw -HdxzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEASCKbqEX5ysC549mq90ydk4jyDW3m -PUyet01fKpcRqVs+OJxdExFBTra3gho6WzzpTSPsuX2ZKOLF5k6KkCvdCGvhC1Kv -HHPIExurfzvdlSRzj6HbKyPuSfxyOloH0bBp7/Gg5RIuBPKlbmfbnTLtwEjhhbMU -SoYI8HZd3HfY87c= +MIICyjCCAjMCFHPGDqJR+klHni4XbETMk6GLn/UEMA0GCSqGSIb3DQEBDQUAMIGj +MRcwFQYDVQQKEw5UaGUgUXQgQ29tcGFueTEUMBIGA1UECxMLUXQgU29mdHdhcmUx +IjAgBgkqhkiG9w0BCQEWE25vYm9keUBub2RvbWFpbi5vcmcxDTALBgNVBAcTBE9z +bG8xDTALBgNVBAgTBE9zbG8xCzAJBgNVBAYTAk5PMSMwIQYDVQQDExpxdC10ZXN0 +LXNlcnZlci5xdC10ZXN0LW5ldDAeFw0yMjA2MjQxMTU4NDlaFw0zMjA2MjExMTU4 +NDlaMIGjMRcwFQYDVQQKEw5UaGUgUXQgQ29tcGFueTEUMBIGA1UECxMLUXQgU29m +dHdhcmUxIjAgBgkqhkiG9w0BCQEWE25vYm9keUBub2RvbWFpbi5vcmcxDTALBgNV +BAcTBE9zbG8xDTALBgNVBAgTBE9zbG8xCzAJBgNVBAYTAk5PMSMwIQYDVQQDExpx +dC10ZXN0LXNlcnZlci5xdC10ZXN0LW5ldDCBnzANBgkqhkiG9w0BAQEFAAOBjQAw +gYkCgYEAzarbb9Y0yafxwL7kQRgZ4gLJIuan1boDLp4oevRfGndfd6kRO49+8C7G +nus62RLXwQxR6CRSPyPDQgwRxvIcoUL+tMJpg633cLEYFcwgKGIw8CwV5jMZr8Pr +HMCR9xFolFD4STcIMtc+dd+jvGkAFd7Nhw9cAmuCyAF9avAd3HMCAwEAATANBgkq +hkiG9w0BAQ0FAAOBgQCZyRe25WqOjrNS6BKPs7ep7eyCON3NKdWnfABZrSjGJQ87 +PoFKl6+9YBSlSpl8qk7c29ic+wA4qFQzPJkrbYIXjwVMAr+cC1kVrlUVqcwmvnKo +5vj57/v8S0Uc4/GesIsxZR7QM+3diPDyk7Bsc3IkpINb31Dl0mlg25nztg8NxA== -----END CERTIFICATE----- diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1623,6 +1623,9 @@ void tst_QSslSocket::setSslConfiguration_data() { +#if QT_CONFIG(securetransport) + QSKIP("Skipping the cases with certificate, SecureTransport does not like old certificate on the test server"); +#endif // securetransport QTest::addColumn<QSslConfiguration>("configuration"); QTest::addColumn<bool>("works"); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/opengl/qgl/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/opengl/qgl/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/opengl/qgl/BLACKLIST 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/opengl/qgl/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -5,4 +5,8 @@ ubuntu-18.04 rhel-7.4 opensuse-42.3 +sles +# QTBUG-96271 +[closeAndThenShow] +macos-11 diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/opengl/qgl/tst_qgl.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/opengl/qgl/tst_qgl.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/opengl/qgl/tst_qgl.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/opengl/qgl/tst_qgl.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -44,6 +44,7 @@ #include <QGraphicsView> #include <QGraphicsProxyWidget> #include <QVBoxLayout> +#include <QOperatingSystemVersion> #ifdef QT_BUILD_INTERNAL #include <qpa/qplatformpixmap.h> @@ -2537,6 +2538,10 @@ void tst_QGL::closeAndThenShow() { +#ifdef Q_OS_MACOS + if (QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSBigSur) + QSKIP("Test is crashing flaky on macos-11.0 - QTBUG-96271"); +#endif QWidget *w = new QWidget; w->resize(640, 480); QVBoxLayout *layout = new QVBoxLayout(w); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/gestures/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/gestures/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/gestures/BLACKLIST 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/gestures/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -2,6 +2,7 @@ rhel-7.4 rhel-7.6 ubuntu-18.04 +sles-15 [customGesture] opensuse-leap # QTBUG-67254 @@ -10,18 +11,22 @@ ubuntu-18.04 rhel-7.4 rhel-7.6 +sles-15 [graphicsItemTreeGesture] ubuntu-18.04 [graphicsView] ubuntu-18.04 rhel-7.4 rhel-7.6 +sles-15 [explicitGraphicsObjectTarget] ubuntu-18.04 rhel-7.4 rhel-7.6 +sles-15 [autoCancelGestures2] ubuntu-18.04 rhel-7.4 rhel-7.6 +sles-15 diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/lancelot/paintcommands.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/lancelot/paintcommands.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/lancelot/paintcommands.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/lancelot/paintcommands.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -376,6 +376,10 @@ "^drawLine\\s+(-?[\\w.]*)\\s+(-?[\\w.]*)\\s+(-?[\\w.]*)\\s+(-?[\\w.]*)$", "drawLine <x1> <y1> <x2> <y2>", "drawLine 10.0 10.0 20.0 20.0"); + DECL_PAINTCOMMAND("drawLines", command_drawLines, + "^drawLines\\s+\\[([\\w\\s\\-.]*)\\]$", + "drawLines <[ <l1x1> <l1y1> <l1x2> <l1y2> <l2x1> <l2y1> ... ]>", + "drawLines [ 10 10 50 10 50 20 10 20 ]"); DECL_PAINTCOMMAND("drawRect", command_drawRect, "^drawRect\\s+(-?[\\w.]*)\\s+(-?[\\w.]*)\\s+(-?[\\w.]*)\\s+(-?[\\w.]*)$", "drawRect <x> <y> <w> <h>", @@ -433,7 +437,7 @@ "drawConvexPolygon <[ <x1> <y1> ... <xn> <yn> ]>", "drawConvexPolygon [ 1 4 6 8 5 3 ]"); DECL_PAINTCOMMAND("drawPolyline", command_drawPolyline, - "^drawPolyline\\s+\\[([\\w\\s]*)\\]$", + "^drawPolyline\\s+\\[([\\w\\s\\-.]*)\\]$", "drawPolyline <[ <x1> <y1> ... <xn> <yn> ]>", "drawPolyline [ 1 4 6 8 5 3 ]"); DECL_PAINTCOMMAND("drawText", command_drawText, @@ -975,6 +979,25 @@ } /***************************************************************************************************/ +void PaintCommands::command_drawLines(QRegularExpressionMatch re) +{ + static QRegularExpression separators("\\s"); + QStringList numbers = re.captured(1).split(separators, Qt::SkipEmptyParts); + + QVector<QLineF> array; + for (int i = 0; i + 3 < numbers.size(); i += 4) { + QPointF pt1(numbers.at(i).toFloat(), numbers.at(i + 1).toFloat()); + QPointF pt2(numbers.at(i + 2).toFloat(), numbers.at(i + 3).toFloat()); + array.append(QLineF(pt1, pt2)); + } + + if (m_verboseMode) + printf(" -(lance) drawLines(size=%zd)\n", size_t(array.size())); + + m_painter->drawLines(array); +} + +/***************************************************************************************************/ void PaintCommands::command_drawPath(QRegularExpressionMatch re) { if (m_verboseMode) diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/lancelot/paintcommands.h qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/lancelot/paintcommands.h --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/lancelot/paintcommands.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/lancelot/paintcommands.h 2022-11-11 15:29:17.000000000 +0800 @@ -187,6 +187,7 @@ void command_drawEllipse(QRegularExpressionMatch re); void command_drawImage(QRegularExpressionMatch re); void command_drawLine(QRegularExpressionMatch re); + void command_drawLines(QRegularExpressionMatch re); void command_drawPath(QRegularExpressionMatch re); void command_drawPie(QRegularExpressionMatch re); void command_drawPixmap(QRegularExpressionMatch re); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/lancelot/scripts/cosmetic.qps qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/lancelot/scripts/cosmetic.qps --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/lancelot/scripts/cosmetic.qps 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/lancelot/scripts/cosmetic.qps 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,55 @@ +drawRect 0 0 800 800 + +setRenderHint Antialiasing true +image_load dome_argb32.png img + +save +setBrush springgreen SolidPattern + +begin_block primitives + +setPen black 2 DashLine +pen_setCosmetic true +drawLine 10 60 60 10 +drawRect 80 10.0 30 50 +drawText 130 50 "Foo" +drawImage img 160 10 50 50 + +pen_setCosmetic false +drawLine 10 160 60 110 +drawRect 80 110.0 30 50 +drawText 130 150 "Foo" +drawImage img 160 110 50 50 + +setPen NoPen +drawLine 10 260 60 210 +drawRect 80 210.0 30 50 +drawText 130 250 "Foo" +drawImage img 160 210 50 50 + +end_block primitives + + +translate 250 0 +rotate 10 +scale 2.5 1 +repeat_block primitives + +resetMatrix +# Force non-simple pen in Pdf +setOpacity 0.5 +translate 0 400 +repeat_block primitives + +translate 250 0 +rotate 10 +scale 2.5 1 +repeat_block primitives + +restore +setPen blue 4 DotLine +setBrush olive SolidPattern +pen_setCosmetic true +translate 50 720 +scale 2 2 +drawRect 0 0 30 30 diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/lancelot/scripts/linedashes2.qps qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/lancelot/scripts/linedashes2.qps --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/lancelot/scripts/linedashes2.qps 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/lancelot/scripts/linedashes2.qps 2022-11-11 15:29:17.000000000 +0800 @@ -111,8 +111,9 @@ repeat_block vertical resetMatrix -translate 40 400 -setPen 0xffff0000 5 dashdotline flatcap +translate 20 380 +setPen 0xffff00ff 5 dashdotline flatcap +begin_block offset pen_setDashPattern [1 1 4 1 1 4] pen_setDashOffset -4 drawLine 0 0 300 0 @@ -146,9 +147,50 @@ translate 0 8 pen_setDashOffset 16 drawLine 0 0 300 0 +end_block offset + +resetMatrix +translate 420 380 +setPen 0xffff00ff 5 dashdotline roundcap +repeat_block offset resetMatrix setPen black 3 dashdotline pen_setCosmetic true translate 0 -150 -drawLine 500 160 500 410 \ No newline at end of file +drawLine 500 160 500 410 + +resetMatrix +translate 300 480 +setPen blue 0 + +begin_block clip_lines +pen_setDashPattern [ 20 4 5 4 1 4 ] +pen_setDashOffset 26.0 +drawLines [0 0 1000000 10 1000000 10 -1000000 20 -1000000 20 0 30] +end_block clip_lines + +translate 0 45 +setPen blue 5 +repeat_block clip_lines + +translate 0 45 +setPen blue 5 SolidLine RoundCap +repeat_block clip_lines + +translate 0 45 +setPen green 0 + +begin_block clip_poly +pen_setDashPattern [ 20 4 5 4 1 4 ] +pen_setDashOffset 26.0 +drawPolyline [0 0 1000000 10 -1000000 20 0 30] +end_block clip_poly + +translate 0 45 +setPen green 5 +repeat_block clip_poly + +translate 0 45 +setPen green 5 SolidLine RoundCap +repeat_block clip_poly diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/lancelot/scripts/tinydashes.qps qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/lancelot/scripts/tinydashes.qps --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/lancelot/scripts/tinydashes.qps 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/lancelot/scripts/tinydashes.qps 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,34 @@ +# Version: 1 +# CheckVsReference: 5% + +path_addEllipse mypath 20.0 20.0 200.0 200.0 + +save +setPen blue 20 SolidLine FlatCap +pen_setCosmetic true +pen_setDashPattern [ 0.0004 0.0004 ] +setBrush yellow + +drawPath mypath +translate 300 0 +setRenderHint Antialiasing true +drawPath mypath +restore + +path_addEllipse bigpath 200000.0 200000.0 2000000.0 2000000.0 + +setPen blue 20 DotLine FlatCap +setBrush yellow + +save +translate 0 300 +scale 0.0001 0.00011 +drawPath bigpath +restore + +save +translate 300 300 +setRenderHint Antialiasing true +scale 0.0001 0.00011 +drawPath bigpath +restore diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/lancelot/tst_lancelot.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/lancelot/tst_lancelot.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/lancelot/tst_lancelot.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/lancelot/tst_lancelot.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -30,6 +30,9 @@ #include <qbaselinetest.h> #include <QDir> #include <QPainter> +#include <QPdfWriter> +#include <QTemporaryFile> +#include <QProcess> #ifndef QT_NO_OPENGL #include <QOpenGLFramebufferObjectFormat> @@ -53,7 +56,8 @@ private: enum GraphicsEngine { Raster = 0, - OpenGL = 1 + OpenGL = 1, + Pdf = 2 }; void setupTestSuite(const QStringList& blacklist = QStringList()); @@ -88,6 +92,9 @@ void testRasterRGBA64PM_data(); void testRasterRGBA64PM(); + void testPdf_data(); + void testPdf(); + #ifndef QT_NO_OPENGL void testOpenGL_data(); void testOpenGL(); @@ -239,6 +246,21 @@ } +void tst_Lancelot::testPdf_data() +{ +#ifdef Q_OS_MACOS + setupTestSuite(); +#else + QSKIP("Pdf testing only implemented for macOS"); +#endif +} + +void tst_Lancelot::testPdf() +{ + runTestSuite(Pdf, QImage::Format_RGB32); +} + + #ifndef QT_NO_OPENGL bool tst_Lancelot::checkSystemGLSupport() { @@ -370,6 +392,28 @@ paint(&pdv, engine, format, script, QFileInfo(filePath).absoluteFilePath()); rendered = fbo.toImage().convertToFormat(format); #endif + } else if (engine == Pdf) { + QString tempStem(QDir::tempPath() + QLatin1String("/lancelot_XXXXXX_") + qpsFile.chopped(4)); + + QTemporaryFile pdfFile(tempStem + QLatin1String(".pdf")); + pdfFile.open(); + QPdfWriter writer(&pdfFile); + writer.setPdfVersion(QPdfWriter::PdfVersion_1_6); + writer.setResolution(150); + paint(&writer, engine, format, script, QFileInfo(filePath).absoluteFilePath()); + pdfFile.close(); + + // Convert pdf to something we can read into a QImage, using macOS' sips utility + QTemporaryFile pngFile(tempStem + QLatin1String(".png")); + pngFile.open(); // Just create the file name + pngFile.close(); + QProcess proc; + const char *rawArgs = "-s format png --cropOffset 20 20 -c 800 800 -o"; + QStringList argList = QString::fromLatin1(rawArgs).split(QLatin1Char(' ')); + proc.start(QLatin1String("sips"), argList << pngFile.fileName() << pdfFile.fileName()); + proc.waitForFinished(2 * 60 * 1000); // May need some time + + rendered = QImage(pngFile.fileName()); } QBASELINE_TEST(rendered); @@ -384,6 +428,9 @@ case OpenGL: pcmd.setType(OpenGLBufferType); // version/profile is communicated through the context's format() break; + case Pdf: + pcmd.setType(PdfType); + break; case Raster: // fallthrough default: pcmd.setType(ImageType); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/qaccessibilitymac/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/qaccessibilitymac/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/qaccessibilitymac/BLACKLIST 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/qaccessibilitymac/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,4 @@ +# See qtbase/src/testlib/qtestblacklist.cpp for format +[notificationsTest] +macos-10.15 + diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/qaccessibilitymac/tst_qaccessibilitymac_helpers.mm qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/qaccessibilitymac/tst_qaccessibilitymac_helpers.mm --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/other/qaccessibilitymac/tst_qaccessibilitymac_helpers.mm 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/other/qaccessibilitymac/tst_qaccessibilitymac_helpers.mm 2022-11-11 15:29:17.000000000 +0800 @@ -86,6 +86,7 @@ return false; \ } \ +#define TRY_EXPECT(cond) EXPECT(QTest::qWaitFor([&]{ return (cond); })) @interface TestAXObject : NSObject { @@ -546,21 +547,17 @@ EXPECT(notificationList.length() == 0); le2->setFocus(); - QCoreApplication::processEvents(); - EXPECT(notificationList.length() == 1); - EXPECT(notificationList.at(0) == QAccessible::Focus); + TRY_EXPECT(notificationList.length() == 1); + TRY_EXPECT(notificationList.at(0) == QAccessible::Focus); le1->setFocus(); - QCoreApplication::processEvents(); - EXPECT(notificationList.length() == 2); - EXPECT(notificationList.at(1) == QAccessible::Focus); + TRY_EXPECT(notificationList.length() == 2); + TRY_EXPECT(notificationList.at(1) == QAccessible::Focus); le1->setText("hello"); - QCoreApplication::processEvents(); - EXPECT(notificationList.length() == 3); - EXPECT(notificationList.at(2) == QAccessible::ValueChanged); + TRY_EXPECT(notificationList.length() == 3); + TRY_EXPECT(notificationList.at(2) == QAccessible::ValueChanged); le1->setText("foo"); - QCoreApplication::processEvents(); - EXPECT(notificationList.length() == 4); - EXPECT(notificationList.at(3) == QAccessible::ValueChanged); + TRY_EXPECT(notificationList.length() == 4); + TRY_EXPECT(notificationList.at(3) == QAccessible::ValueChanged); return true; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -157,6 +157,9 @@ void invalidFilterAndHeaderData_data() { generic_data(); } void invalidFilterAndHeaderData(); //QTBUG-23879 + + void sqlite_selectFromIdentifierWithDot_data() { generic_data("QSQLITE"); } + void sqlite_selectFromIdentifierWithDot(); private: void generic_data(const QString& engine=QString()); void generic_data_with_strategies(const QString& engine=QString()); @@ -308,33 +311,37 @@ QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); - QSqlTableModel model(0, db); - model.setTable(test); - model.setSort(0, Qt::AscendingOrder); - QVERIFY_SQL(model, select()); + QString withoutQuotes = test; + const QStringList tables = {test, withoutQuotes.remove(QLatin1Char('"'))}; + for (const QString &tbl : tables) { + QSqlTableModel model(0, db); + model.setTable(tbl); + model.setSort(0, Qt::AscendingOrder); + QVERIFY_SQL(model, select()); - QCOMPARE(model.rowCount(), 3); - QCOMPARE(model.columnCount(), 3); + QCOMPARE(model.rowCount(), 3); + QCOMPARE(model.columnCount(), 3); - QCOMPARE(model.data(model.index(0, 0)).toInt(), 1); - QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry")); - QCOMPARE(model.data(model.index(0, 2)).toInt(), 1); - QCOMPARE(model.data(model.index(0, 3)), QVariant()); + QCOMPARE(model.data(model.index(0, 0)).toInt(), 1); + QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry")); + QCOMPARE(model.data(model.index(0, 2)).toInt(), 1); + QCOMPARE(model.data(model.index(0, 3)), QVariant()); - QCOMPARE(model.data(model.index(1, 0)).toInt(), 2); - QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond")); - QCOMPARE(model.data(model.index(1, 2)).toInt(), 2); - QCOMPARE(model.data(model.index(1, 3)), QVariant()); + QCOMPARE(model.data(model.index(1, 0)).toInt(), 2); + QCOMPARE(model.data(model.index(1, 1)).toString(), QString("trond")); + QCOMPARE(model.data(model.index(1, 2)).toInt(), 2); + QCOMPARE(model.data(model.index(1, 3)), QVariant()); - QCOMPARE(model.data(model.index(2, 0)).toInt(), 3); - QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi")); - QCOMPARE(model.data(model.index(2, 2)).toInt(), 3); - QCOMPARE(model.data(model.index(2, 3)), QVariant()); + QCOMPARE(model.data(model.index(2, 0)).toInt(), 3); + QCOMPARE(model.data(model.index(2, 1)).toString(), QString("vohi")); + QCOMPARE(model.data(model.index(2, 2)).toInt(), 3); + QCOMPARE(model.data(model.index(2, 3)), QVariant()); - QCOMPARE(model.data(model.index(3, 0)), QVariant()); - QCOMPARE(model.data(model.index(3, 1)), QVariant()); - QCOMPARE(model.data(model.index(3, 2)), QVariant()); - QCOMPARE(model.data(model.index(3, 3)), QVariant()); + QCOMPARE(model.data(model.index(3, 0)), QVariant()); + QCOMPARE(model.data(model.index(3, 1)), QVariant()); + QCOMPARE(model.data(model.index(3, 2)), QVariant()); + QCOMPARE(model.data(model.index(3, 3)), QVariant()); + } } class SelectRowModel: public QSqlTableModel @@ -2138,5 +2145,50 @@ QVERIFY(t.isFinished()); } +void tst_QSqlTableModel::sqlite_selectFromIdentifierWithDot() +{ + QFETCH(QString, dbName); + QSqlDatabase db = QSqlDatabase::database(dbName); + CHECK_DATABASE(db); + { + const auto fieldDot = qTableName("fieldDot", __FILE__, db); + tst_Databases::safeDropTable(db, fieldDot); + QSqlQuery qry(db); + QVERIFY_SQL(qry, exec("create table " + fieldDot + " (id int primary key, " + "\"person.firstname\" varchar(20))")); + QVERIFY_SQL(qry, exec("insert into " + fieldDot + " values(1, 'Andy')")); + QSqlTableModel model(0, db); + model.setTable(fieldDot); + QVERIFY_SQL(model, select()); + QCOMPARE(model.data(model.index(0, 0)).toInt(), 1); + QCOMPARE(model.data(model.index(0, 1)).toString(), QString("Andy")); + } + const auto tableDot = QLatin1Char('[') + qTableName("table.dot", __FILE__, db) + QLatin1Char(']'); + { + tst_Databases::safeDropTable(db, tableDot); + QSqlQuery qry(db); + QVERIFY_SQL(qry, exec("create table " + tableDot + " (id int primary key, " + "\"person.firstname\" varchar(20))")); + QVERIFY_SQL(qry, exec("insert into " + tableDot + " values(1, 'Andy')")); + QSqlTableModel model(0, db); + model.setTable(tableDot); + QVERIFY_SQL(model, select()); + QCOMPARE(model.data(model.index(0, 0)).toInt(), 1); + QCOMPARE(model.data(model.index(0, 1)).toString(), QString("Andy")); + } + { + QSqlDatabase attachedDb = QSqlDatabase::addDatabase("QSQLITE", "attachedDb"); + attachedDb.setDatabaseName(db.databaseName().replace("foo.db", "attached.db")); + QVERIFY(attachedDb.open()); + QSqlQuery qry(attachedDb); + QVERIFY_SQL(qry, exec(QString("attach '%1' AS 'attached'").arg(db.databaseName()))); + QSqlTableModel model(0, attachedDb); + model.setTable(QString("attached.%1").arg(tableDot)); + QVERIFY_SQL(model, select()); + QCOMPARE(model.data(model.index(0, 0)).toInt(), 1); + QCOMPARE(model.data(model.index(0, 1)).toString(), QString("Andy")); + } +} + QTEST_MAIN(tst_QSqlTableModel) #include "tst_qsqltablemodel.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -40,6 +40,7 @@ void stringListModel(); void treeWidgetModel(); void standardItemModel(); + void standardItemModelZeroColumns(); void testInsertThroughProxy(); void moveSourceItems(); void testResetThroughProxy(); @@ -104,6 +105,18 @@ model.insertColumns(0, 5, model.index(1, 3)); } +void tst_QAbstractItemModelTester::standardItemModelZeroColumns() +{ + QStandardItemModel model; + QAbstractItemModelTester t1(&model); + // QTBUG-92220 + model.insertRows(0, 5); + model.removeRows(0, 5); + // QTBUG-92886 + model.insertRows(0, 5); + model.removeRows(1, 2); +} + void tst_QAbstractItemModelTester::testInsertThroughProxy() { DynamicTreeModel *model = new DynamicTreeModel(this); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/testlib/selftests/verifyexceptionthrown/tst_verifyexceptionthrown.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/testlib/selftests/verifyexceptionthrown/tst_verifyexceptionthrown.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/testlib/selftests/verifyexceptionthrown/tst_verifyexceptionthrown.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/testlib/selftests/verifyexceptionthrown/tst_verifyexceptionthrown.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -112,12 +112,16 @@ void tst_VerifyExceptionThrown::testFailInt() const { - QVERIFY_EXCEPTION_THROWN(throw int(5), double); + try { + QVERIFY_EXCEPTION_THROWN(throw int(5), double); + } catch (int) {} } void tst_VerifyExceptionThrown::testFailStdString() const { - QVERIFY_EXCEPTION_THROWN(throw std::string("some string"), char*); + try { + QVERIFY_EXCEPTION_THROWN(throw std::string("some string"), char*); + } catch (const std::string &) {} } void tst_VerifyExceptionThrown::testFailStdRuntimeError() const diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/tools/moc/allmocs_baseline_in.json qtbase-opensource-src-5.15.8+dfsg/tests/auto/tools/moc/allmocs_baseline_in.json --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/tools/moc/allmocs_baseline_in.json 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/tools/moc/allmocs_baseline_in.json 2022-11-11 15:29:17.000000000 +0800 @@ -1536,6 +1536,79 @@ { "classes": [ { + "className": "CXX11TrailingReturn", + "object": true, + "qualifiedClassName": "CXX11TrailingReturn", + "signals": [ + { + "access": "public", + "arguments": [ + { + "name": "i", + "type": "int" + } + ], + "name": "trailingSignalReturn", + "returnType": "void" + } + ], + "slots": [ + { + "access": "public", + "name": "fun", + "returnType": "void" + }, + { + "access": "public", + "arguments": [ + { + "name": "i", + "type": "int" + }, + { + "name": "b", + "type": "char" + } + ], + "name": "arguments", + "returnType": "int" + }, + { + "access": "public", + "arguments": [ + { + "name": "i", + "type": "int" + } + ], + "name": "inlineFunc", + "returnType": "int" + }, + { + "access": "public", + "name": "constRefReturn", + "returnType": "void" + }, + { + "access": "public", + "name": "constConstRefReturn", + "returnType": "void" + } + ], + "superClasses": [ + { + "access": "public", + "name": "QObject" + } + ] + } + ], + "inputFile": "cxx11-trailing-return.h", + "outputRevision": 67 + }, + { + "classes": [ + { "className": "ForwardDeclaredParamClass", "object": true, "qualifiedClassName": "ForwardDeclaredParamClass", diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/tools/moc/cxx11-trailing-return.h qtbase-opensource-src-5.15.8+dfsg/tests/auto/tools/moc/cxx11-trailing-return.h --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/tools/moc/cxx11-trailing-return.h 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/tools/moc/cxx11-trailing-return.h 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef CXX11_TRAILING_RETURN_H +#define CXX11_TRAILING_RETURN_H +#include <QtCore/QObject> + +class CXX11TrailingReturn : public QObject +{ + Q_OBJECT +public slots: + inline auto fun() -> void; + inline auto arguments(int i, char b) -> int; + inline auto inlineFunc(int i) -> int + { + return i + 1; + } + + inline auto constRefReturn() -> const CXX11TrailingReturn & + { + return *this; + } + + inline auto constConstRefReturn() const -> const CXX11TrailingReturn & + { + return *this; + } + +signals: + auto trailingSignalReturn(int i) -> void; +}; + +auto CXX11TrailingReturn::fun() -> void +{ + return; +} + +auto CXX11TrailingReturn::arguments(int i, char b) -> int +{ + return i + int(b); +} + +#endif // CXX11_TRAILING_RETURN_H diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/tools/moc/enum_with_include.h qtbase-opensource-src-5.15.8+dfsg/tests/auto/tools/moc/enum_with_include.h --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/tools/moc/enum_with_include.h 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/tools/moc/enum_with_include.h 2022-11-11 15:29:17.000000000 +0800 @@ -34,6 +34,11 @@ enum en { #include <enum_inc.h> }; + + enum class en2 { + #include <enum_inc.h> + reference = 42 + }; Q_OBJECT }; #endif diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/tools/moc/moc.pro qtbase-opensource-src-5.15.8+dfsg/tests/auto/tools/moc/moc.pro --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/tools/moc/moc.pro 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/tools/moc/moc.pro 2022-11-11 15:29:17.000000000 +0800 @@ -19,6 +19,7 @@ task234909.h task240368.h pure-virtual-signals.h cxx11-enums.h \ cxx11-final-classes.h \ cxx11-explicit-override-control.h \ + cxx11-trailing-return.h \ forward-declared-param.h \ parse-defines.h \ function-with-attributes.h \ diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/tools/moc/tst_moc.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/tools/moc/tst_moc.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/tools/moc/tst_moc.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/tools/moc/tst_moc.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -62,6 +62,7 @@ #include "cxx11-enums.h" #include "cxx11-final-classes.h" #include "cxx11-explicit-override-control.h" +#include "cxx11-trailing-return.h" #include "parse-defines.h" #include "related-metaobjects-in-namespaces.h" @@ -687,6 +688,7 @@ void privateClass(); void cxx11Enums_data(); void cxx11Enums(); + void cxx11TrailingReturn(); void returnRefs(); void memberProperties_data(); void memberProperties(); @@ -2200,6 +2202,30 @@ << QString() << QString("standard input:2: Error: Plugin Metadata file \"does.not.exists\" does not exist. Declaration will be ignored"); + QTest::newRow("Auto-declared, missing trailing return") + << QByteArray("class X { \n public slots: \n auto fun() { return 1; } };") + << QStringList() + << 1 + << QString() + << QString("standard input:3: Error: Function declared with auto as return type but missing trailing return type. Return type deduction is not supported."); + + QTest::newRow("Auto-declared, volatile auto as trailing return type") + << QByteArray("class X { \n public slots: \n auto fun() -> volatile auto { return 1; } };") + << QStringList() + << 1 + << QString() + << QString("standard input:3: Error: Function declared with auto as return type but missing trailing return type. Return type deduction is not supported."); + + // We don't currently support the decltype keyword, so it's not the same error as above. + // The test is just here to make sure this keeps generating an error until return type deduction + // is supported. + QTest::newRow("Auto-declared, decltype in trailing return type") + << QByteArray("class X { \n public slots: \n auto fun() -> decltype(0+1) { return 1; } };") + << QStringList() + << 1 + << QString() + << QString("standard input:3: Parse error at \"decltype\""); + #ifdef Q_OS_LINUX // Limit to Linux because the error message is platform-dependent QTest::newRow("Q_PLUGIN_METADATA: unreadable file") << QByteArray("class X { \n Q_PLUGIN_METADATA(FILE \".\") \n };") @@ -2329,6 +2355,18 @@ QCOMPARE(meta->enumerator(idx).isScoped(), isScoped); } +void tst_Moc::cxx11TrailingReturn() +{ + CXX11TrailingReturn retClass; + const QMetaObject *mobj = retClass.metaObject(); + QVERIFY(mobj->indexOfSlot("fun()") != -1); + QVERIFY(mobj->indexOfSlot("arguments(int,char)") != -1); + QVERIFY(mobj->indexOfSlot("inlineFunc(int)") != -1); + QVERIFY(mobj->indexOfSlot("constRefReturn()") != -1); + QVERIFY(mobj->indexOfSlot("constConstRefReturn()") != -1); + QVERIFY(mobj->indexOfSignal("trailingSignalReturn(int)") != -1); +} + void tst_Moc::returnRefs() { TestClass tst; diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/tools/uic/baseline/config.ui.py qtbase-opensource-src-5.15.8+dfsg/tests/auto/tools/uic/baseline/config.ui.py --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/tools/uic/baseline/config.ui.py 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/tools/uic/baseline/config.ui.py 2022-11-11 15:29:17.000000000 +0800 @@ -36,9 +36,9 @@ ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ -from PySide2.QtCore import * -from PySide2.QtGui import * -from PySide2.QtWidgets import * +from PySide2.QtCore import * # type: ignore +from PySide2.QtGui import * # type: ignore +from PySide2.QtWidgets import * # type: ignore from gammaview import GammaView diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -226,6 +226,21 @@ QCOMPARE(rootChanged.count(), oldCount + 1); QCOMPARE(model->rootDirectory().absolutePath(), newdir.path()); } + +#ifdef Q_OS_WIN + // check case insensitive root node on windows, tests QTBUG-71701 + QModelIndex index = model->setRootPath(QString("\\\\localhost\\c$")); + QVERIFY(index.isValid()); + QCOMPARE(model->rootPath(), QString("//localhost/c$")); + + index = model->setRootPath(QString("\\\\localhost\\C$")); + QVERIFY(index.isValid()); + QCOMPARE(model->rootPath(), QString("//localhost/C$")); + + index = model->setRootPath(QString("\\\\LOCALHOST\\C$")); + QVERIFY(index.isValid()); + QCOMPARE(model->rootPath(), QString("//LOCALHOST/C$")); +#endif } void tst_QFileSystemModel::readOnly() diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -223,6 +223,7 @@ void replayMouseMove(); void itemsUnderMouse(); void embeddedViews(); + void embeddedViewsWithFocus(); void scrollAfterResize_data(); void scrollAfterResize(); void moveItemWhileScrolling_data(); @@ -3519,6 +3520,60 @@ delete v1; } +/*! + Verify that a nested graphics view and embedded widgets receive window + activation and focus correctly. + + See QTBUG-94091. +*/ +void tst_QGraphicsView::embeddedViewsWithFocus() +{ + class FocusWidget : public QWidget + { + public: + FocusWidget() { setFocusPolicy(Qt::StrongFocus); } + QSize sizeHint() const override { return QSize(100, 100); } + + int focusCount = 0; + protected: + void mousePressEvent(QMouseEvent *) override {} // accept event to avoid warning + void focusInEvent(QFocusEvent *) override { ++focusCount; } + void focusOutEvent(QFocusEvent *) override { --focusCount; } + }; + + QGraphicsScene *innerScene = new QGraphicsScene; + FocusWidget *innerWidget = new FocusWidget; + innerScene->addWidget(innerWidget); + QGraphicsView *innerView = new QGraphicsView(innerScene); + + QGraphicsScene outerScene; + FocusWidget *outerWidget = new FocusWidget; + QGraphicsProxyWidget *outerProxy = outerScene.addWidget(outerWidget); + QGraphicsProxyWidget *nestedProxy = outerScene.addWidget(innerView); + outerProxy->setPos(0, 0); + nestedProxy->setPos(0, outerWidget->sizeHint().height()); + QGraphicsView outerView(&outerScene); + outerView.show(); + outerView.activateWindow(); + QVERIFY(QTest::qWaitForWindowActive(&outerView)); + const QPoint outerCenter(QPoint(innerWidget->sizeHint().width() / 2, + innerWidget->sizeHint().height() / 2)); + const QPoint innerCenter(outerCenter + QPoint(0, innerWidget->sizeHint().height())); + QCOMPARE(outerView.itemAt(outerCenter), outerProxy); + QCOMPARE(outerView.itemAt(innerCenter), nestedProxy); + QVERIFY(outerScene.isActive()); + QVERIFY(innerScene->isActive()); + + QCOMPARE(outerWidget->focusCount, 0); + QCOMPARE(innerWidget->focusCount, 0); + QTest::mouseClick(outerView.viewport(), Qt::LeftButton, {}, outerCenter); + QCOMPARE(outerWidget->focusCount, 1); + QCOMPARE(innerWidget->focusCount, 0); + QTest::mouseClick(outerView.viewport(), Qt::LeftButton, {}, innerCenter); + QCOMPARE(outerWidget->focusCount, 0); + QCOMPARE(innerWidget->focusCount, 1); +} + void tst_QGraphicsView::scrollAfterResize_data() { QTest::addColumn<bool>("reverse"); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -47,6 +47,7 @@ #include <QStringListModel> #include <QStyledItemDelegate> #include <QTableWidget> +#include <QTimer> #include <QTreeWidget> #include <QTest> #include <QVBoxLayout> @@ -150,6 +151,10 @@ void checkFocusAfterActivationChanges_data(); void checkFocusAfterActivationChanges(); void dragSelectAfterNewPress(); + void dragWithSecondClick_data(); + void dragWithSecondClick(); + void clickAfterDoubleClick(); + private: static QAbstractItemView *viewFromString(const QByteArray &viewType, QWidget *parent = nullptr) { @@ -2511,5 +2516,134 @@ QVERIFY(selected.contains(model.index(i, 0))); } +void tst_QAbstractItemView::dragWithSecondClick_data() +{ + QTest::addColumn<QString>("viewClass"); + QTest::addColumn<bool>("doubleClick"); + for (QString viewClass : {"QListView", "QTreeView"}) { + QTest::addRow("DoubleClick") << viewClass << true; + QTest::addRow("Two Single Clicks") << viewClass << false; + } +} + +// inject the ability to record which indexes get dragged into any QAbstractItemView class +struct DragRecorder +{ + virtual ~DragRecorder() = default; + bool dragStarted = false; + QModelIndexList draggedIndexes; + QAbstractItemView *view; +}; + +template<class ViewClass> +class DragRecorderView : public ViewClass, public DragRecorder +{ +public: + DragRecorderView() + { view = this; } +protected: + void startDrag(Qt::DropActions) override + { + draggedIndexes = ViewClass::selectedIndexes(); + dragStarted = true; + } +}; + +void tst_QAbstractItemView::dragWithSecondClick() +{ + QFETCH(QString, viewClass); + QFETCH(bool, doubleClick); + + QStandardItemModel model; + QStandardItem *parentItem = model.invisibleRootItem(); + for (int i = 0; i < 10; ++i) { + QStandardItem *item = new QStandardItem(QString("item %0").arg(i)); + item->setDragEnabled(true); + item->setEditable(false); + parentItem->appendRow(item); + } + + std::unique_ptr<DragRecorder> dragRecorder; + if (viewClass == "QTreeView") + dragRecorder.reset(new DragRecorderView<QTreeView>); + else if (viewClass == "QListView") + dragRecorder.reset(new DragRecorderView<QListView>); + + QAbstractItemView *view = dragRecorder->view; + view->setModel(&model); + view->setFixedSize(160, 650); // Minimum width for windows with frame on Windows 8 + view->setSelectionMode(QAbstractItemView::MultiSelection); + view->setDragDropMode(QAbstractItemView::InternalMove); + centerOnScreen(view); + moveCursorAway(view); + view->show(); + QVERIFY(QTest::qWaitForWindowExposed(view)); + + QModelIndex index0 = model.index(0, 0); + QModelIndex index1 = model.index(1, 0); + // Select item 0 using a single click + QTest::mouseClick(view->viewport(), Qt::LeftButton, Qt::NoModifier, + view->visualRect(index0).center()); + QCOMPARE(view->currentIndex(), index0); + + if (doubleClick) { + // press on same item within the double click interval + QTest::mouseDClick(view->viewport(), Qt::LeftButton, Qt::NoModifier, + view->visualRect(index0).center()); + } else { + // or on different item with a slow second press + QTest::mousePress(view->viewport(), Qt::LeftButton, Qt::NoModifier, + view->visualRect(index1).center()); + } + // then drag far enough with left button held + const QPoint dragTo = view->visualRect(index1).center() + + QPoint(2 * QApplication::startDragDistance(), + 2 * QApplication::startDragDistance()); + QMouseEvent mouseMoveEvent(QEvent::MouseMove, dragTo, + Qt::NoButton, Qt::LeftButton, Qt::NoModifier); + QVERIFY(QApplication::sendEvent(view->viewport(), &mouseMoveEvent)); + // twice since the view will first enter dragging state, then start the drag + // (not necessary to actually move the mouse) + QVERIFY(QApplication::sendEvent(view->viewport(), &mouseMoveEvent)); + QVERIFY(dragRecorder->dragStarted); + QTest::mouseRelease(view->viewport(), Qt::LeftButton, Qt::NoModifier, dragTo); +} + +void tst_QAbstractItemView::clickAfterDoubleClick() +{ + QTableWidget view(5, 5); + view.horizontalHeader()->hide(); + view.verticalHeader()->hide(); + view.setEditTriggers(QAbstractItemView::NoEditTriggers); + view.show(); + QVERIFY(QTest::qWaitForWindowExposed(&view)); + const QModelIndex index = view.model()->index(1, 1); + QVERIFY(index.isValid()); + const QPoint clickPoint = view.visualRect(index).center(); + + // must use the QWindow overloads so that modality is respected + QWindow *window = view.window()->windowHandle(); + int clickCount = 0; + + connect(&view, &QAbstractItemView::doubleClicked, [&]{ + QDialog dialog(&view); + dialog.setModal(true); + QTimer::singleShot(0, [&]{ dialog.close(); }); + dialog.exec(); + }); + connect(&view, &QAbstractItemView::clicked, [&]{ + ++clickCount; + }); + + QTest::mouseClick(window, Qt::LeftButton, {}, clickPoint); + QCOMPARE(clickCount, 1); + // generates a click followed by a double click; double click opens + // dialog that eats second release + QTest::mouseDClick(window, Qt::LeftButton, {}, clickPoint); + QCOMPARE(clickCount, 2); + QTest::mouseClick(window, Qt::LeftButton, {}, clickPoint); + QCOMPARE(clickCount, 3); +} + QTEST_MAIN(tst_QAbstractItemView) #include "tst_qabstractitemview.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -169,6 +169,8 @@ void itemAlignment(); void internalDragDropMove_data(); void internalDragDropMove(); + void scrollOnRemove_data(); + void scrollOnRemove(); }; // Testing get/set functions @@ -2550,6 +2552,7 @@ | Qt::ItemIsEditable | Qt::ItemIsDragEnabled; + const QStringList unchanged = QStringList{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; const QStringList reordered = QStringList{"0", "2", "3", "4", "5", "6", "7", "8", "9", "1"}; const QStringList replaced = QStringList{"0", "2", "3", "4", "1", "6", "7", "8", "9"}; @@ -2564,7 +2567,8 @@ << Qt::MoveAction << defaultFlags << modelMoves - << reordered; + // listview in IconMode doesn't change the model + << ((viewMode == QListView::IconMode && !modelMoves) ? unchanged : reordered); QTest::newRow((rowName + ", only move").constData()) << viewMode @@ -2573,7 +2577,8 @@ << Qt::MoveAction << defaultFlags << modelMoves - << reordered; + // listview in IconMode doesn't change the model + << ((viewMode == QListView::IconMode && !modelMoves) ? unchanged : reordered); QTest::newRow((rowName + ", replace item").constData()) << viewMode @@ -2719,5 +2724,72 @@ } +void tst_QListView::scrollOnRemove_data() +{ + QTest::addColumn<QListView::ViewMode>("viewMode"); + QTest::addColumn<QAbstractItemView::SelectionMode>("selectionMode"); + + const QMetaObject &mo = QListView::staticMetaObject; + const auto viewModeEnum = mo.enumerator(mo.indexOfEnumerator("ViewMode")); + const auto selectionModeEnum = mo.enumerator(mo.indexOfEnumerator("SelectionMode")); + for (auto viewMode : { QListView::ListMode, QListView::IconMode }) { + const char *viewModeName = viewModeEnum.valueToKey(viewMode); + for (int index = 0; index < selectionModeEnum.keyCount(); ++index) { + const auto selectionMode = QAbstractItemView::SelectionMode(selectionModeEnum.value(index)); + const char *selectionModeName = selectionModeEnum.valueToKey(selectionMode); + QTest::addRow("%s, %s", viewModeName, selectionModeName) << viewMode << selectionMode; + } + } +} + +void tst_QListView::scrollOnRemove() +{ + QFETCH(QListView::ViewMode, viewMode); + QFETCH(QAbstractItemView::SelectionMode, selectionMode); + + QPixmap pixmap; + if (viewMode == QListView::IconMode) { + pixmap = QPixmap(25, 25); + pixmap.fill(Qt::red); + } + + QStandardItemModel model; + for (int i = 0; i < 50; ++i) { + QStandardItem *item = new QStandardItem(QString::number(i)); + item->setIcon(pixmap); + model.appendRow(item); + } + + QWidget widget; + QListView view(&widget); + view.setFixedSize(100, 100); + view.setAutoScroll(true); + if (viewMode == QListView::IconMode) + view.setWrapping(true); + view.setModel(&model); + view.setSelectionMode(selectionMode); + view.setViewMode(viewMode); + + widget.show(); + QVERIFY(QTest::qWaitForWindowExposed(&widget)); + + QCOMPARE(view.verticalScrollBar()->value(), 0); + const QModelIndex item25 = model.index(25, 0); + view.scrollTo(item25); + QTRY_VERIFY(view.verticalScrollBar()->value() > 0); // layout and scrolling are delayed + const int item25Position = view.verticalScrollBar()->value(); + // selecting a fully visible item shouldn't scroll + view.selectionModel()->setCurrentIndex(item25, QItemSelectionModel::SelectCurrent); + QTRY_COMPARE(view.verticalScrollBar()->value(), item25Position); + + // removing the selected item might scroll if another item is selected + model.removeRow(25); + + // if nothing is selected now, then the view should not have scrolled + if (!view.selectionModel()->selectedIndexes().count()) + QTRY_COMPARE(view.verticalScrollBar()->value(), item25Position); +} + + QTEST_MAIN(tst_QListView) #include "tst_qlistview.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -241,6 +241,7 @@ void taskQTBUG_7232_AllowUserToControlSingleStep(); void taskQTBUG_8376(); void taskQTBUG_61476(); + void taskQTBUG_42469_crash(); void testInitialFocus(); void fetchUntilScreenFull(); }; @@ -4966,6 +4967,29 @@ QCOMPARE(lastTopLevel->checkState(), Qt::Checked); } +void tst_QTreeView::taskQTBUG_42469_crash() +{ + QTreeWidget treeWidget; + QTreeWidgetItem *itemOne = new QTreeWidgetItem(QStringList("item1")); + QTreeWidgetItem *itemTwo = new QTreeWidgetItem(QStringList("item2")); + treeWidget.addTopLevelItem(itemOne); + treeWidget.addTopLevelItem(itemTwo); + treeWidget.topLevelItem(1)->addChild(new QTreeWidgetItem(QStringList("child1"))); + + treeWidget.setAnimated(true); + QObject::connect(&treeWidget, &QTreeWidget::itemExpanded, [&](QTreeWidgetItem* p_item) { + auto tempCount = treeWidget.topLevelItemCount(); + for (int j = 0; j < tempCount; ++j) + if (treeWidget.topLevelItem(j) != p_item) { + auto temp = treeWidget.topLevelItem(j); + temp->setHidden(true); + } + }); + + treeWidget.show(); + itemTwo->setExpanded(true); +} + void tst_QTreeView::fetchUntilScreenFull() { class TreeModel : public QAbstractItemModel diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -151,6 +151,7 @@ void getMimeDataWithInvalidItem(); void testVisualItemRect(); void reparentHiddenItem(); + void persistentChildIndex(); #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) void clearItemData(); #endif @@ -3597,6 +3598,21 @@ QVERIFY(grandChild->isHidden()); } +void tst_QTreeWidget::persistentChildIndex() // QTBUG-90030 +{ + QTreeWidget tree; + QTreeWidgetItem *toplevel = new QTreeWidgetItem(QStringList{QStringLiteral("toplevel")}); + tree.addTopLevelItem(toplevel); + QModelIndex firstIndex = tree.model()->index(0, 0); + QTreeWidgetItem *child1 = new QTreeWidgetItem(QStringList{QStringLiteral("child1")}); + QTreeWidgetItem *child2 = new QTreeWidgetItem(QStringList{QStringLiteral("child2")}); + toplevel->addChildren({child1, child2}); + QPersistentModelIndex persistentIdx = tree.model()->index(1, 0, firstIndex); + QCOMPARE(persistentIdx.data().toString(), QStringLiteral("child2")); + tree.model()->removeRows(0, 1, firstIndex); + QCOMPARE(persistentIdx.data().toString(), QStringLiteral("child2")); +} + #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) void tst_QTreeWidget::clearItemData() { diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1493,6 +1493,11 @@ { #if QT_CONFIG(process) QProcess testProcess; +#ifdef Q_OS_MACOS + QStringList environment = QProcess::systemEnvironment(); + environment += QLatin1String("QT_MAC_DISABLE_FOREGROUND_APPLICATION_TRANSFORM=1"); + testProcess.setEnvironment(environment); +#endif testProcess.start("desktopsettingsaware_helper"); QVERIFY2(testProcess.waitForStarted(), qPrintable(QString::fromLatin1("Cannot start 'desktopsettingsaware_helper': %1").arg(testProcess.errorString()))); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qgesturerecognizer/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qgesturerecognizer/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qgesturerecognizer/BLACKLIST 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qgesturerecognizer/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,3 @@ +# See qtbase/src/testlib/qtestblacklist.cpp for format +[panGesture] +linux diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -75,6 +75,7 @@ void taskQTBUG_40609_addingWidgetToItsOwnLayout(); void taskQTBUG_40609_addingLayoutToItself(); void taskQTBUG_52357_spacingWhenItemIsHidden(); + void taskQTBUG_91261_itemIndexRange(); void replaceWidget(); void dontCrashWhenExtendsToEnd(); }; @@ -1666,6 +1667,56 @@ QTRY_COMPARE_WITH_TIMEOUT(tempWidth, button1.width() + button3.width() + layout.spacing(), 1000); } +void tst_QGridLayout::taskQTBUG_91261_itemIndexRange() +{ + QWidget widget; + QGridLayout lay(&widget); + QPushButton *btn = new QPushButton(&widget); + lay.addWidget(btn, 0, 0); + + { + auto ptr = lay.itemAt(-1); + QCOMPARE(ptr, nullptr); + + ptr = lay.itemAt(0); + QCOMPARE(ptr->widget(), btn); + + ptr = lay.itemAt(1); + QCOMPARE(ptr, nullptr); + } + + { + int row = -1; + int column = -1; + int rowSpan; + int columnSpan; + + lay.getItemPosition(-1, &row, &column, &rowSpan, &columnSpan); + QCOMPARE(row, -1); + QCOMPARE(column, -1); + + lay.getItemPosition(1, &row, &column, &rowSpan, &columnSpan); + QCOMPARE(row, -1); + QCOMPARE(column, -1); + + lay.getItemPosition(0, &row, &column, &rowSpan, &columnSpan); + QCOMPARE(row, 0); + QCOMPARE(column, 0); + } + + { + auto ptr = lay.takeAt(-1); + QCOMPARE(ptr, nullptr); + + ptr = lay.takeAt(1); + QCOMPARE(ptr, nullptr); + + ptr = lay.takeAt(0); + QCOMPARE(ptr->widget(), btn); + delete ptr; + } +} + void tst_QGridLayout::replaceWidget() { QWidget wdg; diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -69,6 +69,7 @@ void controlTypes2(); void adjustSizeShouldMakeSureLayoutIsActivated(); void testRetainSizeWhenHidden(); + void removeWidget(); }; tst_QLayout::tst_QLayout() @@ -381,5 +382,28 @@ QCOMPARE(widget.sizeHint().height(), normalHeight); } +void tst_QLayout::removeWidget() +{ + QHBoxLayout layout; + QCOMPARE(layout.count(), 0); + QWidget w; + layout.addWidget(&w); + QCOMPARE(layout.count(), 1); + layout.removeWidget(&w); + QCOMPARE(layout.count(), 0); + + QPointer<QLayout> childLayout(new QHBoxLayout); + layout.addLayout(childLayout); + QCOMPARE(layout.count(), 1); + + layout.removeWidget(nullptr); + QCOMPARE(layout.count(), 1); + + layout.removeItem(childLayout); + QCOMPARE(layout.count(), 0); + + QVERIFY(!childLayout.isNull()); +} + QTEST_MAIN(tst_QLayout) #include "tst_qlayout.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qwidget/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qwidget/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qwidget/BLACKLIST 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qwidget/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -12,6 +12,7 @@ rhel-7.6 opensuse-leap ubuntu +sles [raise] opensuse-leap # QTBUG-68175 @@ -24,6 +25,8 @@ osx [optimizedResize_topLevel] osx +[render_windowOpacity] +macos arm [render_systemClip] osx [showMinimizedKeepsFocus] @@ -37,6 +40,7 @@ rhel-7.6 opensuse-leap ubuntu +sles-15 [windowState] # QTBUG-75270 winrt diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -186,6 +186,7 @@ void defaultTabOrder(); void reverseTabOrder(); void tabOrderWithProxy(); + void tabOrderWithProxyDisabled(); void tabOrderWithCompoundWidgets(); void tabOrderWithCompoundWidgetsNoFocusPolicy(); void tabOrderNoChange(); @@ -366,6 +367,8 @@ void focusWidget_task254563(); void rectOutsideCoordinatesLimit_task144779(); void setGraphicsEffect(); + void render_graphicsEffect_data(); + void render_graphicsEffect(); #ifdef QT_BUILD_INTERNAL void destroyBackingStore(); @@ -421,6 +424,8 @@ void receivesLanguageChangeEvent(); void deleteWindowInCloseEvent(); + void activateWhileModalHidden(); + private: bool ensureScreenSize(int width, int height); @@ -2004,6 +2009,57 @@ QVERIFY(firstEdit->hasFocus()); } +void tst_QWidget::tabOrderWithProxyDisabled() +{ + Container container; + container.setWindowTitle(QLatin1String(QTest::currentTestFunction())); + + QLineEdit lineEdit1; + lineEdit1.setObjectName("lineEdit1"); + + QWidget containingWidget; + containingWidget.setFocusPolicy(Qt::StrongFocus); + auto *containingLayout = new QVBoxLayout; + QLineEdit lineEdit2; + lineEdit2.setObjectName("lineEdit2"); + QLineEdit lineEdit3; + lineEdit3.setObjectName("lineEdit3"); + containingLayout->addWidget(&lineEdit2); + containingLayout->addWidget(&lineEdit3); + containingWidget.setLayout(containingLayout); + containingWidget.setFocusProxy(&lineEdit2); + lineEdit2.setEnabled(false); + + container.box->addWidget(&lineEdit1); + container.box->addWidget(&containingWidget); + + container.show(); + container.activateWindow(); + + QApplication::setActiveWindow(&container); + if (!QTest::qWaitForWindowActive(&container)) + QSKIP("Window failed to activate, skipping test"); + + QVERIFY2(lineEdit1.hasFocus(), + qPrintable(QApplication::focusWidget()->objectName())); + container.tab(); + QVERIFY2(!lineEdit2.hasFocus(), + qPrintable(QApplication::focusWidget()->objectName())); + QVERIFY2(lineEdit3.hasFocus(), + qPrintable(QApplication::focusWidget()->objectName())); + container.tab(); + QVERIFY2(lineEdit1.hasFocus(), + qPrintable(QApplication::focusWidget()->objectName())); + container.backTab(); + QVERIFY2(lineEdit3.hasFocus(), + qPrintable(QApplication::focusWidget()->objectName())); + container.backTab(); + QVERIFY2(!lineEdit2.hasFocus(), + qPrintable(QApplication::focusWidget()->objectName())); + QVERIFY2(lineEdit1.hasFocus(), + qPrintable(QApplication::focusWidget()->objectName())); +} + void tst_QWidget::tabOrderWithCompoundWidgets() { if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) @@ -10094,6 +10150,157 @@ QVERIFY(!blurEffect); } + +class TestGraphicsEffect : public QGraphicsEffect +{ +public: + TestGraphicsEffect(QObject *parent = nullptr) + : QGraphicsEffect(parent) + { + m_pattern = QPixmap(10, 10); + m_pattern.fill(Qt::lightGray); + QPainter p(&m_pattern); + p.fillRect(QRectF(0, 0, 5, 5), QBrush(Qt::darkGray)); + p.fillRect(QRectF(5, 5, 5, 5), QBrush(Qt::darkGray)); + } + void setExtent(int extent) + { + m_extent = extent; + } + QRectF boundingRectFor(const QRectF &sr) const override + { + return QRectF(sr.x() - m_extent, sr.y() - m_extent, + sr.width() + 2 * m_extent, sr.height() + 2 * m_extent); + } +protected: + void draw(QPainter *painter) override + { + QBrush brush; + brush.setTexture(m_pattern); + brush.setStyle(Qt::TexturePattern); + QPaintDevice *p = painter->device(); + painter->fillRect(QRect(-m_extent, -m_extent, + p->width() + m_extent, p->height() + m_extent), brush); + } + QPixmap m_pattern; + int m_extent = 0; +}; + +static QImage fillExpected1() +{ + QImage expected(QSize(40, 40), QImage::Format_RGB32); + QPainter p(&expected); + p.fillRect(QRect{{0, 0}, expected.size()}, QBrush(Qt::gray)); + p.fillRect(QRect(10, 10, 10, 10), QBrush(Qt::red)); + p.fillRect(QRect(20, 20, 10, 10), QBrush(Qt::blue)); + return expected; +} +static QImage fillExpected2() +{ + QImage expected = fillExpected1(); + QPainter p(&expected); + p.fillRect(QRect(10, 10, 5, 5), QBrush(Qt::darkGray)); + p.fillRect(QRect(15, 15, 5, 5), QBrush(Qt::darkGray)); + p.fillRect(QRect(15, 10, 5, 5), QBrush(Qt::lightGray)); + p.fillRect(QRect(10, 15, 5, 5), QBrush(Qt::lightGray)); + return expected; +} +static QImage fillExpected3() +{ + QImage expected(QSize(40, 40), QImage::Format_RGB32); + QPixmap pattern; + pattern = QPixmap(10, 10); + pattern.fill(Qt::lightGray); + QPainter p(&pattern); + p.fillRect(QRectF(0, 0, 5, 5), QBrush(Qt::darkGray)); + p.fillRect(QRectF(5, 5, 5, 5), QBrush(Qt::darkGray)); + QBrush brush; + brush.setTexture(pattern); + brush.setStyle(Qt::TexturePattern); + QPainter p2(&expected); + p2.fillRect(QRect{{0, 0}, expected.size()}, brush); + return expected; +} +static QImage fillExpected4() +{ + QImage expected = fillExpected1(); + QPixmap pattern; + pattern = QPixmap(10, 10); + pattern.fill(Qt::lightGray); + QPainter p(&pattern); + p.fillRect(QRectF(0, 0, 5, 5), QBrush(Qt::darkGray)); + p.fillRect(QRectF(5, 5, 5, 5), QBrush(Qt::darkGray)); + QBrush brush; + brush.setTexture(pattern); + brush.setStyle(Qt::TexturePattern); + QPainter p2(&expected); + p2.fillRect(QRect{{15, 15}, QSize{20, 20}}, brush); + return expected; +} + +void tst_QWidget::render_graphicsEffect_data() +{ + QTest::addColumn<QImage>("expected"); + QTest::addColumn<bool>("topLevelEffect"); + QTest::addColumn<bool>("child1Effect"); + QTest::addColumn<bool>("child2Effect"); + QTest::addColumn<int>("extent"); + + QTest::addRow("no_effect") << fillExpected1() << false << false << false << 0; + QTest::addRow("first_child_effect") << fillExpected2() << false << true << false << 0; + QTest::addRow("top_level_effect") << fillExpected3() << true << false << false << 0; + QTest::addRow("effect_with_extent") << fillExpected4() << false << false << true << 5; +} + +void tst_QWidget::render_graphicsEffect() +{ + QFETCH(QImage, expected); + QFETCH(bool, topLevelEffect); + QFETCH(bool, child1Effect); + QFETCH(bool, child2Effect); + QFETCH(int, extent); + + QScopedPointer<QWidget> topLevel(new QWidget); + topLevel->setPalette(Qt::gray); + topLevel->resize(40, 40); + topLevel->setWindowTitle(QLatin1String(QTest::currentTestFunction()) + QLatin1String("::") + + QLatin1String(QTest::currentDataTag())); + + // Render widget with 2 child widgets + QImage image(topLevel->size(), QImage::Format_RGB32); + image.fill(QColor(Qt::gray).rgb()); + + QPainter painter(&image); + + QWidget *childWidget1(new QWidget(topLevel.data())); + childWidget1->setAutoFillBackground(true); + childWidget1->setPalette(Qt::red); + childWidget1->resize(10, 10); + childWidget1->move(10, 10); + QWidget *childWidget2(new QWidget(topLevel.data())); + childWidget2->setAutoFillBackground(true); + childWidget2->setPalette(Qt::blue); + childWidget2->resize(10, 10); + childWidget2->move(20, 20); + + TestGraphicsEffect *graphicsEffect(new TestGraphicsEffect(topLevel.data())); + if (topLevelEffect) + topLevel->setGraphicsEffect(graphicsEffect); + if (child1Effect) + childWidget1->setGraphicsEffect(graphicsEffect); + if (child2Effect) + childWidget2->setGraphicsEffect(graphicsEffect); + graphicsEffect->setExtent(extent); + + // Render without effect + topLevel->render(&painter); +#ifdef RENDER_DEBUG + image.save("render_GraphicsEffect" + QTest::currentDataTag() + ".png"); + expected.save("render_GraphicsEffect_expected" + QTest::currentDataTag() + ".png"); +#endif + QCOMPARE(image, expected); +} + void tst_QWidget::activateWindow() { if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) @@ -11803,5 +12010,24 @@ QVERIFY(true); } +void tst_QWidget::activateWhileModalHidden() +{ + QDialog dialog; + dialog.setWindowModality(Qt::ApplicationModal); + dialog.show(); + QVERIFY(QTest::qWaitForWindowActive(&dialog)); + QVERIFY(dialog.isActiveWindow()); + QCOMPARE(QApplication::activeWindow(), &dialog); + + dialog.hide(); + QTRY_VERIFY(!dialog.isVisible()); + + QMainWindow window; + window.show(); + QVERIFY(QTest::qWaitForWindowActive(&window)); + QVERIFY(window.isActiveWindow()); + QCOMPARE(QApplication::activeWindow(), &window); +} + QTEST_MAIN(tst_QWidget) #include "tst_qwidget.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qwidget_window/BLACKLIST qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qwidget_window/BLACKLIST --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qwidget_window/BLACKLIST 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qwidget_window/BLACKLIST 2022-11-11 15:29:17.000000000 +0800 @@ -5,3 +5,7 @@ [mouseMoveWithPopup] winrt + +# QTBUG-96270 +[tst_paintEventOnSecondShow] +opensuse diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -405,6 +405,7 @@ { PaintTestWidget w; w.show(); + QVERIFY(QTest::qWaitForWindowExposed(&w)); w.hide(); w.paintEventCount = 0; diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/util/qcompleter/tst_qcompleter.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/util/qcompleter/tst_qcompleter.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/util/qcompleter/tst_qcompleter.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/util/qcompleter/tst_qcompleter.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -113,6 +113,8 @@ #endif void fileSystemModel_data(); void fileSystemModel(); + void fileDialog_data(); + void fileDialog(); void changingModel_data(); void changingModel(); @@ -695,7 +697,26 @@ #ifdef Q_OS_WINRT QSKIP("WinRT cannot access directories outside of the application's sandbox"); #endif - //QFileSystemModel is assync. + //QFileSystemModel is async. + filter(true); +} + +/*! + In the file dialog, the completer uses the EditRole. + See QTBUG-94799 +*/ +void tst_QCompleter::fileDialog_data() +{ + fileSystemModel_data(); + completer->setCompletionRole(Qt::EditRole); +} + +void tst_QCompleter::fileDialog() +{ +#ifdef Q_OS_WINRT + QSKIP("WinRT cannot access directories outside of the application's sandbox"); +#endif + //QFileSystemModel is async. filter(true); } diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qabstractscrollarea/tst_qabstractscrollarea.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qabstractscrollarea/tst_qabstractscrollarea.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qabstractscrollarea/tst_qabstractscrollarea.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qabstractscrollarea/tst_qabstractscrollarea.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -37,6 +37,7 @@ #include <qlabel.h> #include <qwidget.h> #include <qdialog.h> +#include <qscroller.h> class tst_QAbstractScrollArea : public QObject { @@ -57,6 +58,7 @@ void task214488_layoutDirection(); void margins(); + void resizeWithOvershoot(); }; tst_QAbstractScrollArea::tst_QAbstractScrollArea() @@ -398,5 +400,42 @@ QCOMPARE(area.viewportMargins(), margins); } +void tst_QAbstractScrollArea::resizeWithOvershoot() +{ + QWidget window; + + QScrollArea scrollArea(&window); + scrollArea.setWidget([]{ + QWidget *widget = new QWidget; + widget->setFixedSize(QSize(0, 200)); + return widget; + }()); + scrollArea.setGeometry(0, 20, 100, 100); + + QScroller::grabGesture(&scrollArea, QScroller::LeftMouseButtonGesture); + + window.show(); + QVERIFY(QTest::qWaitForWindowExposed(&window)); + + const QPoint originAtRest = scrollArea.viewport()->pos(); + + QPoint center = scrollArea.viewport()->mapToGlobal(scrollArea.viewport()->rect().center()); + center = window.windowHandle()->mapFromGlobal(center); + QTest::mousePress(window.windowHandle(), Qt::LeftButton, {}, center); + QTest::mouseMove(window.windowHandle(), center + QPoint(0, 50)); + QTRY_COMPARE(scrollArea.viewport()->pos(), originAtRest + QPoint(0, 25)); + QPoint overshootPosition = scrollArea.viewport()->pos(); + + // trigger a layout of the scroll area while there's overshoot + scrollArea.setGeometry(0, 0, 100, 120); + QCOMPARE(scrollArea.viewport()->pos(), overshootPosition); + QTest::mouseRelease(window.windowHandle(), Qt::LeftButton, {}, center + QPoint(0, 50)); + QTRY_COMPARE(scrollArea.viewport()->pos(), originAtRest); + // Process a few more events and verify that the scroll area + // doesn't overcompensate for the overshoot. + QApplication::processEvents(); + QTRY_COMPARE(scrollArea.viewport()->pos(), originAtRest); +} + QTEST_MAIN(tst_QAbstractScrollArea) #include "tst_qabstractscrollarea.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -167,6 +167,7 @@ void task_QTBUG_52027_mapCompleterIndex(); void checkMenuItemPosWhenStyleSheetIsSet(); void checkEmbeddedLineEditWhenStyleSheetIsSet(); + void propagateStyleChanges(); private: PlatformInputContext m_platformInputContext; @@ -3586,5 +3587,50 @@ qApp->setStyleSheet(oldCss); } +/*! + Tests that the style-based frame style propagates to the internal container + widget of QComboBox when the style changes by verifying that the respective + styleHint is asked for when the style changes. + + See QTBUG-92488 +*/ +void tst_QComboBox::propagateStyleChanges() +{ + class FrameStyle : public QProxyStyle + { + public: + FrameStyle(int frameStyle, QStyle *style = nullptr) + : QProxyStyle(style), frameStyle(frameStyle) + {} + + int styleHint(QStyle::StyleHint hint, const QStyleOption *opt, + const QWidget *widget, QStyleHintReturn *returnData) const + { + if (hint == QStyle::SH_ComboBox_PopupFrameStyle) { + inquired = true; + return frameStyle; + } + return QProxyStyle::styleHint(hint, opt, widget, returnData); + } + + int frameStyle; + mutable bool inquired = false; + }; + + FrameStyle framelessStyle(QFrame::NoFrame); + FrameStyle frameStyle(QFrame::Plain | QFrame::Sunken); + + QComboBox combo; + // container will be created and take settings from this style + combo.setStyle(&framelessStyle); + QVERIFY(framelessStyle.inquired); + combo.addItem(QLatin1String("Open")); + combo.addItem(QLatin1String("Close")); + // needed because of QComboBox's adjustSizeTimer not doing anything otherwise + combo.setSizeAdjustPolicy(QComboBox::AdjustToContents); + combo.setStyle(&frameStyle); + QVERIFY(frameStyle.inquired); +} + QTEST_MAIN(tst_QComboBox) #include "tst_qcombobox.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. @@ -1370,19 +1370,19 @@ QFETCH(QString, userInput); QFETCH(QDateTime, expected); - QDateTimeEdit *edit; + QScopedPointer<QDateTimeEdit> edit; if (minTime.isValid()) { - edit = new QDateTimeEdit; + edit.reset(new QDateTimeEdit); edit->setDisplayFormat("dd.MM.yyyy hh:mm"); edit->setDateTimeRange(QDateTime(minDate, minTime), QDateTime(maxDate, maxTime)); } else { - edit = new QDateEdit; + edit.reset(new QDateEdit); edit->setDisplayFormat("dd.MM.yyyy"); edit->setDateRange(minDate, maxDate); } int callCount = 0; - connect(edit, &QDateTimeEdit::dateTimeChanged, [&](const QDateTime &dateTime) { + connect(edit.get(), &QDateTimeEdit::dateTimeChanged, [&](const QDateTime &dateTime) { ++callCount; if (minTime.isValid()) { QVERIFY(dateTime >= QDateTime(minDate, minTime)); @@ -1394,15 +1394,15 @@ }); edit->show(); - QApplication::setActiveWindow(edit); - if (!QTest::qWaitForWindowActive(edit)) + QApplication::setActiveWindow(edit.get()); + if (!QTest::qWaitForWindowActive(edit.get())) QSKIP("Failed to make window active, aborting"); edit->setFocus(); // with keyboard tracking, never get a signal with an out-of-range value edit->setKeyboardTracking(true); - QTest::keyClicks(edit, userInput); - QTest::keyClick(edit, Qt::Key_Return); + QTest::keyClicks(edit.get(), userInput); + QTest::keyClick(edit.get(), Qt::Key_Return); QVERIFY(callCount > 0); // QDateTimeEdit blocks these dates from being entered - see QTBUG-65 @@ -1418,12 +1418,10 @@ callCount = 0; edit->setKeyboardTracking(false); - QTest::keyClicks(edit, userInput); - QTest::keyClick(edit, Qt::Key_Return); + QTest::keyClicks(edit.get(), userInput); + QTest::keyClick(edit.get(), Qt::Key_Return); QCOMPARE(edit->dateTime(), expected); QCOMPARE(callCount, 1); - - delete edit; } void tst_QDateTimeEdit::wrappingTime_data() @@ -3807,7 +3805,6 @@ { { // setup - QCalendarWidget *cw = 0; QDateEdit edit; QVERIFY(!edit.calendarWidget()); edit.setCalendarPopup(true); @@ -3815,8 +3812,7 @@ edit.calendarWidget()->setObjectName("cw1");; // delete - cw = edit.calendarWidget(); - delete cw; + delete edit.calendarWidget(); // it should create a new widget QVERIFY(edit.calendarWidget()); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -261,15 +261,18 @@ // protected void currentFontChanged(QFont const& f) void tst_QFontComboBox::currentFontChanged() { - SubQFontComboBox box; - QSignalSpy spy0(&box, SIGNAL(currentFontChanged(QFont))); + // The absence of this file does not affect the test results + QFontDatabase::addApplicationFont("ArianaVioleta-dz2K.ttf"); - if (box.model()->rowCount() > 2) { - QTest::keyPress(&box, Qt::Key_Down); + SubQFontComboBox *box = new SubQFontComboBox; + QSignalSpy spy0(box, SIGNAL(currentFontChanged(QFont))); + + if (box->model()->rowCount() > 2) { + QTest::keyPress(box, Qt::Key_Down); QCOMPARE(spy0.count(), 1); QFont f( "Sans Serif" ); - box.setCurrentFont(f); + box->setCurrentFont(f); QCOMPARE(spy0.count(), 2); } else qWarning("Not enough fonts installed on test system. Consider adding some"); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -292,6 +292,7 @@ void clearButtonVisibleAfterSettingText_QTBUG_45518(); void sideWidgets(); void sideWidgetsActionEvents(); + void sideWidgetsEffectiveMargins(); void shouldShowPlaceholderText_data(); void shouldShowPlaceholderText(); @@ -4646,6 +4647,71 @@ QCOMPARE(toolButton2->x(), toolButton1X); } +/*! + Verify that side widgets are positioned correctly and result in + correct effective text margins. +*/ +void tst_QLineEdit::sideWidgetsEffectiveMargins() +{ +#ifndef QT_BUILD_INTERNAL + QSKIP("This test requires a developer build."); +#else + QLineEdit edit; + edit.setPlaceholderText("placeholder"); + edit.setClearButtonEnabled(true); + edit.show(); + QLineEditPrivate *priv = QLineEditPrivate::get(&edit); + const auto sideWidgetParameters = priv->sideWidgetParameters(); + const int sideWidgetWidth = sideWidgetParameters.widgetWidth + sideWidgetParameters.margin; + QVERIFY(QTest::qWaitForWindowExposed(&edit)); + + QCOMPARE(priv->effectiveTextMargins().left(), 0); + QCOMPARE(priv->effectiveTextMargins().right(), 0); + + edit.setText("Left to right"); // clear button fades in on the right + QCOMPARE(priv->effectiveTextMargins().left(), 0); + QCOMPARE(priv->effectiveTextMargins().right(), sideWidgetWidth); + edit.clear(); + QCOMPARE(priv->effectiveTextMargins().left(), 0); + QCOMPARE(priv->effectiveTextMargins().right(), 0); + + edit.setLayoutDirection(Qt::RightToLeft); + edit.setText("ئۇيغۇر تىلى"); // clear button fades in on the left + QCOMPARE(priv->effectiveTextMargins().left(), sideWidgetWidth); + QCOMPARE(priv->effectiveTextMargins().right(), 0); + edit.clear(); + QCOMPARE(priv->effectiveTextMargins().left(), 0); + QCOMPARE(priv->effectiveTextMargins().right(), 0); + + edit.setLayoutDirection(Qt::LeftToRight); + + const QIcon leftIcon = edit.style()->standardIcon(QStyle::SP_FileIcon); + const QIcon rightIcon = edit.style()->standardIcon(QStyle::SP_DirIcon); + edit.addAction(leftIcon, QLineEdit::ActionPosition::LeadingPosition); + QCOMPARE(priv->effectiveTextMargins().left(), sideWidgetWidth); + QCOMPARE(priv->effectiveTextMargins().right(), 0); + + edit.addAction(rightIcon, QLineEdit::ActionPosition::TrailingPosition); + QCOMPARE(priv->effectiveTextMargins().left(), sideWidgetWidth); + QCOMPARE(priv->effectiveTextMargins().right(), sideWidgetWidth); + + edit.setText("Left to right"); // clear button on the right + QCOMPARE(priv->effectiveTextMargins().left(), sideWidgetWidth); + QCOMPARE(priv->effectiveTextMargins().right(), 2 * sideWidgetWidth); + edit.clear(); + QCOMPARE(priv->effectiveTextMargins().left(), sideWidgetWidth); + QCOMPARE(priv->effectiveTextMargins().right(), sideWidgetWidth); + + edit.setLayoutDirection(Qt::RightToLeft); + edit.setText("ئۇيغۇر تىلى"); // clear button fades in on the left + QCOMPARE(priv->effectiveTextMargins().left(), 2 * sideWidgetWidth); + QCOMPARE(priv->effectiveTextMargins().right(), sideWidgetWidth); + edit.clear(); + QCOMPARE(priv->effectiveTextMargins().left(), sideWidgetWidth); + QCOMPARE(priv->effectiveTextMargins().right(), sideWidgetWidth); +#endif +} + Q_DECLARE_METATYPE(Qt::AlignmentFlag) void tst_QLineEdit::shouldShowPlaceholderText_data() { diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ @@ -282,6 +282,8 @@ void nativeSubWindows(); void task_209615(); void task_236750(); + void qtbug92240_title_data(); + void qtbug92240_title(); private: QMdiSubWindow *activeWindow; @@ -2749,6 +2751,45 @@ subWindow->showMinimized(); } +// QTBUG-92240: When subwindows are maximized, their title is supposed to +// appear on the main window. When DontMaximizeSubWindowOnActivation was set, +// titles of previously created maximized windows interfered, resulting in +// "QTBUG-92240 - [1] - [2]". +void tst_QMdiArea::qtbug92240_title_data() +{ + QTest::addColumn<bool>("dontMaximize"); + QTest::newRow("default") << false; + QTest::newRow("dontMaximize") << true; +} + +void tst_QMdiArea::qtbug92240_title() +{ + QFETCH(bool, dontMaximize); + +#ifdef Q_OS_MACOS + QSKIP("Not supported on macOS"); +#endif + + QMainWindow w; + const QString title = QStringLiteral("QTBUG-92240"); + w.setWindowTitle(title); + w.menuBar()->addMenu(QStringLiteral("File")); + w.show(); + + auto *mdiArea = new QMdiArea; + w.setCentralWidget(mdiArea); + if (dontMaximize) + mdiArea->setOption(QMdiArea::DontMaximizeSubWindowOnActivation); + auto *sw1 = mdiArea->addSubWindow(new QWidget); + sw1->setWindowTitle(QStringLiteral("1")); + sw1->showMaximized(); + QTRY_COMPARE(w.windowTitle(), QLatin1String("QTBUG-92240 - [1]")); + auto *sw2 = mdiArea->addSubWindow(new QWidget); + sw2->setWindowTitle(QStringLiteral("2")); + sw2->showMaximized(); + QTRY_COMPARE(w.windowTitle(), QLatin1String("QTBUG-92240 - [2]")); +} + QTEST_MAIN(tst_QMdiArea) #include "tst_qmdiarea.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -174,7 +174,9 @@ tst_QMenu::tst_QMenu() : m_onStatusTipTimerExecuted(false) { + QApplication::setEffectEnabled(Qt::UI_FadeTooltip, false); QApplication::setEffectEnabled(Qt::UI_AnimateMenu, false); + QApplication::setEffectEnabled(Qt::UI_AnimateTooltip, false); } void tst_QMenu::initTestCase() diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -68,6 +68,7 @@ void taskQTBUG_20191_shortcutWithKeypadModifer(); void emitReleasedAfterChange(); void hitButton(); + void iconOnlyStyleSheet(); protected slots: void resetCounters(); @@ -695,5 +696,22 @@ QVERIFY(!button2->hitButton(QPoint(2, 2))); } +/* + Test that a style sheet with only icon doesn't crash. + QTBUG-91735 +*/ +void tst_QPushButton::iconOnlyStyleSheet() +{ + QIcon icon(":/qt-project.org/styles/commonstyle/images/dvd-32.png"); + QVERIFY(!icon.isNull()); + QPushButton pb; + pb.setStyleSheet("QPushButton {" + "icon: url(:/qt-project.org/styles/commonstyle/images/dvd-32.png);" + "border: red;" + "}"); + pb.show(); + QVERIFY(QTest::qWaitForWindowExposed(&pb)); +} + QTEST_MAIN(tst_QPushButton) #include "tst_qpushbutton.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -33,6 +33,7 @@ #include <qdebug.h> #include <qscrollarea.h> #include <qlayout.h> +#include <qscrollbar.h> class tst_QScrollArea : public QObject { @@ -46,6 +47,7 @@ void getSetCheck(); void ensureMicroFocusVisible_Task_167838(); void checkHFW_Task_197736(); + void stableHeightForWidth(); }; tst_QScrollArea::tst_QScrollArea() @@ -165,5 +167,61 @@ QCOMPARE(w->height(), 200); } + +/* + If the scroll area rides the size where, due to the height-for-width + implementation of the widget, the vertical scrollbar is needed only + if the vertical scrollbar is visible, then we don't want it to flip + back and forth, but rather constrain the width of the widget. + See QTBUG-92958. +*/ +void tst_QScrollArea::stableHeightForWidth() +{ + struct HeightForWidthWidget : public QWidget + { + HeightForWidthWidget() + { + QSizePolicy policy = sizePolicy(); + policy.setHeightForWidth(true); + setSizePolicy(policy); + } + // Aspect ratio 1:1 + int heightForWidth(int width) const override { return width; } + }; + + class HeightForWidthArea : public QScrollArea + { + public: + HeightForWidthArea() + { + this->verticalScrollBar()->installEventFilter(this); + } + protected: + bool eventFilter(QObject *obj, QEvent *e) override + { + if (obj == verticalScrollBar() && e->type() == QEvent::Hide) + ++m_hideCount; + return QScrollArea::eventFilter(obj,e); + } + public: + int m_hideCount = 0; + }; + + HeightForWidthArea area; + HeightForWidthWidget equalWHWidget; + area.setWidget(&equalWHWidget); + area.setWidgetResizable(true); + // at this size, the widget wants to be 501 pixels high, + // requiring a vertical scrollbar in a 499 pixel high area. + // but the width resulting from showing the scrollbar would + // be less than 499, so no scrollbars would be needed anymore. + area.resize(501, 499); + area.show(); + QTest::qWait(500); + // if the scrollbar got hidden more than once, then the layout + // isn't stable. + QVERIFY(area.m_hideCount <= 1); +} + QTEST_MAIN(tst_QScrollArea) #include "tst_qscrollarea.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -98,6 +98,9 @@ void mouseReleaseOutsideTabBar(); + void scrollButtons_data(); + void scrollButtons(); + private: void checkPositions(const TabBar &tabbar, const QList<int> &positions); }; @@ -869,5 +872,71 @@ } } +void tst_QTabBar::scrollButtons_data() +{ + QTest::addColumn<QTabWidget::TabPosition>("tabPosition"); + QTest::addColumn<Qt::LayoutDirection>("layoutDirection"); + + for (auto ld : {Qt::LeftToRight, Qt::RightToLeft}) { + const char *ldStr = ld == Qt::LeftToRight ? "LTR" : "RTL"; + QTest::addRow("North, %s", ldStr) << QTabWidget::North << ld; + QTest::addRow("South, %s", ldStr) << QTabWidget::South << ld; + QTest::addRow("West, %s", ldStr) << QTabWidget::West << ld; + QTest::addRow("East, %s", ldStr) << QTabWidget::East << ld; + } +} + +void tst_QTabBar::scrollButtons() +{ + QFETCH(QTabWidget::TabPosition, tabPosition); + QFETCH(Qt::LayoutDirection, layoutDirection); + + QWidget window; + QTabWidget tabWidget(&window); + tabWidget.setLayoutDirection(layoutDirection); + tabWidget.setTabPosition(tabPosition); + tabWidget.setElideMode(Qt::ElideNone); + tabWidget.setUsesScrollButtons(true); + + const int tabCount = 5; + for (int i = 0; i < tabCount; ++i) + { + const QString num = QString::number(i); + tabWidget.addTab(new QPushButton(num), num + " - Really long tab name to force arrows"); + } + tabWidget.move(0, 0); + tabWidget.resize(tabWidget.minimumSizeHint()); + window.show(); + QVERIFY(QTest::qWaitForWindowActive(&window)); + + auto *leftB = tabWidget.tabBar()->findChild<QAbstractButton*>(QStringLiteral("ScrollLeftButton")); + auto *rightB = tabWidget.tabBar()->findChild<QAbstractButton*>(QStringLiteral("ScrollRightButton")); + + QVERIFY(leftB->isVisible()); + QVERIFY(!leftB->isEnabled()); + QVERIFY(rightB->isVisible()); + QVERIFY(rightB->isEnabled()); + QVERIFY(!tabWidget.tabBar()->tabRect(1).intersects(tabWidget.tabBar()->rect())); + + int index = 0; + for (; index < tabWidget.count(); ++index) { + QCOMPARE(leftB->isEnabled(), index > 0); + QCOMPARE(rightB->isEnabled(), index < tabWidget.count() - 1); + QVERIFY(tabWidget.tabBar()->tabRect(index).intersects(tabWidget.tabBar()->rect())); + QCOMPARE(tabWidget.tabBar()->tabAt(tabWidget.tabBar()->rect().center()), index); + if (rightB->isEnabled()) + rightB->click(); + } + for (--index; index >= 0; --index) { + QCOMPARE(leftB->isEnabled(), index >= 0); + QCOMPARE(rightB->isEnabled(), index < tabWidget.count() - 1); + + QVERIFY(tabWidget.tabBar()->tabRect(index).intersects(tabWidget.tabBar()->rect())); + if (leftB->isEnabled()) + leftB->click(); + } + QVERIFY(!leftB->isEnabled()); +} + QTEST_MAIN(tst_QTabBar) #include "tst_qtabbar.moc" diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/corelib/io/qdiriterator/main.cpp qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/corelib/io/qdiriterator/main.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/corelib/io/qdiriterator/main.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/corelib/io/qdiriterator/main.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. @@ -57,24 +57,23 @@ void data(); }; - void tst_qdiriterator::data() { -#if defined(Q_OS_WIN) - const char *qtdir = "C:\\depot\\qt\\main"; -#else - const char *qtdir = ::getenv("QTDIR"); -#endif - if (!qtdir) { - fprintf(stderr, "QTDIR not set\n"); - exit(1); - } + const char hereRelative[] = "tests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro"; + QString proname = QTest::qFindTestData(QStringLiteral("qdiriterator.pro")); + // qDebug("Source pro: %s", proname.toLocal8Bit().constData()); + // Size chopped counts the '\0', making up for the omitted leading '/': + QByteArray dir(QStringRef(&proname).chopped(sizeof(hereRelative)).toLocal8Bit()); + // qDebug("Root dir: %s", dir.constData()); QTest::addColumn<QByteArray>("dirpath"); - QByteArray ba = QByteArray(qtdir) + "/src/corelib"; - QByteArray ba1 = ba + "/io"; - QTest::newRow(ba) << ba; - //QTest::newRow(ba1) << ba1; + const QByteArray ba = dir + "/src/corelib"; + + if (!QFileInfo(QString::fromLocal8Bit(ba)).isDir()) + QSKIP("Missing Qt directory"); + + QTest::newRow("corelib") << ba; + QTest::newRow("corelib/io") << (ba + "/io"); } #ifdef Q_OS_WIN diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/corelib/io/qfile/main.cpp qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/corelib/io/qfile/main.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/corelib/io/qfile/main.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/corelib/io/qfile/main.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. @@ -108,72 +108,110 @@ void readBigFile_Win32(); private: - void readBigFile_data(BenchmarkType type, QIODevice::OpenModeFlag t, QIODevice::OpenModeFlag b); + void readFile_data(BenchmarkType type, QIODevice::OpenModeFlag t, QIODevice::OpenModeFlag b); void readBigFile(); - void readSmallFiles_data(BenchmarkType type, QIODevice::OpenModeFlag t, QIODevice::OpenModeFlag b); void readSmallFiles(); - void createFile(); - void fillFile(int factor=FACTOR); - void removeFile(); - void createSmallFiles(); - void removeSmallFiles(); - QString filename; - QString tmpDirName; + + class TestDataDir : public QTemporaryDir + { + void createFile(); + void createSmallFiles(); + public: + TestDataDir() : QTemporaryDir(), fail(errorString().toLocal8Bit()) + { + if (fail.isEmpty() && !QTemporaryDir::isValid()) + fail = "Failed to create temporary directory for data"; + if (isValid()) + createSmallFiles(); + if (isValid()) + createFile(); + if (isValid()) + QTest::qSleep(2000); // let IO settle + } + bool isValid() { return QTemporaryDir::isValid() && fail.isEmpty(); } + QByteArray fail; + QString filename; + } tempDir; }; Q_DECLARE_METATYPE(tst_qfile::BenchmarkType) Q_DECLARE_METATYPE(QIODevice::OpenMode) Q_DECLARE_METATYPE(QIODevice::OpenModeFlag) -void tst_qfile::createFile() -{ - removeFile(); // Cleanup in case previous test case aborted before cleaning up - - QTemporaryFile tmpFile; - tmpFile.setAutoRemove(false); - if (!tmpFile.open()) - ::exit(1); +/* None of the tests modify the test data in tempDir, so it's OK to only create + * and tear down the directory once. + */ +void tst_qfile::TestDataDir::createFile() +{ + QFile tmpFile(filePath("testFile")); + if (!tmpFile.open(QIODevice::WriteOnly)) { + fail = "Unable to prepare files for test"; + return; + } +#if 0 // Varied data, rather than filling with '\0' bytes: + for (int row = 0; row < FACTOR; ++row) { + tmpFile.write(QByteArray().fill('0' + row % ('0' - 'z'), 80)); + tmpFile.write("\n"); + } +#else + tmpFile.seek(FACTOR * 80); + tmpFile.putChar('\n'); +#endif filename = tmpFile.fileName(); tmpFile.close(); } -void tst_qfile::removeFile() +void tst_qfile::TestDataDir::createSmallFiles() { - if (!filename.isEmpty()) - QFile::remove(filename); + for (int i = 0; i < 1000; ++i) { + QFile f(filePath(QString::number(i))); + if (!f.open(QIODevice::WriteOnly)) { + fail = "Unable to prepare small files for test"; + return; + } + f.seek(511); + f.putChar('\n'); + f.close(); + } } -void tst_qfile::fillFile(int factor) +void tst_qfile::initTestCase() { - QFile tmpFile(filename); - tmpFile.open(QIODevice::WriteOnly); - //for (int row=0; row<factor; ++row) { - // tmpFile.write(QByteArray().fill('0'+row%('0'-'z'), 80)); - // tmpFile.write("\n"); - //} - tmpFile.seek(factor*80); - tmpFile.putChar('\n'); - tmpFile.close(); - // let IO settle - QTest::qSleep(2000); + QVERIFY2(tempDir.isValid(), tempDir.fail.constData()); } -void tst_qfile::initTestCase() +void tst_qfile::cleanupTestCase() { } -void tst_qfile::cleanupTestCase() +void tst_qfile::readFile_data(BenchmarkType type, QIODevice::OpenModeFlag t, + QIODevice::OpenModeFlag b) { + QTest::addColumn<tst_qfile::BenchmarkType>("testType"); + QTest::addColumn<int>("blockSize"); + QTest::addColumn<QFile::OpenModeFlag>("textMode"); + QTest::addColumn<QFile::OpenModeFlag>("bufferedMode"); + + QByteArray flagstring; + if (t & QIODevice::Text) + flagstring += "textMode "; + if (b & QIODevice::Unbuffered) + flagstring += "unbuffered "; + if (flagstring.isEmpty()) + flagstring = "none"; + + const int kbs[] = {1, 2, 8, 16, 32, 512}; + for (int kb : kbs) { + const int size = 1024 * kb; + QTest::addRow("BS: %d, Flags: %s", size, flagstring.constData()) + << type << size << t << b; + } } void tst_qfile::readBigFile_QFile() { readBigFile(); } void tst_qfile::readBigFile_QFSFileEngine() { -#ifdef QT_BUILD_INTERNAL readBigFile(); -#else - QSKIP("This test requires -developer-build."); -#endif } void tst_qfile::readBigFile_posix() { @@ -183,54 +221,36 @@ void tst_qfile::readBigFile_QFile_data() { - readBigFile_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::NotOpen); - readBigFile_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered); - readBigFile_data(QFileBenchmark, QIODevice::Text, QIODevice::NotOpen); - readBigFile_data(QFileBenchmark, QIODevice::Text, QIODevice::Unbuffered); + readFile_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::NotOpen); + readFile_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered); + readFile_data(QFileBenchmark, QIODevice::Text, QIODevice::NotOpen); + readFile_data(QFileBenchmark, QIODevice::Text, QIODevice::Unbuffered); } void tst_qfile::readBigFile_QFSFileEngine_data() { #ifdef QT_BUILD_INTERNAL - readBigFile_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::NotOpen); - readBigFile_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered); - readBigFile_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::NotOpen); - readBigFile_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::Unbuffered); + // Support for buffering dropped at 5.10, so only test Unbuffered + readFile_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered); + readFile_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::Unbuffered); #else - QTest::addColumn<int>("dummy"); - QTest::newRow("Test will be skipped") << -1; + QSKIP("This test requires -developer-build."); #endif } void tst_qfile::readBigFile_posix_data() { - readBigFile_data(PosixBenchmark, QIODevice::NotOpen, QIODevice::NotOpen); + readFile_data(PosixBenchmark, QIODevice::NotOpen, QIODevice::NotOpen); } void tst_qfile::readBigFile_Win32_data() { - readBigFile_data(Win32Benchmark, QIODevice::NotOpen, QIODevice::NotOpen); -} - - -void tst_qfile::readBigFile_data(BenchmarkType type, QIODevice::OpenModeFlag t, QIODevice::OpenModeFlag b) -{ - QTest::addColumn<tst_qfile::BenchmarkType>("testType"); - QTest::addColumn<int>("blockSize"); - QTest::addColumn<QFile::OpenModeFlag>("textMode"); - QTest::addColumn<QFile::OpenModeFlag>("bufferedMode"); - - const int bs[] = {1024, 1024*2, 1024*8, 1024*16, 1024*32,1024*512}; - int bs_entries = sizeof(bs)/sizeof(const int); - - QString flagstring; - if (t & QIODevice::Text) flagstring += "textMode "; - if (b & QIODevice::Unbuffered) flagstring += "unbuffered "; - if (flagstring.isEmpty()) flagstring = "none"; - - for (int i=0; i<bs_entries; ++i) - QTest::newRow((QString("BS: %1, Flags: %2" )).arg(bs[i]).arg(flagstring).toLatin1().constData()) << type << bs[i] << t << b; +#ifdef Q_OS_WIN + readFile_data(Win32Benchmark, QIODevice::NotOpen, QIODevice::NotOpen); +#else + QSKIP("This is Windows only benchmark."); +#endif } void tst_qfile::readBigFile() @@ -240,18 +260,10 @@ QFETCH(QFile::OpenModeFlag, textMode); QFETCH(QFile::OpenModeFlag, bufferedMode); -#ifndef Q_OS_WIN - if (testType == Win32Benchmark) - QSKIP("This is Windows only benchmark."); -#endif - - char *buffer = new char[BUFSIZE]; - createFile(); - fillFile(); - + char buffer[BUFSIZE]; switch (testType) { case(QFileBenchmark): { - QFile file(filename); + QFile file(tempDir.filename); file.open(QIODevice::ReadOnly|textMode|bufferedMode); QBENCHMARK { while(!file.atEnd()) @@ -263,7 +275,7 @@ break; #ifdef QT_BUILD_INTERNAL case(QFSFileEngineBenchmark): { - QFSFileEngine fse(filename); + QFSFileEngine fse(tempDir.filename); fse.open(QIODevice::ReadOnly|textMode|bufferedMode); QBENCHMARK { //qWarning() << fse.supportsExtension(QAbstractFileEngine::AtEndExtension); @@ -275,7 +287,7 @@ break; #endif case(PosixBenchmark): { - QByteArray data = filename.toLocal8Bit(); + QByteArray data = tempDir.filename.toLocal8Bit(); const char* cfilename = data.constData(); FILE* cfile = ::fopen(cfilename, "rb"); QBENCHMARK { @@ -295,7 +307,7 @@ HANDLE hndl; // ensure we don't account string conversion - wchar_t* cfilename = (wchar_t*)filename.utf16(); + const wchar_t *cfilename = reinterpret_cast<const wchar_t *>(tempDir.filename.utf16()); #ifndef Q_OS_WINRT hndl = CreateFile(cfilename, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0); @@ -325,9 +337,6 @@ } break; } - - removeFile(); - delete[] buffer; } void tst_qfile::seek_data() @@ -348,12 +357,9 @@ QFETCH(tst_qfile::BenchmarkType, testType); int i = 0; - createFile(); - fillFile(); - switch (testType) { case(QFileBenchmark): { - QFile file(filename); + QFile file(tempDir.filename); file.open(QIODevice::ReadOnly); QBENCHMARK { i=(i+1)%sp_size; @@ -364,8 +370,8 @@ break; #ifdef QT_BUILD_INTERNAL case(QFSFileEngineBenchmark): { - QFSFileEngine fse(filename); - fse.open(QIODevice::ReadOnly); + QFSFileEngine fse(tempDir.filename); + fse.open(QIODevice::ReadOnly | QIODevice::Unbuffered); QBENCHMARK { i=(i+1)%sp_size; fse.seek(seekpos[i]); @@ -375,7 +381,7 @@ break; #endif case(PosixBenchmark): { - QByteArray data = filename.toLocal8Bit(); + QByteArray data = tempDir.filename.toLocal8Bit(); const char* cfilename = data.constData(); FILE* cfile = ::fopen(cfilename, "rb"); QBENCHMARK { @@ -394,7 +400,7 @@ HANDLE hndl; // ensure we don't account string conversion - wchar_t* cfilename = (wchar_t*)filename.utf16(); + const wchar_t *cfilename = reinterpret_cast<const wchar_t *>(tempDir.filename.utf16()); #ifndef Q_OS_WINRT hndl = CreateFile(cfilename, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0); @@ -413,13 +419,11 @@ } CloseHandle(hndl); #else - QFAIL("Not running on a Windows plattform!"); + QFAIL("Not running on a Windows platform!"); #endif } break; } - - removeFile(); } void tst_qfile::open_data() @@ -440,13 +444,11 @@ { QFETCH(tst_qfile::BenchmarkType, testType); - createFile(); - switch (testType) { case(QFileBenchmark): { QBENCHMARK { - QFile file( filename ); - file.open( QIODevice::ReadOnly ); + QFile file(tempDir.filename); + file.open(QIODevice::ReadOnly); file.close(); } } @@ -454,8 +456,8 @@ #ifdef QT_BUILD_INTERNAL case(QFSFileEngineBenchmark): { QBENCHMARK { - QFSFileEngine fse(filename); - fse.open(QIODevice::ReadOnly); + QFSFileEngine fse(tempDir.filename); + fse.open(QIODevice::ReadOnly | QIODevice::Unbuffered); fse.close(); } } @@ -463,7 +465,7 @@ #endif case(PosixBenchmark): { // ensure we don't account toLocal8Bit() - QByteArray data = filename.toLocal8Bit(); + QByteArray data = tempDir.filename.toLocal8Bit(); const char* cfilename = data.constData(); QBENCHMARK { @@ -474,7 +476,7 @@ break; case(QFileFromPosixBenchmark): { // ensure we don't account toLocal8Bit() - QByteArray data = filename.toLocal8Bit(); + QByteArray data = tempDir.filename.toLocal8Bit(); const char* cfilename = data.constData(); FILE* cfile = ::fopen(cfilename, "rb"); @@ -491,7 +493,7 @@ HANDLE hndl; // ensure we don't account string conversion - wchar_t* cfilename = (wchar_t*)filename.utf16(); + const wchar_t *cfilename = reinterpret_cast<const wchar_t *>(tempDir.filename.utf16()); QBENCHMARK { #ifndef Q_OS_WINRT @@ -508,19 +510,13 @@ } break; } - - removeFile(); } void tst_qfile::readSmallFiles_QFile() { readSmallFiles(); } void tst_qfile::readSmallFiles_QFSFileEngine() { -#ifdef QT_BUILD_INTERNAL readSmallFiles(); -#else - QSKIP("This test requires -developer-build."); -#endif } void tst_qfile::readSmallFiles_posix() { @@ -533,82 +529,39 @@ void tst_qfile::readSmallFiles_QFile_data() { - readSmallFiles_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::NotOpen); - readSmallFiles_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered); - readSmallFiles_data(QFileBenchmark, QIODevice::Text, QIODevice::NotOpen); - readSmallFiles_data(QFileBenchmark, QIODevice::Text, QIODevice::Unbuffered); + readFile_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::NotOpen); + readFile_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered); + readFile_data(QFileBenchmark, QIODevice::Text, QIODevice::NotOpen); + readFile_data(QFileBenchmark, QIODevice::Text, QIODevice::Unbuffered); } void tst_qfile::readSmallFiles_QFSFileEngine_data() { #ifdef QT_BUILD_INTERNAL - readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::NotOpen); - readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered); - readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::NotOpen); - readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::Unbuffered); + // Support for buffering dropped at 5.10, so only test Unbuffered + readFile_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered); + readFile_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::Unbuffered); #else - QTest::addColumn<int>("dummy"); - QTest::newRow("Test will be skipped") << -1; + QSKIP("This test requires -developer-build."); #endif } void tst_qfile::readSmallFiles_posix_data() { - readSmallFiles_data(PosixBenchmark, QIODevice::NotOpen, QIODevice::NotOpen); + readFile_data(PosixBenchmark, QIODevice::NotOpen, QIODevice::NotOpen); } void tst_qfile::readSmallFiles_Win32_data() { - readSmallFiles_data(Win32Benchmark, QIODevice::NotOpen, QIODevice::NotOpen); -} - - -void tst_qfile::readSmallFiles_data(BenchmarkType type, QIODevice::OpenModeFlag t, QIODevice::OpenModeFlag b) -{ - QTest::addColumn<tst_qfile::BenchmarkType>("testType"); - QTest::addColumn<int>("blockSize"); - QTest::addColumn<QFile::OpenModeFlag>("textMode"); - QTest::addColumn<QFile::OpenModeFlag>("bufferedMode"); - - const int bs[] = {1024, 1024*2, 1024*8, 1024*16, 1024*32,1024*512}; - int bs_entries = sizeof(bs)/sizeof(const int); - - QString flagstring; - if (t & QIODevice::Text) flagstring += "textMode "; - if (b & QIODevice::Unbuffered) flagstring += "unbuffered "; - if (flagstring.isEmpty()) flagstring = "none"; - - for (int i=0; i<bs_entries; ++i) - QTest::newRow((QString("BS: %1, Flags: %2" )).arg(bs[i]).arg(flagstring).toLatin1().constData()) << type << bs[i] << t << b; - -} - -void tst_qfile::createSmallFiles() -{ - QDir dir = QDir::temp(); - dir.mkdir("tst"); - dir.cd("tst"); - tmpDirName = dir.absolutePath(); - - for (int i = 0; i < 1000; ++i) { - QFile f(tmpDirName + QLatin1Char('/') + QString::number(i)); - f.open(QIODevice::WriteOnly); - f.seek(511); - f.putChar('\n'); - f.close(); - } -} -void tst_qfile::removeSmallFiles() -{ - QDirIterator it(tmpDirName, QDirIterator::FollowSymlinks); - while (it.hasNext()) - QFile::remove(it.next()); - QDir::temp().rmdir("tst"); +#ifdef Q_OS_WIN + readFile_data(Win32Benchmark, QIODevice::NotOpen, QIODevice::NotOpen); +#else + QSKIP("This is Windows only benchmark."); +#endif } - void tst_qfile::readSmallFiles() { QFETCH(tst_qfile::BenchmarkType, testType); @@ -616,22 +569,15 @@ QFETCH(QFile::OpenModeFlag, textMode); QFETCH(QFile::OpenModeFlag, bufferedMode); -#ifndef Q_OS_WIN - if (testType == Win32Benchmark) - QSKIP("This is Windows only benchmark."); -#endif - - createSmallFiles(); - - QDir dir(tmpDirName); + QDir dir(tempDir.path()); const QStringList files = dir.entryList(QDir::NoDotAndDotDot|QDir::NoSymLinks|QDir::Files); - char *buffer = new char[BUFSIZE]; + char buffer[BUFSIZE]; switch (testType) { case(QFileBenchmark): { QList<QFile*> fileList; Q_FOREACH(QString file, files) { - QFile *f = new QFile(tmpDirName + QLatin1Char('/') + file); + QFile *f = new QFile(tempDir.filePath(file)); f->open(QIODevice::ReadOnly|textMode|bufferedMode); fileList.append(f); } @@ -654,7 +600,7 @@ case(QFSFileEngineBenchmark): { QList<QFSFileEngine*> fileList; Q_FOREACH(QString file, files) { - QFSFileEngine *fse = new QFSFileEngine(tmpDirName + QLatin1Char('/') + file); + QFSFileEngine *fse = new QFSFileEngine(tempDir.filePath(file)); fse->open(QIODevice::ReadOnly|textMode|bufferedMode); fileList.append(fse); } @@ -675,7 +621,7 @@ case(PosixBenchmark): { QList<FILE*> fileList; Q_FOREACH(QString file, files) { - fileList.append(::fopen(QFile::encodeName(tmpDirName + QLatin1Char('/') + file).constData(), "rb")); + fileList.append(::fopen(QFile::encodeName(tempDir.filePath(file)).constData(), "rb")); } QBENCHMARK { @@ -700,7 +646,7 @@ HANDLE hndl; // ensure we don't account string conversion - wchar_t* cfilename = (wchar_t*)filename.utf16(); + const wchar_t *cfilename = reinterpret_cast<const wchar_t *>(tempDir.filename.utf16()); #ifndef Q_OS_WINRT hndl = CreateFile(cfilename, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0); @@ -723,9 +669,6 @@ } break; } - - removeSmallFiles(); - delete[] buffer; } QTEST_MAIN(tst_qfile) diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro --- qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro 2022-11-11 15:29:17.000000000 +0800 @@ -1,4 +1,3 @@ -CONFIG += benchmark CONFIG -= qt CONFIG += cmdline winrt: QMAKE_LFLAGS += /ENTRY:mainCRTStartup diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/corelib/io/qprocess/tst_bench_qprocess.cpp qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/corelib/io/qprocess/tst_bench_qprocess.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/corelib/io/qprocess/tst_bench_qprocess.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/corelib/io/qprocess/tst_bench_qprocess.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. @@ -39,10 +39,16 @@ void echoTest_performance(); }; +#ifdef Q_OS_WIN +# define EXE ".exe" +#else +# define EXE "" +#endif + void tst_QProcess::echoTest_performance() { QProcess process; - process.start("testProcessLoopback/testProcessLoopback"); + process.start(QFINDTESTDATA("testProcessLoopback/testProcessLoopback" EXE), QStringList()); QByteArray array; array.resize(1024 * 1024); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -237,11 +237,12 @@ { LotsOfSignals *obj = new LotsOfSignals; QFETCH(int, signal_index); - QVERIFY(obj->metaObject()->methodCount() == 73); + // 74: 70 signals in LotsOfSignals, 2 signals, 1 slot + 1 invokable in QObject + QCOMPARE(obj->metaObject()->methodCount(), 74); void *v; QBENCHMARK { - //+1 because QObject has one slot - QMetaObject::metacall(obj, QMetaObject::InvokeMetaMethod, signal_index+1, &v); + // Add two because QObject has one slot and one invokable + QMetaObject::metacall(obj, QMetaObject::InvokeMetaMethod, signal_index + 2, &v); } delete obj; } diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/dbus/qdbusperformance/test/test.pro qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/dbus/qdbusperformance/test/test.pro --- qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/dbus/qdbusperformance/test/test.pro 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/dbus/qdbusperformance/test/test.pro 2022-11-11 15:29:17.000000000 +0800 @@ -1,3 +1,4 @@ +CONFIG += benchmark SOURCES += ../tst_qdbusperformance.cpp HEADERS += ../serverobject.h TARGET = ../tst_qdbusperformance diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/dbus/qdbusperformance/tst_qdbusperformance.cpp qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/dbus/qdbusperformance/tst_qdbusperformance.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/dbus/qdbusperformance/tst_qdbusperformance.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/dbus/qdbusperformance/tst_qdbusperformance.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. @@ -79,7 +79,7 @@ #else # define EXE "" #endif - proc.start(QFINDTESTDATA("server/server" EXE)); + proc.start(QFINDTESTDATA("server/server" EXE), QStringList()); QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString())); QVERIFY(proc.waitForReadyRead()); diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/gui/kernel/qguimetatype/tst_qguimetatype.cpp qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/gui/kernel/qguimetatype/tst_qguimetatype.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/gui/kernel/qguimetatype/tst_qguimetatype.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/gui/kernel/qguimetatype/tst_qguimetatype.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -28,6 +28,7 @@ #include <qtest.h> #include <QtCore/qmetatype.h> +#include <QScopeGuard> class tst_QGuiMetaType : public QObject { @@ -59,17 +60,20 @@ void tst_QGuiMetaType::constructInPlace() { QFETCH(int, typeId); - int size = QMetaType::sizeOf(typeId); + QMetaType type(typeId); + int size = type.sizeOf(); void *storage = qMallocAligned(size, 2 * sizeof(qlonglong)); - QCOMPARE(QMetaType::construct(typeId, storage, /*copy=*/0), storage); - QMetaType::destruct(typeId, storage); + auto cleanUp = qScopeGuard([&]() { + qFreeAligned(storage); + }); + QCOMPARE(type.construct(storage, /*copy=*/0), storage); + type.destruct(storage); QBENCHMARK { for (int i = 0; i < 100000; ++i) { - QMetaType::construct(typeId, storage, /*copy=*/0); - QMetaType::destruct(typeId, storage); + type.construct(storage, /*copy=*/0); + type.destruct(storage); } } - qFreeAligned(storage); } void tst_QGuiMetaType::constructInPlaceCopy_data() @@ -80,19 +84,22 @@ void tst_QGuiMetaType::constructInPlaceCopy() { QFETCH(int, typeId); - int size = QMetaType::sizeOf(typeId); + QMetaType type(typeId); + int size = type.sizeOf(); void *storage = qMallocAligned(size, 2 * sizeof(qlonglong)); - void *other = QMetaType::create(typeId); - QCOMPARE(QMetaType::construct(typeId, storage, other), storage); - QMetaType::destruct(typeId, storage); + void *other = type.create(); + auto cleanUp = qScopeGuard([&]() { + type.destroy(other); + qFreeAligned(storage); + }); + QCOMPARE(type.construct(storage, other), storage); + type.destruct(storage); QBENCHMARK { for (int i = 0; i < 100000; ++i) { - QMetaType::construct(typeId, storage, other); - QMetaType::destruct(typeId, storage); + type.construct(storage, other); + type.destruct(storage); } } - QMetaType::destroy(typeId, other); - qFreeAligned(storage); } QTEST_MAIN(tst_QGuiMetaType) diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp --- qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -1,6 +1,6 @@ /**************************************************************************** ** - ** Copyright (C) 2018 The Qt Company Ltd. + ** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. @@ -178,15 +178,18 @@ const auto tableName = qTableName("record", __FILE__, db); { QSqlQuery qry(db); - QVERIFY_SQL(qry, exec("create table " + tableName + " (id int NOT NULL, t_varchar varchar(20), " + QVERIFY_SQL(qry, exec("create table " + tableName + + " (id int NOT NULL, t_varchar varchar(20), " "t_char char(20), primary key(id))")); - for (int i = 0; i < 1000; i++) + // Limit to 500: at 600, the set-up takes nearly 5 minutes + for (int i = 0; i < 500; i++) QVERIFY_SQL(qry, exec(QString("INSERT INTO " + tableName + " VALUES (%1, 'VarChar%1', 'Char%1')").arg(i))); QVERIFY_SQL(qry, exec(QString("SELECT * from ") + tableName)); QBENCHMARK { while (qry.next()) qry.record(); + QVERIFY(qry.seek(0)); } } tst_Databases::safeDropTables(db, QStringList() << tableName); @@ -202,6 +205,7 @@ QBENCHMARK { while (qry.next()) qry.value("r"); + QVERIFY(qry.seek(0)); } } } @@ -217,6 +221,7 @@ QBENCHMARK { while (qry.next()) qry.value(0); + QVERIFY(qry.seek(0)); } } } Binary files /tmp/tmp6xg3fb1h/BuelISSI8r/qtbase-opensource-src-5.15.3+dfsg/tests/benchmarks/widgets/graphicsview/qgraphicsview/benchapps/chipTest/chip.debug and /tmp/tmp6xg3fb1h/dUh2QbZjRb/qtbase-opensource-src-5.15.8+dfsg/tests/benchmarks/widgets/graphicsview/qgraphicsview/benchapps/chipTest/chip.debug differ diff -Nru qtbase-opensource-src-5.15.3+dfsg/tests/testserver/apache2/testdata/www/htdocs/protected/rfc3252.txt qtbase-opensource-src-5.15.8+dfsg/tests/testserver/apache2/testdata/www/htdocs/protected/rfc3252.txt --- qtbase-opensource-src-5.15.3+dfsg/tests/testserver/apache2/testdata/www/htdocs/protected/rfc3252.txt 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/tests/testserver/apache2/testdata/www/htdocs/protected/rfc3252.txt 1970-01-01 08:00:00.000000000 +0800 @@ -1,899 +0,0 @@ - - - - - - -Network Working Group H. Kennedy -Request for Comments: 3252 Mimezine -Category: Informational 1 April 2002 - - - Binary Lexical Octet Ad-hoc Transport - -Status of this Memo - - This memo provides information for the Internet community. It does - not specify an Internet standard of any kind. Distribution of this - memo is unlimited. - -Copyright Notice - - Copyright (C) The Internet Society (2002). All Rights Reserved. - -Abstract - - This document defines a reformulation of IP and two transport layer - protocols (TCP and UDP) as XML applications. - -1. Introduction - -1.1. Overview - - This document describes the Binary Lexical Octet Ad-hoc Transport - (BLOAT): a reformulation of a widely-deployed network-layer protocol - (IP [RFC791]), and two associated transport layer protocols (TCP - [RFC793] and UDP [RFC768]) as XML [XML] applications. It also - describes methods for transporting BLOAT over Ethernet and IEEE 802 - networks as well as encapsulating BLOAT in IP for gatewaying BLOAT - across the public Internet. - -1.2. Motivation - - The wild popularity of XML as a basis for application-level protocols - such as the Blocks Extensible Exchange Protocol [RFC3080], the Simple - Object Access Protocol [SOAP], and Jabber [JABBER] prompted - investigation into the possibility of extending the use of XML in the - protocol stack. Using XML at both the transport and network layer in - addition to the application layer would provide for an amazing amount - of power and flexibility while removing dependencies on proprietary - and hard-to-understand binary protocols. This protocol unification - would also allow applications to use a single XML parser for all - aspects of their operation, eliminating developer time spent figuring - out the intricacies of each new protocol, and moving the hard work of - - - - -Kennedy Informational [Page 1] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - - parsing to the XML toolset. The use of XML also mitigates concerns - over "network vs. host" byte ordering which is at the root of many - network application bugs. - -1.3. Relation to Existing Protocols - - The reformulations specified in this RFC follow as closely as - possible the spirit of the RFCs on which they are based, and so MAY - contain elements or attributes that would not be needed in a pure - reworking (e.g. length attributes, which are implicit in XML.) - - The layering of network and transport protocols are maintained in - this RFC despite the optimizations that could be made if the line - were somewhat blurred (i.e. merging TCP and IP into a single, larger - element in the DTD) in order to foster future use of this protocol as - a basis for reformulating other protocols (such as ICMP.) - - Other than the encoding, the behavioral aspects of each of the - existing protocols remain unchanged. Routing, address spaces, TCP - congestion control, etc. behave as specified in the extant standards. - Adapting to new standards and experimental algorithm heuristics for - improving performance will become much easier once the move to BLOAT - has been completed. - -1.4. Requirement Levels - - The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", - "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this - document are to be interpreted as described in BCP 14, RFC 2119 - [RFC2119]. - -2. IPoXML - - This protocol MUST be implemented to be compliant with this RFC. - IPoXML is the root protocol REQUIRED for effective use of TCPoXML - (section 3.) and higher-level application protocols. - - The DTD for this document type can be found in section 7.1. - - The routing of IPoXML can be easily implemented on hosts with an XML - parser, as the regular structure lends itself handily to parsing and - validation of the document/datagram and then processing the - destination address, TTL, and checksum before sending it on to its - next-hop. - - The reformulation of IPv4 was chosen over IPv6 [RFC2460] due to the - wider deployment of IPv4 and the fact that implementing IPv6 as XML - would have exceeded the 1500 byte Ethernet MTU. - - - -Kennedy Informational [Page 2] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - - All BLOAT implementations MUST use - and specify - the UTF-8 encoding - of RFC 2279 [RFC2279]. All BLOAT document/datagrams MUST be well- - formed and include the XMLDecl. - -2.1. IP Description - - A number of items have changed (for the better) from the original IP - specification. Bit-masks, where present have been converted into - human-readable values. IP addresses are listed in their dotted- - decimal notation [RFC1123]. Length and checksum values are present - as decimal integers. - - To calculate the length and checksum fields of the IP element, a - canonicalized form of the element MUST be used. The canonical form - SHALL have no whitespace (including newline characters) between - elements and only one space character between attributes. There - SHALL NOT be a space following the last attribute in an element. - - An iterative method SHOULD be used to calculate checksums, as the - length field will vary based on the size of the checksum. - - The payload element bears special attention. Due to the character - set restrictions of XML, the payload of IP datagrams (which MAY - contain arbitrary data) MUST be encoded for transport. This RFC - REQUIRES the contents of the payload to be encoded in the base-64 - encoding of RFC 2045 [RFC2045], but removes the requirement that the - encoded output MUST be wrapped on 76-character lines. - - - - - - - - - - - - - - - - - - - - - - - - -Kennedy Informational [Page 3] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - -2.2. Example Datagram - - The following is an example IPoXML datagram with an empty payload: - - <?xml version="1.0" encoding="UTF-8"?> - <!DOCTYPE ip PUBLIC "-//IETF//DTD BLOAT 1.0 IP//EN" "bloat.dtd"> - <ip> - <header length="474"> - <version value="4"/> - <tos precedence="Routine" delay="Normal" throughput="Normal" - relibility="Normal" reserved="0"/> - <total.length value="461"/> - <id value="1"/> - <flags reserved="0" df="dont" mf="last"/> - <offset value="0"/> - <ttl value="255"/> - <protocol value="6"/> - <checksum value="8707"/> - <source address="10.0.0.22"/> - <destination address="10.0.0.1"/> - <options> - <end copied="0" class="0" number="0"/> - </options> - <padding pad="0"/> - </header> - <payload> - </payload> - </ip> - -3. TCPoXML - - This protocol MUST be implemented to be compliant with this RFC. The - DTD for this document type can be found in section 7.2. - -3.1. TCP Description - - A number of items have changed from the original TCP specification. - Bit-masks, where present have been converted into human-readable - values. Length and checksum and port values are present as decimal - integers. - - To calculate the length and checksum fields of the TCP element, a - canonicalized form of the element MUST be used as in section 2.1. - - An iterative method SHOULD be used to calculate checksums as in - section 2.1. - - The payload element MUST be encoded as in section 2.1. - - - -Kennedy Informational [Page 4] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - - The TCP offset element was expanded to a maximum of 255 from 16 to - allow for the increased size of the header in XML. - - TCPoXML datagrams encapsulated by IPoXML MAY omit the <?xml?> header - as well as the <!DOCTYPE> declaration. - -3.2. Example Datagram - - The following is an example TCPoXML datagram with an empty payload: - - <?xml version="1.0" encoding="UTF-8"?> - <!DOCTYPE tcp PUBLIC "-//IETF//DTD BLOAT 1.0 TCP//EN" "bloat.dtd"> - <tcp> - <tcp.header> - <src port="31415"/> - <dest port="42424"/> - <sequence number="322622954"/> - <acknowledgement number="689715995"/> - <offset number=""/> - <reserved value="0"/> - <control syn="1" ack="1"/> - <window size="1"/> - <urgent pointer="0"/> - <checksum value="2988"/> - <tcp.options> - <tcp.end kind="0"/> - </tcp.options> - <padding pad="0"/> - </tcp.header> - <payload> - </payload> - </tcp> - -4. UDPoXML - - This protocol MUST be implemented to be compliant with this RFC. The - DTD for this document type can be found in section 7.3. - -4.1. UDP Description - - A number of items have changed from the original UDP specification. - Bit-masks, where present have been converted into human-readable - values. Length and checksum and port values are present as decimal - integers. - - - - - - - -Kennedy Informational [Page 5] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - - To calculate the length and checksum fields of the UDP element, a - canonicalized form of the element MUST be used as in section 2.1. An - iterative method SHOULD be used to calculate checksums as in section - 2.1. - - The payload element MUST be encoded as in section 2.1. - - UDPoXML datagrams encapsulated by IPoXML MAY omit the <?xml?> header - as well as the <!DOCTYPE> declaration. - -4.2. Example Datagram - - The following is an example UDPoXML datagram with an empty payload: - - <?xml version="1.0" encoding="UTF-8"?> - <!DOCTYPE udp PUBLIC "-//IETF//DTD BLOAT 1.0 UDP//EN" "bloat.dtd"> - <udp> - <udp.header> - <src port="31415"/> - <dest port="42424"/> - <udp.length value="143"/> - <checksum value="2988"/> - </udp.header> - <payload> - </payload> - </udp> - -5. Network Transport - - This document provides for the transmission of BLOAT datagrams over - two common families of physical layer transport. Future RFCs will - address additional transports as routing vendors catch up to the - specification, and we begin to see BLOAT routed across the Internet - backbone. - -5.1. Ethernet - - BLOAT is encapsulated in Ethernet datagrams as in [RFC894] with the - exception that the type field of the Ethernet frame MUST contain the - value 0xBEEF. The first 5 octets of the Ethernet frame payload will - be 0x3c 3f 78 6d 6c ("<?xml".) - -5.2. IEEE 802 - - BLOAT is encapsulated in IEEE 802 Networks as in [RFC1042] except - that the protocol type code for IPoXML is 0xBEEF. - - - - - -Kennedy Informational [Page 6] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - -6. Gatewaying over IP - - In order to facilitate the gradual introduction of BLOAT into the - public Internet, BLOAT MAY be encapsulated in IP as in [RFC2003] to - gateway between networks that run BLOAT natively on their LANs. - -7. DTDs - - The Transport DTDs (7.2. and 7.3.) build on the definitions in the - Network DTD (7.1.) - - The DTDs are referenced by their PubidLiteral and SystemLiteral (from - [XML]) although it is understood that most IPoXML implementations - will not need to pull down the DTD, as it will normally be embedded - in the implementation, and presents something of a catch-22 if you - need to load part of your network protocol over the network. - -7.1. IPoXML DTD - - <!-- - DTD for IP over XML. - Refer to this DTD as: - - <!DOCTYPE ip PUBLIC "-//IETF//DTD BLOAT 1.0 IP//EN" "bloat.dtd"> - --> - <!-- - DTD data types: - - Digits [0..9]+ - - Precedence "NetworkControl | InternetworkControl | - CRITIC | FlashOverride | Flash | Immediate | - Priority | Routine" - - IP4Addr "dotted-decimal" notation of [RFC1123] - - Class [0..3] - - Sec "Unclassified | Confidential | EFTO | MMMM | PROG | - Restricted | Secret | Top Secret | Reserved" - - Compartments [0..65535] - - Handling [0..65535] - - TCC [0..16777216] - - --> - - - -Kennedy Informational [Page 7] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - - <!ENTITY % Digits "CDATA"> - <!ENTITY % Precedence "CDATA"> - <!ENTITY % IP4Addr "CDATA"> - <!ENTITY % Class "CDATA"> - <!ENTITY % Sec "CDATA"> - <!ENTITY % Compartments "CDATA"> - <!ENTITY % Handling "CDATA"> - <!ENTITY % TCC "CDATA"> - - <!ELEMENT ip (header, payload)> - - <!ELEMENT header (version, tos, total.length, id, flags, offset, ttl, - protocol, checksum, source, destination, options, - padding)> - <!-- length of header in 32-bit words --> - <!ATTLIST header - length %Digits; #REQUIRED> - - <!ELEMENT version EMPTY> - <!-- ip version. SHOULD be "4" --> - <!ATTLIST version - value %Digits; #REQUIRED> - - <!ELEMENT tos EMPTY> - <!ATTLIST tos - precedence %Precedence; #REQUIRED - delay (normal | low) #REQUIRED - throughput (normal | high) #REQUIRED - relibility (normal | high) #REQUIRED - reserved CDATA #FIXED "0"> - - <!ELEMENT total.length EMPTY> - <!-- - total length of datagram (header and payload) in octets, MUST be - less than 65,535 (and SHOULD be less than 1024 for IPoXML on local - ethernets). - --> - <!ATTLIST total.length - value %Digits; #REQUIRED> - - <!ELEMENT id EMPTY> - <!-- 0 <= id <= 65,535 --> - <!ATTLIST id - value %Digits; #REQUIRED> - - <!ELEMENT flags EMPTY> - <!-- df = don't fragment, mf = more fragments --> - <!ATTLIST flags - - - -Kennedy Informational [Page 8] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - - reserved CDATA #FIXED "0" - df (may|dont) #REQUIRED - mf (last|more) #REQUIRED> - - <!ELEMENT offset EMPTY> - <!-- 0 <= offset <= 8192 measured in 8 octet (64-bit) chunks --> - <!ATTLIST offset - value %Digits; #REQUIRED> - - <!ELEMENT ttl EMPTY> - <!-- 0 <= ttl <= 255 --> - <!ATTLIST ttl - value %Digits; #REQUIRED> - - <!ELEMENT protocol EMPTY> - <!-- 0 <= protocol <= 255 (per IANA) --> - <!ATTLIST protocol - value %Digits; #REQUIRED> - - <!ELEMENT checksum EMPTY> - <!-- 0 <= checksum <= 65535 (over header only) --> - <!ATTLIST checksum - value %Digits; #REQUIRED> - - <!ELEMENT source EMPTY> - <!ATTLIST source - address %IP4Addr; #REQUIRED> - - <!ELEMENT destination EMPTY> - <!ATTLIST destination - address %IP4Addr; #REQUIRED> - - <!ELEMENT options ( end | noop | security | loose | strict | record - | stream | timestamp )*> - - <!ELEMENT end EMPTY> - <!ATTLIST end - copied (0|1) #REQUIRED - class CDATA #FIXED "0" - number CDATA #FIXED "0"> - - <!ELEMENT noop EMPTY> - <!ATTLIST noop - copied (0|1) #REQUIRED - class CDATA #FIXED "0" - number CDATA #FIXED "1"> - - <!ELEMENT security EMPTY> - - - -Kennedy Informational [Page 9] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - - <!ATTLIST security - copied CDATA #FIXED "1" - class CDATA #FIXED "0" - number CDATA #FIXED "2" - length CDATA #FIXED "11" - security %Sec; #REQUIRED - compartments %Compartments; #REQUIRED - handling %Handling; #REQUIRED - tcc %TCC; #REQUIRED> - <!ELEMENT loose (hop)+> - <!ATTLIST loose - copied CDATA #FIXED "1" - class CDATA #FIXED "0" - number CDATA #FIXED "3" - length %Digits; #REQUIRED - pointer %Digits; #REQUIRED> - - <!ELEMENT hop EMPTY> - <!ATTLIST hop - address %IP4Addr; #REQUIRED> - - <!ELEMENT strict (hop)+> - <!ATTLIST strict - copied CDATA #FIXED "1" - class CDATA #FIXED "0" - number CDATA #FIXED "9" - length %Digits; #REQUIRED - pointer %Digits; #REQUIRED> - - <!ELEMENT record (hop)+> - <!ATTLIST record - copied CDATA #FIXED "0" - class CDATA #FIXED "0" - number CDATA #FIXED "7" - length %Digits; #REQUIRED - pointer %Digits; #REQUIRED> - - <!ELEMENT stream EMPTY> - <!-- 0 <= id <= 65,535 --> - <!ATTLIST stream - copied CDATA #FIXED "1" - class CDATA #FIXED "0" - number CDATA #FIXED "8" - length CDATA #FIXED "4" - id %Digits; #REQUIRED> - - <!ELEMENT timestamp (tstamp)+> - <!-- 0 <= oflw <=15 --> - - - -Kennedy Informational [Page 10] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - - <!ATTLIST timestamp - copied CDATA #FIXED "0" - class CDATA #FIXED "2" - number CDATA #FIXED "4" - length %Digits; #REQUIRED - pointer %Digits; #REQUIRED - oflw %Digits; #REQUIRED - flag (0 | 1 | 3) #REQUIRED> - - <!ELEMENT tstamp EMPTY> - <!ATTLIST tstamp - time %Digits; #REQUIRED - address %IP4Addr; #IMPLIED> - <!-- - padding to bring header to 32-bit boundary. - pad MUST be "0"* - --> - <!ELEMENT padding EMPTY> - <!ATTLIST padding - pad CDATA #REQUIRED> - - <!-- payload MUST be encoded as base-64 [RFC2045], as modified - by section 2.1 of this RFC --> - <!ELEMENT payload (CDATA)> - -7.2. TCPoXML DTD - - <!-- - DTD for TCP over XML. - Refer to this DTD as: - - <!DOCTYPE tcp PUBLIC "-//IETF//DTD BLOAT 1.0 TCP//EN" "bloat.dtd"> - --> - - <!-- the pseudoheader is only included for checksum calculations --> - <!ELEMENT tcp (tcp.pseudoheader?, tcp.header, payload)> - - <!ELEMENT tcp.header (src, dest, sequence, acknowledgement, offset, - reserved, control, window, checksum, urgent, - tcp.options, padding)> - - <!ELEMENT src EMPTY> - <!-- 0 <= port <= 65,535 --> - <!ATTLIST src - port %Digits; #REQUIRED> - - <!ELEMENT dest EMPTY> - <!-- 0 <= port <= 65,535 --> - - - -Kennedy Informational [Page 11] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - - <!ATTLIST dest - port %Digits; #REQUIRED> - - <!ELEMENT sequence EMPTY> - <!-- 0 <= number <= 4294967295 --> - <!ATTLIST sequence - number %Digits; #REQUIRED> - - <!ELEMENT acknowledgement EMPTY> - <!-- 0 <= number <= 4294967295 --> - <!ATTLIST acknowledgement - number %Digits; #REQUIRED> - - <!ELEMENT offset EMPTY> - <!-- 0 <= number <= 255 --> - <!ATTLIST offset - number %Digits; #REQUIRED> - - <!ELEMENT reserved EMPTY> - <!ATTLIST reserved - value CDATA #FIXED "0"> - - <!ELEMENT control EMPTY> - <!ATTLIST control - urg (0|1) #IMPLIED - ack (0|1) #IMPLIED - psh (0|1) #IMPLIED - rst (0|1) #IMPLIED - syn (0|1) #IMPLIED - fin (0|1) #IMPLIED> - - <!ELEMENT window EMPTY> - <!-- 0 <= size <= 65,535 --> - <!ATTLIST window - size %Digits; #REQUIRED> - - <!-- - checksum as in ip, but with - the following pseudo-header added into the tcp element: - --> - <!ELEMENT tcp.pseudoheader (source, destination, protocol, - tcp.length)> - - <!-- - tcp header + data length in octets. does not include the size of - - the pseudoheader. - --> - - - -Kennedy Informational [Page 12] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - - <!ELEMENT tcp.length EMPTY> - <!ATTLIST tcp.length - value %Digits; #REQUIRED> - - <!ELEMENT urgent EMPTY> - <!-- 0 <= pointer <= 65,535 --> - <!ATTLIST urgent - pointer %Digits; #REQUIRED> - - <!ELEMENT tcp.options (tcp.end | tcp.noop | tcp.mss)+> - - <!ELEMENT tcp.end EMPTY> - <!ATTLIST tcp.end - kind CDATA #FIXED "0"> - - <!ELEMENT tcp.noop EMPTY> - <!ATTLIST tcp.noop - kind CDATA #FIXED "1"> - - <!ELEMENT tcp.mss EMPTY> - <!ATTLIST tcp.mss - kind CDATA #FIXED "2" - length CDATA #FIXED "4" - size %Digits; #REQUIRED> - -7.3. UDPoXML DTD - - <!-- - DTD for UDP over XML. - Refer to this DTD as: - - <!DOCTYPE udp PUBLIC "-//IETF//DTD BLOAT 1.0 UDP//EN" "bloat.dtd"> - --> - - <!ELEMENT udp (udp.pseudoheader?, udp.header, payload)> - - <!ELEMENT udp.header (src, dest, udp.length, checksum)> - - <!ELEMENT udp.pseudoheader (source, destination, protocol, - udp.length)> - - <!-- - udp header + data length in octets. does not include the size of - the pseudoheader. - --> - <!ELEMENT udp.length EMPTY> - <!ATTLIST udp.length - value %Digits; #REQUIRED> - - - -Kennedy Informational [Page 13] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - -8. Security Considerations - - XML, as a subset of SGML, has the same security considerations as - specified in SGML Media Types [RFC1874]. Security considerations - that apply to IP, TCP and UDP also likely apply to BLOAT as it does - not attempt to correct for issues not related to message format. - -9. References - - [JABBER] Miller, J., "Jabber", draft-miller-jabber-00.txt, - February 2002. (Work in Progress) - - [RFC768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, - August 1980. - - [RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791, - September 1981. - - [RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC - 793, September 1981. - - [RFC894] Hornig, C., "Standard for the Transmission of IP - Datagrams over Ethernet Networks.", RFC 894, April 1984. - - [RFC1042] Postel, J. and J. Reynolds, "Standard for the - Transmission of IP Datagrams Over IEEE 802 Networks", STD - 43, RFC 1042, February 1988. - - [RFC1123] Braden, R., "Requirements for Internet Hosts - - Application and Support", RFC 1123, October 1989. - - [RFC1874] Levinson, E., "SGML Media Types", RFC 1874, December - 1995. - - [RFC2003] Perkins, C., "IP Encapsulation within IP", RFC 2003, - October 1996. - - [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail - Extensions (MIME) Part One: Format of Internet Message - Bodies", RFC 2045, November 1996. - - [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate - Requirement Levels", BCP 14, RFC 2119, March 1997. - - [RFC2279] Yergeau, F., "UTF-8, a transformation format of ISO - 10646", RFC 2279, January 1998. - - - - - -Kennedy Informational [Page 14] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - - [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 - (IPv6) Specification", RFC 2460, December 1998. - - [RFC3080] Rose, M., "The Blocks Extensible Exchange Protocol Core", - RFC 3080, March 2001. - - [SOAP] Box, D., Ehnebuske, D., Kakivaya, G., Layman, A., - Mendelsohn, N., Nielsen, H. F., Thatte, S. Winer, D., - "Simple Object Access Protocol (SOAP) 1.1" World Wide Web - Consortium Note, May 2000 http://www.w3.org/TR/SOAP/ - - [XML] Bray, T., Paoli, J., Sperberg-McQueen, C. M., "Extensible - Markup Language (XML)" World Wide Web Consortium - Recommendation REC- xml-19980210. - http://www.w3.org/TR/1998/REC-xml-19980210 - -10. Author's Address - - Hugh Kennedy - Mimezine - 1060 West Addison - Chicago, IL 60613 - USA - - EMail: kennedyh@engin.umich.edu - - - - - - - - - - - - - - - - - - - - - - - - - - -Kennedy Informational [Page 15] - -RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 - - -11. Full Copyright Statement - - Copyright (C) The Internet Society (2002). All Rights Reserved. - - This document and translations of it may be copied and furnished to - others, and derivative works that comment on or otherwise explain it - or assist in its implementation may be prepared, copied, published - and distributed, in whole or in part, without restriction of any - kind, provided that the above copyright notice and this paragraph are - included on all such copies and derivative works. However, this - document itself may not be modified in any way, such as by removing - the copyright notice or references to the Internet Society or other - Internet organizations, except as needed for the purpose of - developing Internet standards in which case the procedures for - copyrights defined in the Internet Standards process must be - followed, or as required to translate it into languages other than - English. - - The limited permissions granted above are perpetual and will not be - revoked by the Internet Society or its successors or assigns. - - This document and the information contained herein is provided on an - "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING - TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION - HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF - MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - -Acknowledgement - - Funding for the RFC Editor function is currently provided by the - Internet Society. - - - - - - - - - - - - - - - - - - - -Kennedy Informational [Page 16] - diff -Nru qtbase-opensource-src-5.15.3+dfsg/util/unicode/README qtbase-opensource-src-5.15.8+dfsg/util/unicode/README --- qtbase-opensource-src-5.15.3+dfsg/util/unicode/README 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/util/unicode/README 2022-11-11 15:29:17.000000000 +0800 @@ -4,8 +4,8 @@ * Find the data (UAX #44, UCD; not the XML version) at ftp://www.unicode.org/Public/zipped/$Version/ * Unpack the zip file; for each file in data/, replace with the new - version; find the *BreakProperty.txt in auxiliary/. (These last are - only in the zip, not in the web-space's unpacked versions.) + version; find the *BreakProperty.txt in auxiliary/ and emoji-data.txt + in emoji/. * In tst_QTextBoundaryFinder's data/ sub-directory, update its files from the auxiliary/ sub-directory of the UCD data. * If needed, add an entry to enum QChar::UnicodeVersion for the new diff -Nru qtbase-opensource-src-5.15.3+dfsg/util/unicode/data/emoji-data.txt qtbase-opensource-src-5.15.8+dfsg/util/unicode/data/emoji-data.txt --- qtbase-opensource-src-5.15.3+dfsg/util/unicode/data/emoji-data.txt 1970-01-01 08:00:00.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/util/unicode/data/emoji-data.txt 2022-11-11 15:29:17.000000000 +0800 @@ -0,0 +1,1261 @@ +# emoji-data.txt +# Date: 2020-01-28, 20:52:38 GMT +# © 2020 Unicode®, Inc. +# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# +# Emoji Data for UTS #51 +# Version: 13.0 +# +# For documentation and usage, see http://www.unicode.org/reports/tr51 +# +# Format: +# <codepoint(s)> ; <property> # <comments> +# Note: there is no guarantee as to the structure of whitespace or comments +# +# Characters and sequences are listed in code point order. Users should be shown a more natural order. +# See the CLDR collation order for Emoji. + + +# ================================================ + +# All omitted code points have Emoji=No +# @missing: 0000..10FFFF ; Emoji ; No + +0023 ; Emoji # E0.0 [1] (#️) number sign +002A ; Emoji # E0.0 [1] (*️) asterisk +0030..0039 ; Emoji # E0.0 [10] (0️..9️) digit zero..digit nine +00A9 ; Emoji # E0.6 [1] (©️) copyright +00AE ; Emoji # E0.6 [1] (®️) registered +203C ; Emoji # E0.6 [1] (‼️) double exclamation mark +2049 ; Emoji # E0.6 [1] (⁉️) exclamation question mark +2122 ; Emoji # E0.6 [1] (™️) trade mark +2139 ; Emoji # E0.6 [1] (ℹ️) information +2194..2199 ; Emoji # E0.6 [6] (↔️..↙️) left-right arrow..down-left arrow +21A9..21AA ; Emoji # E0.6 [2] (↩️..↪️) right arrow curving left..left arrow curving right +231A..231B ; Emoji # E0.6 [2] (⌚..⌛) watch..hourglass done +2328 ; Emoji # E1.0 [1] (⌨️) keyboard +23CF ; Emoji # E1.0 [1] (⏏️) eject button +23E9..23EC ; Emoji # E0.6 [4] (⏩..⏬) fast-forward button..fast down button +23ED..23EE ; Emoji # E0.7 [2] (⏭️..⏮️) next track button..last track button +23EF ; Emoji # E1.0 [1] (⏯️) play or pause button +23F0 ; Emoji # E0.6 [1] (⏰) alarm clock +23F1..23F2 ; Emoji # E1.0 [2] (⏱️..⏲️) stopwatch..timer clock +23F3 ; Emoji # E0.6 [1] (⏳) hourglass not done +23F8..23FA ; Emoji # E0.7 [3] (⏸️..⏺️) pause button..record button +24C2 ; Emoji # E0.6 [1] (Ⓜ️) circled M +25AA..25AB ; Emoji # E0.6 [2] (▪️..▫️) black small square..white small square +25B6 ; Emoji # E0.6 [1] (▶️) play button +25C0 ; Emoji # E0.6 [1] (◀️) reverse button +25FB..25FE ; Emoji # E0.6 [4] (◻️..◾) white medium square..black medium-small square +2600..2601 ; Emoji # E0.6 [2] (☀️..☁️) sun..cloud +2602..2603 ; Emoji # E0.7 [2] (☂️..☃️) umbrella..snowman +2604 ; Emoji # E1.0 [1] (☄️) comet +260E ; Emoji # E0.6 [1] (☎️) telephone +2611 ; Emoji # E0.6 [1] (☑️) check box with check +2614..2615 ; Emoji # E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage +2618 ; Emoji # E1.0 [1] (☘️) shamrock +261D ; Emoji # E0.6 [1] (☝️) index pointing up +2620 ; Emoji # E1.0 [1] (☠️) skull and crossbones +2622..2623 ; Emoji # E1.0 [2] (☢️..☣️) radioactive..biohazard +2626 ; Emoji # E1.0 [1] (☦️) orthodox cross +262A ; Emoji # E0.7 [1] (☪️) star and crescent +262E ; Emoji # E1.0 [1] (☮️) peace symbol +262F ; Emoji # E0.7 [1] (☯️) yin yang +2638..2639 ; Emoji # E0.7 [2] (☸️..☹️) wheel of dharma..frowning face +263A ; Emoji # E0.6 [1] (☺️) smiling face +2640 ; Emoji # E4.0 [1] (♀️) female sign +2642 ; Emoji # E4.0 [1] (♂️) male sign +2648..2653 ; Emoji # E0.6 [12] (♈..♓) Aries..Pisces +265F ; Emoji # E11.0 [1] (♟️) chess pawn +2660 ; Emoji # E0.6 [1] (♠️) spade suit +2663 ; Emoji # E0.6 [1] (♣️) club suit +2665..2666 ; Emoji # E0.6 [2] (♥️..♦️) heart suit..diamond suit +2668 ; Emoji # E0.6 [1] (♨️) hot springs +267B ; Emoji # E0.6 [1] (♻️) recycling symbol +267E ; Emoji # E11.0 [1] (♾️) infinity +267F ; Emoji # E0.6 [1] (♿) wheelchair symbol +2692 ; Emoji # E1.0 [1] (⚒️) hammer and pick +2693 ; Emoji # E0.6 [1] (⚓) anchor +2694 ; Emoji # E1.0 [1] (⚔️) crossed swords +2695 ; Emoji # E4.0 [1] (⚕️) medical symbol +2696..2697 ; Emoji # E1.0 [2] (⚖️..⚗️) balance scale..alembic +2699 ; Emoji # E1.0 [1] (⚙️) gear +269B..269C ; Emoji # E1.0 [2] (⚛️..⚜️) atom symbol..fleur-de-lis +26A0..26A1 ; Emoji # E0.6 [2] (⚠️..⚡) warning..high voltage +26A7 ; Emoji # E13.0 [1] (⚧️) transgender symbol +26AA..26AB ; Emoji # E0.6 [2] (⚪..⚫) white circle..black circle +26B0..26B1 ; Emoji # E1.0 [2] (⚰️..⚱️) coffin..funeral urn +26BD..26BE ; Emoji # E0.6 [2] (⚽..⚾) soccer ball..baseball +26C4..26C5 ; Emoji # E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud +26C8 ; Emoji # E0.7 [1] (⛈️) cloud with lightning and rain +26CE ; Emoji # E0.6 [1] (⛎) Ophiuchus +26CF ; Emoji # E0.7 [1] (⛏️) pick +26D1 ; Emoji # E0.7 [1] (⛑️) rescue worker’s helmet +26D3 ; Emoji # E0.7 [1] (⛓️) chains +26D4 ; Emoji # E0.6 [1] (⛔) no entry +26E9 ; Emoji # E0.7 [1] (⛩️) shinto shrine +26EA ; Emoji # E0.6 [1] (⛪) church +26F0..26F1 ; Emoji # E0.7 [2] (⛰️..⛱️) mountain..umbrella on ground +26F2..26F3 ; Emoji # E0.6 [2] (⛲..⛳) fountain..flag in hole +26F4 ; Emoji # E0.7 [1] (⛴️) ferry +26F5 ; Emoji # E0.6 [1] (⛵) sailboat +26F7..26F9 ; Emoji # E0.7 [3] (⛷️..⛹️) skier..person bouncing ball +26FA ; Emoji # E0.6 [1] (⛺) tent +26FD ; Emoji # E0.6 [1] (⛽) fuel pump +2702 ; Emoji # E0.6 [1] (✂️) scissors +2705 ; Emoji # E0.6 [1] (✅) check mark button +2708..270C ; Emoji # E0.6 [5] (✈️..✌️) airplane..victory hand +270D ; Emoji # E0.7 [1] (✍️) writing hand +270F ; Emoji # E0.6 [1] (✏️) pencil +2712 ; Emoji # E0.6 [1] (✒️) black nib +2714 ; Emoji # E0.6 [1] (✔️) check mark +2716 ; Emoji # E0.6 [1] (✖️) multiply +271D ; Emoji # E0.7 [1] (✝️) latin cross +2721 ; Emoji # E0.7 [1] (✡️) star of David +2728 ; Emoji # E0.6 [1] (✨) sparkles +2733..2734 ; Emoji # E0.6 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star +2744 ; Emoji # E0.6 [1] (❄️) snowflake +2747 ; Emoji # E0.6 [1] (❇️) sparkle +274C ; Emoji # E0.6 [1] (❌) cross mark +274E ; Emoji # E0.6 [1] (❎) cross mark button +2753..2755 ; Emoji # E0.6 [3] (❓..❕) question mark..white exclamation mark +2757 ; Emoji # E0.6 [1] (❗) exclamation mark +2763 ; Emoji # E1.0 [1] (❣️) heart exclamation +2764 ; Emoji # E0.6 [1] (❤️) red heart +2795..2797 ; Emoji # E0.6 [3] (➕..➗) plus..divide +27A1 ; Emoji # E0.6 [1] (➡️) right arrow +27B0 ; Emoji # E0.6 [1] (➰) curly loop +27BF ; Emoji # E1.0 [1] (➿) double curly loop +2934..2935 ; Emoji # E0.6 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down +2B05..2B07 ; Emoji # E0.6 [3] (⬅️..⬇️) left arrow..down arrow +2B1B..2B1C ; Emoji # E0.6 [2] (⬛..⬜) black large square..white large square +2B50 ; Emoji # E0.6 [1] (⭐) star +2B55 ; Emoji # E0.6 [1] (⭕) hollow red circle +3030 ; Emoji # E0.6 [1] (〰️) wavy dash +303D ; Emoji # E0.6 [1] (〽️) part alternation mark +3297 ; Emoji # E0.6 [1] (㊗️) Japanese “congratulations” button +3299 ; Emoji # E0.6 [1] (㊙️) Japanese “secret” button +1F004 ; Emoji # E0.6 [1] (🀄) mahjong red dragon +1F0CF ; Emoji # E0.6 [1] (🃏) joker +1F170..1F171 ; Emoji # E0.6 [2] (🅰️..🅱️) A button (blood type)..B button (blood type) +1F17E..1F17F ; Emoji # E0.6 [2] (🅾️..🅿️) O button (blood type)..P button +1F18E ; Emoji # E0.6 [1] (🆎) AB button (blood type) +1F191..1F19A ; Emoji # E0.6 [10] (🆑..🆚) CL button..VS button +1F1E6..1F1FF ; Emoji # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z +1F201..1F202 ; Emoji # E0.6 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button +1F21A ; Emoji # E0.6 [1] (🈚) Japanese “free of charge” button +1F22F ; Emoji # E0.6 [1] (🈯) Japanese “reserved” button +1F232..1F23A ; Emoji # E0.6 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button +1F250..1F251 ; Emoji # E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button +1F300..1F30C ; Emoji # E0.6 [13] (🌀..🌌) cyclone..milky way +1F30D..1F30E ; Emoji # E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas +1F30F ; Emoji # E0.6 [1] (🌏) globe showing Asia-Australia +1F310 ; Emoji # E1.0 [1] (🌐) globe with meridians +1F311 ; Emoji # E0.6 [1] (🌑) new moon +1F312 ; Emoji # E1.0 [1] (🌒) waxing crescent moon +1F313..1F315 ; Emoji # E0.6 [3] (🌓..🌕) first quarter moon..full moon +1F316..1F318 ; Emoji # E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon +1F319 ; Emoji # E0.6 [1] (🌙) crescent moon +1F31A ; Emoji # E1.0 [1] (🌚) new moon face +1F31B ; Emoji # E0.6 [1] (🌛) first quarter moon face +1F31C ; Emoji # E0.7 [1] (🌜) last quarter moon face +1F31D..1F31E ; Emoji # E1.0 [2] (🌝..🌞) full moon face..sun with face +1F31F..1F320 ; Emoji # E0.6 [2] (🌟..🌠) glowing star..shooting star +1F321 ; Emoji # E0.7 [1] (🌡️) thermometer +1F324..1F32C ; Emoji # E0.7 [9] (🌤️..🌬️) sun behind small cloud..wind face +1F32D..1F32F ; Emoji # E1.0 [3] (🌭..🌯) hot dog..burrito +1F330..1F331 ; Emoji # E0.6 [2] (🌰..🌱) chestnut..seedling +1F332..1F333 ; Emoji # E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree +1F334..1F335 ; Emoji # E0.6 [2] (🌴..🌵) palm tree..cactus +1F336 ; Emoji # E0.7 [1] (🌶️) hot pepper +1F337..1F34A ; Emoji # E0.6 [20] (🌷..🍊) tulip..tangerine +1F34B ; Emoji # E1.0 [1] (🍋) lemon +1F34C..1F34F ; Emoji # E0.6 [4] (🍌..🍏) banana..green apple +1F350 ; Emoji # E1.0 [1] (🍐) pear +1F351..1F37B ; Emoji # E0.6 [43] (🍑..🍻) peach..clinking beer mugs +1F37C ; Emoji # E1.0 [1] (🍼) baby bottle +1F37D ; Emoji # E0.7 [1] (🍽️) fork and knife with plate +1F37E..1F37F ; Emoji # E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn +1F380..1F393 ; Emoji # E0.6 [20] (🎀..🎓) ribbon..graduation cap +1F396..1F397 ; Emoji # E0.7 [2] (🎖️..🎗️) military medal..reminder ribbon +1F399..1F39B ; Emoji # E0.7 [3] (🎙️..🎛️) studio microphone..control knobs +1F39E..1F39F ; Emoji # E0.7 [2] (🎞️..🎟️) film frames..admission tickets +1F3A0..1F3C4 ; Emoji # E0.6 [37] (🎠..🏄) carousel horse..person surfing +1F3C5 ; Emoji # E1.0 [1] (🏅) sports medal +1F3C6 ; Emoji # E0.6 [1] (🏆) trophy +1F3C7 ; Emoji # E1.0 [1] (🏇) horse racing +1F3C8 ; Emoji # E0.6 [1] (🏈) american football +1F3C9 ; Emoji # E1.0 [1] (🏉) rugby football +1F3CA ; Emoji # E0.6 [1] (🏊) person swimming +1F3CB..1F3CE ; Emoji # E0.7 [4] (🏋️..🏎️) person lifting weights..racing car +1F3CF..1F3D3 ; Emoji # E1.0 [5] (🏏..🏓) cricket game..ping pong +1F3D4..1F3DF ; Emoji # E0.7 [12] (🏔️..🏟️) snow-capped mountain..stadium +1F3E0..1F3E3 ; Emoji # E0.6 [4] (🏠..🏣) house..Japanese post office +1F3E4 ; Emoji # E1.0 [1] (🏤) post office +1F3E5..1F3F0 ; Emoji # E0.6 [12] (🏥..🏰) hospital..castle +1F3F3 ; Emoji # E0.7 [1] (🏳️) white flag +1F3F4 ; Emoji # E1.0 [1] (🏴) black flag +1F3F5 ; Emoji # E0.7 [1] (🏵️) rosette +1F3F7 ; Emoji # E0.7 [1] (🏷️) label +1F3F8..1F407 ; Emoji # E1.0 [16] (🏸..🐇) badminton..rabbit +1F408 ; Emoji # E0.7 [1] (🐈) cat +1F409..1F40B ; Emoji # E1.0 [3] (🐉..🐋) dragon..whale +1F40C..1F40E ; Emoji # E0.6 [3] (🐌..🐎) snail..horse +1F40F..1F410 ; Emoji # E1.0 [2] (🐏..🐐) ram..goat +1F411..1F412 ; Emoji # E0.6 [2] (🐑..🐒) ewe..monkey +1F413 ; Emoji # E1.0 [1] (🐓) rooster +1F414 ; Emoji # E0.6 [1] (🐔) chicken +1F415 ; Emoji # E0.7 [1] (🐕) dog +1F416 ; Emoji # E1.0 [1] (🐖) pig +1F417..1F429 ; Emoji # E0.6 [19] (🐗..🐩) boar..poodle +1F42A ; Emoji # E1.0 [1] (🐪) camel +1F42B..1F43E ; Emoji # E0.6 [20] (🐫..🐾) two-hump camel..paw prints +1F43F ; Emoji # E0.7 [1] (🐿️) chipmunk +1F440 ; Emoji # E0.6 [1] (👀) eyes +1F441 ; Emoji # E0.7 [1] (👁️) eye +1F442..1F464 ; Emoji # E0.6 [35] (👂..👤) ear..bust in silhouette +1F465 ; Emoji # E1.0 [1] (👥) busts in silhouette +1F466..1F46B ; Emoji # E0.6 [6] (👦..👫) boy..woman and man holding hands +1F46C..1F46D ; Emoji # E1.0 [2] (👬..👭) men holding hands..women holding hands +1F46E..1F4AC ; Emoji # E0.6 [63] (👮..💬) police officer..speech balloon +1F4AD ; Emoji # E1.0 [1] (💭) thought balloon +1F4AE..1F4B5 ; Emoji # E0.6 [8] (💮..💵) white flower..dollar banknote +1F4B6..1F4B7 ; Emoji # E1.0 [2] (💶..💷) euro banknote..pound banknote +1F4B8..1F4EB ; Emoji # E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag +1F4EC..1F4ED ; Emoji # E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag +1F4EE ; Emoji # E0.6 [1] (📮) postbox +1F4EF ; Emoji # E1.0 [1] (📯) postal horn +1F4F0..1F4F4 ; Emoji # E0.6 [5] (📰..📴) newspaper..mobile phone off +1F4F5 ; Emoji # E1.0 [1] (📵) no mobile phones +1F4F6..1F4F7 ; Emoji # E0.6 [2] (📶..📷) antenna bars..camera +1F4F8 ; Emoji # E1.0 [1] (📸) camera with flash +1F4F9..1F4FC ; Emoji # E0.6 [4] (📹..📼) video camera..videocassette +1F4FD ; Emoji # E0.7 [1] (📽️) film projector +1F4FF..1F502 ; Emoji # E1.0 [4] (📿..🔂) prayer beads..repeat single button +1F503 ; Emoji # E0.6 [1] (🔃) clockwise vertical arrows +1F504..1F507 ; Emoji # E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker +1F508 ; Emoji # E0.7 [1] (🔈) speaker low volume +1F509 ; Emoji # E1.0 [1] (🔉) speaker medium volume +1F50A..1F514 ; Emoji # E0.6 [11] (🔊..🔔) speaker high volume..bell +1F515 ; Emoji # E1.0 [1] (🔕) bell with slash +1F516..1F52B ; Emoji # E0.6 [22] (🔖..🔫) bookmark..pistol +1F52C..1F52D ; Emoji # E1.0 [2] (🔬..🔭) microscope..telescope +1F52E..1F53D ; Emoji # E0.6 [16] (🔮..🔽) crystal ball..downwards button +1F549..1F54A ; Emoji # E0.7 [2] (🕉️..🕊️) om..dove +1F54B..1F54E ; Emoji # E1.0 [4] (🕋..🕎) kaaba..menorah +1F550..1F55B ; Emoji # E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock +1F55C..1F567 ; Emoji # E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty +1F56F..1F570 ; Emoji # E0.7 [2] (🕯️..🕰️) candle..mantelpiece clock +1F573..1F579 ; Emoji # E0.7 [7] (🕳️..🕹️) hole..joystick +1F57A ; Emoji # E3.0 [1] (🕺) man dancing +1F587 ; Emoji # E0.7 [1] (🖇️) linked paperclips +1F58A..1F58D ; Emoji # E0.7 [4] (🖊️..🖍️) pen..crayon +1F590 ; Emoji # E0.7 [1] (🖐️) hand with fingers splayed +1F595..1F596 ; Emoji # E1.0 [2] (🖕..🖖) middle finger..vulcan salute +1F5A4 ; Emoji # E3.0 [1] (🖤) black heart +1F5A5 ; Emoji # E0.7 [1] (🖥️) desktop computer +1F5A8 ; Emoji # E0.7 [1] (🖨️) printer +1F5B1..1F5B2 ; Emoji # E0.7 [2] (🖱️..🖲️) computer mouse..trackball +1F5BC ; Emoji # E0.7 [1] (🖼️) framed picture +1F5C2..1F5C4 ; Emoji # E0.7 [3] (🗂️..🗄️) card index dividers..file cabinet +1F5D1..1F5D3 ; Emoji # E0.7 [3] (🗑️..🗓️) wastebasket..spiral calendar +1F5DC..1F5DE ; Emoji # E0.7 [3] (🗜️..🗞️) clamp..rolled-up newspaper +1F5E1 ; Emoji # E0.7 [1] (🗡️) dagger +1F5E3 ; Emoji # E0.7 [1] (🗣️) speaking head +1F5E8 ; Emoji # E2.0 [1] (🗨️) left speech bubble +1F5EF ; Emoji # E0.7 [1] (🗯️) right anger bubble +1F5F3 ; Emoji # E0.7 [1] (🗳️) ballot box with ballot +1F5FA ; Emoji # E0.7 [1] (🗺️) world map +1F5FB..1F5FF ; Emoji # E0.6 [5] (🗻..🗿) mount fuji..moai +1F600 ; Emoji # E1.0 [1] (😀) grinning face +1F601..1F606 ; Emoji # E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face +1F607..1F608 ; Emoji # E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns +1F609..1F60D ; Emoji # E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes +1F60E ; Emoji # E1.0 [1] (😎) smiling face with sunglasses +1F60F ; Emoji # E0.6 [1] (😏) smirking face +1F610 ; Emoji # E0.7 [1] (😐) neutral face +1F611 ; Emoji # E1.0 [1] (😑) expressionless face +1F612..1F614 ; Emoji # E0.6 [3] (😒..😔) unamused face..pensive face +1F615 ; Emoji # E1.0 [1] (😕) confused face +1F616 ; Emoji # E0.6 [1] (😖) confounded face +1F617 ; Emoji # E1.0 [1] (😗) kissing face +1F618 ; Emoji # E0.6 [1] (😘) face blowing a kiss +1F619 ; Emoji # E1.0 [1] (😙) kissing face with smiling eyes +1F61A ; Emoji # E0.6 [1] (😚) kissing face with closed eyes +1F61B ; Emoji # E1.0 [1] (😛) face with tongue +1F61C..1F61E ; Emoji # E0.6 [3] (😜..😞) winking face with tongue..disappointed face +1F61F ; Emoji # E1.0 [1] (😟) worried face +1F620..1F625 ; Emoji # E0.6 [6] (😠..😥) angry face..sad but relieved face +1F626..1F627 ; Emoji # E1.0 [2] (😦..😧) frowning face with open mouth..anguished face +1F628..1F62B ; Emoji # E0.6 [4] (😨..😫) fearful face..tired face +1F62C ; Emoji # E1.0 [1] (😬) grimacing face +1F62D ; Emoji # E0.6 [1] (😭) loudly crying face +1F62E..1F62F ; Emoji # E1.0 [2] (😮..😯) face with open mouth..hushed face +1F630..1F633 ; Emoji # E0.6 [4] (😰..😳) anxious face with sweat..flushed face +1F634 ; Emoji # E1.0 [1] (😴) sleeping face +1F635 ; Emoji # E0.6 [1] (😵) dizzy face +1F636 ; Emoji # E1.0 [1] (😶) face without mouth +1F637..1F640 ; Emoji # E0.6 [10] (😷..🙀) face with medical mask..weary cat +1F641..1F644 ; Emoji # E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes +1F645..1F64F ; Emoji # E0.6 [11] (🙅..🙏) person gesturing NO..folded hands +1F680 ; Emoji # E0.6 [1] (🚀) rocket +1F681..1F682 ; Emoji # E1.0 [2] (🚁..🚂) helicopter..locomotive +1F683..1F685 ; Emoji # E0.6 [3] (🚃..🚅) railway car..bullet train +1F686 ; Emoji # E1.0 [1] (🚆) train +1F687 ; Emoji # E0.6 [1] (🚇) metro +1F688 ; Emoji # E1.0 [1] (🚈) light rail +1F689 ; Emoji # E0.6 [1] (🚉) station +1F68A..1F68B ; Emoji # E1.0 [2] (🚊..🚋) tram..tram car +1F68C ; Emoji # E0.6 [1] (🚌) bus +1F68D ; Emoji # E0.7 [1] (🚍) oncoming bus +1F68E ; Emoji # E1.0 [1] (🚎) trolleybus +1F68F ; Emoji # E0.6 [1] (🚏) bus stop +1F690 ; Emoji # E1.0 [1] (🚐) minibus +1F691..1F693 ; Emoji # E0.6 [3] (🚑..🚓) ambulance..police car +1F694 ; Emoji # E0.7 [1] (🚔) oncoming police car +1F695 ; Emoji # E0.6 [1] (🚕) taxi +1F696 ; Emoji # E1.0 [1] (🚖) oncoming taxi +1F697 ; Emoji # E0.6 [1] (🚗) automobile +1F698 ; Emoji # E0.7 [1] (🚘) oncoming automobile +1F699..1F69A ; Emoji # E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck +1F69B..1F6A1 ; Emoji # E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway +1F6A2 ; Emoji # E0.6 [1] (🚢) ship +1F6A3 ; Emoji # E1.0 [1] (🚣) person rowing boat +1F6A4..1F6A5 ; Emoji # E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light +1F6A6 ; Emoji # E1.0 [1] (🚦) vertical traffic light +1F6A7..1F6AD ; Emoji # E0.6 [7] (🚧..🚭) construction..no smoking +1F6AE..1F6B1 ; Emoji # E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water +1F6B2 ; Emoji # E0.6 [1] (🚲) bicycle +1F6B3..1F6B5 ; Emoji # E1.0 [3] (🚳..🚵) no bicycles..person mountain biking +1F6B6 ; Emoji # E0.6 [1] (🚶) person walking +1F6B7..1F6B8 ; Emoji # E1.0 [2] (🚷..🚸) no pedestrians..children crossing +1F6B9..1F6BE ; Emoji # E0.6 [6] (🚹..🚾) men’s room..water closet +1F6BF ; Emoji # E1.0 [1] (🚿) shower +1F6C0 ; Emoji # E0.6 [1] (🛀) person taking bath +1F6C1..1F6C5 ; Emoji # E1.0 [5] (🛁..🛅) bathtub..left luggage +1F6CB ; Emoji # E0.7 [1] (🛋️) couch and lamp +1F6CC ; Emoji # E1.0 [1] (🛌) person in bed +1F6CD..1F6CF ; Emoji # E0.7 [3] (🛍️..🛏️) shopping bags..bed +1F6D0 ; Emoji # E1.0 [1] (🛐) place of worship +1F6D1..1F6D2 ; Emoji # E3.0 [2] (🛑..🛒) stop sign..shopping cart +1F6D5 ; Emoji # E12.0 [1] (🛕) hindu temple +1F6D6..1F6D7 ; Emoji # E13.0 [2] (🛖..🛗) hut..elevator +1F6E0..1F6E5 ; Emoji # E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat +1F6E9 ; Emoji # E0.7 [1] (🛩️) small airplane +1F6EB..1F6EC ; Emoji # E1.0 [2] (🛫..🛬) airplane departure..airplane arrival +1F6F0 ; Emoji # E0.7 [1] (🛰️) satellite +1F6F3 ; Emoji # E0.7 [1] (🛳️) passenger ship +1F6F4..1F6F6 ; Emoji # E3.0 [3] (🛴..🛶) kick scooter..canoe +1F6F7..1F6F8 ; Emoji # E5.0 [2] (🛷..🛸) sled..flying saucer +1F6F9 ; Emoji # E11.0 [1] (🛹) skateboard +1F6FA ; Emoji # E12.0 [1] (🛺) auto rickshaw +1F6FB..1F6FC ; Emoji # E13.0 [2] (🛻..🛼) pickup truck..roller skate +1F7E0..1F7EB ; Emoji # E12.0 [12] (🟠..🟫) orange circle..brown square +1F90C ; Emoji # E13.0 [1] (🤌) pinched fingers +1F90D..1F90F ; Emoji # E12.0 [3] (🤍..🤏) white heart..pinching hand +1F910..1F918 ; Emoji # E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns +1F919..1F91E ; Emoji # E3.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Emoji # E5.0 [1] (🤟) love-you gesture +1F920..1F927 ; Emoji # E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face +1F928..1F92F ; Emoji # E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head +1F930 ; Emoji # E3.0 [1] (🤰) pregnant woman +1F931..1F932 ; Emoji # E5.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F93A ; Emoji # E3.0 [8] (🤳..🤺) selfie..person fencing +1F93C..1F93E ; Emoji # E3.0 [3] (🤼..🤾) people wrestling..person playing handball +1F93F ; Emoji # E12.0 [1] (🤿) diving mask +1F940..1F945 ; Emoji # E3.0 [6] (🥀..🥅) wilted flower..goal net +1F947..1F94B ; Emoji # E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform +1F94C ; Emoji # E5.0 [1] (🥌) curling stone +1F94D..1F94F ; Emoji # E11.0 [3] (🥍..🥏) lacrosse..flying disc +1F950..1F95E ; Emoji # E3.0 [15] (🥐..🥞) croissant..pancakes +1F95F..1F96B ; Emoji # E5.0 [13] (🥟..🥫) dumpling..canned food +1F96C..1F970 ; Emoji # E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts +1F971 ; Emoji # E12.0 [1] (🥱) yawning face +1F972 ; Emoji # E13.0 [1] (🥲) smiling face with tear +1F973..1F976 ; Emoji # E11.0 [4] (🥳..🥶) partying face..cold face +1F977..1F978 ; Emoji # E13.0 [2] (🥷..🥸) ninja..disguised face +1F97A ; Emoji # E11.0 [1] (🥺) pleading face +1F97B ; Emoji # E12.0 [1] (🥻) sari +1F97C..1F97F ; Emoji # E11.0 [4] (🥼..🥿) lab coat..flat shoe +1F980..1F984 ; Emoji # E1.0 [5] (🦀..🦄) crab..unicorn +1F985..1F991 ; Emoji # E3.0 [13] (🦅..🦑) eagle..squid +1F992..1F997 ; Emoji # E5.0 [6] (🦒..🦗) giraffe..cricket +1F998..1F9A2 ; Emoji # E11.0 [11] (🦘..🦢) kangaroo..swan +1F9A3..1F9A4 ; Emoji # E13.0 [2] (🦣..🦤) mammoth..dodo +1F9A5..1F9AA ; Emoji # E12.0 [6] (🦥..🦪) sloth..oyster +1F9AB..1F9AD ; Emoji # E13.0 [3] (🦫..🦭) beaver..seal +1F9AE..1F9AF ; Emoji # E12.0 [2] (🦮..🦯) guide dog..white cane +1F9B0..1F9B9 ; Emoji # E11.0 [10] (🦰..🦹) red hair..supervillain +1F9BA..1F9BF ; Emoji # E12.0 [6] (🦺..🦿) safety vest..mechanical leg +1F9C0 ; Emoji # E1.0 [1] (🧀) cheese wedge +1F9C1..1F9C2 ; Emoji # E11.0 [2] (🧁..🧂) cupcake..salt +1F9C3..1F9CA ; Emoji # E12.0 [8] (🧃..🧊) beverage box..ice +1F9CB ; Emoji # E13.0 [1] (🧋) bubble tea +1F9CD..1F9CF ; Emoji # E12.0 [3] (🧍..🧏) person standing..deaf person +1F9D0..1F9E6 ; Emoji # E5.0 [23] (🧐..🧦) face with monocle..socks +1F9E7..1F9FF ; Emoji # E11.0 [25] (🧧..🧿) red envelope..nazar amulet +1FA70..1FA73 ; Emoji # E12.0 [4] (🩰..🩳) ballet shoes..shorts +1FA74 ; Emoji # E13.0 [1] (🩴) thong sandal +1FA78..1FA7A ; Emoji # E12.0 [3] (🩸..🩺) drop of blood..stethoscope +1FA80..1FA82 ; Emoji # E12.0 [3] (🪀..🪂) yo-yo..parachute +1FA83..1FA86 ; Emoji # E13.0 [4] (🪃..🪆) boomerang..nesting dolls +1FA90..1FA95 ; Emoji # E12.0 [6] (🪐..🪕) ringed planet..banjo +1FA96..1FAA8 ; Emoji # E13.0 [19] (🪖..🪨) military helmet..rock +1FAB0..1FAB6 ; Emoji # E13.0 [7] (🪰..🪶) fly..feather +1FAC0..1FAC2 ; Emoji # E13.0 [3] (🫀..🫂) anatomical heart..people hugging +1FAD0..1FAD6 ; Emoji # E13.0 [7] (🫐..🫖) blueberries..teapot + +# Total elements: 1367 + +# ================================================ + +# All omitted code points have Emoji_Presentation=No +# @missing: 0000..10FFFF ; Emoji_Presentation ; No + +231A..231B ; Emoji_Presentation # E0.6 [2] (⌚..⌛) watch..hourglass done +23E9..23EC ; Emoji_Presentation # E0.6 [4] (⏩..⏬) fast-forward button..fast down button +23F0 ; Emoji_Presentation # E0.6 [1] (⏰) alarm clock +23F3 ; Emoji_Presentation # E0.6 [1] (⏳) hourglass not done +25FD..25FE ; Emoji_Presentation # E0.6 [2] (◽..◾) white medium-small square..black medium-small square +2614..2615 ; Emoji_Presentation # E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage +2648..2653 ; Emoji_Presentation # E0.6 [12] (♈..♓) Aries..Pisces +267F ; Emoji_Presentation # E0.6 [1] (♿) wheelchair symbol +2693 ; Emoji_Presentation # E0.6 [1] (⚓) anchor +26A1 ; Emoji_Presentation # E0.6 [1] (⚡) high voltage +26AA..26AB ; Emoji_Presentation # E0.6 [2] (⚪..⚫) white circle..black circle +26BD..26BE ; Emoji_Presentation # E0.6 [2] (⚽..⚾) soccer ball..baseball +26C4..26C5 ; Emoji_Presentation # E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud +26CE ; Emoji_Presentation # E0.6 [1] (⛎) Ophiuchus +26D4 ; Emoji_Presentation # E0.6 [1] (⛔) no entry +26EA ; Emoji_Presentation # E0.6 [1] (⛪) church +26F2..26F3 ; Emoji_Presentation # E0.6 [2] (⛲..⛳) fountain..flag in hole +26F5 ; Emoji_Presentation # E0.6 [1] (⛵) sailboat +26FA ; Emoji_Presentation # E0.6 [1] (⛺) tent +26FD ; Emoji_Presentation # E0.6 [1] (⛽) fuel pump +2705 ; Emoji_Presentation # E0.6 [1] (✅) check mark button +270A..270B ; Emoji_Presentation # E0.6 [2] (✊..✋) raised fist..raised hand +2728 ; Emoji_Presentation # E0.6 [1] (✨) sparkles +274C ; Emoji_Presentation # E0.6 [1] (❌) cross mark +274E ; Emoji_Presentation # E0.6 [1] (❎) cross mark button +2753..2755 ; Emoji_Presentation # E0.6 [3] (❓..❕) question mark..white exclamation mark +2757 ; Emoji_Presentation # E0.6 [1] (❗) exclamation mark +2795..2797 ; Emoji_Presentation # E0.6 [3] (➕..➗) plus..divide +27B0 ; Emoji_Presentation # E0.6 [1] (➰) curly loop +27BF ; Emoji_Presentation # E1.0 [1] (➿) double curly loop +2B1B..2B1C ; Emoji_Presentation # E0.6 [2] (⬛..⬜) black large square..white large square +2B50 ; Emoji_Presentation # E0.6 [1] (⭐) star +2B55 ; Emoji_Presentation # E0.6 [1] (⭕) hollow red circle +1F004 ; Emoji_Presentation # E0.6 [1] (🀄) mahjong red dragon +1F0CF ; Emoji_Presentation # E0.6 [1] (🃏) joker +1F18E ; Emoji_Presentation # E0.6 [1] (🆎) AB button (blood type) +1F191..1F19A ; Emoji_Presentation # E0.6 [10] (🆑..🆚) CL button..VS button +1F1E6..1F1FF ; Emoji_Presentation # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z +1F201 ; Emoji_Presentation # E0.6 [1] (🈁) Japanese “here” button +1F21A ; Emoji_Presentation # E0.6 [1] (🈚) Japanese “free of charge” button +1F22F ; Emoji_Presentation # E0.6 [1] (🈯) Japanese “reserved” button +1F232..1F236 ; Emoji_Presentation # E0.6 [5] (🈲..🈶) Japanese “prohibited” button..Japanese “not free of charge” button +1F238..1F23A ; Emoji_Presentation # E0.6 [3] (🈸..🈺) Japanese “application” button..Japanese “open for business” button +1F250..1F251 ; Emoji_Presentation # E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button +1F300..1F30C ; Emoji_Presentation # E0.6 [13] (🌀..🌌) cyclone..milky way +1F30D..1F30E ; Emoji_Presentation # E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas +1F30F ; Emoji_Presentation # E0.6 [1] (🌏) globe showing Asia-Australia +1F310 ; Emoji_Presentation # E1.0 [1] (🌐) globe with meridians +1F311 ; Emoji_Presentation # E0.6 [1] (🌑) new moon +1F312 ; Emoji_Presentation # E1.0 [1] (🌒) waxing crescent moon +1F313..1F315 ; Emoji_Presentation # E0.6 [3] (🌓..🌕) first quarter moon..full moon +1F316..1F318 ; Emoji_Presentation # E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon +1F319 ; Emoji_Presentation # E0.6 [1] (🌙) crescent moon +1F31A ; Emoji_Presentation # E1.0 [1] (🌚) new moon face +1F31B ; Emoji_Presentation # E0.6 [1] (🌛) first quarter moon face +1F31C ; Emoji_Presentation # E0.7 [1] (🌜) last quarter moon face +1F31D..1F31E ; Emoji_Presentation # E1.0 [2] (🌝..🌞) full moon face..sun with face +1F31F..1F320 ; Emoji_Presentation # E0.6 [2] (🌟..🌠) glowing star..shooting star +1F32D..1F32F ; Emoji_Presentation # E1.0 [3] (🌭..🌯) hot dog..burrito +1F330..1F331 ; Emoji_Presentation # E0.6 [2] (🌰..🌱) chestnut..seedling +1F332..1F333 ; Emoji_Presentation # E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree +1F334..1F335 ; Emoji_Presentation # E0.6 [2] (🌴..🌵) palm tree..cactus +1F337..1F34A ; Emoji_Presentation # E0.6 [20] (🌷..🍊) tulip..tangerine +1F34B ; Emoji_Presentation # E1.0 [1] (🍋) lemon +1F34C..1F34F ; Emoji_Presentation # E0.6 [4] (🍌..🍏) banana..green apple +1F350 ; Emoji_Presentation # E1.0 [1] (🍐) pear +1F351..1F37B ; Emoji_Presentation # E0.6 [43] (🍑..🍻) peach..clinking beer mugs +1F37C ; Emoji_Presentation # E1.0 [1] (🍼) baby bottle +1F37E..1F37F ; Emoji_Presentation # E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn +1F380..1F393 ; Emoji_Presentation # E0.6 [20] (🎀..🎓) ribbon..graduation cap +1F3A0..1F3C4 ; Emoji_Presentation # E0.6 [37] (🎠..🏄) carousel horse..person surfing +1F3C5 ; Emoji_Presentation # E1.0 [1] (🏅) sports medal +1F3C6 ; Emoji_Presentation # E0.6 [1] (🏆) trophy +1F3C7 ; Emoji_Presentation # E1.0 [1] (🏇) horse racing +1F3C8 ; Emoji_Presentation # E0.6 [1] (🏈) american football +1F3C9 ; Emoji_Presentation # E1.0 [1] (🏉) rugby football +1F3CA ; Emoji_Presentation # E0.6 [1] (🏊) person swimming +1F3CF..1F3D3 ; Emoji_Presentation # E1.0 [5] (🏏..🏓) cricket game..ping pong +1F3E0..1F3E3 ; Emoji_Presentation # E0.6 [4] (🏠..🏣) house..Japanese post office +1F3E4 ; Emoji_Presentation # E1.0 [1] (🏤) post office +1F3E5..1F3F0 ; Emoji_Presentation # E0.6 [12] (🏥..🏰) hospital..castle +1F3F4 ; Emoji_Presentation # E1.0 [1] (🏴) black flag +1F3F8..1F407 ; Emoji_Presentation # E1.0 [16] (🏸..🐇) badminton..rabbit +1F408 ; Emoji_Presentation # E0.7 [1] (🐈) cat +1F409..1F40B ; Emoji_Presentation # E1.0 [3] (🐉..🐋) dragon..whale +1F40C..1F40E ; Emoji_Presentation # E0.6 [3] (🐌..🐎) snail..horse +1F40F..1F410 ; Emoji_Presentation # E1.0 [2] (🐏..🐐) ram..goat +1F411..1F412 ; Emoji_Presentation # E0.6 [2] (🐑..🐒) ewe..monkey +1F413 ; Emoji_Presentation # E1.0 [1] (🐓) rooster +1F414 ; Emoji_Presentation # E0.6 [1] (🐔) chicken +1F415 ; Emoji_Presentation # E0.7 [1] (🐕) dog +1F416 ; Emoji_Presentation # E1.0 [1] (🐖) pig +1F417..1F429 ; Emoji_Presentation # E0.6 [19] (🐗..🐩) boar..poodle +1F42A ; Emoji_Presentation # E1.0 [1] (🐪) camel +1F42B..1F43E ; Emoji_Presentation # E0.6 [20] (🐫..🐾) two-hump camel..paw prints +1F440 ; Emoji_Presentation # E0.6 [1] (👀) eyes +1F442..1F464 ; Emoji_Presentation # E0.6 [35] (👂..👤) ear..bust in silhouette +1F465 ; Emoji_Presentation # E1.0 [1] (👥) busts in silhouette +1F466..1F46B ; Emoji_Presentation # E0.6 [6] (👦..👫) boy..woman and man holding hands +1F46C..1F46D ; Emoji_Presentation # E1.0 [2] (👬..👭) men holding hands..women holding hands +1F46E..1F4AC ; Emoji_Presentation # E0.6 [63] (👮..💬) police officer..speech balloon +1F4AD ; Emoji_Presentation # E1.0 [1] (💭) thought balloon +1F4AE..1F4B5 ; Emoji_Presentation # E0.6 [8] (💮..💵) white flower..dollar banknote +1F4B6..1F4B7 ; Emoji_Presentation # E1.0 [2] (💶..💷) euro banknote..pound banknote +1F4B8..1F4EB ; Emoji_Presentation # E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag +1F4EC..1F4ED ; Emoji_Presentation # E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag +1F4EE ; Emoji_Presentation # E0.6 [1] (📮) postbox +1F4EF ; Emoji_Presentation # E1.0 [1] (📯) postal horn +1F4F0..1F4F4 ; Emoji_Presentation # E0.6 [5] (📰..📴) newspaper..mobile phone off +1F4F5 ; Emoji_Presentation # E1.0 [1] (📵) no mobile phones +1F4F6..1F4F7 ; Emoji_Presentation # E0.6 [2] (📶..📷) antenna bars..camera +1F4F8 ; Emoji_Presentation # E1.0 [1] (📸) camera with flash +1F4F9..1F4FC ; Emoji_Presentation # E0.6 [4] (📹..📼) video camera..videocassette +1F4FF..1F502 ; Emoji_Presentation # E1.0 [4] (📿..🔂) prayer beads..repeat single button +1F503 ; Emoji_Presentation # E0.6 [1] (🔃) clockwise vertical arrows +1F504..1F507 ; Emoji_Presentation # E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker +1F508 ; Emoji_Presentation # E0.7 [1] (🔈) speaker low volume +1F509 ; Emoji_Presentation # E1.0 [1] (🔉) speaker medium volume +1F50A..1F514 ; Emoji_Presentation # E0.6 [11] (🔊..🔔) speaker high volume..bell +1F515 ; Emoji_Presentation # E1.0 [1] (🔕) bell with slash +1F516..1F52B ; Emoji_Presentation # E0.6 [22] (🔖..🔫) bookmark..pistol +1F52C..1F52D ; Emoji_Presentation # E1.0 [2] (🔬..🔭) microscope..telescope +1F52E..1F53D ; Emoji_Presentation # E0.6 [16] (🔮..🔽) crystal ball..downwards button +1F54B..1F54E ; Emoji_Presentation # E1.0 [4] (🕋..🕎) kaaba..menorah +1F550..1F55B ; Emoji_Presentation # E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock +1F55C..1F567 ; Emoji_Presentation # E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty +1F57A ; Emoji_Presentation # E3.0 [1] (🕺) man dancing +1F595..1F596 ; Emoji_Presentation # E1.0 [2] (🖕..🖖) middle finger..vulcan salute +1F5A4 ; Emoji_Presentation # E3.0 [1] (🖤) black heart +1F5FB..1F5FF ; Emoji_Presentation # E0.6 [5] (🗻..🗿) mount fuji..moai +1F600 ; Emoji_Presentation # E1.0 [1] (😀) grinning face +1F601..1F606 ; Emoji_Presentation # E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face +1F607..1F608 ; Emoji_Presentation # E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns +1F609..1F60D ; Emoji_Presentation # E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes +1F60E ; Emoji_Presentation # E1.0 [1] (😎) smiling face with sunglasses +1F60F ; Emoji_Presentation # E0.6 [1] (😏) smirking face +1F610 ; Emoji_Presentation # E0.7 [1] (😐) neutral face +1F611 ; Emoji_Presentation # E1.0 [1] (😑) expressionless face +1F612..1F614 ; Emoji_Presentation # E0.6 [3] (😒..😔) unamused face..pensive face +1F615 ; Emoji_Presentation # E1.0 [1] (😕) confused face +1F616 ; Emoji_Presentation # E0.6 [1] (😖) confounded face +1F617 ; Emoji_Presentation # E1.0 [1] (😗) kissing face +1F618 ; Emoji_Presentation # E0.6 [1] (😘) face blowing a kiss +1F619 ; Emoji_Presentation # E1.0 [1] (😙) kissing face with smiling eyes +1F61A ; Emoji_Presentation # E0.6 [1] (😚) kissing face with closed eyes +1F61B ; Emoji_Presentation # E1.0 [1] (😛) face with tongue +1F61C..1F61E ; Emoji_Presentation # E0.6 [3] (😜..😞) winking face with tongue..disappointed face +1F61F ; Emoji_Presentation # E1.0 [1] (😟) worried face +1F620..1F625 ; Emoji_Presentation # E0.6 [6] (😠..😥) angry face..sad but relieved face +1F626..1F627 ; Emoji_Presentation # E1.0 [2] (😦..😧) frowning face with open mouth..anguished face +1F628..1F62B ; Emoji_Presentation # E0.6 [4] (😨..😫) fearful face..tired face +1F62C ; Emoji_Presentation # E1.0 [1] (😬) grimacing face +1F62D ; Emoji_Presentation # E0.6 [1] (😭) loudly crying face +1F62E..1F62F ; Emoji_Presentation # E1.0 [2] (😮..😯) face with open mouth..hushed face +1F630..1F633 ; Emoji_Presentation # E0.6 [4] (😰..😳) anxious face with sweat..flushed face +1F634 ; Emoji_Presentation # E1.0 [1] (😴) sleeping face +1F635 ; Emoji_Presentation # E0.6 [1] (😵) dizzy face +1F636 ; Emoji_Presentation # E1.0 [1] (😶) face without mouth +1F637..1F640 ; Emoji_Presentation # E0.6 [10] (😷..🙀) face with medical mask..weary cat +1F641..1F644 ; Emoji_Presentation # E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes +1F645..1F64F ; Emoji_Presentation # E0.6 [11] (🙅..🙏) person gesturing NO..folded hands +1F680 ; Emoji_Presentation # E0.6 [1] (🚀) rocket +1F681..1F682 ; Emoji_Presentation # E1.0 [2] (🚁..🚂) helicopter..locomotive +1F683..1F685 ; Emoji_Presentation # E0.6 [3] (🚃..🚅) railway car..bullet train +1F686 ; Emoji_Presentation # E1.0 [1] (🚆) train +1F687 ; Emoji_Presentation # E0.6 [1] (🚇) metro +1F688 ; Emoji_Presentation # E1.0 [1] (🚈) light rail +1F689 ; Emoji_Presentation # E0.6 [1] (🚉) station +1F68A..1F68B ; Emoji_Presentation # E1.0 [2] (🚊..🚋) tram..tram car +1F68C ; Emoji_Presentation # E0.6 [1] (🚌) bus +1F68D ; Emoji_Presentation # E0.7 [1] (🚍) oncoming bus +1F68E ; Emoji_Presentation # E1.0 [1] (🚎) trolleybus +1F68F ; Emoji_Presentation # E0.6 [1] (🚏) bus stop +1F690 ; Emoji_Presentation # E1.0 [1] (🚐) minibus +1F691..1F693 ; Emoji_Presentation # E0.6 [3] (🚑..🚓) ambulance..police car +1F694 ; Emoji_Presentation # E0.7 [1] (🚔) oncoming police car +1F695 ; Emoji_Presentation # E0.6 [1] (🚕) taxi +1F696 ; Emoji_Presentation # E1.0 [1] (🚖) oncoming taxi +1F697 ; Emoji_Presentation # E0.6 [1] (🚗) automobile +1F698 ; Emoji_Presentation # E0.7 [1] (🚘) oncoming automobile +1F699..1F69A ; Emoji_Presentation # E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck +1F69B..1F6A1 ; Emoji_Presentation # E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway +1F6A2 ; Emoji_Presentation # E0.6 [1] (🚢) ship +1F6A3 ; Emoji_Presentation # E1.0 [1] (🚣) person rowing boat +1F6A4..1F6A5 ; Emoji_Presentation # E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light +1F6A6 ; Emoji_Presentation # E1.0 [1] (🚦) vertical traffic light +1F6A7..1F6AD ; Emoji_Presentation # E0.6 [7] (🚧..🚭) construction..no smoking +1F6AE..1F6B1 ; Emoji_Presentation # E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water +1F6B2 ; Emoji_Presentation # E0.6 [1] (🚲) bicycle +1F6B3..1F6B5 ; Emoji_Presentation # E1.0 [3] (🚳..🚵) no bicycles..person mountain biking +1F6B6 ; Emoji_Presentation # E0.6 [1] (🚶) person walking +1F6B7..1F6B8 ; Emoji_Presentation # E1.0 [2] (🚷..🚸) no pedestrians..children crossing +1F6B9..1F6BE ; Emoji_Presentation # E0.6 [6] (🚹..🚾) men’s room..water closet +1F6BF ; Emoji_Presentation # E1.0 [1] (🚿) shower +1F6C0 ; Emoji_Presentation # E0.6 [1] (🛀) person taking bath +1F6C1..1F6C5 ; Emoji_Presentation # E1.0 [5] (🛁..🛅) bathtub..left luggage +1F6CC ; Emoji_Presentation # E1.0 [1] (🛌) person in bed +1F6D0 ; Emoji_Presentation # E1.0 [1] (🛐) place of worship +1F6D1..1F6D2 ; Emoji_Presentation # E3.0 [2] (🛑..🛒) stop sign..shopping cart +1F6D5 ; Emoji_Presentation # E12.0 [1] (🛕) hindu temple +1F6D6..1F6D7 ; Emoji_Presentation # E13.0 [2] (🛖..🛗) hut..elevator +1F6EB..1F6EC ; Emoji_Presentation # E1.0 [2] (🛫..🛬) airplane departure..airplane arrival +1F6F4..1F6F6 ; Emoji_Presentation # E3.0 [3] (🛴..🛶) kick scooter..canoe +1F6F7..1F6F8 ; Emoji_Presentation # E5.0 [2] (🛷..🛸) sled..flying saucer +1F6F9 ; Emoji_Presentation # E11.0 [1] (🛹) skateboard +1F6FA ; Emoji_Presentation # E12.0 [1] (🛺) auto rickshaw +1F6FB..1F6FC ; Emoji_Presentation # E13.0 [2] (🛻..🛼) pickup truck..roller skate +1F7E0..1F7EB ; Emoji_Presentation # E12.0 [12] (🟠..🟫) orange circle..brown square +1F90C ; Emoji_Presentation # E13.0 [1] (🤌) pinched fingers +1F90D..1F90F ; Emoji_Presentation # E12.0 [3] (🤍..🤏) white heart..pinching hand +1F910..1F918 ; Emoji_Presentation # E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns +1F919..1F91E ; Emoji_Presentation # E3.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Emoji_Presentation # E5.0 [1] (🤟) love-you gesture +1F920..1F927 ; Emoji_Presentation # E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face +1F928..1F92F ; Emoji_Presentation # E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head +1F930 ; Emoji_Presentation # E3.0 [1] (🤰) pregnant woman +1F931..1F932 ; Emoji_Presentation # E5.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F93A ; Emoji_Presentation # E3.0 [8] (🤳..🤺) selfie..person fencing +1F93C..1F93E ; Emoji_Presentation # E3.0 [3] (🤼..🤾) people wrestling..person playing handball +1F93F ; Emoji_Presentation # E12.0 [1] (🤿) diving mask +1F940..1F945 ; Emoji_Presentation # E3.0 [6] (🥀..🥅) wilted flower..goal net +1F947..1F94B ; Emoji_Presentation # E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform +1F94C ; Emoji_Presentation # E5.0 [1] (🥌) curling stone +1F94D..1F94F ; Emoji_Presentation # E11.0 [3] (🥍..🥏) lacrosse..flying disc +1F950..1F95E ; Emoji_Presentation # E3.0 [15] (🥐..🥞) croissant..pancakes +1F95F..1F96B ; Emoji_Presentation # E5.0 [13] (🥟..🥫) dumpling..canned food +1F96C..1F970 ; Emoji_Presentation # E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts +1F971 ; Emoji_Presentation # E12.0 [1] (🥱) yawning face +1F972 ; Emoji_Presentation # E13.0 [1] (🥲) smiling face with tear +1F973..1F976 ; Emoji_Presentation # E11.0 [4] (🥳..🥶) partying face..cold face +1F977..1F978 ; Emoji_Presentation # E13.0 [2] (🥷..🥸) ninja..disguised face +1F97A ; Emoji_Presentation # E11.0 [1] (🥺) pleading face +1F97B ; Emoji_Presentation # E12.0 [1] (🥻) sari +1F97C..1F97F ; Emoji_Presentation # E11.0 [4] (🥼..🥿) lab coat..flat shoe +1F980..1F984 ; Emoji_Presentation # E1.0 [5] (🦀..🦄) crab..unicorn +1F985..1F991 ; Emoji_Presentation # E3.0 [13] (🦅..🦑) eagle..squid +1F992..1F997 ; Emoji_Presentation # E5.0 [6] (🦒..🦗) giraffe..cricket +1F998..1F9A2 ; Emoji_Presentation # E11.0 [11] (🦘..🦢) kangaroo..swan +1F9A3..1F9A4 ; Emoji_Presentation # E13.0 [2] (🦣..🦤) mammoth..dodo +1F9A5..1F9AA ; Emoji_Presentation # E12.0 [6] (🦥..🦪) sloth..oyster +1F9AB..1F9AD ; Emoji_Presentation # E13.0 [3] (🦫..🦭) beaver..seal +1F9AE..1F9AF ; Emoji_Presentation # E12.0 [2] (🦮..🦯) guide dog..white cane +1F9B0..1F9B9 ; Emoji_Presentation # E11.0 [10] (🦰..🦹) red hair..supervillain +1F9BA..1F9BF ; Emoji_Presentation # E12.0 [6] (🦺..🦿) safety vest..mechanical leg +1F9C0 ; Emoji_Presentation # E1.0 [1] (🧀) cheese wedge +1F9C1..1F9C2 ; Emoji_Presentation # E11.0 [2] (🧁..🧂) cupcake..salt +1F9C3..1F9CA ; Emoji_Presentation # E12.0 [8] (🧃..🧊) beverage box..ice +1F9CB ; Emoji_Presentation # E13.0 [1] (🧋) bubble tea +1F9CD..1F9CF ; Emoji_Presentation # E12.0 [3] (🧍..🧏) person standing..deaf person +1F9D0..1F9E6 ; Emoji_Presentation # E5.0 [23] (🧐..🧦) face with monocle..socks +1F9E7..1F9FF ; Emoji_Presentation # E11.0 [25] (🧧..🧿) red envelope..nazar amulet +1FA70..1FA73 ; Emoji_Presentation # E12.0 [4] (🩰..🩳) ballet shoes..shorts +1FA74 ; Emoji_Presentation # E13.0 [1] (🩴) thong sandal +1FA78..1FA7A ; Emoji_Presentation # E12.0 [3] (🩸..🩺) drop of blood..stethoscope +1FA80..1FA82 ; Emoji_Presentation # E12.0 [3] (🪀..🪂) yo-yo..parachute +1FA83..1FA86 ; Emoji_Presentation # E13.0 [4] (🪃..🪆) boomerang..nesting dolls +1FA90..1FA95 ; Emoji_Presentation # E12.0 [6] (🪐..🪕) ringed planet..banjo +1FA96..1FAA8 ; Emoji_Presentation # E13.0 [19] (🪖..🪨) military helmet..rock +1FAB0..1FAB6 ; Emoji_Presentation # E13.0 [7] (🪰..🪶) fly..feather +1FAC0..1FAC2 ; Emoji_Presentation # E13.0 [3] (🫀..🫂) anatomical heart..people hugging +1FAD0..1FAD6 ; Emoji_Presentation # E13.0 [7] (🫐..🫖) blueberries..teapot + +# Total elements: 1148 + +# ================================================ + +# All omitted code points have Emoji_Modifier=No +# @missing: 0000..10FFFF ; Emoji_Modifier ; No + +1F3FB..1F3FF ; Emoji_Modifier # E1.0 [5] (🏻..🏿) light skin tone..dark skin tone + +# Total elements: 5 + +# ================================================ + +# All omitted code points have Emoji_Modifier_Base=No +# @missing: 0000..10FFFF ; Emoji_Modifier_Base ; No + +261D ; Emoji_Modifier_Base # E0.6 [1] (☝️) index pointing up +26F9 ; Emoji_Modifier_Base # E0.7 [1] (⛹️) person bouncing ball +270A..270C ; Emoji_Modifier_Base # E0.6 [3] (✊..✌️) raised fist..victory hand +270D ; Emoji_Modifier_Base # E0.7 [1] (✍️) writing hand +1F385 ; Emoji_Modifier_Base # E0.6 [1] (🎅) Santa Claus +1F3C2..1F3C4 ; Emoji_Modifier_Base # E0.6 [3] (🏂..🏄) snowboarder..person surfing +1F3C7 ; Emoji_Modifier_Base # E1.0 [1] (🏇) horse racing +1F3CA ; Emoji_Modifier_Base # E0.6 [1] (🏊) person swimming +1F3CB..1F3CC ; Emoji_Modifier_Base # E0.7 [2] (🏋️..🏌️) person lifting weights..person golfing +1F442..1F443 ; Emoji_Modifier_Base # E0.6 [2] (👂..👃) ear..nose +1F446..1F450 ; Emoji_Modifier_Base # E0.6 [11] (👆..👐) backhand index pointing up..open hands +1F466..1F46B ; Emoji_Modifier_Base # E0.6 [6] (👦..👫) boy..woman and man holding hands +1F46C..1F46D ; Emoji_Modifier_Base # E1.0 [2] (👬..👭) men holding hands..women holding hands +1F46E..1F478 ; Emoji_Modifier_Base # E0.6 [11] (👮..👸) police officer..princess +1F47C ; Emoji_Modifier_Base # E0.6 [1] (👼) baby angel +1F481..1F483 ; Emoji_Modifier_Base # E0.6 [3] (💁..💃) person tipping hand..woman dancing +1F485..1F487 ; Emoji_Modifier_Base # E0.6 [3] (💅..💇) nail polish..person getting haircut +1F48F ; Emoji_Modifier_Base # E0.6 [1] (💏) kiss +1F491 ; Emoji_Modifier_Base # E0.6 [1] (💑) couple with heart +1F4AA ; Emoji_Modifier_Base # E0.6 [1] (💪) flexed biceps +1F574..1F575 ; Emoji_Modifier_Base # E0.7 [2] (🕴️..🕵️) person in suit levitating..detective +1F57A ; Emoji_Modifier_Base # E3.0 [1] (🕺) man dancing +1F590 ; Emoji_Modifier_Base # E0.7 [1] (🖐️) hand with fingers splayed +1F595..1F596 ; Emoji_Modifier_Base # E1.0 [2] (🖕..🖖) middle finger..vulcan salute +1F645..1F647 ; Emoji_Modifier_Base # E0.6 [3] (🙅..🙇) person gesturing NO..person bowing +1F64B..1F64F ; Emoji_Modifier_Base # E0.6 [5] (🙋..🙏) person raising hand..folded hands +1F6A3 ; Emoji_Modifier_Base # E1.0 [1] (🚣) person rowing boat +1F6B4..1F6B5 ; Emoji_Modifier_Base # E1.0 [2] (🚴..🚵) person biking..person mountain biking +1F6B6 ; Emoji_Modifier_Base # E0.6 [1] (🚶) person walking +1F6C0 ; Emoji_Modifier_Base # E0.6 [1] (🛀) person taking bath +1F6CC ; Emoji_Modifier_Base # E1.0 [1] (🛌) person in bed +1F90C ; Emoji_Modifier_Base # E13.0 [1] (🤌) pinched fingers +1F90F ; Emoji_Modifier_Base # E12.0 [1] (🤏) pinching hand +1F918 ; Emoji_Modifier_Base # E1.0 [1] (🤘) sign of the horns +1F919..1F91E ; Emoji_Modifier_Base # E3.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Emoji_Modifier_Base # E5.0 [1] (🤟) love-you gesture +1F926 ; Emoji_Modifier_Base # E3.0 [1] (🤦) person facepalming +1F930 ; Emoji_Modifier_Base # E3.0 [1] (🤰) pregnant woman +1F931..1F932 ; Emoji_Modifier_Base # E5.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F939 ; Emoji_Modifier_Base # E3.0 [7] (🤳..🤹) selfie..person juggling +1F93C..1F93E ; Emoji_Modifier_Base # E3.0 [3] (🤼..🤾) people wrestling..person playing handball +1F977 ; Emoji_Modifier_Base # E13.0 [1] (🥷) ninja +1F9B5..1F9B6 ; Emoji_Modifier_Base # E11.0 [2] (🦵..🦶) leg..foot +1F9B8..1F9B9 ; Emoji_Modifier_Base # E11.0 [2] (🦸..🦹) superhero..supervillain +1F9BB ; Emoji_Modifier_Base # E12.0 [1] (🦻) ear with hearing aid +1F9CD..1F9CF ; Emoji_Modifier_Base # E12.0 [3] (🧍..🧏) person standing..deaf person +1F9D1..1F9DD ; Emoji_Modifier_Base # E5.0 [13] (🧑..🧝) person..elf + +# Total elements: 122 + +# ================================================ + +# All omitted code points have Emoji_Component=No +# @missing: 0000..10FFFF ; Emoji_Component ; No + +0023 ; Emoji_Component # E0.0 [1] (#️) number sign +002A ; Emoji_Component # E0.0 [1] (*️) asterisk +0030..0039 ; Emoji_Component # E0.0 [10] (0️..9️) digit zero..digit nine +200D ; Emoji_Component # E0.0 [1] () zero width joiner +20E3 ; Emoji_Component # E0.0 [1] (⃣) combining enclosing keycap +FE0F ; Emoji_Component # E0.0 [1] () VARIATION SELECTOR-16 +1F1E6..1F1FF ; Emoji_Component # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z +1F3FB..1F3FF ; Emoji_Component # E1.0 [5] (🏻..🏿) light skin tone..dark skin tone +1F9B0..1F9B3 ; Emoji_Component # E11.0 [4] (🦰..🦳) red hair..white hair +E0020..E007F ; Emoji_Component # E0.0 [96] (..) tag space..cancel tag + +# Total elements: 146 + +# ================================================ + +# All omitted code points have Extended_Pictographic=No +# @missing: 0000..10FFFF ; Extended_Pictographic ; No + +00A9 ; Extended_Pictographic# E0.6 [1] (©️) copyright +00AE ; Extended_Pictographic# E0.6 [1] (®️) registered +203C ; Extended_Pictographic# E0.6 [1] (‼️) double exclamation mark +2049 ; Extended_Pictographic# E0.6 [1] (⁉️) exclamation question mark +2122 ; Extended_Pictographic# E0.6 [1] (™️) trade mark +2139 ; Extended_Pictographic# E0.6 [1] (ℹ️) information +2194..2199 ; Extended_Pictographic# E0.6 [6] (↔️..↙️) left-right arrow..down-left arrow +21A9..21AA ; Extended_Pictographic# E0.6 [2] (↩️..↪️) right arrow curving left..left arrow curving right +231A..231B ; Extended_Pictographic# E0.6 [2] (⌚..⌛) watch..hourglass done +2328 ; Extended_Pictographic# E1.0 [1] (⌨️) keyboard +2388 ; Extended_Pictographic# E0.0 [1] (⎈) HELM SYMBOL +23CF ; Extended_Pictographic# E1.0 [1] (⏏️) eject button +23E9..23EC ; Extended_Pictographic# E0.6 [4] (⏩..⏬) fast-forward button..fast down button +23ED..23EE ; Extended_Pictographic# E0.7 [2] (⏭️..⏮️) next track button..last track button +23EF ; Extended_Pictographic# E1.0 [1] (⏯️) play or pause button +23F0 ; Extended_Pictographic# E0.6 [1] (⏰) alarm clock +23F1..23F2 ; Extended_Pictographic# E1.0 [2] (⏱️..⏲️) stopwatch..timer clock +23F3 ; Extended_Pictographic# E0.6 [1] (⏳) hourglass not done +23F8..23FA ; Extended_Pictographic# E0.7 [3] (⏸️..⏺️) pause button..record button +24C2 ; Extended_Pictographic# E0.6 [1] (Ⓜ️) circled M +25AA..25AB ; Extended_Pictographic# E0.6 [2] (▪️..▫️) black small square..white small square +25B6 ; Extended_Pictographic# E0.6 [1] (▶️) play button +25C0 ; Extended_Pictographic# E0.6 [1] (◀️) reverse button +25FB..25FE ; Extended_Pictographic# E0.6 [4] (◻️..◾) white medium square..black medium-small square +2600..2601 ; Extended_Pictographic# E0.6 [2] (☀️..☁️) sun..cloud +2602..2603 ; Extended_Pictographic# E0.7 [2] (☂️..☃️) umbrella..snowman +2604 ; Extended_Pictographic# E1.0 [1] (☄️) comet +2605 ; Extended_Pictographic# E0.0 [1] (★) BLACK STAR +2607..260D ; Extended_Pictographic# E0.0 [7] (☇..☍) LIGHTNING..OPPOSITION +260E ; Extended_Pictographic# E0.6 [1] (☎️) telephone +260F..2610 ; Extended_Pictographic# E0.0 [2] (☏..☐) WHITE TELEPHONE..BALLOT BOX +2611 ; Extended_Pictographic# E0.6 [1] (☑️) check box with check +2612 ; Extended_Pictographic# E0.0 [1] (☒) BALLOT BOX WITH X +2614..2615 ; Extended_Pictographic# E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage +2616..2617 ; Extended_Pictographic# E0.0 [2] (☖..☗) WHITE SHOGI PIECE..BLACK SHOGI PIECE +2618 ; Extended_Pictographic# E1.0 [1] (☘️) shamrock +2619..261C ; Extended_Pictographic# E0.0 [4] (☙..☜) REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX +261D ; Extended_Pictographic# E0.6 [1] (☝️) index pointing up +261E..261F ; Extended_Pictographic# E0.0 [2] (☞..☟) WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX +2620 ; Extended_Pictographic# E1.0 [1] (☠️) skull and crossbones +2621 ; Extended_Pictographic# E0.0 [1] (☡) CAUTION SIGN +2622..2623 ; Extended_Pictographic# E1.0 [2] (☢️..☣️) radioactive..biohazard +2624..2625 ; Extended_Pictographic# E0.0 [2] (☤..☥) CADUCEUS..ANKH +2626 ; Extended_Pictographic# E1.0 [1] (☦️) orthodox cross +2627..2629 ; Extended_Pictographic# E0.0 [3] (☧..☩) CHI RHO..CROSS OF JERUSALEM +262A ; Extended_Pictographic# E0.7 [1] (☪️) star and crescent +262B..262D ; Extended_Pictographic# E0.0 [3] (☫..☭) FARSI SYMBOL..HAMMER AND SICKLE +262E ; Extended_Pictographic# E1.0 [1] (☮️) peace symbol +262F ; Extended_Pictographic# E0.7 [1] (☯️) yin yang +2630..2637 ; Extended_Pictographic# E0.0 [8] (☰..☷) TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH +2638..2639 ; Extended_Pictographic# E0.7 [2] (☸️..☹️) wheel of dharma..frowning face +263A ; Extended_Pictographic# E0.6 [1] (☺️) smiling face +263B..263F ; Extended_Pictographic# E0.0 [5] (☻..☿) BLACK SMILING FACE..MERCURY +2640 ; Extended_Pictographic# E4.0 [1] (♀️) female sign +2641 ; Extended_Pictographic# E0.0 [1] (♁) EARTH +2642 ; Extended_Pictographic# E4.0 [1] (♂️) male sign +2643..2647 ; Extended_Pictographic# E0.0 [5] (♃..♇) JUPITER..PLUTO +2648..2653 ; Extended_Pictographic# E0.6 [12] (♈..♓) Aries..Pisces +2654..265E ; Extended_Pictographic# E0.0 [11] (♔..♞) WHITE CHESS KING..BLACK CHESS KNIGHT +265F ; Extended_Pictographic# E11.0 [1] (♟️) chess pawn +2660 ; Extended_Pictographic# E0.6 [1] (♠️) spade suit +2661..2662 ; Extended_Pictographic# E0.0 [2] (♡..♢) WHITE HEART SUIT..WHITE DIAMOND SUIT +2663 ; Extended_Pictographic# E0.6 [1] (♣️) club suit +2664 ; Extended_Pictographic# E0.0 [1] (♤) WHITE SPADE SUIT +2665..2666 ; Extended_Pictographic# E0.6 [2] (♥️..♦️) heart suit..diamond suit +2667 ; Extended_Pictographic# E0.0 [1] (♧) WHITE CLUB SUIT +2668 ; Extended_Pictographic# E0.6 [1] (♨️) hot springs +2669..267A ; Extended_Pictographic# E0.0 [18] (♩..♺) QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS +267B ; Extended_Pictographic# E0.6 [1] (♻️) recycling symbol +267C..267D ; Extended_Pictographic# E0.0 [2] (♼..♽) RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL +267E ; Extended_Pictographic# E11.0 [1] (♾️) infinity +267F ; Extended_Pictographic# E0.6 [1] (♿) wheelchair symbol +2680..2685 ; Extended_Pictographic# E0.0 [6] (⚀..⚅) DIE FACE-1..DIE FACE-6 +2690..2691 ; Extended_Pictographic# E0.0 [2] (⚐..⚑) WHITE FLAG..BLACK FLAG +2692 ; Extended_Pictographic# E1.0 [1] (⚒️) hammer and pick +2693 ; Extended_Pictographic# E0.6 [1] (⚓) anchor +2694 ; Extended_Pictographic# E1.0 [1] (⚔️) crossed swords +2695 ; Extended_Pictographic# E4.0 [1] (⚕️) medical symbol +2696..2697 ; Extended_Pictographic# E1.0 [2] (⚖️..⚗️) balance scale..alembic +2698 ; Extended_Pictographic# E0.0 [1] (⚘) FLOWER +2699 ; Extended_Pictographic# E1.0 [1] (⚙️) gear +269A ; Extended_Pictographic# E0.0 [1] (⚚) STAFF OF HERMES +269B..269C ; Extended_Pictographic# E1.0 [2] (⚛️..⚜️) atom symbol..fleur-de-lis +269D..269F ; Extended_Pictographic# E0.0 [3] (⚝..⚟) OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT +26A0..26A1 ; Extended_Pictographic# E0.6 [2] (⚠️..⚡) warning..high voltage +26A2..26A6 ; Extended_Pictographic# E0.0 [5] (⚢..⚦) DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN +26A7 ; Extended_Pictographic# E13.0 [1] (⚧️) transgender symbol +26A8..26A9 ; Extended_Pictographic# E0.0 [2] (⚨..⚩) VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN +26AA..26AB ; Extended_Pictographic# E0.6 [2] (⚪..⚫) white circle..black circle +26AC..26AF ; Extended_Pictographic# E0.0 [4] (⚬..⚯) MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL +26B0..26B1 ; Extended_Pictographic# E1.0 [2] (⚰️..⚱️) coffin..funeral urn +26B2..26BC ; Extended_Pictographic# E0.0 [11] (⚲..⚼) NEUTER..SESQUIQUADRATE +26BD..26BE ; Extended_Pictographic# E0.6 [2] (⚽..⚾) soccer ball..baseball +26BF..26C3 ; Extended_Pictographic# E0.0 [5] (⚿..⛃) SQUARED KEY..BLACK DRAUGHTS KING +26C4..26C5 ; Extended_Pictographic# E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud +26C6..26C7 ; Extended_Pictographic# E0.0 [2] (⛆..⛇) RAIN..BLACK SNOWMAN +26C8 ; Extended_Pictographic# E0.7 [1] (⛈️) cloud with lightning and rain +26C9..26CD ; Extended_Pictographic# E0.0 [5] (⛉..⛍) TURNED WHITE SHOGI PIECE..DISABLED CAR +26CE ; Extended_Pictographic# E0.6 [1] (⛎) Ophiuchus +26CF ; Extended_Pictographic# E0.7 [1] (⛏️) pick +26D0 ; Extended_Pictographic# E0.0 [1] (⛐) CAR SLIDING +26D1 ; Extended_Pictographic# E0.7 [1] (⛑️) rescue worker’s helmet +26D2 ; Extended_Pictographic# E0.0 [1] (⛒) CIRCLED CROSSING LANES +26D3 ; Extended_Pictographic# E0.7 [1] (⛓️) chains +26D4 ; Extended_Pictographic# E0.6 [1] (⛔) no entry +26D5..26E8 ; Extended_Pictographic# E0.0 [20] (⛕..⛨) ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD +26E9 ; Extended_Pictographic# E0.7 [1] (⛩️) shinto shrine +26EA ; Extended_Pictographic# E0.6 [1] (⛪) church +26EB..26EF ; Extended_Pictographic# E0.0 [5] (⛫..⛯) CASTLE..MAP SYMBOL FOR LIGHTHOUSE +26F0..26F1 ; Extended_Pictographic# E0.7 [2] (⛰️..⛱️) mountain..umbrella on ground +26F2..26F3 ; Extended_Pictographic# E0.6 [2] (⛲..⛳) fountain..flag in hole +26F4 ; Extended_Pictographic# E0.7 [1] (⛴️) ferry +26F5 ; Extended_Pictographic# E0.6 [1] (⛵) sailboat +26F6 ; Extended_Pictographic# E0.0 [1] (⛶) SQUARE FOUR CORNERS +26F7..26F9 ; Extended_Pictographic# E0.7 [3] (⛷️..⛹️) skier..person bouncing ball +26FA ; Extended_Pictographic# E0.6 [1] (⛺) tent +26FB..26FC ; Extended_Pictographic# E0.0 [2] (⛻..⛼) JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL +26FD ; Extended_Pictographic# E0.6 [1] (⛽) fuel pump +26FE..2701 ; Extended_Pictographic# E0.0 [4] (⛾..✁) CUP ON BLACK SQUARE..UPPER BLADE SCISSORS +2702 ; Extended_Pictographic# E0.6 [1] (✂️) scissors +2703..2704 ; Extended_Pictographic# E0.0 [2] (✃..✄) LOWER BLADE SCISSORS..WHITE SCISSORS +2705 ; Extended_Pictographic# E0.6 [1] (✅) check mark button +2708..270C ; Extended_Pictographic# E0.6 [5] (✈️..✌️) airplane..victory hand +270D ; Extended_Pictographic# E0.7 [1] (✍️) writing hand +270E ; Extended_Pictographic# E0.0 [1] (✎) LOWER RIGHT PENCIL +270F ; Extended_Pictographic# E0.6 [1] (✏️) pencil +2710..2711 ; Extended_Pictographic# E0.0 [2] (✐..✑) UPPER RIGHT PENCIL..WHITE NIB +2712 ; Extended_Pictographic# E0.6 [1] (✒️) black nib +2714 ; Extended_Pictographic# E0.6 [1] (✔️) check mark +2716 ; Extended_Pictographic# E0.6 [1] (✖️) multiply +271D ; Extended_Pictographic# E0.7 [1] (✝️) latin cross +2721 ; Extended_Pictographic# E0.7 [1] (✡️) star of David +2728 ; Extended_Pictographic# E0.6 [1] (✨) sparkles +2733..2734 ; Extended_Pictographic# E0.6 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star +2744 ; Extended_Pictographic# E0.6 [1] (❄️) snowflake +2747 ; Extended_Pictographic# E0.6 [1] (❇️) sparkle +274C ; Extended_Pictographic# E0.6 [1] (❌) cross mark +274E ; Extended_Pictographic# E0.6 [1] (❎) cross mark button +2753..2755 ; Extended_Pictographic# E0.6 [3] (❓..❕) question mark..white exclamation mark +2757 ; Extended_Pictographic# E0.6 [1] (❗) exclamation mark +2763 ; Extended_Pictographic# E1.0 [1] (❣️) heart exclamation +2764 ; Extended_Pictographic# E0.6 [1] (❤️) red heart +2765..2767 ; Extended_Pictographic# E0.0 [3] (❥..❧) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET +2795..2797 ; Extended_Pictographic# E0.6 [3] (➕..➗) plus..divide +27A1 ; Extended_Pictographic# E0.6 [1] (➡️) right arrow +27B0 ; Extended_Pictographic# E0.6 [1] (➰) curly loop +27BF ; Extended_Pictographic# E1.0 [1] (➿) double curly loop +2934..2935 ; Extended_Pictographic# E0.6 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down +2B05..2B07 ; Extended_Pictographic# E0.6 [3] (⬅️..⬇️) left arrow..down arrow +2B1B..2B1C ; Extended_Pictographic# E0.6 [2] (⬛..⬜) black large square..white large square +2B50 ; Extended_Pictographic# E0.6 [1] (⭐) star +2B55 ; Extended_Pictographic# E0.6 [1] (⭕) hollow red circle +3030 ; Extended_Pictographic# E0.6 [1] (〰️) wavy dash +303D ; Extended_Pictographic# E0.6 [1] (〽️) part alternation mark +3297 ; Extended_Pictographic# E0.6 [1] (㊗️) Japanese “congratulations” button +3299 ; Extended_Pictographic# E0.6 [1] (㊙️) Japanese “secret” button +1F000..1F003 ; Extended_Pictographic# E0.0 [4] (🀀..🀃) MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND +1F004 ; Extended_Pictographic# E0.6 [1] (🀄) mahjong red dragon +1F005..1F0CE ; Extended_Pictographic# E0.0 [202] (🀅..🃎) MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS +1F0CF ; Extended_Pictographic# E0.6 [1] (🃏) joker +1F0D0..1F0FF ; Extended_Pictographic# E0.0 [48] (..) <reserved-1F0D0>..<reserved-1F0FF> +1F10D..1F10F ; Extended_Pictographic# E0.0 [3] (🄍..🄏) CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH +1F12F ; Extended_Pictographic# E0.0 [1] (🄯) COPYLEFT SYMBOL +1F16C..1F16F ; Extended_Pictographic# E0.0 [4] (🅬..🅯) RAISED MR SIGN..CIRCLED HUMAN FIGURE +1F170..1F171 ; Extended_Pictographic# E0.6 [2] (🅰️..🅱️) A button (blood type)..B button (blood type) +1F17E..1F17F ; Extended_Pictographic# E0.6 [2] (🅾️..🅿️) O button (blood type)..P button +1F18E ; Extended_Pictographic# E0.6 [1] (🆎) AB button (blood type) +1F191..1F19A ; Extended_Pictographic# E0.6 [10] (🆑..🆚) CL button..VS button +1F1AD..1F1E5 ; Extended_Pictographic# E0.0 [57] (🆭..) MASK WORK SYMBOL..<reserved-1F1E5> +1F201..1F202 ; Extended_Pictographic# E0.6 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button +1F203..1F20F ; Extended_Pictographic# E0.0 [13] (..) <reserved-1F203>..<reserved-1F20F> +1F21A ; Extended_Pictographic# E0.6 [1] (🈚) Japanese “free of charge” button +1F22F ; Extended_Pictographic# E0.6 [1] (🈯) Japanese “reserved” button +1F232..1F23A ; Extended_Pictographic# E0.6 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button +1F23C..1F23F ; Extended_Pictographic# E0.0 [4] (..) <reserved-1F23C>..<reserved-1F23F> +1F249..1F24F ; Extended_Pictographic# E0.0 [7] (..) <reserved-1F249>..<reserved-1F24F> +1F250..1F251 ; Extended_Pictographic# E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button +1F252..1F2FF ; Extended_Pictographic# E0.0 [174] (..) <reserved-1F252>..<reserved-1F2FF> +1F300..1F30C ; Extended_Pictographic# E0.6 [13] (🌀..🌌) cyclone..milky way +1F30D..1F30E ; Extended_Pictographic# E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas +1F30F ; Extended_Pictographic# E0.6 [1] (🌏) globe showing Asia-Australia +1F310 ; Extended_Pictographic# E1.0 [1] (🌐) globe with meridians +1F311 ; Extended_Pictographic# E0.6 [1] (🌑) new moon +1F312 ; Extended_Pictographic# E1.0 [1] (🌒) waxing crescent moon +1F313..1F315 ; Extended_Pictographic# E0.6 [3] (🌓..🌕) first quarter moon..full moon +1F316..1F318 ; Extended_Pictographic# E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon +1F319 ; Extended_Pictographic# E0.6 [1] (🌙) crescent moon +1F31A ; Extended_Pictographic# E1.0 [1] (🌚) new moon face +1F31B ; Extended_Pictographic# E0.6 [1] (🌛) first quarter moon face +1F31C ; Extended_Pictographic# E0.7 [1] (🌜) last quarter moon face +1F31D..1F31E ; Extended_Pictographic# E1.0 [2] (🌝..🌞) full moon face..sun with face +1F31F..1F320 ; Extended_Pictographic# E0.6 [2] (🌟..🌠) glowing star..shooting star +1F321 ; Extended_Pictographic# E0.7 [1] (🌡️) thermometer +1F322..1F323 ; Extended_Pictographic# E0.0 [2] (🌢..🌣) BLACK DROPLET..WHITE SUN +1F324..1F32C ; Extended_Pictographic# E0.7 [9] (🌤️..🌬️) sun behind small cloud..wind face +1F32D..1F32F ; Extended_Pictographic# E1.0 [3] (🌭..🌯) hot dog..burrito +1F330..1F331 ; Extended_Pictographic# E0.6 [2] (🌰..🌱) chestnut..seedling +1F332..1F333 ; Extended_Pictographic# E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree +1F334..1F335 ; Extended_Pictographic# E0.6 [2] (🌴..🌵) palm tree..cactus +1F336 ; Extended_Pictographic# E0.7 [1] (🌶️) hot pepper +1F337..1F34A ; Extended_Pictographic# E0.6 [20] (🌷..🍊) tulip..tangerine +1F34B ; Extended_Pictographic# E1.0 [1] (🍋) lemon +1F34C..1F34F ; Extended_Pictographic# E0.6 [4] (🍌..🍏) banana..green apple +1F350 ; Extended_Pictographic# E1.0 [1] (🍐) pear +1F351..1F37B ; Extended_Pictographic# E0.6 [43] (🍑..🍻) peach..clinking beer mugs +1F37C ; Extended_Pictographic# E1.0 [1] (🍼) baby bottle +1F37D ; Extended_Pictographic# E0.7 [1] (🍽️) fork and knife with plate +1F37E..1F37F ; Extended_Pictographic# E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn +1F380..1F393 ; Extended_Pictographic# E0.6 [20] (🎀..🎓) ribbon..graduation cap +1F394..1F395 ; Extended_Pictographic# E0.0 [2] (🎔..🎕) HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS +1F396..1F397 ; Extended_Pictographic# E0.7 [2] (🎖️..🎗️) military medal..reminder ribbon +1F398 ; Extended_Pictographic# E0.0 [1] (🎘) MUSICAL KEYBOARD WITH JACKS +1F399..1F39B ; Extended_Pictographic# E0.7 [3] (🎙️..🎛️) studio microphone..control knobs +1F39C..1F39D ; Extended_Pictographic# E0.0 [2] (🎜..🎝) BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES +1F39E..1F39F ; Extended_Pictographic# E0.7 [2] (🎞️..🎟️) film frames..admission tickets +1F3A0..1F3C4 ; Extended_Pictographic# E0.6 [37] (🎠..🏄) carousel horse..person surfing +1F3C5 ; Extended_Pictographic# E1.0 [1] (🏅) sports medal +1F3C6 ; Extended_Pictographic# E0.6 [1] (🏆) trophy +1F3C7 ; Extended_Pictographic# E1.0 [1] (🏇) horse racing +1F3C8 ; Extended_Pictographic# E0.6 [1] (🏈) american football +1F3C9 ; Extended_Pictographic# E1.0 [1] (🏉) rugby football +1F3CA ; Extended_Pictographic# E0.6 [1] (🏊) person swimming +1F3CB..1F3CE ; Extended_Pictographic# E0.7 [4] (🏋️..🏎️) person lifting weights..racing car +1F3CF..1F3D3 ; Extended_Pictographic# E1.0 [5] (🏏..🏓) cricket game..ping pong +1F3D4..1F3DF ; Extended_Pictographic# E0.7 [12] (🏔️..🏟️) snow-capped mountain..stadium +1F3E0..1F3E3 ; Extended_Pictographic# E0.6 [4] (🏠..🏣) house..Japanese post office +1F3E4 ; Extended_Pictographic# E1.0 [1] (🏤) post office +1F3E5..1F3F0 ; Extended_Pictographic# E0.6 [12] (🏥..🏰) hospital..castle +1F3F1..1F3F2 ; Extended_Pictographic# E0.0 [2] (🏱..🏲) WHITE PENNANT..BLACK PENNANT +1F3F3 ; Extended_Pictographic# E0.7 [1] (🏳️) white flag +1F3F4 ; Extended_Pictographic# E1.0 [1] (🏴) black flag +1F3F5 ; Extended_Pictographic# E0.7 [1] (🏵️) rosette +1F3F6 ; Extended_Pictographic# E0.0 [1] (🏶) BLACK ROSETTE +1F3F7 ; Extended_Pictographic# E0.7 [1] (🏷️) label +1F3F8..1F3FA ; Extended_Pictographic# E1.0 [3] (🏸..🏺) badminton..amphora +1F400..1F407 ; Extended_Pictographic# E1.0 [8] (🐀..🐇) rat..rabbit +1F408 ; Extended_Pictographic# E0.7 [1] (🐈) cat +1F409..1F40B ; Extended_Pictographic# E1.0 [3] (🐉..🐋) dragon..whale +1F40C..1F40E ; Extended_Pictographic# E0.6 [3] (🐌..🐎) snail..horse +1F40F..1F410 ; Extended_Pictographic# E1.0 [2] (🐏..🐐) ram..goat +1F411..1F412 ; Extended_Pictographic# E0.6 [2] (🐑..🐒) ewe..monkey +1F413 ; Extended_Pictographic# E1.0 [1] (🐓) rooster +1F414 ; Extended_Pictographic# E0.6 [1] (🐔) chicken +1F415 ; Extended_Pictographic# E0.7 [1] (🐕) dog +1F416 ; Extended_Pictographic# E1.0 [1] (🐖) pig +1F417..1F429 ; Extended_Pictographic# E0.6 [19] (🐗..🐩) boar..poodle +1F42A ; Extended_Pictographic# E1.0 [1] (🐪) camel +1F42B..1F43E ; Extended_Pictographic# E0.6 [20] (🐫..🐾) two-hump camel..paw prints +1F43F ; Extended_Pictographic# E0.7 [1] (🐿️) chipmunk +1F440 ; Extended_Pictographic# E0.6 [1] (👀) eyes +1F441 ; Extended_Pictographic# E0.7 [1] (👁️) eye +1F442..1F464 ; Extended_Pictographic# E0.6 [35] (👂..👤) ear..bust in silhouette +1F465 ; Extended_Pictographic# E1.0 [1] (👥) busts in silhouette +1F466..1F46B ; Extended_Pictographic# E0.6 [6] (👦..👫) boy..woman and man holding hands +1F46C..1F46D ; Extended_Pictographic# E1.0 [2] (👬..👭) men holding hands..women holding hands +1F46E..1F4AC ; Extended_Pictographic# E0.6 [63] (👮..💬) police officer..speech balloon +1F4AD ; Extended_Pictographic# E1.0 [1] (💭) thought balloon +1F4AE..1F4B5 ; Extended_Pictographic# E0.6 [8] (💮..💵) white flower..dollar banknote +1F4B6..1F4B7 ; Extended_Pictographic# E1.0 [2] (💶..💷) euro banknote..pound banknote +1F4B8..1F4EB ; Extended_Pictographic# E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag +1F4EC..1F4ED ; Extended_Pictographic# E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag +1F4EE ; Extended_Pictographic# E0.6 [1] (📮) postbox +1F4EF ; Extended_Pictographic# E1.0 [1] (📯) postal horn +1F4F0..1F4F4 ; Extended_Pictographic# E0.6 [5] (📰..📴) newspaper..mobile phone off +1F4F5 ; Extended_Pictographic# E1.0 [1] (📵) no mobile phones +1F4F6..1F4F7 ; Extended_Pictographic# E0.6 [2] (📶..📷) antenna bars..camera +1F4F8 ; Extended_Pictographic# E1.0 [1] (📸) camera with flash +1F4F9..1F4FC ; Extended_Pictographic# E0.6 [4] (📹..📼) video camera..videocassette +1F4FD ; Extended_Pictographic# E0.7 [1] (📽️) film projector +1F4FE ; Extended_Pictographic# E0.0 [1] (📾) PORTABLE STEREO +1F4FF..1F502 ; Extended_Pictographic# E1.0 [4] (📿..🔂) prayer beads..repeat single button +1F503 ; Extended_Pictographic# E0.6 [1] (🔃) clockwise vertical arrows +1F504..1F507 ; Extended_Pictographic# E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker +1F508 ; Extended_Pictographic# E0.7 [1] (🔈) speaker low volume +1F509 ; Extended_Pictographic# E1.0 [1] (🔉) speaker medium volume +1F50A..1F514 ; Extended_Pictographic# E0.6 [11] (🔊..🔔) speaker high volume..bell +1F515 ; Extended_Pictographic# E1.0 [1] (🔕) bell with slash +1F516..1F52B ; Extended_Pictographic# E0.6 [22] (🔖..🔫) bookmark..pistol +1F52C..1F52D ; Extended_Pictographic# E1.0 [2] (🔬..🔭) microscope..telescope +1F52E..1F53D ; Extended_Pictographic# E0.6 [16] (🔮..🔽) crystal ball..downwards button +1F546..1F548 ; Extended_Pictographic# E0.0 [3] (🕆..🕈) WHITE LATIN CROSS..CELTIC CROSS +1F549..1F54A ; Extended_Pictographic# E0.7 [2] (🕉️..🕊️) om..dove +1F54B..1F54E ; Extended_Pictographic# E1.0 [4] (🕋..🕎) kaaba..menorah +1F54F ; Extended_Pictographic# E0.0 [1] (🕏) BOWL OF HYGIEIA +1F550..1F55B ; Extended_Pictographic# E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock +1F55C..1F567 ; Extended_Pictographic# E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty +1F568..1F56E ; Extended_Pictographic# E0.0 [7] (🕨..🕮) RIGHT SPEAKER..BOOK +1F56F..1F570 ; Extended_Pictographic# E0.7 [2] (🕯️..🕰️) candle..mantelpiece clock +1F571..1F572 ; Extended_Pictographic# E0.0 [2] (🕱..🕲) BLACK SKULL AND CROSSBONES..NO PIRACY +1F573..1F579 ; Extended_Pictographic# E0.7 [7] (🕳️..🕹️) hole..joystick +1F57A ; Extended_Pictographic# E3.0 [1] (🕺) man dancing +1F57B..1F586 ; Extended_Pictographic# E0.0 [12] (🕻..🖆) LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE +1F587 ; Extended_Pictographic# E0.7 [1] (🖇️) linked paperclips +1F588..1F589 ; Extended_Pictographic# E0.0 [2] (🖈..🖉) BLACK PUSHPIN..LOWER LEFT PENCIL +1F58A..1F58D ; Extended_Pictographic# E0.7 [4] (🖊️..🖍️) pen..crayon +1F58E..1F58F ; Extended_Pictographic# E0.0 [2] (🖎..🖏) LEFT WRITING HAND..TURNED OK HAND SIGN +1F590 ; Extended_Pictographic# E0.7 [1] (🖐️) hand with fingers splayed +1F591..1F594 ; Extended_Pictographic# E0.0 [4] (🖑..🖔) REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND +1F595..1F596 ; Extended_Pictographic# E1.0 [2] (🖕..🖖) middle finger..vulcan salute +1F597..1F5A3 ; Extended_Pictographic# E0.0 [13] (🖗..🖣) WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX +1F5A4 ; Extended_Pictographic# E3.0 [1] (🖤) black heart +1F5A5 ; Extended_Pictographic# E0.7 [1] (🖥️) desktop computer +1F5A6..1F5A7 ; Extended_Pictographic# E0.0 [2] (🖦..🖧) KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS +1F5A8 ; Extended_Pictographic# E0.7 [1] (🖨️) printer +1F5A9..1F5B0 ; Extended_Pictographic# E0.0 [8] (🖩..🖰) POCKET CALCULATOR..TWO BUTTON MOUSE +1F5B1..1F5B2 ; Extended_Pictographic# E0.7 [2] (🖱️..🖲️) computer mouse..trackball +1F5B3..1F5BB ; Extended_Pictographic# E0.0 [9] (🖳..🖻) OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE +1F5BC ; Extended_Pictographic# E0.7 [1] (🖼️) framed picture +1F5BD..1F5C1 ; Extended_Pictographic# E0.0 [5] (🖽..🗁) FRAME WITH TILES..OPEN FOLDER +1F5C2..1F5C4 ; Extended_Pictographic# E0.7 [3] (🗂️..🗄️) card index dividers..file cabinet +1F5C5..1F5D0 ; Extended_Pictographic# E0.0 [12] (🗅..🗐) EMPTY NOTE..PAGES +1F5D1..1F5D3 ; Extended_Pictographic# E0.7 [3] (🗑️..🗓️) wastebasket..spiral calendar +1F5D4..1F5DB ; Extended_Pictographic# E0.0 [8] (🗔..🗛) DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL +1F5DC..1F5DE ; Extended_Pictographic# E0.7 [3] (🗜️..🗞️) clamp..rolled-up newspaper +1F5DF..1F5E0 ; Extended_Pictographic# E0.0 [2] (🗟..🗠) PAGE WITH CIRCLED TEXT..STOCK CHART +1F5E1 ; Extended_Pictographic# E0.7 [1] (🗡️) dagger +1F5E2 ; Extended_Pictographic# E0.0 [1] (🗢) LIPS +1F5E3 ; Extended_Pictographic# E0.7 [1] (🗣️) speaking head +1F5E4..1F5E7 ; Extended_Pictographic# E0.0 [4] (🗤..🗧) THREE RAYS ABOVE..THREE RAYS RIGHT +1F5E8 ; Extended_Pictographic# E2.0 [1] (🗨️) left speech bubble +1F5E9..1F5EE ; Extended_Pictographic# E0.0 [6] (🗩..🗮) RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE +1F5EF ; Extended_Pictographic# E0.7 [1] (🗯️) right anger bubble +1F5F0..1F5F2 ; Extended_Pictographic# E0.0 [3] (🗰..🗲) MOOD BUBBLE..LIGHTNING MOOD +1F5F3 ; Extended_Pictographic# E0.7 [1] (🗳️) ballot box with ballot +1F5F4..1F5F9 ; Extended_Pictographic# E0.0 [6] (🗴..🗹) BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK +1F5FA ; Extended_Pictographic# E0.7 [1] (🗺️) world map +1F5FB..1F5FF ; Extended_Pictographic# E0.6 [5] (🗻..🗿) mount fuji..moai +1F600 ; Extended_Pictographic# E1.0 [1] (😀) grinning face +1F601..1F606 ; Extended_Pictographic# E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face +1F607..1F608 ; Extended_Pictographic# E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns +1F609..1F60D ; Extended_Pictographic# E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes +1F60E ; Extended_Pictographic# E1.0 [1] (😎) smiling face with sunglasses +1F60F ; Extended_Pictographic# E0.6 [1] (😏) smirking face +1F610 ; Extended_Pictographic# E0.7 [1] (😐) neutral face +1F611 ; Extended_Pictographic# E1.0 [1] (😑) expressionless face +1F612..1F614 ; Extended_Pictographic# E0.6 [3] (😒..😔) unamused face..pensive face +1F615 ; Extended_Pictographic# E1.0 [1] (😕) confused face +1F616 ; Extended_Pictographic# E0.6 [1] (😖) confounded face +1F617 ; Extended_Pictographic# E1.0 [1] (😗) kissing face +1F618 ; Extended_Pictographic# E0.6 [1] (😘) face blowing a kiss +1F619 ; Extended_Pictographic# E1.0 [1] (😙) kissing face with smiling eyes +1F61A ; Extended_Pictographic# E0.6 [1] (😚) kissing face with closed eyes +1F61B ; Extended_Pictographic# E1.0 [1] (😛) face with tongue +1F61C..1F61E ; Extended_Pictographic# E0.6 [3] (😜..😞) winking face with tongue..disappointed face +1F61F ; Extended_Pictographic# E1.0 [1] (😟) worried face +1F620..1F625 ; Extended_Pictographic# E0.6 [6] (😠..😥) angry face..sad but relieved face +1F626..1F627 ; Extended_Pictographic# E1.0 [2] (😦..😧) frowning face with open mouth..anguished face +1F628..1F62B ; Extended_Pictographic# E0.6 [4] (😨..😫) fearful face..tired face +1F62C ; Extended_Pictographic# E1.0 [1] (😬) grimacing face +1F62D ; Extended_Pictographic# E0.6 [1] (😭) loudly crying face +1F62E..1F62F ; Extended_Pictographic# E1.0 [2] (😮..😯) face with open mouth..hushed face +1F630..1F633 ; Extended_Pictographic# E0.6 [4] (😰..😳) anxious face with sweat..flushed face +1F634 ; Extended_Pictographic# E1.0 [1] (😴) sleeping face +1F635 ; Extended_Pictographic# E0.6 [1] (😵) dizzy face +1F636 ; Extended_Pictographic# E1.0 [1] (😶) face without mouth +1F637..1F640 ; Extended_Pictographic# E0.6 [10] (😷..🙀) face with medical mask..weary cat +1F641..1F644 ; Extended_Pictographic# E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes +1F645..1F64F ; Extended_Pictographic# E0.6 [11] (🙅..🙏) person gesturing NO..folded hands +1F680 ; Extended_Pictographic# E0.6 [1] (🚀) rocket +1F681..1F682 ; Extended_Pictographic# E1.0 [2] (🚁..🚂) helicopter..locomotive +1F683..1F685 ; Extended_Pictographic# E0.6 [3] (🚃..🚅) railway car..bullet train +1F686 ; Extended_Pictographic# E1.0 [1] (🚆) train +1F687 ; Extended_Pictographic# E0.6 [1] (🚇) metro +1F688 ; Extended_Pictographic# E1.0 [1] (🚈) light rail +1F689 ; Extended_Pictographic# E0.6 [1] (🚉) station +1F68A..1F68B ; Extended_Pictographic# E1.0 [2] (🚊..🚋) tram..tram car +1F68C ; Extended_Pictographic# E0.6 [1] (🚌) bus +1F68D ; Extended_Pictographic# E0.7 [1] (🚍) oncoming bus +1F68E ; Extended_Pictographic# E1.0 [1] (🚎) trolleybus +1F68F ; Extended_Pictographic# E0.6 [1] (🚏) bus stop +1F690 ; Extended_Pictographic# E1.0 [1] (🚐) minibus +1F691..1F693 ; Extended_Pictographic# E0.6 [3] (🚑..🚓) ambulance..police car +1F694 ; Extended_Pictographic# E0.7 [1] (🚔) oncoming police car +1F695 ; Extended_Pictographic# E0.6 [1] (🚕) taxi +1F696 ; Extended_Pictographic# E1.0 [1] (🚖) oncoming taxi +1F697 ; Extended_Pictographic# E0.6 [1] (🚗) automobile +1F698 ; Extended_Pictographic# E0.7 [1] (🚘) oncoming automobile +1F699..1F69A ; Extended_Pictographic# E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck +1F69B..1F6A1 ; Extended_Pictographic# E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway +1F6A2 ; Extended_Pictographic# E0.6 [1] (🚢) ship +1F6A3 ; Extended_Pictographic# E1.0 [1] (🚣) person rowing boat +1F6A4..1F6A5 ; Extended_Pictographic# E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light +1F6A6 ; Extended_Pictographic# E1.0 [1] (🚦) vertical traffic light +1F6A7..1F6AD ; Extended_Pictographic# E0.6 [7] (🚧..🚭) construction..no smoking +1F6AE..1F6B1 ; Extended_Pictographic# E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water +1F6B2 ; Extended_Pictographic# E0.6 [1] (🚲) bicycle +1F6B3..1F6B5 ; Extended_Pictographic# E1.0 [3] (🚳..🚵) no bicycles..person mountain biking +1F6B6 ; Extended_Pictographic# E0.6 [1] (🚶) person walking +1F6B7..1F6B8 ; Extended_Pictographic# E1.0 [2] (🚷..🚸) no pedestrians..children crossing +1F6B9..1F6BE ; Extended_Pictographic# E0.6 [6] (🚹..🚾) men’s room..water closet +1F6BF ; Extended_Pictographic# E1.0 [1] (🚿) shower +1F6C0 ; Extended_Pictographic# E0.6 [1] (🛀) person taking bath +1F6C1..1F6C5 ; Extended_Pictographic# E1.0 [5] (🛁..🛅) bathtub..left luggage +1F6C6..1F6CA ; Extended_Pictographic# E0.0 [5] (🛆..🛊) TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL +1F6CB ; Extended_Pictographic# E0.7 [1] (🛋️) couch and lamp +1F6CC ; Extended_Pictographic# E1.0 [1] (🛌) person in bed +1F6CD..1F6CF ; Extended_Pictographic# E0.7 [3] (🛍️..🛏️) shopping bags..bed +1F6D0 ; Extended_Pictographic# E1.0 [1] (🛐) place of worship +1F6D1..1F6D2 ; Extended_Pictographic# E3.0 [2] (🛑..🛒) stop sign..shopping cart +1F6D3..1F6D4 ; Extended_Pictographic# E0.0 [2] (🛓..🛔) STUPA..PAGODA +1F6D5 ; Extended_Pictographic# E12.0 [1] (🛕) hindu temple +1F6D6..1F6D7 ; Extended_Pictographic# E13.0 [2] (🛖..🛗) hut..elevator +1F6D8..1F6DF ; Extended_Pictographic# E0.0 [8] (..🛟) <reserved-1F6D8>..<reserved-1F6DF> +1F6E0..1F6E5 ; Extended_Pictographic# E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat +1F6E6..1F6E8 ; Extended_Pictographic# E0.0 [3] (🛦..🛨) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE +1F6E9 ; Extended_Pictographic# E0.7 [1] (🛩️) small airplane +1F6EA ; Extended_Pictographic# E0.0 [1] (🛪) NORTHEAST-POINTING AIRPLANE +1F6EB..1F6EC ; Extended_Pictographic# E1.0 [2] (🛫..🛬) airplane departure..airplane arrival +1F6ED..1F6EF ; Extended_Pictographic# E0.0 [3] (..) <reserved-1F6ED>..<reserved-1F6EF> +1F6F0 ; Extended_Pictographic# E0.7 [1] (🛰️) satellite +1F6F1..1F6F2 ; Extended_Pictographic# E0.0 [2] (🛱..🛲) ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE +1F6F3 ; Extended_Pictographic# E0.7 [1] (🛳️) passenger ship +1F6F4..1F6F6 ; Extended_Pictographic# E3.0 [3] (🛴..🛶) kick scooter..canoe +1F6F7..1F6F8 ; Extended_Pictographic# E5.0 [2] (🛷..🛸) sled..flying saucer +1F6F9 ; Extended_Pictographic# E11.0 [1] (🛹) skateboard +1F6FA ; Extended_Pictographic# E12.0 [1] (🛺) auto rickshaw +1F6FB..1F6FC ; Extended_Pictographic# E13.0 [2] (🛻..🛼) pickup truck..roller skate +1F6FD..1F6FF ; Extended_Pictographic# E0.0 [3] (..) <reserved-1F6FD>..<reserved-1F6FF> +1F774..1F77F ; Extended_Pictographic# E0.0 [12] (🝴..🝿) <reserved-1F774>..<reserved-1F77F> +1F7D5..1F7DF ; Extended_Pictographic# E0.0 [11] (🟕..) CIRCLED TRIANGLE..<reserved-1F7DF> +1F7E0..1F7EB ; Extended_Pictographic# E12.0 [12] (🟠..🟫) orange circle..brown square +1F7EC..1F7FF ; Extended_Pictographic# E0.0 [20] (..) <reserved-1F7EC>..<reserved-1F7FF> +1F80C..1F80F ; Extended_Pictographic# E0.0 [4] (..) <reserved-1F80C>..<reserved-1F80F> +1F848..1F84F ; Extended_Pictographic# E0.0 [8] (..) <reserved-1F848>..<reserved-1F84F> +1F85A..1F85F ; Extended_Pictographic# E0.0 [6] (..) <reserved-1F85A>..<reserved-1F85F> +1F888..1F88F ; Extended_Pictographic# E0.0 [8] (..) <reserved-1F888>..<reserved-1F88F> +1F8AE..1F8FF ; Extended_Pictographic# E0.0 [82] (..) <reserved-1F8AE>..<reserved-1F8FF> +1F90C ; Extended_Pictographic# E13.0 [1] (🤌) pinched fingers +1F90D..1F90F ; Extended_Pictographic# E12.0 [3] (🤍..🤏) white heart..pinching hand +1F910..1F918 ; Extended_Pictographic# E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns +1F919..1F91E ; Extended_Pictographic# E3.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Extended_Pictographic# E5.0 [1] (🤟) love-you gesture +1F920..1F927 ; Extended_Pictographic# E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face +1F928..1F92F ; Extended_Pictographic# E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head +1F930 ; Extended_Pictographic# E3.0 [1] (🤰) pregnant woman +1F931..1F932 ; Extended_Pictographic# E5.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F93A ; Extended_Pictographic# E3.0 [8] (🤳..🤺) selfie..person fencing +1F93C..1F93E ; Extended_Pictographic# E3.0 [3] (🤼..🤾) people wrestling..person playing handball +1F93F ; Extended_Pictographic# E12.0 [1] (🤿) diving mask +1F940..1F945 ; Extended_Pictographic# E3.0 [6] (🥀..🥅) wilted flower..goal net +1F947..1F94B ; Extended_Pictographic# E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform +1F94C ; Extended_Pictographic# E5.0 [1] (🥌) curling stone +1F94D..1F94F ; Extended_Pictographic# E11.0 [3] (🥍..🥏) lacrosse..flying disc +1F950..1F95E ; Extended_Pictographic# E3.0 [15] (🥐..🥞) croissant..pancakes +1F95F..1F96B ; Extended_Pictographic# E5.0 [13] (🥟..🥫) dumpling..canned food +1F96C..1F970 ; Extended_Pictographic# E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts +1F971 ; Extended_Pictographic# E12.0 [1] (🥱) yawning face +1F972 ; Extended_Pictographic# E13.0 [1] (🥲) smiling face with tear +1F973..1F976 ; Extended_Pictographic# E11.0 [4] (🥳..🥶) partying face..cold face +1F977..1F978 ; Extended_Pictographic# E13.0 [2] (🥷..🥸) ninja..disguised face +1F979 ; Extended_Pictographic# E0.0 [1] (🥹) <reserved-1F979> +1F97A ; Extended_Pictographic# E11.0 [1] (🥺) pleading face +1F97B ; Extended_Pictographic# E12.0 [1] (🥻) sari +1F97C..1F97F ; Extended_Pictographic# E11.0 [4] (🥼..🥿) lab coat..flat shoe +1F980..1F984 ; Extended_Pictographic# E1.0 [5] (🦀..🦄) crab..unicorn +1F985..1F991 ; Extended_Pictographic# E3.0 [13] (🦅..🦑) eagle..squid +1F992..1F997 ; Extended_Pictographic# E5.0 [6] (🦒..🦗) giraffe..cricket +1F998..1F9A2 ; Extended_Pictographic# E11.0 [11] (🦘..🦢) kangaroo..swan +1F9A3..1F9A4 ; Extended_Pictographic# E13.0 [2] (🦣..🦤) mammoth..dodo +1F9A5..1F9AA ; Extended_Pictographic# E12.0 [6] (🦥..🦪) sloth..oyster +1F9AB..1F9AD ; Extended_Pictographic# E13.0 [3] (🦫..🦭) beaver..seal +1F9AE..1F9AF ; Extended_Pictographic# E12.0 [2] (🦮..🦯) guide dog..white cane +1F9B0..1F9B9 ; Extended_Pictographic# E11.0 [10] (🦰..🦹) red hair..supervillain +1F9BA..1F9BF ; Extended_Pictographic# E12.0 [6] (🦺..🦿) safety vest..mechanical leg +1F9C0 ; Extended_Pictographic# E1.0 [1] (🧀) cheese wedge +1F9C1..1F9C2 ; Extended_Pictographic# E11.0 [2] (🧁..🧂) cupcake..salt +1F9C3..1F9CA ; Extended_Pictographic# E12.0 [8] (🧃..🧊) beverage box..ice +1F9CB ; Extended_Pictographic# E13.0 [1] (🧋) bubble tea +1F9CC ; Extended_Pictographic# E0.0 [1] (🧌) <reserved-1F9CC> +1F9CD..1F9CF ; Extended_Pictographic# E12.0 [3] (🧍..🧏) person standing..deaf person +1F9D0..1F9E6 ; Extended_Pictographic# E5.0 [23] (🧐..🧦) face with monocle..socks +1F9E7..1F9FF ; Extended_Pictographic# E11.0 [25] (🧧..🧿) red envelope..nazar amulet +1FA00..1FA6F ; Extended_Pictographic# E0.0 [112] (🨀..) NEUTRAL CHESS KING..<reserved-1FA6F> +1FA70..1FA73 ; Extended_Pictographic# E12.0 [4] (🩰..🩳) ballet shoes..shorts +1FA74 ; Extended_Pictographic# E13.0 [1] (🩴) thong sandal +1FA75..1FA77 ; Extended_Pictographic# E0.0 [3] (🩵..🩷) <reserved-1FA75>..<reserved-1FA77> +1FA78..1FA7A ; Extended_Pictographic# E12.0 [3] (🩸..🩺) drop of blood..stethoscope +1FA7B..1FA7F ; Extended_Pictographic# E0.0 [5] (🩻..) <reserved-1FA7B>..<reserved-1FA7F> +1FA80..1FA82 ; Extended_Pictographic# E12.0 [3] (🪀..🪂) yo-yo..parachute +1FA83..1FA86 ; Extended_Pictographic# E13.0 [4] (🪃..🪆) boomerang..nesting dolls +1FA87..1FA8F ; Extended_Pictographic# E0.0 [9] (🪇..) <reserved-1FA87>..<reserved-1FA8F> +1FA90..1FA95 ; Extended_Pictographic# E12.0 [6] (🪐..🪕) ringed planet..banjo +1FA96..1FAA8 ; Extended_Pictographic# E13.0 [19] (🪖..🪨) military helmet..rock +1FAA9..1FAAF ; Extended_Pictographic# E0.0 [7] (🪩..🪯) <reserved-1FAA9>..<reserved-1FAAF> +1FAB0..1FAB6 ; Extended_Pictographic# E13.0 [7] (🪰..🪶) fly..feather +1FAB7..1FABF ; Extended_Pictographic# E0.0 [9] (🪷..🪿) <reserved-1FAB7>..<reserved-1FABF> +1FAC0..1FAC2 ; Extended_Pictographic# E13.0 [3] (🫀..🫂) anatomical heart..people hugging +1FAC3..1FACF ; Extended_Pictographic# E0.0 [13] (🫃..🫏) <reserved-1FAC3>..<reserved-1FACF> +1FAD0..1FAD6 ; Extended_Pictographic# E13.0 [7] (🫐..🫖) blueberries..teapot +1FAD7..1FAFF ; Extended_Pictographic# E0.0 [41] (🫗..) <reserved-1FAD7>..<reserved-1FAFF> +1FC00..1FFFD ; Extended_Pictographic# E0.0[1022] (..) <reserved-1FC00>..<reserved-1FFFD> + +# Total elements: 3537 + +#EOF diff -Nru qtbase-opensource-src-5.15.3+dfsg/util/unicode/main.cpp qtbase-opensource-src-5.15.8+dfsg/util/unicode/main.cpp --- qtbase-opensource-src-5.15.3+dfsg/util/unicode/main.cpp 2021-03-18 23:29:29.000000000 +0800 +++ qtbase-opensource-src-5.15.8+dfsg/util/unicode/main.cpp 2022-11-11 15:29:17.000000000 +0800 @@ -291,10 +291,7 @@ " GraphemeBreak_T,\n" " GraphemeBreak_LV,\n" " GraphemeBreak_LVT,\n" - " Graphemebreak_E_Base,\n" - " Graphemebreak_E_Modifier,\n" - " Graphemebreak_Glue_After_Zwj,\n" - " Graphemebreak_E_Base_GAZ,\n" + " GraphemeBreak_Extended_Pictographic,\n" "\n" " NumGraphemeBreakClasses\n" "};\n\n"; @@ -314,10 +311,7 @@ GraphemeBreak_T, GraphemeBreak_LV, GraphemeBreak_LVT, - Graphemebreak_E_Base, - Graphemebreak_E_Modifier, - Graphemebreak_Glue_After_Zwj, - Graphemebreak_E_Base_GAZ, + GraphemeBreak_Extended_Pictographic, GraphemeBreak_Unassigned }; @@ -344,11 +338,8 @@ { GraphemeBreak_T, "T" }, { GraphemeBreak_LV, "LV" }, { GraphemeBreak_LVT, "LVT" }, - { Graphemebreak_E_Base, "E_Base" }, - { Graphemebreak_E_Modifier, "E_Modifier" }, - { Graphemebreak_Glue_After_Zwj, "Glue_After_Zwj" }, - { Graphemebreak_E_Base_GAZ, "E_Base_GAZ" }, - { GraphemeBreak_Unassigned, 0 } + { GraphemeBreak_Extended_Pictographic, "Extended_Pictographic" }, + { GraphemeBreak_Unassigned, nullptr } }; GraphemeBreakList *d = breaks; while (d->name) { @@ -1915,6 +1906,59 @@ } } +static void readEmojiData() +{ + qDebug("Reading emoji-data.txt"); + + QFile f("data/emoji-data.txt"); + if (!f.open(QFile::ReadOnly)) + qFatal("Couldn't find emoji-data.txt"); + + while (!f.atEnd()) { + QByteArray line; + line.resize(1024); + int len = f.readLine(line.data(), 1024); + line.resize(len-1); + + int comment = line.indexOf('#'); + if (comment >= 0) + line = line.left(comment); + line.replace(" ", ""); + + if (line.isEmpty()) + continue; + + QList<QByteArray> l = line.split(';'); + Q_ASSERT(l.size() == 2); + + // NOTE: for the moment we process emoji_data only to extract + // the code points with Extended_Pictographic. This is needed by + // extended grapheme clustering (cf. the GB11 rule in UAX #29). + if (l[1] != "Extended_Pictographic") + continue; + + QByteArray codes = l[0]; + codes.replace("..", "."); + QList<QByteArray> cl = codes.split('.'); + + bool ok; + int from = cl[0].toInt(&ok, 16); + Q_ASSERT(ok); + int to = from; + if (cl.size() == 2) { + to = cl[1].toInt(&ok, 16); + Q_ASSERT(ok); + } + + for (int codepoint = from; codepoint <= to; ++codepoint) { + UnicodeData &ud = UnicodeData::valueRef(codepoint); + // Check we're not overwriting the data from GraphemeBreakProperty.txt... + Q_ASSERT(ud.p.graphemeBreakClass == GraphemeBreak_Any); + ud.p.graphemeBreakClass = GraphemeBreak_Extended_Pictographic; + } + } +} + static void readWordBreak() { qDebug("Reading WordBreakProperty.txt"); @@ -3037,6 +3081,7 @@ // readBlocks(); readScripts(); readGraphemeBreak(); + readEmojiData(); readWordBreak(); readSentenceBreak(); readLineBreak();