<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>33418</bug_id>
          
          <creation_ts>2010-01-08 21:17:41 -0800</creation_ts>
          <short_desc>[Qt] Custom select popups.</short_desc>
          <delta_ts>2010-01-29 06:30:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>31552</blocked>
    
    <blocked>33708</blocked>
    
    <blocked>33887</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Luiz Agostini">luiz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>cshu</cc>
    
    <cc>girish</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>178943</commentid>
    <comment_count>0</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-08 21:17:41 -0800</bug_when>
    <thetext>Custom select popup factories.
Usage example in QGVLauncher.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178978</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-09 04:49:52 -0800</bug_when>
    <thetext>Where are the attachments, Luiz?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178986</commentid>
    <comment_count>2</comment_count>
      <attachid>46206</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-09 07:43:03 -0800</bug_when>
    <thetext>Created attachment 46206
Custom popups, popup factories and usage example</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178987</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-09 07:47:43 -0800</bug_when>
    <thetext>Attachment 46206 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/176377</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178988</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-09 07:48:02 -0800</bug_when>
    <thetext>Attachment 46206 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/qt/QGVLauncher/main.cpp:35:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/qt/Api/qwebpopup.cpp:21:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/qt/QGVLauncher/custompopup.cpp:21:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/qt/QGVLauncher/custompopup.cpp:115:  One line control clauses should not use braces.  [whitespace/braces] [4]
WebKit/qt/Api/qwebpopup.h:25:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/qt/Api/qwebpopup.h:26:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/qt/Api/qwebpopup.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/qt/Api/qwebpopup.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit/qt/Api/qwebpage.cpp:1753:  qt_qwebpage_setPopupFactory is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178989</commentid>
    <comment_count>5</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-09 08:07:19 -0800</bug_when>
    <thetext>Build bot probably is not using Qt 4.6. I used animations in QGVLauncher. This seems to be the reason for the compilation error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178990</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-09 08:13:10 -0800</bug_when>
    <thetext>I guess you should leave the usage example as a separate commit, and guard it with version checks for Qt 4.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178992</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-09 08:17:11 -0800</bug_when>
    <thetext>+void QWebPage::setPopupFactory(QWebPopupFactory* factory)
+{
+    d-&gt;chromeClient-&gt;m_popupFactory = factory;
+}
+
+void qt_qwebpage_setPopupFactory(QWebPage* page, QWebPopupFactory* factory)
+{
+    page-&gt;setPopupFactory(factory);
+}

If  you wanted to add this as  private API for now, this is not correct. the  QWebPage::setPopupFactory() cannot exist.

why not 

void qt_qwebpage_setPopupFactory(QWebPage* page, QWebPopupFactory* factory)
{
    d-&gt;chromeClient-&gt;m_popupFactory = factory;
}
??

Also the chromeClient-&gt;m_popupFactory is not acceptable. Please add a setter instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178993</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-09 08:18:59 -0800</bug_when>
    <thetext>What about merging your QWebPopupObserver with the QWebPopupPrivate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179000</commentid>
    <comment_count>9</comment_count>
      <attachid>46208</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-09 08:53:44 -0800</bug_when>
    <thetext>Created attachment 46208
Custom popups, popup factories and usage example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179001</commentid>
    <comment_count>10</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-09 08:58:05 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; What about merging your QWebPopupObserver with the QWebPopupPrivate?

QWebPopupObserver is needed as a separated class.
Look at ChromeClientQt.cpp line 87.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179002</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-09 08:59:18 -0800</bug_when>
    <thetext>Attachment 46208 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/qt/QGVLauncher/main.cpp:35:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/qt/Api/qwebpopup.cpp:21:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/qt/QGVLauncher/custompopup.cpp:21:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/qt/QGVLauncher/custompopup.cpp:127:  One line control clauses should not use braces.  [whitespace/braces] [4]
WebKit/qt/Api/qwebpopup.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/qt/Api/qwebpage.cpp:1753:  qt_qwebpage_setPopupFactory is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179003</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-09 09:08:52 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Attachment 46208 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
&gt; WebKit/qt/QGVLauncher/main.cpp:35:  Found other header before WebCore config.h.
&gt; Should be: config.h, primary header, blank line, and then alphabetically
&gt; sorted.  [build/include_order] [4]

These errors in QGVLauncher can be ignored

&gt; WebKit/qt/Api/qwebpopup.cpp:21:  Found header this file implements before
&gt; WebCore config.h. Should be: config.h, primary header, blank line, and then
&gt; alphabetically sorted.  [build/include_order] [4]

Pls fix

&gt; WebKit/qt/QGVLauncher/custompopup.cpp:21:  Found header this file implements
&gt; before WebCore config.h. Should be: config.h, primary header, blank line, and
&gt; then alphabetically sorted.  [build/include_order] [4]

Ignore

&gt; WebKit/qt/QGVLauncher/custompopup.cpp:127:  One line control clauses should not
&gt; use braces.  [whitespace/braces] [4]

Please fix

&gt; WebKit/qt/Api/qwebpopup.h:27:  Alphabetical sorting problem. 
&gt; [build/include_order] [4]

fix

&gt; WebKit/qt/Api/qwebpage.cpp:1753:  qt_qwebpage_setPopupFactory is incorrectly
&gt; named. Don&apos;t use underscores in your identifier names.  [readability/naming]
&gt; [4]

Ignore as we use this for private Qt API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179004</commentid>
    <comment_count>13</comment_count>
      <attachid>46209</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-09 09:09:27 -0800</bug_when>
    <thetext>Created attachment 46209
Custom popups, popup factories and usage example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179005</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-09 09:10:12 -0800</bug_when>
    <thetext>Attachment 46209 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/qt/QGVLauncher/main.cpp:35:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/qt/Api/qwebpopup.cpp:21:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/qt/QGVLauncher/custompopup.cpp:21:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/qt/Api/qwebpage.cpp:1746:  qt_qwebpage_setPopupFactory is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179006</commentid>
    <comment_count>15</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-09 09:11:20 -0800</bug_when>
    <thetext>+                     $$PWD/qwebpopup.h \
+                     $$PWD/qwebpopup_p.h

You need to make sure that neither of these are installed, as the API should be private for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179008</commentid>
    <comment_count>16</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-09 09:13:27 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; +                     $$PWD/qwebpopup.h \
&gt; +                     $$PWD/qwebpopup_p.h
&gt; 
&gt; You need to make sure that neither of these are installed, as the API should be
&gt; private for now.

How can I do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179009</commentid>
    <comment_count>17</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-09 09:15:17 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; Attachment 46208 [details] [details] did not pass style-queue:
&gt; &gt; 
&gt; &gt; Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
&gt; &gt; WebKit/qt/QGVLauncher/main.cpp:35:  Found other header before WebCore config.h.
&gt; &gt; Should be: config.h, primary header, blank line, and then alphabetically
&gt; &gt; sorted.  [build/include_order] [4]
&gt; 
&gt; These errors in QGVLauncher can be ignored
&gt; 
&gt; &gt; WebKit/qt/Api/qwebpopup.cpp:21:  Found header this file implements before
&gt; &gt; WebCore config.h. Should be: config.h, primary header, blank line, and then
&gt; &gt; alphabetically sorted.  [build/include_order] [4]
&gt; 
&gt; Pls fix
Should I include config.h in a file that is supposed to be used as public API in future?
&gt; 
&gt; &gt; WebKit/qt/QGVLauncher/custompopup.cpp:21:  Found header this file implements
&gt; &gt; before WebCore config.h. Should be: config.h, primary header, blank line, and
&gt; &gt; then alphabetically sorted.  [build/include_order] [4]
&gt; 
&gt; Ignore
&gt; 
&gt; &gt; WebKit/qt/QGVLauncher/custompopup.cpp:127:  One line control clauses should not
&gt; &gt; use braces.  [whitespace/braces] [4]
&gt; 
&gt; Please fix
&gt; 
&gt; &gt; WebKit/qt/Api/qwebpopup.h:27:  Alphabetical sorting problem. 
&gt; &gt; [build/include_order] [4]
&gt; 
&gt; fix
&gt; 
&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1753:  qt_qwebpage_setPopupFactory is incorrectly
&gt; &gt; named. Don&apos;t use underscores in your identifier names.  [readability/naming]
&gt; &gt; [4]
&gt; 
&gt; Ignore as we use this for private Qt API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179012</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-09 09:17:55 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; +                     $$PWD/qwebpopup.h \
&gt; &gt; +                     $$PWD/qwebpopup_p.h
&gt; &gt; 
&gt; &gt; You need to make sure that neither of these are installed, as the API should be
&gt; &gt; private for now.
&gt; 
&gt; How can I do that?

I don&apos;t have the source at hand right now to have a look. I guess we can verify
that later.

Would it be possible to split the patch up into two? 

1) implementation of new API
2) example added to launcher

The patch is too big to review as it is right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179087</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-09 16:34:32 -0800</bug_when>
    <thetext>We should file bugs about the style false positives.  If one of you would like to do it, I suspect you&apos;ll be more accurate in describing what needs to change.  If not, I can take care of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179306</commentid>
    <comment_count>20</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-11 02:28:28 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; We should file bugs about the style false positives.  If one of you would like
&gt; to do it, I suspect you&apos;ll be more accurate in describing what needs to change.
&gt;  If not, I can take care of it.

Could you do that Luiz?

There are basically two issues:

1) Private Qt API starts with qt_ and uses underscores. So it would be nice to ignore the underscore rule for methods starting with qt_.

2) We do not need to include config.h in our applications (our two launchers, QtLauncher and QGVLauncher, which btw probably should be merged), not in our autotests. It would be nice to ignore this check for some specific subdirs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179341</commentid>
    <comment_count>21</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-11 06:32:40 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=46209) [details]
&gt; Custom popups, popup factories and usage example.

Some comments:

* I don&apos;t understand why we&apos;re adding a public exported class but a private API to actually use it.

* I&apos;m not particularly fond of the term QWebPopup. It suggests that this relates to popup menus in web sites (sometimes also called dhtml menus). Just brainstorming: How about QWebListSelectionDelegate (too long)?

* Public Qt classes usually don&apos;t have non-virtual protected methods, they belong into the d-pointer.

* It appears the parent of the popup should be passed to the constructor and at the time the factory is called. That would also reduce the number of virtual functions one has to re-implement.

* Why is there a difference between show() and hide()? Why not capture the delegation in one single function call? Something along the lines of

int selectedIndex = select(geometry, items, initialSelectedIndex);


I think a goal of this API should be that it requires minimal effort to implement. If all it takes is one method call, then perhaps a better frame for this would be a QWebUIDelegate of some sort, provided we can keep it easily and conviently extensible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179342</commentid>
    <comment_count>22</comment_count>
      <attachid>46209</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-11 06:33:50 -0800</bug_when>
    <thetext>Comment on attachment 46209
Custom popups, popup factories and usage example.

I&apos;m going to say r- as we can&apos;t land it as-is. But that should not prevent us from having a thorough review of the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179345</commentid>
    <comment_count>23</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-11 06:41:51 -0800</bug_when>
    <thetext>
&gt; * I&apos;m not particularly fond of the term QWebPopup. It suggests that this
&gt; relates to popup menus in web sites (sometimes also called dhtml menus). Just
&gt; brainstorming: How about QWebListSelectionDelegate (too long)?

Me neither, and that was not the name me and Luiz had discussed. On the other hand Selection is confusing as it sounds as we are selecting something. Select might be better. In WebCore sense it is called Popup as it is not inline in the page, which a select can be (for instance if I add the size property).

&gt; I think a goal of this API should be that it requires minimal effort to
&gt; implement. If all it takes is one method call, then perhaps a better frame for
&gt; this would be a QWebUIDelegate of some sort, provided we can keep it easily and
&gt; conviently extensible.

In the future we might need to pass some style info as font, indentation, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179351</commentid>
    <comment_count>24</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-11 07:11:06 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #13)
&gt; &gt; Created an attachment (id=46209) [details] [details]
&gt; &gt; Custom popups, popup factories and usage example.
&gt; 
&gt; Some comments:
&gt; 
&gt; * I don&apos;t understand why we&apos;re adding a public exported class but a private API
&gt; to actually use it.
If this is supposed to get in to 4.6.x release we need to make it private. Should I move the class to the *_p.h file until it can be made public?
&gt; 
&gt; * I&apos;m not particularly fond of the term QWebPopup. It suggests that this
&gt; relates to popup menus in web sites (sometimes also called dhtml menus). Just
&gt; brainstorming: How about QWebListSelectionDelegate (too long)?
What about QWebSelectPopupDelegate. It says it is a popup related to a &lt;select&gt; html element.
&gt; 
&gt; * Public Qt classes usually don&apos;t have non-virtual protected methods, they
&gt; belong into the d-pointer.
Those methods are there to be used by the derived classes, not to be implemented by them. Should the d-pointer be protected?
&gt; 
&gt; * It appears the parent of the popup should be passed to the constructor and at
&gt; the time the factory is called. That would also reduce the number of virtual
&gt; functions one has to re-implement.
The popup object is created for each combobox just when needed but it is kept alive until the page is unloaded. There could for example have many views showing the same scene. The parent must then be adjusted before showing the popup.
&gt; 
&gt; * Why is there a difference between show() and hide()? Why not capture the
&gt; delegation in one single function call? Something along the lines of
&gt; 
&gt; int selectedIndex = select(geometry, items, initialSelectedIndex);
I think that this call must not be synchronous. I think it is not possible to block that thread while the user chooses an item in a combobox.
&gt; 
&gt; 
&gt; I think a goal of this API should be that it requires minimal effort to
&gt; implement. If all it takes is one method call, then perhaps a better frame for
&gt; this would be a QWebUIDelegate of some sort, provided we can keep it easily and
&gt; conviently extensible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181148</commentid>
    <comment_count>25</comment_count>
      <attachid>46653</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-15 01:30:10 -0800</bug_when>
    <thetext>Created attachment 46653
Custom popups and popup factories.


main changes in this patch:
   * make the API public.
   * change the name from QWebPopup to QWebSelectPopupDelegate.
   * remove the abstract method setParent and create a new non virtual method QWidget* parentWidget() in QWebSelectPopupDelegate. It can be useful for those who use QWidgets in their popup customizations but can be ignored by those that do not.
   * remove the usage example from the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181833</commentid>
    <comment_count>26</comment_count>
    <who name="Girish Ramakrishnan">girish</who>
    <bug_when>2010-01-18 05:03:12 -0800</bug_when>
    <thetext>Some suggestions that I mentioned this on irc, pasting here for the record.

1. Rename populate to setItems
2. Rename setIndex to setSelectedIndex or setCurrentIndex?
3. show() should not ideally have a selectedIndex argument. Have a separate select() maybe?
4. didHide to something more Qtish like close() or accept() or setAccepted(). (I hope I understood it&apos;s intention correctly).
5. parentWidget() needs a better name, but I don&apos;t have a better suggestion.

Also, how does the patch also deal with multiple selections? (luiz said it doesn&apos;t). So, we just leave that for later?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181839</commentid>
    <comment_count>27</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-18 05:39:07 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; Some suggestions that I mentioned this on irc, pasting here for the record.
&gt; 
&gt; 1. Rename populate to setItems
&gt; 2. Rename setIndex to setSelectedIndex or setCurrentIndex?

int	currentIndex () const
void	setCurrentIndex ( int index )

Seems to be the Qt way.

&gt; 3. show() should not ideally have a selectedIndex argument. Have a separate
&gt; select() maybe?

maybe add a geometry() method as well as the currentIndex()! so on show you can call these yourself.

&gt; 4. didHide to something more Qtish like close() or accept() or setAccepted().
&gt; (I hope I understood it&apos;s intention correctly).
 
It is a method called by webcore. Maybe we should emit something like:

void QGraphicsObject::visibleChanged ()   [signal]
or
void QDockWidget::visibilityChanged ( bool visible )   [signal]

hmm, Qt has a problem with naming here :-)

&gt; 5. parentWidget() needs a better name, but I don&apos;t have a better suggestion.

What about view() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181985</commentid>
    <comment_count>28</comment_count>
      <attachid>46845</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-18 14:03:16 -0800</bug_when>
    <thetext>Created attachment 46845
Custom popups and popup factories.

Completely new API.
Changes made based on the suggestions made by Simon, Girish and Kenneth.

All the feedbacks and suggestions were of great value. I hope this change
has been in the right direction.

I am trying to learn. Thank you all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182010</commentid>
    <comment_count>29</comment_count>
      <attachid>46855</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-18 14:52:41 -0800</bug_when>
    <thetext>Created attachment 46855
Custom popups and popup factories.

Small corrections to previous patch. See comments there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182026</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-18 15:54:44 -0800</bug_when>
    <thetext>Attachment 46845 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/198224</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182096</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-18 18:58:51 -0800</bug_when>
    <thetext>Attachment 46855 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/200055</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182163</commentid>
    <comment_count>32</comment_count>
      <attachid>46894</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-19 00:15:41 -0800</bug_when>
    <thetext>Created attachment 46894
Custom popups and popup factories.

correcting previous broken patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182233</commentid>
    <comment_count>33</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-19 07:51:52 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; Created an attachment (id=46894) [details]
&gt; Custom popups and popup factories.
&gt; 
&gt; correcting previous broken patch.

We&apos;re going to take a close look at the API here in Oslo this coming Friday (22nd).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182776</commentid>
    <comment_count>34</comment_count>
      <attachid>47020</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-20 06:43:18 -0800</bug_when>
    <thetext>Created attachment 47020
WebCore patch.

Splitting previous patch in two.
This first has the code that is not related to the public API.
The next one will have just the code related to the public API proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182780</commentid>
    <comment_count>35</comment_count>
      <attachid>47022</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-20 07:01:57 -0800</bug_when>
    <thetext>Created attachment 47022
Public API

see comments in previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183098</commentid>
    <comment_count>36</comment_count>
      <attachid>47020</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-21 00:10:54 -0800</bug_when>
    <thetext>Comment on attachment 47020
WebCore patch.

Clearing flags on attachment: 47020

Committed r53610: &lt;http://trac.webkit.org/changeset/53610&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183099</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-21 00:11:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183151</commentid>
    <comment_count>38</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-21 03:10:19 -0800</bug_when>
    <thetext>Proceeding with the api.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183152</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-21 03:15:56 -0800</bug_when>
    <thetext>Attachment 47022 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/qt/WebCoreSupport/ChromeClientQt.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
Ignoring WebKit/qt/Api/qwebpage.cpp; This file is exempt from the style guide.
Ignoring WebKit/qt/Api/qwebdelegateselectpopup.cpp; This file is exempt from the style guide.
Ignoring WebKit/qt/Api/qwebdelegateselectpopup_p.h; This file is exempt from the style guide.
Ignoring WebKit/qt/Api/qwebpage.h; This file is exempt from the style guide.
Ignoring WebKit/qt/Api/qwebdelegateselectpopup.h; This file is exempt from the style guide.
Total errors found: 1


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185222</commentid>
    <comment_count>40</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-01-27 14:36:08 -0800</bug_when>
    <thetext>I see the following line in headers.pri, which does not seem to be right.
$$PWD/qwebdelegateselectpopup_p.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185231</commentid>
    <comment_count>41</comment_count>
      <attachid>47022</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-27 15:01:24 -0800</bug_when>
    <thetext>Comment on attachment 47022
Public API

Taking this patch out of the review queue. In the API review over the phone last Friday we discussed that this needs more research as part of a full ui delegate solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185852</commentid>
    <comment_count>42</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-01-29 06:30:38 -0800</bug_when>
    <thetext>Will be worked in future as part of the full ui delegate solution.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46206</attachid>
            <date>2010-01-09 07:43:03 -0800</date>
            <delta_ts>2010-01-09 08:53:44 -0800</delta_ts>
            <desc>Custom popups, popup factories and usage example</desc>
            <filename>0001-Qt-Custom-select-popups.patch</filename>
            <type>text/plain</type>
            <size>28415</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAxMjNmNmQzZGIzMjVmNWRhZThiYmU3ZDdmYTJhYjE2OGMwNGZhNGJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFNhdCwgOSBKYW4gMjAxMCAxMjozNjo1OSAtMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIFtRdF0gQ3VzdG9tIHNlbGVjdCBwb3B1cHMuCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzM0MTgKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKV2ViQ29y
ZToKCnF3ZWJwb3B1cC5jcHAgYWRkZWQgdG8gV2ViQ29yZS5wcm8uCgoqIFdlYkNvcmUucHJvOgoK
V2ViS2l0L3F0OgoKU3VwcG9ydCBmb3IgY29tYm9ib3ggcG9wdXAgY3VzdG9taXphdGlvbnMuCgpD
b21ib2JveCBwb3B1cCBjdXN0b21pemF0aW9uIGNhbiBiZSBtYWRlIHByb3ZpZGluZyBhbiBpbnN0
YW5jZSBvZiBRV2ViUG9wdXBGYWN0b3J5IHRvClFXZWJQYWdlLiBUaGUgZmFjdG9yeSB3aWxsIGJl
IHVzZWQgdG8gY3JlYXRlIFFXZWJQb3B1cCBvYmplY3RzIHdoZW4gbmVlZGVkLiBRV2ViUG9wdXAK
Y2xhc3MgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGN1c3RvbSBjb21ib2JveCBwb3B1cHMuCgpRV2Vi
UG9wdXBGYWN0b3J5IGluaGVyaXRlZCBjbGFzc2VzIG11c3QgaW1wbGVtZW50IG1ldGhvZCBjcmVh
dGUgYW5kIHJldHVybiBhbiBvYmplY3QKb2YgY2xhc3MgUVdlYlBvcHVwLgoKUVdlYlBhZ2UgaW50
ZXJmYWNlIGhhcyBub3QgYmVlbiBjaGFuZ2VkLiBObyBwdWJsaWMgQVBJIGlzIGF2YWxpYWJsZSB0
byBzZXQgUVdlYlBhZ2UncwpmYWN0b3JpZXMuIFRvIHVzZSBwb3B1cCBmYWN0b3JpZXMgZmlsZSBx
d2VicGFnZV9wLmggbXVzdCBiZSBpbmNsdWRlZCBhbmQgdGhlIGZhY3RvcnkKY2FuIGJlIHNldCB0
aHJvdWdoIGZ1bmN0aW9uIHF0UVdlYlBhZ2VTZXRQb3B1cEZhY3RvcnkuCgpBbiB1c2FnZSBleGFt
cGxlIGlzIGF2YWlsYWJsZSBpbiBRR1ZMYXVuY2hlci4gT3B0aW9uICdVc2UgY3VzdG9tIHBvcHVw
JyBjYW4gYmUKZm91bmQgaW4gZWZmZWN0cyBtZW51LgoKKiBBcGkvaGVhZGVycy5wcmk6CiogQXBp
L3F3ZWJwYWdlLmNwcDoKKFFXZWJQYWdlOjpzZXRQb3B1cEZhY3RvcnkpOgoocXRfcXdlYnBhZ2Vf
c2V0UG9wdXBGYWN0b3J5KToKKiBBcGkvcXdlYnBhZ2UuaDoKKiBBcGkvcXdlYnBhZ2VfcC5oOgoq
IFFHVkxhdW5jaGVyL1FHVkxhdW5jaGVyLnBybzoKKiBRR1ZMYXVuY2hlci9tYWluLmNwcDoKKGZh
Y3RvcnkpOgooV2ViUGFnZTo6V2ViUGFnZSk6CihXZWJQYWdlOjpzZXRQb3B1cEZhY3RvcnkpOgoo
U2hhcmVkU2NlbmU6OnNldFBvcHVwRmFjdG9yeSk6CihNYWluV2luZG93Ojp1c2VDdXN0b21Qb3B1
cCk6CihNYWluV2luZG93Ojp1c2VEZWZhdWx0UG9wdXApOgooTWFpbldpbmRvdzo6YnVpbGRVSSk6
CiogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgooV2ViQ29yZTo6UVdlYlBvcHVw
V3JhcHBlcjo6UVdlYlBvcHVwV3JhcHBlcik6CihXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjp+
UVdlYlBvcHVwV3JhcHBlcik6CihXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpzaG93KToKKFdl
YkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OmhpZGUpOgooV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBl
cjo6cG9wdWxhdGUpOgooV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6c2V0UGFyZW50KToKKFdl
YkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OmdldEl0ZW1zKToKKFdlYkNvcmU6OlFXZWJQb3B1cFdy
YXBwZXI6OmRpZEhpZGUpOgooV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6c2V0SW5kZXgpOgoo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OkNocm9tZUNsaWVudFF0KToKKFdlYkNvcmU6OkNocm9t
ZUNsaWVudFF0OjpjcmVhdGVQb3B1cCk6CiogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
aDoKKiBXZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwOgooV2ViQ29yZTo6UXRG
YWxsYmFja1dlYlBvcHVwOjpzaG93KToKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKysKIFdlYkNvcmUvV2ViQ29yZS5wcm8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJp
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2Uu
Y3BwICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArKwogV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIFdlYktpdC9xdC9BcGkvcXdlYnBh
Z2VfcC5oICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJLaXQvcXQvQXBpL3F3ZWJw
b3B1cC5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAgNDUgKysrKysrKysKIFdlYktpdC9xdC9B
cGkvcXdlYnBvcHVwLmggICAgICAgICAgICAgICAgICAgICAgIHwgICA2OSArKysrKysrKysrKysK
IFdlYktpdC9xdC9BcGkvcXdlYnBvcHVwX3AuaCAgICAgICAgICAgICAgICAgICAgIHwgICAzOCAr
KysrKysKIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICA1NCArKysrKysrKysKIFdlYktpdC9xdC9RR1ZMYXVuY2hlci9RR1ZMYXVuY2hlci5wcm8gICAg
ICAgICAgIHwgICAgMyArLQogV2ViS2l0L3F0L1FHVkxhdW5jaGVyL2N1c3RvbXBvcHVwLmNwcCAg
ICAgICAgICAgfCAgMTM3ICsrKysrKysrKysrKysrKysrKysrKysrCiBXZWJLaXQvcXQvUUdWTGF1
bmNoZXIvY3VzdG9tcG9wdXAuaCAgICAgICAgICAgICB8ICAgNzAgKysrKysrKysrKysrCiBXZWJL
aXQvcXQvUUdWTGF1bmNoZXIvbWFpbi5jcHAgICAgICAgICAgICAgICAgICB8ICAgNTAgKysrKysr
KystCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwICAgICB8ICAg
OTYgKysrKysrKysrKysrKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmggICAgICAgfCAgICAzICsKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNr
V2ViUG9wdXAuY3BwIHwgICAgOCAtLQogMTcgZmlsZXMgY2hhbmdlZCwgNTk3IGluc2VydGlvbnMo
KyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdC9xdC9BcGkvcXdl
YnBvcHVwLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdC9xdC9BcGkvcXdlYnBvcHVwLmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvcXQvQXBpL3F3ZWJwb3B1cF9wLmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBXZWJLaXQvcXQvUUdWTGF1bmNoZXIvY3VzdG9tcG9wdXAuY3BwCiBjcmVhdGUg
bW9kZSAxMDA2NDQgV2ViS2l0L3F0L1FHVkxhdW5jaGVyL2N1c3RvbXBvcHVwLmgKCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU0MWI3NGEu
Ljc3NmM4N2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDEtMDkgIEx1aXogQWdvc3RpbmkgIDxsdWl6
LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XSBDdXN0b20gc2VsZWN0IHBvcHVwcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNDE4CisKKyAgICAgICAgcXdl
YnBvcHVwLmNwcCBhZGRlZCB0byBXZWJDb3JlLnByby4KKworICAgICAgICAqIFdlYkNvcmUucHJv
OgorCiAyMDEwLTAxLTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4gIEZpeCBuYW1lc3BhY2UgaW5kZW50IGZvciBTZWN1cml0eU9yaWdpbi5o
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
aW5kZXggNmYwMzgzOC4uNjk1YTM3NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybwor
KysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yNDcyLDYgKzI0NzIsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3Bw
IFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAgXAogICAgIC4uL1dlYktpdC9x
dC9BcGkvcWdyYXBoaWNzd2Vidmlldy5jcHAgXAorICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYnBv
cHVwLmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgXAogICAgIC4uL1dl
YktpdC9xdC9BcGkvcXdlYnZpZXcuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVt
ZW50LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJpIGIvV2ViS2l0
L3F0L0FwaS9oZWFkZXJzLnByaQppbmRleCAxYTQyNTk3Li45MjcwYWM3IDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJpCisrKyBiL1dlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkK
QEAgLTExLDQgKzExLDYgQEAgV0VCS0lUX0FQSV9IRUFERVJTID0gJCRQV0QvcXdlYmZyYW1lLmgg
XAogICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYnBsdWdpbmZhY3RvcnkuaCBcCiAgICAg
ICAgICAgICAgICAgICAgICAkJFBXRC9xd2ViaGlzdG9yeS5oIFwKICAgICAgICAgICAgICAgICAg
ICAgICQkUFdEL3F3ZWJpbnNwZWN0b3IuaCBcCi0gICAgICAgICAgICAgICAgICAgICAkJFBXRC9x
d2Via2l0dmVyc2lvbi5oCisgICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2Via2l0dmVyc2lv
bi5oIFwKKyAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJwb3B1cC5oIFwKKyAgICAgICAg
ICAgICAgICAgICAgICQkUFdEL3F3ZWJwb3B1cF9wLmgKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9B
cGkvcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXggMjE0N2Vh
Yi4uODAyN2E3YSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIGIv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTE3NDMsNiArMTc0MywxOCBAQCBRV2ViUGFn
ZTo6flFXZWJQYWdlKCkKICAgICBkZWxldGUgZDsKIH0KIAorCisKK3ZvaWQgUVdlYlBhZ2U6OnNl
dFBvcHVwRmFjdG9yeShRV2ViUG9wdXBGYWN0b3J5KiBmYWN0b3J5KQoreworICAgIGQtPmNocm9t
ZUNsaWVudC0+bV9wb3B1cEZhY3RvcnkgPSBmYWN0b3J5OworfQorCit2b2lkIHF0X3F3ZWJwYWdl
X3NldFBvcHVwRmFjdG9yeShRV2ViUGFnZSogcGFnZSwgUVdlYlBvcHVwRmFjdG9yeSogZmFjdG9y
eSkKK3sKKyAgICBwYWdlLT5zZXRQb3B1cEZhY3RvcnkoZmFjdG9yeSk7Cit9CisKIC8qIQogICAg
IFJldHVybnMgdGhlIG1haW4gZnJhbWUgb2YgdGhlIHBhZ2UuCiAKZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9BcGkvcXdlYnBhZ2UuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAppbmRleCA0NzY2
Y2JkLi42YjRiNWI4IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKKysrIGIv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCkBAIC00OSw2ICs0OSw4IEBAIGNsYXNzIFFXZWJQbHVn
aW5GYWN0b3J5OwogY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBRV2ViSGlzdG9yeUl0
ZW07CiAKK2NsYXNzIFFXZWJQb3B1cEZhY3Rvcnk7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBDaHJvbWVDbGllbnRRdDsKICAgICBjbGFzcyBFZGl0b3JDbGllbnRRdDsKQEAgLTM2
Myw2ICszNjUsMTAgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOwog
ICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjsKKworICAgIGZy
aWVuZCB2b2lkIHF0X3F3ZWJwYWdlX3NldFBvcHVwRmFjdG9yeShRV2ViUGFnZSogcGFnZSwgUVdl
YlBvcHVwRmFjdG9yeSogZmFjdG9yeSk7CisKKyAgICB2b2lkIHNldFBvcHVwRmFjdG9yeShRV2Vi
UG9wdXBGYWN0b3J5Kik7CiB9OwogCiBRX0RFQ0xBUkVfT1BFUkFUT1JTX0ZPUl9GTEFHUyhRV2Vi
UGFnZTo6RmluZEZsYWdzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgg
Yi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAppbmRleCBkYmM5ODFlLi4xZTIwNjYwIDEwMDY0
NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3
ZWJwYWdlX3AuaApAQCAtMTg1LDQgKzE4NSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBk
cnRSdW47CiB9OwogCitRV0VCS0lUX0VYUE9SVCB2b2lkIHF0X3F3ZWJwYWdlX3NldFBvcHVwRmFj
dG9yeShRV2ViUGFnZSogcGFnZSwgUVdlYlBvcHVwRmFjdG9yeSogZmFjdG9yeSk7CisKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicG9wdXAuY3BwIGIvV2ViS2l0L3F0L0Fw
aS9xd2VicG9wdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNGUx
OTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwb3B1cC5jcHAKQEAgLTAs
MCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJxd2VicG9wdXAuaCIKKwor
I2luY2x1ZGUgInF3ZWJwb3B1cF9wLmgiCisKK1FXZWJQb3B1cDo6UVdlYlBvcHVwKCkKKyAgICA6
IGQobmV3IFFXZWJQb3B1cFByaXZhdGUoKSkKK3sKK30KKworUVdlYlBvcHVwOjp+UVdlYlBvcHVw
KCkKK3sKKyAgICBkZWxldGUgZDsKK30KKwordm9pZCBRV2ViUG9wdXA6OmRpZEhpZGUoYm9vbCBh
Y2NlcHRTdWdnZXN0aW9ucykKK3sKKyAgICBRX0FTU0VSVChkLT5vYnNlcnZlcik7CisgICAgZC0+
b2JzZXJ2ZXItPmRpZEhpZGUoYWNjZXB0U3VnZ2VzdGlvbnMpOworfQorCit2b2lkIFFXZWJQb3B1
cDo6c2V0SW5kZXgoaW50IGluZGV4KQoreworICAgIFFfQVNTRVJUKGQtPm9ic2VydmVyKTsKKyAg
ICBkLT5vYnNlcnZlci0+c2V0SW5kZXgoaW5kZXgpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L0FwaS9xd2VicG9wdXAuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBvcHVwLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM5NmY4OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dC9xdC9BcGkvcXdlYnBvcHVwLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisK
KyNpZm5kZWYgcXdlYnBvcHVwX2gKKyNkZWZpbmUgcXdlYnBvcHVwX2gKKworI2luY2x1ZGUgPFFT
dHJpbmc+CisjaW5jbHVkZSA8UVJlY3Q+CisjaW5jbHVkZSA8UUxpc3Q+CisjaW5jbHVkZSA8UVdp
ZGdldD4KKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKK2NsYXNzIFFXZWJQb3B1cFByaXZh
dGU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBRV2ViUG9wdXBXcmFwcGVyOwor
fQorCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViUG9wdXAgeworcHVibGljOgorICAgIHN0cnVj
dCBJdGVtIHsKKyAgICAgICAgZW51bSB7IE9wdGlvbiwgR3JvdXAsIFNlcGFyYXRvciB9IHR5cGU7
CisgICAgICAgIFFTdHJpbmcgdGV4dDsKKyAgICAgICAgUVN0cmluZyB0b29sVGlwOworICAgICAg
ICBib29sIGVuYWJsZWQ7CisgICAgfTsKKworICAgIFFXZWJQb3B1cCgpOworICAgIHZpcnR1YWwg
flFXZWJQb3B1cCgpOworCisgICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgUVJlY3QmIGdlb21l
dHJ5LCBpbnQgc2VsZWN0ZWRJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoaWRlKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZShjb25zdCBRTGlzdDxJdGVtPiYgaXRlbXMpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KFFXaWRnZXQqIHBhcmVudCkgPSAwOworCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBkaWRIaWRlKGJvb2wgYWNjZXB0U3VnZ2VzdGlvbnMpOworICAg
IHZvaWQgc2V0SW5kZXgoaW50IGluZGV4KTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
V2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjsKKyAgICBRV2ViUG9wdXBQcml2YXRlKiBkOworfTsK
KworY2xhc3MgUVdlYlBvcHVwRmFjdG9yeSB7CitwdWJsaWM6CisgICAgdmlydHVhbCBRV2ViUG9w
dXAqIGNyZWF0ZSgpID0gMDsKK307CisKKworCisjZW5kaWYgLy8gcXdlYnBvcHVwX2gKZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBvcHVwX3AuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBv
cHVwX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzIwMmZhCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicG9wdXBfcC5oCkBAIC0wLDAgKzEsMzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIHF3ZWJwb3B1cF9wX2gKKyNkZWZpbmUgcXdl
YnBvcHVwX3BfaAorCitjbGFzcyBRV2ViUG9wdXBPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB2b2lkIGRpZEhpZGUoYm9vbCBhY2NlcHRTdWdnZXN0aW9ucykgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRJbmRleChpbnQgaW5kZXgpID0gMDsKK307CisKK2NsYXNzIFFXZWJQb3B1cFBy
aXZhdGUgeworcHVibGljOgorICAgIFFXZWJQb3B1cE9ic2VydmVyKiBvYnNlcnZlcjsKKworICAg
IFFXZWJQb3B1cFByaXZhdGUoKSA6IG9ic2VydmVyKDApIHt9Cit9OworCisKKyNlbmRpZiAvLyBx
d2VicG9wdXBfcF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0
L0NoYW5nZUxvZwppbmRleCBjMzAzYjQzLi5mMzJjNjRiIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAx
MC0wMS0wOSAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEN1c3Rv
bSBzZWxlY3QgcG9wdXBzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzM0MTgKKworICAgICAgICBTdXBwb3J0IGZvciBjb21ib2JveCBwb3B1cCBjdXN0
b21pemF0aW9ucy4KKworICAgICAgICBDb21ib2JveCBwb3B1cCBjdXN0b21pemF0aW9uIGNhbiBi
ZSBtYWRlIHByb3ZpZGluZyBhbiBpbnN0YW5jZSBvZiBRV2ViUG9wdXBGYWN0b3J5IHRvCisgICAg
ICAgIFFXZWJQYWdlLiBUaGUgZmFjdG9yeSB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlIFFXZWJQb3B1
cCBvYmplY3RzIHdoZW4gbmVlZGVkLiBRV2ViUG9wdXAKKyAgICAgICAgY2xhc3MgaXMgdGhlIGJh
c2UgY2xhc3MgZm9yIGN1c3RvbSBjb21ib2JveCBwb3B1cHMuCisKKyAgICAgICAgUVdlYlBvcHVw
RmFjdG9yeSBpbmhlcml0ZWQgY2xhc3NlcyBtdXN0IGltcGxlbWVudCBtZXRob2QgY3JlYXRlIGFu
ZCByZXR1cm4gYW4gb2JqZWN0CisgICAgICAgIG9mIGNsYXNzIFFXZWJQb3B1cC4KKworICAgICAg
ICBRV2ViUGFnZSBpbnRlcmZhY2UgaGFzIG5vdCBiZWVuIGNoYW5nZWQuIE5vIHB1YmxpYyBBUEkg
aXMgYXZhbGlhYmxlIHRvIHNldCBRV2ViUGFnZSdzCisgICAgICAgIGZhY3Rvcmllcy4gVG8gdXNl
IHBvcHVwIGZhY3RvcmllcyBmaWxlIHF3ZWJwYWdlX3AuaCBtdXN0IGJlIGluY2x1ZGVkIGFuZCB0
aGUgZmFjdG9yeQorICAgICAgICBjYW4gYmUgc2V0IHRocm91Z2ggZnVuY3Rpb24gcXRRV2ViUGFn
ZVNldFBvcHVwRmFjdG9yeS4KKworICAgICAgICBBbiB1c2FnZSBleGFtcGxlIGlzIGF2YWlsYWJs
ZSBpbiBRR1ZMYXVuY2hlci4gT3B0aW9uICdVc2UgY3VzdG9tIHBvcHVwJyBjYW4gYmUKKyAgICAg
ICAgZm91bmQgaW4gZWZmZWN0cyBtZW51LgorCisgICAgICAgICogQXBpL2hlYWRlcnMucHJpOgor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c2V0UG9wdXBG
YWN0b3J5KToKKyAgICAgICAgKHF0UVdlYlBhZ2VTZXRQb3B1cEZhY3RvcnkpOgorICAgICAgICAq
IEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICog
UUdWTGF1bmNoZXIvUUdWTGF1bmNoZXIucHJvOgorICAgICAgICAqIFFHVkxhdW5jaGVyL21haW4u
Y3BwOgorICAgICAgICAoZmFjdG9yeSk6CisgICAgICAgIChXZWJQYWdlOjpXZWJQYWdlKToKKyAg
ICAgICAgKFdlYlBhZ2U6OnNldFBvcHVwRmFjdG9yeSk6CisgICAgICAgIChTaGFyZWRTY2VuZTo6
c2V0UG9wdXBGYWN0b3J5KToKKyAgICAgICAgKE1haW5XaW5kb3c6OnVzZUN1c3RvbVBvcHVwKToK
KyAgICAgICAgKE1haW5XaW5kb3c6OnVzZURlZmF1bHRQb3B1cCk6CisgICAgICAgIChNYWluV2lu
ZG93OjpidWlsZFVJKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpRV2ViUG9wdXBXcmFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6On5RV2ViUG9wdXBXcmFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OnNob3cpOgorICAgICAgICAo
V2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6aGlkZSk6CisgICAgICAgIChXZWJDb3JlOjpRV2Vi
UG9wdXBXcmFwcGVyOjpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBXcmFw
cGVyOjpzZXRQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6Z2V0
SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6ZGlkSGlkZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpzZXRJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Q2hyb21lQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVBvcHVwKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tX
ZWJQb3B1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cp
OgorCiAyMDEwLTAxLTA4ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1FHVkxhdW5jaGVyL1FHVkxhdW5jaGVyLnBybyBiL1dlYktp
dC9xdC9RR1ZMYXVuY2hlci9RR1ZMYXVuY2hlci5wcm8KaW5kZXggMDU5ZWMxYS4uOWJkZmFkOSAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L1FHVkxhdW5jaGVyL1FHVkxhdW5jaGVyLnBybworKysgYi9X
ZWJLaXQvcXQvUUdWTGF1bmNoZXIvUUdWTGF1bmNoZXIucHJvCkBAIC0xLDUgKzEsNiBAQAogVEVN
UExBVEUgPSBhcHAKLVNPVVJDRVMgKz0gbWFpbi5jcHAKK1NPVVJDRVMgKz0gbWFpbi5jcHAgY3Vz
dG9tcG9wdXAuY3BwCitIRUFERVJTICs9IGN1c3RvbXBvcHVwLmgKIENPTkZJRyAtPSBhcHBfYnVu
ZGxlCiBDT05GSUcgKz0gdWl0b29scwogREVTVERJUiA9IC4uLy4uLy4uL2JpbgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L1FHVkxhdW5jaGVyL2N1c3RvbXBvcHVwLmNwcCBiL1dlYktpdC9xdC9RR1ZM
YXVuY2hlci9jdXN0b21wb3B1cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNDFhYjRjZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC9RR1ZMYXVuY2hlci9jdXN0
b21wb3B1cC5jcHAKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVk
ZSAiY3VzdG9tcG9wdXAuaCIKKworI2luY2x1ZGUgPFFQcm9wZXJ0eUFuaW1hdGlvbj4KKyNpbmNs
dWRlIDxRU3RhbmRhcmRJdGVtTW9kZWw+CisKK0N1c3RvbUxpc3RXaWRnZXQ6OkN1c3RvbUxpc3RX
aWRnZXQoKQoreworfQorCit2b2lkIEN1c3RvbUxpc3RXaWRnZXQ6OmZvY3VzT3V0RXZlbnQoUUZv
Y3VzRXZlbnQqIGV2ZW50KQoreworICAgIGVtaXQgZm9jdXNPdXQoKTsKKyAgICBRTGlzdFdpZGdl
dDo6Zm9jdXNPdXRFdmVudChldmVudCk7Cit9CisKK0N1c3RvbVBvcHVwOjpDdXN0b21Qb3B1cCgp
CisgICAgOiBtX2FuaW1hdGlvbigwKQoreworICAgIGNvbm5lY3QoJm1fbGlzdCwgU0lHTkFMKGl0
ZW1DbGlja2VkKFFMaXN0V2lkZ2V0SXRlbSopKSwgdGhpcywgU0xPVChpdGVtQ2hhbmdlZCgpKSk7
CisgICAgY29ubmVjdCgmbV9saXN0LCBTSUdOQUwoZm9jdXNPdXQoKSksIHRoaXMsIFNMT1QoZm9j
dXNPdXQoKSkpOworfQorCitDdXN0b21Qb3B1cDo6fkN1c3RvbVBvcHVwKCkKK3sKK30KKwordm9p
ZCBDdXN0b21Qb3B1cDo6c2V0UGFyZW50KFFXaWRnZXQqIHBhcmVudCkKK3sKKyAgICBtX2xpc3Qu
c2V0UGFyZW50KHBhcmVudCk7Cit9CisKK3ZvaWQgQ3VzdG9tUG9wdXA6OnNob3coY29uc3QgUVJl
Y3QmIGdlb21ldHJ5LCBpbnQgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBpZiAobV9hbmltYXRpb24p
CisgICAgICAgIG1fYW5pbWF0aW9uLT5zdG9wKCk7CisKKyAgICBtX2xpc3Quc2V0R2VvbWV0cnko
UVJlY3QoNTAsIDUwLCBnZW9tZXRyeS53aWR0aCgpLCAyNTApKTsKKyAgICBtX2xpc3Quc2V0Vmlz
aWJsZSh0cnVlKTsKKyAgICBtX2xpc3Quc2V0Q3VycmVudFJvdyhzZWxlY3RlZEluZGV4KTsKKwor
ICAgIFFQb2ludCBzdGFydCA9IFFQb2ludCgtbV9saXN0LndpZHRoKCksIC1tX2xpc3QuaGVpZ2h0
KCkpOworICAgIFFQb2ludCBlbmQgPSBnZW9tZXRyeS50b3BMZWZ0KCk7CisKKyAgICBRV2lkZ2V0
KiBwYXJlbnQgPSBtX2xpc3QucGFyZW50V2lkZ2V0KCk7CisKKyAgICBpZiAocGFyZW50KSB7Cisg
ICAgICAgIGVuZC5zZXRYKHFNaW4oZW5kLngoKSwgcGFyZW50LT53aWR0aCgpIC0gbV9saXN0Lndp
ZHRoKCkpKTsKKyAgICAgICAgZW5kLnNldFkocU1pbihlbmQueSgpLCBwYXJlbnQtPmhlaWdodCgp
IC0gbV9saXN0LmhlaWdodCgpKSk7CisKKyAgICAgICAgc3RhcnQuc2V0WCgyICogZW5kLngoKSA8
IHBhcmVudC0+d2lkdGgoKSA/IC1tX2xpc3Qud2lkdGgoKSA6IHBhcmVudC0+d2lkdGgoKSk7Cisg
ICAgICAgIHN0YXJ0LnNldFkoMiAqIGVuZC55KCkgPCBwYXJlbnQtPmhlaWdodCgpID8gLW1fbGlz
dC5oZWlnaHQoKSA6IHBhcmVudC0+aGVpZ2h0KCkpOworICAgIH0KKworICAgIFFQcm9wZXJ0eUFu
aW1hdGlvbiogYW5pbWF0aW9uID0gbmV3IFFQcm9wZXJ0eUFuaW1hdGlvbigpOworICAgIGFuaW1h
dGlvbi0+c2V0VGFyZ2V0T2JqZWN0KCZtX2xpc3QpOworICAgIGFuaW1hdGlvbi0+c2V0UHJvcGVy
dHlOYW1lKCJwb3MiKTsKKyAgICBhbmltYXRpb24tPnNldEVhc2luZ0N1cnZlKFFFYXNpbmdDdXJ2
ZTo6T3V0Qm91bmNlKTsKKyAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKDEwMDApOworICAgIGFu
aW1hdGlvbi0+c2V0U3RhcnRWYWx1ZShzdGFydCk7CisgICAgYW5pbWF0aW9uLT5zZXRFbmRWYWx1
ZShlbmQpOworCisgICAgbV9hbmltYXRpb24gPSBhbmltYXRpb247CisgICAgY29ubmVjdChhbmlt
YXRpb24sIFNJR05BTChmaW5pc2hlZCgpKSwgdGhpcywgU0xPVChpbkFuaW1hdGlvbkVuZCgpKSk7
CisgICAgbV9hbmltYXRpb24tPnN0YXJ0KFFBYnN0cmFjdEFuaW1hdGlvbjo6RGVsZXRlV2hlblN0
b3BwZWQpOworCit9CisKK3ZvaWQgQ3VzdG9tUG9wdXA6OmhpZGUoKQoreworICAgIGlmIChtX2Fu
aW1hdGlvbikKKyAgICAgICAgbV9hbmltYXRpb24tPnN0b3AoKTsKKworICAgIFFQcm9wZXJ0eUFu
aW1hdGlvbiogYW5pbWF0aW9uID0gbmV3IFFQcm9wZXJ0eUFuaW1hdGlvbjsKKyAgICBhbmltYXRp
b24tPnNldFRhcmdldE9iamVjdCgmbV9saXN0KTsKKyAgICBhbmltYXRpb24tPnNldFByb3BlcnR5
TmFtZSgicG9zIik7CisgICAgYW5pbWF0aW9uLT5zZXRFYXNpbmdDdXJ2ZShRRWFzaW5nQ3VydmU6
Ok91dEN1YmljKTsKKyAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKDUwMCk7CisgICAgYW5pbWF0
aW9uLT5zZXRFbmRWYWx1ZShRUG9pbnQoLW1fbGlzdC53aWR0aCgpLCAtbV9saXN0LmhlaWdodCgp
KSk7CisKKyAgICBtX2FuaW1hdGlvbiA9IGFuaW1hdGlvbjsKKyAgICBjb25uZWN0KGFuaW1hdGlv
biwgU0lHTkFMKGZpbmlzaGVkKCkpLCB0aGlzLCBTTE9UKG91dEFuaW1hdGlvbkVuZCgpKSk7Cisg
ICAgbV9hbmltYXRpb24tPnN0YXJ0KFFBYnN0cmFjdEFuaW1hdGlvbjo6RGVsZXRlV2hlblN0b3Bw
ZWQpOworfQorCit2b2lkIEN1c3RvbVBvcHVwOjpwb3B1bGF0ZShjb25zdCBRTGlzdDxJdGVtPiYg
aXRlbXMpCit7CisKKyAgICBtX2xpc3QuY2xlYXIoKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgaXRlbXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKGl0ZW1zW2ldLnR5cGUgPT0gUVdl
YlBvcHVwOjpJdGVtOjpTZXBhcmF0b3IpCisgICAgICAgICAgICBtX2xpc3QuYWRkSXRlbSgiLS0t
LS0tLS0tLS0tLS0iKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX2xpc3QuYWRkSXRl
bShpdGVtc1tpXS50ZXh0KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDdXN0b21Qb3B1
cDo6aW5BbmltYXRpb25FbmQoKQoreworICAgIG1fYW5pbWF0aW9uID0gMDsKKyAgICBtX2xpc3Qu
c2V0Rm9jdXMoKTsKK30KKwordm9pZCBDdXN0b21Qb3B1cDo6b3V0QW5pbWF0aW9uRW5kKCkKK3sK
KyAgICBtX2FuaW1hdGlvbiA9IDA7CisgICAgZGlkSGlkZSh0cnVlKTsKKyAgICBtX2xpc3Quc2V0
UGFyZW50KDApOworICAgIG1fbGlzdC5zZXRWaXNpYmxlKGZhbHNlKTsKK30KKwordm9pZCBDdXN0
b21Qb3B1cDo6aXRlbUNoYW5nZWQoKQoreworICAgIHNldEluZGV4KG1fbGlzdC5jdXJyZW50SW5k
ZXgoKS5yb3coKSk7CisgICAgaGlkZSgpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1FHVkxh
dW5jaGVyL2N1c3RvbXBvcHVwLmggYi9XZWJLaXQvcXQvUUdWTGF1bmNoZXIvY3VzdG9tcG9wdXAu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDNiMTcxCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0L3F0L1FHVkxhdW5jaGVyL2N1c3RvbXBvcHVwLmgKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgY3VzdG9tcG9wdXBfaAorI2RlZmluZSBj
dXN0b21wb3B1cF9oCisKKyNpbmNsdWRlICJxd2VicG9wdXAuaCIKKworI2luY2x1ZGUgPFFBYnN0
cmFjdEFuaW1hdGlvbj4KKyNpbmNsdWRlIDxRTGlzdFdpZGdldD4KKworY2xhc3MgQ3VzdG9tTGlz
dFdpZGdldCA6IHB1YmxpYyBRTGlzdFdpZGdldCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAg
ICBDdXN0b21MaXN0V2lkZ2V0KCk7CisKK3NpZ25hbHM6CisgICAgdm9pZCBmb2N1c091dCgpOwor
Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGZvY3VzT3V0RXZlbnQoUUZvY3VzRXZlbnQq
IGV2ZW50KTsKK307CisKK2NsYXNzIEN1c3RvbVBvcHVwIDogcHVibGljIFFPYmplY3QsIHB1Ymxp
YyBRV2ViUG9wdXAgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgQ3VzdG9tUG9wdXAoKTsK
KyAgICB+Q3VzdG9tUG9wdXAoKTsKKworCisgICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgUVJl
Y3QmIGdlb21ldHJ5LCBpbnQgc2VsZWN0ZWRJbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGhpZGUo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGUoY29uc3QgUUxpc3Q8SXRlbT4mIGl0ZW1zKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KFFXaWRnZXQqIHBhcmVudCk7CisKK3ByaXZhdGU6
CisgICAgQ3VzdG9tTGlzdFdpZGdldCBtX2xpc3Q7CisgICAgUUxpc3Q8SXRlbT4gbV9pdGVtczsK
KyAgICBRQWJzdHJhY3RBbmltYXRpb24qIG1fYW5pbWF0aW9uOworCitwcml2YXRlIHNsb3RzOgor
ICAgIHZvaWQgaW5BbmltYXRpb25FbmQoKTsKKyAgICB2b2lkIG91dEFuaW1hdGlvbkVuZCgpOwor
ICAgIHZvaWQgaXRlbUNoYW5nZWQoKTsKKyAgICB2b2lkIGZvY3VzT3V0KCkgeyBoaWRlKCk7IH0K
K307CisKK2NsYXNzIEN1c3RvbVBvcHVwRmFjdG9yeSA6IHB1YmxpYyBRV2ViUG9wdXBGYWN0b3J5
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFFXZWJQb3B1cCogY3JlYXRlKCkgeyByZXR1cm4gbmV3
IEN1c3RvbVBvcHVwOyB9Cit9OworCisjZW5kaWYgLy8gY3VzdG9tcG9wdXBfaApkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L1FHVkxhdW5jaGVyL21haW4uY3BwIGIvV2ViS2l0L3F0L1FHVkxhdW5jaGVy
L21haW4uY3BwCmluZGV4IGI4MjM0N2UuLjE2YTU4YmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9R
R1ZMYXVuY2hlci9tYWluLmNwcAorKysgYi9XZWJLaXQvcXQvUUdWTGF1bmNoZXIvbWFpbi5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEdlb3JnZSBTdGFpa29zIDxzdGFpa29zQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+CiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgpAQCAtMzIsNiArMzIsNyBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY3VzdG9tcG9wdXAuaCIKICNpbmNsdWRl
IDxRRGVidWc+CiAjaW5jbHVkZSA8UUZpbGU+CiAjaW5jbHVkZSA8UUdyYXBoaWNzU2NlbmU+CkBA
IC00Nyw2ICs0OCw4IEBACiAjaW5jbHVkZSA8cXdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8cWdyYXBo
aWNzd2Vidmlldy5oPgogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CisjaW5jbHVkZSA8cXdlYnBvcHVw
Lmg+CisjaW5jbHVkZSA8cXdlYnBvcHVwX3AuaD4KICNpbmNsdWRlIDxxd2Vic2V0dGluZ3MuaD4K
ICNpbmNsdWRlIDxxd2Vidmlldy5oPgogCkBAIC05Myw2ICs5NiwxMiBAQCBwcml2YXRlOgogICAg
IHFyZWFsIG1feVJvdGF0aW9uOwogfTsKIAorc3RhdGljIFFXZWJQb3B1cEZhY3RvcnkqIGZhY3Rv
cnkoKQoreworICAgIHN0YXRpYyBRV2ViUG9wdXBGYWN0b3J5KiByZXN1bHQobmV3IEN1c3RvbVBv
cHVwRmFjdG9yeSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogY2xhc3MgV2ViUGFnZSA6IHB1
YmxpYyBRV2ViUGFnZSB7CiAgICAgUV9PQkpFQ1QKIApAQCAtMTAxLDkgKzExMCwxNSBAQCBwdWJs
aWM6CiAgICAgICAgIDogUVdlYlBhZ2UocGFyZW50KQogICAgIHsKICAgICAgICAgYXBwbHlQcm94
eSgpOworICAgICAgICBzZXRQb3B1cEZhY3RvcnkoZmFsc2UpOwogICAgIH0KICAgICB2aXJ0dWFs
IFFXZWJQYWdlKiBjcmVhdGVXaW5kb3coUVdlYlBhZ2U6OldlYldpbmRvd1R5cGUpOwogCisgICAg
dm9pZCBzZXRQb3B1cEZhY3RvcnkoYm9vbCB1c2VDdXN0b21Qb3B1cCkKKyAgICB7CisgICAgICAg
IHF0X3F3ZWJwYWdlX3NldFBvcHVwRmFjdG9yeSh0aGlzLCB1c2VDdXN0b21Qb3B1cCA/IGZhY3Rv
cnkoKSA6IDApOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGFwcGx5UHJveHkoKQogICAg
IHsKQEAgLTIyMiw2ICsyMzcsMTEgQEAgcHVibGljOgogICAgIFFHcmFwaGljc1NjZW5lKiBzY2Vu
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NlbmU7IH0KICAgICBXZWJWaWV3KiB3ZWJWaWV3KCkgY29u
c3QgeyByZXR1cm4gbV9pdGVtOyB9CiAKKyAgICB2b2lkIHNldFBvcHVwRmFjdG9yeShib29sIHVz
ZUN1c3RvbVBvcHVwKQorICAgIHsKKyAgICAgICAgbV9wYWdlLT5zZXRQb3B1cEZhY3RvcnkodXNl
Q3VzdG9tUG9wdXApOworICAgIH0KKwogcHJpdmF0ZToKICAgICBRR3JhcGhpY3NTY2VuZSogbV9z
Y2VuZTsKICAgICBXZWJWaWV3KiBtX2l0ZW07CkBAIC0zODIsNiArNDAyLDIyIEBAIHB1YmxpYyBz
bG90czoKICAgICAgICAgdmlldy0+YW5pbWF0ZWRZRmxpcCgpOwogICAgIH0KIAorICAgIHZvaWQg
dXNlQ3VzdG9tUG9wdXAoKQorICAgIHsKKyAgICAgICAgbV91c2VDdXN0b21Qb3B1cC0+c2V0Vmlz
aWJsZShmYWxzZSk7CisgICAgICAgIG1fdXNlRGVmYXVsdFBvcHVwLT5zZXRWaXNpYmxlKHRydWUp
OworICAgICAgICBzY2VuZS0+c2V0UG9wdXBGYWN0b3J5KHRydWUpOworICAgICAgICBtX3JlbG9h
ZC0+dHJpZ2dlcigpOworICAgIH0KKworICAgIHZvaWQgdXNlRGVmYXVsdFBvcHVwKCkKKyAgICB7
CisgICAgICAgIG1fdXNlQ3VzdG9tUG9wdXAtPnNldFZpc2libGUodHJ1ZSk7CisgICAgICAgIG1f
dXNlRGVmYXVsdFBvcHVwLT5zZXRWaXNpYmxlKGZhbHNlKTsKKyAgICAgICAgc2NlbmUtPnNldFBv
cHVwRmFjdG9yeShmYWxzZSk7CisgICAgICAgIG1fcmVsb2FkLT50cmlnZ2VyKCk7CisgICAgfQor
CiBwcml2YXRlOgogCiAgICAgdm9pZCBsb2FkVVJMKGNvbnN0IFFVcmwmIHVybCkKQEAgLTQwNCw3
ICs0NDAsOCBAQCBwcml2YXRlOgogICAgICAgICBRVG9vbEJhciogYmFyID0gYWRkVG9vbEJhcigi
TmF2aWdhdGlvbiIpOwogICAgICAgICBiYXItPmFkZEFjdGlvbihwYWdlLT5hY3Rpb24oUVdlYlBh
Z2U6OkJhY2spKTsKICAgICAgICAgYmFyLT5hZGRBY3Rpb24ocGFnZS0+YWN0aW9uKFFXZWJQYWdl
OjpGb3J3YXJkKSk7Ci0gICAgICAgIGJhci0+YWRkQWN0aW9uKHBhZ2UtPmFjdGlvbihRV2ViUGFn
ZTo6UmVsb2FkKSk7CisgICAgICAgIG1fcmVsb2FkID0gcGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpS
ZWxvYWQpOworICAgICAgICBiYXItPmFkZEFjdGlvbihtX3JlbG9hZCk7CiAgICAgICAgIGJhci0+
YWRkQWN0aW9uKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6U3RvcCkpOwogICAgICAgICBiYXItPmFk
ZFdpZGdldCh1cmxFZGl0KTsKIApAQCAtNDI4LDEyICs0NjUsMjEgQEAgcHJpdmF0ZToKICAgICAg
ICAgZnhNZW51LT5hZGRBY3Rpb24oIkZsaXAiLCB0aGlzLCBTTE9UKGZsaXAoKSkpOwogICAgICAg
ICBmeE1lbnUtPmFkZEFjdGlvbigiQW5pbWF0ZWQgRmxpcCIsIHRoaXMsIFNMT1QoYW5pbWF0ZWRG
bGlwKCkpLCBRS2V5U2VxdWVuY2UoIkN0cmwrUiIpKTsKICAgICAgICAgZnhNZW51LT5hZGRBY3Rp
b24oIkFuaW1hdGVkIFktRmxpcCIsIHRoaXMsIFNMT1QoYW5pbWF0ZWRZRmxpcCgpKSwgUUtleVNl
cXVlbmNlKCJDdHJsK1kiKSk7CisKKyAgICAgICAgbV91c2VDdXN0b21Qb3B1cCA9IGZ4TWVudS0+
YWRkQWN0aW9uKCJVc2UgY3VzdG9tIHBvcHVwIiwgdGhpcywgU0xPVCh1c2VDdXN0b21Qb3B1cCgp
KSk7CisgICAgICAgIG1fdXNlRGVmYXVsdFBvcHVwID0gZnhNZW51LT5hZGRBY3Rpb24oIlVzZSBk
ZWZhdWx0IHBvcHVwIiwgdGhpcywgU0xPVCh1c2VEZWZhdWx0UG9wdXAoKSkpOworCisgICAgICAg
IHVzZURlZmF1bHRQb3B1cCgpOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBNYWluVmlldyogdmll
dzsKICAgICBRRXhwbGljaXRseVNoYXJlZERhdGFQb2ludGVyPFNoYXJlZFNjZW5lPiBzY2VuZTsK
IAorICAgIFFBY3Rpb24qIG1fdXNlQ3VzdG9tUG9wdXA7CisgICAgUUFjdGlvbiogbV91c2VEZWZh
dWx0UG9wdXA7CisgICAgUUFjdGlvbiogbV9yZWxvYWQ7CisKICAgICBRTGluZUVkaXQqIHVybEVk
aXQ7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcApp
bmRleCBmNjJiYzg2Li44YWZmOTc3IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5jcHAKQEAgLTQ1LDYgKzQ1LDggQEAKICNpbmNsdWRlICJxd2VicGFnZS5oIgog
I2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKICNpbmNsdWRlICJxd2ViZnJhbWVfcC5oIgorI2luY2x1
ZGUgInF3ZWJwb3B1cC5oIgorI2luY2x1ZGUgInF3ZWJwb3B1cF9wLmgiCiAjaW5jbHVkZSAicXdl
YnNlY3VyaXR5b3JpZ2luLmgiCiAjaW5jbHVkZSAicXdlYnNlY3VyaXR5b3JpZ2luX3AuaCIKICNp
bmNsdWRlICJxd2Vidmlldy5oIgpAQCAtNTYsOCArNTgsMTAwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
CiB7CiAKIAorY2xhc3MgUVdlYlBvcHVwV3JhcHBlciA6IHB1YmxpYyBRdEFic3RyYWN0V2ViUG9w
dXAsIHByaXZhdGUgUVdlYlBvcHVwT2JzZXJ2ZXIgeworcHVibGljOgorICAgIFFXZWJQb3B1cFdy
YXBwZXIoUVdlYlBvcHVwKiBwb3B1cCk7CisgICAgflFXZWJQb3B1cFdyYXBwZXIoKTsKKworcHVi
bGljOiAvLyBRdEFic3RyYWN0V2ViUG9wdXAKKyAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBR
UmVjdCYgZ2VvbWV0cnksIGludCBzZWxlY3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlk
ZSgpOworICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZShjb25zdCBRRm9udCYgZm9udCwgY29uc3Qg
UUxpc3Q8SXRlbT4mIGl0ZW1zKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KFFXaWRnZXQq
IHBhcmVudCk7CisKK3ByaXZhdGU6CisgICAgUVdlYlBvcHVwKiBtX3BvcHVwOworCisgICAgUUxp
c3Q8UVdlYlBvcHVwOjpJdGVtPiBnZXRJdGVtcyhjb25zdCBRTGlzdDxJdGVtPiYgaXRlbXMpOwor
Citwcml2YXRlOiAvLyBRV2ViUG9wdXBPYnNlcnZlcgorICAgIHZvaWQgZGlkSGlkZShib29sIGFj
Y2VwdFN1Z2dlc3Rpb25zKTsKKyAgICB2b2lkIHNldEluZGV4KGludCBpbmRleCk7Cit9OworCitR
V2ViUG9wdXBXcmFwcGVyOjpRV2ViUG9wdXBXcmFwcGVyKFFXZWJQb3B1cCogcG9wdXApCisgICAg
OiBtX3BvcHVwKHBvcHVwKQoreworICAgIFFfQVNTRVJUKG1fcG9wdXApOworICAgIG1fcG9wdXAt
PmQtPm9ic2VydmVyID0gdGhpczsKK30KKworUVdlYlBvcHVwV3JhcHBlcjo6flFXZWJQb3B1cFdy
YXBwZXIoKQoreworICAgIGRlbGV0ZSBtX3BvcHVwOworfQorCit2b2lkIFFXZWJQb3B1cFdyYXBw
ZXI6OnNob3coY29uc3QgUVJlY3QmIGdlb21ldHJ5LCBpbnQgc2VsZWN0ZWRJbmRleCkKK3sKKyAg
ICBtX3BvcHVwLT5zaG93KGdlb21ldHJ5LCBzZWxlY3RlZEluZGV4KTsKK30KKwordm9pZCBRV2Vi
UG9wdXBXcmFwcGVyOjpoaWRlKCkKK3sKKyAgICBtX3BvcHVwLT5oaWRlKCk7Cit9CisKK3ZvaWQg
UVdlYlBvcHVwV3JhcHBlcjo6cG9wdWxhdGUoY29uc3QgUUZvbnQmIGZvbnQsIGNvbnN0IFFMaXN0
PEl0ZW0+JiBpdGVtcykKK3sKKyAgICBRX1VOVVNFRChmb250KTsKKyAgICBtX3BvcHVwLT5wb3B1
bGF0ZShnZXRJdGVtcyhpdGVtcykpOworfQorCit2b2lkIFFXZWJQb3B1cFdyYXBwZXI6OnNldFBh
cmVudChRV2lkZ2V0KiBwYXJlbnQpCit7CisgICAgbV9wb3B1cC0+c2V0UGFyZW50KHBhcmVudCk7
Cit9CisKK1FMaXN0PFFXZWJQb3B1cDo6SXRlbT4gUVdlYlBvcHVwV3JhcHBlcjo6Z2V0SXRlbXMo
Y29uc3QgUUxpc3Q8SXRlbT4mIGl0ZW1zKQoreworICAgIFFMaXN0PFFXZWJQb3B1cDo6SXRlbT4g
cmVzdWx0OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewor
ICAgICAgICBRV2ViUG9wdXA6Okl0ZW0gaXRlbTsKKworICAgICAgICBzd2l0Y2ggKGl0ZW1zW2ld
LnR5cGUpIHsKKyAgICAgICAgY2FzZSBJdGVtOjpPcHRpb246CisgICAgICAgICAgICBpdGVtLnR5
cGUgPSBRV2ViUG9wdXA6Okl0ZW06Ok9wdGlvbjsKKyAgICAgICAgY2FzZSBJdGVtOjpTZXBhcmF0
b3I6CisgICAgICAgICAgICBpdGVtLnR5cGUgPSBRV2ViUG9wdXA6Okl0ZW06OlNlcGFyYXRvcjsK
KyAgICAgICAgY2FzZSBJdGVtOjpHcm91cDoKKyAgICAgICAgICAgIGl0ZW0udHlwZSA9IFFXZWJQ
b3B1cDo6SXRlbTo6R3JvdXA7CisgICAgICAgIH0KKworICAgICAgICBpdGVtLnRleHQgPSBpdGVt
c1tpXS50ZXh0OworICAgICAgICBpdGVtLnRvb2xUaXAgPSBpdGVtc1tpXS50b29sVGlwOworICAg
ICAgICBpdGVtLmVuYWJsZWQgPSBpdGVtc1tpXS5lbmFibGVkOworCisgICAgICAgIHJlc3VsdC5h
cHBlbmQoaXRlbSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBRV2Vi
UG9wdXBXcmFwcGVyOjpkaWRIaWRlKGJvb2wgYWNjZXB0U3VnZ2VzdGlvbnMpCit7CisgICAgcG9w
dXBEaWRIaWRlKGFjY2VwdFN1Z2dlc3Rpb25zKTsKK30KKwordm9pZCBRV2ViUG9wdXBXcmFwcGVy
OjpzZXRJbmRleChpbnQgaW5kZXgpCit7CisgICAgdmFsdWVDaGFuZ2VkKGluZGV4KTsKK30KKwor
CiBDaHJvbWVDbGllbnRRdDo6Q2hyb21lQ2xpZW50UXQoUVdlYlBhZ2UqIHdlYlBhZ2UpCiAgICAg
OiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICAsIG1fcG9wdXBGYWN0b3J5KDApCiB7CiAgICAgdG9v
bEJhcnNWaXNpYmxlID0gc3RhdHVzQmFyVmlzaWJsZSA9IG1lbnVCYXJWaXNpYmxlID0gdHJ1ZTsK
IH0KQEAgLTQ2OCw2ICs1NjIsOCBAQCB2b2lkIENocm9tZUNsaWVudFF0OjpyZXF1ZXN0R2VvbG9j
YXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopCiAKIFF0QWJzdHJh
Y3RXZWJQb3B1cCogQ2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVBvcHVwKCkKIHsKKyAgICBpZiAobV9w
b3B1cEZhY3RvcnkpCisgICAgICAgIHJldHVybiBuZXcgUVdlYlBvcHVwV3JhcHBlcihtX3BvcHVw
RmFjdG9yeS0+Y3JlYXRlKCkpOwogICAgIHJldHVybiBuZXcgUXRGYWxsYmFja1dlYlBvcHVwOwog
fQogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
aCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCmluZGV4IDEwNmQ0
Y2MuLjE2YTY5NWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5oCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5o
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogY2xhc3Mg
UVdlYlBhZ2U7CitjbGFzcyBRV2ViUG9wdXBGYWN0b3J5OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTE0NSw2ICsxNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wg
dG9vbEJhcnNWaXNpYmxlOwogICAgICAgICBib29sIHN0YXR1c0JhclZpc2libGU7CiAgICAgICAg
IGJvb2wgbWVudUJhclZpc2libGU7CisKKyAgICAgICAgUVdlYlBvcHVwRmFjdG9yeSogbV9wb3B1
cEZhY3Rvcnk7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRG
YWxsYmFja1dlYlBvcHVwLmNwcAppbmRleCAzNDRkNThhLi5mMGU3NmU2IDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcAorKysgYi9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcApAQCAtNDYsMTQgKzQ2
LDYgQEAgdm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3coY29uc3QgUVJlY3QmIGdlb21ldHJ5
LCBpbnQgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBzZXRDdXJyZW50SW5kZXgoc2VsZWN0ZWRJbmRl
eCk7CiAKLSAgICAvKgotICAgIFFXaWRnZXQqIHBhcmVudCA9IDA7Ci0gICAgaWYgKGNsaWVudCgp
LT5ob3N0V2luZG93KCkgJiYgY2xpZW50KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xp
ZW50KCkpCi0gICAgICAgcGFyZW50ID0gY2xpZW50KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1Q
YWdlQ2xpZW50KCktPm93bmVyV2lkZ2V0KCk7Ci0KLSAgICBzZXRQYXJlbnQocGFyZW50KTsKLSAg
ICAqLwotCiAgICAgc2V0R2VvbWV0cnkoUVJlY3QoZ2VvbWV0cnkubGVmdCgpLCBnZW9tZXRyeS50
b3AoKSwgZ2VvbWV0cnkud2lkdGgoKSwgc2l6ZUhpbnQoKS5oZWlnaHQoKSkpOwogCiAgICAgUU1v
dXNlRXZlbnQgZXZlbnQoUUV2ZW50OjpNb3VzZUJ1dHRvblByZXNzLCBRQ3Vyc29yOjpwb3MoKSwg
UXQ6OkxlZnRCdXR0b24sCi0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46208</attachid>
            <date>2010-01-09 08:53:44 -0800</date>
            <delta_ts>2010-01-09 09:09:27 -0800</delta_ts>
            <desc>Custom popups, popup factories and usage example.</desc>
            <filename>0001-Qt-Custom-select-popups.patch</filename>
            <type>text/plain</type>
            <size>30223</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA0OWZlNzllZmI1NzJkZGE4YzljMjQxNmFkZGZhOTRmMTM0YjM4Y2UwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFNhdCwgOSBKYW4gMjAxMCAxMzo1MTo0MyAtMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIFtRdF0gQ3VzdG9tIHNlbGVjdCBwb3B1cHMuCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzM0MTgKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKV2ViQ29y
ZToKCnF3ZWJwb3B1cC5jcHAgYWRkZWQgdG8gV2ViQ29yZS5wcm8uCgoqIFdlYkNvcmUucHJvOgoK
V2ViS2l0L3F0OgoKU3VwcG9ydCBmb3IgY29tYm9ib3ggcG9wdXAgY3VzdG9taXphdGlvbnMuCgpD
b21ib2JveCBwb3B1cCBjdXN0b21pemF0aW9uIGNhbiBiZSBtYWRlIHByb3ZpZGluZyBhbiBpbnN0
YW5jZSBvZiBRV2ViUG9wdXBGYWN0b3J5IHRvClFXZWJQYWdlLiBUaGUgZmFjdG9yeSB3aWxsIGJl
IHVzZWQgdG8gY3JlYXRlIFFXZWJQb3B1cCBvYmplY3RzIHdoZW4gbmVlZGVkLiBRV2ViUG9wdXAK
Y2xhc3MgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGN1c3RvbSBjb21ib2JveCBwb3B1cHMuCgpRV2Vi
UG9wdXBGYWN0b3J5IGluaGVyaXRlZCBjbGFzc2VzIG11c3QgaW1wbGVtZW50IG1ldGhvZCBjcmVh
dGUgYW5kIHJldHVybiBhbiBvYmplY3QKb2YgY2xhc3MgUVdlYlBvcHVwLgoKUVdlYlBhZ2UgaW50
ZXJmYWNlIGhhcyBub3QgYmVlbiBjaGFuZ2VkLiBObyBwdWJsaWMgQVBJIGlzIGF2YWxpYWJsZSB0
byBzZXQgUVdlYlBhZ2UncwpmYWN0b3JpZXMuIFRvIHVzZSBwb3B1cCBmYWN0b3JpZXMgZmlsZSBx
d2VicGFnZV9wLmggbXVzdCBiZSBpbmNsdWRlZCBhbmQgdGhlIGZhY3RvcnkKY2FuIGJlIHNldCB0
aHJvdWdoIGZ1bmN0aW9uIHF0UVdlYlBhZ2VTZXRQb3B1cEZhY3RvcnkuCgpBbiB1c2FnZSBleGFt
cGxlIGlzIGF2YWlsYWJsZSBpbiBRR1ZMYXVuY2hlci4gT3B0aW9uICdVc2UgY3VzdG9tIHBvcHVw
JyBjYW4gYmUKZm91bmQgaW4gZWZmZWN0cyBtZW51LgoKKiBBcGkvaGVhZGVycy5wcmk6CiogQXBp
L3F3ZWJwYWdlLmNwcDoKKFFXZWJQYWdlOjpzZXRQb3B1cEZhY3RvcnkpOgoocXRRV2ViUGFnZVNl
dFBvcHVwRmFjdG9yeSk6CiogQXBpL3F3ZWJwYWdlLmg6CiogQXBpL3F3ZWJwYWdlX3AuaDoKKiBR
R1ZMYXVuY2hlci9RR1ZMYXVuY2hlci5wcm86CiogUUdWTGF1bmNoZXIvbWFpbi5jcHA6CihmYWN0
b3J5KToKKFdlYlBhZ2U6OldlYlBhZ2UpOgooV2ViUGFnZTo6c2V0UG9wdXBGYWN0b3J5KToKKFNo
YXJlZFNjZW5lOjpzZXRQb3B1cEZhY3RvcnkpOgooTWFpbldpbmRvdzo6dXNlQ3VzdG9tUG9wdXAp
OgooTWFpbldpbmRvdzo6dXNlRGVmYXVsdFBvcHVwKToKKE1haW5XaW5kb3c6OmJ1aWxkVUkpOgoq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKFdlYkNvcmU6OlFXZWJQb3B1cFdy
YXBwZXI6OlFXZWJQb3B1cFdyYXBwZXIpOgooV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6flFX
ZWJQb3B1cFdyYXBwZXIpOgooV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6c2hvdyk6CihXZWJD
b3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpoaWRlKToKKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6
OnBvcHVsYXRlKToKKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OnNldFBhcmVudCk6CihXZWJD
b3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpnZXRJdGVtcyk6CihXZWJDb3JlOjpRV2ViUG9wdXBXcmFw
cGVyOjpkaWRIaWRlKToKKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OnNldEluZGV4KToKKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjpDaHJvbWVDbGllbnRRdCk6CihXZWJDb3JlOjpDaHJvbWVD
bGllbnRRdDo6Y3JlYXRlUG9wdXApOgoqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6
CiogV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcDoKKFdlYkNvcmU6OlF0RmFs
bGJhY2tXZWJQb3B1cDo6c2hvdyk6Ci0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDExICsrCiBXZWJDb3JlL1dlYkNvcmUucHJvICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnByaSAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNw
cCAgICAgICAgICAgICAgICAgICAgICB8ICAgMTQgKystCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIFdlYktpdC9xdC9BcGkvcXdlYnBh
Z2VfcC5oICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViS2l0L3F0L0FwaS9xd2Vi
cG9wdXAuY3BwICAgICAgICAgICAgICAgICAgICAgfCAgIDQ1ICsrKysrKysKIFdlYktpdC9xdC9B
cGkvcXdlYnBvcHVwLmggICAgICAgICAgICAgICAgICAgICAgIHwgICA2OSArKysrKysrKysrCiBX
ZWJLaXQvcXQvQXBpL3F3ZWJwb3B1cF9wLmggICAgICAgICAgICAgICAgICAgICB8ICAgMzggKysr
KysrCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
NTQgKysrKysrKysKIFdlYktpdC9xdC9RR1ZMYXVuY2hlci9RR1ZMYXVuY2hlci5wcm8gICAgICAg
ICAgIHwgICAgMyArLQogV2ViS2l0L3F0L1FHVkxhdW5jaGVyL2N1c3RvbXBvcHVwLmNwcCAgICAg
ICAgICAgfCAgMTUzICsrKysrKysrKysrKysrKysrKysrKysrCiBXZWJLaXQvcXQvUUdWTGF1bmNo
ZXIvY3VzdG9tcG9wdXAuaCAgICAgICAgICAgICB8ICAgNzUgKysrKysrKysrKysKIFdlYktpdC9x
dC9RR1ZMYXVuY2hlci9tYWluLmNwcCAgICAgICAgICAgICAgICAgIHwgICA1MCArKysrKysrLQog
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCAgICAgfCAgIDk3ICsr
KysrKysrKysrKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaCAg
ICAgICB8ICAgIDQgKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1
cC5jcHAgfCAgICA4IC0tCiAxNyBmaWxlcyBjaGFuZ2VkLCA2MjMgaW5zZXJ0aW9ucygrKSwgMTUg
ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0L0FwaS9xd2VicG9wdXAu
Y3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0L0FwaS9xd2VicG9wdXAuaAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFdlYktpdC9xdC9BcGkvcXdlYnBvcHVwX3AuaAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFdlYktpdC9xdC9RR1ZMYXVuY2hlci9jdXN0b21wb3B1cC5jcHAKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBXZWJLaXQvcXQvUUdWTGF1bmNoZXIvY3VzdG9tcG9wdXAuaAoKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQxYjc0YS4uNzc2Yzg3
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMC0wMS0wOSAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3Rp
bmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbUXRdIEN1c3RvbSBzZWxlY3QgcG9wdXBzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM0MTgKKworICAgICAgICBxd2VicG9wdXAu
Y3BwIGFkZGVkIHRvIFdlYkNvcmUucHJvLgorCisgICAgICAgICogV2ViQ29yZS5wcm86CisKIDIw
MTAtMDEtMDggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLiAgRml4IG5hbWVzcGFjZSBpbmRlbnQgZm9yIFNlY3VyaXR5T3JpZ2luLmguCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA2
ZjAzODM4Li42OTVhMzc3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI0NzIsNiArMjQ3Miw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAgXAogICAg
IC4uL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9x
Z3JhcGhpY3N3ZWJ2aWV3LmNwcCBcCisgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2VicG9wdXAuY3Bw
IFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0
L0FwaS9xd2Vidmlldy5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3Bw
IFwKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkgYi9XZWJLaXQvcXQvQXBp
L2hlYWRlcnMucHJpCmluZGV4IDFhNDI1OTcuLjkyNzBhYzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9x
dC9BcGkvaGVhZGVycy5wcmkKKysrIGIvV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnByaQpAQCAtMTEs
NCArMTEsNiBAQCBXRUJLSVRfQVBJX0hFQURFUlMgPSAkJFBXRC9xd2ViZnJhbWUuaCBcCiAgICAg
ICAgICAgICAgICAgICAgICAkJFBXRC9xd2VicGx1Z2luZmFjdG9yeS5oIFwKICAgICAgICAgICAg
ICAgICAgICAgICQkUFdEL3F3ZWJoaXN0b3J5LmggXAogICAgICAgICAgICAgICAgICAgICAgJCRQ
V0QvcXdlYmluc3BlY3Rvci5oIFwKLSAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJraXR2
ZXJzaW9uLmgKKyAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJraXR2ZXJzaW9uLmggXAor
ICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYnBvcHVwLmggXAorICAgICAgICAgICAgICAg
ICAgICAgJCRQV0QvcXdlYnBvcHVwX3AuaApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCAyMTQ3ZWFiLi5kYjUz
ZGQ2IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQorICAgIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtv
cyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgogICAgIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJ
bmMuCiAKQEAgLTE3NDMsNiArMTc0MywxOCBAQCBRV2ViUGFnZTo6flFXZWJQYWdlKCkKICAgICBk
ZWxldGUgZDsKIH0KIAorCisKK3ZvaWQgUVdlYlBhZ2U6OnNldFBvcHVwRmFjdG9yeShRV2ViUG9w
dXBGYWN0b3J5KiBmYWN0b3J5KQoreworICAgIGQtPmNocm9tZUNsaWVudC0+bV9wb3B1cEZhY3Rv
cnkgPSBmYWN0b3J5OworfQorCit2b2lkIHF0X3F3ZWJwYWdlX3NldFBvcHVwRmFjdG9yeShRV2Vi
UGFnZSogcGFnZSwgUVdlYlBvcHVwRmFjdG9yeSogZmFjdG9yeSkKK3sKKyAgICBwYWdlLT5zZXRQ
b3B1cEZhY3RvcnkoZmFjdG9yeSk7Cit9CisKIC8qIQogICAgIFJldHVybnMgdGhlIG1haW4gZnJh
bWUgb2YgdGhlIHBhZ2UuCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaCBi
L1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAppbmRleCA0NzY2Y2JkLi5lNTQ5YmZjIDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5LCAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQogICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJ
bmMuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCkBAIC00OSw2ICs0OSw4IEBAIGNsYXNzIFFXZWJQbHVnaW5GYWN0b3J5
OwogY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBRV2ViSGlzdG9yeUl0ZW07CiAKK2Ns
YXNzIFFXZWJQb3B1cEZhY3Rvcnk7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBD
aHJvbWVDbGllbnRRdDsKICAgICBjbGFzcyBFZGl0b3JDbGllbnRRdDsKQEAgLTM2Myw2ICszNjUs
MTAgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOwogICAgIGZyaWVu
ZCBjbGFzcyBXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjsKKworICAgIGZyaWVuZCB2b2lk
IHF0X3F3ZWJwYWdlX3NldFBvcHVwRmFjdG9yeShRV2ViUGFnZSogcGFnZSwgUVdlYlBvcHVwRmFj
dG9yeSogZmFjdG9yeSk7CisKKyAgICB2b2lkIHNldFBvcHVwRmFjdG9yeShRV2ViUG9wdXBGYWN0
b3J5Kik7CiB9OwogCiBRX0RFQ0xBUkVfT1BFUkFUT1JTX0ZPUl9GTEFHUyhRV2ViUGFnZTo6Rmlu
ZEZsYWdzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmggYi9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlX3AuaAppbmRleCBkYmM5ODFlLi4wYmY3NDE3IDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3Au
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAo
QykgMjAwOCwgMjAwOSwgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKICAgICBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIKIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKQEAgLTE4NSw0ICsxODUsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgZHJ0UnVuOwogfTsKIAorUVdFQktJVF9FWFBPUlQgdm9pZCBxdF9xd2VicGFnZV9zZXRQb3B1
cEZhY3RvcnkoUVdlYlBhZ2UqIHBhZ2UsIFFXZWJQb3B1cEZhY3RvcnkqIGZhY3RvcnkpOworCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBvcHVwLmNwcCBiL1dlYktpdC9x
dC9BcGkvcXdlYnBvcHVwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x
MDRlMTk4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicG9wdXAuY3BwCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAicXdlYnBvcHVwLmgi
CisKKyNpbmNsdWRlICJxd2VicG9wdXBfcC5oIgorCitRV2ViUG9wdXA6OlFXZWJQb3B1cCgpCisg
ICAgOiBkKG5ldyBRV2ViUG9wdXBQcml2YXRlKCkpCit7Cit9CisKK1FXZWJQb3B1cDo6flFXZWJQ
b3B1cCgpCit7CisgICAgZGVsZXRlIGQ7Cit9CisKK3ZvaWQgUVdlYlBvcHVwOjpkaWRIaWRlKGJv
b2wgYWNjZXB0U3VnZ2VzdGlvbnMpCit7CisgICAgUV9BU1NFUlQoZC0+b2JzZXJ2ZXIpOworICAg
IGQtPm9ic2VydmVyLT5kaWRIaWRlKGFjY2VwdFN1Z2dlc3Rpb25zKTsKK30KKwordm9pZCBRV2Vi
UG9wdXA6OnNldEluZGV4KGludCBpbmRleCkKK3sKKyAgICBRX0FTU0VSVChkLT5vYnNlcnZlcik7
CisgICAgZC0+b2JzZXJ2ZXItPnNldEluZGV4KGluZGV4KTsKK30KZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9BcGkvcXdlYnBvcHVwLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwb3B1cC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlYTZmN2MKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJLaXQvcXQvQXBpL3F3ZWJwb3B1cC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaWZuZGVmIHF3ZWJwb3B1cF9oCisjZGVmaW5lIHF3ZWJwb3B1cF9oCisKKyNpbmNsdWRl
IDxRTGlzdD4KKyNpbmNsdWRlIDxRUmVjdD4KKyNpbmNsdWRlIDxRU3RyaW5nPgorI2luY2x1ZGUg
InF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRV2lkZ2V0PgorCitjbGFzcyBRV2ViUG9wdXBQ
cml2YXRlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBRV2ViUG9wdXBXcmFwcGVyOwor
fQorCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViUG9wdXAgeworcHVibGljOgorICAgIHN0cnVj
dCBJdGVtIHsKKyAgICAgICAgZW51bSB7IE9wdGlvbiwgR3JvdXAsIFNlcGFyYXRvciB9IHR5cGU7
CisgICAgICAgIFFTdHJpbmcgdGV4dDsKKyAgICAgICAgUVN0cmluZyB0b29sVGlwOworICAgICAg
ICBib29sIGVuYWJsZWQ7CisgICAgfTsKKworICAgIFFXZWJQb3B1cCgpOworICAgIHZpcnR1YWwg
flFXZWJQb3B1cCgpOworCisgICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgUVJlY3QmIGdlb21l
dHJ5LCBpbnQgc2VsZWN0ZWRJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoaWRlKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZShjb25zdCBRTGlzdDxJdGVtPiYgaXRlbXMpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KFFXaWRnZXQqIHBhcmVudCkgPSAwOworCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBkaWRIaWRlKGJvb2wgYWNjZXB0U3VnZ2VzdGlvbnMpOworICAg
IHZvaWQgc2V0SW5kZXgoaW50IGluZGV4KTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
V2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjsKKyAgICBRV2ViUG9wdXBQcml2YXRlKiBkOworfTsK
KworY2xhc3MgUVdlYlBvcHVwRmFjdG9yeSB7CitwdWJsaWM6CisgICAgdmlydHVhbCBRV2ViUG9w
dXAqIGNyZWF0ZSgpID0gMDsKK307CisKKworCisjZW5kaWYgLy8gcXdlYnBvcHVwX2gKZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBvcHVwX3AuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBv
cHVwX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzIwMmZhCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicG9wdXBfcC5oCkBAIC0wLDAgKzEsMzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIHF3ZWJwb3B1cF9wX2gKKyNkZWZpbmUgcXdl
YnBvcHVwX3BfaAorCitjbGFzcyBRV2ViUG9wdXBPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB2b2lkIGRpZEhpZGUoYm9vbCBhY2NlcHRTdWdnZXN0aW9ucykgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRJbmRleChpbnQgaW5kZXgpID0gMDsKK307CisKK2NsYXNzIFFXZWJQb3B1cFBy
aXZhdGUgeworcHVibGljOgorICAgIFFXZWJQb3B1cE9ic2VydmVyKiBvYnNlcnZlcjsKKworICAg
IFFXZWJQb3B1cFByaXZhdGUoKSA6IG9ic2VydmVyKDApIHt9Cit9OworCisKKyNlbmRpZiAvLyBx
d2VicG9wdXBfcF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0
L0NoYW5nZUxvZwppbmRleCBjMzAzYjQzLi5mMzJjNjRiIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAx
MC0wMS0wOSAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEN1c3Rv
bSBzZWxlY3QgcG9wdXBzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzM0MTgKKworICAgICAgICBTdXBwb3J0IGZvciBjb21ib2JveCBwb3B1cCBjdXN0
b21pemF0aW9ucy4KKworICAgICAgICBDb21ib2JveCBwb3B1cCBjdXN0b21pemF0aW9uIGNhbiBi
ZSBtYWRlIHByb3ZpZGluZyBhbiBpbnN0YW5jZSBvZiBRV2ViUG9wdXBGYWN0b3J5IHRvCisgICAg
ICAgIFFXZWJQYWdlLiBUaGUgZmFjdG9yeSB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlIFFXZWJQb3B1
cCBvYmplY3RzIHdoZW4gbmVlZGVkLiBRV2ViUG9wdXAKKyAgICAgICAgY2xhc3MgaXMgdGhlIGJh
c2UgY2xhc3MgZm9yIGN1c3RvbSBjb21ib2JveCBwb3B1cHMuCisKKyAgICAgICAgUVdlYlBvcHVw
RmFjdG9yeSBpbmhlcml0ZWQgY2xhc3NlcyBtdXN0IGltcGxlbWVudCBtZXRob2QgY3JlYXRlIGFu
ZCByZXR1cm4gYW4gb2JqZWN0CisgICAgICAgIG9mIGNsYXNzIFFXZWJQb3B1cC4KKworICAgICAg
ICBRV2ViUGFnZSBpbnRlcmZhY2UgaGFzIG5vdCBiZWVuIGNoYW5nZWQuIE5vIHB1YmxpYyBBUEkg
aXMgYXZhbGlhYmxlIHRvIHNldCBRV2ViUGFnZSdzCisgICAgICAgIGZhY3Rvcmllcy4gVG8gdXNl
IHBvcHVwIGZhY3RvcmllcyBmaWxlIHF3ZWJwYWdlX3AuaCBtdXN0IGJlIGluY2x1ZGVkIGFuZCB0
aGUgZmFjdG9yeQorICAgICAgICBjYW4gYmUgc2V0IHRocm91Z2ggZnVuY3Rpb24gcXRRV2ViUGFn
ZVNldFBvcHVwRmFjdG9yeS4KKworICAgICAgICBBbiB1c2FnZSBleGFtcGxlIGlzIGF2YWlsYWJs
ZSBpbiBRR1ZMYXVuY2hlci4gT3B0aW9uICdVc2UgY3VzdG9tIHBvcHVwJyBjYW4gYmUKKyAgICAg
ICAgZm91bmQgaW4gZWZmZWN0cyBtZW51LgorCisgICAgICAgICogQXBpL2hlYWRlcnMucHJpOgor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c2V0UG9wdXBG
YWN0b3J5KToKKyAgICAgICAgKHF0UVdlYlBhZ2VTZXRQb3B1cEZhY3RvcnkpOgorICAgICAgICAq
IEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICog
UUdWTGF1bmNoZXIvUUdWTGF1bmNoZXIucHJvOgorICAgICAgICAqIFFHVkxhdW5jaGVyL21haW4u
Y3BwOgorICAgICAgICAoZmFjdG9yeSk6CisgICAgICAgIChXZWJQYWdlOjpXZWJQYWdlKToKKyAg
ICAgICAgKFdlYlBhZ2U6OnNldFBvcHVwRmFjdG9yeSk6CisgICAgICAgIChTaGFyZWRTY2VuZTo6
c2V0UG9wdXBGYWN0b3J5KToKKyAgICAgICAgKE1haW5XaW5kb3c6OnVzZUN1c3RvbVBvcHVwKToK
KyAgICAgICAgKE1haW5XaW5kb3c6OnVzZURlZmF1bHRQb3B1cCk6CisgICAgICAgIChNYWluV2lu
ZG93OjpidWlsZFVJKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpRV2ViUG9wdXBXcmFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6On5RV2ViUG9wdXBXcmFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OnNob3cpOgorICAgICAgICAo
V2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6aGlkZSk6CisgICAgICAgIChXZWJDb3JlOjpRV2Vi
UG9wdXBXcmFwcGVyOjpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBXcmFw
cGVyOjpzZXRQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6Z2V0
SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6ZGlkSGlkZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpzZXRJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Q2hyb21lQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVBvcHVwKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tX
ZWJQb3B1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cp
OgorCiAyMDEwLTAxLTA4ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1FHVkxhdW5jaGVyL1FHVkxhdW5jaGVyLnBybyBiL1dlYktp
dC9xdC9RR1ZMYXVuY2hlci9RR1ZMYXVuY2hlci5wcm8KaW5kZXggMDU5ZWMxYS4uOWJkZmFkOSAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L1FHVkxhdW5jaGVyL1FHVkxhdW5jaGVyLnBybworKysgYi9X
ZWJLaXQvcXQvUUdWTGF1bmNoZXIvUUdWTGF1bmNoZXIucHJvCkBAIC0xLDUgKzEsNiBAQAogVEVN
UExBVEUgPSBhcHAKLVNPVVJDRVMgKz0gbWFpbi5jcHAKK1NPVVJDRVMgKz0gbWFpbi5jcHAgY3Vz
dG9tcG9wdXAuY3BwCitIRUFERVJTICs9IGN1c3RvbXBvcHVwLmgKIENPTkZJRyAtPSBhcHBfYnVu
ZGxlCiBDT05GSUcgKz0gdWl0b29scwogREVTVERJUiA9IC4uLy4uLy4uL2JpbgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L1FHVkxhdW5jaGVyL2N1c3RvbXBvcHVwLmNwcCBiL1dlYktpdC9xdC9RR1ZM
YXVuY2hlci9jdXN0b21wb3B1cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uM2IzY2ExYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC9RR1ZMYXVuY2hlci9jdXN0
b21wb3B1cC5jcHAKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVk
ZSAiY3VzdG9tcG9wdXAuaCIKKworI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0
LCA2LCAwKQorI2luY2x1ZGUgPFFQcm9wZXJ0eUFuaW1hdGlvbj4KKyNlbmRpZgorI2luY2x1ZGUg
PFFTdGFuZGFyZEl0ZW1Nb2RlbD4KKworQ3VzdG9tTGlzdFdpZGdldDo6Q3VzdG9tTGlzdFdpZGdl
dCgpCit7Cit9CisKK3ZvaWQgQ3VzdG9tTGlzdFdpZGdldDo6Zm9jdXNPdXRFdmVudChRRm9jdXNF
dmVudCogZXZlbnQpCit7CisgICAgZW1pdCBmb2N1c091dCgpOworICAgIFFMaXN0V2lkZ2V0Ojpm
b2N1c091dEV2ZW50KGV2ZW50KTsKK30KKworQ3VzdG9tUG9wdXA6OkN1c3RvbVBvcHVwKCkKKyNp
ZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKKyAgICA6IG1fYW5pbWF0
aW9uKDApCisjZW5kaWYKK3sKKyAgICBjb25uZWN0KCZtX2xpc3QsIFNJR05BTChpdGVtQ2xpY2tl
ZChRTGlzdFdpZGdldEl0ZW0qKSksIHRoaXMsIFNMT1QoaXRlbUNoYW5nZWQoKSkpOworICAgIGNv
bm5lY3QoJm1fbGlzdCwgU0lHTkFMKGZvY3VzT3V0KCkpLCB0aGlzLCBTTE9UKGZvY3VzT3V0KCkp
KTsKK30KKworQ3VzdG9tUG9wdXA6On5DdXN0b21Qb3B1cCgpCit7Cit9CisKK3ZvaWQgQ3VzdG9t
UG9wdXA6OnNldFBhcmVudChRV2lkZ2V0KiBwYXJlbnQpCit7CisgICAgbV9saXN0LnNldFBhcmVu
dChwYXJlbnQpOworfQorCit2b2lkIEN1c3RvbVBvcHVwOjpzaG93KGNvbnN0IFFSZWN0JiBnZW9t
ZXRyeSwgaW50IHNlbGVjdGVkSW5kZXgpCit7CisgICAgbV9saXN0LnNldEdlb21ldHJ5KFFSZWN0
KDAsIDAsIGdlb21ldHJ5LndpZHRoKCksIDI1MCkpOworICAgIG1fbGlzdC5zZXRDdXJyZW50Um93
KHNlbGVjdGVkSW5kZXgpOworICAgIFFQb2ludCBlbmQgPSBnZW9tZXRyeS50b3BMZWZ0KCk7Cisg
ICAgUVdpZGdldCogcGFyZW50ID0gbV9saXN0LnBhcmVudFdpZGdldCgpOworICAgIGlmIChwYXJl
bnQpIHsKKyAgICAgICAgZW5kLnNldFgocU1pbihlbmQueCgpLCBwYXJlbnQtPndpZHRoKCkgLSBt
X2xpc3Qud2lkdGgoKSkpOworICAgICAgICBlbmQuc2V0WShxTWluKGVuZC55KCksIHBhcmVudC0+
aGVpZ2h0KCkgLSBtX2xpc3QuaGVpZ2h0KCkpKTsKKyAgICB9CisgICAgbV9saXN0LnNldEdlb21l
dHJ5KFFSZWN0KGVuZC54KCksIGVuZC55KCksIGdlb21ldHJ5LndpZHRoKCksIDI1MCkpOworI2lm
IFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA2LCAwKQorICAgIGlmIChtX2FuaW1h
dGlvbikKKyAgICAgICAgbV9hbmltYXRpb24tPnN0b3AoKTsKKworICAgIFFQb2ludCBzdGFydCA9
IFFQb2ludCgtbV9saXN0LndpZHRoKCksIC1tX2xpc3QuaGVpZ2h0KCkpOworCisgICAgaWYgKHBh
cmVudCkgeworICAgICAgICBzdGFydC5zZXRYKDIgKiBlbmQueCgpIDwgcGFyZW50LT53aWR0aCgp
ID8gLW1fbGlzdC53aWR0aCgpIDogcGFyZW50LT53aWR0aCgpKTsKKyAgICAgICAgc3RhcnQuc2V0
WSgyICogZW5kLnkoKSA8IHBhcmVudC0+aGVpZ2h0KCkgPyAtbV9saXN0LmhlaWdodCgpIDogcGFy
ZW50LT5oZWlnaHQoKSk7CisgICAgfQorCisgICAgUVByb3BlcnR5QW5pbWF0aW9uKiBhbmltYXRp
b24gPSBuZXcgUVByb3BlcnR5QW5pbWF0aW9uKCk7CisgICAgYW5pbWF0aW9uLT5zZXRUYXJnZXRP
YmplY3QoJm1fbGlzdCk7CisgICAgYW5pbWF0aW9uLT5zZXRQcm9wZXJ0eU5hbWUoInBvcyIpOwor
ICAgIGFuaW1hdGlvbi0+c2V0RWFzaW5nQ3VydmUoUUVhc2luZ0N1cnZlOjpPdXRCb3VuY2UpOwor
ICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oMTAwMCk7CisgICAgYW5pbWF0aW9uLT5zZXRTdGFy
dFZhbHVlKHN0YXJ0KTsKKyAgICBhbmltYXRpb24tPnNldEVuZFZhbHVlKGVuZCk7CisKKyAgICBt
X2FuaW1hdGlvbiA9IGFuaW1hdGlvbjsKKyAgICBjb25uZWN0KGFuaW1hdGlvbiwgU0lHTkFMKGZp
bmlzaGVkKCkpLCB0aGlzLCBTTE9UKGluQW5pbWF0aW9uRW5kKCkpKTsKKyAgICBtX2FuaW1hdGlv
bi0+c3RhcnQoUUFic3RyYWN0QW5pbWF0aW9uOjpEZWxldGVXaGVuU3RvcHBlZCk7CisjZWxzZQor
ICAgIGluQW5pbWF0aW9uRW5kKCk7CisjZW5kaWYKKyAgICBtX2xpc3Quc2V0VmlzaWJsZSh0cnVl
KTsKKworfQorCit2b2lkIEN1c3RvbVBvcHVwOjpoaWRlKCkKK3sKKyNpZiBRVF9WRVJTSU9OID49
IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKKyAgICBpZiAobV9hbmltYXRpb24pCisgICAgICAg
IG1fYW5pbWF0aW9uLT5zdG9wKCk7CisKKyAgICBRUHJvcGVydHlBbmltYXRpb24qIGFuaW1hdGlv
biA9IG5ldyBRUHJvcGVydHlBbmltYXRpb247CisgICAgYW5pbWF0aW9uLT5zZXRUYXJnZXRPYmpl
Y3QoJm1fbGlzdCk7CisgICAgYW5pbWF0aW9uLT5zZXRQcm9wZXJ0eU5hbWUoInBvcyIpOworICAg
IGFuaW1hdGlvbi0+c2V0RWFzaW5nQ3VydmUoUUVhc2luZ0N1cnZlOjpPdXRDdWJpYyk7CisgICAg
YW5pbWF0aW9uLT5zZXREdXJhdGlvbig1MDApOworICAgIGFuaW1hdGlvbi0+c2V0RW5kVmFsdWUo
UVBvaW50KC1tX2xpc3Qud2lkdGgoKSwgLW1fbGlzdC5oZWlnaHQoKSkpOworCisgICAgbV9hbmlt
YXRpb24gPSBhbmltYXRpb247CisgICAgY29ubmVjdChhbmltYXRpb24sIFNJR05BTChmaW5pc2hl
ZCgpKSwgdGhpcywgU0xPVChvdXRBbmltYXRpb25FbmQoKSkpOworICAgIG1fYW5pbWF0aW9uLT5z
dGFydChRQWJzdHJhY3RBbmltYXRpb246OkRlbGV0ZVdoZW5TdG9wcGVkKTsKKyNlbHNlCisgICAg
b3V0QW5pbWF0aW9uRW5kKCk7CisjZW5kaWYKK30KKwordm9pZCBDdXN0b21Qb3B1cDo6cG9wdWxh
dGUoY29uc3QgUUxpc3Q8SXRlbT4mIGl0ZW1zKQoreworCisgICAgbV9saXN0LmNsZWFyKCk7CisK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlm
IChpdGVtc1tpXS50eXBlID09IFFXZWJQb3B1cDo6SXRlbTo6U2VwYXJhdG9yKQorICAgICAgICAg
ICAgbV9saXN0LmFkZEl0ZW0oIi0tLS0tLS0tLS0tLS0tIik7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgbV9saXN0LmFkZEl0ZW0oaXRlbXNbaV0udGV4dCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgQ3VzdG9tUG9wdXA6OmluQW5pbWF0aW9uRW5kKCkKK3sKKyNpZiBRVF9WRVJT
SU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKKyAgICBtX2FuaW1hdGlvbiA9IDA7Cisj
ZW5kaWYKKyAgICBtX2xpc3Quc2V0Rm9jdXMoKTsKK30KKwordm9pZCBDdXN0b21Qb3B1cDo6b3V0
QW5pbWF0aW9uRW5kKCkKK3sKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwg
NiwgMCkKKyAgICBtX2FuaW1hdGlvbiA9IDA7CisjZW5kaWYKKyAgICBkaWRIaWRlKHRydWUpOwor
ICAgIG1fbGlzdC5zZXRQYXJlbnQoMCk7CisgICAgbV9saXN0LnNldFZpc2libGUoZmFsc2UpOwor
fQorCit2b2lkIEN1c3RvbVBvcHVwOjppdGVtQ2hhbmdlZCgpCit7CisgICAgc2V0SW5kZXgobV9s
aXN0LmN1cnJlbnRJbmRleCgpLnJvdygpKTsKKyAgICBoaWRlKCk7Cit9CmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvUUdWTGF1bmNoZXIvY3VzdG9tcG9wdXAuaCBiL1dlYktpdC9xdC9RR1ZMYXVuY2hl
ci9jdXN0b21wb3B1cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZWNj
ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvUUdWTGF1bmNoZXIvY3VzdG9tcG9wdXAu
aApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBjdXN0b21wb3B1
cF9oCisjZGVmaW5lIGN1c3RvbXBvcHVwX2gKKworI2luY2x1ZGUgInF3ZWJwb3B1cC5oIgorCisj
aWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDYsIDApCisjaW5jbHVkZSA8UUFi
c3RyYWN0QW5pbWF0aW9uPgorI2VuZGlmCisjaW5jbHVkZSA8UUxpc3RXaWRnZXQ+CisKK2NsYXNz
IEN1c3RvbUxpc3RXaWRnZXQgOiBwdWJsaWMgUUxpc3RXaWRnZXQgeworICAgIFFfT0JKRUNUCitw
dWJsaWM6CisgICAgQ3VzdG9tTGlzdFdpZGdldCgpOworCitzaWduYWxzOgorICAgIHZvaWQgZm9j
dXNPdXQoKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBmb2N1c091dEV2ZW50KFFG
b2N1c0V2ZW50KiBldmVudCk7Cit9OworCitjbGFzcyBDdXN0b21Qb3B1cCA6IHB1YmxpYyBRT2Jq
ZWN0LCBwdWJsaWMgUVdlYlBvcHVwIHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIEN1c3Rv
bVBvcHVwKCk7CisgICAgfkN1c3RvbVBvcHVwKCk7CisKKworICAgIHZpcnR1YWwgdm9pZCBzaG93
KGNvbnN0IFFSZWN0JiBnZW9tZXRyeSwgaW50IHNlbGVjdGVkSW5kZXgpOworICAgIHZpcnR1YWwg
dm9pZCBoaWRlKCk7CisgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlKGNvbnN0IFFMaXN0PEl0ZW0+
JiBpdGVtcyk7CisgICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChRV2lkZ2V0KiBwYXJlbnQpOwor
Citwcml2YXRlOgorICAgIEN1c3RvbUxpc3RXaWRnZXQgbV9saXN0OworICAgIFFMaXN0PEl0ZW0+
IG1faXRlbXM7CisKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkK
KyAgICBRQWJzdHJhY3RBbmltYXRpb24qIG1fYW5pbWF0aW9uOworI2VuZGlmCisKK3ByaXZhdGUg
c2xvdHM6CisgICAgdm9pZCBpbkFuaW1hdGlvbkVuZCgpOworICAgIHZvaWQgb3V0QW5pbWF0aW9u
RW5kKCk7CisgICAgdm9pZCBpdGVtQ2hhbmdlZCgpOworICAgIHZvaWQgZm9jdXNPdXQoKSB7IGhp
ZGUoKTsgfQorfTsKKworY2xhc3MgQ3VzdG9tUG9wdXBGYWN0b3J5IDogcHVibGljIFFXZWJQb3B1
cEZhY3RvcnkgeworcHVibGljOgorICAgIHZpcnR1YWwgUVdlYlBvcHVwKiBjcmVhdGUoKSB7IHJl
dHVybiBuZXcgQ3VzdG9tUG9wdXA7IH0KK307CisKKyNlbmRpZiAvLyBjdXN0b21wb3B1cF9oCmRp
ZmYgLS1naXQgYS9XZWJLaXQvcXQvUUdWTGF1bmNoZXIvbWFpbi5jcHAgYi9XZWJLaXQvcXQvUUdW
TGF1bmNoZXIvbWFpbi5jcHAKaW5kZXggYjgyMzQ3ZS4uMTZhNThiYSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L1FHVkxhdW5jaGVyL21haW4uY3BwCisrKyBiL1dlYktpdC9xdC9RR1ZMYXVuY2hlci9t
YWluLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDksIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR2VvcmdlIFN0YWlrb3MgPHN0YWlrb3NAa2RlLm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNiBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KICAq
IENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CkBAIC0zMiw2ICsz
Miw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNsdWRlICJjdXN0b21wb3B1cC5oIgog
I2luY2x1ZGUgPFFEZWJ1Zz4KICNpbmNsdWRlIDxRRmlsZT4KICNpbmNsdWRlIDxRR3JhcGhpY3NT
Y2VuZT4KQEAgLTQ3LDYgKzQ4LDggQEAKICNpbmNsdWRlIDxxd2ViZnJhbWUuaD4KICNpbmNsdWRl
IDxxZ3JhcGhpY3N3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8cXdlYnBhZ2UuaD4KKyNpbmNsdWRlIDxx
d2VicG9wdXAuaD4KKyNpbmNsdWRlIDxxd2VicG9wdXBfcC5oPgogI2luY2x1ZGUgPHF3ZWJzZXR0
aW5ncy5oPgogI2luY2x1ZGUgPHF3ZWJ2aWV3Lmg+CiAKQEAgLTkzLDYgKzk2LDEyIEBAIHByaXZh
dGU6CiAgICAgcXJlYWwgbV95Um90YXRpb247CiB9OwogCitzdGF0aWMgUVdlYlBvcHVwRmFjdG9y
eSogZmFjdG9yeSgpCit7CisgICAgc3RhdGljIFFXZWJQb3B1cEZhY3RvcnkqIHJlc3VsdChuZXcg
Q3VzdG9tUG9wdXBGYWN0b3J5KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBjbGFzcyBXZWJQ
YWdlIDogcHVibGljIFFXZWJQYWdlIHsKICAgICBRX09CSkVDVAogCkBAIC0xMDEsOSArMTEwLDE1
IEBAIHB1YmxpYzoKICAgICAgICAgOiBRV2ViUGFnZShwYXJlbnQpCiAgICAgewogICAgICAgICBh
cHBseVByb3h5KCk7CisgICAgICAgIHNldFBvcHVwRmFjdG9yeShmYWxzZSk7CiAgICAgfQogICAg
IHZpcnR1YWwgUVdlYlBhZ2UqIGNyZWF0ZVdpbmRvdyhRV2ViUGFnZTo6V2ViV2luZG93VHlwZSk7
CiAKKyAgICB2b2lkIHNldFBvcHVwRmFjdG9yeShib29sIHVzZUN1c3RvbVBvcHVwKQorICAgIHsK
KyAgICAgICAgcXRfcXdlYnBhZ2Vfc2V0UG9wdXBGYWN0b3J5KHRoaXMsIHVzZUN1c3RvbVBvcHVw
ID8gZmFjdG9yeSgpIDogMCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlQcm94
eSgpCiAgICAgewpAQCAtMjIyLDYgKzIzNywxMSBAQCBwdWJsaWM6CiAgICAgUUdyYXBoaWNzU2Nl
bmUqIHNjZW5lKCkgY29uc3QgeyByZXR1cm4gbV9zY2VuZTsgfQogICAgIFdlYlZpZXcqIHdlYlZp
ZXcoKSBjb25zdCB7IHJldHVybiBtX2l0ZW07IH0KIAorICAgIHZvaWQgc2V0UG9wdXBGYWN0b3J5
KGJvb2wgdXNlQ3VzdG9tUG9wdXApCisgICAgeworICAgICAgICBtX3BhZ2UtPnNldFBvcHVwRmFj
dG9yeSh1c2VDdXN0b21Qb3B1cCk7CisgICAgfQorCiBwcml2YXRlOgogICAgIFFHcmFwaGljc1Nj
ZW5lKiBtX3NjZW5lOwogICAgIFdlYlZpZXcqIG1faXRlbTsKQEAgLTM4Miw2ICs0MDIsMjIgQEAg
cHVibGljIHNsb3RzOgogICAgICAgICB2aWV3LT5hbmltYXRlZFlGbGlwKCk7CiAgICAgfQogCisg
ICAgdm9pZCB1c2VDdXN0b21Qb3B1cCgpCisgICAgeworICAgICAgICBtX3VzZUN1c3RvbVBvcHVw
LT5zZXRWaXNpYmxlKGZhbHNlKTsKKyAgICAgICAgbV91c2VEZWZhdWx0UG9wdXAtPnNldFZpc2li
bGUodHJ1ZSk7CisgICAgICAgIHNjZW5lLT5zZXRQb3B1cEZhY3RvcnkodHJ1ZSk7CisgICAgICAg
IG1fcmVsb2FkLT50cmlnZ2VyKCk7CisgICAgfQorCisgICAgdm9pZCB1c2VEZWZhdWx0UG9wdXAo
KQorICAgIHsKKyAgICAgICAgbV91c2VDdXN0b21Qb3B1cC0+c2V0VmlzaWJsZSh0cnVlKTsKKyAg
ICAgICAgbV91c2VEZWZhdWx0UG9wdXAtPnNldFZpc2libGUoZmFsc2UpOworICAgICAgICBzY2Vu
ZS0+c2V0UG9wdXBGYWN0b3J5KGZhbHNlKTsKKyAgICAgICAgbV9yZWxvYWQtPnRyaWdnZXIoKTsK
KyAgICB9CisKIHByaXZhdGU6CiAKICAgICB2b2lkIGxvYWRVUkwoY29uc3QgUVVybCYgdXJsKQpA
QCAtNDA0LDcgKzQ0MCw4IEBAIHByaXZhdGU6CiAgICAgICAgIFFUb29sQmFyKiBiYXIgPSBhZGRU
b29sQmFyKCJOYXZpZ2F0aW9uIik7CiAgICAgICAgIGJhci0+YWRkQWN0aW9uKHBhZ2UtPmFjdGlv
bihRV2ViUGFnZTo6QmFjaykpOwogICAgICAgICBiYXItPmFkZEFjdGlvbihwYWdlLT5hY3Rpb24o
UVdlYlBhZ2U6OkZvcndhcmQpKTsKLSAgICAgICAgYmFyLT5hZGRBY3Rpb24ocGFnZS0+YWN0aW9u
KFFXZWJQYWdlOjpSZWxvYWQpKTsKKyAgICAgICAgbV9yZWxvYWQgPSBwYWdlLT5hY3Rpb24oUVdl
YlBhZ2U6OlJlbG9hZCk7CisgICAgICAgIGJhci0+YWRkQWN0aW9uKG1fcmVsb2FkKTsKICAgICAg
ICAgYmFyLT5hZGRBY3Rpb24ocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpTdG9wKSk7CiAgICAgICAg
IGJhci0+YWRkV2lkZ2V0KHVybEVkaXQpOwogCkBAIC00MjgsMTIgKzQ2NSwyMSBAQCBwcml2YXRl
OgogICAgICAgICBmeE1lbnUtPmFkZEFjdGlvbigiRmxpcCIsIHRoaXMsIFNMT1QoZmxpcCgpKSk7
CiAgICAgICAgIGZ4TWVudS0+YWRkQWN0aW9uKCJBbmltYXRlZCBGbGlwIiwgdGhpcywgU0xPVChh
bmltYXRlZEZsaXAoKSksIFFLZXlTZXF1ZW5jZSgiQ3RybCtSIikpOwogICAgICAgICBmeE1lbnUt
PmFkZEFjdGlvbigiQW5pbWF0ZWQgWS1GbGlwIiwgdGhpcywgU0xPVChhbmltYXRlZFlGbGlwKCkp
LCBRS2V5U2VxdWVuY2UoIkN0cmwrWSIpKTsKKworICAgICAgICBtX3VzZUN1c3RvbVBvcHVwID0g
ZnhNZW51LT5hZGRBY3Rpb24oIlVzZSBjdXN0b20gcG9wdXAiLCB0aGlzLCBTTE9UKHVzZUN1c3Rv
bVBvcHVwKCkpKTsKKyAgICAgICAgbV91c2VEZWZhdWx0UG9wdXAgPSBmeE1lbnUtPmFkZEFjdGlv
bigiVXNlIGRlZmF1bHQgcG9wdXAiLCB0aGlzLCBTTE9UKHVzZURlZmF1bHRQb3B1cCgpKSk7CisK
KyAgICAgICAgdXNlRGVmYXVsdFBvcHVwKCk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIE1haW5W
aWV3KiB2aWV3OwogICAgIFFFeHBsaWNpdGx5U2hhcmVkRGF0YVBvaW50ZXI8U2hhcmVkU2NlbmU+
IHNjZW5lOwogCisgICAgUUFjdGlvbiogbV91c2VDdXN0b21Qb3B1cDsKKyAgICBRQWN0aW9uKiBt
X3VzZURlZmF1bHRQb3B1cDsKKyAgICBRQWN0aW9uKiBtX3JlbG9hZDsKKwogICAgIFFMaW5lRWRp
dCogdXJsRWRpdDsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuY3BwCmluZGV4IGY2MmJjODYuLmM0MmNmNmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudFF0LmNwcApAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKQEAgLTQ1LDYgKzQ2LDggQEAKICNpbmNsdWRlICJxd2VicGFnZS5oIgogI2luY2x1ZGUgInF3
ZWJwYWdlX3AuaCIKICNpbmNsdWRlICJxd2ViZnJhbWVfcC5oIgorI2luY2x1ZGUgInF3ZWJwb3B1
cC5oIgorI2luY2x1ZGUgInF3ZWJwb3B1cF9wLmgiCiAjaW5jbHVkZSAicXdlYnNlY3VyaXR5b3Jp
Z2luLmgiCiAjaW5jbHVkZSAicXdlYnNlY3VyaXR5b3JpZ2luX3AuaCIKICNpbmNsdWRlICJxd2Vi
dmlldy5oIgpAQCAtNTYsOCArNTksMTAwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiB7CiAKIAorY2xh
c3MgUVdlYlBvcHVwV3JhcHBlciA6IHB1YmxpYyBRdEFic3RyYWN0V2ViUG9wdXAsIHByaXZhdGUg
UVdlYlBvcHVwT2JzZXJ2ZXIgeworcHVibGljOgorICAgIFFXZWJQb3B1cFdyYXBwZXIoUVdlYlBv
cHVwKiBwb3B1cCk7CisgICAgflFXZWJQb3B1cFdyYXBwZXIoKTsKKworcHVibGljOiAvLyBRdEFi
c3RyYWN0V2ViUG9wdXAKKyAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBRUmVjdCYgZ2VvbWV0
cnksIGludCBzZWxlY3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOworICAgIHZp
cnR1YWwgdm9pZCBwb3B1bGF0ZShjb25zdCBRRm9udCYgZm9udCwgY29uc3QgUUxpc3Q8SXRlbT4m
IGl0ZW1zKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KFFXaWRnZXQqIHBhcmVudCk7CisK
K3ByaXZhdGU6CisgICAgUVdlYlBvcHVwKiBtX3BvcHVwOworCisgICAgUUxpc3Q8UVdlYlBvcHVw
OjpJdGVtPiBnZXRJdGVtcyhjb25zdCBRTGlzdDxJdGVtPiYgaXRlbXMpOworCitwcml2YXRlOiAv
LyBRV2ViUG9wdXBPYnNlcnZlcgorICAgIHZvaWQgZGlkSGlkZShib29sIGFjY2VwdFN1Z2dlc3Rp
b25zKTsKKyAgICB2b2lkIHNldEluZGV4KGludCBpbmRleCk7Cit9OworCitRV2ViUG9wdXBXcmFw
cGVyOjpRV2ViUG9wdXBXcmFwcGVyKFFXZWJQb3B1cCogcG9wdXApCisgICAgOiBtX3BvcHVwKHBv
cHVwKQoreworICAgIFFfQVNTRVJUKG1fcG9wdXApOworICAgIG1fcG9wdXAtPmQtPm9ic2VydmVy
ID0gdGhpczsKK30KKworUVdlYlBvcHVwV3JhcHBlcjo6flFXZWJQb3B1cFdyYXBwZXIoKQorewor
ICAgIGRlbGV0ZSBtX3BvcHVwOworfQorCit2b2lkIFFXZWJQb3B1cFdyYXBwZXI6OnNob3coY29u
c3QgUVJlY3QmIGdlb21ldHJ5LCBpbnQgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBtX3BvcHVwLT5z
aG93KGdlb21ldHJ5LCBzZWxlY3RlZEluZGV4KTsKK30KKwordm9pZCBRV2ViUG9wdXBXcmFwcGVy
OjpoaWRlKCkKK3sKKyAgICBtX3BvcHVwLT5oaWRlKCk7Cit9CisKK3ZvaWQgUVdlYlBvcHVwV3Jh
cHBlcjo6cG9wdWxhdGUoY29uc3QgUUZvbnQmIGZvbnQsIGNvbnN0IFFMaXN0PEl0ZW0+JiBpdGVt
cykKK3sKKyAgICBRX1VOVVNFRChmb250KTsKKyAgICBtX3BvcHVwLT5wb3B1bGF0ZShnZXRJdGVt
cyhpdGVtcykpOworfQorCit2b2lkIFFXZWJQb3B1cFdyYXBwZXI6OnNldFBhcmVudChRV2lkZ2V0
KiBwYXJlbnQpCit7CisgICAgbV9wb3B1cC0+c2V0UGFyZW50KHBhcmVudCk7Cit9CisKK1FMaXN0
PFFXZWJQb3B1cDo6SXRlbT4gUVdlYlBvcHVwV3JhcHBlcjo6Z2V0SXRlbXMoY29uc3QgUUxpc3Q8
SXRlbT4mIGl0ZW1zKQoreworICAgIFFMaXN0PFFXZWJQb3B1cDo6SXRlbT4gcmVzdWx0OworCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgeworICAgICAgICBRV2Vi
UG9wdXA6Okl0ZW0gaXRlbTsKKworICAgICAgICBzd2l0Y2ggKGl0ZW1zW2ldLnR5cGUpIHsKKyAg
ICAgICAgY2FzZSBJdGVtOjpPcHRpb246CisgICAgICAgICAgICBpdGVtLnR5cGUgPSBRV2ViUG9w
dXA6Okl0ZW06Ok9wdGlvbjsKKyAgICAgICAgY2FzZSBJdGVtOjpTZXBhcmF0b3I6CisgICAgICAg
ICAgICBpdGVtLnR5cGUgPSBRV2ViUG9wdXA6Okl0ZW06OlNlcGFyYXRvcjsKKyAgICAgICAgY2Fz
ZSBJdGVtOjpHcm91cDoKKyAgICAgICAgICAgIGl0ZW0udHlwZSA9IFFXZWJQb3B1cDo6SXRlbTo6
R3JvdXA7CisgICAgICAgIH0KKworICAgICAgICBpdGVtLnRleHQgPSBpdGVtc1tpXS50ZXh0Owor
ICAgICAgICBpdGVtLnRvb2xUaXAgPSBpdGVtc1tpXS50b29sVGlwOworICAgICAgICBpdGVtLmVu
YWJsZWQgPSBpdGVtc1tpXS5lbmFibGVkOworCisgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbSk7
CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBRV2ViUG9wdXBXcmFwcGVy
OjpkaWRIaWRlKGJvb2wgYWNjZXB0U3VnZ2VzdGlvbnMpCit7CisgICAgcG9wdXBEaWRIaWRlKGFj
Y2VwdFN1Z2dlc3Rpb25zKTsKK30KKwordm9pZCBRV2ViUG9wdXBXcmFwcGVyOjpzZXRJbmRleChp
bnQgaW5kZXgpCit7CisgICAgdmFsdWVDaGFuZ2VkKGluZGV4KTsKK30KKworCiBDaHJvbWVDbGll
bnRRdDo6Q2hyb21lQ2xpZW50UXQoUVdlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgOiBtX3dlYlBhZ2Uo
d2ViUGFnZSkKKyAgICAsIG1fcG9wdXBGYWN0b3J5KDApCiB7CiAgICAgdG9vbEJhcnNWaXNpYmxl
ID0gc3RhdHVzQmFyVmlzaWJsZSA9IG1lbnVCYXJWaXNpYmxlID0gdHJ1ZTsKIH0KQEAgLTQ2OCw2
ICs1NjMsOCBAQCB2b2lkIENocm9tZUNsaWVudFF0OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNz
aW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopCiAKIFF0QWJzdHJhY3RXZWJQb3B1cCog
Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVBvcHVwKCkKIHsKKyAgICBpZiAobV9wb3B1cEZhY3Rvcnkp
CisgICAgICAgIHJldHVybiBuZXcgUVdlYlBvcHVwV3JhcHBlcihtX3BvcHVwRmFjdG9yeS0+Y3Jl
YXRlKCkpOwogICAgIHJldHVybiBuZXcgUXRGYWxsYmFja1dlYlBvcHVwOwogfQogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaCBiL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCmluZGV4IDEwNmQ0Y2MuLmFkYmE1ZDMg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCisr
KyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCkBAIC0xLDQgKzEs
NSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6
YWNrQGtkZS5vcmc+CiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTM1LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBjbGFzcyBRV2ViUGFnZTsKK2NsYXNz
IFFXZWJQb3B1cEZhY3Rvcnk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ1LDYgKzE0
Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCB0b29sQmFyc1Zpc2libGU7
CiAgICAgICAgIGJvb2wgc3RhdHVzQmFyVmlzaWJsZTsKICAgICAgICAgYm9vbCBtZW51QmFyVmlz
aWJsZTsKKworICAgICAgICBRV2ViUG9wdXBGYWN0b3J5KiBtX3BvcHVwRmFjdG9yeTsKICAgICB9
OwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dl
YlBvcHVwLmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAu
Y3BwCmluZGV4IDM0NGQ1OGEuLmYwZTc2ZTYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwCkBAIC00NiwxNCArNDYsNiBAQCB2b2lkIFF0RmFs
bGJhY2tXZWJQb3B1cDo6c2hvdyhjb25zdCBRUmVjdCYgZ2VvbWV0cnksIGludCBzZWxlY3RlZElu
ZGV4KQogewogICAgIHNldEN1cnJlbnRJbmRleChzZWxlY3RlZEluZGV4KTsKIAotICAgIC8qCi0g
ICAgUVdpZGdldCogcGFyZW50ID0gMDsKLSAgICBpZiAoY2xpZW50KCktPmhvc3RXaW5kb3coKSAm
JiBjbGllbnQoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkKLSAgICAgICBw
YXJlbnQgPSBjbGllbnQoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+b3du
ZXJXaWRnZXQoKTsKLQotICAgIHNldFBhcmVudChwYXJlbnQpOwotICAgICovCi0KICAgICBzZXRH
ZW9tZXRyeShRUmVjdChnZW9tZXRyeS5sZWZ0KCksIGdlb21ldHJ5LnRvcCgpLCBnZW9tZXRyeS53
aWR0aCgpLCBzaXplSGludCgpLmhlaWdodCgpKSk7CiAKICAgICBRTW91c2VFdmVudCBldmVudChR
RXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3MsIFFDdXJzb3I6OnBvcygpLCBRdDo6TGVmdEJ1dHRvbiwK
LS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46209</attachid>
            <date>2010-01-09 09:09:27 -0800</date>
            <delta_ts>2010-01-15 01:30:10 -0800</delta_ts>
            <desc>Custom popups, popup factories and usage example.</desc>
            <filename>0001-Qt-Custom-select-popups.patch</filename>
            <type>text/plain</type>
            <size>30578</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBiNWJlNjBjZTQ3Y2Q5NTU1MTRhY2MyNzBkNWYxYjUxYjNjYjA1OTMwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFNhdCwgOSBKYW4gMjAxMCAxNDowODowNCAtMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIFtRdF0gQ3VzdG9tIHNlbGVjdCBwb3B1cHMuCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzM0MTgKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKV2ViQ29y
ZToKCnF3ZWJwb3B1cC5jcHAgYWRkZWQgdG8gV2ViQ29yZS5wcm8uCgoqIFdlYkNvcmUucHJvOgoK
V2ViS2l0L3F0OgoKU3VwcG9ydCBmb3IgY29tYm9ib3ggcG9wdXAgY3VzdG9taXphdGlvbnMuCgpD
b21ib2JveCBwb3B1cCBjdXN0b21pemF0aW9uIGNhbiBiZSBtYWRlIHByb3ZpZGluZyBhbiBpbnN0
YW5jZSBvZiBRV2ViUG9wdXBGYWN0b3J5IHRvClFXZWJQYWdlLiBUaGUgZmFjdG9yeSB3aWxsIGJl
IHVzZWQgdG8gY3JlYXRlIFFXZWJQb3B1cCBvYmplY3RzIHdoZW4gbmVlZGVkLiBRV2ViUG9wdXAK
Y2xhc3MgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGN1c3RvbSBjb21ib2JveCBwb3B1cHMuCgpRV2Vi
UG9wdXBGYWN0b3J5IGluaGVyaXRlZCBjbGFzc2VzIG11c3QgaW1wbGVtZW50IG1ldGhvZCBjcmVh
dGUgYW5kIHJldHVybiBhbiBvYmplY3QKb2YgY2xhc3MgUVdlYlBvcHVwLgoKUVdlYlBhZ2UgaW50
ZXJmYWNlIGhhcyBub3QgYmVlbiBjaGFuZ2VkLiBObyBwdWJsaWMgQVBJIGlzIGF2YWxpYWJsZSB0
byBzZXQgUVdlYlBhZ2UncwpmYWN0b3JpZXMuIFRvIHVzZSBwb3B1cCBmYWN0b3JpZXMgZmlsZSBx
d2VicGFnZV9wLmggbXVzdCBiZSBpbmNsdWRlZCBhbmQgdGhlIGZhY3RvcnkKY2FuIGJlIHNldCB0
aHJvdWdoIGZ1bmN0aW9uIHF0UVdlYlBhZ2VTZXRQb3B1cEZhY3RvcnkuCgpBbiB1c2FnZSBleGFt
cGxlIGlzIGF2YWlsYWJsZSBpbiBRR1ZMYXVuY2hlci4gT3B0aW9uICdVc2UgY3VzdG9tIHBvcHVw
JyBjYW4gYmUKZm91bmQgaW4gZWZmZWN0cyBtZW51LgoKKiBBcGkvaGVhZGVycy5wcmk6CiogQXBp
L3F3ZWJwYWdlLmNwcDoKKFFXZWJQYWdlOjpzZXRQb3B1cEZhY3RvcnkpOgoocXRRV2ViUGFnZVNl
dFBvcHVwRmFjdG9yeSk6CiogQXBpL3F3ZWJwYWdlLmg6CiogQXBpL3F3ZWJwYWdlX3AuaDoKKiBR
R1ZMYXVuY2hlci9RR1ZMYXVuY2hlci5wcm86CiogUUdWTGF1bmNoZXIvbWFpbi5jcHA6CihmYWN0
b3J5KToKKFdlYlBhZ2U6OldlYlBhZ2UpOgooV2ViUGFnZTo6c2V0UG9wdXBGYWN0b3J5KToKKFNo
YXJlZFNjZW5lOjpzZXRQb3B1cEZhY3RvcnkpOgooTWFpbldpbmRvdzo6dXNlQ3VzdG9tUG9wdXAp
OgooTWFpbldpbmRvdzo6dXNlRGVmYXVsdFBvcHVwKToKKE1haW5XaW5kb3c6OmJ1aWxkVUkpOgoq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKFdlYkNvcmU6OlFXZWJQb3B1cFdy
YXBwZXI6OlFXZWJQb3B1cFdyYXBwZXIpOgooV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6flFX
ZWJQb3B1cFdyYXBwZXIpOgooV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6c2hvdyk6CihXZWJD
b3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpoaWRlKToKKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6
OnBvcHVsYXRlKToKKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OnNldFBhcmVudCk6CihXZWJD
b3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpnZXRJdGVtcyk6CihXZWJDb3JlOjpRV2ViUG9wdXBXcmFw
cGVyOjpkaWRIaWRlKToKKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OnNldEluZGV4KToKKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjpDaHJvbWVDbGllbnRRdCk6CihXZWJDb3JlOjpDaHJvbWVD
bGllbnRRdDo6Y3JlYXRlUG9wdXApOgoqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6
CiogV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcDoKKFdlYkNvcmU6OlF0RmFs
bGJhY2tXZWJQb3B1cDo6c2hvdyk6Ci0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDExICsrCiBXZWJDb3JlL1dlYkNvcmUucHJvICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnByaSAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNw
cCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKy0KIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2Uu
aCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZV9wLmggICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBXZWJLaXQvcXQvQXBpL3F3ZWJw
b3B1cC5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAgNDUgKysrKysrKwogV2ViS2l0L3F0L0Fw
aS9xd2VicG9wdXAuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDY5ICsrKysrKysrKysKIFdl
YktpdC9xdC9BcGkvcXdlYnBvcHVwX3AuaCAgICAgICAgICAgICAgICAgICAgIHwgICAzOCArKysr
KysKIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1
NCArKysrKysrKwogV2ViS2l0L3F0L1FHVkxhdW5jaGVyL1FHVkxhdW5jaGVyLnBybyAgICAgICAg
ICAgfCAgICAzICstCiBXZWJLaXQvcXQvUUdWTGF1bmNoZXIvY3VzdG9tcG9wdXAuY3BwICAgICAg
ICAgICB8ICAxNTIgKysrKysrKysrKysrKysrKysrKysrKysKIFdlYktpdC9xdC9RR1ZMYXVuY2hl
ci9jdXN0b21wb3B1cC5oICAgICAgICAgICAgIHwgICA3NSArKysrKysrKysrKwogV2ViS2l0L3F0
L1FHVkxhdW5jaGVyL21haW4uY3BwICAgICAgICAgICAgICAgICAgfCAgIDUwICsrKysrKystCiBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwICAgICB8ICAxMDIgKysr
KysrKysrKysrKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaCAg
ICAgICB8ICAgIDYgKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1
cC5jcHAgfCAgICA4IC0tCiAxNyBmaWxlcyBjaGFuZ2VkLCA2MjAgaW5zZXJ0aW9ucygrKSwgMTUg
ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0L0FwaS9xd2VicG9wdXAu
Y3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0L0FwaS9xd2VicG9wdXAuaAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFdlYktpdC9xdC9BcGkvcXdlYnBvcHVwX3AuaAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFdlYktpdC9xdC9RR1ZMYXVuY2hlci9jdXN0b21wb3B1cC5jcHAKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBXZWJLaXQvcXQvUUdWTGF1bmNoZXIvY3VzdG9tcG9wdXAuaAoKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQxYjc0YS4uNzc2Yzg3
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMC0wMS0wOSAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3Rp
bmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbUXRdIEN1c3RvbSBzZWxlY3QgcG9wdXBzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM0MTgKKworICAgICAgICBxd2VicG9wdXAu
Y3BwIGFkZGVkIHRvIFdlYkNvcmUucHJvLgorCisgICAgICAgICogV2ViQ29yZS5wcm86CisKIDIw
MTAtMDEtMDggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLiAgRml4IG5hbWVzcGFjZSBpbmRlbnQgZm9yIFNlY3VyaXR5T3JpZ2luLmguCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA2
ZjAzODM4Li42OTVhMzc3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI0NzIsNiArMjQ3Miw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAgXAogICAg
IC4uL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9x
Z3JhcGhpY3N3ZWJ2aWV3LmNwcCBcCisgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2VicG9wdXAuY3Bw
IFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0
L0FwaS9xd2Vidmlldy5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3Bw
IFwKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkgYi9XZWJLaXQvcXQvQXBp
L2hlYWRlcnMucHJpCmluZGV4IDFhNDI1OTcuLjkyNzBhYzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9x
dC9BcGkvaGVhZGVycy5wcmkKKysrIGIvV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnByaQpAQCAtMTEs
NCArMTEsNiBAQCBXRUJLSVRfQVBJX0hFQURFUlMgPSAkJFBXRC9xd2ViZnJhbWUuaCBcCiAgICAg
ICAgICAgICAgICAgICAgICAkJFBXRC9xd2VicGx1Z2luZmFjdG9yeS5oIFwKICAgICAgICAgICAg
ICAgICAgICAgICQkUFdEL3F3ZWJoaXN0b3J5LmggXAogICAgICAgICAgICAgICAgICAgICAgJCRQ
V0QvcXdlYmluc3BlY3Rvci5oIFwKLSAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJraXR2
ZXJzaW9uLmgKKyAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJraXR2ZXJzaW9uLmggXAor
ICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYnBvcHVwLmggXAorICAgICAgICAgICAgICAg
ICAgICAgJCRQV0QvcXdlYnBvcHVwX3AuaApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCAyMTQ3ZWFiLi4xN2E1
NjIwIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQorICAgIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtv
cyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgogICAgIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJ
bmMuCiAKQEAgLTE3NDMsNiArMTc0MywxMSBAQCBRV2ViUGFnZTo6flFXZWJQYWdlKCkKICAgICBk
ZWxldGUgZDsKIH0KIAordm9pZCBxdF9xd2VicGFnZV9zZXRQb3B1cEZhY3RvcnkoUVdlYlBhZ2Uq
IHBhZ2UsIFFXZWJQb3B1cEZhY3RvcnkqIGZhY3RvcnkpCit7CisgICAgcGFnZS0+ZC0+Y2hyb21l
Q2xpZW50LT5zZXRQb3B1cEZhY3RvcnkoZmFjdG9yeSk7Cit9CisKIC8qIQogICAgIFJldHVybnMg
dGhlIG1haW4gZnJhbWUgb2YgdGhlIHBhZ2UuCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkv
cXdlYnBhZ2UuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAppbmRleCA0NzY2Y2JkLi4zYTg3
Y2I4IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKKysrIGIvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIw
MDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQogICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGlu
ZyBTZXJ2aWNlcyBJbmMuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC00OSw2ICs0OSw4IEBAIGNsYXNzIFFXZWJQ
bHVnaW5GYWN0b3J5OwogY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBRV2ViSGlzdG9y
eUl0ZW07CiAKK2NsYXNzIFFXZWJQb3B1cEZhY3Rvcnk7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBDaHJvbWVDbGllbnRRdDsKICAgICBjbGFzcyBFZGl0b3JDbGllbnRRdDsKQEAg
LTM2Myw2ICszNjUsOCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpJbnNw
ZWN0b3JDbGllbnRRdDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU7
CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOworCisgICAg
ZnJpZW5kIHZvaWQgcXRfcXdlYnBhZ2Vfc2V0UG9wdXBGYWN0b3J5KFFXZWJQYWdlKiBwYWdlLCBR
V2ViUG9wdXBGYWN0b3J5KiBmYWN0b3J5KTsKIH07CiAKIFFfREVDTEFSRV9PUEVSQVRPUlNfRk9S
X0ZMQUdTKFFXZWJQYWdlOjpGaW5kRmxhZ3MpCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3
ZWJwYWdlX3AuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCmluZGV4IGRiYzk4MWUuLjBi
Zjc0MTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCisrKyBiL1dlYktp
dC9xdC9BcGkvcXdlYnBhZ2VfcC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICAgIENvcHlyaWdodCAoQykgMjAwOCBIb2xn
ZXIgSGFucyBQZXRlciBGcmV5dGhlcgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTg1LDQgKzE4NSw2IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCBkcnRSdW47CiB9OwogCitRV0VCS0lUX0VYUE9SVCB2b2lk
IHF0X3F3ZWJwYWdlX3NldFBvcHVwRmFjdG9yeShRV2ViUGFnZSogcGFnZSwgUVdlYlBvcHVwRmFj
dG9yeSogZmFjdG9yeSk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vi
cG9wdXAuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicG9wdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjEwNGUxOTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQv
QXBpL3F3ZWJwb3B1cC5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
bmNsdWRlICJxd2VicG9wdXAuaCIKKworI2luY2x1ZGUgInF3ZWJwb3B1cF9wLmgiCisKK1FXZWJQ
b3B1cDo6UVdlYlBvcHVwKCkKKyAgICA6IGQobmV3IFFXZWJQb3B1cFByaXZhdGUoKSkKK3sKK30K
KworUVdlYlBvcHVwOjp+UVdlYlBvcHVwKCkKK3sKKyAgICBkZWxldGUgZDsKK30KKwordm9pZCBR
V2ViUG9wdXA6OmRpZEhpZGUoYm9vbCBhY2NlcHRTdWdnZXN0aW9ucykKK3sKKyAgICBRX0FTU0VS
VChkLT5vYnNlcnZlcik7CisgICAgZC0+b2JzZXJ2ZXItPmRpZEhpZGUoYWNjZXB0U3VnZ2VzdGlv
bnMpOworfQorCit2b2lkIFFXZWJQb3B1cDo6c2V0SW5kZXgoaW50IGluZGV4KQoreworICAgIFFf
QVNTRVJUKGQtPm9ic2VydmVyKTsKKyAgICBkLT5vYnNlcnZlci0+c2V0SW5kZXgoaW5kZXgpOwor
fQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicG9wdXAuaCBiL1dlYktpdC9xdC9BcGkv
cXdlYnBvcHVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZiMDc5ZQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBvcHVwLmgKQEAgLTAsMCArMSw2
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgcXdlYnBvcHVwX2gKKyNkZWZpbmUgcXdl
YnBvcHVwX2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRTGlzdD4K
KyNpbmNsdWRlIDxRUmVjdD4KKyNpbmNsdWRlIDxRU3RyaW5nPgorI2luY2x1ZGUgPFFXaWRnZXQ+
CisKK2NsYXNzIFFXZWJQb3B1cFByaXZhdGU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFFXZWJQb3B1cFdyYXBwZXI7Cit9CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJQb3B1cCB7
CitwdWJsaWM6CisgICAgc3RydWN0IEl0ZW0geworICAgICAgICBlbnVtIHsgT3B0aW9uLCBHcm91
cCwgU2VwYXJhdG9yIH0gdHlwZTsKKyAgICAgICAgUVN0cmluZyB0ZXh0OworICAgICAgICBRU3Ry
aW5nIHRvb2xUaXA7CisgICAgICAgIGJvb2wgZW5hYmxlZDsKKyAgICB9OworCisgICAgUVdlYlBv
cHVwKCk7CisgICAgdmlydHVhbCB+UVdlYlBvcHVwKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hv
dyhjb25zdCBRUmVjdCYgZ2VvbWV0cnksIGludCBzZWxlY3RlZEluZGV4KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGhpZGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlKGNvbnN0IFFM
aXN0PEl0ZW0+JiBpdGVtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoUVdpZGdl
dCogcGFyZW50KSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGRpZEhpZGUoYm9vbCBhY2Nl
cHRTdWdnZXN0aW9ucyk7CisgICAgdm9pZCBzZXRJbmRleChpbnQgaW5kZXgpOworCitwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOworICAgIFFXZWJQ
b3B1cFByaXZhdGUqIGQ7Cit9OworCitjbGFzcyBRV2ViUG9wdXBGYWN0b3J5IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIFFXZWJQb3B1cCogY3JlYXRlKCkgPSAwOworfTsKKworCisKKyNlbmRpZiAv
LyBxd2VicG9wdXBfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicG9wdXBfcC5oIGIv
V2ViS2l0L3F0L0FwaS9xd2VicG9wdXBfcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmZjMjAyZmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwb3B1
cF9wLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgcXdlYnBv
cHVwX3BfaAorI2RlZmluZSBxd2VicG9wdXBfcF9oCisKK2NsYXNzIFFXZWJQb3B1cE9ic2VydmVy
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgZGlkSGlkZShib29sIGFjY2VwdFN1Z2dlc3Rp
b25zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEluZGV4KGludCBpbmRleCkgPSAwOworfTsK
KworY2xhc3MgUVdlYlBvcHVwUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgUVdlYlBvcHVwT2JzZXJ2
ZXIqIG9ic2VydmVyOworCisgICAgUVdlYlBvcHVwUHJpdmF0ZSgpIDogb2JzZXJ2ZXIoMCkge30K
K307CisKKworI2VuZGlmIC8vIHF3ZWJwb3B1cF9wX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9D
aGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGMzMDNiNDMuLmYzMmM2NGIgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU3IEBACisyMDEwLTAxLTA5ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGlu
aUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFtRdF0gQ3VzdG9tIHNlbGVjdCBwb3B1cHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzQxOAorCisgICAgICAgIFN1cHBvcnQgZm9y
IGNvbWJvYm94IHBvcHVwIGN1c3RvbWl6YXRpb25zLgorCisgICAgICAgIENvbWJvYm94IHBvcHVw
IGN1c3RvbWl6YXRpb24gY2FuIGJlIG1hZGUgcHJvdmlkaW5nIGFuIGluc3RhbmNlIG9mIFFXZWJQ
b3B1cEZhY3RvcnkgdG8KKyAgICAgICAgUVdlYlBhZ2UuIFRoZSBmYWN0b3J5IHdpbGwgYmUgdXNl
ZCB0byBjcmVhdGUgUVdlYlBvcHVwIG9iamVjdHMgd2hlbiBuZWVkZWQuIFFXZWJQb3B1cAorICAg
ICAgICBjbGFzcyBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgY3VzdG9tIGNvbWJvYm94IHBvcHVwcy4K
KworICAgICAgICBRV2ViUG9wdXBGYWN0b3J5IGluaGVyaXRlZCBjbGFzc2VzIG11c3QgaW1wbGVt
ZW50IG1ldGhvZCBjcmVhdGUgYW5kIHJldHVybiBhbiBvYmplY3QKKyAgICAgICAgb2YgY2xhc3Mg
UVdlYlBvcHVwLgorCisgICAgICAgIFFXZWJQYWdlIGludGVyZmFjZSBoYXMgbm90IGJlZW4gY2hh
bmdlZC4gTm8gcHVibGljIEFQSSBpcyBhdmFsaWFibGUgdG8gc2V0IFFXZWJQYWdlJ3MKKyAgICAg
ICAgZmFjdG9yaWVzLiBUbyB1c2UgcG9wdXAgZmFjdG9yaWVzIGZpbGUgcXdlYnBhZ2VfcC5oIG11
c3QgYmUgaW5jbHVkZWQgYW5kIHRoZSBmYWN0b3J5CisgICAgICAgIGNhbiBiZSBzZXQgdGhyb3Vn
aCBmdW5jdGlvbiBxdFFXZWJQYWdlU2V0UG9wdXBGYWN0b3J5LgorCisgICAgICAgIEFuIHVzYWdl
IGV4YW1wbGUgaXMgYXZhaWxhYmxlIGluIFFHVkxhdW5jaGVyLiBPcHRpb24gJ1VzZSBjdXN0b20g
cG9wdXAnIGNhbiBiZQorICAgICAgICBmb3VuZCBpbiBlZmZlY3RzIG1lbnUuCisKKyAgICAgICAg
KiBBcGkvaGVhZGVycy5wcmk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KFFXZWJQYWdlOjpzZXRQb3B1cEZhY3RvcnkpOgorICAgICAgICAocXRRV2ViUGFnZVNldFBvcHVw
RmFjdG9yeSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJw
YWdlX3AuaDoKKyAgICAgICAgKiBRR1ZMYXVuY2hlci9RR1ZMYXVuY2hlci5wcm86CisgICAgICAg
ICogUUdWTGF1bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChmYWN0b3J5KToKKyAgICAgICAgKFdl
YlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICAoV2ViUGFnZTo6c2V0UG9wdXBGYWN0b3J5KToKKyAg
ICAgICAgKFNoYXJlZFNjZW5lOjpzZXRQb3B1cEZhY3RvcnkpOgorICAgICAgICAoTWFpbldpbmRv
dzo6dXNlQ3VzdG9tUG9wdXApOgorICAgICAgICAoTWFpbldpbmRvdzo6dXNlRGVmYXVsdFBvcHVw
KToKKyAgICAgICAgKE1haW5XaW5kb3c6OmJ1aWxkVUkpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBw
ZXI6OlFXZWJQb3B1cFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBl
cjo6flFXZWJQb3B1cFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBl
cjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpoaWRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OnBvcHVsYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OnNldFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpR
V2ViUG9wdXBXcmFwcGVyOjpnZXRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBX
cmFwcGVyOjpkaWRIaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OnNl
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpDaHJvbWVDbGllbnRR
dCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlUG9wdXApOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFs
bGJhY2tXZWJQb3B1cDo6c2hvdyk6CisKIDIwMTAtMDEtMDggIEx1aXogQWdvc3RpbmkgIDxsdWl6
LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvUUdWTGF1bmNoZXIvUUdW
TGF1bmNoZXIucHJvIGIvV2ViS2l0L3F0L1FHVkxhdW5jaGVyL1FHVkxhdW5jaGVyLnBybwppbmRl
eCAwNTllYzFhLi45YmRmYWQ5IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvUUdWTGF1bmNoZXIvUUdW
TGF1bmNoZXIucHJvCisrKyBiL1dlYktpdC9xdC9RR1ZMYXVuY2hlci9RR1ZMYXVuY2hlci5wcm8K
QEAgLTEsNSArMSw2IEBACiBURU1QTEFURSA9IGFwcAotU09VUkNFUyArPSBtYWluLmNwcAorU09V
UkNFUyArPSBtYWluLmNwcCBjdXN0b21wb3B1cC5jcHAKK0hFQURFUlMgKz0gY3VzdG9tcG9wdXAu
aAogQ09ORklHIC09IGFwcF9idW5kbGUKIENPTkZJRyArPSB1aXRvb2xzCiBERVNURElSID0gLi4v
Li4vLi4vYmluCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvUUdWTGF1bmNoZXIvY3VzdG9tcG9wdXAu
Y3BwIGIvV2ViS2l0L3F0L1FHVkxhdW5jaGVyL2N1c3RvbXBvcHVwLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjg4NTJiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L3F0L1FHVkxhdW5jaGVyL2N1c3RvbXBvcHVwLmNwcApAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpbmNsdWRlICJjdXN0b21wb3B1cC5oIgorCisjaWYgUVRfVkVSU0lPTiA+
PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDYsIDApCisjaW5jbHVkZSA8UVByb3BlcnR5QW5pbWF0aW9u
PgorI2VuZGlmCisjaW5jbHVkZSA8UVN0YW5kYXJkSXRlbU1vZGVsPgorCitDdXN0b21MaXN0V2lk
Z2V0OjpDdXN0b21MaXN0V2lkZ2V0KCkKK3sKK30KKwordm9pZCBDdXN0b21MaXN0V2lkZ2V0Ojpm
b2N1c091dEV2ZW50KFFGb2N1c0V2ZW50KiBldmVudCkKK3sKKyAgICBlbWl0IGZvY3VzT3V0KCk7
CisgICAgUUxpc3RXaWRnZXQ6OmZvY3VzT3V0RXZlbnQoZXZlbnQpOworfQorCitDdXN0b21Qb3B1
cDo6Q3VzdG9tUG9wdXAoKQorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA2
LCAwKQorICAgIDogbV9hbmltYXRpb24oMCkKKyNlbmRpZgoreworICAgIGNvbm5lY3QoJm1fbGlz
dCwgU0lHTkFMKGl0ZW1DbGlja2VkKFFMaXN0V2lkZ2V0SXRlbSopKSwgdGhpcywgU0xPVChpdGVt
Q2hhbmdlZCgpKSk7CisgICAgY29ubmVjdCgmbV9saXN0LCBTSUdOQUwoZm9jdXNPdXQoKSksIHRo
aXMsIFNMT1QoZm9jdXNPdXQoKSkpOworfQorCitDdXN0b21Qb3B1cDo6fkN1c3RvbVBvcHVwKCkK
K3sKK30KKwordm9pZCBDdXN0b21Qb3B1cDo6c2V0UGFyZW50KFFXaWRnZXQqIHBhcmVudCkKK3sK
KyAgICBtX2xpc3Quc2V0UGFyZW50KHBhcmVudCk7Cit9CisKK3ZvaWQgQ3VzdG9tUG9wdXA6OnNo
b3coY29uc3QgUVJlY3QmIGdlb21ldHJ5LCBpbnQgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBtX2xp
c3Quc2V0R2VvbWV0cnkoUVJlY3QoMCwgMCwgZ2VvbWV0cnkud2lkdGgoKSwgMjUwKSk7CisgICAg
bV9saXN0LnNldEN1cnJlbnRSb3coc2VsZWN0ZWRJbmRleCk7CisgICAgUVBvaW50IGVuZCA9IGdl
b21ldHJ5LnRvcExlZnQoKTsKKyAgICBRV2lkZ2V0KiBwYXJlbnQgPSBtX2xpc3QucGFyZW50V2lk
Z2V0KCk7CisgICAgaWYgKHBhcmVudCkgeworICAgICAgICBlbmQuc2V0WChxTWluKGVuZC54KCks
IHBhcmVudC0+d2lkdGgoKSAtIG1fbGlzdC53aWR0aCgpKSk7CisgICAgICAgIGVuZC5zZXRZKHFN
aW4oZW5kLnkoKSwgcGFyZW50LT5oZWlnaHQoKSAtIG1fbGlzdC5oZWlnaHQoKSkpOworICAgIH0K
KyAgICBtX2xpc3Quc2V0R2VvbWV0cnkoUVJlY3QoZW5kLngoKSwgZW5kLnkoKSwgZ2VvbWV0cnku
d2lkdGgoKSwgMjUwKSk7CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDYs
IDApCisgICAgaWYgKG1fYW5pbWF0aW9uKQorICAgICAgICBtX2FuaW1hdGlvbi0+c3RvcCgpOwor
CisgICAgUVBvaW50IHN0YXJ0ID0gUVBvaW50KC1tX2xpc3Qud2lkdGgoKSwgLW1fbGlzdC5oZWln
aHQoKSk7CisKKyAgICBpZiAocGFyZW50KSB7CisgICAgICAgIHN0YXJ0LnNldFgoMiAqIGVuZC54
KCkgPCBwYXJlbnQtPndpZHRoKCkgPyAtbV9saXN0LndpZHRoKCkgOiBwYXJlbnQtPndpZHRoKCkp
OworICAgICAgICBzdGFydC5zZXRZKDIgKiBlbmQueSgpIDwgcGFyZW50LT5oZWlnaHQoKSA/IC1t
X2xpc3QuaGVpZ2h0KCkgOiBwYXJlbnQtPmhlaWdodCgpKTsKKyAgICB9CisKKyAgICBRUHJvcGVy
dHlBbmltYXRpb24qIGFuaW1hdGlvbiA9IG5ldyBRUHJvcGVydHlBbmltYXRpb24oKTsKKyAgICBh
bmltYXRpb24tPnNldFRhcmdldE9iamVjdCgmbV9saXN0KTsKKyAgICBhbmltYXRpb24tPnNldFBy
b3BlcnR5TmFtZSgicG9zIik7CisgICAgYW5pbWF0aW9uLT5zZXRFYXNpbmdDdXJ2ZShRRWFzaW5n
Q3VydmU6Ok91dEJvdW5jZSk7CisgICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbigxMDAwKTsKKyAg
ICBhbmltYXRpb24tPnNldFN0YXJ0VmFsdWUoc3RhcnQpOworICAgIGFuaW1hdGlvbi0+c2V0RW5k
VmFsdWUoZW5kKTsKKworICAgIG1fYW5pbWF0aW9uID0gYW5pbWF0aW9uOworICAgIGNvbm5lY3Qo
YW5pbWF0aW9uLCBTSUdOQUwoZmluaXNoZWQoKSksIHRoaXMsIFNMT1QoaW5BbmltYXRpb25FbmQo
KSkpOworICAgIG1fYW5pbWF0aW9uLT5zdGFydChRQWJzdHJhY3RBbmltYXRpb246OkRlbGV0ZVdo
ZW5TdG9wcGVkKTsKKyNlbHNlCisgICAgaW5BbmltYXRpb25FbmQoKTsKKyNlbmRpZgorICAgIG1f
bGlzdC5zZXRWaXNpYmxlKHRydWUpOworCit9CisKK3ZvaWQgQ3VzdG9tUG9wdXA6OmhpZGUoKQor
eworI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA2LCAwKQorICAgIGlmICht
X2FuaW1hdGlvbikKKyAgICAgICAgbV9hbmltYXRpb24tPnN0b3AoKTsKKworICAgIFFQcm9wZXJ0
eUFuaW1hdGlvbiogYW5pbWF0aW9uID0gbmV3IFFQcm9wZXJ0eUFuaW1hdGlvbjsKKyAgICBhbmlt
YXRpb24tPnNldFRhcmdldE9iamVjdCgmbV9saXN0KTsKKyAgICBhbmltYXRpb24tPnNldFByb3Bl
cnR5TmFtZSgicG9zIik7CisgICAgYW5pbWF0aW9uLT5zZXRFYXNpbmdDdXJ2ZShRRWFzaW5nQ3Vy
dmU6Ok91dEN1YmljKTsKKyAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKDUwMCk7CisgICAgYW5p
bWF0aW9uLT5zZXRFbmRWYWx1ZShRUG9pbnQoLW1fbGlzdC53aWR0aCgpLCAtbV9saXN0LmhlaWdo
dCgpKSk7CisKKyAgICBtX2FuaW1hdGlvbiA9IGFuaW1hdGlvbjsKKyAgICBjb25uZWN0KGFuaW1h
dGlvbiwgU0lHTkFMKGZpbmlzaGVkKCkpLCB0aGlzLCBTTE9UKG91dEFuaW1hdGlvbkVuZCgpKSk7
CisgICAgbV9hbmltYXRpb24tPnN0YXJ0KFFBYnN0cmFjdEFuaW1hdGlvbjo6RGVsZXRlV2hlblN0
b3BwZWQpOworI2Vsc2UKKyAgICBvdXRBbmltYXRpb25FbmQoKTsKKyNlbmRpZgorfQorCit2b2lk
IEN1c3RvbVBvcHVwOjpwb3B1bGF0ZShjb25zdCBRTGlzdDxJdGVtPiYgaXRlbXMpCit7CisKKyAg
ICBtX2xpc3QuY2xlYXIoKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgp
OyBpKyspIHsKKyAgICAgICAgaWYgKGl0ZW1zW2ldLnR5cGUgPT0gUVdlYlBvcHVwOjpJdGVtOjpT
ZXBhcmF0b3IpCisgICAgICAgICAgICBtX2xpc3QuYWRkSXRlbSgiLS0tLS0tLS0tLS0tLS0iKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9saXN0LmFkZEl0ZW0oaXRlbXNbaV0udGV4dCk7
CisgICAgfQorfQorCit2b2lkIEN1c3RvbVBvcHVwOjppbkFuaW1hdGlvbkVuZCgpCit7CisjaWYg
UVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDYsIDApCisgICAgbV9hbmltYXRpb24g
PSAwOworI2VuZGlmCisgICAgbV9saXN0LnNldEZvY3VzKCk7Cit9CisKK3ZvaWQgQ3VzdG9tUG9w
dXA6Om91dEFuaW1hdGlvbkVuZCgpCit7CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NI
RUNLKDQsIDYsIDApCisgICAgbV9hbmltYXRpb24gPSAwOworI2VuZGlmCisgICAgZGlkSGlkZSh0
cnVlKTsKKyAgICBtX2xpc3Quc2V0UGFyZW50KDApOworICAgIG1fbGlzdC5zZXRWaXNpYmxlKGZh
bHNlKTsKK30KKwordm9pZCBDdXN0b21Qb3B1cDo6aXRlbUNoYW5nZWQoKQoreworICAgIHNldElu
ZGV4KG1fbGlzdC5jdXJyZW50SW5kZXgoKS5yb3coKSk7CisgICAgaGlkZSgpOworfQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3F0L1FHVkxhdW5jaGVyL2N1c3RvbXBvcHVwLmggYi9XZWJLaXQvcXQvUUdW
TGF1bmNoZXIvY3VzdG9tcG9wdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4zZmVjY2RkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L1FHVkxhdW5jaGVyL2N1c3Rv
bXBvcHVwLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgY3Vz
dG9tcG9wdXBfaAorI2RlZmluZSBjdXN0b21wb3B1cF9oCisKKyNpbmNsdWRlICJxd2VicG9wdXAu
aCIKKworI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA2LCAwKQorI2luY2x1
ZGUgPFFBYnN0cmFjdEFuaW1hdGlvbj4KKyNlbmRpZgorI2luY2x1ZGUgPFFMaXN0V2lkZ2V0Pgor
CitjbGFzcyBDdXN0b21MaXN0V2lkZ2V0IDogcHVibGljIFFMaXN0V2lkZ2V0IHsKKyAgICBRX09C
SkVDVAorcHVibGljOgorICAgIEN1c3RvbUxpc3RXaWRnZXQoKTsKKworc2lnbmFsczoKKyAgICB2
b2lkIGZvY3VzT3V0KCk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgZm9jdXNPdXRF
dmVudChRRm9jdXNFdmVudCogZXZlbnQpOworfTsKKworY2xhc3MgQ3VzdG9tUG9wdXAgOiBwdWJs
aWMgUU9iamVjdCwgcHVibGljIFFXZWJQb3B1cCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAg
ICBDdXN0b21Qb3B1cCgpOworICAgIH5DdXN0b21Qb3B1cCgpOworCisKKyAgICB2aXJ0dWFsIHZv
aWQgc2hvdyhjb25zdCBRUmVjdCYgZ2VvbWV0cnksIGludCBzZWxlY3RlZEluZGV4KTsKKyAgICB2
aXJ0dWFsIHZvaWQgaGlkZSgpOworICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZShjb25zdCBRTGlz
dDxJdGVtPiYgaXRlbXMpOworICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoUVdpZGdldCogcGFy
ZW50KTsKKworcHJpdmF0ZToKKyAgICBDdXN0b21MaXN0V2lkZ2V0IG1fbGlzdDsKKyAgICBRTGlz
dDxJdGVtPiBtX2l0ZW1zOworCisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQs
IDYsIDApCisgICAgUUFic3RyYWN0QW5pbWF0aW9uKiBtX2FuaW1hdGlvbjsKKyNlbmRpZgorCitw
cml2YXRlIHNsb3RzOgorICAgIHZvaWQgaW5BbmltYXRpb25FbmQoKTsKKyAgICB2b2lkIG91dEFu
aW1hdGlvbkVuZCgpOworICAgIHZvaWQgaXRlbUNoYW5nZWQoKTsKKyAgICB2b2lkIGZvY3VzT3V0
KCkgeyBoaWRlKCk7IH0KK307CisKK2NsYXNzIEN1c3RvbVBvcHVwRmFjdG9yeSA6IHB1YmxpYyBR
V2ViUG9wdXBGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFFXZWJQb3B1cCogY3JlYXRl
KCkgeyByZXR1cm4gbmV3IEN1c3RvbVBvcHVwOyB9Cit9OworCisjZW5kaWYgLy8gY3VzdG9tcG9w
dXBfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1FHVkxhdW5jaGVyL21haW4uY3BwIGIvV2ViS2l0
L3F0L1FHVkxhdW5jaGVyL21haW4uY3BwCmluZGV4IGI4MjM0N2UuLjE2YTU4YmEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9xdC9RR1ZMYXVuY2hlci9tYWluLmNwcAorKysgYi9XZWJLaXQvcXQvUUdWTGF1
bmNoZXIvbWFpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJp
Z2h0IChDKSAyMDA5LCAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDA2IEdlb3JnZSBTdGFpa29zIDxzdGFpa29zQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgpAQCAt
MzIsNiArMzIsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY3VzdG9tcG9w
dXAuaCIKICNpbmNsdWRlIDxRRGVidWc+CiAjaW5jbHVkZSA8UUZpbGU+CiAjaW5jbHVkZSA8UUdy
YXBoaWNzU2NlbmU+CkBAIC00Nyw2ICs0OCw4IEBACiAjaW5jbHVkZSA8cXdlYmZyYW1lLmg+CiAj
aW5jbHVkZSA8cWdyYXBoaWNzd2Vidmlldy5oPgogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CisjaW5j
bHVkZSA8cXdlYnBvcHVwLmg+CisjaW5jbHVkZSA8cXdlYnBvcHVwX3AuaD4KICNpbmNsdWRlIDxx
d2Vic2V0dGluZ3MuaD4KICNpbmNsdWRlIDxxd2Vidmlldy5oPgogCkBAIC05Myw2ICs5NiwxMiBA
QCBwcml2YXRlOgogICAgIHFyZWFsIG1feVJvdGF0aW9uOwogfTsKIAorc3RhdGljIFFXZWJQb3B1
cEZhY3RvcnkqIGZhY3RvcnkoKQoreworICAgIHN0YXRpYyBRV2ViUG9wdXBGYWN0b3J5KiByZXN1
bHQobmV3IEN1c3RvbVBvcHVwRmFjdG9yeSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogY2xh
c3MgV2ViUGFnZSA6IHB1YmxpYyBRV2ViUGFnZSB7CiAgICAgUV9PQkpFQ1QKIApAQCAtMTAxLDkg
KzExMCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIDogUVdlYlBhZ2UocGFyZW50KQogICAgIHsKICAg
ICAgICAgYXBwbHlQcm94eSgpOworICAgICAgICBzZXRQb3B1cEZhY3RvcnkoZmFsc2UpOwogICAg
IH0KICAgICB2aXJ0dWFsIFFXZWJQYWdlKiBjcmVhdGVXaW5kb3coUVdlYlBhZ2U6OldlYldpbmRv
d1R5cGUpOwogCisgICAgdm9pZCBzZXRQb3B1cEZhY3RvcnkoYm9vbCB1c2VDdXN0b21Qb3B1cCkK
KyAgICB7CisgICAgICAgIHF0X3F3ZWJwYWdlX3NldFBvcHVwRmFjdG9yeSh0aGlzLCB1c2VDdXN0
b21Qb3B1cCA/IGZhY3RvcnkoKSA6IDApOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGFw
cGx5UHJveHkoKQogICAgIHsKQEAgLTIyMiw2ICsyMzcsMTEgQEAgcHVibGljOgogICAgIFFHcmFw
aGljc1NjZW5lKiBzY2VuZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NlbmU7IH0KICAgICBXZWJWaWV3
KiB3ZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9pdGVtOyB9CiAKKyAgICB2b2lkIHNldFBvcHVw
RmFjdG9yeShib29sIHVzZUN1c3RvbVBvcHVwKQorICAgIHsKKyAgICAgICAgbV9wYWdlLT5zZXRQ
b3B1cEZhY3RvcnkodXNlQ3VzdG9tUG9wdXApOworICAgIH0KKwogcHJpdmF0ZToKICAgICBRR3Jh
cGhpY3NTY2VuZSogbV9zY2VuZTsKICAgICBXZWJWaWV3KiBtX2l0ZW07CkBAIC0zODIsNiArNDAy
LDIyIEBAIHB1YmxpYyBzbG90czoKICAgICAgICAgdmlldy0+YW5pbWF0ZWRZRmxpcCgpOwogICAg
IH0KIAorICAgIHZvaWQgdXNlQ3VzdG9tUG9wdXAoKQorICAgIHsKKyAgICAgICAgbV91c2VDdXN0
b21Qb3B1cC0+c2V0VmlzaWJsZShmYWxzZSk7CisgICAgICAgIG1fdXNlRGVmYXVsdFBvcHVwLT5z
ZXRWaXNpYmxlKHRydWUpOworICAgICAgICBzY2VuZS0+c2V0UG9wdXBGYWN0b3J5KHRydWUpOwor
ICAgICAgICBtX3JlbG9hZC0+dHJpZ2dlcigpOworICAgIH0KKworICAgIHZvaWQgdXNlRGVmYXVs
dFBvcHVwKCkKKyAgICB7CisgICAgICAgIG1fdXNlQ3VzdG9tUG9wdXAtPnNldFZpc2libGUodHJ1
ZSk7CisgICAgICAgIG1fdXNlRGVmYXVsdFBvcHVwLT5zZXRWaXNpYmxlKGZhbHNlKTsKKyAgICAg
ICAgc2NlbmUtPnNldFBvcHVwRmFjdG9yeShmYWxzZSk7CisgICAgICAgIG1fcmVsb2FkLT50cmln
Z2VyKCk7CisgICAgfQorCiBwcml2YXRlOgogCiAgICAgdm9pZCBsb2FkVVJMKGNvbnN0IFFVcmwm
IHVybCkKQEAgLTQwNCw3ICs0NDAsOCBAQCBwcml2YXRlOgogICAgICAgICBRVG9vbEJhciogYmFy
ID0gYWRkVG9vbEJhcigiTmF2aWdhdGlvbiIpOwogICAgICAgICBiYXItPmFkZEFjdGlvbihwYWdl
LT5hY3Rpb24oUVdlYlBhZ2U6OkJhY2spKTsKICAgICAgICAgYmFyLT5hZGRBY3Rpb24ocGFnZS0+
YWN0aW9uKFFXZWJQYWdlOjpGb3J3YXJkKSk7Ci0gICAgICAgIGJhci0+YWRkQWN0aW9uKHBhZ2Ut
PmFjdGlvbihRV2ViUGFnZTo6UmVsb2FkKSk7CisgICAgICAgIG1fcmVsb2FkID0gcGFnZS0+YWN0
aW9uKFFXZWJQYWdlOjpSZWxvYWQpOworICAgICAgICBiYXItPmFkZEFjdGlvbihtX3JlbG9hZCk7
CiAgICAgICAgIGJhci0+YWRkQWN0aW9uKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6U3RvcCkpOwog
ICAgICAgICBiYXItPmFkZFdpZGdldCh1cmxFZGl0KTsKIApAQCAtNDI4LDEyICs0NjUsMjEgQEAg
cHJpdmF0ZToKICAgICAgICAgZnhNZW51LT5hZGRBY3Rpb24oIkZsaXAiLCB0aGlzLCBTTE9UKGZs
aXAoKSkpOwogICAgICAgICBmeE1lbnUtPmFkZEFjdGlvbigiQW5pbWF0ZWQgRmxpcCIsIHRoaXMs
IFNMT1QoYW5pbWF0ZWRGbGlwKCkpLCBRS2V5U2VxdWVuY2UoIkN0cmwrUiIpKTsKICAgICAgICAg
ZnhNZW51LT5hZGRBY3Rpb24oIkFuaW1hdGVkIFktRmxpcCIsIHRoaXMsIFNMT1QoYW5pbWF0ZWRZ
RmxpcCgpKSwgUUtleVNlcXVlbmNlKCJDdHJsK1kiKSk7CisKKyAgICAgICAgbV91c2VDdXN0b21Q
b3B1cCA9IGZ4TWVudS0+YWRkQWN0aW9uKCJVc2UgY3VzdG9tIHBvcHVwIiwgdGhpcywgU0xPVCh1
c2VDdXN0b21Qb3B1cCgpKSk7CisgICAgICAgIG1fdXNlRGVmYXVsdFBvcHVwID0gZnhNZW51LT5h
ZGRBY3Rpb24oIlVzZSBkZWZhdWx0IHBvcHVwIiwgdGhpcywgU0xPVCh1c2VEZWZhdWx0UG9wdXAo
KSkpOworCisgICAgICAgIHVzZURlZmF1bHRQb3B1cCgpOwogICAgIH0KIAogcHJpdmF0ZToKICAg
ICBNYWluVmlldyogdmlldzsKICAgICBRRXhwbGljaXRseVNoYXJlZERhdGFQb2ludGVyPFNoYXJl
ZFNjZW5lPiBzY2VuZTsKIAorICAgIFFBY3Rpb24qIG1fdXNlQ3VzdG9tUG9wdXA7CisgICAgUUFj
dGlvbiogbV91c2VEZWZhdWx0UG9wdXA7CisgICAgUUFjdGlvbiogbV9yZWxvYWQ7CisKICAgICBR
TGluZUVkaXQqIHVybEVkaXQ7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmNwcAppbmRleCBmNjJiYzg2Li42YTY4MWQzIDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQogICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KICAq
IENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCkBAIC00NSw2ICs0Niw4IEBACiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKICNpbmNs
dWRlICJxd2VicGFnZV9wLmgiCiAjaW5jbHVkZSAicXdlYmZyYW1lX3AuaCIKKyNpbmNsdWRlICJx
d2VicG9wdXAuaCIKKyNpbmNsdWRlICJxd2VicG9wdXBfcC5oIgogI2luY2x1ZGUgInF3ZWJzZWN1
cml0eW9yaWdpbi5oIgogI2luY2x1ZGUgInF3ZWJzZWN1cml0eW9yaWdpbl9wLmgiCiAjaW5jbHVk
ZSAicXdlYnZpZXcuaCIKQEAgLTU2LDggKzU5LDEwMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogewog
CiAKK2NsYXNzIFFXZWJQb3B1cFdyYXBwZXIgOiBwdWJsaWMgUXRBYnN0cmFjdFdlYlBvcHVwLCBw
cml2YXRlIFFXZWJQb3B1cE9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBRV2ViUG9wdXBXcmFwcGVy
KFFXZWJQb3B1cCogcG9wdXApOworICAgIH5RV2ViUG9wdXBXcmFwcGVyKCk7CisKK3B1YmxpYzog
Ly8gUXRBYnN0cmFjdFdlYlBvcHVwCisgICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgUVJlY3Qm
IGdlb21ldHJ5LCBpbnQgc2VsZWN0ZWRJbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGhpZGUoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGUoY29uc3QgUUZvbnQmIGZvbnQsIGNvbnN0IFFMaXN0
PEl0ZW0+JiBpdGVtcyk7CisgICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChRV2lkZ2V0KiBwYXJl
bnQpOworCitwcml2YXRlOgorICAgIFFXZWJQb3B1cCogbV9wb3B1cDsKKworICAgIFFMaXN0PFFX
ZWJQb3B1cDo6SXRlbT4gZ2V0SXRlbXMoY29uc3QgUUxpc3Q8SXRlbT4mIGl0ZW1zKTsKKworcHJp
dmF0ZTogLy8gUVdlYlBvcHVwT2JzZXJ2ZXIKKyAgICB2b2lkIGRpZEhpZGUoYm9vbCBhY2NlcHRT
dWdnZXN0aW9ucyk7CisgICAgdm9pZCBzZXRJbmRleChpbnQgaW5kZXgpOworfTsKKworUVdlYlBv
cHVwV3JhcHBlcjo6UVdlYlBvcHVwV3JhcHBlcihRV2ViUG9wdXAqIHBvcHVwKQorICAgIDogbV9w
b3B1cChwb3B1cCkKK3sKKyAgICBRX0FTU0VSVChtX3BvcHVwKTsKKyAgICBtX3BvcHVwLT5kLT5v
YnNlcnZlciA9IHRoaXM7Cit9CisKK1FXZWJQb3B1cFdyYXBwZXI6On5RV2ViUG9wdXBXcmFwcGVy
KCkKK3sKKyAgICBkZWxldGUgbV9wb3B1cDsKK30KKwordm9pZCBRV2ViUG9wdXBXcmFwcGVyOjpz
aG93KGNvbnN0IFFSZWN0JiBnZW9tZXRyeSwgaW50IHNlbGVjdGVkSW5kZXgpCit7CisgICAgbV9w
b3B1cC0+c2hvdyhnZW9tZXRyeSwgc2VsZWN0ZWRJbmRleCk7Cit9CisKK3ZvaWQgUVdlYlBvcHVw
V3JhcHBlcjo6aGlkZSgpCit7CisgICAgbV9wb3B1cC0+aGlkZSgpOworfQorCit2b2lkIFFXZWJQ
b3B1cFdyYXBwZXI6OnBvcHVsYXRlKGNvbnN0IFFGb250JiBmb250LCBjb25zdCBRTGlzdDxJdGVt
PiYgaXRlbXMpCit7CisgICAgUV9VTlVTRUQoZm9udCk7CisgICAgbV9wb3B1cC0+cG9wdWxhdGUo
Z2V0SXRlbXMoaXRlbXMpKTsKK30KKwordm9pZCBRV2ViUG9wdXBXcmFwcGVyOjpzZXRQYXJlbnQo
UVdpZGdldCogcGFyZW50KQoreworICAgIG1fcG9wdXAtPnNldFBhcmVudChwYXJlbnQpOworfQor
CitRTGlzdDxRV2ViUG9wdXA6Okl0ZW0+IFFXZWJQb3B1cFdyYXBwZXI6OmdldEl0ZW1zKGNvbnN0
IFFMaXN0PEl0ZW0+JiBpdGVtcykKK3sKKyAgICBRTGlzdDxRV2ViUG9wdXA6Okl0ZW0+IHJlc3Vs
dDsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgUVdlYlBvcHVwOjpJdGVtIGl0ZW07CisKKyAgICAgICAgc3dpdGNoIChpdGVtc1tpXS50eXBl
KSB7CisgICAgICAgIGNhc2UgSXRlbTo6T3B0aW9uOgorICAgICAgICAgICAgaXRlbS50eXBlID0g
UVdlYlBvcHVwOjpJdGVtOjpPcHRpb247CisgICAgICAgIGNhc2UgSXRlbTo6U2VwYXJhdG9yOgor
ICAgICAgICAgICAgaXRlbS50eXBlID0gUVdlYlBvcHVwOjpJdGVtOjpTZXBhcmF0b3I7CisgICAg
ICAgIGNhc2UgSXRlbTo6R3JvdXA6CisgICAgICAgICAgICBpdGVtLnR5cGUgPSBRV2ViUG9wdXA6
Okl0ZW06Okdyb3VwOworICAgICAgICB9CisKKyAgICAgICAgaXRlbS50ZXh0ID0gaXRlbXNbaV0u
dGV4dDsKKyAgICAgICAgaXRlbS50b29sVGlwID0gaXRlbXNbaV0udG9vbFRpcDsKKyAgICAgICAg
aXRlbS5lbmFibGVkID0gaXRlbXNbaV0uZW5hYmxlZDsKKworICAgICAgICByZXN1bHQuYXBwZW5k
KGl0ZW0pOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgUVdlYlBvcHVw
V3JhcHBlcjo6ZGlkSGlkZShib29sIGFjY2VwdFN1Z2dlc3Rpb25zKQoreworICAgIHBvcHVwRGlk
SGlkZShhY2NlcHRTdWdnZXN0aW9ucyk7Cit9CisKK3ZvaWQgUVdlYlBvcHVwV3JhcHBlcjo6c2V0
SW5kZXgoaW50IGluZGV4KQoreworICAgIHZhbHVlQ2hhbmdlZChpbmRleCk7Cit9CisKKwogQ2hy
b21lQ2xpZW50UXQ6OkNocm9tZUNsaWVudFF0KFFXZWJQYWdlKiB3ZWJQYWdlKQogICAgIDogbV93
ZWJQYWdlKHdlYlBhZ2UpCisgICAgLCBtX3BvcHVwRmFjdG9yeSgwKQogewogICAgIHRvb2xCYXJz
VmlzaWJsZSA9IHN0YXR1c0JhclZpc2libGUgPSBtZW51QmFyVmlzaWJsZSA9IHRydWU7CiB9CkBA
IC02Nyw2ICsxNjIsMTEgQEAgQ2hyb21lQ2xpZW50UXQ6On5DaHJvbWVDbGllbnRRdCgpCiAKIH0K
IAordm9pZCBDaHJvbWVDbGllbnRRdDo6c2V0UG9wdXBGYWN0b3J5KFFXZWJQb3B1cEZhY3Rvcnkq
IHBvcHVwRmFjdG9yeSkKK3sKKyAgICBtX3BvcHVwRmFjdG9yeSA9IHBvcHVwRmFjdG9yeTsKK30K
Kwogdm9pZCBDaHJvbWVDbGllbnRRdDo6c2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCkBAIC00NjgsNiArNTY4LDggQEAgdm9pZCBDaHJv
bWVDbGllbnRRdDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiwg
R2VvbG9jYXRpb24qKQogCiBRdEFic3RyYWN0V2ViUG9wdXAqIENocm9tZUNsaWVudFF0OjpjcmVh
dGVQb3B1cCgpCiB7CisgICAgaWYgKG1fcG9wdXBGYWN0b3J5KQorICAgICAgICByZXR1cm4gbmV3
IFFXZWJQb3B1cFdyYXBwZXIobV9wb3B1cEZhY3RvcnktPmNyZWF0ZSgpKTsKICAgICByZXR1cm4g
bmV3IFF0RmFsbGJhY2tXZWJQb3B1cDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmggYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuaAppbmRleCAxMDZkNGNjLi5kNzcyZTU3IDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaApAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgogICoKICAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0zNSw2ICszNiw3IEBACiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKIAogY2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBRV2ViUG9wdXBGYWN0b3J5Owog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNyw2ICsxMzksOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgUXRBYnN0cmFjdFdlYlBvcHVwKiBjcmVhdGVQb3B1cCgpOwogCisg
ICAgICAgIHZvaWQgc2V0UG9wdXBGYWN0b3J5KFFXZWJQb3B1cEZhY3RvcnkqIHBvcHVwRmFjdG9y
eSk7CisKICAgICAgICAgUVdlYlBhZ2UqIG1fd2ViUGFnZTsKICAgICAgICAgV2ViQ29yZTo6S1VS
TCBsYXN0SG92ZXJVUkw7CiAgICAgICAgIFdlYkNvcmU6OlN0cmluZyBsYXN0SG92ZXJUaXRsZTsK
QEAgLTE0NSw2ICsxNDksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgdG9v
bEJhcnNWaXNpYmxlOwogICAgICAgICBib29sIHN0YXR1c0JhclZpc2libGU7CiAgICAgICAgIGJv
b2wgbWVudUJhclZpc2libGU7CisKKyAgICAgICAgUVdlYlBvcHVwRmFjdG9yeSogbV9wb3B1cEZh
Y3Rvcnk7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxs
YmFja1dlYlBvcHVwLmNwcAppbmRleCAzNDRkNThhLi5mMGU3NmU2IDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcAorKysgYi9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcApAQCAtNDYsMTQgKzQ2LDYg
QEAgdm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3coY29uc3QgUVJlY3QmIGdlb21ldHJ5LCBp
bnQgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBzZXRDdXJyZW50SW5kZXgoc2VsZWN0ZWRJbmRleCk7
CiAKLSAgICAvKgotICAgIFFXaWRnZXQqIHBhcmVudCA9IDA7Ci0gICAgaWYgKGNsaWVudCgpLT5o
b3N0V2luZG93KCkgJiYgY2xpZW50KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50
KCkpCi0gICAgICAgcGFyZW50ID0gY2xpZW50KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdl
Q2xpZW50KCktPm93bmVyV2lkZ2V0KCk7Ci0KLSAgICBzZXRQYXJlbnQocGFyZW50KTsKLSAgICAq
LwotCiAgICAgc2V0R2VvbWV0cnkoUVJlY3QoZ2VvbWV0cnkubGVmdCgpLCBnZW9tZXRyeS50b3Ao
KSwgZ2VvbWV0cnkud2lkdGgoKSwgc2l6ZUhpbnQoKS5oZWlnaHQoKSkpOwogCiAgICAgUU1vdXNl
RXZlbnQgZXZlbnQoUUV2ZW50OjpNb3VzZUJ1dHRvblByZXNzLCBRQ3Vyc29yOjpwb3MoKSwgUXQ6
OkxlZnRCdXR0b24sCi0tIAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="28435"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46653</attachid>
            <date>2010-01-15 01:30:10 -0800</date>
            <delta_ts>2010-01-18 14:03:16 -0800</delta_ts>
            <desc>Custom popups and popup factories.</desc>
            <filename>0001-Qt-Custom-select-popups.patch</filename>
            <type>text/plain</type>
            <size>19789</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA3NTQ0MGJjYTQ4NmQ5ODE0ZTJiZDZiYWE1MTVkYmQwYjI4MmM2MzUxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IEZyaSwgMTUgSmFuIDIwMTAgMDY6MjQ6MDggLTAzMDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIEN1c3RvbSBzZWxlY3QgcG9wdXBzLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzNDE4CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCldlYkNv
cmU6Cgpxd2Vic2VsZWN0cG9wdXBkZWxlZ2F0ZS5jcHAgYWRkZWQgdG8gV2ViQ29yZS5wcm8uCm1l
dGhvZCBDaHJvbWVDbGllbnRRdDo6Y3JlYXRlUG9wdXAgY2hhbmdlZCBmb3IgQ2hyb21lQ2xpZW50
UXQ6OmNyZWF0ZVNlbGVjdFBvcHVwLgoKKiBXZWJDb3JlLnBybzoKKiBwbGF0Zm9ybS9xdC9Qb3B1
cE1lbnVRdC5jcHA6CihXZWJDb3JlOjpQb3B1cE1lbnU6OnNob3cpOgoKV2ViS2l0L3F0OgoKU3Vw
cG9ydCBmb3IgY29tYm9ib3ggcG9wdXAgY3VzdG9taXphdGlvbnMuCgpDb21ib2JveCBwb3B1cCBj
dXN0b21pemF0aW9uIGNhbiBiZSBtYWRlIHByb3ZpZGluZyBhbiBpbnN0YW5jZSBvZgpRV2ViU2Vs
ZWN0UG9wdXBEZWxlZ2F0ZUZhY3RvcnkgdG8gUVdlYlBhZ2UuIFRoZSBmYWN0b3J5IHdpbGwgYmUg
dXNlZCB0byBjcmVhdGUKUVdlYlNlbGVjdFBvcHVwRGVsZWdhdGUgb2JqZWN0cyB3aGVuIG5lZWRl
ZC4gUVdlYlNlbGVjdFBvcHVwRGVsZWdhdGUgY2xhc3MgaXMgdGhlCmJhc2UgY2xhc3MgZm9yIGN1
c3RvbSBjb21ib2JveCBwb3B1cHMuCgpRV2ViU2VsZWN0UG9wdXBEZWxlZ2F0ZUZhY3RvcnkgaW5o
ZXJpdGVkIGNsYXNzZXMgbXVzdCBpbXBsZW1lbnQgbWV0aG9kIGNyZWF0ZSBhbmQKcmV0dXJuIGFu
IG9iamVjdCBvZiBjbGFzcyBRV2ViU2VsZWN0UG9wdXBEZWxlZ2F0ZS4KCiogQXBpL2hlYWRlcnMu
cHJpOgoqIEFwaS9xd2VicGFnZS5jcHA6CihRV2ViUGFnZTo6c2V0U2VsZWN0UG9wdXBEZWxlZ2F0
ZUZhY3RvcnkpOgoqIEFwaS9xd2VicGFnZS5oOgoqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmNwcDoKKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OlFXZWJQb3B1cFdyYXBwZXIpOgoo
V2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6flFXZWJQb3B1cFdyYXBwZXIpOgooV2ViQ29yZTo6
UVdlYlBvcHVwV3JhcHBlcjo6c2hvdyk6CihXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpoaWRl
KToKKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OnBvcHVsYXRlKToKKFdlYkNvcmU6OlFXZWJQ
b3B1cFdyYXBwZXI6OnNldFBhcmVudCk6CihXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpnZXRJ
dGVtcyk6CihXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpkaWRIaWRlKToKKFdlYkNvcmU6OlFX
ZWJQb3B1cFdyYXBwZXI6OnNldEluZGV4KToKKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpDaHJv
bWVDbGllbnRRdCk6CihXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0U2VsZWN0UG9wdXBEZWxl
Z2F0ZUZhY3RvcnkpOgooV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVNlbGVjdFBvcHVw
KToKKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgoqIFdlYkNvcmVTdXBwb3J0L1F0
RmFsbGJhY2tXZWJQb3B1cC5jcHA6CihXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cp
OgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAxNCArKysKIFdlYkNvcmUvV2ViQ29yZS5wcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgMSArCiBXZWJDb3JlL3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0LmNwcCAgICAgICAgICAg
ICB8ICAgIDIgKy0KIFdlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgNCArLQogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgICAgICAgICAgICAgICAg
ICAgICAgfCAgICA3ICsrLQogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICA2ICstCiBXZWJLaXQvcXQvQXBpL3F3ZWJzZWxlY3Rwb3B1cGRlbGVnYXRl
LmNwcCAgICAgICB8ICAgNTEgKysrKysrKysrKysKIFdlYktpdC9xdC9BcGkvcXdlYnNlbGVjdHBv
cHVwZGVsZWdhdGUuaCAgICAgICAgIHwgICA2OSArKysrKysrKysrKysrKysKIFdlYktpdC9xdC9B
cGkvcXdlYnNlbGVjdHBvcHVwZGVsZWdhdGVfcC5oICAgICAgIHwgICAzOSArKysrKysrKysKIFdl
YktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzOCArKysr
KysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCAgICAgfCAg
MTA0ICsrKysrKysrKysrKysrKysrKysrKystCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuaCAgICAgICB8ICAgIDggKystCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UXRGYWxsYmFja1dlYlBvcHVwLmNwcCB8ICAgIDggLS0KIDEzIGZpbGVzIGNoYW5nZWQsIDMzNyBp
bnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQv
cXQvQXBpL3F3ZWJzZWxlY3Rwb3B1cGRlbGVnYXRlLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdl
YktpdC9xdC9BcGkvcXdlYnNlbGVjdHBvcHVwZGVsZWdhdGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFdlYktpdC9xdC9BcGkvcXdlYnNlbGVjdHBvcHVwZGVsZWdhdGVfcC5oCgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNDFiNzRhLi45YTA4
MGE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDEwLTAxLTE1ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29z
dGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtRdF0gQ3VzdG9tIHNlbGVjdCBwb3B1cHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzQxOAorCisgICAgICAgIHF3ZWJzZWxl
Y3Rwb3B1cGRlbGVnYXRlLmNwcCBhZGRlZCB0byBXZWJDb3JlLnByby4KKyAgICAgICAgbWV0aG9k
IENocm9tZUNsaWVudFF0OjpjcmVhdGVQb3B1cCBjaGFuZ2VkIGZvciBDaHJvbWVDbGllbnRRdDo6
Y3JlYXRlU2VsZWN0UG9wdXAuCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6
OnNob3cpOgorCiAyMDEwLTAxLTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gIEZpeCBuYW1lc3BhY2UgaW5kZW50IGZvciBTZWN1cml0eU9y
aWdpbi5oLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KaW5kZXggNmYwMzgzOC4uNzQzNWNiYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
LnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yNDcyLDYgKzI0NzIsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
UXQuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAgXAogICAgIC4uL1dl
YktpdC9xdC9BcGkvcWdyYXBoaWNzd2Vidmlldy5jcHAgXAorICAgIC4uL1dlYktpdC9xdC9BcGkv
cXdlYnNlbGVjdHBvcHVwZGVsZWdhdGUuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJw
YWdlLmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2Vidmlldy5jcHAgXAogICAgIC4uL1dl
YktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUG9wdXBNZW51UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5j
cHAKaW5kZXggNjNlMTU2NS4uNDQ4MTVjNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9Qb3B1cE1lbnVRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5j
cHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYg
cmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCiAgICAgQVNTRVJUKGNocm9tZUNsaWVu
dCk7CiAKICAgICBpZiAoIW1fcG9wdXApIHsKLSAgICAgICAgbV9wb3B1cCA9IGNocm9tZUNsaWVu
dC0+Y3JlYXRlUG9wdXAoKTsKKyAgICAgICAgbV9wb3B1cCA9IGNocm9tZUNsaWVudC0+Y3JlYXRl
U2VsZWN0UG9wdXAoKTsKICAgICAgICAgbV9wb3B1cC0+bV9jbGllbnQgPSBtX3BvcHVwQ2xpZW50
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnByaSBiL1dlYktp
dC9xdC9BcGkvaGVhZGVycy5wcmkKaW5kZXggMWE0MjU5Ny4uNDAzOWU3OSAxMDA2NDQKLS0tIGEv
V2ViS2l0L3F0L0FwaS9oZWFkZXJzLnByaQorKysgYi9XZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJp
CkBAIC0xMSw0ICsxMSw2IEBAIFdFQktJVF9BUElfSEVBREVSUyA9ICQkUFdEL3F3ZWJmcmFtZS5o
IFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJwbHVnaW5mYWN0b3J5LmggXAogICAg
ICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYmhpc3RvcnkuaCBcCiAgICAgICAgICAgICAgICAg
ICAgICAkJFBXRC9xd2ViaW5zcGVjdG9yLmggXAotICAgICAgICAgICAgICAgICAgICAgJCRQV0Qv
cXdlYmtpdHZlcnNpb24uaAorICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYmtpdHZlcnNp
b24uaCBcCisgICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2Vic2VsZWN0cG9wdXBkZWxlZ2F0
ZS5oIFwKKyAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJzZWxlY3Rwb3B1cGRlbGVnYXRl
X3AuaApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAppbmRleCAyMTQ3ZWFiLi40ZmI5ODAyIDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykg
MjAwOCwgMjAwOSwgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMg
SW5jLgogICAgIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCiAKQEAgLTE3NDMsNiArMTc0
MywxMSBAQCBRV2ViUGFnZTo6flFXZWJQYWdlKCkKICAgICBkZWxldGUgZDsKIH0KIAordm9pZCBR
V2ViUGFnZTo6c2V0U2VsZWN0UG9wdXBEZWxlZ2F0ZUZhY3RvcnkoUVdlYlNlbGVjdFBvcHVwRGVs
ZWdhdGVGYWN0b3J5KiBmYWN0b3J5KQoreworICAgIGQtPmNocm9tZUNsaWVudC0+c2V0U2VsZWN0
UG9wdXBEZWxlZ2F0ZUZhY3RvcnkoZmFjdG9yeSk7Cit9CisKIC8qIQogICAgIFJldHVybnMgdGhl
IG1haW4gZnJhbWUgb2YgdGhlIHBhZ2UuCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAppbmRleCA0NzY2Y2JkLi41ZjkwZjI2
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKKysrIGIvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDgg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQogICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBT
ZXJ2aWNlcyBJbmMuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC00OSw2ICs0OSw4IEBAIGNsYXNzIFFXZWJQbHVn
aW5GYWN0b3J5OwogY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBRV2ViSGlzdG9yeUl0
ZW07CiAKK2NsYXNzIFFXZWJTZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeTsKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIENocm9tZUNsaWVudFF0OwogICAgIGNsYXNzIEVkaXRvckNs
aWVudFF0OwpAQCAtMjAzLDYgKzIwNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZpZXcoUVdp
ZGdldCAqdmlldyk7CiAgICAgUVdpZGdldCAqdmlldygpIGNvbnN0OwogCisgICAgdm9pZCBzZXRT
ZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeShRV2ViU2VsZWN0UG9wdXBEZWxlZ2F0ZUZhY3Rvcnkq
IGZhY3RvcnkpOworCiAgICAgYm9vbCBpc01vZGlmaWVkKCkgY29uc3Q7CiAjaWZuZGVmIFFUX05P
X1VORE9TVEFDSwogICAgIFFVbmRvU3RhY2sgKnVuZG9TdGFjaygpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L0FwaS9xd2Vic2VsZWN0cG9wdXBkZWxlZ2F0ZS5jcHAgYi9XZWJLaXQvcXQv
QXBpL3F3ZWJzZWxlY3Rwb3B1cGRlbGVnYXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yMjczOWZhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vi
c2VsZWN0cG9wdXBkZWxlZ2F0ZS5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJxd2Vic2VsZWN0cG9wdXBkZWxlZ2F0
ZS5oIgorCisjaW5jbHVkZSAicXdlYnNlbGVjdHBvcHVwZGVsZWdhdGVfcC5oIgorCitRV2ViU2Vs
ZWN0UG9wdXBEZWxlZ2F0ZTo6UVdlYlNlbGVjdFBvcHVwRGVsZWdhdGUoKQorICAgIDogZChuZXcg
UVdlYlNlbGVjdFBvcHVwRGVsZWdhdGVQcml2YXRlKCkpCit7Cit9CisKK1FXZWJTZWxlY3RQb3B1
cERlbGVnYXRlOjp+UVdlYlNlbGVjdFBvcHVwRGVsZWdhdGUoKQoreworICAgIGRlbGV0ZSBkOwor
fQorCit2b2lkIFFXZWJTZWxlY3RQb3B1cERlbGVnYXRlOjpkaWRIaWRlKGJvb2wgYWNjZXB0U3Vn
Z2VzdGlvbnMpCit7CisgICAgUV9BU1NFUlQoZC0+b2JzZXJ2ZXIpOworICAgIGQtPm9ic2VydmVy
LT5kaWRIaWRlKGFjY2VwdFN1Z2dlc3Rpb25zKTsKK30KKwordm9pZCBRV2ViU2VsZWN0UG9wdXBE
ZWxlZ2F0ZTo6c2V0SW5kZXgoaW50IGluZGV4KQoreworICAgIFFfQVNTRVJUKGQtPm9ic2VydmVy
KTsKKyAgICBkLT5vYnNlcnZlci0+c2V0SW5kZXgoaW5kZXgpOworfQorCitRV2lkZ2V0KiBRV2Vi
U2VsZWN0UG9wdXBEZWxlZ2F0ZTo6cGFyZW50V2lkZ2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZC0+cGFyZW50V2lkZ2V0OworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vic2VsZWN0
cG9wdXBkZWxlZ2F0ZS5oIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2VsZWN0cG9wdXBkZWxlZ2F0ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYzIzMmYKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZWxlY3Rwb3B1cGRlbGVnYXRlLmgKQEAgLTAsMCAr
MSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgcXdlYnNlbGVjdHBvcHVwZGVsZWdh
dGVfaAorI2RlZmluZSBxd2Vic2VsZWN0cG9wdXBkZWxlZ2F0ZV9oCisKKyNpbmNsdWRlICJxd2Vi
a2l0Z2xvYmFsLmgiCisjaW5jbHVkZSA8UUxpc3Q+CisjaW5jbHVkZSA8UVJlY3Q+CisjaW5jbHVk
ZSA8UVN0cmluZz4KKyNpbmNsdWRlIDxRV2lkZ2V0PgorCitjbGFzcyBRV2ViU2VsZWN0UG9wdXBE
ZWxlZ2F0ZVByaXZhdGU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFFXZWJQb3B1cFdy
YXBwZXI7Cit9CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJTZWxlY3RQb3B1cERlbGVnYXRl
IHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgSXRlbSB7CisgICAgICAgIGVudW0geyBPcHRpb24sIEdy
b3VwLCBTZXBhcmF0b3IgfSB0eXBlOworICAgICAgICBRU3RyaW5nIHRleHQ7CisgICAgICAgIFFT
dHJpbmcgdG9vbFRpcDsKKyAgICAgICAgYm9vbCBlbmFibGVkOworICAgIH07CisKKyAgICBRV2Vi
U2VsZWN0UG9wdXBEZWxlZ2F0ZSgpOworICAgIHZpcnR1YWwgflFXZWJTZWxlY3RQb3B1cERlbGVn
YXRlKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBRUmVjdCYgZ2VvbWV0cnksIGlu
dCBzZWxlY3RlZEluZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhpZGUoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHBvcHVsYXRlKGNvbnN0IFFMaXN0PEl0ZW0+JiBpdGVtcykgPSAwOworCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBkaWRIaWRlKGJvb2wgYWNjZXB0U3VnZ2VzdGlvbnMpOworICAg
IHZvaWQgc2V0SW5kZXgoaW50IGluZGV4KTsKKyAgICBRV2lkZ2V0KiBwYXJlbnRXaWRnZXQoKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6UVdlYlBvcHVwV3Jh
cHBlcjsKKyAgICBRV2ViU2VsZWN0UG9wdXBEZWxlZ2F0ZVByaXZhdGUqIGQ7Cit9OworCitjbGFz
cyBRV2ViU2VsZWN0UG9wdXBEZWxlZ2F0ZUZhY3RvcnkgeworcHVibGljOgorICAgIHZpcnR1YWwg
UVdlYlNlbGVjdFBvcHVwRGVsZWdhdGUqIGNyZWF0ZSgpID0gMDsKK307CisKKworCisjZW5kaWYg
Ly8gcXdlYnNlbGVjdHBvcHVwZGVsZWdhdGVfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9x
d2Vic2VsZWN0cG9wdXBkZWxlZ2F0ZV9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZWxlY3Rwb3B1
cGRlbGVnYXRlX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2JjMDQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2VsZWN0cG9wdXBkZWxlZ2F0
ZV9wLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgcXdlYnNl
bGVjdHBvcHVwZGVsZWdhdGVfcF9oCisjZGVmaW5lIHF3ZWJzZWxlY3Rwb3B1cGRlbGVnYXRlX3Bf
aAorCitjbGFzcyBRV2ViU2VsZWN0UG9wdXBEZWxlZ2F0ZU9ic2VydmVyIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkSGlkZShib29sIGFjY2VwdFN1Z2dlc3Rpb25zKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldEluZGV4KGludCBpbmRleCkgPSAwOworfTsKKworY2xhc3MgUVdlYlNl
bGVjdFBvcHVwRGVsZWdhdGVQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBRV2ViU2VsZWN0UG9wdXBE
ZWxlZ2F0ZU9ic2VydmVyKiBvYnNlcnZlcjsKKyAgICBRV2lkZ2V0KiBwYXJlbnRXaWRnZXQ7CisK
KyAgICBRV2ViU2VsZWN0UG9wdXBEZWxlZ2F0ZVByaXZhdGUoKSA6IG9ic2VydmVyKDApLCBwYXJl
bnRXaWRnZXQoKSB7fQorfTsKKworCisjZW5kaWYgLy8gcXdlYnNlbGVjdHBvcHVwZGVsZWdhdGVf
cF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxv
ZwppbmRleCBjMzAzYjQzLi42ZDAyN2ZjIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMC0wMS0xNSAg
THVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEN1c3RvbSBzZWxlY3Qg
cG9wdXBzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM0MTgKKworICAgICAgICBTdXBwb3J0IGZvciBjb21ib2JveCBwb3B1cCBjdXN0b21pemF0aW9u
cy4KKworICAgICAgICBDb21ib2JveCBwb3B1cCBjdXN0b21pemF0aW9uIGNhbiBiZSBtYWRlIHBy
b3ZpZGluZyBhbiBpbnN0YW5jZSBvZgorICAgICAgICBRV2ViU2VsZWN0UG9wdXBEZWxlZ2F0ZUZh
Y3RvcnkgdG8gUVdlYlBhZ2UuIFRoZSBmYWN0b3J5IHdpbGwgYmUgdXNlZCB0byBjcmVhdGUKKyAg
ICAgICAgUVdlYlNlbGVjdFBvcHVwRGVsZWdhdGUgb2JqZWN0cyB3aGVuIG5lZWRlZC4gUVdlYlNl
bGVjdFBvcHVwRGVsZWdhdGUgY2xhc3MgaXMgdGhlCisgICAgICAgIGJhc2UgY2xhc3MgZm9yIGN1
c3RvbSBjb21ib2JveCBwb3B1cHMuCisKKyAgICAgICAgUVdlYlNlbGVjdFBvcHVwRGVsZWdhdGVG
YWN0b3J5IGluaGVyaXRlZCBjbGFzc2VzIG11c3QgaW1wbGVtZW50IG1ldGhvZCBjcmVhdGUgYW5k
CisgICAgICAgIHJldHVybiBhbiBvYmplY3Qgb2YgY2xhc3MgUVdlYlNlbGVjdFBvcHVwRGVsZWdh
dGUuCisKKyAgICAgICAgKiBBcGkvaGVhZGVycy5wcmk6CisgICAgICAgICogQXBpL3F3ZWJwYWdl
LmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRTZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeSk6
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6UVdl
YlBvcHVwV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjp+UVdl
YlBvcHVwV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpzaG93
KToKKyAgICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OmhpZGUpOgorICAgICAgICAo
V2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UVdlYlBvcHVwV3JhcHBlcjo6c2V0UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1
cFdyYXBwZXI6OmdldEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6
OmRpZEhpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6c2V0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OkNocm9tZUNsaWVudFF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzZXRTZWxlY3RQb3B1cERlbGVnYXRlRmFj
dG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlU2VsZWN0UG9w
dXApOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyk6CisKIDIwMTAtMDEtMDggIEx1aXogQWdvc3Rp
bmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmNwcAppbmRleCBmNjJiYzg2Li44ZTI4OGViIDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKQEAgLTEsNCArMSw1IEBACiAvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCkBAIC00NSw2ICs0Niw4IEBACiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKICNp
bmNsdWRlICJxd2VicGFnZV9wLmgiCiAjaW5jbHVkZSAicXdlYmZyYW1lX3AuaCIKKyNpbmNsdWRl
ICJxd2Vic2VsZWN0cG9wdXBkZWxlZ2F0ZS5oIgorI2luY2x1ZGUgInF3ZWJzZWxlY3Rwb3B1cGRl
bGVnYXRlX3AuaCIKICNpbmNsdWRlICJxd2Vic2VjdXJpdHlvcmlnaW4uaCIKICNpbmNsdWRlICJx
d2Vic2VjdXJpdHlvcmlnaW5fcC5oIgogI2luY2x1ZGUgInF3ZWJ2aWV3LmgiCkBAIC01Niw4ICs1
OSwxMDAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIHsKIAogCitjbGFzcyBRV2ViUG9wdXBXcmFwcGVy
IDogcHVibGljIFF0QWJzdHJhY3RXZWJQb3B1cCwgcHJpdmF0ZSBRV2ViU2VsZWN0UG9wdXBEZWxl
Z2F0ZU9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBRV2ViUG9wdXBXcmFwcGVyKFFXZWJTZWxlY3RQ
b3B1cERlbGVnYXRlKiBwb3B1cCk7CisgICAgflFXZWJQb3B1cFdyYXBwZXIoKTsKKworcHVibGlj
OgorICAgIHZpcnR1YWwgdm9pZCBzaG93KGNvbnN0IFFSZWN0JiBnZW9tZXRyeSwgaW50IHNlbGVj
dGVkSW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7CisgICAgdmlydHVhbCB2b2lkIHBv
cHVsYXRlKGNvbnN0IFFGb250JiBmb250LCBjb25zdCBRTGlzdDxJdGVtPiYgaXRlbXMpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoUVdpZGdldCogcGFyZW50KTsKKworcHJpdmF0ZToKKyAg
ICBRV2ViU2VsZWN0UG9wdXBEZWxlZ2F0ZSogbV9wb3B1cDsKKworICAgIFFMaXN0PFFXZWJTZWxl
Y3RQb3B1cERlbGVnYXRlOjpJdGVtPiBnZXRJdGVtcyhjb25zdCBRTGlzdDxJdGVtPiYgaXRlbXMp
OworCitwcml2YXRlOgorICAgIHZvaWQgZGlkSGlkZShib29sIGFjY2VwdFN1Z2dlc3Rpb25zKTsK
KyAgICB2b2lkIHNldEluZGV4KGludCBpbmRleCk7Cit9OworCitRV2ViUG9wdXBXcmFwcGVyOjpR
V2ViUG9wdXBXcmFwcGVyKFFXZWJTZWxlY3RQb3B1cERlbGVnYXRlKiBwb3B1cCkKKyAgICA6IG1f
cG9wdXAocG9wdXApCit7CisgICAgUV9BU1NFUlQobV9wb3B1cCk7CisgICAgbV9wb3B1cC0+ZC0+
b2JzZXJ2ZXIgPSB0aGlzOworfQorCitRV2ViUG9wdXBXcmFwcGVyOjp+UVdlYlBvcHVwV3JhcHBl
cigpCit7CisgICAgZGVsZXRlIG1fcG9wdXA7Cit9CisKK3ZvaWQgUVdlYlBvcHVwV3JhcHBlcjo6
c2hvdyhjb25zdCBRUmVjdCYgZ2VvbWV0cnksIGludCBzZWxlY3RlZEluZGV4KQoreworICAgIG1f
cG9wdXAtPnNob3coZ2VvbWV0cnksIHNlbGVjdGVkSW5kZXgpOworfQorCit2b2lkIFFXZWJQb3B1
cFdyYXBwZXI6OmhpZGUoKQoreworICAgIG1fcG9wdXAtPmhpZGUoKTsKK30KKwordm9pZCBRV2Vi
UG9wdXBXcmFwcGVyOjpwb3B1bGF0ZShjb25zdCBRRm9udCYgZm9udCwgY29uc3QgUUxpc3Q8SXRl
bT4mIGl0ZW1zKQoreworICAgIFFfVU5VU0VEKGZvbnQpOworICAgIG1fcG9wdXAtPnBvcHVsYXRl
KGdldEl0ZW1zKGl0ZW1zKSk7Cit9CisKK3ZvaWQgUVdlYlBvcHVwV3JhcHBlcjo6c2V0UGFyZW50
KFFXaWRnZXQqIHBhcmVudCkKK3sKKyAgICBtX3BvcHVwLT5kLT5wYXJlbnRXaWRnZXQgPSBwYXJl
bnQ7Cit9CisKK1FMaXN0PFFXZWJTZWxlY3RQb3B1cERlbGVnYXRlOjpJdGVtPiBRV2ViUG9wdXBX
cmFwcGVyOjpnZXRJdGVtcyhjb25zdCBRTGlzdDxJdGVtPiYgaXRlbXMpCit7CisgICAgUUxpc3Q8
UVdlYlNlbGVjdFBvcHVwRGVsZWdhdGU6Okl0ZW0+IHJlc3VsdDsKKworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUVdlYlNlbGVjdFBvcHVwRGVs
ZWdhdGU6Okl0ZW0gaXRlbTsKKworICAgICAgICBzd2l0Y2ggKGl0ZW1zW2ldLnR5cGUpIHsKKyAg
ICAgICAgY2FzZSBJdGVtOjpPcHRpb246CisgICAgICAgICAgICBpdGVtLnR5cGUgPSBRV2ViU2Vs
ZWN0UG9wdXBEZWxlZ2F0ZTo6SXRlbTo6T3B0aW9uOworICAgICAgICBjYXNlIEl0ZW06OlNlcGFy
YXRvcjoKKyAgICAgICAgICAgIGl0ZW0udHlwZSA9IFFXZWJTZWxlY3RQb3B1cERlbGVnYXRlOjpJ
dGVtOjpTZXBhcmF0b3I7CisgICAgICAgIGNhc2UgSXRlbTo6R3JvdXA6CisgICAgICAgICAgICBp
dGVtLnR5cGUgPSBRV2ViU2VsZWN0UG9wdXBEZWxlZ2F0ZTo6SXRlbTo6R3JvdXA7CisgICAgICAg
IH0KKworICAgICAgICBpdGVtLnRleHQgPSBpdGVtc1tpXS50ZXh0OworICAgICAgICBpdGVtLnRv
b2xUaXAgPSBpdGVtc1tpXS50b29sVGlwOworICAgICAgICBpdGVtLmVuYWJsZWQgPSBpdGVtc1tp
XS5lbmFibGVkOworCisgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbSk7CisgICAgfQorCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBRV2ViUG9wdXBXcmFwcGVyOjpkaWRIaWRlKGJvb2wg
YWNjZXB0U3VnZ2VzdGlvbnMpCit7CisgICAgcG9wdXBEaWRIaWRlKGFjY2VwdFN1Z2dlc3Rpb25z
KTsKK30KKwordm9pZCBRV2ViUG9wdXBXcmFwcGVyOjpzZXRJbmRleChpbnQgaW5kZXgpCit7Cisg
ICAgdmFsdWVDaGFuZ2VkKGluZGV4KTsKK30KKworCiBDaHJvbWVDbGllbnRRdDo6Q2hyb21lQ2xp
ZW50UXQoUVdlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICAs
IG1fc2VsZWN0UG9wdXBGYWN0b3J5KDApCiB7CiAgICAgdG9vbEJhcnNWaXNpYmxlID0gc3RhdHVz
QmFyVmlzaWJsZSA9IG1lbnVCYXJWaXNpYmxlID0gdHJ1ZTsKIH0KQEAgLTY3LDYgKzE2MiwxMSBA
QCBDaHJvbWVDbGllbnRRdDo6fkNocm9tZUNsaWVudFF0KCkKIAogfQogCit2b2lkIENocm9tZUNs
aWVudFF0OjpzZXRTZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeShRV2ViU2VsZWN0UG9wdXBEZWxl
Z2F0ZUZhY3RvcnkqIHBvcHVwRmFjdG9yeSkKK3sKKyAgICBtX3NlbGVjdFBvcHVwRmFjdG9yeSA9
IHBvcHVwRmFjdG9yeTsKK30KKwogdm9pZCBDaHJvbWVDbGllbnRRdDo6c2V0V2luZG93UmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCkBAIC00NjYsOCAr
NTY2LDEwIEBAIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Np
b25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi1RdEFic3RyYWN0V2ViUG9wdXAqIENocm9tZUNsaWVudFF0OjpjcmVhdGVQb3B1cCgpCitR
dEFic3RyYWN0V2ViUG9wdXAqIENocm9tZUNsaWVudFF0OjpjcmVhdGVTZWxlY3RQb3B1cCgpCiB7
CisgICAgaWYgKG1fc2VsZWN0UG9wdXBGYWN0b3J5KQorICAgICAgICByZXR1cm4gbmV3IFFXZWJQ
b3B1cFdyYXBwZXIobV9zZWxlY3RQb3B1cEZhY3RvcnktPmNyZWF0ZSgpKTsKICAgICByZXR1cm4g
bmV3IFF0RmFsbGJhY2tXZWJQb3B1cDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmggYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuaAppbmRleCAxMDZkNGNjLi40MzI3NWIyIDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaApAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgogICoKICAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0zNSw2ICszNiw3IEBACiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKIAogY2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBRV2ViU2VsZWN0UG9wdXBEZWxl
Z2F0ZUZhY3Rvcnk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTM1LDcgKzEzNyw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xv
Y2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKTsKIAotICAgICAg
ICBRdEFic3RyYWN0V2ViUG9wdXAqIGNyZWF0ZVBvcHVwKCk7CisgICAgICAgIFF0QWJzdHJhY3RX
ZWJQb3B1cCogY3JlYXRlU2VsZWN0UG9wdXAoKTsKKworICAgICAgICB2b2lkIHNldFNlbGVjdFBv
cHVwRGVsZWdhdGVGYWN0b3J5KFFXZWJTZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeSogcG9wdXBG
YWN0b3J5KTsKIAogICAgICAgICBRV2ViUGFnZSogbV93ZWJQYWdlOwogICAgICAgICBXZWJDb3Jl
OjpLVVJMIGxhc3RIb3ZlclVSTDsKQEAgLTE0NSw2ICsxNDksOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgdG9vbEJhcnNWaXNpYmxlOwogICAgICAgICBib29sIHN0YXR1c0Jh
clZpc2libGU7CiAgICAgICAgIGJvb2wgbWVudUJhclZpc2libGU7CisKKyAgICAgICAgUVdlYlNl
bGVjdFBvcHVwRGVsZWdhdGVGYWN0b3J5KiBtX3NlbGVjdFBvcHVwRmFjdG9yeTsKICAgICB9Owog
fQogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBv
cHVwLmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3Bw
CmluZGV4IDM0NGQ1OGEuLmYwZTc2ZTYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwCkBAIC00NiwxNCArNDYsNiBAQCB2b2lkIFF0RmFsbGJh
Y2tXZWJQb3B1cDo6c2hvdyhjb25zdCBRUmVjdCYgZ2VvbWV0cnksIGludCBzZWxlY3RlZEluZGV4
KQogewogICAgIHNldEN1cnJlbnRJbmRleChzZWxlY3RlZEluZGV4KTsKIAotICAgIC8qCi0gICAg
UVdpZGdldCogcGFyZW50ID0gMDsKLSAgICBpZiAoY2xpZW50KCktPmhvc3RXaW5kb3coKSAmJiBj
bGllbnQoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkKLSAgICAgICBwYXJl
bnQgPSBjbGllbnQoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+b3duZXJX
aWRnZXQoKTsKLQotICAgIHNldFBhcmVudChwYXJlbnQpOwotICAgICovCi0KICAgICBzZXRHZW9t
ZXRyeShRUmVjdChnZW9tZXRyeS5sZWZ0KCksIGdlb21ldHJ5LnRvcCgpLCBnZW9tZXRyeS53aWR0
aCgpLCBzaXplSGludCgpLmhlaWdodCgpKSk7CiAKICAgICBRTW91c2VFdmVudCBldmVudChRRXZl
bnQ6Ok1vdXNlQnV0dG9uUHJlc3MsIFFDdXJzb3I6OnBvcygpLCBRdDo6TGVmdEJ1dHRvbiwKLS0g
CjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46845</attachid>
            <date>2010-01-18 14:03:16 -0800</date>
            <delta_ts>2010-01-18 14:52:41 -0800</delta_ts>
            <desc>Custom popups and popup factories.</desc>
            <filename>0001-Qt-Custom-select-popups.patch</filename>
            <type>text/plain</type>
            <size>31090</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAyYzc2ZTExOWQ5NWZiOGY1NGMwNzUxZjgxODEyNzM3N2JhY2Q1ZmM2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IE1vbiwgMTggSmFuIDIwMTAgMTg6NTA6MjEgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIEN1c3RvbSBzZWxlY3QgcG9wdXBzLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzNDE4CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCldlYkNv
cmU6CgpjbGFzcyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cCBhZGRlZCB0byBRdCBBUEkuCmNsYXNz
ZXMgV2ViQ29yZTo6UG9wdXBNZW51IGFuZCBXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXAgaGF2
ZSBjaGFuZ2VkIHRvCnN1cHBvcnQgdGhlIG5ldyBBUEkuCgoqIFdlYkNvcmUucHJvOgoqIHBsYXRm
b3JtL3F0L1BvcHVwTWVudVF0LmNwcDoKKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CiogcGxh
dGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcDoKKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQ
b3B1cDo6UXRBYnN0cmFjdFdlYlBvcHVwKToKKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6
aXRlbVR5cGUpOgoqIHBsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5oOgooV2ViQ29yZTo6
UXRBYnN0cmFjdFdlYlBvcHVwOjopOgooV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjppdGVt
VGV4dCk6CihXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6Oml0ZW1Ub29sVGlwKToKKFdlYkNv
cmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6aXRlbUlzRW5hYmxlZCk6CihXZWJDb3JlOjpRdEFic3Ry
YWN0V2ViUG9wdXA6Oml0ZW1Db3VudCk6CihXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6OnZp
ZXcpOgooV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpnZW9tZXRyeSk6CihXZWJDb3JlOjpR
dEFic3RyYWN0V2ViUG9wdXA6OmN1cnJlbnRJbmRleCk6CihXZWJDb3JlOjpRdEFic3RyYWN0V2Vi
UG9wdXA6OmZvbnQpOgoKV2ViS2l0L3F0OgoKU3VwcG9ydCBmb3IgY29tYm9ib3ggcG9wdXAgY3Vz
dG9taXphdGlvbnMuCgpDb21ib2JveCBwb3B1cCBjdXN0b21pemF0aW9uIGNhbiBiZSBtYWRlIHBy
b3ZpZGluZyBhbiBpbnN0YW5jZSBvZgpRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cEZhY3RvcnkgdG8g
UVdlYlBhZ2UuIFRoZSBmYWN0b3J5IHdpbGwgYmUgdXNlZCB0byBjcmVhdGUKUVdlYkRlbGVnYXRl
U2VsZWN0UG9wdXAgb2JqZWN0cyB3aGVuIG5lZWRlZC4gUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAg
Y2xhc3MgaXMgdGhlCmJhc2UgY2xhc3MgZm9yIGN1c3RvbSBjb21ib2JveCBwb3B1cHMuCgpRV2Vi
RGVsZWdhdGVTZWxlY3RQb3B1cEZhY3RvcnkgaW5oZXJpdGVkIGNsYXNzZXMgbXVzdCBpbXBsZW1l
bnQgbWV0aG9kIGNyZWF0ZSBhbmQKcmV0dXJuIGFuIG9iamVjdCBvZiBjbGFzcyBRV2ViRGVsZWdh
dGVTZWxlY3RQb3B1cC4KCiogQXBpL2hlYWRlcnMucHJpOgoqIEFwaS9xd2ViZGVsZWdhdGVzZWxl
Y3Rwb3B1cC5jcHA6IEFkZGVkLgooUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6OlFXZWJEZWxlZ2F0
ZVNlbGVjdFBvcHVwKToKKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjp+UVdlYkRlbGVnYXRlU2Vs
ZWN0UG9wdXApOgooUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6OmluZm9ybUNsb3NlZCk6CihRV2Vi
RGVsZWdhdGVTZWxlY3RQb3B1cDo6c2V0Q3VycmVudEluZGV4KToKKFFXZWJEZWxlZ2F0ZVNlbGVj
dFBvcHVwOjp2aWV3KToKKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjppdGVtVHlwZSk6CihRV2Vi
RGVsZWdhdGVTZWxlY3RQb3B1cDo6aXRlbVRleHQpOgooUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6
Oml0ZW1Ub29sVGlwKToKKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjppdGVtSXNFbmFibGVkKToK
KiBBcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAuaDogQWRkZWQuCiogQXBpL3F3ZWJkZWxlZ2F0
ZXNlbGVjdHBvcHVwX3AuaDogQWRkZWQuCihRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cFByaXZhdGU6
OlFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwUHJpdmF0ZSk6CiogQXBpL3F3ZWJwYWdlLmNwcDoKKFFX
ZWJQYWdlOjpzZXRTZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeSk6CiogQXBpL3F3ZWJwYWdlLmg6
CiogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgooV2ViQ29yZTo6UVdlYlBvcHVw
V3JhcHBlcjo6UVdlYlBvcHVwV3JhcHBlcik6CihXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjp+
UVdlYlBvcHVwV3JhcHBlcik6CihXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpzaG93KToKKFdl
YkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OmhpZGUpOgooV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6
OkNocm9tZUNsaWVudFF0KToKKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzZXRTZWxlY3RQb3B1
cERlbGVnYXRlRmFjdG9yeSk6CihXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlU2VsZWN0
UG9wdXApOgoqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CiogV2ViQ29yZVN1cHBv
cnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcDoKKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cENv
bWJvOjpRdEZhbGxiYWNrV2ViUG9wdXBDb21ibyk6CihXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9w
dXBDb21ibzo6c2hvd1BvcHVwKToKKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cENvbWJvOjpo
aWRlUG9wdXApOgooV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpRdEZhbGxiYWNrV2ViUG9w
dXApOgooV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjp+UXRGYWxsYmFja1dlYlBvcHVwKToK
KFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyk6CihXZWJDb3JlOjpRdEZhbGxiYWNr
V2ViUG9wdXA6OmhpZGUpOgooV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpwb3B1bGF0ZSk6
CiogV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmg6Ci0tLQogV2ViQ29yZS9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI4ICsrKysrCiBXZWJDb3Jl
L1dlYkNvcmUucHJvICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5jcHAgICAgICAgICAgICAgfCAgIDQ0ICsrLS0tLS0t
CiBXZWJDb3JlL3BsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5jcHAgICAgICB8ICAgMTEg
KysKIFdlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmggICAgICAgIHwgICAz
MSArKysrLS0KIFdlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgNCArLQogV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5jcHAgICAg
ICAgfCAgIDc5ICsrKysrKysrKysrKysrKwogV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxl
Y3Rwb3B1cC5oICAgICAgICAgfCAgIDcwICsrKysrKysrKysrKysKIFdlYktpdC9xdC9BcGkvcXdl
YmRlbGVnYXRlc2VsZWN0cG9wdXBfcC5oICAgICAgIHwgICAzNyArKysrKysrCiBXZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKy0KIFdlYktpdC9x
dC9BcGkvcXdlYnBhZ2UuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogV2ViS2l0
L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDU0ICsrKysrKysr
KysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAgICAgIHwgICA0
NyArKysrKysrKystCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaCAg
ICAgICB8ICAgIDggKystCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBv
cHVwLmNwcCB8ICAxMjAgKysrKysrKysrKysrLS0tLS0tLS0tLS0KIFdlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaCAgIHwgICAyMSArKystCiAxNiBmaWxlcyBjaGFu
Z2VkLCA0NTcgaW5zZXJ0aW9ucygrKSwgMTExIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IFdlYktpdC9xdC9BcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAuY3BwCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9wLmgKCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU0
MWI3NGEuLjU5ZmE0YWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDEtMTggIEx1aXogQWdvc3Rpbmkg
IDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDdXN0b20gc2VsZWN0IHBvcHVwcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNDE4CisKKyAgICAg
ICAgY2xhc3MgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAgYWRkZWQgdG8gUXQgQVBJLgorICAgICAg
ICBjbGFzc2VzIFdlYkNvcmU6OlBvcHVwTWVudSBhbmQgV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBv
cHVwIGhhdmUgY2hhbmdlZCB0byAKKyAgICAgICAgc3VwcG9ydCB0aGUgbmV3IEFQSS4KKworICAg
ICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1BvcHVwTWVudVF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAgICogcGxhdGZv
cm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF0QWJzdHJh
Y3RXZWJQb3B1cDo6UXRBYnN0cmFjdFdlYlBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlF0QWJz
dHJhY3RXZWJQb3B1cDo6aXRlbVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1F0QWJzdHJh
Y3RXZWJQb3B1cC5oOgorICAgICAgICAoV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjopOgor
ICAgICAgICAoV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjppdGVtVGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6Oml0ZW1Ub29sVGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6aXRlbUlzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6Oml0ZW1Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpR
dEFic3RyYWN0V2ViUG9wdXA6OnZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6UXRBYnN0cmFjdFdl
YlBvcHVwOjpnZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6
OmN1cnJlbnRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6OmZv
bnQpOgorCiAyMDEwLTAxLTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZC4gIEZpeCBuYW1lc3BhY2UgaW5kZW50IGZvciBTZWN1cml0eU9yaWdp
bi5oLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5w
cm8KaW5kZXggNmYwMzgzOC4uMDdiZDZmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBy
bworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yNDcyLDYgKzI0NzIsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQu
Y3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAgXAogICAgIC4uL1dlYktp
dC9xdC9BcGkvcWdyYXBoaWNzd2Vidmlldy5jcHAgXAorICAgIC4uL1dlYktpdC9xdC9BcGkvcXdl
YmRlbGVnYXRlc2VsZWN0cG9wdXAuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2Vidmlldy5jcHAgXAogICAgIC4uL1dlYktp
dC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
cXQvUG9wdXBNZW51UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5jcHAK
aW5kZXggNjNlMTU2NS4uYWU0ZmMyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Q
b3B1cE1lbnVRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5jcHAK
QEAgLTQ2LDQ3ICs0NiwyNSBAQCBQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQogICAgIGRlbGV0ZSBt
X3BvcHVwOwogfQogCi1zdGF0aWMgUUxpc3Q8UXRBYnN0cmFjdFdlYlBvcHVwOjpJdGVtPiBnZXRJ
dGVtcyhQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLXsKLSAgICBRTGlzdDxRdEFic3RyYWN0V2Vi
UG9wdXA6Okl0ZW0+IHJlc3VsdDsKLQotICAgIGludCBzaXplID0gY2xpZW50LT5saXN0U2l6ZSgp
OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIFF0QWJzdHJh
Y3RXZWJQb3B1cDo6SXRlbSBpdGVtOwotCi0gICAgICAgIGlmIChjbGllbnQtPml0ZW1Jc1NlcGFy
YXRvcihpKSkKLSAgICAgICAgICAgIGl0ZW0udHlwZSA9IFF0QWJzdHJhY3RXZWJQb3B1cDo6SXRl
bTo6U2VwYXJhdG9yOwotICAgICAgICBlbHNlIGlmIChjbGllbnQtPml0ZW1Jc0xhYmVsKGkpKQot
ICAgICAgICAgICAgaXRlbS50eXBlID0gUXRBYnN0cmFjdFdlYlBvcHVwOjpJdGVtOjpHcm91cDsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgaXRlbS50eXBlID0gUXRBYnN0cmFjdFdlYlBvcHVw
OjpJdGVtOjpPcHRpb247Ci0KLSAgICAgICAgaXRlbS50ZXh0ID0gY2xpZW50LT5pdGVtVGV4dChp
KTsKLSAgICAgICAgaXRlbS50b29sVGlwID0gY2xpZW50LT5pdGVtVG9vbFRpcChpKTsKLSAgICAg
ICAgaXRlbS5lbmFibGVkID0gY2xpZW50LT5pdGVtSXNFbmFibGVkKGkpOwotICAgICAgICByZXN1
bHQuYXBwZW5kKGl0ZW0pOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIFBv
cHVwTWVudTo6c2hvdyhjb25zdCBJbnRSZWN0JiByZWN0LCBGcmFtZVZpZXcqIHZpZXcsIGludCBp
bmRleCkKIHsKICAgICBDaHJvbWVDbGllbnRRdCogY2hyb21lQ2xpZW50ID0gc3RhdGljX2Nhc3Q8
Q2hyb21lQ2xpZW50UXQqPigKICAgICAgICAgdmlldy0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUo
KS0+Y2xpZW50KCkpOwogICAgIEFTU0VSVChjaHJvbWVDbGllbnQpOwogCi0gICAgaWYgKCFtX3Bv
cHVwKSB7Ci0gICAgICAgIG1fcG9wdXAgPSBjaHJvbWVDbGllbnQtPmNyZWF0ZVBvcHVwKCk7Ci0g
ICAgICAgIG1fcG9wdXAtPm1fY2xpZW50ID0gbV9wb3B1cENsaWVudDsKLSAgICB9CisgICAgaWYg
KCFtX3BvcHVwKQorICAgICAgICBtX3BvcHVwID0gY2hyb21lQ2xpZW50LT5jcmVhdGVTZWxlY3RQ
b3B1cCgpOworCisgICAgbV9wb3B1cC0+bV9jbGllbnQgPSBtX3BvcHVwQ2xpZW50OworICAgIG1f
cG9wdXAtPm1fY3VycmVudEluZGV4ID0gaW5kZXg7CisgICAgbV9wb3B1cC0+bV92aWV3ID0gY2hy
b21lQ2xpZW50LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+b3duZXJXaWRnZXQoKTsKKworICAgIFFS
ZWN0IGdlb21ldHJ5KHJlY3QpOworICAgIGdlb21ldHJ5Lm1vdmVUb3BMZWZ0KHZpZXctPmNvbnRl
bnRzVG9XaW5kb3cocmVjdC50b3BMZWZ0KCkpKTsKKyAgICBtX3BvcHVwLT5tX2dlb21ldHJ5ID0g
Z2VvbWV0cnk7CiAKLSAgICBtX3BvcHVwLT5zZXRQYXJlbnQoY2hyb21lQ2xpZW50LT5wbGF0Zm9y
bVBhZ2VDbGllbnQoKS0+b3duZXJXaWRnZXQoKSk7Ci0gICAgbV9wb3B1cC0+cG9wdWxhdGUobV9w
b3B1cENsaWVudC0+bWVudVN0eWxlKCkuZm9udCgpLmZvbnQoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICBnZXRJdGVtcyhtX3BvcHVwQ2xpZW50KSk7CisgICAgbV9wb3B1cC0+c2hvdygpOwogCi0g
ICAgUVJlY3QgYm91bmRzID0gcmVjdDsKLSAgICBib3VuZHMubW92ZVRvcExlZnQodmlldy0+Y29u
dGVudHNUb1dpbmRvdyhyZWN0LnRvcExlZnQoKSkpOwotICAgIG1fcG9wdXAtPnNob3coYm91bmRz
LCBpbmRleCk7CiB9CiAKIHZvaWQgUG9wdXBNZW51OjpoaWRlKCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
cXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcAppbmRleCA3NWQ4ZmI1Li5lZjdjYzJjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuY3BwCkBAIC0yNyw2ICsyNyw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUXRBYnN0cmFjdFdlYlBvcHVwOjpRdEFic3RyYWN0V2Vi
UG9wdXAoKQogICAgIDogbV9jbGllbnQoMCkKKyAgICAsIG1fdmlldygwKQorICAgICwgbV9jdXJy
ZW50SW5kZXgoLTEpCiB7CiB9CiAKQEAgLTQ2LDQgKzQ4LDEzIEBAIHZvaWQgUXRBYnN0cmFjdFdl
YlBvcHVwOjp2YWx1ZUNoYW5nZWQoaW50IGluZGV4KQogICAgIG1fY2xpZW50LT52YWx1ZUNoYW5n
ZWQoaW5kZXgpOwogfQogCitRdEFic3RyYWN0V2ViUG9wdXA6Okl0ZW1UeXBlIFF0QWJzdHJhY3RX
ZWJQb3B1cDo6aXRlbVR5cGUoaW50IGlkeCkgY29uc3QKK3sKKyAgICBpZiAobV9jbGllbnQtPml0
ZW1Jc1NlcGFyYXRvcihpZHgpKQorICAgICAgICByZXR1cm4gU2VwYXJhdG9yOworICAgIGlmICht
X2NsaWVudC0+aXRlbUlzTGFiZWwoaWR4KSkKKyAgICAgICAgcmV0dXJuIEdyb3VwOworICAgIHJl
dHVybiBPcHRpb247Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5oCmluZGV4IGM4OTA0NDEuLjFjOGYwNWIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuaApAQCAtMjAsMzggKzIwLDQ3IEBACiAj
aWZuZGVmIFF0QWJzdHJhY3RXZWJQb3B1cF9oCiAjZGVmaW5lIFF0QWJzdHJhY3RXZWJQb3B1cF9o
CiAKKyNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKKwogI2luY2x1ZGUgPFFGb250PgogI2lu
Y2x1ZGUgPFFMaXN0PgogI2luY2x1ZGUgPFFSZWN0PgorI2luY2x1ZGUgPFFXaWRnZXQ+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUG9wdXBNZW51Q2xpZW50OwogCiBjbGFzcyBRdEFi
c3RyYWN0V2ViUG9wdXAgewogcHVibGljOgotICAgIHN0cnVjdCBJdGVtIHsKLSAgICAgICAgZW51
bSB7IE9wdGlvbiwgR3JvdXAsIFNlcGFyYXRvciB9IHR5cGU7Ci0gICAgICAgIFFTdHJpbmcgdGV4
dDsKLSAgICAgICAgUVN0cmluZyB0b29sVGlwOwotICAgICAgICBib29sIGVuYWJsZWQ7Ci0gICAg
fTsKKyAgICBlbnVtIEl0ZW1UeXBlIHsgT3B0aW9uLCBHcm91cCwgU2VwYXJhdG9yIH07CisKKyAg
ICBJdGVtVHlwZSBpdGVtVHlwZShpbnQpIGNvbnN0OworICAgIFFTdHJpbmcgaXRlbVRleHQoaW50
IGlkeCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQtPml0ZW1UZXh0KGlkeCk7IH0KKyAgICBRU3Ry
aW5nIGl0ZW1Ub29sVGlwKGludCBpZHgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LT5pdGVtVG9v
bFRpcChpZHgpOyB9CisgICAgYm9vbCBpdGVtSXNFbmFibGVkKGludCBpZHgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xpZW50LT5pdGVtSXNFbmFibGVkKGlkeCk7IH0KKyAgICBpbnQgaXRlbUNvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jbGllbnQtPmxpc3RTaXplKCk7IH0KKworICAgIFFXaWRnZXQqIHZp
ZXcoKSB7IHJldHVybiBtX3ZpZXc7IH0KKyAgICBRUmVjdCBnZW9tZXRyeSgpIGNvbnN0IHsgcmV0
dXJuIG1fZ2VvbWV0cnk7IH0KKyAgICBpbnQgY3VycmVudEluZGV4KCkgY29uc3QgeyByZXR1cm4g
bV9jdXJyZW50SW5kZXg7IH0KIAogICAgIFF0QWJzdHJhY3RXZWJQb3B1cCgpOwogICAgIHZpcnR1
YWwgflF0QWJzdHJhY3RXZWJQb3B1cCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHNob3coY29uc3Qg
UVJlY3QmIGdlb21ldHJ5LCBpbnQgc2VsZWN0ZWRJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzaG93KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlKCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBwb3B1bGF0ZShjb25zdCBRRm9udCYgZm9udCwgY29uc3QgUUxpc3Q8SXRlbT4mIGl0ZW1z
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChRV2lkZ2V0KiBwYXJlbnQpID0gMDsK
IAotcHJvdGVjdGVkOgogICAgIHZvaWQgcG9wdXBEaWRIaWRlKGJvb2wgYWNjZXB0U3VnZ2VzdGlv
bnMpOwogICAgIHZvaWQgdmFsdWVDaGFuZ2VkKGludCBpbmRleCk7CiAKKyAgICBRRm9udCBmb250
KCkgeyByZXR1cm4gbV9jbGllbnQtPm1lbnVTdHlsZSgpLmZvbnQoKS5mb250KCk7IH0KKwogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgUG9wdXBNZW51OwogICAgIFBvcHVwTWVudUNsaWVudCog
bV9jbGllbnQ7CisgICAgUVdpZGdldCogbV92aWV3OworICAgIGludCBtX2N1cnJlbnRJbmRleDsK
KyAgICBRUmVjdCBtX2dlb21ldHJ5OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0Fw
aS9oZWFkZXJzLnByaSBiL1dlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkKaW5kZXggMWE0MjU5Ny4u
M2JkMzdjNyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnByaQorKysgYi9XZWJL
aXQvcXQvQXBpL2hlYWRlcnMucHJpCkBAIC0xMSw0ICsxMSw2IEBAIFdFQktJVF9BUElfSEVBREVS
UyA9ICQkUFdEL3F3ZWJmcmFtZS5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJw
bHVnaW5mYWN0b3J5LmggXAogICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYmhpc3Rvcnku
aCBcCiAgICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2ViaW5zcGVjdG9yLmggXAotICAgICAg
ICAgICAgICAgICAgICAgJCRQV0QvcXdlYmtpdHZlcnNpb24uaAorICAgICAgICAgICAgICAgICAg
ICAgJCRQV0QvcXdlYmtpdHZlcnNpb24uaCBcCisgICAgICAgICAgICAgICAgICAgICAkJFBXRC9x
d2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5oIFwKKyAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3
ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwX3AuaApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vi
ZGVsZWdhdGVzZWxlY3Rwb3B1cC5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVj
dHBvcHVwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDE0MGFlCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5j
cHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJxd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5oIgorCisjaW5jbHVkZSAiUXRB
YnN0cmFjdFdlYlBvcHVwLmgiCisjaW5jbHVkZSAicXdlYmRlbGVnYXRlc2VsZWN0cG9wdXBfcC5o
IgorCitRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6UVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAoKQor
ICAgIDogZChuZXcgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBQcml2YXRlKCkpCit7Cit9CisKK1FX
ZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjp+UVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAoKQoreworICAg
IGRlbGV0ZSBkOworfQorCit2b2lkIFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjppbmZvcm1DbG9z
ZWQoKQoreworICAgIGQtPmNvcmVQb3B1cC0+cG9wdXBEaWRIaWRlKHRydWUpOworfQorCit2b2lk
IFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjpzZXRDdXJyZW50SW5kZXgoaW50IGlkeCkKK3sKKyAg
ICBkLT5jb3JlUG9wdXAtPnZhbHVlQ2hhbmdlZChpZHgpOworfQorCitRV2lkZ2V0KiBRV2ViRGVs
ZWdhdGVTZWxlY3RQb3B1cDo6dmlldygpCit7CisgICAgcmV0dXJuIGQtPmNvcmVQb3B1cC0+dmll
dygpOworfQorCitRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6SXRlbVR5cGUgUVdlYkRlbGVnYXRl
U2VsZWN0UG9wdXA6Oml0ZW1UeXBlKGludCBpZHgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChkLT5j
b3JlUG9wdXAtPml0ZW1UeXBlKGlkeCkpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlF0QWJzdHJhY3RX
ZWJQb3B1cDo6R3JvdXA6CisgICAgICAgIHJldHVybiBHcm91cDsKKyAgICBjYXNlIFdlYkNvcmU6
OlF0QWJzdHJhY3RXZWJQb3B1cDo6T3B0aW9uOgorICAgICAgICByZXR1cm4gT3B0aW9uOworICAg
IGNhc2UgV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpTZXBhcmF0b3I6CisgICAgICAgIHJl
dHVybiBTZXBhcmF0b3I7CisgICAgfQorICAgIHJldHVybiBPcHRpb247Cit9CisKK1FTdHJpbmcg
UVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Oml0ZW1UZXh0KGludCBpZHgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGQtPmNvcmVQb3B1cC0+aXRlbVRleHQoaWR4KTsKK30KKworUVN0cmluZyBRV2ViRGVs
ZWdhdGVTZWxlY3RQb3B1cDo6aXRlbVRvb2xUaXAoaW50IGlkeCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZC0+Y29yZVBvcHVwLT5pdGVtVG9vbFRpcChpZHgpOworfQorCitib29sIFFXZWJEZWxlZ2F0
ZVNlbGVjdFBvcHVwOjppdGVtSXNFbmFibGVkKGludCBpZHgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGQtPmNvcmVQb3B1cC0+aXRlbUlzRW5hYmxlZChpZHgpOworfQorCmRpZmYgLS1naXQgYS9XZWJL
aXQvcXQvQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJk
ZWxlZ2F0ZXNlbGVjdHBvcHVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NTRhMmFlNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYmRlbGVnYXRlc2Vs
ZWN0cG9wdXAuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBx
d2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9oCisjZGVmaW5lIHF3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVw
X2gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRTGlzdD4KKyNpbmNs
dWRlIDxRUmVjdD4KKyNpbmNsdWRlIDxRU3RyaW5nPgorI2luY2x1ZGUgPFFXaWRnZXQ+CisKK2Ns
YXNzIFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwUHJpdmF0ZTsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgUVdlYlBvcHVwV3JhcHBlcjsKK30KKworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdl
YkRlbGVnYXRlU2VsZWN0UG9wdXAgeworcHVibGljOgorICAgIFFXZWJEZWxlZ2F0ZVNlbGVjdFBv
cHVwKCk7CisgICAgdmlydHVhbCB+UVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAoKTsKKworICAgIGVu
dW0gSXRlbVR5cGUgeyBPcHRpb24sIEdyb3VwLCBTZXBhcmF0b3IgfTsKKyAgICBJdGVtVHlwZSBp
dGVtVHlwZShpbnQpIGNvbnN0OworICAgIFFTdHJpbmcgaXRlbVRleHQoaW50KSBjb25zdDsKKyAg
ICBRU3RyaW5nIGl0ZW1Ub29sVGlwKGludCkgY29uc3Q7CisgICAgYm9vbCBpdGVtSXNFbmFibGVk
KGludCkgY29uc3Q7CisKKyAgICBRV2lkZ2V0KiB2aWV3KCk7CisgICAgUVJlY3QgZ2VvbWV0cnko
KSBjb25zdDsKKyAgICBpbnQgY3VycmVudEluZGV4KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZv
aWQgb3BlbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIHNldEN1cnJlbnRJbmRleChpbnQgaW5kZXgpOworICAgIHZvaWQgaW5mb3Jt
Q2xvc2VkKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlFXZWJQb3B1
cFdyYXBwZXI7CisgICAgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBQcml2YXRlKiBkOworfTsKKwor
Y2xhc3MgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwKiBjcmVhdGUoKSA9IDA7Cit9OworCisKKworI2Vu
ZGlmIC8vIHF3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9B
cGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXBfcC5oIGIvV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdh
dGVzZWxlY3Rwb3B1cF9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFh
Y2E2YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYmRlbGVnYXRlc2VsZWN0
cG9wdXBfcC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIHF3
ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwX3BfaAorI2RlZmluZSBxd2ViZGVsZWdhdGVzZWxlY3Rwb3B1
cF9wX2gKKworI2luY2x1ZGUgInF3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIFF0QWJzdHJhY3RXZWJQb3B1cDsKK30KKworY2xhc3MgUVdlYkRl
bGVnYXRlU2VsZWN0UG9wdXBQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBXZWJDb3JlOjpRdEFic3Ry
YWN0V2ViUG9wdXAqIGNvcmVQb3B1cDsKKyAgICBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cFByaXZh
dGUoKSA6IGNvcmVQb3B1cCgwKSB7fQorfTsKKworCisjZW5kaWYgLy8gcXdlYmRlbGVnYXRlc2Vs
ZWN0cG9wdXBfcF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1dl
YktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IDIxNDdlYWIuLjRmYjgwODggMTAwNjQ0Ci0t
LSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQogICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBT
ZXJ2aWNlcyBJbmMuCiAgICAgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KIApAQCAtMTc0
Myw2ICsxNzQzLDExIEBAIFFXZWJQYWdlOjp+UVdlYlBhZ2UoKQogICAgIGRlbGV0ZSBkOwogfQog
Cit2b2lkIFFXZWJQYWdlOjpzZXRTZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeShRV2ViRGVsZWdh
dGVTZWxlY3RQb3B1cEZhY3RvcnkqIGZhY3RvcnkpCit7CisgICAgZC0+Y2hyb21lQ2xpZW50LT5z
ZXRTZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeShmYWN0b3J5KTsKK30KKwogLyohCiAgICAgUmV0
dXJucyB0aGUgbWFpbiBmcmFtZSBvZiB0aGUgcGFnZS4KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5oIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCmluZGV4IDQ3NjZjYmQu
Ljg1NzNmZWQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAorKysgYi9XZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAo
QykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29t
cHV0aW5nIFNlcnZpY2VzIEluYy4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTQ5LDYgKzQ5LDggQEAgY2xhc3Mg
UVdlYlBsdWdpbkZhY3Rvcnk7CiBjbGFzcyBRV2ViSGl0VGVzdFJlc3VsdDsKIGNsYXNzIFFXZWJI
aXN0b3J5SXRlbTsKIAorY2xhc3MgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBGYWN0b3J5OworCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ2hyb21lQ2xpZW50UXQ7CiAgICAgY2xhc3Mg
RWRpdG9yQ2xpZW50UXQ7CkBAIC0yMDMsNiArMjA1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
VmlldyhRV2lkZ2V0ICp2aWV3KTsKICAgICBRV2lkZ2V0ICp2aWV3KCkgY29uc3Q7CiAKKyAgICB2
b2lkIHNldFNlbGVjdFBvcHVwRGVsZWdhdGVGYWN0b3J5KFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVw
RmFjdG9yeSogZmFjdG9yeSk7CisKICAgICBib29sIGlzTW9kaWZpZWQoKSBjb25zdDsKICNpZm5k
ZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgUVVuZG9TdGFjayAqdW5kb1N0YWNrKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRl
eCBjMzAzYjQzLi43YzM2ZWQ2IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMC0wMS0xOCAgTHVpeiBB
Z29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEN1c3RvbSBzZWxlY3QgcG9wdXBz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM0MTgK
KworICAgICAgICBTdXBwb3J0IGZvciBjb21ib2JveCBwb3B1cCBjdXN0b21pemF0aW9ucy4KKwor
ICAgICAgICBDb21ib2JveCBwb3B1cCBjdXN0b21pemF0aW9uIGNhbiBiZSBtYWRlIHByb3ZpZGlu
ZyBhbiBpbnN0YW5jZSBvZgorICAgICAgICBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cEZhY3Rvcnkg
dG8gUVdlYlBhZ2UuIFRoZSBmYWN0b3J5IHdpbGwgYmUgdXNlZCB0byBjcmVhdGUKKyAgICAgICAg
UVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAgb2JqZWN0cyB3aGVuIG5lZWRlZC4gUVdlYkRlbGVnYXRl
U2VsZWN0UG9wdXAgY2xhc3MgaXMgdGhlCisgICAgICAgIGJhc2UgY2xhc3MgZm9yIGN1c3RvbSBj
b21ib2JveCBwb3B1cHMuCisKKyAgICAgICAgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBGYWN0b3J5
IGluaGVyaXRlZCBjbGFzc2VzIG11c3QgaW1wbGVtZW50IG1ldGhvZCBjcmVhdGUgYW5kCisgICAg
ICAgIHJldHVybiBhbiBvYmplY3Qgb2YgY2xhc3MgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAuCisK
KyAgICAgICAgKiBBcGkvaGVhZGVycy5wcmk6CisgICAgICAgICogQXBpL3F3ZWJkZWxlZ2F0ZXNl
bGVjdHBvcHVwLmNwcDogQWRkZWQuCisgICAgICAgIChRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6
UVdlYkRlbGVnYXRlU2VsZWN0UG9wdXApOgorICAgICAgICAoUVdlYkRlbGVnYXRlU2VsZWN0UG9w
dXA6On5RV2ViRGVsZWdhdGVTZWxlY3RQb3B1cCk6CisgICAgICAgIChRV2ViRGVsZWdhdGVTZWxl
Y3RQb3B1cDo6aW5mb3JtQ2xvc2VkKToKKyAgICAgICAgKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVw
OjpzZXRDdXJyZW50SW5kZXgpOgorICAgICAgICAoUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6OnZp
ZXcpOgorICAgICAgICAoUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Oml0ZW1UeXBlKToKKyAgICAg
ICAgKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjppdGVtVGV4dCk6CisgICAgICAgIChRV2ViRGVs
ZWdhdGVTZWxlY3RQb3B1cDo6aXRlbVRvb2xUaXApOgorICAgICAgICAoUVdlYkRlbGVnYXRlU2Vs
ZWN0UG9wdXA6Oml0ZW1Jc0VuYWJsZWQpOgorICAgICAgICAqIEFwaS9xd2ViZGVsZWdhdGVzZWxl
Y3Rwb3B1cC5oOiBBZGRlZC4KKyAgICAgICAgKiBBcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXBf
cC5oOiBBZGRlZC4KKyAgICAgICAgKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwUHJpdmF0ZTo6UVdl
YkRlbGVnYXRlU2VsZWN0UG9wdXBQcml2YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICAoUVdlYlBhZ2U6OnNldFNlbGVjdFBvcHVwRGVsZWdhdGVGYWN0b3J5KToKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpRV2ViUG9w
dXBXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6On5RV2ViUG9w
dXBXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OnNob3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6aGlkZSk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRRdDo6Q2hyb21lQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50UXQ6OnNldFNlbGVjdFBvcHVwRGVsZWdhdGVGYWN0b3J5KToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVhdGVTZWxlY3RQb3B1cCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dl
YlBvcHVwQ29tYm86OlF0RmFsbGJhY2tXZWJQb3B1cENvbWJvKToKKyAgICAgICAgKFdlYkNvcmU6
OlF0RmFsbGJhY2tXZWJQb3B1cENvbWJvOjpzaG93UG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6
UXRGYWxsYmFja1dlYlBvcHVwQ29tYm86OmhpZGVQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpR
dEZhbGxiYWNrV2ViUG9wdXA6OlF0RmFsbGJhY2tXZWJQb3B1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpRdEZhbGxiYWNrV2ViUG9wdXA6On5RdEZhbGxiYWNrV2ViUG9wdXApOgorICAgICAgICAoV2Vi
Q29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFs
bGJhY2tXZWJQb3B1cDo6aGlkZSk6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9w
dXA6OnBvcHVsYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9w
dXAuaDoKKwogMjAxMC0wMS0wOCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJv
c3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCmluZGV4IGY2
MmJjODYuLjM5MjU4NjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmNwcApAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQ1LDYgKzQ2
LDggQEAKICNpbmNsdWRlICJxd2VicGFnZS5oIgogI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKICNp
bmNsdWRlICJxd2ViZnJhbWVfcC5oIgorI2luY2x1ZGUgInF3ZWJzZWxlY3Rwb3B1cGRlbGVnYXRl
LmgiCisjaW5jbHVkZSAicXdlYnNlbGVjdHBvcHVwZGVsZWdhdGVfcC5oIgogI2luY2x1ZGUgInF3
ZWJzZWN1cml0eW9yaWdpbi5oIgogI2luY2x1ZGUgInF3ZWJzZWN1cml0eW9yaWdpbl9wLmgiCiAj
aW5jbHVkZSAicXdlYnZpZXcuaCIKQEAgLTU2LDggKzU5LDQzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
CiB7CiAKIAorY2xhc3MgUVdlYlBvcHVwV3JhcHBlciA6IHB1YmxpYyBRdEFic3RyYWN0V2ViUG9w
dXAgeworcHVibGljOgorICAgIFFXZWJQb3B1cFdyYXBwZXIoUVdlYkRlbGVnYXRlU2VsZWN0UG9w
dXAqIHBvcHVwKTsKKyAgICB+UVdlYlBvcHVwV3JhcHBlcigpOworCitwdWJsaWM6CisgICAgdmly
dHVhbCB2b2lkIHNob3coKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOworCitwcml2YXRlOgor
ICAgIFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwKiBtX3BvcHVwOworfTsKKworUVdlYlBvcHVwV3Jh
cHBlcjo6UVdlYlBvcHVwV3JhcHBlcihRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cCogcG9wdXApCisg
ICAgOiBtX3BvcHVwKHBvcHVwKQoreworICAgIG1fcG9wdXAtPmQtPmNvcmVQb3B1cCA9IHRoaXM7
Cit9CisKK1FXZWJQb3B1cFdyYXBwZXI6On5RV2ViUG9wdXBXcmFwcGVyKCkKK3sKKyAgICBkZWxl
dGUgbV9wb3B1cDsKK30KKwordm9pZCBRV2ViUG9wdXBXcmFwcGVyOjpzaG93KCkKK3sKKyAgICBt
X3BvcHVwLT5vcGVuKCk7Cit9CisKK3ZvaWQgUVdlYlBvcHVwV3JhcHBlcjo6aGlkZSgpCit7Cisg
ICAgbV9wb3B1cC0+Y2xvc2UoKTsKK30KKwogQ2hyb21lQ2xpZW50UXQ6OkNocm9tZUNsaWVudFF0
KFFXZWJQYWdlKiB3ZWJQYWdlKQogICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCisgICAgLCBtX3Nl
bGVjdFBvcHVwRmFjdG9yeSgwKQogewogICAgIHRvb2xCYXJzVmlzaWJsZSA9IHN0YXR1c0JhclZp
c2libGUgPSBtZW51QmFyVmlzaWJsZSA9IHRydWU7CiB9CkBAIC02Nyw2ICsxMDUsMTEgQEAgQ2hy
b21lQ2xpZW50UXQ6On5DaHJvbWVDbGllbnRRdCgpCiAKIH0KIAordm9pZCBDaHJvbWVDbGllbnRR
dDo6c2V0U2VsZWN0UG9wdXBEZWxlZ2F0ZUZhY3RvcnkoUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBG
YWN0b3J5KiBwb3B1cEZhY3RvcnkpCit7CisgICAgbV9zZWxlY3RQb3B1cEZhY3RvcnkgPSBwb3B1
cEZhY3Rvcnk7Cit9CisKIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OnNldFdpbmRvd1JlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogewogICAgIGlmICghbV93ZWJQYWdlKQpAQCAtNDY2LDggKzUwOSwx
MCBAQCB2b2lkIENocm9tZUNsaWVudFF0OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9y
RnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
UXRBYnN0cmFjdFdlYlBvcHVwKiBDaHJvbWVDbGllbnRRdDo6Y3JlYXRlUG9wdXAoKQorUXRBYnN0
cmFjdFdlYlBvcHVwKiBDaHJvbWVDbGllbnRRdDo6Y3JlYXRlU2VsZWN0UG9wdXAoKQogeworICAg
IGlmIChtX3NlbGVjdFBvcHVwRmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG5ldyBRV2ViUG9wdXBX
cmFwcGVyKG1fc2VsZWN0UG9wdXBGYWN0b3J5LT5jcmVhdGUoKSk7CiAgICAgcmV0dXJuIG5ldyBR
dEZhbGxiYWNrV2ViUG9wdXA7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFF0LmgKaW5kZXggMTA2ZDRjYy4uZTI1ZDQ2ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudFF0LmgKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICog
Q29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KICAqCiAgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgpAQCAtMzUsNiArMzYsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAKIGNsYXNzIFFXZWJQYWdlOworY2xhc3MgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBG
YWN0b3J5OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNSw3ICsxMzcsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlv
blBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKik7CiAKLSAgICAgICAgUXRB
YnN0cmFjdFdlYlBvcHVwKiBjcmVhdGVQb3B1cCgpOworICAgICAgICBRdEFic3RyYWN0V2ViUG9w
dXAqIGNyZWF0ZVNlbGVjdFBvcHVwKCk7CisKKyAgICAgICAgdm9pZCBzZXRTZWxlY3RQb3B1cERl
bGVnYXRlRmFjdG9yeShRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cEZhY3RvcnkqIHBvcHVwRmFjdG9y
eSk7CiAKICAgICAgICAgUVdlYlBhZ2UqIG1fd2ViUGFnZTsKICAgICAgICAgV2ViQ29yZTo6S1VS
TCBsYXN0SG92ZXJVUkw7CkBAIC0xNDUsNiArMTQ5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBib29sIHRvb2xCYXJzVmlzaWJsZTsKICAgICAgICAgYm9vbCBzdGF0dXNCYXJWaXNp
YmxlOwogICAgICAgICBib29sIG1lbnVCYXJWaXNpYmxlOworCisgICAgICAgIFFXZWJEZWxlZ2F0
ZVNlbGVjdFBvcHVwRmFjdG9yeSogbV9zZWxlY3RQb3B1cEZhY3Rvcnk7CiAgICAgfTsKIH0KIApk
aWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5j
cHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcAppbmRl
eCAzNDRkNThhLi5iZTk4ZTUzIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UXRGYWxsYmFja1dlYlBvcHVwLmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRG
YWxsYmFja1dlYlBvcHVwLmNwcApAQCAtMzEsODcgKzMxLDk4IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorUXRGYWxsYmFja1dlYlBvcHVwQ29tYm86OlF0RmFsbGJhY2tXZWJQb3B1cENvbWJv
KFF0RmFsbGJhY2tXZWJQb3B1cCYgb3duZXJQb3B1cCkKKyAgICA6IG1fb3duZXJQb3B1cChvd25l
clBvcHVwKQoreworfQorCit2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cENvbWJvOjpzaG93UG9wdXAo
KQoreworICAgIFFDb21ib0JveDo6c2hvd1BvcHVwKCk7CisgICAgbV9vd25lclBvcHVwLm1fcG9w
dXBWaXNpYmxlID0gdHJ1ZTsKK30KKwordm9pZCBRdEZhbGxiYWNrV2ViUG9wdXBDb21ibzo6aGlk
ZVBvcHVwKCkKK3sKKyAgICBRV2lkZ2V0KiBhY3RpdmVGb2N1cyA9IFFBcHBsaWNhdGlvbjo6Zm9j
dXNXaWRnZXQoKTsKKyAgICBpZiAoYWN0aXZlRm9jdXMgJiYgYWN0aXZlRm9jdXMgPT0gUUNvbWJv
Qm94Ojp2aWV3KCkKKyAgICAgICAgJiYgYWN0aXZlRm9jdXMtPnRlc3RBdHRyaWJ1dGUoUXQ6OldB
X0lucHV0TWV0aG9kRW5hYmxlZCkpIHsKKyAgICAgICAgUUlucHV0Q29udGV4dCogcWljID0gYWN0
aXZlRm9jdXMtPmlucHV0Q29udGV4dCgpOworICAgICAgICBpZiAocWljKSB7CisgICAgICAgICAg
ICBxaWMtPnJlc2V0KCk7CisgICAgICAgICAgICBxaWMtPnNldEZvY3VzV2lkZ2V0KDApOworICAg
ICAgICB9CisgICAgfQorCisgICAgUUNvbWJvQm94OjpoaWRlUG9wdXAoKTsKKyAgICBpZiAoIW1f
b3duZXJQb3B1cC5tX3BvcHVwVmlzaWJsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vd25l
clBvcHVwLm1fcG9wdXBWaXNpYmxlID0gZmFsc2U7CisgICAgbV9vd25lclBvcHVwLnBvcHVwRGlk
SGlkZSh0cnVlKTsKK30KKwogLy8gUXRGYWxsYmFja1dlYlBvcHVwCiAKIFF0RmFsbGJhY2tXZWJQ
b3B1cDo6UXRGYWxsYmFja1dlYlBvcHVwKCkKICAgICA6IFF0QWJzdHJhY3RXZWJQb3B1cCgpCiAg
ICAgLCBtX3BvcHVwVmlzaWJsZShmYWxzZSkKKyAgICAsIG1fY29tYm8obmV3IFF0RmFsbGJhY2tX
ZWJQb3B1cENvbWJvKCp0aGlzKSkKIHsKLSAgICBjb25uZWN0KHRoaXMsIFNJR05BTChhY3RpdmF0
ZWQoaW50KSksCisgICAgY29ubmVjdChtX2NvbWJvLCBTSUdOQUwoYWN0aXZhdGVkKGludCkpLAog
ICAgICAgICAgICAgU0xPVChhY3RpdmVDaGFuZ2VkKGludCkpLCBRdDo6UXVldWVkQ29ubmVjdGlv
bik7CiB9CiAKLQotdm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3coY29uc3QgUVJlY3QmIGdl
b21ldHJ5LCBpbnQgc2VsZWN0ZWRJbmRleCkKK1F0RmFsbGJhY2tXZWJQb3B1cDo6flF0RmFsbGJh
Y2tXZWJQb3B1cCgpCiB7Ci0gICAgc2V0Q3VycmVudEluZGV4KHNlbGVjdGVkSW5kZXgpOwotCi0g
ICAgLyoKLSAgICBRV2lkZ2V0KiBwYXJlbnQgPSAwOwotICAgIGlmIChjbGllbnQoKS0+aG9zdFdp
bmRvdygpICYmIGNsaWVudCgpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKQot
ICAgICAgIHBhcmVudCA9IGNsaWVudCgpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVu
dCgpLT5vd25lcldpZGdldCgpOworICAgIGRlbGV0ZSBtX2NvbWJvOworfQogCi0gICAgc2V0UGFy
ZW50KHBhcmVudCk7Ci0gICAgKi8KK3ZvaWQgUXRGYWxsYmFja1dlYlBvcHVwOjpzaG93KCkKK3sK
KyAgICBwb3B1bGF0ZSgpOworICAgIG1fY29tYm8tPnNldFBhcmVudCh2aWV3KCkpOworICAgIG1f
Y29tYm8tPnNldEN1cnJlbnRJbmRleChjdXJyZW50SW5kZXgoKSk7CiAKLSAgICBzZXRHZW9tZXRy
eShRUmVjdChnZW9tZXRyeS5sZWZ0KCksIGdlb21ldHJ5LnRvcCgpLCBnZW9tZXRyeS53aWR0aCgp
LCBzaXplSGludCgpLmhlaWdodCgpKSk7CisgICAgUVJlY3QgcmVjdCA9IGdlb21ldHJ5KCk7Cisg
ICAgbV9jb21iby0+c2V0R2VvbWV0cnkoUVJlY3QocmVjdC5sZWZ0KCksIHJlY3QudG9wKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC53aWR0aCgpLCBtX2NvbWJvLT5zaXpl
SGludCgpLmhlaWdodCgpKSk7CiAKICAgICBRTW91c2VFdmVudCBldmVudChRRXZlbnQ6Ok1vdXNl
QnV0dG9uUHJlc3MsIFFDdXJzb3I6OnBvcygpLCBRdDo6TGVmdEJ1dHRvbiwKICAgICAgICAgICAg
ICAgICAgICAgICBRdDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIpOwotICAgIFFDb3JlQXBw
bGljYXRpb246OnNlbmRFdmVudCh0aGlzLCAmZXZlbnQpOworICAgIFFDb3JlQXBwbGljYXRpb246
OnNlbmRFdmVudChtX2NvbWJvLCAmZXZlbnQpOwogfQogCi12b2lkIFF0RmFsbGJhY2tXZWJQb3B1
cDo6cG9wdWxhdGUoY29uc3QgUUZvbnQmIGZvbnQsIGNvbnN0IFFMaXN0PEl0ZW0+JiBpdGVtcykK
K3ZvaWQgUXRGYWxsYmFja1dlYlBvcHVwOjpoaWRlKCkKIHsKLSAgICBjbGVhcigpOworICAgIG1f
Y29tYm8tPmhpZGVQb3B1cCgpOworfQorCit2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6cG9wdWxh
dGUoKQoreworICAgIG1fY29tYm8tPmNsZWFyKCk7CiAKLSAgICBRU3RhbmRhcmRJdGVtTW9kZWwq
IG1vZGVsID0gcW9iamVjdF9jYXN0PFFTdGFuZGFyZEl0ZW1Nb2RlbCo+KFFDb21ib0JveDo6bW9k
ZWwoKSk7CisgICAgUVN0YW5kYXJkSXRlbU1vZGVsKiBtb2RlbCA9IHFvYmplY3RfY2FzdDxRU3Rh
bmRhcmRJdGVtTW9kZWwqPihtX2NvbWJvLT5tb2RlbCgpKTsKICAgICBRX0FTU0VSVChtb2RlbCk7
CiAKLSAgICBzZXRGb250KGZvbnQpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlbXMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgc3dpdGNoIChpdGVtc1tpXS50eXBlKSB7Ci0gICAgICAgIGNh
c2UgUXRBYnN0cmFjdFdlYlBvcHVwOjpJdGVtOjpTZXBhcmF0b3I6Ci0gICAgICAgICAgICBpbnNl
cnRTZXBhcmF0b3IoaSk7CisgICAgbV9jb21iby0+c2V0Rm9udChmb250KCkpOworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgaXRlbUNvdW50KCk7ICsraSkgeworICAgICAgICBzd2l0Y2ggKGl0ZW1U
eXBlKGkpKSB7CisgICAgICAgIGNhc2UgU2VwYXJhdG9yOgorICAgICAgICAgICAgbV9jb21iby0+
aW5zZXJ0U2VwYXJhdG9yKGkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUXRB
YnN0cmFjdFdlYlBvcHVwOjpJdGVtOjpHcm91cDoKLSAgICAgICAgICAgIGluc2VydEl0ZW0oaSwg
aXRlbXNbaV0udGV4dCk7CisgICAgICAgIGNhc2UgR3JvdXA6CisgICAgICAgICAgICBtX2NvbWJv
LT5pbnNlcnRJdGVtKGksIGl0ZW1UZXh0KGkpKTsKICAgICAgICAgICAgIG1vZGVsLT5pdGVtKGkp
LT5zZXRFbmFibGVkKGZhbHNlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFF0
QWJzdHJhY3RXZWJQb3B1cDo6SXRlbTo6T3B0aW9uOgotICAgICAgICAgICAgaW5zZXJ0SXRlbShp
LCBpdGVtc1tpXS50ZXh0KTsKLSAgICAgICAgICAgIG1vZGVsLT5pdGVtKGkpLT5zZXRFbmFibGVk
KGl0ZW1zW2ldLmVuYWJsZWQpOworICAgICAgICBjYXNlIE9wdGlvbjoKKyAgICAgICAgICAgIG1f
Y29tYm8tPmluc2VydEl0ZW0oaSwgaXRlbVRleHQoaSkpOworICAgICAgICAgICAgbW9kZWwtPml0
ZW0oaSktPnNldEVuYWJsZWQoaXRlbUlzRW5hYmxlZChpKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3dQb3B1
cCgpCi17Ci0gICAgUUNvbWJvQm94OjpzaG93UG9wdXAoKTsKLSAgICBtX3BvcHVwVmlzaWJsZSA9
IHRydWU7Ci19Ci0KLXZvaWQgUXRGYWxsYmFja1dlYlBvcHVwOjpoaWRlUG9wdXAoKQotewotICAg
IFFXaWRnZXQqIGFjdGl2ZUZvY3VzID0gUUFwcGxpY2F0aW9uOjpmb2N1c1dpZGdldCgpOwotICAg
IGlmIChhY3RpdmVGb2N1cyAmJiBhY3RpdmVGb2N1cyA9PSB2aWV3KCkKLSAgICAgICAgJiYgYWN0
aXZlRm9jdXMtPnRlc3RBdHRyaWJ1dGUoUXQ6OldBX0lucHV0TWV0aG9kRW5hYmxlZCkpIHsKLSAg
ICAgICAgUUlucHV0Q29udGV4dCogcWljID0gYWN0aXZlRm9jdXMtPmlucHV0Q29udGV4dCgpOwot
ICAgICAgICBpZiAocWljKSB7Ci0gICAgICAgICAgICBxaWMtPnJlc2V0KCk7Ci0gICAgICAgICAg
ICBxaWMtPnNldEZvY3VzV2lkZ2V0KDApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUUNvbWJv
Qm94OjpoaWRlUG9wdXAoKTsKLSAgICBpZiAoIW1fcG9wdXBWaXNpYmxlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3BvcHVwVmlzaWJsZSA9IGZhbHNlOwotICAgIHBvcHVwRGlkSGlkZSh0cnVl
KTsKLX0KLQogdm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OmFjdGl2ZUNoYW5nZWQoaW50IGluZGV4
KQogewogICAgIGlmIChpbmRleCA8IDApCkBAIC0xMjAsOSArMTMxLDQgQEAgdm9pZCBRdEZhbGxi
YWNrV2ViUG9wdXA6OmFjdGl2ZUNoYW5nZWQoaW50IGluZGV4KQogICAgIHZhbHVlQ2hhbmdlZChp
bmRleCk7CiB9CiAKLXZvaWQgUXRGYWxsYmFja1dlYlBvcHVwOjpzZXRQYXJlbnQoUVdpZGdldCog
cGFyZW50KQotewotICAgIFFDb21ib0JveDo6c2V0UGFyZW50KHBhcmVudCk7Ci19Ci0KIH0KZGlm
ZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaCBi
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaAppbmRleCA1YWZm
ZTBhLi44ZmJlYzZmIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxs
YmFja1dlYlBvcHVwLmgKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tX
ZWJQb3B1cC5oCkBAIC0yNSwyNSArMjUsMzYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBRdEZhbGxiYWNrV2ViUG9wdXAgOiBwcml2YXRlIFFDb21ib0JveCwgcHVibGljIFF0QWJz
dHJhY3RXZWJQb3B1cCB7CitjbGFzcyBRdEZhbGxiYWNrV2ViUG9wdXBDb21ibzsKKworY2xhc3Mg
UXRGYWxsYmFja1dlYlBvcHVwIDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBRdEFic3RyYWN0V2Vi
UG9wdXAgewogICAgIFFfT0JKRUNUCiBwdWJsaWM6CiAgICAgUXRGYWxsYmFja1dlYlBvcHVwKCk7
CisgICAgflF0RmFsbGJhY2tXZWJQb3B1cCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHNob3coY29u
c3QgUVJlY3QmIGdlb21ldHJ5LCBpbnQgc2VsZWN0ZWRJbmRleCk7Ci0gICAgdmlydHVhbCB2b2lk
IGhpZGUoKSB7IGhpZGVQb3B1cCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlKGNvbnN0
IFFGb250JiBmb250LCBjb25zdCBRTGlzdDxJdGVtPiYgaXRlbXMpOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRQYXJlbnQoUVdpZGdldCogcGFyZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOwor
ICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7CiAKIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBhY3Rp
dmVDaGFuZ2VkKGludCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFF0RmFsbGJhY2tX
ZWJQb3B1cENvbWJvOwogICAgIGJvb2wgbV9wb3B1cFZpc2libGU7CisgICAgUXRGYWxsYmFja1dl
YlBvcHVwQ29tYm8qIG1fY29tYm87CiAKKyAgICB2b2lkIHBvcHVsYXRlKCk7Cit9OwogCitjbGFz
cyBRdEZhbGxiYWNrV2ViUG9wdXBDb21ibyA6IHB1YmxpYyBRQ29tYm9Cb3ggeworcHVibGljOgor
ICAgIFF0RmFsbGJhY2tXZWJQb3B1cENvbWJvKFF0RmFsbGJhY2tXZWJQb3B1cCYgb3duZXJQb3B1
cCk7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cCgpOwogICAgIHZpcnR1YWwgdm9pZCBoaWRl
UG9wdXAoKTsKKworcHJpdmF0ZToKKyAgICBRdEZhbGxiYWNrV2ViUG9wdXAmIG1fb3duZXJQb3B1
cDsKIH07CiAKIH0KLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46855</attachid>
            <date>2010-01-18 14:52:41 -0800</date>
            <delta_ts>2010-01-19 00:15:41 -0800</delta_ts>
            <desc>Custom popups and popup factories.</desc>
            <filename>0001-Qt-Custom-select-popups.patch</filename>
            <type>text/plain</type>
            <size>31671</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA2NmZiOWQyNzcwZGI5MGU0ZTRkY2Y1N2MxN2UxYTRjN2Y2MDQwZmYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IE1vbiwgMTggSmFuIDIwMTAgMTk6NDU6MTQgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIEN1c3RvbSBzZWxlY3QgcG9wdXBzLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzNDE4CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCldlYkNv
cmU6CgpjbGFzcyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cCBhZGRlZCB0byBRdCBBUEkuCmNsYXNz
ZXMgV2ViQ29yZTo6UG9wdXBNZW51IGFuZCBXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXAgaGF2
ZSBjaGFuZ2VkIHRvCnN1cHBvcnQgdGhlIG5ldyBBUEkuCgoqIFdlYkNvcmUucHJvOgoqIHBsYXRm
b3JtL3F0L1BvcHVwTWVudVF0LmNwcDoKKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CiogcGxh
dGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcDoKKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQ
b3B1cDo6UXRBYnN0cmFjdFdlYlBvcHVwKToKKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6
aXRlbVR5cGUpOgoqIHBsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5oOgooV2ViQ29yZTo6
UXRBYnN0cmFjdFdlYlBvcHVwOjopOgooV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjppdGVt
VGV4dCk6CihXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6Oml0ZW1Ub29sVGlwKToKKFdlYkNv
cmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6aXRlbUlzRW5hYmxlZCk6CihXZWJDb3JlOjpRdEFic3Ry
YWN0V2ViUG9wdXA6Oml0ZW1Db3VudCk6CihXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6OnZp
ZXcpOgooV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpnZW9tZXRyeSk6CihXZWJDb3JlOjpR
dEFic3RyYWN0V2ViUG9wdXA6OmN1cnJlbnRJbmRleCk6CihXZWJDb3JlOjpRdEFic3RyYWN0V2Vi
UG9wdXA6OmZvbnQpOgoKV2ViS2l0L3F0OgoKU3VwcG9ydCBmb3IgY29tYm9ib3ggcG9wdXAgY3Vz
dG9taXphdGlvbnMuCgpDb21ib2JveCBwb3B1cCBjdXN0b21pemF0aW9uIGNhbiBiZSBtYWRlIHBy
b3ZpZGluZyBhbiBpbnN0YW5jZSBvZgpRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cEZhY3RvcnkgdG8g
UVdlYlBhZ2UuIFRoZSBmYWN0b3J5IHdpbGwgYmUgdXNlZCB0byBjcmVhdGUKUVdlYkRlbGVnYXRl
U2VsZWN0UG9wdXAgb2JqZWN0cyB3aGVuIG5lZWRlZC4gUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAg
Y2xhc3MgaXMgdGhlCmJhc2UgY2xhc3MgZm9yIGN1c3RvbSBjb21ib2JveCBwb3B1cHMuCgpRV2Vi
RGVsZWdhdGVTZWxlY3RQb3B1cEZhY3RvcnkgaW5oZXJpdGVkIGNsYXNzZXMgbXVzdCBpbXBsZW1l
bnQgbWV0aG9kIGNyZWF0ZSBhbmQKcmV0dXJuIGFuIG9iamVjdCBvZiBjbGFzcyBRV2ViRGVsZWdh
dGVTZWxlY3RQb3B1cC4KCiogQXBpL2hlYWRlcnMucHJpOgoqIEFwaS9xd2ViZGVsZWdhdGVzZWxl
Y3Rwb3B1cC5jcHA6IEFkZGVkLgooUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6OlFXZWJEZWxlZ2F0
ZVNlbGVjdFBvcHVwKToKKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjp+UVdlYkRlbGVnYXRlU2Vs
ZWN0UG9wdXApOgooUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6OmluZm9ybUNsb3NlZCk6CihRV2Vi
RGVsZWdhdGVTZWxlY3RQb3B1cDo6c2V0Q3VycmVudEluZGV4KToKKFFXZWJEZWxlZ2F0ZVNlbGVj
dFBvcHVwOjp2aWV3KToKKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjpnZW9tZXRyeSk6CihRV2Vi
RGVsZWdhdGVTZWxlY3RQb3B1cDo6Y3VycmVudEluZGV4KToKKFFXZWJEZWxlZ2F0ZVNlbGVjdFBv
cHVwOjppdGVtVHlwZSk6CihRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aXRlbVRleHQpOgooUVdl
YkRlbGVnYXRlU2VsZWN0UG9wdXA6Oml0ZW1Ub29sVGlwKToKKFFXZWJEZWxlZ2F0ZVNlbGVjdFBv
cHVwOjppdGVtSXNFbmFibGVkKToKKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjppdGVtQ291bnQp
OgoqIEFwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5oOiBBZGRlZC4KKiBBcGkvcXdlYmRlbGVn
YXRlc2VsZWN0cG9wdXBfcC5oOiBBZGRlZC4KKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwUHJpdmF0
ZTo6UVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBQcml2YXRlKToKKiBBcGkvcXdlYnBhZ2UuY3BwOgoo
UVdlYlBhZ2U6OnNldFNlbGVjdFBvcHVwRGVsZWdhdGVGYWN0b3J5KToKKiBBcGkvcXdlYnBhZ2Uu
aDoKKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CihXZWJDb3JlOjpRV2ViUG9w
dXBXcmFwcGVyOjpRV2ViUG9wdXBXcmFwcGVyKToKKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6
On5RV2ViUG9wdXBXcmFwcGVyKToKKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OnNob3cpOgoo
V2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6aGlkZSk6CihXZWJDb3JlOjpDaHJvbWVDbGllbnRR
dDo6Q2hyb21lQ2xpZW50UXQpOgooV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNldFNlbGVjdFBv
cHVwRGVsZWdhdGVGYWN0b3J5KToKKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVhdGVTZWxl
Y3RQb3B1cCk6CiogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKiBXZWJDb3JlU3Vw
cG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwOgooV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVw
Q29tYm86OlF0RmFsbGJhY2tXZWJQb3B1cENvbWJvKToKKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQ
b3B1cENvbWJvOjpzaG93UG9wdXApOgooV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwQ29tYm86
OmhpZGVQb3B1cCk6CihXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OlF0RmFsbGJhY2tXZWJQ
b3B1cCk6CihXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6On5RdEZhbGxiYWNrV2ViUG9wdXAp
OgooV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpzaG93KToKKFdlYkNvcmU6OlF0RmFsbGJh
Y2tXZWJQb3B1cDo6aGlkZSk6CihXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnBvcHVsYXRl
KToKKiBXZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaDoKLS0tCiBXZWJDb3JlL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjggKysrKysKIFdlYkNv
cmUvV2ViQ29yZS5wcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJD
b3JlL3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0LmNwcCAgICAgICAgICAgICB8ICAgNDQgKystLS0t
LS0KIFdlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcCAgICAgIHwgICAx
MSArKwogV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuaCAgICAgICAgfCAg
IDMxICsrKystLQogV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnByaSAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICA0ICstCiBXZWJLaXQvcXQvQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwLmNwcCAg
ICAgICB8ICAgOTQgKysrKysrKysrKysrKysrKysrCiBXZWJLaXQvcXQvQXBpL3F3ZWJkZWxlZ2F0
ZXNlbGVjdHBvcHVwLmggICAgICAgICB8ICAgNzEgKysrKysrKysrKysrKwogV2ViS2l0L3F0L0Fw
aS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9wLmggICAgICAgfCAgIDM3ICsrKysrKysKIFdlYktp
dC9xdC9BcGkvcXdlYnBhZ2UuY3BwICAgICAgICAgICAgICAgICAgICAgIHwgICAgNyArLQogV2Vi
S2l0L3F0L0FwaS9xd2VicGFnZS5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBX
ZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTcgKysr
KysrKysrKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAgICAg
IHwgICA0NyArKysrKysrKystCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuaCAgICAgICB8ICAgIDggKystCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFj
a1dlYlBvcHVwLmNwcCB8ICAxMjAgKysrKysrKysrKysrLS0tLS0tLS0tLS0KIFdlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaCAgIHwgICAyMSArKystCiAxNiBmaWxl
cyBjaGFuZ2VkLCA0NzYgaW5zZXJ0aW9ucygrKSwgMTExIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFdlYktpdC9xdC9BcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5oCiBj
cmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9w
LmgKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGU0MWI3NGEuLjkwNmM1M2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDEtMTggIEx1aXogQWdv
c3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDdXN0b20gc2VsZWN0IHBvcHVwcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNDE4CisK
KyAgICAgICAgY2xhc3MgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAgYWRkZWQgdG8gUXQgQVBJLgor
ICAgICAgICBjbGFzc2VzIFdlYkNvcmU6OlBvcHVwTWVudSBhbmQgV2ViQ29yZTo6UXRBYnN0cmFj
dFdlYlBvcHVwIGhhdmUgY2hhbmdlZCB0bworICAgICAgICBzdXBwb3J0IHRoZSBuZXcgQVBJLgor
CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogcGxhdGZvcm0vcXQvUG9wdXBNZW51
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpzaG93KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXRB
YnN0cmFjdFdlYlBvcHVwOjpRdEFic3RyYWN0V2ViUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6
UXRBYnN0cmFjdFdlYlBvcHVwOjppdGVtVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvUXRB
YnN0cmFjdFdlYlBvcHVwLmg6CisgICAgICAgIChXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6
Oik6CisgICAgICAgIChXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6Oml0ZW1UZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6aXRlbVRvb2xUaXApOgorICAgICAg
ICAoV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjppdGVtSXNFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6aXRlbUNvdW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6dmlldyk6CisgICAgICAgIChXZWJDb3JlOjpRdEFic3Ry
YWN0V2ViUG9wdXA6Omdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQ
b3B1cDo6Y3VycmVudEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1
cDo6Zm9udCk6CisKIDIwMTAtMDEtMDggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiAgRml4IG5hbWVzcGFjZSBpbmRlbnQgZm9yIFNlY3VyaXR5
T3JpZ2luLmguCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJD
b3JlLnBybwppbmRleCA2ZjAzODM4Li4wN2JkNmY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI0NzIsNiArMjQ3Miw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRRdC5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBcCiAgICAgLi4v
V2ViS2l0L3F0L0FwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcCBcCisgICAgLi4vV2ViS2l0L3F0L0Fw
aS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmNwcCBcCiAgICAgLi4v
V2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9Qb3B1cE1lbnVRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0
LmNwcAppbmRleCA2M2UxNTY1Li5hZTRmYzIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1BvcHVwTWVudVF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0
LmNwcApAQCAtNDYsNDcgKzQ2LDI1IEBAIFBvcHVwTWVudTo6flBvcHVwTWVudSgpCiAgICAgZGVs
ZXRlIG1fcG9wdXA7CiB9CiAKLXN0YXRpYyBRTGlzdDxRdEFic3RyYWN0V2ViUG9wdXA6Okl0ZW0+
IGdldEl0ZW1zKFBvcHVwTWVudUNsaWVudCogY2xpZW50KQotewotICAgIFFMaXN0PFF0QWJzdHJh
Y3RXZWJQb3B1cDo6SXRlbT4gcmVzdWx0OwotCi0gICAgaW50IHNpemUgPSBjbGllbnQtPmxpc3RT
aXplKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgUXRB
YnN0cmFjdFdlYlBvcHVwOjpJdGVtIGl0ZW07Ci0KLSAgICAgICAgaWYgKGNsaWVudC0+aXRlbUlz
U2VwYXJhdG9yKGkpKQotICAgICAgICAgICAgaXRlbS50eXBlID0gUXRBYnN0cmFjdFdlYlBvcHVw
OjpJdGVtOjpTZXBhcmF0b3I7Ci0gICAgICAgIGVsc2UgaWYgKGNsaWVudC0+aXRlbUlzTGFiZWwo
aSkpCi0gICAgICAgICAgICBpdGVtLnR5cGUgPSBRdEFic3RyYWN0V2ViUG9wdXA6Okl0ZW06Okdy
b3VwOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBpdGVtLnR5cGUgPSBRdEFic3RyYWN0V2Vi
UG9wdXA6Okl0ZW06Ok9wdGlvbjsKLQotICAgICAgICBpdGVtLnRleHQgPSBjbGllbnQtPml0ZW1U
ZXh0KGkpOwotICAgICAgICBpdGVtLnRvb2xUaXAgPSBjbGllbnQtPml0ZW1Ub29sVGlwKGkpOwot
ICAgICAgICBpdGVtLmVuYWJsZWQgPSBjbGllbnQtPml0ZW1Jc0VuYWJsZWQoaSk7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmQoaXRlbSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZv
aWQgUG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHJlY3QsIEZyYW1lVmlldyogdmlldywg
aW50IGluZGV4KQogewogICAgIENocm9tZUNsaWVudFF0KiBjaHJvbWVDbGllbnQgPSBzdGF0aWNf
Y2FzdDxDaHJvbWVDbGllbnRRdCo+KAogICAgICAgICB2aWV3LT5mcmFtZSgpLT5wYWdlKCktPmNo
cm9tZSgpLT5jbGllbnQoKSk7CiAgICAgQVNTRVJUKGNocm9tZUNsaWVudCk7CiAKLSAgICBpZiAo
IW1fcG9wdXApIHsKLSAgICAgICAgbV9wb3B1cCA9IGNocm9tZUNsaWVudC0+Y3JlYXRlUG9wdXAo
KTsKLSAgICAgICAgbV9wb3B1cC0+bV9jbGllbnQgPSBtX3BvcHVwQ2xpZW50OwotICAgIH0KKyAg
ICBpZiAoIW1fcG9wdXApCisgICAgICAgIG1fcG9wdXAgPSBjaHJvbWVDbGllbnQtPmNyZWF0ZVNl
bGVjdFBvcHVwKCk7CisKKyAgICBtX3BvcHVwLT5tX2NsaWVudCA9IG1fcG9wdXBDbGllbnQ7Cisg
ICAgbV9wb3B1cC0+bV9jdXJyZW50SW5kZXggPSBpbmRleDsKKyAgICBtX3BvcHVwLT5tX3ZpZXcg
PSBjaHJvbWVDbGllbnQtPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5vd25lcldpZGdldCgpOworCisg
ICAgUVJlY3QgZ2VvbWV0cnkocmVjdCk7CisgICAgZ2VvbWV0cnkubW92ZVRvcExlZnQodmlldy0+
Y29udGVudHNUb1dpbmRvdyhyZWN0LnRvcExlZnQoKSkpOworICAgIG1fcG9wdXAtPm1fZ2VvbWV0
cnkgPSBnZW9tZXRyeTsKIAotICAgIG1fcG9wdXAtPnNldFBhcmVudChjaHJvbWVDbGllbnQtPnBs
YXRmb3JtUGFnZUNsaWVudCgpLT5vd25lcldpZGdldCgpKTsKLSAgICBtX3BvcHVwLT5wb3B1bGF0
ZShtX3BvcHVwQ2xpZW50LT5tZW51U3R5bGUoKS5mb250KCkuZm9udCgpLAotICAgICAgICAgICAg
ICAgICAgICAgIGdldEl0ZW1zKG1fcG9wdXBDbGllbnQpKTsKKyAgICBtX3BvcHVwLT5zaG93KCk7
CiAKLSAgICBRUmVjdCBib3VuZHMgPSByZWN0OwotICAgIGJvdW5kcy5tb3ZlVG9wTGVmdCh2aWV3
LT5jb250ZW50c1RvV2luZG93KHJlY3QudG9wTGVmdCgpKSk7Ci0gICAgbV9wb3B1cC0+c2hvdyhi
b3VuZHMsIGluZGV4KTsKIH0KIAogdm9pZCBQb3B1cE1lbnU6OmhpZGUoKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuY3BwCmluZGV4IDc1ZDhmYjUuLmVmN2NjMmMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5jcHAKQEAgLTI3LDYgKzI3
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBRdEFic3RyYWN0V2ViUG9wdXA6OlF0QWJzdHJh
Y3RXZWJQb3B1cCgpCiAgICAgOiBtX2NsaWVudCgwKQorICAgICwgbV92aWV3KDApCisgICAgLCBt
X2N1cnJlbnRJbmRleCgtMSkKIHsKIH0KIApAQCAtNDYsNCArNDgsMTMgQEAgdm9pZCBRdEFic3Ry
YWN0V2ViUG9wdXA6OnZhbHVlQ2hhbmdlZChpbnQgaW5kZXgpCiAgICAgbV9jbGllbnQtPnZhbHVl
Q2hhbmdlZChpbmRleCk7CiB9CiAKK1F0QWJzdHJhY3RXZWJQb3B1cDo6SXRlbVR5cGUgUXRBYnN0
cmFjdFdlYlBvcHVwOjppdGVtVHlwZShpbnQgaWR4KSBjb25zdAoreworICAgIGlmIChtX2NsaWVu
dC0+aXRlbUlzU2VwYXJhdG9yKGlkeCkpCisgICAgICAgIHJldHVybiBTZXBhcmF0b3I7CisgICAg
aWYgKG1fY2xpZW50LT5pdGVtSXNMYWJlbChpZHgpKQorICAgICAgICByZXR1cm4gR3JvdXA7Cisg
ICAgcmV0dXJuIE9wdGlvbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmgKaW5kZXggYzg5MDQ0MS4uMWM4ZjA1YiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuaAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5oCkBAIC0yMCwzOCArMjAsNDcg
QEAKICNpZm5kZWYgUXRBYnN0cmFjdFdlYlBvcHVwX2gKICNkZWZpbmUgUXRBYnN0cmFjdFdlYlBv
cHVwX2gKIAorI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgorCiAjaW5jbHVkZSA8UUZvbnQ+
CiAjaW5jbHVkZSA8UUxpc3Q+CiAjaW5jbHVkZSA8UVJlY3Q+CisjaW5jbHVkZSA8UVdpZGdldD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiAKIGNsYXNz
IFF0QWJzdHJhY3RXZWJQb3B1cCB7CiBwdWJsaWM6Ci0gICAgc3RydWN0IEl0ZW0gewotICAgICAg
ICBlbnVtIHsgT3B0aW9uLCBHcm91cCwgU2VwYXJhdG9yIH0gdHlwZTsKLSAgICAgICAgUVN0cmlu
ZyB0ZXh0OwotICAgICAgICBRU3RyaW5nIHRvb2xUaXA7Ci0gICAgICAgIGJvb2wgZW5hYmxlZDsK
LSAgICB9OworICAgIGVudW0gSXRlbVR5cGUgeyBPcHRpb24sIEdyb3VwLCBTZXBhcmF0b3IgfTsK
KworICAgIEl0ZW1UeXBlIGl0ZW1UeXBlKGludCkgY29uc3Q7CisgICAgUVN0cmluZyBpdGVtVGV4
dChpbnQgaWR4KSBjb25zdCB7IHJldHVybiBtX2NsaWVudC0+aXRlbVRleHQoaWR4KTsgfQorICAg
IFFTdHJpbmcgaXRlbVRvb2xUaXAoaW50IGlkeCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQtPml0
ZW1Ub29sVGlwKGlkeCk7IH0KKyAgICBib29sIGl0ZW1Jc0VuYWJsZWQoaW50IGlkeCkgY29uc3Qg
eyByZXR1cm4gbV9jbGllbnQtPml0ZW1Jc0VuYWJsZWQoaWR4KTsgfQorICAgIGludCBpdGVtQ291
bnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC0+bGlzdFNpemUoKTsgfQorCisgICAgUVdpZGdl
dCogdmlldygpIHsgcmV0dXJuIG1fdmlldzsgfQorICAgIFFSZWN0IGdlb21ldHJ5KCkgY29uc3Qg
eyByZXR1cm4gbV9nZW9tZXRyeTsgfQorICAgIGludCBjdXJyZW50SW5kZXgoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnRJbmRleDsgfQogCiAgICAgUXRBYnN0cmFjdFdlYlBvcHVwKCk7CiAgICAg
dmlydHVhbCB+UXRBYnN0cmFjdFdlYlBvcHVwKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhj
b25zdCBRUmVjdCYgZ2VvbWV0cnksIGludCBzZWxlY3RlZEluZGV4KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNob3coKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhpZGUoKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHBvcHVsYXRlKGNvbnN0IFFGb250JiBmb250LCBjb25zdCBRTGlzdDxJdGVtPiYg
aXRlbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KFFXaWRnZXQqIHBhcmVudCkg
PSAwOwogCi1wcm90ZWN0ZWQ6CiAgICAgdm9pZCBwb3B1cERpZEhpZGUoYm9vbCBhY2NlcHRTdWdn
ZXN0aW9ucyk7CiAgICAgdm9pZCB2YWx1ZUNoYW5nZWQoaW50IGluZGV4KTsKIAorICAgIFFGb250
IGZvbnQoKSB7IHJldHVybiBtX2NsaWVudC0+bWVudVN0eWxlKCkuZm9udCgpLmZvbnQoKTsgfQor
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQb3B1cE1lbnU7CiAgICAgUG9wdXBNZW51Q2xp
ZW50KiBtX2NsaWVudDsKKyAgICBRV2lkZ2V0KiBtX3ZpZXc7CisgICAgaW50IG1fY3VycmVudElu
ZGV4OworICAgIFFSZWN0IG1fZ2VvbWV0cnk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQv
cXQvQXBpL2hlYWRlcnMucHJpIGIvV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnByaQppbmRleCAxYTQy
NTk3Li4zYmQzN2M3IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJpCisrKyBi
L1dlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkKQEAgLTExLDQgKzExLDYgQEAgV0VCS0lUX0FQSV9I
RUFERVJTID0gJCRQV0QvcXdlYmZyYW1lLmggXAogICAgICAgICAgICAgICAgICAgICAgJCRQV0Qv
cXdlYnBsdWdpbmZhY3RvcnkuaCBcCiAgICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2ViaGlz
dG9yeS5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJpbnNwZWN0b3IuaCBcCi0g
ICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2Via2l0dmVyc2lvbi5oCisgICAgICAgICAgICAg
ICAgICAgICAkJFBXRC9xd2Via2l0dmVyc2lvbi5oIFwKKyAgICAgICAgICAgICAgICAgICAgICQk
UFdEL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwLmggXAorICAgICAgICAgICAgICAgICAgICAgJCRQ
V0QvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXBfcC5oCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBp
L3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYmRlbGVnYXRl
c2VsZWN0cG9wdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4ZDg4
ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBv
cHVwLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgInF3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwLmgiCisKKyNpbmNsdWRl
ICJRdEFic3RyYWN0V2ViUG9wdXAuaCIKKyNpbmNsdWRlICJxd2ViZGVsZWdhdGVzZWxlY3Rwb3B1
cF9wLmgiCisKK1FXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjpRV2ViRGVsZWdhdGVTZWxlY3RQb3B1
cCgpCisgICAgOiBkKG5ldyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cFByaXZhdGUoKSkKK3sKK30K
KworUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6On5RV2ViRGVsZWdhdGVTZWxlY3RQb3B1cCgpCit7
CisgICAgZGVsZXRlIGQ7Cit9CisKK3ZvaWQgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6OmluZm9y
bUNsb3NlZCgpCit7CisgICAgZC0+Y29yZVBvcHVwLT5wb3B1cERpZEhpZGUodHJ1ZSk7Cit9CisK
K3ZvaWQgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6OnNldEN1cnJlbnRJbmRleChpbnQgaWR4KQor
eworICAgIGQtPmNvcmVQb3B1cC0+dmFsdWVDaGFuZ2VkKGlkeCk7Cit9CisKK1FXaWRnZXQqIFFX
ZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjp2aWV3KCkKK3sKKyAgICByZXR1cm4gZC0+Y29yZVBvcHVw
LT52aWV3KCk7Cit9CisKK1FSZWN0IFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjpnZW9tZXRyeSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmNvcmVQb3B1cC0+Z2VvbWV0cnkoKTsKK30KKworaW50
IFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjpjdXJyZW50SW5kZXgoKSBjb25zdAoreworICAgIHJl
dHVybiBkLT5jb3JlUG9wdXAtPmN1cnJlbnRJbmRleCgpOworfQorCitRV2ViRGVsZWdhdGVTZWxl
Y3RQb3B1cDo6SXRlbVR5cGUgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Oml0ZW1UeXBlKGludCBp
ZHgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChkLT5jb3JlUG9wdXAtPml0ZW1UeXBlKGlkeCkpIHsK
KyAgICBjYXNlIFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6R3JvdXA6CisgICAgICAgIHJl
dHVybiBHcm91cDsKKyAgICBjYXNlIFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6T3B0aW9u
OgorICAgICAgICByZXR1cm4gT3B0aW9uOworICAgIGNhc2UgV2ViQ29yZTo6UXRBYnN0cmFjdFdl
YlBvcHVwOjpTZXBhcmF0b3I6CisgICAgICAgIHJldHVybiBTZXBhcmF0b3I7CisgICAgfQorICAg
IHJldHVybiBPcHRpb247Cit9CisKK1FTdHJpbmcgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Oml0
ZW1UZXh0KGludCBpZHgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmNvcmVQb3B1cC0+aXRlbVRl
eHQoaWR4KTsKK30KKworUVN0cmluZyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aXRlbVRvb2xU
aXAoaW50IGlkeCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+Y29yZVBvcHVwLT5pdGVtVG9vbFRp
cChpZHgpOworfQorCitib29sIFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjppdGVtSXNFbmFibGVk
KGludCBpZHgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmNvcmVQb3B1cC0+aXRlbUlzRW5hYmxl
ZChpZHgpOworfQorCitpbnQgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Oml0ZW1Db3VudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGQtPmNvcmVQb3B1cC0+aXRlbUNvdW50KCk7Cit9CisKZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAuaCBiL1dlYktpdC9x
dC9BcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44ZWJlYWUwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vi
ZGVsZWdhdGVzZWxlY3Rwb3B1cC5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLwor
CisjaWZuZGVmIHF3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwX2gKKyNkZWZpbmUgcXdlYmRlbGVnYXRl
c2VsZWN0cG9wdXBfaAorCisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorI2luY2x1ZGUgPFFM
aXN0PgorI2luY2x1ZGUgPFFSZWN0PgorI2luY2x1ZGUgPFFTdHJpbmc+CisjaW5jbHVkZSA8UVdp
ZGdldD4KKworY2xhc3MgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBQcml2YXRlOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBRV2ViUG9wdXBXcmFwcGVyOworfQorCitjbGFzcyBRV0VCS0lU
X0VYUE9SVCBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cCB7CitwdWJsaWM6CisgICAgUVdlYkRlbGVn
YXRlU2VsZWN0UG9wdXAoKTsKKyAgICB2aXJ0dWFsIH5RV2ViRGVsZWdhdGVTZWxlY3RQb3B1cCgp
OworCisgICAgZW51bSBJdGVtVHlwZSB7IE9wdGlvbiwgR3JvdXAsIFNlcGFyYXRvciB9OworICAg
IEl0ZW1UeXBlIGl0ZW1UeXBlKGludCkgY29uc3Q7CisgICAgUVN0cmluZyBpdGVtVGV4dChpbnQp
IGNvbnN0OworICAgIFFTdHJpbmcgaXRlbVRvb2xUaXAoaW50KSBjb25zdDsKKyAgICBib29sIGl0
ZW1Jc0VuYWJsZWQoaW50KSBjb25zdDsKKyAgICBpbnQgaXRlbUNvdW50KCkgY29uc3Q7CisKKyAg
ICBRV2lkZ2V0KiB2aWV3KCk7CisgICAgUVJlY3QgZ2VvbWV0cnkoKSBjb25zdDsKKyAgICBpbnQg
Y3VycmVudEluZGV4KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbigpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHNldEN1
cnJlbnRJbmRleChpbnQgaW5kZXgpOworICAgIHZvaWQgaW5mb3JtQ2xvc2VkKCk7CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI7CisgICAgUVdl
YkRlbGVnYXRlU2VsZWN0UG9wdXBQcml2YXRlKiBkOworfTsKKworY2xhc3MgUVdlYkRlbGVnYXRl
U2VsZWN0UG9wdXBGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFFXZWJEZWxlZ2F0ZVNl
bGVjdFBvcHVwKiBjcmVhdGUoKSA9IDA7Cit9OworCisKKworI2VuZGlmIC8vIHF3ZWJkZWxlZ2F0
ZXNlbGVjdHBvcHVwX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmRlbGVnYXRlc2Vs
ZWN0cG9wdXBfcC5oIGIvV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9wLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFhY2E2YQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXBfcC5oCkBAIC0wLDAg
KzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIHF3ZWJkZWxlZ2F0ZXNlbGVjdHBv
cHVwX3BfaAorI2RlZmluZSBxd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9wX2gKKworI2luY2x1ZGUg
InF3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFF0QWJzdHJhY3RXZWJQb3B1cDsKK30KKworY2xhc3MgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBQ
cml2YXRlIHsKK3B1YmxpYzoKKyAgICBXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXAqIGNvcmVQ
b3B1cDsKKyAgICBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cFByaXZhdGUoKSA6IGNvcmVQb3B1cCgw
KSB7fQorfTsKKworCisjZW5kaWYgLy8gcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXBfcF9oCmRpZmYg
LS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCmluZGV4IDIxNDdlYWIuLjRmYjgwODggMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkv
cXdlYnBhZ2UuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5
LCAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICAg
IENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCiAgICAg
Q29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KIApAQCAtMTc0Myw2ICsxNzQzLDExIEBAIFFX
ZWJQYWdlOjp+UVdlYlBhZ2UoKQogICAgIGRlbGV0ZSBkOwogfQogCit2b2lkIFFXZWJQYWdlOjpz
ZXRTZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeShRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cEZhY3Rv
cnkqIGZhY3RvcnkpCit7CisgICAgZC0+Y2hyb21lQ2xpZW50LT5zZXRTZWxlY3RQb3B1cERlbGVn
YXRlRmFjdG9yeShmYWN0b3J5KTsKK30KKwogLyohCiAgICAgUmV0dXJucyB0aGUgbWFpbiBmcmFt
ZSBvZiB0aGUgcGFnZS4KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oIGIv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCmluZGV4IDQ3NjZjYmQuLjg1NzNmZWQgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDksIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCiAgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIElu
Yy4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKQEAgLTQ5LDYgKzQ5LDggQEAgY2xhc3MgUVdlYlBsdWdpbkZhY3Rvcnk7
CiBjbGFzcyBRV2ViSGl0VGVzdFJlc3VsdDsKIGNsYXNzIFFXZWJIaXN0b3J5SXRlbTsKIAorY2xh
c3MgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBGYWN0b3J5OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgQ2hyb21lQ2xpZW50UXQ7CiAgICAgY2xhc3MgRWRpdG9yQ2xpZW50UXQ7CkBA
IC0yMDMsNiArMjA1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmlldyhRV2lkZ2V0ICp2aWV3
KTsKICAgICBRV2lkZ2V0ICp2aWV3KCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldFNlbGVjdFBvcHVw
RGVsZWdhdGVGYWN0b3J5KFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwRmFjdG9yeSogZmFjdG9yeSk7
CisKICAgICBib29sIGlzTW9kaWZpZWQoKSBjb25zdDsKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNL
CiAgICAgUVVuZG9TdGFjayAqdW5kb1N0YWNrKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJLaXQv
cXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBjMzAzYjQzLi4xOWRjZjAx
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MCBAQAorMjAxMC0wMS0xOCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdv
c3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbUXRdIEN1c3RvbSBzZWxlY3QgcG9wdXBzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM0MTgKKworICAgICAgICBTdXBwb3J0
IGZvciBjb21ib2JveCBwb3B1cCBjdXN0b21pemF0aW9ucy4KKworICAgICAgICBDb21ib2JveCBw
b3B1cCBjdXN0b21pemF0aW9uIGNhbiBiZSBtYWRlIHByb3ZpZGluZyBhbiBpbnN0YW5jZSBvZgor
ICAgICAgICBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cEZhY3RvcnkgdG8gUVdlYlBhZ2UuIFRoZSBm
YWN0b3J5IHdpbGwgYmUgdXNlZCB0byBjcmVhdGUKKyAgICAgICAgUVdlYkRlbGVnYXRlU2VsZWN0
UG9wdXAgb2JqZWN0cyB3aGVuIG5lZWRlZC4gUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAgY2xhc3Mg
aXMgdGhlCisgICAgICAgIGJhc2UgY2xhc3MgZm9yIGN1c3RvbSBjb21ib2JveCBwb3B1cHMuCisK
KyAgICAgICAgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBGYWN0b3J5IGluaGVyaXRlZCBjbGFzc2Vz
IG11c3QgaW1wbGVtZW50IG1ldGhvZCBjcmVhdGUgYW5kCisgICAgICAgIHJldHVybiBhbiBvYmpl
Y3Qgb2YgY2xhc3MgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAuCisKKyAgICAgICAgKiBBcGkvaGVh
ZGVycy5wcmk6CisgICAgICAgICogQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwLmNwcDogQWRk
ZWQuCisgICAgICAgIChRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6UVdlYkRlbGVnYXRlU2VsZWN0
UG9wdXApOgorICAgICAgICAoUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6On5RV2ViRGVsZWdhdGVT
ZWxlY3RQb3B1cCk6CisgICAgICAgIChRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aW5mb3JtQ2xv
c2VkKToKKyAgICAgICAgKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjpzZXRDdXJyZW50SW5kZXgp
OgorICAgICAgICAoUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6OnZpZXcpOgorICAgICAgICAoUVdl
YkRlbGVnYXRlU2VsZWN0UG9wdXA6Omdlb21ldHJ5KToKKyAgICAgICAgKFFXZWJEZWxlZ2F0ZVNl
bGVjdFBvcHVwOjpjdXJyZW50SW5kZXgpOgorICAgICAgICAoUVdlYkRlbGVnYXRlU2VsZWN0UG9w
dXA6Oml0ZW1UeXBlKToKKyAgICAgICAgKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjppdGVtVGV4
dCk6CisgICAgICAgIChRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aXRlbVRvb2xUaXApOgorICAg
ICAgICAoUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Oml0ZW1Jc0VuYWJsZWQpOgorICAgICAgICAo
UVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Oml0ZW1Db3VudCk6CisgICAgICAgICogQXBpL3F3ZWJk
ZWxlZ2F0ZXNlbGVjdHBvcHVwLmg6IEFkZGVkLgorICAgICAgICAqIEFwaS9xd2ViZGVsZWdhdGVz
ZWxlY3Rwb3B1cF9wLmg6IEFkZGVkLgorICAgICAgICAoUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBQ
cml2YXRlOjpRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cFByaXZhdGUpOgorICAgICAgICAqIEFwaS9x
d2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c2V0U2VsZWN0UG9wdXBEZWxlZ2F0ZUZh
Y3RvcnkpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBw
ZXI6OlFXZWJQb3B1cFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBl
cjo6flFXZWJQb3B1cFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBl
cjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpoaWRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpDaHJvbWVDbGllbnRRdCk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0U2VsZWN0UG9wdXBEZWxlZ2F0ZUZhY3Rvcnkp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVNlbGVjdFBvcHVwKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpR
dEZhbGxiYWNrV2ViUG9wdXBDb21ibzo6UXRGYWxsYmFja1dlYlBvcHVwQ29tYm8pOgorICAgICAg
ICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwQ29tYm86OnNob3dQb3B1cCk6CisgICAgICAg
IChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXBDb21ibzo6aGlkZVBvcHVwKToKKyAgICAgICAg
KFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6UXRGYWxsYmFja1dlYlBvcHVwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6flF0RmFsbGJhY2tXZWJQb3B1cCk6Cisg
ICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cpOgorICAgICAgICAoV2Vi
Q29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpoaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFs
bGJhY2tXZWJQb3B1cDo6cG9wdWxhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFs
bGJhY2tXZWJQb3B1cC5oOgorCiAyMDEwLTAxLTA4ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29z
dGluaUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHAKaW5kZXggZjYyYmM4Ni4uMzkyNTg2NSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuY3BwCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqIENv
cHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpA
QCAtNDUsNiArNDYsOCBAQAogI2luY2x1ZGUgInF3ZWJwYWdlLmgiCiAjaW5jbHVkZSAicXdlYnBh
Z2VfcC5oIgogI2luY2x1ZGUgInF3ZWJmcmFtZV9wLmgiCisjaW5jbHVkZSAicXdlYnNlbGVjdHBv
cHVwZGVsZWdhdGUuaCIKKyNpbmNsdWRlICJxd2Vic2VsZWN0cG9wdXBkZWxlZ2F0ZV9wLmgiCiAj
aW5jbHVkZSAicXdlYnNlY3VyaXR5b3JpZ2luLmgiCiAjaW5jbHVkZSAicXdlYnNlY3VyaXR5b3Jp
Z2luX3AuaCIKICNpbmNsdWRlICJxd2Vidmlldy5oIgpAQCAtNTYsOCArNTksNDMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUKIHsKIAogCitjbGFzcyBRV2ViUG9wdXBXcmFwcGVyIDogcHVibGljIFF0QWJz
dHJhY3RXZWJQb3B1cCB7CitwdWJsaWM6CisgICAgUVdlYlBvcHVwV3JhcHBlcihRV2ViRGVsZWdh
dGVTZWxlY3RQb3B1cCogcG9wdXApOworICAgIH5RV2ViUG9wdXBXcmFwcGVyKCk7CisKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7CisK
K3ByaXZhdGU6CisgICAgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAqIG1fcG9wdXA7Cit9OworCitR
V2ViUG9wdXBXcmFwcGVyOjpRV2ViUG9wdXBXcmFwcGVyKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVw
KiBwb3B1cCkKKyAgICA6IG1fcG9wdXAocG9wdXApCit7CisgICAgbV9wb3B1cC0+ZC0+Y29yZVBv
cHVwID0gdGhpczsKK30KKworUVdlYlBvcHVwV3JhcHBlcjo6flFXZWJQb3B1cFdyYXBwZXIoKQor
eworICAgIGRlbGV0ZSBtX3BvcHVwOworfQorCit2b2lkIFFXZWJQb3B1cFdyYXBwZXI6OnNob3co
KQoreworICAgIG1fcG9wdXAtPm9wZW4oKTsKK30KKwordm9pZCBRV2ViUG9wdXBXcmFwcGVyOjpo
aWRlKCkKK3sKKyAgICBtX3BvcHVwLT5jbG9zZSgpOworfQorCiBDaHJvbWVDbGllbnRRdDo6Q2hy
b21lQ2xpZW50UXQoUVdlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkK
KyAgICAsIG1fc2VsZWN0UG9wdXBGYWN0b3J5KDApCiB7CiAgICAgdG9vbEJhcnNWaXNpYmxlID0g
c3RhdHVzQmFyVmlzaWJsZSA9IG1lbnVCYXJWaXNpYmxlID0gdHJ1ZTsKIH0KQEAgLTY3LDYgKzEw
NSwxMSBAQCBDaHJvbWVDbGllbnRRdDo6fkNocm9tZUNsaWVudFF0KCkKIAogfQogCit2b2lkIENo
cm9tZUNsaWVudFF0OjpzZXRTZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeShRV2ViRGVsZWdhdGVT
ZWxlY3RQb3B1cEZhY3RvcnkqIHBvcHVwRmFjdG9yeSkKK3sKKyAgICBtX3NlbGVjdFBvcHVwRmFj
dG9yeSA9IHBvcHVwRmFjdG9yeTsKK30KKwogdm9pZCBDaHJvbWVDbGllbnRRdDo6c2V0V2luZG93
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCkBAIC00
NjYsOCArNTA5LDEwIEBAIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OnJlcXVlc3RHZW9sb2NhdGlvblBl
cm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi1RdEFic3RyYWN0V2ViUG9wdXAqIENocm9tZUNsaWVudFF0OjpjcmVhdGVQb3B1
cCgpCitRdEFic3RyYWN0V2ViUG9wdXAqIENocm9tZUNsaWVudFF0OjpjcmVhdGVTZWxlY3RQb3B1
cCgpCiB7CisgICAgaWYgKG1fc2VsZWN0UG9wdXBGYWN0b3J5KQorICAgICAgICByZXR1cm4gbmV3
IFFXZWJQb3B1cFdyYXBwZXIobV9zZWxlY3RQb3B1cEZhY3RvcnktPmNyZWF0ZSgpKTsKICAgICBy
ZXR1cm4gbmV3IFF0RmFsbGJhY2tXZWJQb3B1cDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmggYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuaAppbmRleCAxMDZkNGNjLi5lMjVkNDZmIDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaApAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgog
ICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0zNSw2ICszNiw3IEBACiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKIAogY2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBRV2ViRGVsZWdhdGVT
ZWxlY3RQb3B1cEZhY3Rvcnk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTM1LDcgKzEz
Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKTsKIAot
ICAgICAgICBRdEFic3RyYWN0V2ViUG9wdXAqIGNyZWF0ZVBvcHVwKCk7CisgICAgICAgIFF0QWJz
dHJhY3RXZWJQb3B1cCogY3JlYXRlU2VsZWN0UG9wdXAoKTsKKworICAgICAgICB2b2lkIHNldFNl
bGVjdFBvcHVwRGVsZWdhdGVGYWN0b3J5KFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwRmFjdG9yeSog
cG9wdXBGYWN0b3J5KTsKIAogICAgICAgICBRV2ViUGFnZSogbV93ZWJQYWdlOwogICAgICAgICBX
ZWJDb3JlOjpLVVJMIGxhc3RIb3ZlclVSTDsKQEAgLTE0NSw2ICsxNDksOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGJvb2wgdG9vbEJhcnNWaXNpYmxlOwogICAgICAgICBib29sIHN0
YXR1c0JhclZpc2libGU7CiAgICAgICAgIGJvb2wgbWVudUJhclZpc2libGU7CisKKyAgICAgICAg
UVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBGYWN0b3J5KiBtX3NlbGVjdFBvcHVwRmFjdG9yeTsKICAg
ICB9OwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFj
a1dlYlBvcHVwLmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9w
dXAuY3BwCmluZGV4IDM0NGQ1OGEuLmJlOThlNTMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwCkBAIC0zMSw4NyArMzEsOTggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitRdEZhbGxiYWNrV2ViUG9wdXBDb21ibzo6UXRGYWxsYmFja1dl
YlBvcHVwQ29tYm8oUXRGYWxsYmFja1dlYlBvcHVwJiBvd25lclBvcHVwKQorICAgIDogbV9vd25l
clBvcHVwKG93bmVyUG9wdXApCit7Cit9CisKK3ZvaWQgUXRGYWxsYmFja1dlYlBvcHVwQ29tYm86
OnNob3dQb3B1cCgpCit7CisgICAgUUNvbWJvQm94OjpzaG93UG9wdXAoKTsKKyAgICBtX293bmVy
UG9wdXAubV9wb3B1cFZpc2libGUgPSB0cnVlOworfQorCit2b2lkIFF0RmFsbGJhY2tXZWJQb3B1
cENvbWJvOjpoaWRlUG9wdXAoKQoreworICAgIFFXaWRnZXQqIGFjdGl2ZUZvY3VzID0gUUFwcGxp
Y2F0aW9uOjpmb2N1c1dpZGdldCgpOworICAgIGlmIChhY3RpdmVGb2N1cyAmJiBhY3RpdmVGb2N1
cyA9PSBRQ29tYm9Cb3g6OnZpZXcoKQorICAgICAgICAmJiBhY3RpdmVGb2N1cy0+dGVzdEF0dHJp
YnV0ZShRdDo6V0FfSW5wdXRNZXRob2RFbmFibGVkKSkgeworICAgICAgICBRSW5wdXRDb250ZXh0
KiBxaWMgPSBhY3RpdmVGb2N1cy0+aW5wdXRDb250ZXh0KCk7CisgICAgICAgIGlmIChxaWMpIHsK
KyAgICAgICAgICAgIHFpYy0+cmVzZXQoKTsKKyAgICAgICAgICAgIHFpYy0+c2V0Rm9jdXNXaWRn
ZXQoMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBRQ29tYm9Cb3g6OmhpZGVQb3B1cCgpOwor
ICAgIGlmICghbV9vd25lclBvcHVwLm1fcG9wdXBWaXNpYmxlKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX293bmVyUG9wdXAubV9wb3B1cFZpc2libGUgPSBmYWxzZTsKKyAgICBtX293bmVyUG9w
dXAucG9wdXBEaWRIaWRlKHRydWUpOworfQorCiAvLyBRdEZhbGxiYWNrV2ViUG9wdXAKIAogUXRG
YWxsYmFja1dlYlBvcHVwOjpRdEZhbGxiYWNrV2ViUG9wdXAoKQogICAgIDogUXRBYnN0cmFjdFdl
YlBvcHVwKCkKICAgICAsIG1fcG9wdXBWaXNpYmxlKGZhbHNlKQorICAgICwgbV9jb21ibyhuZXcg
UXRGYWxsYmFja1dlYlBvcHVwQ29tYm8oKnRoaXMpKQogewotICAgIGNvbm5lY3QodGhpcywgU0lH
TkFMKGFjdGl2YXRlZChpbnQpKSwKKyAgICBjb25uZWN0KG1fY29tYm8sIFNJR05BTChhY3RpdmF0
ZWQoaW50KSksCiAgICAgICAgICAgICBTTE9UKGFjdGl2ZUNoYW5nZWQoaW50KSksIFF0OjpRdWV1
ZWRDb25uZWN0aW9uKTsKIH0KIAotCi12b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyhjb25z
dCBRUmVjdCYgZ2VvbWV0cnksIGludCBzZWxlY3RlZEluZGV4KQorUXRGYWxsYmFja1dlYlBvcHVw
Ojp+UXRGYWxsYmFja1dlYlBvcHVwKCkKIHsKLSAgICBzZXRDdXJyZW50SW5kZXgoc2VsZWN0ZWRJ
bmRleCk7Ci0KLSAgICAvKgotICAgIFFXaWRnZXQqIHBhcmVudCA9IDA7Ci0gICAgaWYgKGNsaWVu
dCgpLT5ob3N0V2luZG93KCkgJiYgY2xpZW50KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdl
Q2xpZW50KCkpCi0gICAgICAgcGFyZW50ID0gY2xpZW50KCktPmhvc3RXaW5kb3coKS0+cGxhdGZv
cm1QYWdlQ2xpZW50KCktPm93bmVyV2lkZ2V0KCk7CisgICAgZGVsZXRlIG1fY29tYm87Cit9CiAK
LSAgICBzZXRQYXJlbnQocGFyZW50KTsKLSAgICAqLwordm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6
OnNob3coKQoreworICAgIHBvcHVsYXRlKCk7CisgICAgbV9jb21iby0+c2V0UGFyZW50KHZpZXco
KSk7CisgICAgbV9jb21iby0+c2V0Q3VycmVudEluZGV4KGN1cnJlbnRJbmRleCgpKTsKIAotICAg
IHNldEdlb21ldHJ5KFFSZWN0KGdlb21ldHJ5LmxlZnQoKSwgZ2VvbWV0cnkudG9wKCksIGdlb21l
dHJ5LndpZHRoKCksIHNpemVIaW50KCkuaGVpZ2h0KCkpKTsKKyAgICBRUmVjdCByZWN0ID0gZ2Vv
bWV0cnkoKTsKKyAgICBtX2NvbWJvLT5zZXRHZW9tZXRyeShRUmVjdChyZWN0LmxlZnQoKSwgcmVj
dC50b3AoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LndpZHRoKCksIG1f
Y29tYm8tPnNpemVIaW50KCkuaGVpZ2h0KCkpKTsKIAogICAgIFFNb3VzZUV2ZW50IGV2ZW50KFFF
dmVudDo6TW91c2VCdXR0b25QcmVzcywgUUN1cnNvcjo6cG9zKCksIFF0OjpMZWZ0QnV0dG9uLAog
ICAgICAgICAgICAgICAgICAgICAgIFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9Nb2RpZmllcik7Ci0g
ICAgUUNvcmVBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KHRoaXMsICZldmVudCk7CisgICAgUUNvcmVB
cHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fY29tYm8sICZldmVudCk7CiB9CiAKLXZvaWQgUXRGYWxs
YmFja1dlYlBvcHVwOjpwb3B1bGF0ZShjb25zdCBRRm9udCYgZm9udCwgY29uc3QgUUxpc3Q8SXRl
bT4mIGl0ZW1zKQordm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OmhpZGUoKQogewotICAgIGNsZWFy
KCk7CisgICAgbV9jb21iby0+aGlkZVBvcHVwKCk7Cit9CisKK3ZvaWQgUXRGYWxsYmFja1dlYlBv
cHVwOjpwb3B1bGF0ZSgpCit7CisgICAgbV9jb21iby0+Y2xlYXIoKTsKIAotICAgIFFTdGFuZGFy
ZEl0ZW1Nb2RlbCogbW9kZWwgPSBxb2JqZWN0X2Nhc3Q8UVN0YW5kYXJkSXRlbU1vZGVsKj4oUUNv
bWJvQm94Ojptb2RlbCgpKTsKKyAgICBRU3RhbmRhcmRJdGVtTW9kZWwqIG1vZGVsID0gcW9iamVj
dF9jYXN0PFFTdGFuZGFyZEl0ZW1Nb2RlbCo+KG1fY29tYm8tPm1vZGVsKCkpOwogICAgIFFfQVNT
RVJUKG1vZGVsKTsKIAotICAgIHNldEZvbnQoZm9udCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBpdGVtcy5zaXplKCk7ICsraSkgewotICAgICAgICBzd2l0Y2ggKGl0ZW1zW2ldLnR5cGUpIHsK
LSAgICAgICAgY2FzZSBRdEFic3RyYWN0V2ViUG9wdXA6Okl0ZW06OlNlcGFyYXRvcjoKLSAgICAg
ICAgICAgIGluc2VydFNlcGFyYXRvcihpKTsKKyAgICBtX2NvbWJvLT5zZXRGb250KGZvbnQoKSk7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtQ291bnQoKTsgKytpKSB7CisgICAgICAgIHN3
aXRjaCAoaXRlbVR5cGUoaSkpIHsKKyAgICAgICAgY2FzZSBTZXBhcmF0b3I6CisgICAgICAgICAg
ICBtX2NvbWJvLT5pbnNlcnRTZXBhcmF0b3IoaSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBRdEFic3RyYWN0V2ViUG9wdXA6Okl0ZW06Okdyb3VwOgotICAgICAgICAgICAgaW5z
ZXJ0SXRlbShpLCBpdGVtc1tpXS50ZXh0KTsKKyAgICAgICAgY2FzZSBHcm91cDoKKyAgICAgICAg
ICAgIG1fY29tYm8tPmluc2VydEl0ZW0oaSwgaXRlbVRleHQoaSkpOwogICAgICAgICAgICAgbW9k
ZWwtPml0ZW0oaSktPnNldEVuYWJsZWQoZmFsc2UpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgUXRBYnN0cmFjdFdlYlBvcHVwOjpJdGVtOjpPcHRpb246Ci0gICAgICAgICAgICBp
bnNlcnRJdGVtKGksIGl0ZW1zW2ldLnRleHQpOwotICAgICAgICAgICAgbW9kZWwtPml0ZW0oaSkt
PnNldEVuYWJsZWQoaXRlbXNbaV0uZW5hYmxlZCk7CisgICAgICAgIGNhc2UgT3B0aW9uOgorICAg
ICAgICAgICAgbV9jb21iby0+aW5zZXJ0SXRlbShpLCBpdGVtVGV4dChpKSk7CisgICAgICAgICAg
ICBtb2RlbC0+aXRlbShpKS0+c2V0RW5hYmxlZChpdGVtSXNFbmFibGVkKGkpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIFF0RmFsbGJhY2tXZWJQb3B1
cDo6c2hvd1BvcHVwKCkKLXsKLSAgICBRQ29tYm9Cb3g6OnNob3dQb3B1cCgpOwotICAgIG1fcG9w
dXBWaXNpYmxlID0gdHJ1ZTsKLX0KLQotdm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OmhpZGVQb3B1
cCgpCi17Ci0gICAgUVdpZGdldCogYWN0aXZlRm9jdXMgPSBRQXBwbGljYXRpb246OmZvY3VzV2lk
Z2V0KCk7Ci0gICAgaWYgKGFjdGl2ZUZvY3VzICYmIGFjdGl2ZUZvY3VzID09IHZpZXcoKQotICAg
ICAgICAmJiBhY3RpdmVGb2N1cy0+dGVzdEF0dHJpYnV0ZShRdDo6V0FfSW5wdXRNZXRob2RFbmFi
bGVkKSkgewotICAgICAgICBRSW5wdXRDb250ZXh0KiBxaWMgPSBhY3RpdmVGb2N1cy0+aW5wdXRD
b250ZXh0KCk7Ci0gICAgICAgIGlmIChxaWMpIHsKLSAgICAgICAgICAgIHFpYy0+cmVzZXQoKTsK
LSAgICAgICAgICAgIHFpYy0+c2V0Rm9jdXNXaWRnZXQoMCk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBRQ29tYm9Cb3g6OmhpZGVQb3B1cCgpOwotICAgIGlmICghbV9wb3B1cFZpc2libGUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fcG9wdXBWaXNpYmxlID0gZmFsc2U7Ci0gICAgcG9wdXBE
aWRIaWRlKHRydWUpOwotfQotCiB2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6YWN0aXZlQ2hhbmdl
ZChpbnQgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4IDwgMCkKQEAgLTEyMCw5ICsxMzEsNCBAQCB2
b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6YWN0aXZlQ2hhbmdlZChpbnQgaW5kZXgpCiAgICAgdmFs
dWVDaGFuZ2VkKGluZGV4KTsKIH0KIAotdm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OnNldFBhcmVu
dChRV2lkZ2V0KiBwYXJlbnQpCi17Ci0gICAgUUNvbWJvQm94OjpzZXRQYXJlbnQocGFyZW50KTsK
LX0KLQogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tX
ZWJQb3B1cC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5o
CmluZGV4IDVhZmZlMGEuLjhmYmVjNmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UXRGYWxsYmFja1dlYlBvcHVwLmgKQEAgLTI1LDI1ICsyNSwzNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFF0RmFsbGJhY2tXZWJQb3B1cCA6IHByaXZhdGUgUUNvbWJvQm94LCBw
dWJsaWMgUXRBYnN0cmFjdFdlYlBvcHVwIHsKK2NsYXNzIFF0RmFsbGJhY2tXZWJQb3B1cENvbWJv
OworCitjbGFzcyBRdEZhbGxiYWNrV2ViUG9wdXAgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFF0
QWJzdHJhY3RXZWJQb3B1cCB7CiAgICAgUV9PQkpFQ1QKIHB1YmxpYzoKICAgICBRdEZhbGxiYWNr
V2ViUG9wdXAoKTsKKyAgICB+UXRGYWxsYmFja1dlYlBvcHVwKCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc2hvdyhjb25zdCBRUmVjdCYgZ2VvbWV0cnksIGludCBzZWxlY3RlZEluZGV4KTsKLSAgICB2
aXJ0dWFsIHZvaWQgaGlkZSgpIHsgaGlkZVBvcHVwKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcG9w
dWxhdGUoY29uc3QgUUZvbnQmIGZvbnQsIGNvbnN0IFFMaXN0PEl0ZW0+JiBpdGVtcyk7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFBhcmVudChRV2lkZ2V0KiBwYXJlbnQpOworICAgIHZpcnR1YWwgdm9p
ZCBzaG93KCk7CisgICAgdmlydHVhbCB2b2lkIGhpZGUoKTsKIAogcHJpdmF0ZSBzbG90czoKICAg
ICB2b2lkIGFjdGl2ZUNoYW5nZWQoaW50KTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
UXRGYWxsYmFja1dlYlBvcHVwQ29tYm87CiAgICAgYm9vbCBtX3BvcHVwVmlzaWJsZTsKKyAgICBR
dEZhbGxiYWNrV2ViUG9wdXBDb21ibyogbV9jb21ibzsKIAorICAgIHZvaWQgcG9wdWxhdGUoKTsK
K307CiAKK2NsYXNzIFF0RmFsbGJhY2tXZWJQb3B1cENvbWJvIDogcHVibGljIFFDb21ib0JveCB7
CitwdWJsaWM6CisgICAgUXRGYWxsYmFja1dlYlBvcHVwQ29tYm8oUXRGYWxsYmFja1dlYlBvcHVw
JiBvd25lclBvcHVwKTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BvcHVwKCk7CiAgICAgdmlydHVh
bCB2b2lkIGhpZGVQb3B1cCgpOworCitwcml2YXRlOgorICAgIFF0RmFsbGJhY2tXZWJQb3B1cCYg
bV9vd25lclBvcHVwOwogfTsKIAogfQotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46894</attachid>
            <date>2010-01-19 00:15:41 -0800</date>
            <delta_ts>2010-01-20 06:43:18 -0800</delta_ts>
            <desc>Custom popups and popup factories.</desc>
            <filename>0001-WebCore-Qt-Custom-select-popups.patch</filename>
            <type>text/plain</type>
            <size>31741</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAyZjJjYTRhODEyNDM1NTA3M2M1ZjU2YzFhYjIxOGQ1MDRhZTcwNzM4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFR1ZSwgMTkgSmFuIDIwMTAgMDU6MTM6MDcgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBXZWJDb3JlOiBbUXRdIEN1c3RvbSBzZWxlY3QgcG9wdXBzLgogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNDE4CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KCmNsYXNzIFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwIGFkZGVkIHRvIFF0IEFQSS4KY2xhc3Nl
cyBXZWJDb3JlOjpQb3B1cE1lbnUgYW5kIFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cCBoYXZl
IGNoYW5nZWQgdG8Kc3VwcG9ydCB0aGUgbmV3IEFQSS4KCiogV2ViQ29yZS5wcm86CiogcGxhdGZv
cm0vcXQvUG9wdXBNZW51UXQuY3BwOgooV2ViQ29yZTo6UG9wdXBNZW51OjpzaG93KToKKiBwbGF0
Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuY3BwOgooV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBv
cHVwOjpRdEFic3RyYWN0V2ViUG9wdXApOgooV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpp
dGVtVHlwZSk6CiogcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmg6CihXZWJDb3JlOjpR
dEFic3RyYWN0V2ViUG9wdXA6Oik6CihXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6Oml0ZW1U
ZXh0KToKKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6aXRlbVRvb2xUaXApOgooV2ViQ29y
ZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjppdGVtSXNFbmFibGVkKToKKFdlYkNvcmU6OlF0QWJzdHJh
Y3RXZWJQb3B1cDo6aXRlbUNvdW50KToKKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6dmll
dyk6CihXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6Omdlb21ldHJ5KToKKFdlYkNvcmU6OlF0
QWJzdHJhY3RXZWJQb3B1cDo6Y3VycmVudEluZGV4KToKKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQ
b3B1cDo6Zm9udCk6CgpXZWJLaXQvcXQ6IFN1cHBvcnQgZm9yIGNvbWJvYm94IHBvcHVwIGN1c3Rv
bWl6YXRpb25zLgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpDb21ib2JveCBwb3B1cCBj
dXN0b21pemF0aW9uIGNhbiBiZSBtYWRlIHByb3ZpZGluZyBhbiBpbnN0YW5jZSBvZgpRV2ViRGVs
ZWdhdGVTZWxlY3RQb3B1cEZhY3RvcnkgdG8gUVdlYlBhZ2UuIFRoZSBmYWN0b3J5IHdpbGwgYmUg
dXNlZCB0byBjcmVhdGUKUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAgb2JqZWN0cyB3aGVuIG5lZWRl
ZC4gUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAgY2xhc3MgaXMgdGhlCmJhc2UgY2xhc3MgZm9yIGN1
c3RvbSBjb21ib2JveCBwb3B1cHMuCgpRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cEZhY3RvcnkgaW5o
ZXJpdGVkIGNsYXNzZXMgbXVzdCBpbXBsZW1lbnQgbWV0aG9kIGNyZWF0ZSBhbmQKcmV0dXJuIGFu
IG9iamVjdCBvZiBjbGFzcyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cC4KCltRdF0gQ3VzdG9tIHNl
bGVjdCBwb3B1cHMuCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzQx
OAoKKiBBcGkvaGVhZGVycy5wcmk6CiogQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwLmNwcDog
QWRkZWQuCihRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6UVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAp
OgooUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6On5RV2ViRGVsZWdhdGVTZWxlY3RQb3B1cCk6CihR
V2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aW5mb3JtQ2xvc2VkKToKKFFXZWJEZWxlZ2F0ZVNlbGVj
dFBvcHVwOjpzZXRDdXJyZW50SW5kZXgpOgooUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6OnZpZXcp
OgooUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Omdlb21ldHJ5KToKKFFXZWJEZWxlZ2F0ZVNlbGVj
dFBvcHVwOjpjdXJyZW50SW5kZXgpOgooUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Oml0ZW1UeXBl
KToKKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjppdGVtVGV4dCk6CihRV2ViRGVsZWdhdGVTZWxl
Y3RQb3B1cDo6aXRlbVRvb2xUaXApOgooUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Oml0ZW1Jc0Vu
YWJsZWQpOgooUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Oml0ZW1Db3VudCk6CiogQXBpL3F3ZWJk
ZWxlZ2F0ZXNlbGVjdHBvcHVwLmg6IEFkZGVkLgoqIEFwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1
cF9wLmg6IEFkZGVkLgooUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBQcml2YXRlOjpRV2ViRGVsZWdh
dGVTZWxlY3RQb3B1cFByaXZhdGUpOgoqIEFwaS9xd2VicGFnZS5jcHA6CihRV2ViUGFnZTo6c2V0
U2VsZWN0UG9wdXBEZWxlZ2F0ZUZhY3RvcnkpOgoqIEFwaS9xd2VicGFnZS5oOgoqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OlFX
ZWJQb3B1cFdyYXBwZXIpOgooV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6flFXZWJQb3B1cFdy
YXBwZXIpOgooV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6c2hvdyk6CihXZWJDb3JlOjpRV2Vi
UG9wdXBXcmFwcGVyOjpoaWRlKToKKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpDaHJvbWVDbGll
bnRRdCk6CihXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0U2VsZWN0UG9wdXBEZWxlZ2F0ZUZh
Y3RvcnkpOgooV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVNlbGVjdFBvcHVwKToKKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgoqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJh
Y2tXZWJQb3B1cC5jcHA6CihXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXBDb21ibzo6UXRGYWxs
YmFja1dlYlBvcHVwQ29tYm8pOgooV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwQ29tYm86OnNo
b3dQb3B1cCk6CihXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXBDb21ibzo6aGlkZVBvcHVwKToK
KFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6UXRGYWxsYmFja1dlYlBvcHVwKToKKFdlYkNv
cmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6flF0RmFsbGJhY2tXZWJQb3B1cCk6CihXZWJDb3JlOjpR
dEZhbGxiYWNrV2ViUG9wdXA6OnNob3cpOgooV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpo
aWRlKToKKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6cG9wdWxhdGUpOgoqIFdlYkNvcmVT
dXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOCArKysrKwogV2ViQ29yZS9XZWJDb3JlLnBy
byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvcGxhdGZvcm0v
cXQvUG9wdXBNZW51UXQuY3BwICAgICAgICAgICAgIHwgICA0NCArKy0tLS0tLQogV2ViQ29yZS9w
bGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuY3BwICAgICAgfCAgIDExICsrCiBXZWJDb3Jl
L3BsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5oICAgICAgICB8ICAgMzEgKysrKy0tCiBX
ZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJpICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0K
IFdlYktpdC9xdC9BcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAuY3BwICAgICAgIHwgICA5NCAr
KysrKysrKysrKysrKysrKysKIFdlYktpdC9xdC9BcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAu
aCAgICAgICAgIHwgICA3MSArKysrKysrKysrKysrCiBXZWJLaXQvcXQvQXBpL3F3ZWJkZWxlZ2F0
ZXNlbGVjdHBvcHVwX3AuaCAgICAgICB8ICAgMzcgKysrKysrKwogV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZS5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICstCiBXZWJLaXQvcXQvQXBpL3F3
ZWJwYWdlLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIFdlYktpdC9xdC9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1NyArKysrKysrKysrKwogV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCAgICAgfCAgIDQ3ICsrKysr
KysrKy0KIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oICAgICAgIHwg
ICAgOCArKy0KIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3Bw
IHwgIDEyMCArKysrKysrKysrKystLS0tLS0tLS0tLQogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1F0RmFsbGJhY2tXZWJQb3B1cC5oICAgfCAgIDIxICsrKy0KIDE2IGZpbGVzIGNoYW5nZWQsIDQ3
NiBpbnNlcnRpb25zKCspLCAxMTEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2Vi
S2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBXZWJLaXQvcXQvQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBXZWJLaXQvcXQvQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwX3AuaAoKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQxYjc0YS4u
YzYzNjI1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wMS0xOSAgTHVpeiBBZ29zdGluaSAgPGx1aXou
YWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbUXRdIEN1c3RvbSBzZWxlY3QgcG9wdXBzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM0MTgKKworICAgICAgICBjbGFz
cyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cCBhZGRlZCB0byBRdCBBUEkuCisgICAgICAgIGNsYXNz
ZXMgV2ViQ29yZTo6UG9wdXBNZW51IGFuZCBXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXAgaGF2
ZSBjaGFuZ2VkIHRvCisgICAgICAgIHN1cHBvcnQgdGhlIG5ldyBBUEkuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnBybzoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnNob3cpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1F0
QWJzdHJhY3RXZWJQb3B1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9w
dXA6OlF0QWJzdHJhY3RXZWJQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpRdEFic3RyYWN0V2Vi
UG9wdXA6Oml0ZW1UeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9w
dXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6KToKKyAgICAgICAg
KFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6aXRlbVRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjppdGVtVG9vbFRpcCk6CisgICAgICAgIChXZWJDb3JlOjpR
dEFic3RyYWN0V2ViUG9wdXA6Oml0ZW1Jc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UXRB
YnN0cmFjdFdlYlBvcHVwOjppdGVtQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6UXRBYnN0cmFj
dFdlYlBvcHVwOjp2aWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6
Z2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpjdXJyZW50
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpmb250KToKKwog
MjAxMC0wMS0wOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuICBGaXggbmFtZXNwYWNlIGluZGVudCBmb3IgU2VjdXJpdHlPcmlnaW4uaC4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4
IDZmMDM4MzguLjA3YmQ2ZjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjQ3Miw2ICsyNDcyLDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcCBcCiAg
ICAgLi4vV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBp
L3FncmFwaGljc3dlYnZpZXcuY3BwIFwKKyAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJkZWxlZ2F0
ZXNlbGVjdHBvcHVwLmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgXAog
ICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYnZpZXcuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBp
L3F3ZWJlbGVtZW50LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BvcHVw
TWVudVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwCmluZGV4IDYz
ZTE1NjUuLmFlNGZjMjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUG9wdXBNZW51
UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwCkBAIC00Niw0
NyArNDYsMjUgQEAgUG9wdXBNZW51Ojp+UG9wdXBNZW51KCkKICAgICBkZWxldGUgbV9wb3B1cDsK
IH0KIAotc3RhdGljIFFMaXN0PFF0QWJzdHJhY3RXZWJQb3B1cDo6SXRlbT4gZ2V0SXRlbXMoUG9w
dXBNZW51Q2xpZW50KiBjbGllbnQpCi17Ci0gICAgUUxpc3Q8UXRBYnN0cmFjdFdlYlBvcHVwOjpJ
dGVtPiByZXN1bHQ7Ci0KLSAgICBpbnQgc2l6ZSA9IGNsaWVudC0+bGlzdFNpemUoKTsKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBRdEFic3RyYWN0V2ViUG9w
dXA6Okl0ZW0gaXRlbTsKLQotICAgICAgICBpZiAoY2xpZW50LT5pdGVtSXNTZXBhcmF0b3IoaSkp
Ci0gICAgICAgICAgICBpdGVtLnR5cGUgPSBRdEFic3RyYWN0V2ViUG9wdXA6Okl0ZW06OlNlcGFy
YXRvcjsKLSAgICAgICAgZWxzZSBpZiAoY2xpZW50LT5pdGVtSXNMYWJlbChpKSkKLSAgICAgICAg
ICAgIGl0ZW0udHlwZSA9IFF0QWJzdHJhY3RXZWJQb3B1cDo6SXRlbTo6R3JvdXA7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGl0ZW0udHlwZSA9IFF0QWJzdHJhY3RXZWJQb3B1cDo6SXRlbTo6
T3B0aW9uOwotCi0gICAgICAgIGl0ZW0udGV4dCA9IGNsaWVudC0+aXRlbVRleHQoaSk7Ci0gICAg
ICAgIGl0ZW0udG9vbFRpcCA9IGNsaWVudC0+aXRlbVRvb2xUaXAoaSk7Ci0gICAgICAgIGl0ZW0u
ZW5hYmxlZCA9IGNsaWVudC0+aXRlbUlzRW5hYmxlZChpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZChpdGVtKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogdm9pZCBQb3B1cE1lbnU6
OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCiB7
CiAgICAgQ2hyb21lQ2xpZW50UXQqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PENocm9tZUNs
aWVudFF0Kj4oCiAgICAgICAgIHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVu
dCgpKTsKICAgICBBU1NFUlQoY2hyb21lQ2xpZW50KTsKIAotICAgIGlmICghbV9wb3B1cCkgewot
ICAgICAgICBtX3BvcHVwID0gY2hyb21lQ2xpZW50LT5jcmVhdGVQb3B1cCgpOwotICAgICAgICBt
X3BvcHVwLT5tX2NsaWVudCA9IG1fcG9wdXBDbGllbnQ7Ci0gICAgfQorICAgIGlmICghbV9wb3B1
cCkKKyAgICAgICAgbV9wb3B1cCA9IGNocm9tZUNsaWVudC0+Y3JlYXRlU2VsZWN0UG9wdXAoKTsK
KworICAgIG1fcG9wdXAtPm1fY2xpZW50ID0gbV9wb3B1cENsaWVudDsKKyAgICBtX3BvcHVwLT5t
X2N1cnJlbnRJbmRleCA9IGluZGV4OworICAgIG1fcG9wdXAtPm1fdmlldyA9IGNocm9tZUNsaWVu
dC0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPm93bmVyV2lkZ2V0KCk7CisKKyAgICBRUmVjdCBnZW9t
ZXRyeShyZWN0KTsKKyAgICBnZW9tZXRyeS5tb3ZlVG9wTGVmdCh2aWV3LT5jb250ZW50c1RvV2lu
ZG93KHJlY3QudG9wTGVmdCgpKSk7CisgICAgbV9wb3B1cC0+bV9nZW9tZXRyeSA9IGdlb21ldHJ5
OwogCi0gICAgbV9wb3B1cC0+c2V0UGFyZW50KGNocm9tZUNsaWVudC0+cGxhdGZvcm1QYWdlQ2xp
ZW50KCktPm93bmVyV2lkZ2V0KCkpOwotICAgIG1fcG9wdXAtPnBvcHVsYXRlKG1fcG9wdXBDbGll
bnQtPm1lbnVTdHlsZSgpLmZvbnQoKS5mb250KCksCi0gICAgICAgICAgICAgICAgICAgICAgZ2V0
SXRlbXMobV9wb3B1cENsaWVudCkpOworICAgIG1fcG9wdXAtPnNob3coKTsKIAotICAgIFFSZWN0
IGJvdW5kcyA9IHJlY3Q7Ci0gICAgYm91bmRzLm1vdmVUb3BMZWZ0KHZpZXctPmNvbnRlbnRzVG9X
aW5kb3cocmVjdC50b3BMZWZ0KCkpKTsKLSAgICBtX3BvcHVwLT5zaG93KGJvdW5kcywgaW5kZXgp
OwogfQogCiB2b2lkIFBvcHVwTWVudTo6aGlkZSgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1F0QWJz
dHJhY3RXZWJQb3B1cC5jcHAKaW5kZXggNzVkOGZiNS4uZWY3Y2MyYyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcApAQCAtMjcsNiArMjcsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFF0QWJzdHJhY3RXZWJQb3B1cDo6UXRBYnN0cmFjdFdlYlBvcHVwKCkK
ICAgICA6IG1fY2xpZW50KDApCisgICAgLCBtX3ZpZXcoMCkKKyAgICAsIG1fY3VycmVudEluZGV4
KC0xKQogewogfQogCkBAIC00Niw0ICs0OCwxMyBAQCB2b2lkIFF0QWJzdHJhY3RXZWJQb3B1cDo6
dmFsdWVDaGFuZ2VkKGludCBpbmRleCkKICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkKGluZGV4
KTsKIH0KIAorUXRBYnN0cmFjdFdlYlBvcHVwOjpJdGVtVHlwZSBRdEFic3RyYWN0V2ViUG9wdXA6
Oml0ZW1UeXBlKGludCBpZHgpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xpZW50LT5pdGVtSXNTZXBh
cmF0b3IoaWR4KSkKKyAgICAgICAgcmV0dXJuIFNlcGFyYXRvcjsKKyAgICBpZiAobV9jbGllbnQt
Pml0ZW1Jc0xhYmVsKGlkeCkpCisgICAgICAgIHJldHVybiBHcm91cDsKKyAgICByZXR1cm4gT3B0
aW9uOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEFi
c3RyYWN0V2ViUG9wdXAuaAppbmRleCBjODkwNDQxLi4xYzhmMDViIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmgKQEAgLTIwLDM4ICsyMCw0NyBAQAogI2lmbmRlZiBR
dEFic3RyYWN0V2ViUG9wdXBfaAogI2RlZmluZSBRdEFic3RyYWN0V2ViUG9wdXBfaAogCisjaW5j
bHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCisKICNpbmNsdWRlIDxRRm9udD4KICNpbmNsdWRlIDxR
TGlzdD4KICNpbmNsdWRlIDxRUmVjdD4KKyNpbmNsdWRlIDxRV2lkZ2V0PgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFBvcHVwTWVudUNsaWVudDsKIAogY2xhc3MgUXRBYnN0cmFjdFdl
YlBvcHVwIHsKIHB1YmxpYzoKLSAgICBzdHJ1Y3QgSXRlbSB7Ci0gICAgICAgIGVudW0geyBPcHRp
b24sIEdyb3VwLCBTZXBhcmF0b3IgfSB0eXBlOwotICAgICAgICBRU3RyaW5nIHRleHQ7Ci0gICAg
ICAgIFFTdHJpbmcgdG9vbFRpcDsKLSAgICAgICAgYm9vbCBlbmFibGVkOwotICAgIH07CisgICAg
ZW51bSBJdGVtVHlwZSB7IE9wdGlvbiwgR3JvdXAsIFNlcGFyYXRvciB9OworCisgICAgSXRlbVR5
cGUgaXRlbVR5cGUoaW50KSBjb25zdDsKKyAgICBRU3RyaW5nIGl0ZW1UZXh0KGludCBpZHgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xpZW50LT5pdGVtVGV4dChpZHgpOyB9CisgICAgUVN0cmluZyBpdGVt
VG9vbFRpcChpbnQgaWR4KSBjb25zdCB7IHJldHVybiBtX2NsaWVudC0+aXRlbVRvb2xUaXAoaWR4
KTsgfQorICAgIGJvb2wgaXRlbUlzRW5hYmxlZChpbnQgaWR4KSBjb25zdCB7IHJldHVybiBtX2Ns
aWVudC0+aXRlbUlzRW5hYmxlZChpZHgpOyB9CisgICAgaW50IGl0ZW1Db3VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2xpZW50LT5saXN0U2l6ZSgpOyB9CisKKyAgICBRV2lkZ2V0KiB2aWV3KCkgeyBy
ZXR1cm4gbV92aWV3OyB9CisgICAgUVJlY3QgZ2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBtX2dl
b21ldHJ5OyB9CisgICAgaW50IGN1cnJlbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dEluZGV4OyB9CiAKICAgICBRdEFic3RyYWN0V2ViUG9wdXAoKTsKICAgICB2aXJ0dWFsIH5RdEFi
c3RyYWN0V2ViUG9wdXAoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzaG93KGNvbnN0IFFSZWN0JiBn
ZW9tZXRyeSwgaW50IHNlbGVjdGVkSW5kZXgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvdygp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcG9w
dWxhdGUoY29uc3QgUUZvbnQmIGZvbnQsIGNvbnN0IFFMaXN0PEl0ZW0+JiBpdGVtcykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoUVdpZGdldCogcGFyZW50KSA9IDA7CiAKLXByb3Rl
Y3RlZDoKICAgICB2b2lkIHBvcHVwRGlkSGlkZShib29sIGFjY2VwdFN1Z2dlc3Rpb25zKTsKICAg
ICB2b2lkIHZhbHVlQ2hhbmdlZChpbnQgaW5kZXgpOwogCisgICAgUUZvbnQgZm9udCgpIHsgcmV0
dXJuIG1fY2xpZW50LT5tZW51U3R5bGUoKS5mb250KCkuZm9udCgpOyB9CisKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIFBvcHVwTWVudTsKICAgICBQb3B1cE1lbnVDbGllbnQqIG1fY2xpZW50
OworICAgIFFXaWRnZXQqIG1fdmlldzsKKyAgICBpbnQgbV9jdXJyZW50SW5kZXg7CisgICAgUVJl
Y3QgbV9nZW9tZXRyeTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvaGVhZGVy
cy5wcmkgYi9XZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJpCmluZGV4IDFhNDI1OTcuLjNiZDM3Yzcg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkKKysrIGIvV2ViS2l0L3F0L0Fw
aS9oZWFkZXJzLnByaQpAQCAtMTEsNCArMTEsNiBAQCBXRUJLSVRfQVBJX0hFQURFUlMgPSAkJFBX
RC9xd2ViZnJhbWUuaCBcCiAgICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2VicGx1Z2luZmFj
dG9yeS5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJoaXN0b3J5LmggXAogICAg
ICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYmluc3BlY3Rvci5oIFwKLSAgICAgICAgICAgICAg
ICAgICAgICQkUFdEL3F3ZWJraXR2ZXJzaW9uLmgKKyAgICAgICAgICAgICAgICAgICAgICQkUFdE
L3F3ZWJraXR2ZXJzaW9uLmggXAorICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYmRlbGVn
YXRlc2VsZWN0cG9wdXAuaCBcCisgICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2ViZGVsZWdh
dGVzZWxlY3Rwb3B1cF9wLmgKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmRlbGVnYXRl
c2VsZWN0cG9wdXAuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhkODhkMgotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAuY3BwCkBAIC0w
LDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAicXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAuaCIKKworI2luY2x1ZGUgIlF0QWJzdHJhY3RX
ZWJQb3B1cC5oIgorI2luY2x1ZGUgInF3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwX3AuaCIKKworUVdl
YkRlbGVnYXRlU2VsZWN0UG9wdXA6OlFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwKCkKKyAgICA6IGQo
bmV3IFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwUHJpdmF0ZSgpKQoreworfQorCitRV2ViRGVsZWdh
dGVTZWxlY3RQb3B1cDo6flFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwKCkKK3sKKyAgICBkZWxldGUg
ZDsKK30KKwordm9pZCBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aW5mb3JtQ2xvc2VkKCkKK3sK
KyAgICBkLT5jb3JlUG9wdXAtPnBvcHVwRGlkSGlkZSh0cnVlKTsKK30KKwordm9pZCBRV2ViRGVs
ZWdhdGVTZWxlY3RQb3B1cDo6c2V0Q3VycmVudEluZGV4KGludCBpZHgpCit7CisgICAgZC0+Y29y
ZVBvcHVwLT52YWx1ZUNoYW5nZWQoaWR4KTsKK30KKworUVdpZGdldCogUVdlYkRlbGVnYXRlU2Vs
ZWN0UG9wdXA6OnZpZXcoKQoreworICAgIHJldHVybiBkLT5jb3JlUG9wdXAtPnZpZXcoKTsKK30K
KworUVJlY3QgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Omdlb21ldHJ5KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZC0+Y29yZVBvcHVwLT5nZW9tZXRyeSgpOworfQorCitpbnQgUVdlYkRlbGVnYXRl
U2VsZWN0UG9wdXA6OmN1cnJlbnRJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmNvcmVQ
b3B1cC0+Y3VycmVudEluZGV4KCk7Cit9CisKK1FXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjpJdGVt
VHlwZSBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aXRlbVR5cGUoaW50IGlkeCkgY29uc3QKK3sK
KyAgICBzd2l0Y2ggKGQtPmNvcmVQb3B1cC0+aXRlbVR5cGUoaWR4KSkgeworICAgIGNhc2UgV2Vi
Q29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpHcm91cDoKKyAgICAgICAgcmV0dXJuIEdyb3VwOwor
ICAgIGNhc2UgV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpPcHRpb246CisgICAgICAgIHJl
dHVybiBPcHRpb247CisgICAgY2FzZSBXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6OlNlcGFy
YXRvcjoKKyAgICAgICAgcmV0dXJuIFNlcGFyYXRvcjsKKyAgICB9CisgICAgcmV0dXJuIE9wdGlv
bjsKK30KKworUVN0cmluZyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aXRlbVRleHQoaW50IGlk
eCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+Y29yZVBvcHVwLT5pdGVtVGV4dChpZHgpOworfQor
CitRU3RyaW5nIFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjppdGVtVG9vbFRpcChpbnQgaWR4KSBj
b25zdAoreworICAgIHJldHVybiBkLT5jb3JlUG9wdXAtPml0ZW1Ub29sVGlwKGlkeCk7Cit9CisK
K2Jvb2wgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Oml0ZW1Jc0VuYWJsZWQoaW50IGlkeCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZC0+Y29yZVBvcHVwLT5pdGVtSXNFbmFibGVkKGlkeCk7Cit9CisK
K2ludCBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aXRlbUNvdW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZC0+Y29yZVBvcHVwLT5pdGVtQ291bnQoKTsKK30KKwpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5oIGIvV2ViS2l0L3F0L0FwaS9xd2ViZGVs
ZWdhdGVzZWxlY3Rwb3B1cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhl
YmVhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVj
dHBvcHVwLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgcXdl
YmRlbGVnYXRlc2VsZWN0cG9wdXBfaAorI2RlZmluZSBxd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9o
CisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSA8UUxpc3Q+CisjaW5jbHVk
ZSA8UVJlY3Q+CisjaW5jbHVkZSA8UVN0cmluZz4KKyNpbmNsdWRlIDxRV2lkZ2V0PgorCitjbGFz
cyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cFByaXZhdGU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFFXZWJQb3B1cFdyYXBwZXI7Cit9CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJE
ZWxlZ2F0ZVNlbGVjdFBvcHVwIHsKK3B1YmxpYzoKKyAgICBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1
cCgpOworICAgIHZpcnR1YWwgflFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwKCk7CisKKyAgICBlbnVt
IEl0ZW1UeXBlIHsgT3B0aW9uLCBHcm91cCwgU2VwYXJhdG9yIH07CisgICAgSXRlbVR5cGUgaXRl
bVR5cGUoaW50KSBjb25zdDsKKyAgICBRU3RyaW5nIGl0ZW1UZXh0KGludCkgY29uc3Q7CisgICAg
UVN0cmluZyBpdGVtVG9vbFRpcChpbnQpIGNvbnN0OworICAgIGJvb2wgaXRlbUlzRW5hYmxlZChp
bnQpIGNvbnN0OworICAgIGludCBpdGVtQ291bnQoKSBjb25zdDsKKworICAgIFFXaWRnZXQqIHZp
ZXcoKTsKKyAgICBRUmVjdCBnZW9tZXRyeSgpIGNvbnN0OworICAgIGludCBjdXJyZW50SW5kZXgo
KSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBvcGVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZSgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgc2V0Q3VycmVudEluZGV4KGlu
dCBpbmRleCk7CisgICAgdm9pZCBpbmZvcm1DbG9zZWQoKTsKKworcHJpdmF0ZToKKyAgICBmcmll
bmQgY2xhc3MgV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjsKKyAgICBRV2ViRGVsZWdhdGVTZWxl
Y3RQb3B1cFByaXZhdGUqIGQ7Cit9OworCitjbGFzcyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cEZh
Y3RvcnkgeworcHVibGljOgorICAgIHZpcnR1YWwgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAqIGNy
ZWF0ZSgpID0gMDsKK307CisKKworCisjZW5kaWYgLy8gcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXBf
aApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9wLmgg
Yi9XZWJLaXQvcXQvQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwX3AuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWFjYTZhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9wLmgKQEAgLTAsMCArMSwzNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKgorICovCisKKyNpZm5kZWYgcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXBfcF9oCisjZGVm
aW5lIHF3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwX3BfaAorCisjaW5jbHVkZSAicXdlYmRlbGVnYXRl
c2VsZWN0cG9wdXAuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUXRBYnN0cmFjdFdl
YlBvcHVwOworfQorCitjbGFzcyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cFByaXZhdGUgeworcHVi
bGljOgorICAgIFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cCogY29yZVBvcHVwOworICAgIFFX
ZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwUHJpdmF0ZSgpIDogY29yZVBvcHVwKDApIHt9Cit9OworCisK
KyNlbmRpZiAvLyBxd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9wX2gKZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXgg
MjE0N2VhYi4uNGZiODA4OCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAK
KysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICAg
IENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgICAgQ29weXJpZ2h0IChD
KSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KICAgICBDb3B5cmlnaHQgKEMp
IDIwMDcgQXBwbGUgSW5jLgogCkBAIC0xNzQzLDYgKzE3NDMsMTEgQEAgUVdlYlBhZ2U6On5RV2Vi
UGFnZSgpCiAgICAgZGVsZXRlIGQ7CiB9CiAKK3ZvaWQgUVdlYlBhZ2U6OnNldFNlbGVjdFBvcHVw
RGVsZWdhdGVGYWN0b3J5KFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwRmFjdG9yeSogZmFjdG9yeSkK
K3sKKyAgICBkLT5jaHJvbWVDbGllbnQtPnNldFNlbGVjdFBvcHVwRGVsZWdhdGVGYWN0b3J5KGZh
Y3RvcnkpOworfQorCiAvKiEKICAgICBSZXR1cm5zIHRoZSBtYWluIGZyYW1lIG9mIHRoZSBwYWdl
LgogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmggYi9XZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmgKaW5kZXggNDc2NmNiZC4uODU3M2ZlZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAx
MCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAgICBDb3B5
cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgogCiAgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgpAQCAtNDksNiArNDksOCBAQCBjbGFzcyBRV2ViUGx1Z2luRmFjdG9yeTsKIGNsYXNzIFFXZWJI
aXRUZXN0UmVzdWx0OwogY2xhc3MgUVdlYkhpc3RvcnlJdGVtOwogCitjbGFzcyBRV2ViRGVsZWdh
dGVTZWxlY3RQb3B1cEZhY3Rvcnk7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBD
aHJvbWVDbGllbnRRdDsKICAgICBjbGFzcyBFZGl0b3JDbGllbnRRdDsKQEAgLTIwMyw2ICsyMDUs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaWV3KFFXaWRnZXQgKnZpZXcpOwogICAgIFFXaWRn
ZXQgKnZpZXcoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0U2VsZWN0UG9wdXBEZWxlZ2F0ZUZhY3Rv
cnkoUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBGYWN0b3J5KiBmYWN0b3J5KTsKKwogICAgIGJvb2wg
aXNNb2RpZmllZCgpIGNvbnN0OwogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBRVW5kb1N0
YWNrICp1bmRvU3RhY2soKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cg
Yi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGMzMDNiNDMuLjAzYzgzYjIgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDYwIEBACisyMDEwLTAxLTE5ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9z
c2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFN1cHBvcnQgZm9yIGNvbWJvYm94IHBvcHVwIGN1c3RvbWl6YXRpb25zLgorCisgICAgICAgIENv
bWJvYm94IHBvcHVwIGN1c3RvbWl6YXRpb24gY2FuIGJlIG1hZGUgcHJvdmlkaW5nIGFuIGluc3Rh
bmNlIG9mCisgICAgICAgIFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwRmFjdG9yeSB0byBRV2ViUGFn
ZS4gVGhlIGZhY3Rvcnkgd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZQorICAgICAgICBRV2ViRGVsZWdh
dGVTZWxlY3RQb3B1cCBvYmplY3RzIHdoZW4gbmVlZGVkLiBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1
cCBjbGFzcyBpcyB0aGUKKyAgICAgICAgYmFzZSBjbGFzcyBmb3IgY3VzdG9tIGNvbWJvYm94IHBv
cHVwcy4KKworICAgICAgICBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cEZhY3RvcnkgaW5oZXJpdGVk
IGNsYXNzZXMgbXVzdCBpbXBsZW1lbnQgbWV0aG9kIGNyZWF0ZSBhbmQKKyAgICAgICAgcmV0dXJu
IGFuIG9iamVjdCBvZiBjbGFzcyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cC4KKworICAgICAgICBb
UXRdIEN1c3RvbSBzZWxlY3QgcG9wdXBzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzM0MTgKKworICAgICAgICAqIEFwaS9oZWFkZXJzLnByaToKKyAg
ICAgICAgKiBBcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjpRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cCk6CisgICAg
ICAgIChRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6flFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwKToK
KyAgICAgICAgKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjppbmZvcm1DbG9zZWQpOgorICAgICAg
ICAoUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6OnNldEN1cnJlbnRJbmRleCk6CisgICAgICAgIChR
V2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6dmlldyk6CisgICAgICAgIChRV2ViRGVsZWdhdGVTZWxl
Y3RQb3B1cDo6Z2VvbWV0cnkpOgorICAgICAgICAoUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6OmN1
cnJlbnRJbmRleCk6CisgICAgICAgIChRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aXRlbVR5cGUp
OgorICAgICAgICAoUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Oml0ZW1UZXh0KToKKyAgICAgICAg
KFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjppdGVtVG9vbFRpcCk6CisgICAgICAgIChRV2ViRGVs
ZWdhdGVTZWxlY3RQb3B1cDo6aXRlbUlzRW5hYmxlZCk6CisgICAgICAgIChRV2ViRGVsZWdhdGVT
ZWxlY3RQb3B1cDo6aXRlbUNvdW50KToKKyAgICAgICAgKiBBcGkvcXdlYmRlbGVnYXRlc2VsZWN0
cG9wdXAuaDogQWRkZWQuCisgICAgICAgICogQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwX3Au
aDogQWRkZWQuCisgICAgICAgIChRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cFByaXZhdGU6OlFXZWJE
ZWxlZ2F0ZVNlbGVjdFBvcHVwUHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoK
KyAgICAgICAgKFFXZWJQYWdlOjpzZXRTZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeSk6CisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6UVdlYlBvcHVw
V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjp+UVdlYlBvcHVw
V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpzaG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OmhpZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50UXQ6OkNocm9tZUNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFF0OjpzZXRTZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlU2VsZWN0UG9wdXApOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
UXRGYWxsYmFja1dlYlBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQ
b3B1cENvbWJvOjpRdEZhbGxiYWNrV2ViUG9wdXBDb21ibyk6CisgICAgICAgIChXZWJDb3JlOjpR
dEZhbGxiYWNrV2ViUG9wdXBDb21ibzo6c2hvd1BvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlF0
RmFsbGJhY2tXZWJQb3B1cENvbWJvOjpoaWRlUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UXRG
YWxsYmFja1dlYlBvcHVwOjpRdEZhbGxiYWNrV2ViUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6
UXRGYWxsYmFja1dlYlBvcHVwOjp+UXRGYWxsYmFja1dlYlBvcHVwKToKKyAgICAgICAgKFdlYkNv
cmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxi
YWNrV2ViUG9wdXA6OmhpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVw
Ojpwb3B1bGF0ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVw
Lmg6CisKIDIwMTAtMDEtMDggIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4u
CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3Bw
IGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAppbmRleCBmNjJi
Yzg2Li40ZGQ5MjQyIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5jcHAKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAy
MDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00Miw2ICs0Myw4
IEBACiAjaW5jbHVkZSAiUVdlYlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogCisjaW5jbHVkZSAicXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAuaCIKKyNpbmNsdWRlICJx
d2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9wLmgiCiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKICNpbmNs
dWRlICJxd2VicGFnZV9wLmgiCiAjaW5jbHVkZSAicXdlYmZyYW1lX3AuaCIKQEAgLTU2LDggKzU5
LDQzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiB7CiAKIAorY2xhc3MgUVdlYlBvcHVwV3JhcHBlciA6
IHB1YmxpYyBRdEFic3RyYWN0V2ViUG9wdXAgeworcHVibGljOgorICAgIFFXZWJQb3B1cFdyYXBw
ZXIoUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAqIHBvcHVwKTsKKyAgICB+UVdlYlBvcHVwV3JhcHBl
cigpOworCitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHNob3coKTsKKyAgICB2aXJ0dWFsIHZv
aWQgaGlkZSgpOworCitwcml2YXRlOgorICAgIFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwKiBtX3Bv
cHVwOworfTsKKworUVdlYlBvcHVwV3JhcHBlcjo6UVdlYlBvcHVwV3JhcHBlcihRV2ViRGVsZWdh
dGVTZWxlY3RQb3B1cCogcG9wdXApCisgICAgOiBtX3BvcHVwKHBvcHVwKQoreworICAgIG1fcG9w
dXAtPmQtPmNvcmVQb3B1cCA9IHRoaXM7Cit9CisKK1FXZWJQb3B1cFdyYXBwZXI6On5RV2ViUG9w
dXBXcmFwcGVyKCkKK3sKKyAgICBkZWxldGUgbV9wb3B1cDsKK30KKwordm9pZCBRV2ViUG9wdXBX
cmFwcGVyOjpzaG93KCkKK3sKKyAgICBtX3BvcHVwLT5vcGVuKCk7Cit9CisKK3ZvaWQgUVdlYlBv
cHVwV3JhcHBlcjo6aGlkZSgpCit7CisgICAgbV9wb3B1cC0+Y2xvc2UoKTsKK30KKwogQ2hyb21l
Q2xpZW50UXQ6OkNocm9tZUNsaWVudFF0KFFXZWJQYWdlKiB3ZWJQYWdlKQogICAgIDogbV93ZWJQ
YWdlKHdlYlBhZ2UpCisgICAgLCBtX3NlbGVjdFBvcHVwRmFjdG9yeSgwKQogewogICAgIHRvb2xC
YXJzVmlzaWJsZSA9IHN0YXR1c0JhclZpc2libGUgPSBtZW51QmFyVmlzaWJsZSA9IHRydWU7CiB9
CkBAIC02Nyw2ICsxMDUsMTEgQEAgQ2hyb21lQ2xpZW50UXQ6On5DaHJvbWVDbGllbnRRdCgpCiAK
IH0KIAordm9pZCBDaHJvbWVDbGllbnRRdDo6c2V0U2VsZWN0UG9wdXBEZWxlZ2F0ZUZhY3Rvcnko
UVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBGYWN0b3J5KiBwb3B1cEZhY3RvcnkpCit7CisgICAgbV9z
ZWxlY3RQb3B1cEZhY3RvcnkgPSBwb3B1cEZhY3Rvcnk7Cit9CisKIHZvaWQgQ2hyb21lQ2xpZW50
UXQ6OnNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGlmICghbV93
ZWJQYWdlKQpAQCAtNDY2LDggKzUwOSwxMCBAQCB2b2lkIENocm9tZUNsaWVudFF0OjpyZXF1ZXN0
R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotUXRBYnN0cmFjdFdlYlBvcHVwKiBDaHJvbWVDbGllbnRR
dDo6Y3JlYXRlUG9wdXAoKQorUXRBYnN0cmFjdFdlYlBvcHVwKiBDaHJvbWVDbGllbnRRdDo6Y3Jl
YXRlU2VsZWN0UG9wdXAoKQogeworICAgIGlmIChtX3NlbGVjdFBvcHVwRmFjdG9yeSkKKyAgICAg
ICAgcmV0dXJuIG5ldyBRV2ViUG9wdXBXcmFwcGVyKG1fc2VsZWN0UG9wdXBGYWN0b3J5LT5jcmVh
dGUoKSk7CiAgICAgcmV0dXJuIG5ldyBRdEZhbGxiYWNrV2ViUG9wdXA7CiB9CiAKZGlmZiAtLWdp
dCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oIGIvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKaW5kZXggMTA2ZDRjYy4uZTI1ZDQ2ZiAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKKysr
IGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKQEAgLTEsNCArMSw1
IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHph
Y2tAa2RlLm9yZz4KICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMzUsNiArMzYsNyBA
QAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIGNsYXNzIFFXZWJQYWdlOworY2xhc3Mg
UVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBGYWN0b3J5OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTEzNSw3ICsxMzcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xv
Y2F0aW9uKik7CiAKLSAgICAgICAgUXRBYnN0cmFjdFdlYlBvcHVwKiBjcmVhdGVQb3B1cCgpOwor
ICAgICAgICBRdEFic3RyYWN0V2ViUG9wdXAqIGNyZWF0ZVNlbGVjdFBvcHVwKCk7CisKKyAgICAg
ICAgdm9pZCBzZXRTZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeShRV2ViRGVsZWdhdGVTZWxlY3RQ
b3B1cEZhY3RvcnkqIHBvcHVwRmFjdG9yeSk7CiAKICAgICAgICAgUVdlYlBhZ2UqIG1fd2ViUGFn
ZTsKICAgICAgICAgV2ViQ29yZTo6S1VSTCBsYXN0SG92ZXJVUkw7CkBAIC0xNDUsNiArMTQ5LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHRvb2xCYXJzVmlzaWJsZTsKICAg
ICAgICAgYm9vbCBzdGF0dXNCYXJWaXNpYmxlOwogICAgICAgICBib29sIG1lbnVCYXJWaXNpYmxl
OworCisgICAgICAgIFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwRmFjdG9yeSogbV9zZWxlY3RQb3B1
cEZhY3Rvcnk7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRG
YWxsYmFja1dlYlBvcHVwLmNwcAppbmRleCAzNDRkNThhLi5iZTk4ZTUzIDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcAorKysgYi9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcApAQCAtMzEsODcgKzMx
LDk4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUXRGYWxsYmFja1dlYlBvcHVwQ29tYm86
OlF0RmFsbGJhY2tXZWJQb3B1cENvbWJvKFF0RmFsbGJhY2tXZWJQb3B1cCYgb3duZXJQb3B1cCkK
KyAgICA6IG1fb3duZXJQb3B1cChvd25lclBvcHVwKQoreworfQorCit2b2lkIFF0RmFsbGJhY2tX
ZWJQb3B1cENvbWJvOjpzaG93UG9wdXAoKQoreworICAgIFFDb21ib0JveDo6c2hvd1BvcHVwKCk7
CisgICAgbV9vd25lclBvcHVwLm1fcG9wdXBWaXNpYmxlID0gdHJ1ZTsKK30KKwordm9pZCBRdEZh
bGxiYWNrV2ViUG9wdXBDb21ibzo6aGlkZVBvcHVwKCkKK3sKKyAgICBRV2lkZ2V0KiBhY3RpdmVG
b2N1cyA9IFFBcHBsaWNhdGlvbjo6Zm9jdXNXaWRnZXQoKTsKKyAgICBpZiAoYWN0aXZlRm9jdXMg
JiYgYWN0aXZlRm9jdXMgPT0gUUNvbWJvQm94Ojp2aWV3KCkKKyAgICAgICAgJiYgYWN0aXZlRm9j
dXMtPnRlc3RBdHRyaWJ1dGUoUXQ6OldBX0lucHV0TWV0aG9kRW5hYmxlZCkpIHsKKyAgICAgICAg
UUlucHV0Q29udGV4dCogcWljID0gYWN0aXZlRm9jdXMtPmlucHV0Q29udGV4dCgpOworICAgICAg
ICBpZiAocWljKSB7CisgICAgICAgICAgICBxaWMtPnJlc2V0KCk7CisgICAgICAgICAgICBxaWMt
PnNldEZvY3VzV2lkZ2V0KDApOworICAgICAgICB9CisgICAgfQorCisgICAgUUNvbWJvQm94Ojpo
aWRlUG9wdXAoKTsKKyAgICBpZiAoIW1fb3duZXJQb3B1cC5tX3BvcHVwVmlzaWJsZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9vd25lclBvcHVwLm1fcG9wdXBWaXNpYmxlID0gZmFsc2U7Cisg
ICAgbV9vd25lclBvcHVwLnBvcHVwRGlkSGlkZSh0cnVlKTsKK30KKwogLy8gUXRGYWxsYmFja1dl
YlBvcHVwCiAKIFF0RmFsbGJhY2tXZWJQb3B1cDo6UXRGYWxsYmFja1dlYlBvcHVwKCkKICAgICA6
IFF0QWJzdHJhY3RXZWJQb3B1cCgpCiAgICAgLCBtX3BvcHVwVmlzaWJsZShmYWxzZSkKKyAgICAs
IG1fY29tYm8obmV3IFF0RmFsbGJhY2tXZWJQb3B1cENvbWJvKCp0aGlzKSkKIHsKLSAgICBjb25u
ZWN0KHRoaXMsIFNJR05BTChhY3RpdmF0ZWQoaW50KSksCisgICAgY29ubmVjdChtX2NvbWJvLCBT
SUdOQUwoYWN0aXZhdGVkKGludCkpLAogICAgICAgICAgICAgU0xPVChhY3RpdmVDaGFuZ2VkKGlu
dCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CiB9CiAKLQotdm9pZCBRdEZhbGxiYWNrV2ViUG9w
dXA6OnNob3coY29uc3QgUVJlY3QmIGdlb21ldHJ5LCBpbnQgc2VsZWN0ZWRJbmRleCkKK1F0RmFs
bGJhY2tXZWJQb3B1cDo6flF0RmFsbGJhY2tXZWJQb3B1cCgpCiB7Ci0gICAgc2V0Q3VycmVudElu
ZGV4KHNlbGVjdGVkSW5kZXgpOwotCi0gICAgLyoKLSAgICBRV2lkZ2V0KiBwYXJlbnQgPSAwOwot
ICAgIGlmIChjbGllbnQoKS0+aG9zdFdpbmRvdygpICYmIGNsaWVudCgpLT5ob3N0V2luZG93KCkt
PnBsYXRmb3JtUGFnZUNsaWVudCgpKQotICAgICAgIHBhcmVudCA9IGNsaWVudCgpLT5ob3N0V2lu
ZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5vd25lcldpZGdldCgpOworICAgIGRlbGV0ZSBt
X2NvbWJvOworfQogCi0gICAgc2V0UGFyZW50KHBhcmVudCk7Ci0gICAgKi8KK3ZvaWQgUXRGYWxs
YmFja1dlYlBvcHVwOjpzaG93KCkKK3sKKyAgICBwb3B1bGF0ZSgpOworICAgIG1fY29tYm8tPnNl
dFBhcmVudCh2aWV3KCkpOworICAgIG1fY29tYm8tPnNldEN1cnJlbnRJbmRleChjdXJyZW50SW5k
ZXgoKSk7CiAKLSAgICBzZXRHZW9tZXRyeShRUmVjdChnZW9tZXRyeS5sZWZ0KCksIGdlb21ldHJ5
LnRvcCgpLCBnZW9tZXRyeS53aWR0aCgpLCBzaXplSGludCgpLmhlaWdodCgpKSk7CisgICAgUVJl
Y3QgcmVjdCA9IGdlb21ldHJ5KCk7CisgICAgbV9jb21iby0+c2V0R2VvbWV0cnkoUVJlY3QocmVj
dC5sZWZ0KCksIHJlY3QudG9wKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVj
dC53aWR0aCgpLCBtX2NvbWJvLT5zaXplSGludCgpLmhlaWdodCgpKSk7CiAKICAgICBRTW91c2VF
dmVudCBldmVudChRRXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3MsIFFDdXJzb3I6OnBvcygpLCBRdDo6
TGVmdEJ1dHRvbiwKICAgICAgICAgICAgICAgICAgICAgICBRdDo6TGVmdEJ1dHRvbiwgUXQ6Ok5v
TW9kaWZpZXIpOwotICAgIFFDb3JlQXBwbGljYXRpb246OnNlbmRFdmVudCh0aGlzLCAmZXZlbnQp
OworICAgIFFDb3JlQXBwbGljYXRpb246OnNlbmRFdmVudChtX2NvbWJvLCAmZXZlbnQpOwogfQog
Ci12b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6cG9wdWxhdGUoY29uc3QgUUZvbnQmIGZvbnQsIGNv
bnN0IFFMaXN0PEl0ZW0+JiBpdGVtcykKK3ZvaWQgUXRGYWxsYmFja1dlYlBvcHVwOjpoaWRlKCkK
IHsKLSAgICBjbGVhcigpOworICAgIG1fY29tYm8tPmhpZGVQb3B1cCgpOworfQorCit2b2lkIFF0
RmFsbGJhY2tXZWJQb3B1cDo6cG9wdWxhdGUoKQoreworICAgIG1fY29tYm8tPmNsZWFyKCk7CiAK
LSAgICBRU3RhbmRhcmRJdGVtTW9kZWwqIG1vZGVsID0gcW9iamVjdF9jYXN0PFFTdGFuZGFyZEl0
ZW1Nb2RlbCo+KFFDb21ib0JveDo6bW9kZWwoKSk7CisgICAgUVN0YW5kYXJkSXRlbU1vZGVsKiBt
b2RlbCA9IHFvYmplY3RfY2FzdDxRU3RhbmRhcmRJdGVtTW9kZWwqPihtX2NvbWJvLT5tb2RlbCgp
KTsKICAgICBRX0FTU0VSVChtb2RlbCk7CiAKLSAgICBzZXRGb250KGZvbnQpOwotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgc3dpdGNoIChpdGVt
c1tpXS50eXBlKSB7Ci0gICAgICAgIGNhc2UgUXRBYnN0cmFjdFdlYlBvcHVwOjpJdGVtOjpTZXBh
cmF0b3I6Ci0gICAgICAgICAgICBpbnNlcnRTZXBhcmF0b3IoaSk7CisgICAgbV9jb21iby0+c2V0
Rm9udChmb250KCkpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlbUNvdW50KCk7ICsraSkg
eworICAgICAgICBzd2l0Y2ggKGl0ZW1UeXBlKGkpKSB7CisgICAgICAgIGNhc2UgU2VwYXJhdG9y
OgorICAgICAgICAgICAgbV9jb21iby0+aW5zZXJ0U2VwYXJhdG9yKGkpOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgUXRBYnN0cmFjdFdlYlBvcHVwOjpJdGVtOjpHcm91cDoKLSAg
ICAgICAgICAgIGluc2VydEl0ZW0oaSwgaXRlbXNbaV0udGV4dCk7CisgICAgICAgIGNhc2UgR3Jv
dXA6CisgICAgICAgICAgICBtX2NvbWJvLT5pbnNlcnRJdGVtKGksIGl0ZW1UZXh0KGkpKTsKICAg
ICAgICAgICAgIG1vZGVsLT5pdGVtKGkpLT5zZXRFbmFibGVkKGZhbHNlKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFF0QWJzdHJhY3RXZWJQb3B1cDo6SXRlbTo6T3B0aW9uOgot
ICAgICAgICAgICAgaW5zZXJ0SXRlbShpLCBpdGVtc1tpXS50ZXh0KTsKLSAgICAgICAgICAgIG1v
ZGVsLT5pdGVtKGkpLT5zZXRFbmFibGVkKGl0ZW1zW2ldLmVuYWJsZWQpOworICAgICAgICBjYXNl
IE9wdGlvbjoKKyAgICAgICAgICAgIG1fY29tYm8tPmluc2VydEl0ZW0oaSwgaXRlbVRleHQoaSkp
OworICAgICAgICAgICAgbW9kZWwtPml0ZW0oaSktPnNldEVuYWJsZWQoaXRlbUlzRW5hYmxlZChp
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBRdEZh
bGxiYWNrV2ViUG9wdXA6OnNob3dQb3B1cCgpCi17Ci0gICAgUUNvbWJvQm94OjpzaG93UG9wdXAo
KTsKLSAgICBtX3BvcHVwVmlzaWJsZSA9IHRydWU7Ci19Ci0KLXZvaWQgUXRGYWxsYmFja1dlYlBv
cHVwOjpoaWRlUG9wdXAoKQotewotICAgIFFXaWRnZXQqIGFjdGl2ZUZvY3VzID0gUUFwcGxpY2F0
aW9uOjpmb2N1c1dpZGdldCgpOwotICAgIGlmIChhY3RpdmVGb2N1cyAmJiBhY3RpdmVGb2N1cyA9
PSB2aWV3KCkKLSAgICAgICAgJiYgYWN0aXZlRm9jdXMtPnRlc3RBdHRyaWJ1dGUoUXQ6OldBX0lu
cHV0TWV0aG9kRW5hYmxlZCkpIHsKLSAgICAgICAgUUlucHV0Q29udGV4dCogcWljID0gYWN0aXZl
Rm9jdXMtPmlucHV0Q29udGV4dCgpOwotICAgICAgICBpZiAocWljKSB7Ci0gICAgICAgICAgICBx
aWMtPnJlc2V0KCk7Ci0gICAgICAgICAgICBxaWMtPnNldEZvY3VzV2lkZ2V0KDApOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgUUNvbWJvQm94OjpoaWRlUG9wdXAoKTsKLSAgICBpZiAoIW1fcG9w
dXBWaXNpYmxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3BvcHVwVmlzaWJsZSA9IGZhbHNl
OwotICAgIHBvcHVwRGlkSGlkZSh0cnVlKTsKLX0KLQogdm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6
OmFjdGl2ZUNoYW5nZWQoaW50IGluZGV4KQogewogICAgIGlmIChpbmRleCA8IDApCkBAIC0xMjAs
OSArMTMxLDQgQEAgdm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OmFjdGl2ZUNoYW5nZWQoaW50IGlu
ZGV4KQogICAgIHZhbHVlQ2hhbmdlZChpbmRleCk7CiB9CiAKLXZvaWQgUXRGYWxsYmFja1dlYlBv
cHVwOjpzZXRQYXJlbnQoUVdpZGdldCogcGFyZW50KQotewotICAgIFFDb21ib0JveDo6c2V0UGFy
ZW50KHBhcmVudCk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RdEZhbGxiYWNrV2ViUG9wdXAuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxi
YWNrV2ViUG9wdXAuaAppbmRleCA1YWZmZTBhLi44ZmJlYzZmIDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmgKKysrIGIvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oCkBAIC0yNSwyNSArMjUsMzYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBRdEZhbGxiYWNrV2ViUG9wdXAgOiBwcml2YXRl
IFFDb21ib0JveCwgcHVibGljIFF0QWJzdHJhY3RXZWJQb3B1cCB7CitjbGFzcyBRdEZhbGxiYWNr
V2ViUG9wdXBDb21ibzsKKworY2xhc3MgUXRGYWxsYmFja1dlYlBvcHVwIDogcHVibGljIFFPYmpl
Y3QsIHB1YmxpYyBRdEFic3RyYWN0V2ViUG9wdXAgewogICAgIFFfT0JKRUNUCiBwdWJsaWM6CiAg
ICAgUXRGYWxsYmFja1dlYlBvcHVwKCk7CisgICAgflF0RmFsbGJhY2tXZWJQb3B1cCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgUVJlY3QmIGdlb21ldHJ5LCBpbnQgc2VsZWN0ZWRJ
bmRleCk7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGUoKSB7IGhpZGVQb3B1cCgpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHBvcHVsYXRlKGNvbnN0IFFGb250JiBmb250LCBjb25zdCBRTGlzdDxJdGVtPiYg
aXRlbXMpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoUVdpZGdldCogcGFyZW50KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2hvdygpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7CiAKIHByaXZh
dGUgc2xvdHM6CiAgICAgdm9pZCBhY3RpdmVDaGFuZ2VkKGludCk7CiAKIHByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFF0RmFsbGJhY2tXZWJQb3B1cENvbWJvOwogICAgIGJvb2wgbV9wb3B1cFZp
c2libGU7CisgICAgUXRGYWxsYmFja1dlYlBvcHVwQ29tYm8qIG1fY29tYm87CiAKKyAgICB2b2lk
IHBvcHVsYXRlKCk7Cit9OwogCitjbGFzcyBRdEZhbGxiYWNrV2ViUG9wdXBDb21ibyA6IHB1Ymxp
YyBRQ29tYm9Cb3ggeworcHVibGljOgorICAgIFF0RmFsbGJhY2tXZWJQb3B1cENvbWJvKFF0RmFs
bGJhY2tXZWJQb3B1cCYgb3duZXJQb3B1cCk7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cCgp
OwogICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9wdXAoKTsKKworcHJpdmF0ZToKKyAgICBRdEZhbGxi
YWNrV2ViUG9wdXAmIG1fb3duZXJQb3B1cDsKIH07CiAKIH0KLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47020</attachid>
            <date>2010-01-20 06:43:18 -0800</date>
            <delta_ts>2010-01-21 00:10:54 -0800</delta_ts>
            <desc>WebCore patch.</desc>
            <filename>0001-Qt-Custom-select-popups.patch</filename>
            <type>text/plain</type>
            <size>16311</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAxMjZiMjBhM2VlMGFiYzYyN2ZlOTljYjY3NWNiZjNmZDczZDE1NDY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFdlZCwgMjAgSmFuIDIwMTAgMTE6MzU6NDQgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIEN1c3RvbSBzZWxlY3QgcG9wdXBzLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzNDE4CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCldlYkNv
cmU6CgpPcHRpbWl6YXRpb24gb2YgdGhlIFdlYkNvcmUgc3VwcG9ydCB0byBjb21ib2JveCBwb3B1
cCBkZWxlZ2F0ZS4KCiogcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwOgooV2ViQ29yZTo6UG9w
dXBNZW51OjpzaG93KToKKiBwbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuY3BwOgooV2Vi
Q29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpRdEFic3RyYWN0V2ViUG9wdXApOgooV2ViQ29yZTo6
UXRBYnN0cmFjdFdlYlBvcHVwOjppdGVtVHlwZSk6CiogcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdl
YlBvcHVwLmg6CihXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6Oik6CihXZWJDb3JlOjpRdEFi
c3RyYWN0V2ViUG9wdXA6Oml0ZW1UZXh0KToKKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6
aXRlbVRvb2xUaXApOgooV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjppdGVtSXNFbmFibGVk
KToKKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6aXRlbUNvdW50KToKKFdlYkNvcmU6OlF0
QWJzdHJhY3RXZWJQb3B1cDo6dmlldyk6CihXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6Omdl
b21ldHJ5KToKKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6Y3VycmVudEluZGV4KToKKFdl
YkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6Zm9udCk6CgpXZWJLaXQvcXQ6CgpBZGp1c3Rpbmcg
UXRGYWxsYmFja1dlYlBvcHVwQ29tYm8gdG8gdGhlIGNoYW5nZXMgaW4gV2ViQ29yZSBsYXllci4K
CiogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgooV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6OmNyZWF0ZVNlbGVjdFBvcHVwKToKKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5oOgoqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHA6CihXZWJDb3JlOjpR
dEZhbGxiYWNrV2ViUG9wdXBDb21ibzo6UXRGYWxsYmFja1dlYlBvcHVwQ29tYm8pOgooV2ViQ29y
ZTo6UXRGYWxsYmFja1dlYlBvcHVwQ29tYm86OnNob3dQb3B1cCk6CihXZWJDb3JlOjpRdEZhbGxi
YWNrV2ViUG9wdXBDb21ibzo6aGlkZVBvcHVwKToKKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1
cDo6UXRGYWxsYmFja1dlYlBvcHVwKToKKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6flF0
RmFsbGJhY2tXZWJQb3B1cCk6CihXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cpOgoo
V2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpoaWRlKToKKFdlYkNvcmU6OlF0RmFsbGJhY2tX
ZWJQb3B1cDo6cG9wdWxhdGUpOgoqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5o
OgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAyNSArKysrKwogV2ViQ29yZS9wbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5jcHAgICAgICAgICAg
ICAgfCAgIDQ0ICsrLS0tLS0tCiBXZWJDb3JlL3BsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1
cC5jcHAgICAgICB8ICAgMTEgKysKIFdlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBv
cHVwLmggICAgICAgIHwgICAzMSArKysrLS0KIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAyMyArKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFF0LmNwcCAgICAgfCAgICAyICstCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuaCAgICAgICB8ICAgIDIgKy0KIFdlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwIHwgIDEyMCArKysrKysrKysrKystLS0tLS0tLS0t
LQogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oICAgfCAgIDIx
ICsrKy0KIDkgZmlsZXMgY2hhbmdlZCwgMTcxIGluc2VydGlvbnMoKyksIDEwOCBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDQyYWI0MDQuLjMzYTc0NWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTAtMDEtMjAgIEx1aXogQWdv
c3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDdXN0b20gc2VsZWN0IHBvcHVwcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNDE4CisK
KyAgICAgICAgT3B0aW1pemF0aW9uIG9mIHRoZSBXZWJDb3JlIHN1cHBvcnQgdG8gY29tYm9ib3gg
cG9wdXAgZGVsZWdhdGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnNob3cpOgorICAgICAgICAqIHBsYXRmb3Jt
L3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdEFic3RyYWN0
V2ViUG9wdXA6OlF0QWJzdHJhY3RXZWJQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpRdEFic3Ry
YWN0V2ViUG9wdXA6Oml0ZW1UeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9RdEFic3RyYWN0
V2ViUG9wdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6KToKKyAg
ICAgICAgKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cDo6aXRlbVRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjppdGVtVG9vbFRpcCk6CisgICAgICAgIChXZWJD
b3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6Oml0ZW1Jc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjppdGVtQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6UXRB
YnN0cmFjdFdlYlBvcHVwOjp2aWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlF0QWJzdHJhY3RXZWJQ
b3B1cDo6Z2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpj
dXJyZW50SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpmb250
KToKKwogMjAxMC0wMS0yMCAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1BvcHVwTWVudVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUG9wdXBNZW51
UXQuY3BwCmluZGV4IDYzZTE1NjUuLmFlNGZjMjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUG9wdXBNZW51UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUG9wdXBNZW51
UXQuY3BwCkBAIC00Niw0NyArNDYsMjUgQEAgUG9wdXBNZW51Ojp+UG9wdXBNZW51KCkKICAgICBk
ZWxldGUgbV9wb3B1cDsKIH0KIAotc3RhdGljIFFMaXN0PFF0QWJzdHJhY3RXZWJQb3B1cDo6SXRl
bT4gZ2V0SXRlbXMoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCi17Ci0gICAgUUxpc3Q8UXRBYnN0
cmFjdFdlYlBvcHVwOjpJdGVtPiByZXN1bHQ7Ci0KLSAgICBpbnQgc2l6ZSA9IGNsaWVudC0+bGlz
dFNpemUoKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBR
dEFic3RyYWN0V2ViUG9wdXA6Okl0ZW0gaXRlbTsKLQotICAgICAgICBpZiAoY2xpZW50LT5pdGVt
SXNTZXBhcmF0b3IoaSkpCi0gICAgICAgICAgICBpdGVtLnR5cGUgPSBRdEFic3RyYWN0V2ViUG9w
dXA6Okl0ZW06OlNlcGFyYXRvcjsKLSAgICAgICAgZWxzZSBpZiAoY2xpZW50LT5pdGVtSXNMYWJl
bChpKSkKLSAgICAgICAgICAgIGl0ZW0udHlwZSA9IFF0QWJzdHJhY3RXZWJQb3B1cDo6SXRlbTo6
R3JvdXA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGl0ZW0udHlwZSA9IFF0QWJzdHJhY3RX
ZWJQb3B1cDo6SXRlbTo6T3B0aW9uOwotCi0gICAgICAgIGl0ZW0udGV4dCA9IGNsaWVudC0+aXRl
bVRleHQoaSk7Ci0gICAgICAgIGl0ZW0udG9vbFRpcCA9IGNsaWVudC0+aXRlbVRvb2xUaXAoaSk7
Ci0gICAgICAgIGl0ZW0uZW5hYmxlZCA9IGNsaWVudC0+aXRlbUlzRW5hYmxlZChpKTsKLSAgICAg
ICAgcmVzdWx0LmFwcGVuZChpdGVtKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQog
dm9pZCBQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2aWV3
LCBpbnQgaW5kZXgpCiB7CiAgICAgQ2hyb21lQ2xpZW50UXQqIGNocm9tZUNsaWVudCA9IHN0YXRp
Y19jYXN0PENocm9tZUNsaWVudFF0Kj4oCiAgICAgICAgIHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+
Y2hyb21lKCktPmNsaWVudCgpKTsKICAgICBBU1NFUlQoY2hyb21lQ2xpZW50KTsKIAotICAgIGlm
ICghbV9wb3B1cCkgewotICAgICAgICBtX3BvcHVwID0gY2hyb21lQ2xpZW50LT5jcmVhdGVQb3B1
cCgpOwotICAgICAgICBtX3BvcHVwLT5tX2NsaWVudCA9IG1fcG9wdXBDbGllbnQ7Ci0gICAgfQor
ICAgIGlmICghbV9wb3B1cCkKKyAgICAgICAgbV9wb3B1cCA9IGNocm9tZUNsaWVudC0+Y3JlYXRl
U2VsZWN0UG9wdXAoKTsKKworICAgIG1fcG9wdXAtPm1fY2xpZW50ID0gbV9wb3B1cENsaWVudDsK
KyAgICBtX3BvcHVwLT5tX2N1cnJlbnRJbmRleCA9IGluZGV4OworICAgIG1fcG9wdXAtPm1fdmll
dyA9IGNocm9tZUNsaWVudC0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPm93bmVyV2lkZ2V0KCk7CisK
KyAgICBRUmVjdCBnZW9tZXRyeShyZWN0KTsKKyAgICBnZW9tZXRyeS5tb3ZlVG9wTGVmdCh2aWV3
LT5jb250ZW50c1RvV2luZG93KHJlY3QudG9wTGVmdCgpKSk7CisgICAgbV9wb3B1cC0+bV9nZW9t
ZXRyeSA9IGdlb21ldHJ5OwogCi0gICAgbV9wb3B1cC0+c2V0UGFyZW50KGNocm9tZUNsaWVudC0+
cGxhdGZvcm1QYWdlQ2xpZW50KCktPm93bmVyV2lkZ2V0KCkpOwotICAgIG1fcG9wdXAtPnBvcHVs
YXRlKG1fcG9wdXBDbGllbnQtPm1lbnVTdHlsZSgpLmZvbnQoKS5mb250KCksCi0gICAgICAgICAg
ICAgICAgICAgICAgZ2V0SXRlbXMobV9wb3B1cENsaWVudCkpOworICAgIG1fcG9wdXAtPnNob3co
KTsKIAotICAgIFFSZWN0IGJvdW5kcyA9IHJlY3Q7Ci0gICAgYm91bmRzLm1vdmVUb3BMZWZ0KHZp
ZXctPmNvbnRlbnRzVG9XaW5kb3cocmVjdC50b3BMZWZ0KCkpKTsKLSAgICBtX3BvcHVwLT5zaG93
KGJvdW5kcywgaW5kZXgpOwogfQogCiB2b2lkIFBvcHVwTWVudTo6aGlkZSgpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5jcHAKaW5kZXggNzVkOGZiNS4uZWY3Y2MyYyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcApAQCAtMjcsNiAr
MjcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFF0QWJzdHJhY3RXZWJQb3B1cDo6UXRBYnN0
cmFjdFdlYlBvcHVwKCkKICAgICA6IG1fY2xpZW50KDApCisgICAgLCBtX3ZpZXcoMCkKKyAgICAs
IG1fY3VycmVudEluZGV4KC0xKQogewogfQogCkBAIC00Niw0ICs0OCwxMyBAQCB2b2lkIFF0QWJz
dHJhY3RXZWJQb3B1cDo6dmFsdWVDaGFuZ2VkKGludCBpbmRleCkKICAgICBtX2NsaWVudC0+dmFs
dWVDaGFuZ2VkKGluZGV4KTsKIH0KIAorUXRBYnN0cmFjdFdlYlBvcHVwOjpJdGVtVHlwZSBRdEFi
c3RyYWN0V2ViUG9wdXA6Oml0ZW1UeXBlKGludCBpZHgpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xp
ZW50LT5pdGVtSXNTZXBhcmF0b3IoaWR4KSkKKyAgICAgICAgcmV0dXJuIFNlcGFyYXRvcjsKKyAg
ICBpZiAobV9jbGllbnQtPml0ZW1Jc0xhYmVsKGlkeCkpCisgICAgICAgIHJldHVybiBHcm91cDsK
KyAgICByZXR1cm4gT3B0aW9uOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuaAppbmRleCBjODkwNDQxLi4xYzhmMDViIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmgKQEAgLTIwLDM4ICsyMCw0
NyBAQAogI2lmbmRlZiBRdEFic3RyYWN0V2ViUG9wdXBfaAogI2RlZmluZSBRdEFic3RyYWN0V2Vi
UG9wdXBfaAogCisjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCisKICNpbmNsdWRlIDxRRm9u
dD4KICNpbmNsdWRlIDxRTGlzdD4KICNpbmNsdWRlIDxRUmVjdD4KKyNpbmNsdWRlIDxRV2lkZ2V0
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFBvcHVwTWVudUNsaWVudDsKIAogY2xh
c3MgUXRBYnN0cmFjdFdlYlBvcHVwIHsKIHB1YmxpYzoKLSAgICBzdHJ1Y3QgSXRlbSB7Ci0gICAg
ICAgIGVudW0geyBPcHRpb24sIEdyb3VwLCBTZXBhcmF0b3IgfSB0eXBlOwotICAgICAgICBRU3Ry
aW5nIHRleHQ7Ci0gICAgICAgIFFTdHJpbmcgdG9vbFRpcDsKLSAgICAgICAgYm9vbCBlbmFibGVk
OwotICAgIH07CisgICAgZW51bSBJdGVtVHlwZSB7IE9wdGlvbiwgR3JvdXAsIFNlcGFyYXRvciB9
OworCisgICAgSXRlbVR5cGUgaXRlbVR5cGUoaW50KSBjb25zdDsKKyAgICBRU3RyaW5nIGl0ZW1U
ZXh0KGludCBpZHgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LT5pdGVtVGV4dChpZHgpOyB9Cisg
ICAgUVN0cmluZyBpdGVtVG9vbFRpcChpbnQgaWR4KSBjb25zdCB7IHJldHVybiBtX2NsaWVudC0+
aXRlbVRvb2xUaXAoaWR4KTsgfQorICAgIGJvb2wgaXRlbUlzRW5hYmxlZChpbnQgaWR4KSBjb25z
dCB7IHJldHVybiBtX2NsaWVudC0+aXRlbUlzRW5hYmxlZChpZHgpOyB9CisgICAgaW50IGl0ZW1D
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50LT5saXN0U2l6ZSgpOyB9CisKKyAgICBRV2lk
Z2V0KiB2aWV3KCkgeyByZXR1cm4gbV92aWV3OyB9CisgICAgUVJlY3QgZ2VvbWV0cnkoKSBjb25z
dCB7IHJldHVybiBtX2dlb21ldHJ5OyB9CisgICAgaW50IGN1cnJlbnRJbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudEluZGV4OyB9CiAKICAgICBRdEFic3RyYWN0V2ViUG9wdXAoKTsKICAg
ICB2aXJ0dWFsIH5RdEFic3RyYWN0V2ViUG9wdXAoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzaG93
KGNvbnN0IFFSZWN0JiBnZW9tZXRyeSwgaW50IHNlbGVjdGVkSW5kZXgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2hvdygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcG9wdWxhdGUoY29uc3QgUUZvbnQmIGZvbnQsIGNvbnN0IFFMaXN0PEl0ZW0+
JiBpdGVtcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoUVdpZGdldCogcGFyZW50
KSA9IDA7CiAKLXByb3RlY3RlZDoKICAgICB2b2lkIHBvcHVwRGlkSGlkZShib29sIGFjY2VwdFN1
Z2dlc3Rpb25zKTsKICAgICB2b2lkIHZhbHVlQ2hhbmdlZChpbnQgaW5kZXgpOwogCisgICAgUUZv
bnQgZm9udCgpIHsgcmV0dXJuIG1fY2xpZW50LT5tZW51U3R5bGUoKS5mb250KCkuZm9udCgpOyB9
CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFBvcHVwTWVudTsKICAgICBQb3B1cE1lbnVD
bGllbnQqIG1fY2xpZW50OworICAgIFFXaWRnZXQqIG1fdmlldzsKKyAgICBpbnQgbV9jdXJyZW50
SW5kZXg7CisgICAgUVJlY3QgbV9nZW9tZXRyeTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGI3NmRjYjkuLjBmZmQw
ZWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEwLTAxLTIwICBMdWl6IEFnb3N0aW5pICA8bHVpei5h
Z29zdGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtRdF0gQ3VzdG9tIHNlbGVjdCBwb3B1cHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzQxOAorCisgICAgICAgIEFkanVz
dGluZyBRdEZhbGxiYWNrV2ViUG9wdXBDb21ibyB0byB0aGUgY2hhbmdlcyBpbiBXZWJDb3JlIGxh
eWVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVNlbGVjdFBvcHVwKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxi
YWNrV2ViUG9wdXBDb21ibzo6UXRGYWxsYmFja1dlYlBvcHVwQ29tYm8pOgorICAgICAgICAoV2Vi
Q29yZTo6UXRGYWxsYmFja1dlYlBvcHVwQ29tYm86OnNob3dQb3B1cCk6CisgICAgICAgIChXZWJD
b3JlOjpRdEZhbGxiYWNrV2ViUG9wdXBDb21ibzo6aGlkZVBvcHVwKToKKyAgICAgICAgKFdlYkNv
cmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6UXRGYWxsYmFja1dlYlBvcHVwKToKKyAgICAgICAgKFdl
YkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6flF0RmFsbGJhY2tXZWJQb3B1cCk6CisgICAgICAg
IChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6
UXRGYWxsYmFja1dlYlBvcHVwOjpoaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tX
ZWJQb3B1cDo6cG9wdWxhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tX
ZWJQb3B1cC5oOgorCiAyMDEwLTAxLTE5ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKaW5kZXggZjYyYmM4Ni4uNjM0NTUzOSAxMDA2
NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAorKysg
Yi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCkBAIC00NjYsNyAr
NDY2LDcgQEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lv
bkZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLVF0QWJzdHJhY3RXZWJQb3B1cCogQ2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVBvcHVwKCkKK1F0
QWJzdHJhY3RXZWJQb3B1cCogQ2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVNlbGVjdFBvcHVwKCkKIHsK
ICAgICByZXR1cm4gbmV3IFF0RmFsbGJhY2tXZWJQb3B1cDsKIH0KZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKaW5kZXggMTA2ZDRjYy4uNzA3NzUwMSAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKKysrIGIvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2Nh
dGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKik7CiAKLSAgICAgICAg
UXRBYnN0cmFjdFdlYlBvcHVwKiBjcmVhdGVQb3B1cCgpOworICAgICAgICBRdEFic3RyYWN0V2Vi
UG9wdXAqIGNyZWF0ZVNlbGVjdFBvcHVwKCk7CiAKICAgICAgICAgUVdlYlBhZ2UqIG1fd2ViUGFn
ZTsKICAgICAgICAgV2ViQ29yZTo6S1VSTCBsYXN0SG92ZXJVUkw7CmRpZmYgLS1naXQgYS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcCBiL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwCmluZGV4IDM0NGQ1OGEuLmJlOThl
NTMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9w
dXAuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAu
Y3BwCkBAIC0zMSw4NyArMzEsOTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitRdEZhbGxi
YWNrV2ViUG9wdXBDb21ibzo6UXRGYWxsYmFja1dlYlBvcHVwQ29tYm8oUXRGYWxsYmFja1dlYlBv
cHVwJiBvd25lclBvcHVwKQorICAgIDogbV9vd25lclBvcHVwKG93bmVyUG9wdXApCit7Cit9CisK
K3ZvaWQgUXRGYWxsYmFja1dlYlBvcHVwQ29tYm86OnNob3dQb3B1cCgpCit7CisgICAgUUNvbWJv
Qm94OjpzaG93UG9wdXAoKTsKKyAgICBtX293bmVyUG9wdXAubV9wb3B1cFZpc2libGUgPSB0cnVl
OworfQorCit2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cENvbWJvOjpoaWRlUG9wdXAoKQoreworICAg
IFFXaWRnZXQqIGFjdGl2ZUZvY3VzID0gUUFwcGxpY2F0aW9uOjpmb2N1c1dpZGdldCgpOworICAg
IGlmIChhY3RpdmVGb2N1cyAmJiBhY3RpdmVGb2N1cyA9PSBRQ29tYm9Cb3g6OnZpZXcoKQorICAg
ICAgICAmJiBhY3RpdmVGb2N1cy0+dGVzdEF0dHJpYnV0ZShRdDo6V0FfSW5wdXRNZXRob2RFbmFi
bGVkKSkgeworICAgICAgICBRSW5wdXRDb250ZXh0KiBxaWMgPSBhY3RpdmVGb2N1cy0+aW5wdXRD
b250ZXh0KCk7CisgICAgICAgIGlmIChxaWMpIHsKKyAgICAgICAgICAgIHFpYy0+cmVzZXQoKTsK
KyAgICAgICAgICAgIHFpYy0+c2V0Rm9jdXNXaWRnZXQoMCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBRQ29tYm9Cb3g6OmhpZGVQb3B1cCgpOworICAgIGlmICghbV9vd25lclBvcHVwLm1fcG9w
dXBWaXNpYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX293bmVyUG9wdXAubV9wb3B1cFZp
c2libGUgPSBmYWxzZTsKKyAgICBtX293bmVyUG9wdXAucG9wdXBEaWRIaWRlKHRydWUpOworfQor
CiAvLyBRdEZhbGxiYWNrV2ViUG9wdXAKIAogUXRGYWxsYmFja1dlYlBvcHVwOjpRdEZhbGxiYWNr
V2ViUG9wdXAoKQogICAgIDogUXRBYnN0cmFjdFdlYlBvcHVwKCkKICAgICAsIG1fcG9wdXBWaXNp
YmxlKGZhbHNlKQorICAgICwgbV9jb21ibyhuZXcgUXRGYWxsYmFja1dlYlBvcHVwQ29tYm8oKnRo
aXMpKQogewotICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKGFjdGl2YXRlZChpbnQpKSwKKyAgICBj
b25uZWN0KG1fY29tYm8sIFNJR05BTChhY3RpdmF0ZWQoaW50KSksCiAgICAgICAgICAgICBTTE9U
KGFjdGl2ZUNoYW5nZWQoaW50KSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKIH0KIAotCi12b2lk
IFF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyhjb25zdCBRUmVjdCYgZ2VvbWV0cnksIGludCBzZWxl
Y3RlZEluZGV4KQorUXRGYWxsYmFja1dlYlBvcHVwOjp+UXRGYWxsYmFja1dlYlBvcHVwKCkKIHsK
LSAgICBzZXRDdXJyZW50SW5kZXgoc2VsZWN0ZWRJbmRleCk7Ci0KLSAgICAvKgotICAgIFFXaWRn
ZXQqIHBhcmVudCA9IDA7Ci0gICAgaWYgKGNsaWVudCgpLT5ob3N0V2luZG93KCkgJiYgY2xpZW50
KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpCi0gICAgICAgcGFyZW50ID0g
Y2xpZW50KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPm93bmVyV2lkZ2V0
KCk7CisgICAgZGVsZXRlIG1fY29tYm87Cit9CiAKLSAgICBzZXRQYXJlbnQocGFyZW50KTsKLSAg
ICAqLwordm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3coKQoreworICAgIHBvcHVsYXRlKCk7
CisgICAgbV9jb21iby0+c2V0UGFyZW50KHZpZXcoKSk7CisgICAgbV9jb21iby0+c2V0Q3VycmVu
dEluZGV4KGN1cnJlbnRJbmRleCgpKTsKIAotICAgIHNldEdlb21ldHJ5KFFSZWN0KGdlb21ldHJ5
LmxlZnQoKSwgZ2VvbWV0cnkudG9wKCksIGdlb21ldHJ5LndpZHRoKCksIHNpemVIaW50KCkuaGVp
Z2h0KCkpKTsKKyAgICBRUmVjdCByZWN0ID0gZ2VvbWV0cnkoKTsKKyAgICBtX2NvbWJvLT5zZXRH
ZW9tZXRyeShRUmVjdChyZWN0LmxlZnQoKSwgcmVjdC50b3AoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWN0LndpZHRoKCksIG1fY29tYm8tPnNpemVIaW50KCkuaGVpZ2h0KCkp
KTsKIAogICAgIFFNb3VzZUV2ZW50IGV2ZW50KFFFdmVudDo6TW91c2VCdXR0b25QcmVzcywgUUN1
cnNvcjo6cG9zKCksIFF0OjpMZWZ0QnV0dG9uLAogICAgICAgICAgICAgICAgICAgICAgIFF0OjpM
ZWZ0QnV0dG9uLCBRdDo6Tm9Nb2RpZmllcik7Ci0gICAgUUNvcmVBcHBsaWNhdGlvbjo6c2VuZEV2
ZW50KHRoaXMsICZldmVudCk7CisgICAgUUNvcmVBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fY29t
Ym8sICZldmVudCk7CiB9CiAKLXZvaWQgUXRGYWxsYmFja1dlYlBvcHVwOjpwb3B1bGF0ZShjb25z
dCBRRm9udCYgZm9udCwgY29uc3QgUUxpc3Q8SXRlbT4mIGl0ZW1zKQordm9pZCBRdEZhbGxiYWNr
V2ViUG9wdXA6OmhpZGUoKQogewotICAgIGNsZWFyKCk7CisgICAgbV9jb21iby0+aGlkZVBvcHVw
KCk7Cit9CisKK3ZvaWQgUXRGYWxsYmFja1dlYlBvcHVwOjpwb3B1bGF0ZSgpCit7CisgICAgbV9j
b21iby0+Y2xlYXIoKTsKIAotICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCogbW9kZWwgPSBxb2JqZWN0
X2Nhc3Q8UVN0YW5kYXJkSXRlbU1vZGVsKj4oUUNvbWJvQm94Ojptb2RlbCgpKTsKKyAgICBRU3Rh
bmRhcmRJdGVtTW9kZWwqIG1vZGVsID0gcW9iamVjdF9jYXN0PFFTdGFuZGFyZEl0ZW1Nb2RlbCo+
KG1fY29tYm8tPm1vZGVsKCkpOwogICAgIFFfQVNTRVJUKG1vZGVsKTsKIAotICAgIHNldEZvbnQo
Zm9udCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewotICAg
ICAgICBzd2l0Y2ggKGl0ZW1zW2ldLnR5cGUpIHsKLSAgICAgICAgY2FzZSBRdEFic3RyYWN0V2Vi
UG9wdXA6Okl0ZW06OlNlcGFyYXRvcjoKLSAgICAgICAgICAgIGluc2VydFNlcGFyYXRvcihpKTsK
KyAgICBtX2NvbWJvLT5zZXRGb250KGZvbnQoKSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBp
dGVtQ291bnQoKTsgKytpKSB7CisgICAgICAgIHN3aXRjaCAoaXRlbVR5cGUoaSkpIHsKKyAgICAg
ICAgY2FzZSBTZXBhcmF0b3I6CisgICAgICAgICAgICBtX2NvbWJvLT5pbnNlcnRTZXBhcmF0b3Io
aSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBRdEFic3RyYWN0V2ViUG9wdXA6
Okl0ZW06Okdyb3VwOgotICAgICAgICAgICAgaW5zZXJ0SXRlbShpLCBpdGVtc1tpXS50ZXh0KTsK
KyAgICAgICAgY2FzZSBHcm91cDoKKyAgICAgICAgICAgIG1fY29tYm8tPmluc2VydEl0ZW0oaSwg
aXRlbVRleHQoaSkpOwogICAgICAgICAgICAgbW9kZWwtPml0ZW0oaSktPnNldEVuYWJsZWQoZmFs
c2UpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUXRBYnN0cmFjdFdlYlBvcHVw
OjpJdGVtOjpPcHRpb246Ci0gICAgICAgICAgICBpbnNlcnRJdGVtKGksIGl0ZW1zW2ldLnRleHQp
OwotICAgICAgICAgICAgbW9kZWwtPml0ZW0oaSktPnNldEVuYWJsZWQoaXRlbXNbaV0uZW5hYmxl
ZCk7CisgICAgICAgIGNhc2UgT3B0aW9uOgorICAgICAgICAgICAgbV9jb21iby0+aW5zZXJ0SXRl
bShpLCBpdGVtVGV4dChpKSk7CisgICAgICAgICAgICBtb2RlbC0+aXRlbShpKS0+c2V0RW5hYmxl
ZChpdGVtSXNFbmFibGVkKGkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
fQogfQogCi12b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvd1BvcHVwKCkKLXsKLSAgICBRQ29t
Ym9Cb3g6OnNob3dQb3B1cCgpOwotICAgIG1fcG9wdXBWaXNpYmxlID0gdHJ1ZTsKLX0KLQotdm9p
ZCBRdEZhbGxiYWNrV2ViUG9wdXA6OmhpZGVQb3B1cCgpCi17Ci0gICAgUVdpZGdldCogYWN0aXZl
Rm9jdXMgPSBRQXBwbGljYXRpb246OmZvY3VzV2lkZ2V0KCk7Ci0gICAgaWYgKGFjdGl2ZUZvY3Vz
ICYmIGFjdGl2ZUZvY3VzID09IHZpZXcoKQotICAgICAgICAmJiBhY3RpdmVGb2N1cy0+dGVzdEF0
dHJpYnV0ZShRdDo6V0FfSW5wdXRNZXRob2RFbmFibGVkKSkgewotICAgICAgICBRSW5wdXRDb250
ZXh0KiBxaWMgPSBhY3RpdmVGb2N1cy0+aW5wdXRDb250ZXh0KCk7Ci0gICAgICAgIGlmIChxaWMp
IHsKLSAgICAgICAgICAgIHFpYy0+cmVzZXQoKTsKLSAgICAgICAgICAgIHFpYy0+c2V0Rm9jdXNX
aWRnZXQoMCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBRQ29tYm9Cb3g6OmhpZGVQb3B1cCgp
OwotICAgIGlmICghbV9wb3B1cFZpc2libGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcG9w
dXBWaXNpYmxlID0gZmFsc2U7Ci0gICAgcG9wdXBEaWRIaWRlKHRydWUpOwotfQotCiB2b2lkIFF0
RmFsbGJhY2tXZWJQb3B1cDo6YWN0aXZlQ2hhbmdlZChpbnQgaW5kZXgpCiB7CiAgICAgaWYgKGlu
ZGV4IDwgMCkKQEAgLTEyMCw5ICsxMzEsNCBAQCB2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6YWN0
aXZlQ2hhbmdlZChpbnQgaW5kZXgpCiAgICAgdmFsdWVDaGFuZ2VkKGluZGV4KTsKIH0KIAotdm9p
ZCBRdEZhbGxiYWNrV2ViUG9wdXA6OnNldFBhcmVudChRV2lkZ2V0KiBwYXJlbnQpCi17Ci0gICAg
UUNvbWJvQm94OjpzZXRQYXJlbnQocGFyZW50KTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oIGIvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oCmluZGV4IDVhZmZlMGEuLjhmYmVjNmYgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaAor
KysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmgKQEAgLTI1
LDI1ICsyNSwzNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFF0RmFsbGJhY2tX
ZWJQb3B1cCA6IHByaXZhdGUgUUNvbWJvQm94LCBwdWJsaWMgUXRBYnN0cmFjdFdlYlBvcHVwIHsK
K2NsYXNzIFF0RmFsbGJhY2tXZWJQb3B1cENvbWJvOworCitjbGFzcyBRdEZhbGxiYWNrV2ViUG9w
dXAgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFF0QWJzdHJhY3RXZWJQb3B1cCB7CiAgICAgUV9P
QkpFQ1QKIHB1YmxpYzoKICAgICBRdEZhbGxiYWNrV2ViUG9wdXAoKTsKKyAgICB+UXRGYWxsYmFj
a1dlYlBvcHVwKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBRUmVjdCYgZ2VvbWV0
cnksIGludCBzZWxlY3RlZEluZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpIHsgaGlkZVBv
cHVwKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGUoY29uc3QgUUZvbnQmIGZvbnQsIGNv
bnN0IFFMaXN0PEl0ZW0+JiBpdGVtcyk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChRV2lk
Z2V0KiBwYXJlbnQpOworICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CisgICAgdmlydHVhbCB2b2lk
IGhpZGUoKTsKIAogcHJpdmF0ZSBzbG90czoKICAgICB2b2lkIGFjdGl2ZUNoYW5nZWQoaW50KTsK
IAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUXRGYWxsYmFja1dlYlBvcHVwQ29tYm87CiAg
ICAgYm9vbCBtX3BvcHVwVmlzaWJsZTsKKyAgICBRdEZhbGxiYWNrV2ViUG9wdXBDb21ibyogbV9j
b21ibzsKIAorICAgIHZvaWQgcG9wdWxhdGUoKTsKK307CiAKK2NsYXNzIFF0RmFsbGJhY2tXZWJQ
b3B1cENvbWJvIDogcHVibGljIFFDb21ib0JveCB7CitwdWJsaWM6CisgICAgUXRGYWxsYmFja1dl
YlBvcHVwQ29tYm8oUXRGYWxsYmFja1dlYlBvcHVwJiBvd25lclBvcHVwKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2hvd1BvcHVwKCk7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cCgpOworCitwcml2
YXRlOgorICAgIFF0RmFsbGJhY2tXZWJQb3B1cCYgbV9vd25lclBvcHVwOwogfTsKIAogfQotLSAK
MS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47022</attachid>
            <date>2010-01-20 07:01:57 -0800</date>
            <delta_ts>2010-01-27 15:01:23 -0800</delta_ts>
            <desc>Public API</desc>
            <filename>0001-Qt-Custom-select-popups.patch</filename>
            <type>text/plain</type>
            <size>18164</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA2OTcwNzBmMzcxNjI2YTNjMTIwOTcyYTlkN2M0ODQxODZkMDRhMmE0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFdlZCwgMjAgSmFuIDIwMTAgMTE6NTY6MDQgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIEN1c3RvbSBzZWxlY3QgcG9wdXBzLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzNDE4CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCldlYkNv
cmU6CgpBZGRpbmcgY29tYm9ib3ggZGVsZWdhdGUgQVBJIGZpbGVzIHRvIHRoZSBidWlsZC4KCiog
V2ViQ29yZS5wcm86CgpXZWJLaXQvcXQ6CgpDb21ib2JveCBkZWxlZ2F0ZSBwdWJsaWMgQVBJLgoK
Q29tYm9ib3ggcG9wdXAgY3VzdG9taXphdGlvbiBjYW4gYmUgbWFkZSBwcm92aWRpbmcgYW4gaW5z
dGFuY2Ugb2YKUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBGYWN0b3J5IHRvIFFXZWJQYWdlLiBUaGUg
ZmFjdG9yeSB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlClFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwIG9i
amVjdHMgd2hlbiBuZWVkZWQuIFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwIGNsYXNzIGlzIHRoZQpi
YXNlIGNsYXNzIGZvciBjdXN0b20gY29tYm9ib3ggcG9wdXBzLgoKUVdlYkRlbGVnYXRlU2VsZWN0
UG9wdXBGYWN0b3J5IGluaGVyaXRlZCBjbGFzc2VzIG11c3QgaW1wbGVtZW50IG1ldGhvZCBjcmVh
dGUgYW5kCnJldHVybiBhbiBvYmplY3Qgb2YgY2xhc3MgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAu
CgoqIEFwaS9oZWFkZXJzLnByaToKKiBBcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAuY3BwOiBB
ZGRlZC4KKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjpRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cCk6
CihRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6flFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwKToKKFFX
ZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjppbmZvcm1DbG9zZWQpOgooUVdlYkRlbGVnYXRlU2VsZWN0
UG9wdXA6OnNldEN1cnJlbnRJbmRleCk6CihRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6dmlldyk6
CihRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6Z2VvbWV0cnkpOgooUVdlYkRlbGVnYXRlU2VsZWN0
UG9wdXA6OmN1cnJlbnRJbmRleCk6CihRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aXRlbVR5cGUp
OgooUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6Oml0ZW1UZXh0KToKKFFXZWJEZWxlZ2F0ZVNlbGVj
dFBvcHVwOjppdGVtVG9vbFRpcCk6CihRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aXRlbUlzRW5h
YmxlZCk6CihRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aXRlbUNvdW50KToKKiBBcGkvcXdlYmRl
bGVnYXRlc2VsZWN0cG9wdXAuaDogQWRkZWQuCiogQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVw
X3AuaDogQWRkZWQuCihRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cFByaXZhdGU6OlFXZWJEZWxlZ2F0
ZVNlbGVjdFBvcHVwUHJpdmF0ZSk6CiogQXBpL3F3ZWJwYWdlLmNwcDoKKFFXZWJQYWdlOjpzZXRT
ZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeSk6CiogQXBpL3F3ZWJwYWdlLmg6CiogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgooV2ViQ29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6UVdl
YlBvcHVwV3JhcHBlcik6CihXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjp+UVdlYlBvcHVwV3Jh
cHBlcik6CihXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpzaG93KToKKFdlYkNvcmU6OlFXZWJQ
b3B1cFdyYXBwZXI6OmhpZGUpOgooV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OkNocm9tZUNsaWVu
dFF0KToKKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzZXRTZWxlY3RQb3B1cERlbGVnYXRlRmFj
dG9yeSk6CihXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlU2VsZWN0UG9wdXApOgoqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6Ci0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKysrCiBXZWJDb3JlL1dlYkNvcmUucHJvICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJp
ICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVz
ZWxlY3Rwb3B1cC5jcHAgICB8ICAgOTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBXZWJL
aXQvcXQvQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwLmggICAgIHwgICA3MSArKysrKysrKysr
KysrKysrKysrKwogV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9wLmggICB8
ICAgMzcgKysrKysrKysrKysKIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwICAgICAgICAgICAg
ICAgICAgfCAgICA3ICsrLQogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oICAgICAgICAgICAgICAg
ICAgICB8ICAgIDYgKystCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICA0NyArKysrKysrKysrKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuY3BwIHwgICA0NSArKysrKysrKysrKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuaCAgIHwgICAgNiArKwogMTEgZmlsZXMgY2hhbmdlZCwgMzI2IGlu
c2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L3F0
L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJL
aXQvcXQvQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBX
ZWJLaXQvcXQvQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwX3AuaAoKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNhNzQ1YS4uNGQ5YzA3
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTUsNiArNSwxNyBAQAogICAgICAgICBbUXRdIEN1c3RvbSBzZWxlY3QgcG9wdXBzLgogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM0MTgKIAorICAg
ICAgICBBZGRpbmcgY29tYm9ib3ggZGVsZWdhdGUgQVBJIGZpbGVzIHRvIHRoZSBidWlsZC4KKwor
ICAgICAgICAqIFdlYkNvcmUucHJvOgorCisyMDEwLTAxLTIwICBMdWl6IEFnb3N0aW5pICA8bHVp
ei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtRdF0gQ3VzdG9tIHNlbGVjdCBwb3B1cHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzQxOAorCiAgICAgICAgIE9w
dGltaXphdGlvbiBvZiB0aGUgV2ViQ29yZSBzdXBwb3J0IHRvIGNvbWJvYm94IHBvcHVwIGRlbGVn
YXRlLgogCiAgICAgICAgICogcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwOgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNjI5NGMx
YS4uMmI0MmNiNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3Jl
L1dlYkNvcmUucHJvCkBAIC0yMDIwLDYgKzIwMjAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAuLi9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwIFwKICAgICAuLi9X
ZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcWdyYXBo
aWNzd2Vidmlldy5jcHAgXAorICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYmRlbGVnYXRlc2VsZWN0
cG9wdXAuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBcCiAgICAgLi4v
V2ViS2l0L3F0L0FwaS9xd2Vidmlldy5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYmVs
ZW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkgYi9XZWJL
aXQvcXQvQXBpL2hlYWRlcnMucHJpCmluZGV4IDFhNDI1OTcuLjNiZDM3YzcgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkKKysrIGIvV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnBy
aQpAQCAtMTEsNCArMTEsNiBAQCBXRUJLSVRfQVBJX0hFQURFUlMgPSAkJFBXRC9xd2ViZnJhbWUu
aCBcCiAgICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2VicGx1Z2luZmFjdG9yeS5oIFwKICAg
ICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJoaXN0b3J5LmggXAogICAgICAgICAgICAgICAg
ICAgICAgJCRQV0QvcXdlYmluc3BlY3Rvci5oIFwKLSAgICAgICAgICAgICAgICAgICAgICQkUFdE
L3F3ZWJraXR2ZXJzaW9uLmgKKyAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJraXR2ZXJz
aW9uLmggXAorICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYmRlbGVnYXRlc2VsZWN0cG9w
dXAuaCBcCisgICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1
cF9wLmgKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAu
Y3BwIGIvV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhkODhkMgotLS0gL2Rldi9udWxsCisrKyBiL1dl
YktpdC9xdC9BcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAuY3BwCkBAIC0wLDAgKzEsOTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicXdlYmRl
bGVnYXRlc2VsZWN0cG9wdXAuaCIKKworI2luY2x1ZGUgIlF0QWJzdHJhY3RXZWJQb3B1cC5oIgor
I2luY2x1ZGUgInF3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwX3AuaCIKKworUVdlYkRlbGVnYXRlU2Vs
ZWN0UG9wdXA6OlFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwKCkKKyAgICA6IGQobmV3IFFXZWJEZWxl
Z2F0ZVNlbGVjdFBvcHVwUHJpdmF0ZSgpKQoreworfQorCitRV2ViRGVsZWdhdGVTZWxlY3RQb3B1
cDo6flFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwKCkKK3sKKyAgICBkZWxldGUgZDsKK30KKwordm9p
ZCBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aW5mb3JtQ2xvc2VkKCkKK3sKKyAgICBkLT5jb3Jl
UG9wdXAtPnBvcHVwRGlkSGlkZSh0cnVlKTsKK30KKwordm9pZCBRV2ViRGVsZWdhdGVTZWxlY3RQ
b3B1cDo6c2V0Q3VycmVudEluZGV4KGludCBpZHgpCit7CisgICAgZC0+Y29yZVBvcHVwLT52YWx1
ZUNoYW5nZWQoaWR4KTsKK30KKworUVdpZGdldCogUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6OnZp
ZXcoKQoreworICAgIHJldHVybiBkLT5jb3JlUG9wdXAtPnZpZXcoKTsKK30KKworUVJlY3QgUVdl
YkRlbGVnYXRlU2VsZWN0UG9wdXA6Omdlb21ldHJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+
Y29yZVBvcHVwLT5nZW9tZXRyeSgpOworfQorCitpbnQgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6
OmN1cnJlbnRJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmNvcmVQb3B1cC0+Y3VycmVu
dEluZGV4KCk7Cit9CisKK1FXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjpJdGVtVHlwZSBRV2ViRGVs
ZWdhdGVTZWxlY3RQb3B1cDo6aXRlbVR5cGUoaW50IGlkeCkgY29uc3QKK3sKKyAgICBzd2l0Y2gg
KGQtPmNvcmVQb3B1cC0+aXRlbVR5cGUoaWR4KSkgeworICAgIGNhc2UgV2ViQ29yZTo6UXRBYnN0
cmFjdFdlYlBvcHVwOjpHcm91cDoKKyAgICAgICAgcmV0dXJuIEdyb3VwOworICAgIGNhc2UgV2Vi
Q29yZTo6UXRBYnN0cmFjdFdlYlBvcHVwOjpPcHRpb246CisgICAgICAgIHJldHVybiBPcHRpb247
CisgICAgY2FzZSBXZWJDb3JlOjpRdEFic3RyYWN0V2ViUG9wdXA6OlNlcGFyYXRvcjoKKyAgICAg
ICAgcmV0dXJuIFNlcGFyYXRvcjsKKyAgICB9CisgICAgcmV0dXJuIE9wdGlvbjsKK30KKworUVN0
cmluZyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aXRlbVRleHQoaW50IGlkeCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZC0+Y29yZVBvcHVwLT5pdGVtVGV4dChpZHgpOworfQorCitRU3RyaW5nIFFX
ZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjppdGVtVG9vbFRpcChpbnQgaWR4KSBjb25zdAoreworICAg
IHJldHVybiBkLT5jb3JlUG9wdXAtPml0ZW1Ub29sVGlwKGlkeCk7Cit9CisKK2Jvb2wgUVdlYkRl
bGVnYXRlU2VsZWN0UG9wdXA6Oml0ZW1Jc0VuYWJsZWQoaW50IGlkeCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZC0+Y29yZVBvcHVwLT5pdGVtSXNFbmFibGVkKGlkeCk7Cit9CisKK2ludCBRV2ViRGVs
ZWdhdGVTZWxlY3RQb3B1cDo6aXRlbUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+Y29y
ZVBvcHVwLT5pdGVtQ291bnQoKTsKK30KKwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vi
ZGVsZWdhdGVzZWxlY3Rwb3B1cC5oIGIvV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rw
b3B1cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYmVhZTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwLmgKQEAg
LTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgcXdlYmRlbGVnYXRlc2Vs
ZWN0cG9wdXBfaAorI2RlZmluZSBxd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9oCisKKyNpbmNsdWRl
ICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSA8UUxpc3Q+CisjaW5jbHVkZSA8UVJlY3Q+Cisj
aW5jbHVkZSA8UVN0cmluZz4KKyNpbmNsdWRlIDxRV2lkZ2V0PgorCitjbGFzcyBRV2ViRGVsZWdh
dGVTZWxlY3RQb3B1cFByaXZhdGU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFFXZWJQ
b3B1cFdyYXBwZXI7Cit9CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJEZWxlZ2F0ZVNlbGVj
dFBvcHVwIHsKK3B1YmxpYzoKKyAgICBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cCgpOworICAgIHZp
cnR1YWwgflFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwKCk7CisKKyAgICBlbnVtIEl0ZW1UeXBlIHsg
T3B0aW9uLCBHcm91cCwgU2VwYXJhdG9yIH07CisgICAgSXRlbVR5cGUgaXRlbVR5cGUoaW50KSBj
b25zdDsKKyAgICBRU3RyaW5nIGl0ZW1UZXh0KGludCkgY29uc3Q7CisgICAgUVN0cmluZyBpdGVt
VG9vbFRpcChpbnQpIGNvbnN0OworICAgIGJvb2wgaXRlbUlzRW5hYmxlZChpbnQpIGNvbnN0Owor
ICAgIGludCBpdGVtQ291bnQoKSBjb25zdDsKKworICAgIFFXaWRnZXQqIHZpZXcoKTsKKyAgICBR
UmVjdCBnZW9tZXRyeSgpIGNvbnN0OworICAgIGludCBjdXJyZW50SW5kZXgoKSBjb25zdDsKKwor
ICAgIHZpcnR1YWwgdm9pZCBvcGVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0g
MDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgc2V0Q3VycmVudEluZGV4KGludCBpbmRleCk7Cisg
ICAgdm9pZCBpbmZvcm1DbG9zZWQoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgV2Vi
Q29yZTo6UVdlYlBvcHVwV3JhcHBlcjsKKyAgICBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cFByaXZh
dGUqIGQ7Cit9OworCitjbGFzcyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cEZhY3RvcnkgeworcHVi
bGljOgorICAgIHZpcnR1YWwgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAqIGNyZWF0ZSgpID0gMDsK
K307CisKKworCisjZW5kaWYgLy8gcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXBfaApkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L0FwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9wLmggYi9XZWJLaXQvcXQv
QXBpL3F3ZWJkZWxlZ2F0ZXNlbGVjdHBvcHVwX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42MWFjYTZhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vi
ZGVsZWdhdGVzZWxlY3Rwb3B1cF9wLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICov
CisKKyNpZm5kZWYgcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXBfcF9oCisjZGVmaW5lIHF3ZWJkZWxl
Z2F0ZXNlbGVjdHBvcHVwX3BfaAorCisjaW5jbHVkZSAicXdlYmRlbGVnYXRlc2VsZWN0cG9wdXAu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUXRBYnN0cmFjdFdlYlBvcHVwOworfQor
CitjbGFzcyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cFByaXZhdGUgeworcHVibGljOgorICAgIFdl
YkNvcmU6OlF0QWJzdHJhY3RXZWJQb3B1cCogY29yZVBvcHVwOworICAgIFFXZWJEZWxlZ2F0ZVNl
bGVjdFBvcHVwUHJpdmF0ZSgpIDogY29yZVBvcHVwKDApIHt9Cit9OworCisKKyNlbmRpZiAvLyBx
d2ViZGVsZWdhdGVzZWxlY3Rwb3B1cF9wX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXggNTk4ZDdkNi4uNTVl
MmNlOCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAo
QykgMjAwOCwgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlr
b3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUg
SW5jLgogCkBAIC0xNzQzLDYgKzE3NDMsMTEgQEAgUVdlYlBhZ2U6On5RV2ViUGFnZSgpCiAgICAg
ZGVsZXRlIGQ7CiB9CiAKK3ZvaWQgUVdlYlBhZ2U6OnNldFNlbGVjdFBvcHVwRGVsZWdhdGVGYWN0
b3J5KFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwRmFjdG9yeSogZmFjdG9yeSkKK3sKKyAgICBkLT5j
aHJvbWVDbGllbnQtPnNldFNlbGVjdFBvcHVwRGVsZWdhdGVGYWN0b3J5KGZhY3RvcnkpOworfQor
CiAvKiEKICAgICBSZXR1cm5zIHRoZSBtYWluIGZyYW1lIG9mIHRoZSBwYWdlLgogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgK
aW5kZXggNDc2NmNiZC4uODU3M2ZlZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAgICBDb3B5cmlnaHQgKEMpIDIw
MDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNDksNiAr
NDksOCBAQCBjbGFzcyBRV2ViUGx1Z2luRmFjdG9yeTsKIGNsYXNzIFFXZWJIaXRUZXN0UmVzdWx0
OwogY2xhc3MgUVdlYkhpc3RvcnlJdGVtOwogCitjbGFzcyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1
cEZhY3Rvcnk7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDaHJvbWVDbGllbnRR
dDsKICAgICBjbGFzcyBFZGl0b3JDbGllbnRRdDsKQEAgLTIwMyw2ICsyMDUsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRWaWV3KFFXaWRnZXQgKnZpZXcpOwogICAgIFFXaWRnZXQgKnZpZXcoKSBj
b25zdDsKIAorICAgIHZvaWQgc2V0U2VsZWN0UG9wdXBEZWxlZ2F0ZUZhY3RvcnkoUVdlYkRlbGVn
YXRlU2VsZWN0UG9wdXBGYWN0b3J5KiBmYWN0b3J5KTsKKwogICAgIGJvb2wgaXNNb2RpZmllZCgp
IGNvbnN0OwogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBRVW5kb1N0YWNrICp1bmRvU3Rh
Y2soKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQv
Q2hhbmdlTG9nCmluZGV4IDBmZmQwZWEuLjc3MWNkODUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtNSw2ICs1LDUzIEBACiAgICAg
ICAgIFtRdF0gQ3VzdG9tIHNlbGVjdCBwb3B1cHMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzQxOAogCisgICAgICAgIENvbWJvYm94IGRlbGVnYXRl
IHB1YmxpYyBBUEkuCisKKyAgICAgICAgQ29tYm9ib3ggcG9wdXAgY3VzdG9taXphdGlvbiBjYW4g
YmUgbWFkZSBwcm92aWRpbmcgYW4gaW5zdGFuY2Ugb2YKKyAgICAgICAgUVdlYkRlbGVnYXRlU2Vs
ZWN0UG9wdXBGYWN0b3J5IHRvIFFXZWJQYWdlLiBUaGUgZmFjdG9yeSB3aWxsIGJlIHVzZWQgdG8g
Y3JlYXRlCisgICAgICAgIFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwIG9iamVjdHMgd2hlbiBuZWVk
ZWQuIFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwIGNsYXNzIGlzIHRoZQorICAgICAgICBiYXNlIGNs
YXNzIGZvciBjdXN0b20gY29tYm9ib3ggcG9wdXBzLgorCisgICAgICAgIFFXZWJEZWxlZ2F0ZVNl
bGVjdFBvcHVwRmFjdG9yeSBpbmhlcml0ZWQgY2xhc3NlcyBtdXN0IGltcGxlbWVudCBtZXRob2Qg
Y3JlYXRlIGFuZAorICAgICAgICByZXR1cm4gYW4gb2JqZWN0IG9mIGNsYXNzIFFXZWJEZWxlZ2F0
ZVNlbGVjdFBvcHVwLgorCisgICAgICAgICogQXBpL2hlYWRlcnMucHJpOgorICAgICAgICAqIEFw
aS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5jcHA6IEFkZGVkLgorICAgICAgICAoUVdlYkRlbGVn
YXRlU2VsZWN0UG9wdXA6OlFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwKToKKyAgICAgICAgKFFXZWJE
ZWxlZ2F0ZVNlbGVjdFBvcHVwOjp+UVdlYkRlbGVnYXRlU2VsZWN0UG9wdXApOgorICAgICAgICAo
UVdlYkRlbGVnYXRlU2VsZWN0UG9wdXA6OmluZm9ybUNsb3NlZCk6CisgICAgICAgIChRV2ViRGVs
ZWdhdGVTZWxlY3RQb3B1cDo6c2V0Q3VycmVudEluZGV4KToKKyAgICAgICAgKFFXZWJEZWxlZ2F0
ZVNlbGVjdFBvcHVwOjp2aWV3KToKKyAgICAgICAgKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjpn
ZW9tZXRyeSk6CisgICAgICAgIChRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6Y3VycmVudEluZGV4
KToKKyAgICAgICAgKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwOjppdGVtVHlwZSk6CisgICAgICAg
IChRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cDo6aXRlbVRleHQpOgorICAgICAgICAoUVdlYkRlbGVn
YXRlU2VsZWN0UG9wdXA6Oml0ZW1Ub29sVGlwKToKKyAgICAgICAgKFFXZWJEZWxlZ2F0ZVNlbGVj
dFBvcHVwOjppdGVtSXNFbmFibGVkKToKKyAgICAgICAgKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVw
OjppdGVtQ291bnQpOgorICAgICAgICAqIEFwaS9xd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBBcGkvcXdlYmRlbGVnYXRlc2VsZWN0cG9wdXBfcC5oOiBBZGRlZC4K
KyAgICAgICAgKFFXZWJEZWxlZ2F0ZVNlbGVjdFBvcHVwUHJpdmF0ZTo6UVdlYkRlbGVnYXRlU2Vs
ZWN0UG9wdXBQcml2YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAo
UVdlYlBhZ2U6OnNldFNlbGVjdFBvcHVwRGVsZWdhdGVGYWN0b3J5KToKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpRV2ViUG9wdXBXcmFwcGVyOjpRV2ViUG9wdXBXcmFwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6On5RV2ViUG9wdXBXcmFwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlFXZWJQb3B1cFdyYXBwZXI6OnNob3cpOgorICAgICAgICAoV2Vi
Q29yZTo6UVdlYlBvcHVwV3JhcHBlcjo6aGlkZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRRdDo6Q2hyb21lQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
UXQ6OnNldFNlbGVjdFBvcHVwRGVsZWdhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFF0OjpjcmVhdGVTZWxlY3RQb3B1cCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuaDoKKworMjAxMC0wMS0yMCAgTHVpeiBBZ29zdGluaSAgPGx1aXou
YWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbUXRdIEN1c3RvbSBzZWxlY3QgcG9wdXBzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM0MTgKKwogICAgICAgICBBZGp1
c3RpbmcgUXRGYWxsYmFja1dlYlBvcHVwQ29tYm8gdG8gdGhlIGNoYW5nZXMgaW4gV2ViQ29yZSBs
YXllci4KIAogICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKZGlm
ZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAgYi9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCmluZGV4IDYzNDU1Mzku
LjRkZDkyNDIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cApAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
WmFjayBSdXNpbiA8emFja0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQyLDYgKzQzLDggQEAK
ICNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAKKyNpbmNsdWRlICJxd2ViZGVsZWdhdGVzZWxlY3Rwb3B1cC5oIgorI2luY2x1ZGUgInF3ZWJk
ZWxlZ2F0ZXNlbGVjdHBvcHVwX3AuaCIKICNpbmNsdWRlICJxd2VicGFnZS5oIgogI2luY2x1ZGUg
InF3ZWJwYWdlX3AuaCIKICNpbmNsdWRlICJxd2ViZnJhbWVfcC5oIgpAQCAtNTYsOCArNTksNDMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKIHsKIAogCitjbGFzcyBRV2ViUG9wdXBXcmFwcGVyIDogcHVi
bGljIFF0QWJzdHJhY3RXZWJQb3B1cCB7CitwdWJsaWM6CisgICAgUVdlYlBvcHVwV3JhcHBlcihR
V2ViRGVsZWdhdGVTZWxlY3RQb3B1cCogcG9wdXApOworICAgIH5RV2ViUG9wdXBXcmFwcGVyKCk7
CisKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOworICAgIHZpcnR1YWwgdm9pZCBo
aWRlKCk7CisKK3ByaXZhdGU6CisgICAgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXAqIG1fcG9wdXA7
Cit9OworCitRV2ViUG9wdXBXcmFwcGVyOjpRV2ViUG9wdXBXcmFwcGVyKFFXZWJEZWxlZ2F0ZVNl
bGVjdFBvcHVwKiBwb3B1cCkKKyAgICA6IG1fcG9wdXAocG9wdXApCit7CisgICAgbV9wb3B1cC0+
ZC0+Y29yZVBvcHVwID0gdGhpczsKK30KKworUVdlYlBvcHVwV3JhcHBlcjo6flFXZWJQb3B1cFdy
YXBwZXIoKQoreworICAgIGRlbGV0ZSBtX3BvcHVwOworfQorCit2b2lkIFFXZWJQb3B1cFdyYXBw
ZXI6OnNob3coKQoreworICAgIG1fcG9wdXAtPm9wZW4oKTsKK30KKwordm9pZCBRV2ViUG9wdXBX
cmFwcGVyOjpoaWRlKCkKK3sKKyAgICBtX3BvcHVwLT5jbG9zZSgpOworfQorCiBDaHJvbWVDbGll
bnRRdDo6Q2hyb21lQ2xpZW50UXQoUVdlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgOiBtX3dlYlBhZ2Uo
d2ViUGFnZSkKKyAgICAsIG1fc2VsZWN0UG9wdXBGYWN0b3J5KDApCiB7CiAgICAgdG9vbEJhcnNW
aXNpYmxlID0gc3RhdHVzQmFyVmlzaWJsZSA9IG1lbnVCYXJWaXNpYmxlID0gdHJ1ZTsKIH0KQEAg
LTY3LDYgKzEwNSwxMSBAQCBDaHJvbWVDbGllbnRRdDo6fkNocm9tZUNsaWVudFF0KCkKIAogfQog
Cit2b2lkIENocm9tZUNsaWVudFF0OjpzZXRTZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeShRV2Vi
RGVsZWdhdGVTZWxlY3RQb3B1cEZhY3RvcnkqIHBvcHVwRmFjdG9yeSkKK3sKKyAgICBtX3NlbGVj
dFBvcHVwRmFjdG9yeSA9IHBvcHVwRmFjdG9yeTsKK30KKwogdm9pZCBDaHJvbWVDbGllbnRRdDo6
c2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFtX3dlYlBh
Z2UpCkBAIC00NjgsNiArNTExLDggQEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6cmVxdWVzdEdlb2xv
Y2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiwgR2VvbG9jYXRpb24qKQogCiBRdEFic3Ry
YWN0V2ViUG9wdXAqIENocm9tZUNsaWVudFF0OjpjcmVhdGVTZWxlY3RQb3B1cCgpCiB7CisgICAg
aWYgKG1fc2VsZWN0UG9wdXBGYWN0b3J5KQorICAgICAgICByZXR1cm4gbmV3IFFXZWJQb3B1cFdy
YXBwZXIobV9zZWxlY3RQb3B1cEZhY3RvcnktPmNyZWF0ZSgpKTsKICAgICByZXR1cm4gbmV3IFF0
RmFsbGJhY2tXZWJQb3B1cDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudFF0LmggYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuaAppbmRleCA3MDc3NTAxLi5lMjVkNDZmIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuaApAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgogICoKICAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCkBAIC0zNSw2ICszNiw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKIAogY2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBRV2ViRGVsZWdhdGVTZWxlY3RQb3B1cEZh
Y3Rvcnk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTM3LDYgKzEzOSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBRdEFic3RyYWN0V2ViUG9wdXAqIGNyZWF0ZVNlbGVj
dFBvcHVwKCk7CiAKKyAgICAgICAgdm9pZCBzZXRTZWxlY3RQb3B1cERlbGVnYXRlRmFjdG9yeShR
V2ViRGVsZWdhdGVTZWxlY3RQb3B1cEZhY3RvcnkqIHBvcHVwRmFjdG9yeSk7CisKICAgICAgICAg
UVdlYlBhZ2UqIG1fd2ViUGFnZTsKICAgICAgICAgV2ViQ29yZTo6S1VSTCBsYXN0SG92ZXJVUkw7
CiAgICAgICAgIFdlYkNvcmU6OlN0cmluZyBsYXN0SG92ZXJUaXRsZTsKQEAgLTE0NSw2ICsxNDks
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgdG9vbEJhcnNWaXNpYmxlOwog
ICAgICAgICBib29sIHN0YXR1c0JhclZpc2libGU7CiAgICAgICAgIGJvb2wgbWVudUJhclZpc2li
bGU7CisKKyAgICAgICAgUVdlYkRlbGVnYXRlU2VsZWN0UG9wdXBGYWN0b3J5KiBtX3NlbGVjdFBv
cHVwRmFjdG9yeTsKICAgICB9OwogfQogCi0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>