<?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>96200</bug_id>
          
          <creation_ts>2012-09-09 02:01:17 -0700</creation_ts>
          <short_desc>[EFL][WK2] Support Context Menu</short_desc>
          <delta_ts>2012-11-21 06:25:42 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>102065</dependson>
          <blocked>61838</blocked>
    
    <blocked>102932</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dglazkov</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>715461</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-09 02:01:17 -0700</bug_when>
    <thetext>EFL WK2 needs to support WebContextMenuProxy for context menu. Patch is coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729205</commentid>
    <comment_count>1</comment_count>
      <attachid>165928</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-26 22:24:20 -0700</bug_when>
    <thetext>Created attachment 165928
Working in Progress - please do not review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754571</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-30 12:17:34 -0700</bug_when>
    <thetext>Any progress on this? I was planning to work on context menu support for WK2 EFL and then I found this bug. I&apos;m happy to take over if you&apos;re busy with other things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754725</commentid>
    <comment_count>3</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-30 15:31:15 -0700</bug_when>
    <thetext>No, patch is coming within 1 ~ 2 weeks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757104</commentid>
    <comment_count>4</comment_count>
      <attachid>172039</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-02 04:56:06 -0700</bug_when>
    <thetext>Created attachment 172039
Working in Progress - 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759529</commentid>
    <comment_count>5</comment_count>
      <attachid>172551</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-06 04:39:37 -0800</bug_when>
    <thetext>Created attachment 172551
Working in Progress - 3

Probably, I might to request review after finishing unit test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764278</commentid>
    <comment_count>6</comment_count>
      <attachid>173621</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-12 04:55:32 -0800</bug_when>
    <thetext>Created attachment 173621
Working in Progress - 4

Sorry for late patch. Unfortunately, I don&apos;t finish to support API test yet. Mouse right button simulation doesn&apos;t work well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768848</commentid>
    <comment_count>7</comment_count>
      <attachid>174593</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-15 19:40:55 -0800</bug_when>
    <thetext>Created attachment 174593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768953</commentid>
    <comment_count>8</comment_count>
      <attachid>174593</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-15 23:04:25 -0800</bug_when>
    <thetext>Comment on attachment 174593
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=174593&amp;action=review

Looks good overall, with a few minor comments:

&gt; Source/WebKit2/ChangeLog:8
&gt; +        This patch supports WK2 EFL&apos;s context menu as WK1 implemenation because we can&apos;t use elementary in WebKit inside.

&quot;implementation&quot;, &quot;inside WebKit.&quot;

&gt; Source/WebKit2/ChangeLog:9
&gt; +        Basic functionalities of context menu are only supportted.

&quot;Only basic functionalities of context menu are supported.&quot;

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.cpp:39
&gt; +Ewk_Context_Menu::Ewk_Context_Menu(EwkViewImpl* viewImpl, WebContextMenuProxyEfl* contextMenuProxy, const Vector&lt;WebKit::WebContextMenuItemData&gt;&amp; items)

I think we stopped using underscore in C++ class names, didn&apos;t we?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.cpp:50
&gt; +{

You should probably free m_contextMenuItems and its items in the destructor.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.cpp:94
&gt; +const Eina_List *ewk_context_menu_items_get(const Ewk_Context_Menu* menu)

Star on wrong side.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.cpp:109
&gt; +    WebContextMenuItemData newItem(type, action, item-&gt;title(), item-&gt;enabled(), item-&gt;checked());

We should avoid useless temporary object and pass &quot;WebContextMenuItemData(type, action, item-&gt;title(), item-&gt;enabled(), item-&gt;checked())&quot; in argument to contextMenuItemSelected().

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu_item.cpp:36
&gt; +Ewk_Context_Menu_Item::Ewk_Context_Menu_Item(const WebKit::WebContextMenuItemData&amp; item)

I think we stopped using underscore in C++ class names
&quot;WebKit::&quot; is not needed here

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu_item.cpp:40
&gt; +    , m_isChecked(item.checked())

Shouldn&apos;t we initialize m_parentMenu and m_subMenu?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu_item.cpp:45
&gt; +Ewk_Context_Menu_Item::Ewk_Context_Menu_Item(Ewk_Context_Menu_Item_Type type, Ewk_Context_Menu_Item_Action action, Ewk_Context_Menu* parentMenu, Ewk_Context_Menu* subMenu, const char* title, Eina_Bool checked, Eina_Bool enabled)

Looks weird to use Eina_Bool in C++ API

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu_item.cpp:140
&gt; +    EINA_SAFETY_ON_NULL_RETURN_VAL(item, false);

0 not false

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu_item.h:199
&gt; +EAPI const char *ewk_context_menu_item_title_set(Ewk_Context_Menu_Item *o, const char *title);

Why are we returning the title here instead of Eina_Bool like usually?

&gt; Source/WebKit2/UIProcess/efl/WebContextMenuProxyEfl.h:50
&gt; +    virtual void showContextMenu(const WebCore::IntPoint&amp;, const Vector&lt;WebContextMenuItemData&gt;&amp;);

This method should probably not be virtual, especially if the destructor isn&apos;t.

&gt; Source/WebKit2/UIProcess/efl/WebContextMenuProxyEfl.h:51
&gt; +    virtual void hideContextMenu();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769203</commentid>
    <comment_count>9</comment_count>
      <attachid>174670</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-16 06:26:23 -0800</bug_when>
    <thetext>Created attachment 174670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769204</commentid>
    <comment_count>10</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-16 06:28:07 -0800</bug_when>
    <thetext>All nits are fixed as well as some minor stuffs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770358</commentid>
    <comment_count>11</comment_count>
      <attachid>174670</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-18 22:20:59 -0800</bug_when>
    <thetext>Comment on attachment 174670
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=174670&amp;action=review

&gt; Source/WebKit2/ChangeLog:9
&gt; +        Only basic functionalities of context menu are supportted.

&quot;supported&quot;

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.cpp:47
&gt; +        m_contextMenuItems = eina_list_append(m_contextMenuItems, ewk_object_ref(item.get()));

We should really avoid mixing ref&apos;ing functions and smart pointers. Just use release().leakRef()

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.cpp:73
&gt; +    RefPtr&lt;Ewk_Context_Menu_Item&gt; newItem = EwkContextMenuItem::create(type, action, ewkParentMenu, ewkSubMenu, title, checked, enabled).get();

looks like the .get() in the end should be removed.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.cpp:75
&gt; +    return ewk_object_ref(newItem.get());

Same comment as before, should be release().leakRef(). And actually, you don&apos;t need a temporary variable so it can be:
return EwkContextMenuItem::create(type, action, ewkParentMenu, ewkSubMenu, title, checked, enabled).leakRef();

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.cpp:78
&gt; +void ewk_context_menu_item_free(Ewk_Context_Menu_Item* item)

Why a free function if the object is ref counted?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu_item_private.h:36
&gt; +class EwkContextMenuItem : public Ewk_Object {

Does it really need to be ref counted? Since you&apos;re using a free function in the public API, it does not seem so. If you subclass Ewk_Object, the client can call ewk_object_ref / unref() on this object. In my opinion, you should stop subclassing the Ewk_Object and keep the public free function.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu_private.h:42
&gt; +class EwkContextMenu : public Ewk_Object {

sane here, does the context menu really need to be ref counted? It belongs to the view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770422</commentid>
    <comment_count>12</comment_count>
      <attachid>174905</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-19 00:24:53 -0800</bug_when>
    <thetext>Created attachment 174905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770429</commentid>
    <comment_count>13</comment_count>
      <attachid>174907</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-19 00:37:17 -0800</bug_when>
    <thetext>Created attachment 174907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770445</commentid>
    <comment_count>14</comment_count>
      <attachid>174907</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-19 01:01:54 -0800</bug_when>
    <thetext>Comment on attachment 174907
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=174907&amp;action=review

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.cpp:63
&gt; +    EwkContextMenuItem* newItem = EwkContextMenuItem::create(type, action, parentMenu, subMenu, title, checked, enabled).leakPtr();

Note: We try to avoid these useless temporary variables to facilitate return value optimization.

It would be better to return EwkContextMenuItem::create(type, action, parentMenu, subMenu, title, checked, enabled).leakPtr() directly.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.h:58
&gt; +EAPI Ewk_Context_Menu_Item *ewk_context_menu_item_new(Ewk_Context_Menu_Item_Type type, Ewk_Context_Menu_Item_Action action, Ewk_Context_Menu *parent_menu, Ewk_Context_Menu *sub_menu, const char *title, Eina_Bool checked, Eina_Bool enabled);

Why is this function part of ewk_context_menu.h and not ewk_context_menu_item.h?
Also, why do we need this public API? Once the browser constructs a context menu item, what can it do with it? I don&apos;t see any API to add a context menu item to an existing menu, and this function does not seem to alter the parent context menu internally.

Maybe it should be called ewk_context_menu_item_add() and the implementation should update the parent menu internally (i.e. m_contextMenuItems)? Also, in practice, the parent menu should probably own the memory so I&apos;m not sure we need a public free function.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.h:63
&gt; + * @param item the item to destory

&quot;destroy&quot;

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.h:68
&gt; +EAPI void ewk_context_menu_item_free(Ewk_Context_Menu_Item *item);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770452</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-19 01:07:08 -0800</bug_when>
    <thetext>Checking GTK port, it seems they have the following public API:
  webkit_context_menu_prepend(menu, item)
  webkit_context_menu_append(menu, item)
  webkit_context_menu_insert(menu, item, position)
  webkit_context_menu_remove(menu, item)

May be nice to have something similar. Currently we can construct an item but not add it or remove it from a menu it seems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770521</commentid>
    <comment_count>16</comment_count>
      <attachid>174928</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-19 02:40:04 -0800</bug_when>
    <thetext>Created attachment 174928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770524</commentid>
    <comment_count>17</comment_count>
      <attachid>174929</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-19 02:44:17 -0800</bug_when>
    <thetext>Created attachment 174929
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770530</commentid>
    <comment_count>18</comment_count>
      <attachid>174929</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-19 02:57:25 -0800</bug_when>
    <thetext>Comment on attachment 174929
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=174929&amp;action=review

&gt; Source/WebKit2/ChangeLog:25
&gt; +        (ewk_context_menu_item_new):

Changelog looks outdated?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.h:56
&gt; +EAPI Ewk_Context_Menu_Item *ewk_context_menu_item_append(Ewk_Context_Menu_Item_Type type, Ewk_Context_Menu_Item_Action action, const char *title, Eina_Bool checked, Eina_Bool enabled, Ewk_Context_Menu *parent_menu, Ewk_Context_Menu *sub_menu);

I don&apos;t think it is a good idea to hide the item constructor inside the append() function. I believe we should have 2 separate functions:
ewk_context_menu_item_new()
ewk_context_menu_item_append(item)

This is more extensible because later on we will likely add more (convenience) item constructors, e.g.:
ewk_context_menu_item_separator_new()
ewk_context_menu_item_with_submenu_new()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770538</commentid>
    <comment_count>19</comment_count>
      <attachid>174935</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-19 03:10:57 -0800</bug_when>
    <thetext>Created attachment 174935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770550</commentid>
    <comment_count>20</comment_count>
      <attachid>174936</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-19 03:21:08 -0800</bug_when>
    <thetext>Created attachment 174936
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770553</commentid>
    <comment_count>21</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-19 03:24:19 -0800</bug_when>
    <thetext>I also thought to implement this patch as GTK port. There was some faults in previous patch. I think ewk_context_menu.h is proper place for _new, _append and _remove because there is Ewk_Context_Menu dependency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770563</commentid>
    <comment_count>22</comment_count>
      <attachid>174936</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-19 03:43:29 -0800</bug_when>
    <thetext>Comment on attachment 174936
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=174936&amp;action=review

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.h:56
&gt; +EAPI Ewk_Context_Menu_Item *ewk_context_menu_item_new(Ewk_Context_Menu_Item_Type type, Ewk_Context_Menu_Item_Action action, const char *title, Eina_Bool checked, Eina_Bool enabled, Ewk_Context_Menu *parent_menu, Ewk_Context_Menu *sub_menu);

I don&apos;t understand why this is part of ewk_context_menu.h header. This is API to construct a context menu ITEM so it should be part of ewk_context_menu_item.h. Also, I don&apos;t think we should pass parent_menu.
The item should be added using ewk_context_menu_item_append() and parent_menu can be populated then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770566</commentid>
    <comment_count>23</comment_count>
      <attachid>174936</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-19 03:47:21 -0800</bug_when>
    <thetext>Comment on attachment 174936
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=174936&amp;action=review

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.cpp:78
&gt; +    Ewk_Context_Menu_Item* newItem = Ewk_Context_Menu_Item::create(type, action, title, checked, enabled, parentMenu, subMenu).leakPtr();

Same comment as before: why not return the value directly. We usually avoid this kind of useless temporary variables in WebKit AFAIK.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.cpp:85
&gt; +    EINA_SAFETY_ON_NULL_RETURN_VAL(menu, 0);

false not 0

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.cpp:94
&gt; +    EINA_SAFETY_ON_NULL_RETURN_VAL(menu, 0);

false not 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771614</commentid>
    <comment_count>24</comment_count>
      <attachid>175162</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-20 00:01:27 -0800</bug_when>
    <thetext>Created attachment 175162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771624</commentid>
    <comment_count>25</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-20 00:07:06 -0800</bug_when>
    <thetext>I also think GTK implementation makes sense. So, I add below APIs to make submenu ,

- EAPI Ewk_Context_Menu *ewk_context_menu_new(void);
- EAPI Ewk_Context_Menu *ewk_context_menu_new_with_items(Eina_List *items);

Application can make submenu, then can add it to new item by ewk_context_menu_item_new_with_submenu.

Though there are missing APIs compare to GTK port, I think current APIs can cover basic functionality. As GTK port, we can add new item to parentMenu by  ewk_context_menu_item_append, Or remove it via ewk_context_menu_item_remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772443</commentid>
    <comment_count>26</comment_count>
      <attachid>175162</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2012-11-20 21:25:22 -0800</bug_when>
    <thetext>Comment on attachment 175162
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=175162&amp;action=review

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.h:50
&gt; +EAPI Ewk_Context_Menu *ewk_context_menu_new(void);

Can the test case include a call for this API function as well ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772454</commentid>
    <comment_count>27</comment_count>
      <attachid>175162</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-20 21:50:50 -0800</bug_when>
    <thetext>Comment on attachment 175162
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=175162&amp;action=review

&gt; Source/WebKit2/UIProcess/API/efl/ewk_defines.h:27
&gt; + * @file    ewk_defines.h

Why this extra file? Can we get rid of it somehow? It seems really overkill to create a new public header just for defining ewk struct typedefs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772460</commentid>
    <comment_count>28</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-20 22:01:25 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 175162 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175162&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_defines.h:27
&gt; &gt; + * @file    ewk_defines.h
&gt; 
&gt; Why this extra file? Can we get rid of it somehow? It seems really overkill to create a new public header just for defining ewk struct typedefs.

I talked this with Laszlo. Alternative method is we move Ewk_Context_Menu to ewk_context_menu_item.h. But, it looks this doesn&apos;t make sense as well. If you have good solution, please let me know. In GTK port case, they are using webkitdefines.h to solve this issue.

It looks there was discussion for this issue before.
http://stackoverflow.com/questions/621356/undefined-c-struct-forward-declaration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772554</commentid>
    <comment_count>29</comment_count>
      <attachid>175358</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-21 00:28:54 -0800</bug_when>
    <thetext>Created attachment 175358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772556</commentid>
    <comment_count>30</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-21 00:30:19 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 175162 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175162&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context_menu.h:50
&gt; &gt; +EAPI Ewk_Context_Menu *ewk_context_menu_new(void);
&gt; 
&gt; Can the test case include a call for this API function as well ?

I add a test code to test it as well as to fix wrong test case code you pointed out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772598</commentid>
    <comment_count>31</comment_count>
      <attachid>175358</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 01:23:31 -0800</bug_when>
    <thetext>Comment on attachment 175358
Patch

Attachment 175358 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14933650

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772857</commentid>
    <comment_count>32</comment_count>
      <attachid>175358</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2012-11-21 06:05:59 -0800</bug_when>
    <thetext>Comment on attachment 175358
Patch

lgtm now, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772876</commentid>
    <comment_count>33</comment_count>
      <attachid>175358</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 06:25:36 -0800</bug_when>
    <thetext>Comment on attachment 175358
Patch

Clearing flags on attachment: 175358

Committed r135394: &lt;http://trac.webkit.org/changeset/135394&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772877</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 06:25:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165928</attachid>
            <date>2012-09-26 22:24:20 -0700</date>
            <delta_ts>2012-11-02 04:56:06 -0700</delta_ts>
            <desc>Working in Progress - please do not review.</desc>
            <filename>contextmenu-efl-wk2.patch</filename>
            <type>text/plain</type>
            <size>7058</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggM2NiYjg0Ni4uZmU0ZWFhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTcwLDYgKzcwLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcAogICAgIFVJUHJv
Y2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRN
ZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCiAg
ICAgVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggZjg1MTljZS4u
N2U4YWZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFn
ZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Bh
Z2VDbGllbnRJbXBsLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldl
YkNvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSAi
V2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgi
CkBAIC0yMDYsMTAgKzIwNiw5IEBAIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VD
bGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqCiAgICAgcmV0dXJu
IFdlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlKTsKIH0KIAot
UGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29u
dGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQorUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVBy
b3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkq
IHBhZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSk7CiB9
CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MTlmYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCkBAIC0w
LDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5RWZs
LmgiCisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUgIldlYkNvbnRleHRN
ZW51SXRlbURhdGEuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6V2ViQ29udGV4dE1lbnVQcm94eUVm
bChFdmFzX09iamVjdCogd2ViVmlldywgV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIDogbV93ZWJW
aWV3KHdlYlZpZXcpCisgICAgLCBtX3BhZ2UocGFnZSkKK3sKK30KKworV2ViQ29udGV4dE1lbnVQ
cm94eUVmbDo6fldlYkNvbnRleHRNZW51UHJveHlFZmwoKQoreworfQorCit2b2lkIFdlYkNvbnRl
eHRNZW51UHJveHlFZmw6OmFwcGVuZChDb250ZXh0TWVudUl0ZW0mIG1lbnVJdGVtKQoreworfQor
Cit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlFZmw6OnBvcHVsYXRlKFZlY3RvcjxDb250ZXh0TWVu
dUl0ZW0+JiBpdGVtcykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgYXBwZW5kKGl0ZW1zLmF0KGkpKTsKKyAgICB9Cit9CisKK3Zv
aWQgV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6cG9wdWxhdGUoY29uc3QgVmVjdG9yPFdlYkNvbnRl
eHRNZW51SXRlbURhdGE+JiBpdGVtcykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
aXRlbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ29udGV4dE1lbnVJdGVtIG1lbnVpdGVtID0g
aXRlbXMuYXQoaSkuY29yZSgpOworICAgICAgICBhcHBlbmQobWVudWl0ZW0pOworICAgIH0KK30K
Kwordm9pZCBXZWJDb250ZXh0TWVudVByb3h5RWZsOjpzaG93Q29udGV4dE1lbnUoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVt
RGF0YT4mIGl0ZW1zKQoreworCisgICAgaWYgKCFpdGVtcy5pc0VtcHR5KCkpCisgICAgICAgIHBv
cHVsYXRlKGl0ZW1zKTsKKworfQorCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlFZmw6OmhpZGVD
b250ZXh0TWVudSgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmIyYmI5ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaApAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNv
bnRleHRNZW51UHJveHlFZmxfaAorI2RlZmluZSBXZWJDb250ZXh0TWVudVByb3h5RWZsX2gKKwor
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94
eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0ludFBvaW50Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhOworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJDb250ZXh0TWVudVBy
b3h5RWZsIDogcHVibGljIFdlYkNvbnRleHRNZW51UHJveHkgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHlFZmw+IGNyZWF0ZShFdmFzX09iamVjdCog
d2ViVmlldywgV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJDb250ZXh0TWVudVByb3h5RWZsKHdlYlZpZXcsIHBhZ2UpKTsKKyAgICB9Cisg
ICAgfldlYkNvbnRleHRNZW51UHJveHlFZmwoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29u
dGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4
dE1lbnVJdGVtRGF0YT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZUNvbnRleHRNZW51KCk7CisK
KyAgICB2b2lkIHBvcHVsYXRlKFZlY3RvcjxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0+Jik7Citw
cml2YXRlOgorICAgIFdlYkNvbnRleHRNZW51UHJveHlFZmwoRXZhc19PYmplY3QqLCBXZWJQYWdl
UHJveHkqKTsKKworICAgIHZvaWQgYXBwZW5kKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSYpOwor
ICAgIHZvaWQgcG9wdWxhdGUoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jik7
CisKKyAgICBFdmFzX09iamVjdCogbV93ZWJWaWV3OworICAgIFdlYlBhZ2VQcm94eSogbV9wYWdl
OworfTsKKworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT05U
RVhUX01FTlVTKQorI2VuZGlmIC8vIFdlYkNvbnRleHRNZW51UHJveHlFZmxfaAo=
</data>
<flag name="commit-queue"
          id="178101"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172039</attachid>
            <date>2012-11-02 04:56:06 -0700</date>
            <delta_ts>2012-11-06 04:39:37 -0800</delta_ts>
            <desc>Working in Progress - 2</desc>
            <filename>context-menu.patch</filename>
            <type>text/plain</type>
            <size>37583</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZjMyNzEwYy4uN2Y0NjI4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTQ4LDYgKzQ4LDggQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0u
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dF9tZW51LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVf
aXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfZXJyb3IuY3BwCkBAIC03NSw2ICs3Nyw3IEBAIExJU1QoQVBQRU5EIFdlYktp
dDJfU09VUkNFUwogCiAgICAgVUlQcm9jZXNzL2VmbC9CYXR0ZXJ5UHJvdmlkZXIuY3BwCiAgICAg
VUlQcm9jZXNzL2VmbC9Db250ZXh0SGlzdG9yeUNsaWVudEVmbC5jcHAKKyAgICBVSVByb2Nlc3Mv
ZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRG93bmxvYWRN
YW5hZ2VyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuY3BwCkBAIC05MCw2ICs5Myw3IEBAIExJU1QoQVBQ
RU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvVGV4dENoZWNrZXJFZmwuY3Bw
CiAgICAgVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRlci5jcHAKICAgICBVSVByb2Nlc3Mv
ZWZsL1dlYkNvbnRleHRFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVBy
b3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVm
bC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJ
UHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4IDBiYTBjN2UuLjk2MTMwYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAK
QEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFd2tWaWV3
SW1wbC5oIgogCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRFZmwuaCIKICNpbmNsdWRlICJF
ZmxTY3JlZW5VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJGaW5kQ2xpZW50RWZsLmgiCiAjaW5jbHVk
ZSAiRm9ybUNsaWVudEVmbC5oIgpAQCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUgImV3a19iYWNr
X2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlcl9wcml2
YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19j
b250ZXh0X21lbnVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29uX2RhdGFiYXNlX3By
aXZhdGUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfcG9wdXBfbWVudV9wcml2YXRlLmgiCkBAIC0xMDIsNiArMTA0LDcgQEAgRXdrVmll
d0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRyPEV3a19Db250
ZXh0PiBjb250ZXh0LCBQYXMKICAgICAsIG1fcGFnZVBvbGljeUNsaWVudChQYWdlUG9saWN5Q2xp
ZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3BhZ2VVSUNsaWVudChQYWdlVUlDbGllbnRF
Zmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50KFJlc291cmNlTG9h
ZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9jb250ZXh0TWVudUNsaWVudChDb250
ZXh0TWVudUNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9maW5kQ2xpZW50KEZpbmRD
bGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZm9ybUNsaWVudChGb3JtQ2xpZW50RWZs
OjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2JhY2tGb3J3YXJkTGlzdChFd2tfQmFja19Gb3J3YXJk
X0xpc3Q6OmNyZWF0ZSh0b0FQSShtX3BhZ2VQcm94eS0+YmFja0ZvcndhcmRMaXN0KCkpKSkKQEAg
LTU3Miw2ICs1NzUsMzggQEAgdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtQ29udGVudHNTaXplQ2hh
bmdlKGNvbnN0IEludFNpemUmIHNpemUpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZULCBSVEwpOwogQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCwgTFRSKTsKIAordm9p
ZCBFd2tWaWV3SW1wbDo6c2hvd0NvbnRleHRNZW51KFdlYkNvbnRleHRNZW51UHJveHlFZmwqIGNv
bnRleHRNZW51UHJveHksIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3Qg
VmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcykKK3sKKyAgICBFd2tfVmlld19T
bWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgIEFTU0VSVChzZC0+YXBpKTsKKworICAg
IEFTU0VSVChjb250ZXh0TWVudVByb3h5KTsKKworICAgIGlmICghc2QtPmFwaS0+Y29udGV4dF9t
ZW51X3Nob3cpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NvbnRleHRNZW51KQorICAg
ICAgICBoaWRlQ29udGV4dE1lbnUoKTsKKworICAgIG1fY29udGV4dE1lbnUgPSBFd2tfQ29udGV4
dF9NZW51OjpjcmVhdGUodGhpcywgY29udGV4dE1lbnVQcm94eSwgaXRlbXMpOworCisgICAgc2Qt
PmFwaS0+Y29udGV4dF9tZW51X3Nob3coc2QsIHBvc2l0aW9uLngoKSwgcG9zaXRpb24ueSgpLCBt
X2NvbnRleHRNZW51LmdldCgpKTsKK30KKwordm9pZCBFd2tWaWV3SW1wbDo6aGlkZUNvbnRleHRN
ZW51KCkKK3sKKyAgICBpZiAoIW1fY29udGV4dE1lbnUpCisgICAgICAgIHJldHVybjsKKworICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisgICAgQVNTRVJUKHNkLT5h
cGkpOworCisgICAgaWYgKHNkLT5hcGktPmNvbnRleHRfbWVudV9oaWRlKQorICAgICAgICBzZC0+
YXBpLT5jb250ZXh0X21lbnVfaGlkZShzZCk7CisKKyAgICBtX2NvbnRleHRNZW51LmNsZWFyKCk7
Cit9CisKIHZvaWQgRXdrVmlld0ltcGw6OnJlcXVlc3RQb3B1cE1lbnUoV2ViUG9wdXBNZW51UHJv
eHlFZmwqIHBvcHVwTWVudVByb3h5LCBjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9u
IHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQ
b3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQogewogICAgIEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAppbmRleCA3ZGQ1YmRkLi43Yjk1NmU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKQEAgLTQ0LDYg
KzQ0LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIENvbnRleHRNZW51
Q2xpZW50RWZsOwogY2xhc3MgRmluZENsaWVudEVmbDsKIGNsYXNzIEZvcm1DbGllbnRFZmw7CiBj
bGFzcyBJbnB1dE1ldGhvZENvbnRleHRFZmw7CkBAIC01NCw2ICs1NSw4IEBAIGNsYXNzIFBhZ2VV
SUNsaWVudEVmbDsKIGNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw7CiBjbGFz
cyBQYWdlVmlld3BvcnRDb250cm9sbGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOwor
Y2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlF
Zmw7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQ
b3B1cEl0ZW07CkBAIC02Myw2ICs2Niw3IEBAIGNsYXNzIFdlYlBvcHVwTWVudVByb3h5RWZsOwog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBDdXJzb3I7CitjbGFzcyBJ
bnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgUmVnaW9uOwpA
QCAtNzEsNiArNzUsNyBAQCBjbGFzcyBSZWdpb247CiBjbGFzcyBFd2tfQmFja19Gb3J3YXJkX0xp
c3Q7CiBjbGFzcyBFd2tfQ29sb3JfUGlja2VyOwogY2xhc3MgRXdrX0NvbnRleHQ7CitjbGFzcyBF
d2tfQ29udGV4dF9NZW51OwogY2xhc3MgRXdrX0Rvd25sb2FkX0pvYjsKIGNsYXNzIEV3a19FcnJv
cjsKIGNsYXNzIEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdDsKQEAgLTE1NCw2ICsxNTksOSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcXVlc3RQb3B1cE1lbnUoV2ViS2l0OjpXZWJQb3B1cE1l
bnVQcm94eUVmbCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0
aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1
cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKICAgICB2b2lkIGNsb3NlUG9w
dXBNZW51KCk7CisgICAgCisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoV2ViS2l0OjpXZWJDb250
ZXh0TWVudVByb3h5RWZsKiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25z
dCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpOworICAgIHZv
aWQgaGlkZUNvbnRleHRNZW51KCk7CiAKICAgICB2b2lkIHVwZGF0ZVRleHRJbnB1dFN0YXRlKCk7
CiAKQEAgLTIxOCw2ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VQ
b2xpY3lDbGllbnRFZmw+IG1fcGFnZVBvbGljeUNsaWVudDsKICAgICBPd25QdHI8V2ViS2l0OjpQ
YWdlVUlDbGllbnRFZmw+IG1fcGFnZVVJQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6OlJlc291
cmNlTG9hZENsaWVudEVmbD4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7CisgICAgT3duUHRyPFdlYktp
dDo6Q29udGV4dE1lbnVDbGllbnRFZmw+IG1fY29udGV4dE1lbnVDbGllbnQ7CiAgICAgT3duUHRy
PFdlYktpdDo6RmluZENsaWVudEVmbD4gbV9maW5kQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6
OkZvcm1DbGllbnRFZmw+IG1fZm9ybUNsaWVudDsKICAgICBPd25QdHI8RXdrX0JhY2tfRm9yd2Fy
ZF9MaXN0PiBtX2JhY2tGb3J3YXJkTGlzdDsKQEAgLTIzOCw2ICsyNDcsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAgICAgV2ViQ29yZTo6VGltZXI8RXdrVmlld0ltcGw+IG1fZGlzcGxheVRpbWVyOwog
ICAgIE93blB0cjxXZWJDb3JlOjpSZWdpb24+IG1fZGlydHlSZWdpb247CisgICAgT3duUHRyPEV3
a19Db250ZXh0X01lbnU+IG1fY29udGV4dE1lbnU7CiAgICAgT3duUHRyPEV3a19Qb3B1cF9NZW51
PiBtX3BvcHVwTWVudTsKICAgICBPd25QdHI8V2ViS2l0OjpJbnB1dE1ldGhvZENvbnRleHRFZmw+
IG1faW5wdXRNZXRob2RDb250ZXh0OwogICAgIE93blB0cjxFd2tfQ29sb3JfUGlja2VyPiBtX2Nv
bG9yUGlja2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHRfbWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9tZW51LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z
YWNhNmM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHRfbWVudS5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51LmgiCisKKyNpbmNs
dWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHlFZmwuaCIK
KyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfY29u
dGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitF
d2tfQ29udGV4dF9NZW51OjpFd2tfQ29udGV4dF9NZW51KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwg
V2ViQ29udGV4dE1lbnVQcm94eUVmbCogY29udGV4dE1lbnVQcm94eSwgY29uc3QgVmVjdG9yPFdl
YktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQorICAgIDogbV92aWV3SW1wbCh2
aWV3SW1wbCkKKyAgICAsIG1fY29udGV4dE1lbnVQcm94eShjb250ZXh0TWVudVByb3h5KQorICAg
ICwgbV9jb250ZXh0TWVudUl0ZW1zKDApCit7CisgICAgY29uc3Qgc2l6ZV90IHNpemUgPSBpdGVt
cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAg
IG1fY29udGV4dE1lbnVJdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQobV9jb250ZXh0TWVudUl0ZW1z
LCBFd2tfQ29udGV4dF9NZW51X0l0ZW06OmNyZWF0ZShpdGVtc1tpXSkubGVha1B0cigpKTsKK30K
KworRXdrX0NvbnRleHRfTWVudTo6fkV3a19Db250ZXh0X01lbnUoKQoreworfQorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIxMGI4YQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuaApA
QCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcK
KyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfY29udGV4
dF9tZW51LmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIENvbnRleHQgTWVudSBBUEku
CisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9tZW51X2gKKyNkZWZpbmUgZXdrX2NvbnRleHRf
bWVudV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3a19Qb3B1cF9N
ZW51ICovCit0eXBlZGVmIHN0cnVjdCBFd2tfQ29udGV4dF9NZW51IEV3a19Db250ZXh0X01lbnU7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBld2tfY29udGV4
dF9tZW51X2ggKi8KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMzI3MDVjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHAKQEAgLTAsMCArMSw0MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfY29udGV4
dF9tZW51X2l0ZW0uaCIKKworI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRl
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitFd2tfQ29udGV4dF9NZW51X0l0ZW06OkV3a19Db250ZXh0X01lbnVfSXRlbShjb25z
dCBXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCisgICAgOiBtX3R5cGUoc3Rh
dGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGU+KGl0ZW0udHlwZSgpKSkKKyAgICAs
IG1fYWN0aW9uKHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24+KGl0ZW0u
YWN0aW9uKCkpKQorICAgICwgbV90aXRsZShpdGVtLnRpdGxlKCkudXRmOCgpLmRhdGEoKSkKKyAg
ICAsIG1faXNDaGVja2VkKGl0ZW0uY2hlY2tlZCgpKQorICAgICwgbV9pc0VuYWJsZWQoaXRlbS5l
bmFibGVkKCkpCit7IH0KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44MGRmODYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmgKQEAgLTAsMCArMSwxNDUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19jb250ZXh0X21lbnVfaXRlbS5oCisg
KiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBQb3B1cCBNZW51IEl0ZW0gQVBJLgorICovCisK
KyNpZm5kZWYgZXdrX2NvbnRleHRfbWVudV9pdGVtX2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX2gKKworI2luY2x1ZGUgImV3a192aWV3LmgiCisjaW5jbHVkZSA8RWluYS5oPgorCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKgorICogXGVudW0g
ICAgX0V3a19Db250ZXh0X01lbnVfQWN0aW9uCisgKiBAYnJpZWYgICBQcm92aWRlcyB0aGUgYWN0
aW9ucyBvZiBpdGVtcyBmb3IgdGhlIGNvbnRleHQgbWVudS4KKyAqIEBpbmZvICAgIEtlZXAgdGhp
cyBpbiBzeW5jIHdpdGggQ29udGV4dE1lbnVJdGVtLmgKKyAqLworZW51bSBfRXdrX0NvbnRleHRf
TWVudV9JdGVtX0FjdGlvbiB7CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19BQ1RJ
T04gPSAwLCAvLyB0aGlzIGl0ZW0gaXMgbm90IGFjdHVhbGx5IGluIHdlYl91aWRlbGVnYXRlLmgK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fTElOS19JTl9ORVdfV0lORE9XID0g
MSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RPV05MT0FEX0xJTktfVE9fRElTSywK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTElOS19UT19DTElQQk9BUkQsCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0lNQUdFX0lOX05FV19XSU5ET1csCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19ET1dOTE9BRF9JTUFHRV9UT19ESVNLLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9JTUFHRV9UT19DTElQQk9BUkQsCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1VSTF9UT19DTElQQk9BUkQsCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0ZSQU1FX0lOX05FV19XSU5ET1csCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZLAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfR09fQkFDSywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZPUldB
UkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QLAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfUkVMT0FELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ1VU
LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUEFTVEUsCisgICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19TRUxFQ1RfQUxMLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
U1BFTExJTkdfR1VFU1MsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19HVUVTU0VT
X0ZPVU5ELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX1NQRUxMSU5HLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTEVBUk5fU1BFTExJTkcsCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19PVEhFUiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X1NFQVJDSF9JTl9TUE9UTElHSFQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUFS
Q0hfV0VCLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTE9PS19VUF9JTl9ESUNUSU9O
QVJZLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9XSVRIX0RFRkFVTFRfQVBQ
TElDQVRJT04sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkFDVFVBTF9TSVpFLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9QREZaT09NX0lOLAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9QREZaT09NX09VVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQVVUT19TSVpF
LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZTSU5HTEVfUEFHRSwKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fUERGRkFDSU5HX1BBR0VTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9QREZDT05USU5VT1VTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZORVhUX1BBR0Us
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlBSRVZJT1VTX1BBR0UsCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJTksgPSAyMDAwLAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfSUdOT1JFX0dSQU1NQVIsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19TUEVMTElOR19NRU5VLCAvKio8IHNwZWxsaW5nIG9yIHNwZWxsaW5nL2dyYW1tYXIgc3ViLW1l
bnUgKi8KKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfU1BFTExJTkdfUEFORUws
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19TUEVMTElORywKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX1NQRUxMSU5HX1dISUxFX1RZUElORywKKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX0dSQU1NQVJfV0lUSF9TUEVMTElORywKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0ZPTlRfTUVOVSwgLyoqPCBmb250IHN1Yi1tZW51
ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0ZPTlRTLAorICAgIEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfQk9MRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X0lUQUxJQywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1VOREVSTElORSwKKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09VVExJTkUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19TVFlMRVMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0NPTE9S
UywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUVDSF9NRU5VLCAvKio8IHNwZWVj
aCBzdWItbWVudSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RBUlRfU1BFQUtJ
TkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QX1NQRUFLSU5HLAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfV1JJVElOR19ESVJFQ1RJT05fTUVOVSwgLyoqPCB3cml0
aW5nIGRpcmVjdGlvbiBzdWItbWVudSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
REVGQVVMVF9ESVJFQ1RJT04sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUZUX1RP
X1JJR0hULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUklHSFRfVE9fTEVGVCwKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERlNJTkdMRV9QQUdFX1NDUk9MTElORywKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERkZBQ0lOR19QQUdFU19TQ1JPTExJTkcsCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JTlNQRUNUX0VMRU1FTlQsCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9NRU5VLCAvKio8IHRleHQgZGlyZWN0
aW9uIHN1Yi1tZW51ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVD
VElPTl9ERUZBVUxULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJ
T05fTEVGVF9UT19SSUdIVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElS
RUNUSU9OX1JJR0hUX1RPX0xFRlQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX09QRU5fTUVE
SUFfSU5fTkVXX1dJTkRPVywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTUVE
SUFfTElOS19UT19DTElQQk9BUkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dH
TEVfTUVESUFfQ09OVFJPTFMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVf
TUVESUFfTE9PUCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0VOVEVSX1ZJREVPX0ZV
TExTQ1JFRU4sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19NRURJQV9QTEFZX1BBVVNF
LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTUVESUFfTVVURSwKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fQkFTRV9DVVNUT01fVEFHID0gNTAwMCwKKyAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fQ1VTVE9NX1RBR19OT19BQ1RJT04gPSA1OTk4LAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9MQVNUX0NVU1RPTV9UQUcgPSA1OTk5LAorICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9CQVNFX0FQUExJQ0FUSU9OX1RBRyA9IDEwMDAwCit9OworCisvKiogQ3JlYXRlcyBhIHR5cGUg
bmFtZSBmb3IgX0V3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gKi8KK3R5cGVkZWYgZW51bSBf
RXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9u
OworCisvKioKKyAqIFxlbnVtICAgIF9Fd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZQorICogQGJy
aWVmICAgRGVmaW5lcyB0aGUgdHlwZXMgb2YgdGhlIGl0ZW1zIGZvciB0aGUgY29udGV4dCBtZW51
LgorICogQGluZm8gICAgS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBDb250ZXh0TWVudUl0ZW0uaAor
ICovCitlbnVtIF9Fd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB7CisgICAgRVdLX0FDVElPTl9U
WVBFLAorICAgIEVXS19DSEVDS0FCTEVfQUNUSU9OX1RZUEUsCisgICAgRVdLX1NFUEFSQVRPUl9U
WVBFLAorICAgIEVXS19TVUJNRU5VX1RZUEUKK307CisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1l
IGZvciBfRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgKi8KK3R5cGVkZWYgZW51bSBfRXdrX0Nv
bnRleHRfTWVudV9JdGVtX1R5cGUgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGU7CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX2NvbnRleHRfbWVudV9p
dGVtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjJhMDE2ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmlj
cworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICog
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19jb250ZXh0X21lbnVfaXRlbV9w
cml2YXRlX2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3ByaXZhdGVfaAorCisjaW5j
bHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVt
RGF0YS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisKKy8qKgorICogXHN0cnVjdCAgRXdrX0NvbnRleHRfTWVudV9JdGVt
CisgKiBAYnJpZWYgICBDb250YWlucyB0aGUgY29udGV4dCBtZW51IGRhdGEuCisgKi8KK2NsYXNz
IEV3a19Db250ZXh0X01lbnVfSXRlbSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8
RXdrX0NvbnRleHRfTWVudV9JdGVtPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhJiBpdGVtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tf
Q29udGV4dF9NZW51X0l0ZW0oaXRlbSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBFd2tfQ29udGV4dF9NZW51X0l0ZW0oY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1E
YXRhJik7CisKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSBtX3R5cGU7CisgICAgRXdr
X0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBtX2FjdGlvbjsKKworICAgIGJvb2wgbV9pc0NoZWNr
ZWQ7CisgICAgYm9vbCBtX2lzRW5hYmxlZDsKKworICAgIFdLRWluYVNoYXJlZFN0cmluZyBtX3Rp
dGxlOworfTsKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21l
bnVfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHRfbWVudV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY1
OWRmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIGV3a19jb250ZXh0X21lbnVfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19jb250ZXh0
X21lbnVfcHJpdmF0ZV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Y2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlF
Zmw7Cit9CisKK2NsYXNzIEV3a1ZpZXdJbXBsOworCitjbGFzcyBFd2tfQ29udGV4dF9NZW51IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxFd2tfQ29udGV4dF9NZW51PiBjcmVhdGUo
RXdrVmlld0ltcGwqIHZpZXdJbXBsLCBXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmwqIGNv
bnRleHRNZW51UHJveHksIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURh
dGE+JiBpdGVtcykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXdrX0NvbnRl
eHRfTWVudSh2aWV3SW1wbCwgY29udGV4dE1lbnVQcm94eSwgaXRlbXMpKTsKKyAgICB9CisgICAg
fkV3a19Db250ZXh0X01lbnUoKTsKKworcHJpdmF0ZToKKyAgICBFd2tfQ29udGV4dF9NZW51KEV3
a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZsKiwgY29u
c3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKTsKKworICAg
IEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOworICAgIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94
eUVmbCogbV9jb250ZXh0TWVudVByb3h5OworICAgIEVpbmFfTGlzdCogbV9jb250ZXh0TWVudUl0
ZW1zOworCit9OworCisjZW5kaWYgLy8gZXdrX2NvbnRleHRfbWVudV9wcml2YXRlX2gKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggNTNjYTgzYS4u
YThiY2Y0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5o
CkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0LmgiCiAj
aW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlci5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisj
aW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudS5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2Iu
aCIKICNpbmNsdWRlICJld2tfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfaW50ZW50LmgiCkBAIC0x
MDksNiArMTEwLDkgQEAgc3RydWN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICBFdmFzX1Nt
YXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUgY2hhbmdlZC4g
Ki8KICAgICB1bnNpZ25lZCBsb25nIHZlcnNpb247CiAKKyAgICBFaW5hX0Jvb2wgKCpjb250ZXh0
X21lbnVfc2hvdykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV2YXNfQ29vcmQgeCwgRXZhc19D
b29yZCB5LCBFd2tfQ29udGV4dF9NZW51ICptZW51KTsKKyAgICBFaW5hX0Jvb2wgKCpjb250ZXh0
X21lbnVfaGlkZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOworCiAgICAgRWluYV9Cb29sICgq
cG9wdXBfbWVudV9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRWluYV9SZWN0YW5nbGUg
cmVjdCwgRXdrX1RleHRfRGlyZWN0aW9uIHRleHRfZGlyZWN0aW9uLCBkb3VibGUgcGFnZV9zY2Fs
ZV9mYWN0b3IsIEV3a19Qb3B1cF9NZW51ICptZW51KTsKICAgICBFaW5hX0Jvb2wgKCpwb3B1cF9t
ZW51X2hpZGUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKIApAQCAtMTQ2LDcgKzE1MCw3IEBA
IHN0cnVjdCBFd2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBUaGUgdmVyc2lvbiB5b3UgaGF2ZSB0
byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZAogICogaW4gdGhlIEBhIEV3a19WaWV3X1NtYXJ0
X0NsYXNzIHN0cnVjdHVyZS4KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJT
SU9OIDZVTAorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDdVTAogCiAvKioK
ICAqIEluaXRpYWxpemVyIGZvciB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUu
CkBAIC0xNTgsNyArMTYyLDcgQEAgc3RydWN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBz
ZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NN
QVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFy
dF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVS
U0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdf
U21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42MGI3ZjIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29udGV4
dE1lbnVDbGllbnRFZmwuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIgICAKKyNp
bmNsdWRlICJXS0FycmF5LmgiCisjaW5jbHVkZSAiV0tQYWdlLmgiCisjaW5jbHVkZSA8RXZhcy5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgaW5saW5lIENvbnRleHRNZW51
Q2xpZW50RWZsKiB0b0NvbnRleHRDbGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVDbGllbnRFZmwqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisKK0NvbnRleHRNZW51Q2xpZW50RWZsOjpDb250ZXh0
TWVudUNsaWVudEVmbChFd2tWaWV3SW1wbCogdmlld0ltcGwpCisgICAgOiBtX3ZpZXdJbXBsKHZp
ZXdJbXBsKQoreworICAgIFdLUGFnZVJlZiBwYWdlUmVmID0gbV92aWV3SW1wbC0+d2tQYWdlKCk7
CisgICAgQVNTRVJUKHBhZ2VSZWYpOworCisgICAgV0tQYWdlQ29udGV4dE1lbnVDbGllbnQgY29u
dGV4dE1lbnVDbGllbnQ7CisgICAgbWVtc2V0KCZjb250ZXh0TWVudUNsaWVudCwgMCwgc2l6ZW9m
KFdLUGFnZUNvbnRleHRNZW51Q2xpZW50KSk7CisgICAgY29udGV4dE1lbnVDbGllbnQudmVyc2lv
biA9IGtXS1BhZ2VDb250ZXh0TWVudUNsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIGNvbnRleHRN
ZW51Q2xpZW50LmNsaWVudEluZm8gPSB0aGlzOworICAgIGNvbnRleHRNZW51Q2xpZW50LmdldENv
bnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwID0gMDsKKyAg
ICBjb250ZXh0TWVudUNsaWVudC5jdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZCA9IDA7Cisg
ICAgY29udGV4dE1lbnVDbGllbnQuY29udGV4dE1lbnVEaXNtaXNzZWQgPSAwOworICAgIGNvbnRl
eHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSA9IDA7CisKKyAgICBX
S1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQocGFnZVJlZiwgJmNvbnRleHRNZW51Q2xpZW50
KTsKK30KKwordm9pZCBDb250ZXh0TWVudUNsaWVudEVmbDo6Z2V0Q29udGV4dE1lbnVGcm9tUHJv
cG9zZWRNZW51KFdLUGFnZVJlZiwgV0tBcnJheVJlZiwgV0tBcnJheVJlZiosIFdLSGl0VGVzdFJl
c3VsdFJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVu
dUNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNs
aWVudEVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMDhkMWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51
Q2xpZW50RWZsLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIENvbnRleHRNZW51Q2xpZW50RWZsX2gKKyNkZWZpbmUgQ29udGV4dE1lbnVDbGllbnRFZmxf
aAorCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dC5oIgor
I2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK2NsYXNzIEV3a1ZpZXdJbXBsOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29udGV4dE1lbnVDbGllbnRFZmwgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENvbnRleHRNZW51Q2xpZW50RWZsPiBjcmVhdGUoRXdr
Vmlld0ltcGwqIHZpZXdJbXBsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
b250ZXh0TWVudUNsaWVudEVmbCh2aWV3SW1wbCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lk
IGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXS1BhZ2VSZWYsIFdLQXJyYXlSZWYgcHJv
cG9zZWRNZW51LCBXS0FycmF5UmVmKiBuZXdNZW51LCBXS0hpdFRlc3RSZXN1bHRSZWYgaGl0VGVz
dFJlc3VsdCwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKwor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBDb250ZXh0TWVudUNsaWVudEVmbChFd2tWaWV3SW1wbCop
OworCisgICAgRXdrVmlld0ltcGwqIG1fdmlld0ltcGw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIENvbnRleHRNZW51Q2xpZW50RWZsX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggYmM3NGQ1OS4uN2Ew
MzllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1w
bC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0Lmgi
Ci0jaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRN
ZW51UHJveHlFZmwuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgpAQCAtMjM2LDEw
ICsyMzYsOSBAQCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KgogICAgIHJldHVybiBXZWJQb3B1cE1l
bnVQcm94eUVmbDo6Y3JlYXRlKG1fdmlld0ltcGwsIHBhZ2UpOwogfQogCi1QYXNzUmVmUHRyPFdl
YkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5
KFdlYlBhZ2VQcm94eSopCitQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBXZWJDb250ZXh0
TWVudVByb3h5RWZsOjpjcmVhdGUobV92aWV3SW1wbCwgcGFnZSk7CiB9CiAKICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjkzNTgyNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5RWZsLmgiCisK
KyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCisj
aW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb250ZXh0TWVudVByb3h5RWZsOjpX
ZWJDb250ZXh0TWVudVByb3h5RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViUGFnZVByb3h5
KiBwYWdlKQorICAgIDogbV92aWV3SW1wbCh2aWV3SW1wbCkKKyAgICAsIG1fcGFnZShwYWdlKQor
eworfQorCitXZWJDb250ZXh0TWVudVByb3h5RWZsOjp+V2ViQ29udGV4dE1lbnVQcm94eUVmbCgp
Cit7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6c2hvd0NvbnRleHRNZW51KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbURhdGE+JiBpdGVtcykKK3sKKyAgICBtX3ZpZXdJbXBsLT5zaG93Q29udGV4dE1lbnUo
dGhpcywgcG9zaXRpb24sIGl0ZW1zKTsKK30KKwordm9pZCBXZWJDb250ZXh0TWVudVByb3h5RWZs
OjpoaWRlQ29udGV4dE1lbnUoKQoreworICAgIG1fdmlld0ltcGwtPmhpZGVDb250ZXh0TWVudSgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhU
X01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250
ZXh0TWVudVByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRl
eHRNZW51UHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yjlh
NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJD
b250ZXh0TWVudVByb3h5RWZsLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb250ZXh0
TWVudVByb3h5RWZsX2gKKyNkZWZpbmUgV2ViQ29udGV4dE1lbnVQcm94eUVmbF9oCisKKyNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRQ
b2ludC5oPgorCitjbGFzcyBFd2tWaWV3SW1wbDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNz
IFdlYkNvbnRleHRNZW51UHJveHlFZmwgOiBwdWJsaWMgV2ViQ29udGV4dE1lbnVQcm94eSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eUVmbD4gY3Jl
YXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250ZXh0TWVudVByb3h5RWZsKHZpZXdJbXBs
LCBwYWdlKSk7CisgICAgfQorICAgIH5XZWJDb250ZXh0TWVudVByb3h5RWZsKCk7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jik7CisgICAgdmlydHVhbCB2b2lkIGhp
ZGVDb250ZXh0TWVudSgpOworCitwcml2YXRlOgorICAgIFdlYkNvbnRleHRNZW51UHJveHlFZmwo
RXdrVmlld0ltcGwqLCBXZWJQYWdlUHJveHkqKTsKKworICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJ
bXBsOworICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOworfTsKKworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorI2VuZGlmIC8vIFdlYkNv
bnRleHRNZW51UHJveHlFZmxfaAo=
</data>
<flag name="commit-queue"
          id="186199"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172551</attachid>
            <date>2012-11-06 04:39:37 -0800</date>
            <delta_ts>2012-11-12 04:55:32 -0800</delta_ts>
            <desc>Working in Progress - 3</desc>
            <filename>context-menu.patch</filename>
            <type>text/plain</type>
            <size>55160</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZjMyNzEwYy4uN2Y0NjI4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTQ4LDYgKzQ4LDggQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0u
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dF9tZW51LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVf
aXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfZXJyb3IuY3BwCkBAIC03NSw2ICs3Nyw3IEBAIExJU1QoQVBQRU5EIFdlYktp
dDJfU09VUkNFUwogCiAgICAgVUlQcm9jZXNzL2VmbC9CYXR0ZXJ5UHJvdmlkZXIuY3BwCiAgICAg
VUlQcm9jZXNzL2VmbC9Db250ZXh0SGlzdG9yeUNsaWVudEVmbC5jcHAKKyAgICBVSVByb2Nlc3Mv
ZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRG93bmxvYWRN
YW5hZ2VyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuY3BwCkBAIC05MCw2ICs5Myw3IEBAIExJU1QoQVBQ
RU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvVGV4dENoZWNrZXJFZmwuY3Bw
CiAgICAgVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRlci5jcHAKICAgICBVSVByb2Nlc3Mv
ZWZsL1dlYkNvbnRleHRFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVBy
b3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVm
bC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJ
UHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4IDBiYTBjN2UuLjk2MTMwYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAK
QEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFd2tWaWV3
SW1wbC5oIgogCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRFZmwuaCIKICNpbmNsdWRlICJF
ZmxTY3JlZW5VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJGaW5kQ2xpZW50RWZsLmgiCiAjaW5jbHVk
ZSAiRm9ybUNsaWVudEVmbC5oIgpAQCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUgImV3a19iYWNr
X2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlcl9wcml2
YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19j
b250ZXh0X21lbnVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29uX2RhdGFiYXNlX3By
aXZhdGUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfcG9wdXBfbWVudV9wcml2YXRlLmgiCkBAIC0xMDIsNiArMTA0LDcgQEAgRXdrVmll
d0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRyPEV3a19Db250
ZXh0PiBjb250ZXh0LCBQYXMKICAgICAsIG1fcGFnZVBvbGljeUNsaWVudChQYWdlUG9saWN5Q2xp
ZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3BhZ2VVSUNsaWVudChQYWdlVUlDbGllbnRF
Zmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50KFJlc291cmNlTG9h
ZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9jb250ZXh0TWVudUNsaWVudChDb250
ZXh0TWVudUNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9maW5kQ2xpZW50KEZpbmRD
bGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZm9ybUNsaWVudChGb3JtQ2xpZW50RWZs
OjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2JhY2tGb3J3YXJkTGlzdChFd2tfQmFja19Gb3J3YXJk
X0xpc3Q6OmNyZWF0ZSh0b0FQSShtX3BhZ2VQcm94eS0+YmFja0ZvcndhcmRMaXN0KCkpKSkKQEAg
LTU3Miw2ICs1NzUsMzggQEAgdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtQ29udGVudHNTaXplQ2hh
bmdlKGNvbnN0IEludFNpemUmIHNpemUpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZULCBSVEwpOwogQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCwgTFRSKTsKIAordm9p
ZCBFd2tWaWV3SW1wbDo6c2hvd0NvbnRleHRNZW51KFdlYkNvbnRleHRNZW51UHJveHlFZmwqIGNv
bnRleHRNZW51UHJveHksIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3Qg
VmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcykKK3sKKyAgICBFd2tfVmlld19T
bWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgIEFTU0VSVChzZC0+YXBpKTsKKworICAg
IEFTU0VSVChjb250ZXh0TWVudVByb3h5KTsKKworICAgIGlmICghc2QtPmFwaS0+Y29udGV4dF9t
ZW51X3Nob3cpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NvbnRleHRNZW51KQorICAg
ICAgICBoaWRlQ29udGV4dE1lbnUoKTsKKworICAgIG1fY29udGV4dE1lbnUgPSBFd2tfQ29udGV4
dF9NZW51OjpjcmVhdGUodGhpcywgY29udGV4dE1lbnVQcm94eSwgaXRlbXMpOworCisgICAgc2Qt
PmFwaS0+Y29udGV4dF9tZW51X3Nob3coc2QsIHBvc2l0aW9uLngoKSwgcG9zaXRpb24ueSgpLCBt
X2NvbnRleHRNZW51LmdldCgpKTsKK30KKwordm9pZCBFd2tWaWV3SW1wbDo6aGlkZUNvbnRleHRN
ZW51KCkKK3sKKyAgICBpZiAoIW1fY29udGV4dE1lbnUpCisgICAgICAgIHJldHVybjsKKworICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisgICAgQVNTRVJUKHNkLT5h
cGkpOworCisgICAgaWYgKHNkLT5hcGktPmNvbnRleHRfbWVudV9oaWRlKQorICAgICAgICBzZC0+
YXBpLT5jb250ZXh0X21lbnVfaGlkZShzZCk7CisKKyAgICBtX2NvbnRleHRNZW51LmNsZWFyKCk7
Cit9CisKIHZvaWQgRXdrVmlld0ltcGw6OnJlcXVlc3RQb3B1cE1lbnUoV2ViUG9wdXBNZW51UHJv
eHlFZmwqIHBvcHVwTWVudVByb3h5LCBjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9u
IHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQ
b3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQogewogICAgIEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAppbmRleCA3ZGQ1YmRkLi43Yjk1NmU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKQEAgLTQ0LDYg
KzQ0LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIENvbnRleHRNZW51
Q2xpZW50RWZsOwogY2xhc3MgRmluZENsaWVudEVmbDsKIGNsYXNzIEZvcm1DbGllbnRFZmw7CiBj
bGFzcyBJbnB1dE1ldGhvZENvbnRleHRFZmw7CkBAIC01NCw2ICs1NSw4IEBAIGNsYXNzIFBhZ2VV
SUNsaWVudEVmbDsKIGNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw7CiBjbGFz
cyBQYWdlVmlld3BvcnRDb250cm9sbGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOwor
Y2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlF
Zmw7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQ
b3B1cEl0ZW07CkBAIC02Myw2ICs2Niw3IEBAIGNsYXNzIFdlYlBvcHVwTWVudVByb3h5RWZsOwog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBDdXJzb3I7CitjbGFzcyBJ
bnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgUmVnaW9uOwpA
QCAtNzEsNiArNzUsNyBAQCBjbGFzcyBSZWdpb247CiBjbGFzcyBFd2tfQmFja19Gb3J3YXJkX0xp
c3Q7CiBjbGFzcyBFd2tfQ29sb3JfUGlja2VyOwogY2xhc3MgRXdrX0NvbnRleHQ7CitjbGFzcyBF
d2tfQ29udGV4dF9NZW51OwogY2xhc3MgRXdrX0Rvd25sb2FkX0pvYjsKIGNsYXNzIEV3a19FcnJv
cjsKIGNsYXNzIEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdDsKQEAgLTE1NCw2ICsxNTksOSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcXVlc3RQb3B1cE1lbnUoV2ViS2l0OjpXZWJQb3B1cE1l
bnVQcm94eUVmbCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0
aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1
cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKICAgICB2b2lkIGNsb3NlUG9w
dXBNZW51KCk7CisgICAgCisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoV2ViS2l0OjpXZWJDb250
ZXh0TWVudVByb3h5RWZsKiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25z
dCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpOworICAgIHZv
aWQgaGlkZUNvbnRleHRNZW51KCk7CiAKICAgICB2b2lkIHVwZGF0ZVRleHRJbnB1dFN0YXRlKCk7
CiAKQEAgLTIxOCw2ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VQ
b2xpY3lDbGllbnRFZmw+IG1fcGFnZVBvbGljeUNsaWVudDsKICAgICBPd25QdHI8V2ViS2l0OjpQ
YWdlVUlDbGllbnRFZmw+IG1fcGFnZVVJQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6OlJlc291
cmNlTG9hZENsaWVudEVmbD4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7CisgICAgT3duUHRyPFdlYktp
dDo6Q29udGV4dE1lbnVDbGllbnRFZmw+IG1fY29udGV4dE1lbnVDbGllbnQ7CiAgICAgT3duUHRy
PFdlYktpdDo6RmluZENsaWVudEVmbD4gbV9maW5kQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6
OkZvcm1DbGllbnRFZmw+IG1fZm9ybUNsaWVudDsKICAgICBPd25QdHI8RXdrX0JhY2tfRm9yd2Fy
ZF9MaXN0PiBtX2JhY2tGb3J3YXJkTGlzdDsKQEAgLTIzOCw2ICsyNDcsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAgICAgV2ViQ29yZTo6VGltZXI8RXdrVmlld0ltcGw+IG1fZGlzcGxheVRpbWVyOwog
ICAgIE93blB0cjxXZWJDb3JlOjpSZWdpb24+IG1fZGlydHlSZWdpb247CisgICAgT3duUHRyPEV3
a19Db250ZXh0X01lbnU+IG1fY29udGV4dE1lbnU7CiAgICAgT3duUHRyPEV3a19Qb3B1cF9NZW51
PiBtX3BvcHVwTWVudTsKICAgICBPd25QdHI8V2ViS2l0OjpJbnB1dE1ldGhvZENvbnRleHRFZmw+
IG1faW5wdXRNZXRob2RDb250ZXh0OwogICAgIE93blB0cjxFd2tfQ29sb3JfUGlja2VyPiBtX2Nv
bG9yUGlja2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHRfbWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9tZW51LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
YzIyOGY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHRfbWVudS5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51LmgiCisKKyNpbmNs
dWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHlFZmwuaCIK
KyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfY29u
dGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitF
d2tfQ29udGV4dF9NZW51OjpFd2tfQ29udGV4dF9NZW51KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwg
V2ViQ29udGV4dE1lbnVQcm94eUVmbCogY29udGV4dE1lbnVQcm94eSwgY29uc3QgVmVjdG9yPFdl
YktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQorICAgIDogbV92aWV3SW1wbCh2
aWV3SW1wbCkKKyAgICAsIG1fY29udGV4dE1lbnVQcm94eShjb250ZXh0TWVudVByb3h5KQorICAg
ICwgbV9jb250ZXh0TWVudUl0ZW1zKDApCit7CisgICAgY29uc3Qgc2l6ZV90IHNpemUgPSBpdGVt
cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAg
IG1fY29udGV4dE1lbnVJdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQobV9jb250ZXh0TWVudUl0ZW1z
LCBFd2tfQ29udGV4dF9NZW51X0l0ZW06OmNyZWF0ZShpdGVtc1tpXSkubGVha1B0cigpKTsKK30K
KworRXdrX0NvbnRleHRfTWVudTo6fkV3a19Db250ZXh0X01lbnUoKQoreworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNjg3ZGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmgKQEAg
LTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisg
KiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX2NvbnRleHRf
bWVudS5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBDb250ZXh0IE1lbnUgQVBJLgor
ICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRfbWVudV9oCisjZGVmaW5lIGV3a19jb250ZXh0X21l
bnVfaAorCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAi
QyIgeworI2VuZGlmCisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBFd2tfQ29udGV4dF9N
ZW51ICovCit0eXBlZGVmIHN0cnVjdCBFd2tfQ29udGV4dF9NZW51IEV3a19Db250ZXh0X01lbnU7
CisKKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyog
ZXdrX2NvbnRleHRfbWVudV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42Mjg3N2ZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmNwcApAQCAtMCww
ICsxLDI2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJl
d2tfY29udGV4dF9tZW51X2l0ZW0uaCIKKworI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRl
bV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKKworRXdrX0NvbnRleHRfTWVudV9JdGVtOjpFd2tfQ29udGV4dF9NZW51X0l0ZW0o
Y29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQorICAgIDogbV90eXBl
KHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlPihpdGVtLnR5cGUoKSkpCisg
ICAgLCBtX2FjdGlvbihzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uPihp
dGVtLmFjdGlvbigpKSkKKyAgICAsIG1fdGl0bGUoaXRlbS50aXRsZSgpLnV0ZjgoKS5kYXRhKCkp
CisgICAgLCBtX2lzQ2hlY2tlZChpdGVtLmNoZWNrZWQoKSkKKyAgICAsIG1faXNFbmFibGVkKGl0
ZW0uZW5hYmxlZCgpKQoreworfQorCitFd2tfQ29udGV4dF9NZW51X0l0ZW06OkV3a19Db250ZXh0
X01lbnVfSXRlbShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9N
ZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgRXdrX0NvbnRleHRfTWVudSogcGFyZW50TWVudSwgRXdr
X0NvbnRleHRfTWVudSogc3ViTWVudSwgY29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBjaGVj
a2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCkKKyAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV9hY3Rp
b24oYWN0aW9uKQorICAgICwgbV90aXRsZSh0aXRsZSkKKyAgICAsIG1faXNDaGVja2VkKGNoZWNr
ZWQpCisgICAgLCBtX2lzRW5hYmxlZChlbmFibGVkKQoreworfQorCitFd2tfQ29udGV4dF9NZW51
X0l0ZW1fVHlwZSBFd2tfQ29udGV4dF9NZW51X0l0ZW06OnR5cGUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3R5cGU7Cit9CisKK3ZvaWQgRXdrX0NvbnRleHRfTWVudV9JdGVtOjpzZXRUeXBlKEV3
a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUpCit7CisgICAgbV90eXBlID0gdHlwZTsKK30K
KworRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBFd2tfQ29udGV4dF9NZW51X0l0ZW06OmFj
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYWN0aW9uOworfQorCit2b2lkIEV3a19Db250
ZXh0X01lbnVfSXRlbTo6c2V0QWN0aW9uKEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0
aW9uKQoreworICAgIG1fYWN0aW9uID0gYWN0aW9uOworfQorCitjb25zdCBjaGFyKiBFd2tfQ29u
dGV4dF9NZW51X0l0ZW06OnRpdGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90aXRsZTsKK30K
Kwordm9pZCBFd2tfQ29udGV4dF9NZW51X0l0ZW06OnNldFRpdGxlKGNvbnN0IGNoYXIqIHRpdGxl
KQoreworICAgIG1fdGl0bGUgPSB0aXRsZTsKK30KKworYm9vbCBFd2tfQ29udGV4dF9NZW51X0l0
ZW06OmNoZWNrZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzQ2hlY2tlZDsKK30KKwordm9p
ZCBFd2tfQ29udGV4dF9NZW51X0l0ZW06OnNldENoZWNrZWQoYm9vbCBjaGVja2VkKQoreworICAg
IG1faXNDaGVja2VkID0gY2hlY2tlZDsKK30KKworYm9vbCBFd2tfQ29udGV4dF9NZW51X0l0ZW06
OmVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzRW5hYmxlZDsKK30KKwordm9pZCBF
d2tfQ29udGV4dF9NZW51X0l0ZW06OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1f
aXNFbmFibGVkID0gZW5hYmxlZDsKK30KKworRXdrX0NvbnRleHRfTWVudV9JdGVtKiBld2tfY29u
dGV4dF9tZW51X2l0ZW1fbmV3KEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3a19D
b250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBFd2tfQ29udGV4dF9NZW51KiBwYXJlbnRf
bWVudSwgRXdrX0NvbnRleHRfTWVudSogc3ViX21lbnUsIGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5h
X0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQpCit7CisgICAgcmV0dXJuIEV3a19Db250
ZXh0X01lbnVfSXRlbTo6Y3JlYXRlKHR5cGUsIGFjdGlvbiwgcGFyZW50X21lbnUsIHN1Yl9tZW51
LCB0aXRsZSwgY2hlY2tlZCwgZW5hYmxlZCkubGVha1B0cigpOworfQorCit2b2lkIGV3a19jb250
ZXh0X21lbnVfaXRlbV9mcmVlKEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihpdGVtKTsKKworICAgIGRlbGV0ZSBpdGVtOworfQor
CitFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9n
ZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfQUNUSU9OX1RZUEUpOworCisgICAgcmV0dXJu
IGl0ZW0tPnR5cGUoKTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBl
X3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEV3a19Db250ZXh0X01lbnVfSXRlbV9U
eXBlIHR5cGUpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZh
bHNlKTsKKyAgICBpdGVtLT5zZXRUeXBlKHR5cGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K0V3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlv
bl9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05P
X0FDVElPTik7CisKKyAgICByZXR1cm4gaXRlbS0+YWN0aW9uKCk7Cit9CisKK0VpbmFfQm9vbCBl
d2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0
ZW0sIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKQoreworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisgICAgaXRlbS0+c2V0QWN0aW9u
KGFjdGlvbik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY29uc3QgY2hhciogZXdrX2NvbnRl
eHRfbWVudV9pdGVtX3RpdGxlX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0p
Cit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKKwor
ICAgIHJldHVybiBpdGVtLT50aXRsZSgpOworfQorCitjb25zdCBjaGFyKiBld2tfY29udGV4dF9t
ZW51X2l0ZW1fdGl0bGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgY29uc3QgY2hh
ciogdGl0bGUpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDAp
OworICAgIGl0ZW0tPnNldFRpdGxlKHRpdGxlKTsKKworICAgIHJldHVybiBpdGVtLT50aXRsZSgp
OworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGNvbnN0
IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworCisgICAgcmV0dXJuIGl0ZW0tPmNoZWNrZWQoKTsK
K30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX3NldChFd2tfQ29u
dGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEVpbmFfQm9vbCBjaGVja2VkKQoreworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisgICAgaXRlbS0+c2V0Q2hlY2tl
ZChjaGVja2VkKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRl
bSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOwor
ICAgIAorICAgIHJldHVybiBpdGVtLT5lbmFibGVkKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29u
dGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBF
aW5hX0Jvb2wgZW5hYmxlZCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
aXRlbSwgZmFsc2UpOworICAgIGl0ZW0tPnNldEVuYWJsZWQoZW5hYmxlZCk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX05PX0FDVElPTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rp
b24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX09QRU5fTElOS19JTl9ORVdfV0lORE9XLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdP
cGVuTGlua0luTmV3V2luZG93KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19ET1dOTE9BRF9MSU5LX1RPX0RJU0ssIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzayk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9MSU5LX1RPX0NMSVBCT0FSRCwg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCk7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9JTUFH
RV9JTl9ORVdfV0lORE9XLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5l
d1dpbmRvdyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfRE9XTkxPQURfSU1BR0VfVE9fRElTSywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnRG93bmxvYWRJbWFnZVRvRGlzayk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9JTUFHRV9UT19DTElQQk9BUkQsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1VSTF9U
T19DTElQQk9BUkQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xp
cGJvYXJkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19PUEVOX0ZSQU1FX0lOX05FV19XSU5ET1csIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ09wZW5GcmFtZUluTmV3V2luZG93KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdDb3B5KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19HT19CQUNLLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdHb0JhY2spOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZP
UldBUkQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RPUCwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnU3RvcCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUkVMT0FELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdSZWxvYWQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX0NVVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ3V0KTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QQVNURSwg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUGFzdGUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFTEVDVF9BTEwsIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfR1VFU1MsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3MpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05PX0dVRVNTRVNfRk9VTkQsIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVfU1BFTExJTkcsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUFSTl9TUEVMTElORywgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1RIRVIsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ090aGVyKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19TRUFSQ0hfSU5fU1BPVExJR0hULCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0VBUkNIX1dFQiwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnU2VhcmNoV2ViKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MT09LX1VQX0lOX0RJQ1RJT05BUlksIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9XSVRIX0RFRkFVTFRfQVBQ
TElDQVRJT04sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5XaXRoRGVmYXVsdEFwcGxp
Y2F0aW9uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1BERkFDVFVBTF9TSVpFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZBY3R1YWxTaXpl
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BE
RlpPT01fSU4sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERlpvb21Jbik7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZaT09NX09VVCwgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtUERGWm9vbU91dCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZBVVRPX1NJWkUsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVBERkF1dG9TaXplKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1BERlNJTkdMRV9QQUdFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1QREZTaW5nbGVQYWdlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1BERkZBQ0lOR19QQUdFUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERG
RmFjaW5nUGFnZXMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9N
RU5VX0lURU1fUERGQ09OVElOVU9VUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGQ29udGlu
dW91cyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRF
TV9QREZORVhUX1BBR0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERk5leHRQYWdlKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlBSRVZJ
T1VTX1BBR0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERlByZXZpb3VzUGFnZSk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9M
SU5LLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluayk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX0dSQU1NQVIs
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUxMSU5HX01FTlUs
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19TUEVMTElOR19Q
QU5FTCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNL
X1NQRUxMSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVD
S19TUEVMTElOR19XSElMRV9UWVBJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NoZWNr
U3BlbGxpbmdXaGlsZVR5cGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tfR1JBTU1BUl9XSVRIX1NQRUxMSU5HLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmcpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0ZPTlRfTUVOVSwg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfRk9OVFMsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250cyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQk9MRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnQm9sZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfSVRBTElDLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1VO
REVSTElORSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PVVRMSU5FLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVFlMRVMsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ1N0eWxlcyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19DT0xPUlMsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1Nob3dDb2xvcnMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX1NQRUVDSF9NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdT
cGVlY2hNZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19TVEFSVF9TUEVBS0lORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3Rh
cnRTcGVha2luZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfU1RPUF9TUEVBS0lORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3Rv
cFNwZWFraW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19XUklUSU5HX0RJUkVDVElPTl9NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfREVGQVVMVF9ESVJFQ1RJT04sIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0xFRlRfVE9fUklHSFQsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19SSUdIVF9UT19MRUZULCBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUERGU0lOR0xFX1BBR0VfU0NST0xMSU5HLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQREZTaW5nbGVQYWdlU2Nyb2xsaW5nKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QREZGQUNJ
TkdfUEFHRVNfU0NST0xMSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNpbmdQ
YWdlc1Njcm9sbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfSU5TUEVDVF9FTEVNRU5ULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdJbnNwZWN0RWxlbWVudCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fTUVOVSwgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX0RFRkFVTFQsIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0KTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElP
Tl9MRUZUX1RPX1JJR0hULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9u
TGVmdFRvUmlnaHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdCk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9PUEVOX01FRElBX0lOX05FV19XSU5E
T1csIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5NZWRpYUluTmV3V2luZG93KTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZ
X01FRElBX0xJTktfVE9fQ0xJUEJPQVJELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5
TWVkaWFMaW5rVG9DbGlwYm9hcmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dMRV9NRURJQV9DT05UUk9MUywgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9scyk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVE9HR0xFX01FRElBX0xPT1AsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRU5URVJfVklERU9fRlVM
TFNDUkVFTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW4p
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X01FRElBX1BMQVlfUEFVU0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGxheVBh
dXNlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19NRURJQV9NVVRFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGUpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fQkFTRV9D
VVNUT01fVEFHLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1CYXNlQ3VzdG9tVGFnKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0NVU1RPTV9UQUdf
Tk9fQUNUSU9OLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1DdXN0b21UYWdOb0FjdGlvbik7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9MQVNUX0NV
U1RPTV9UQUcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbUxhc3RDdXN0b21UYWcpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fQkFTRV9BUFBMSUNB
VElPTl9UQUcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9t
ZW51X2l0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X21lbnVfaXRlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMTkzYjMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dF9tZW51X2l0ZW0uaApAQCAtMCwwICsxLDI3MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgor
ICogQGZpbGUgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtLmgKKyAqIEBicmllZiAgIERlc2NyaWJl
cyB0aGUgRXdrIFBvcHVwIE1lbnUgSXRlbSBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfY29udGV4
dF9tZW51X2l0ZW1faAorI2RlZmluZSBld2tfY29udGV4dF9tZW51X2l0ZW1faAorCisjaW5jbHVk
ZSAiZXdrX3ZpZXcuaCIKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3a19Q
b3B1cF9NZW51X0l0ZW0gKi8KK3R5cGVkZWYgc3RydWN0IEV3a19Db250ZXh0X01lbnVfSXRlbSBF
d2tfQ29udGV4dF9NZW51X0l0ZW07CisKKy8qKgorICogXGVudW0gICAgX0V3a19Db250ZXh0X01l
bnVfSXRlbV9UeXBlCisgKiBAYnJpZWYgICBEZWZpbmVzIHRoZSB0eXBlcyBvZiB0aGUgaXRlbXMg
Zm9yIHRoZSBjb250ZXh0IG1lbnUuCisgKiBAaW5mbyAgICBLZWVwIHRoaXMgaW4gc3luYyB3aXRo
IENvbnRleHRNZW51SXRlbS5oCisgKi8KK3R5cGVkZWYgZW51bSBFd2tfQ29udGV4dF9NZW51X0l0
ZW1fVHlwZSB7CisgICAgRVdLX0FDVElPTl9UWVBFLAorICAgIEVXS19DSEVDS0FCTEVfQUNUSU9O
X1RZUEUsCisgICAgRVdLX1NFUEFSQVRPUl9UWVBFLAorICAgIEVXS19TVUJNRU5VX1RZUEUKK307
CisKKy8qKgorICogXGVudW0gICAgX0V3a19Db250ZXh0X01lbnVfQWN0aW9uCisgKiBAYnJpZWYg
ICBQcm92aWRlcyB0aGUgYWN0aW9ucyBvZiBpdGVtcyBmb3IgdGhlIGNvbnRleHQgbWVudS4KKyAq
IEBpbmZvICAgIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggQ29udGV4dE1lbnVJdGVtLmgKKyAqLwor
dHlwZWRlZiBlbnVtIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24geworICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfTk9fQUNUSU9OLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfT1BFTl9MSU5LX0lOX05FV19XSU5ET1csCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19ET1dOTE9BRF9MSU5LX1RPX0RJU0ssCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19D
T1BZX0xJTktfVE9fQ0xJUEJPQVJELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BF
Tl9JTUFHRV9JTl9ORVdfV0lORE9XLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRE9X
TkxPQURfSU1BR0VfVE9fRElTSywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlf
SU1BR0VfVE9fQ0xJUEJPQVJELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9J
TUFHRV9VUkxfVE9fQ0xJUEJPQVJELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BF
Tl9GUkFNRV9JTl9ORVdfV0lORE9XLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09Q
WSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0JBQ0ssCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19HT19GT1JXQVJELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfU1RPUCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1JFTE9BRCwKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0NVVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X1BBU1RFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0VMRUNUX0FMTCwKKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUxMSU5HX0dVRVNTLAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfTk9fR1VFU1NFU19GT1VORCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0lHTk9SRV9TUEVMTElORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0xF
QVJOX1NQRUxMSU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1RIRVIsCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUFSQ0hfSU5fU1BPVExJR0hULAorICAgIEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfU0VBUkNIX1dFQiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0xPT0tfVVBfSU5fRElDVElPTkFSWSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX09QRU5fV0lUSF9ERUZBVUxUX0FQUExJQ0FUSU9OLAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9QREZBQ1RVQUxfU0laRSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGWk9PTV9J
TiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGWk9PTV9PVVQsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1BERkFVVE9fU0laRSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERG
U0lOR0xFX1BBR0UsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkZBQ0lOR19QQUdFUywK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQ09OVElOVU9VUywKKyAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fUERGTkVYVF9QQUdFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZQ
UkVWSU9VU19QQUdFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9MSU5LID0g
MjAwMCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lHTk9SRV9HUkFNTUFSLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfTUVOVSwgLyoqPCBzcGVsbGluZyBv
ciBzcGVsbGluZy9ncmFtbWFyIHN1Yi1tZW51ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19TSE9XX1NQRUxMSU5HX1BBTkVMLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
Q0hFQ0tfU1BFTExJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19TUEVM
TElOR19XSElMRV9UWVBJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19H
UkFNTUFSX1dJVEhfU1BFTExJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19GT05U
X01FTlUsIC8qKjwgZm9udCBzdWItbWVudSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfU0hPV19GT05UUywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0JPTEQsCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JVEFMSUMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19VTkRFUkxJTkUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PVVRMSU5F
LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RZTEVTLAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfU0hPV19DT0xPUlMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19TUEVFQ0hfTUVOVSwgLyoqPCBzcGVlY2ggc3ViLW1lbnUgKi8KKyAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1NUQVJUX1NQRUFLSU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfU1RPUF9TUEVBS0lORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1dSSVRJTkdf
RElSRUNUSU9OX01FTlUsIC8qKjwgd3JpdGluZyBkaXJlY3Rpb24gc3ViLW1lbnUgKi8KKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RFRkFVTFRfRElSRUNUSU9OLAorICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfTEVGVF9UT19SSUdIVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX1JJR0hUX1RPX0xFRlQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QREZT
SU5HTEVfUEFHRV9TQ1JPTExJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QREZG
QUNJTkdfUEFHRVNfU0NST0xMSU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSU5T
UEVDVF9FTEVNRU5ULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJ
T05fTUVOVSwgLyoqPCB0ZXh0IGRpcmVjdGlvbiBzdWItbWVudSAqLworICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fREVGQVVMVCwKKyAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZULAorICAgIEVXS19D
T05URVhUX01FTlVfSVRFTV9PUEVOX01FRElBX0lOX05FV19XSU5ET1csCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19DT1BZX01FRElBX0xJTktfVE9fQ0xJUEJPQVJELAorICAgIEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfVE9HR0xFX01FRElBX0NPTlRST0xTLAorICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfVE9HR0xFX01FRElBX0xPT1AsCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19FTlRFUl9WSURFT19GVUxMU0NSRUVOLAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfTUVESUFfUExBWV9QQVVTRSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X01FRElBX01VVEUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0JBU0VfQ1VTVE9NX1RBRyA9
IDUwMDAsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0NVU1RPTV9UQUdfTk9fQUNUSU9OID0g
NTk5OCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fTEFTVF9DVVNUT01fVEFHID0gNTk5OSwK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fQkFTRV9BUFBMSUNBVElPTl9UQUcgPSAxMDAwMAor
fTsKKworLyoqCisgKiBDcmVhdGVzIGEgbmV3IGl0ZW0gb2YgdGhlIGNvbnRleHQgbWVudS4KKyAq
CisgKiBAcGFyYW0gdHlwZSBzcGVjaWZpZXMgYSB0eXBlIG9mIHRoZSBpdGVtCisgKiBAcGFyYW0g
YWN0aW9uIHNwZWNpZmllcyBhIGFjdGlvbiBvZiB0aGUgaXRlbQorICogQHBhcmFtIHBhcmVudF9t
ZW51IHNwZWNpZmllcyBhIHBhcmVudCBtZW51IG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gc3VibWVu
dSBzcGVjaWZpZXMgYSBzdWJtZW51IG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gdGl0bGUgc3BlY2lm
aWVzIGEgdGl0bGUgb2YgdGhlIGl0ZW0KKyAqIEBwYXJhbSBjaGVja2VkIEBjIEVJTkFfVFJVRSBp
ZiB0aGUgaXRlbSBzaG91bGQgYmUgdG9nZ2xlZCBvciBAYyBFSU5BX0ZBTFNFIGlmIG5vdAorICog
QHBhcmFtIGVuYWJsZWQgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgaXRlbSBvciBAYyBFSU5B
X0ZBTFNFIHRvIGRpc2FibGUKKyAqIEByZXR1cm4gdGhlIHBvaW50ZXIgdG8gdGhlIG5ldyBpdGVt
IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKgorICogQG5vdGUgVGhlIHJldHVy
biB2YWx1ZSBAYiBzaG91bGQgQGIgYmUgZnJlZWQgYWZ0ZXIgdXNlLgorICovCitFQVBJIEV3a19D
b250ZXh0X01lbnVfSXRlbSAqZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldyhFd2tfQ29udGV4dF9N
ZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwg
RXdrX0NvbnRleHRfTWVudSAqcGFyZW50X21lbnUsIEV3a19Db250ZXh0X01lbnUgKnN1Ym1lbnUs
IGNvbnN0IGNoYXIgKnRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQp
OworCisvKioKKyAqIERlc3Ryb3lzIHRoZSBpdGVtIG9mIHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0
LgorICoKKyAqIEBwYXJhbSBpdGVtIHRoZSBpdGVtIHRvIGRlc3Ryb3kKKyAqCisgKiBAc2VlIGV3
a19jb250ZXh0X21lbnVfZGVzdHJveQorICogQHNlZSBld2tfY29udGV4dF9tZW51X3VucmVmCisg
Ki8KK0VBUEkgdm9pZCBld2tfY29udGV4dF9tZW51X2l0ZW1fZnJlZShFd2tfQ29udGV4dF9NZW51
X0l0ZW0gKml0ZW0pOworCisvKioKKyAqIEdldHMgdHlwZSBvZiB0aGUgaXRlbS4KKyAqCisgKiBA
cGFyYW0gbyB0aGUgaXRlbSB0byBnZXQgdGhlIHR5cGUKKyAqIEByZXR1cm4gdHlwZSBvZiB0aGUg
aXRlbSBvbiBzdWNjZXNzIG9yIEBjIEVXS19BQ1RJT05fVFlQRSBvbiBmYWlsdXJlCisgKgorICog
QHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQKKyAqLworRUFQSSBFd2tfQ29udGV4
dF9NZW51X0l0ZW1fVHlwZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQoY29uc3QgRXdr
X0NvbnRleHRfTWVudV9JdGVtICpvKTsKKworLyoqCisgKiBTZXRzIHRoZSB0eXBlIG9mIGl0ZW0u
CisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gc2V0IHRoZSB0eXBlCisgKiBAcGFyYW0gdHlw
ZSBhIG5ldyB0eXBlIGZvciB0aGUgaXRlbSBvYmplY3QKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdr
X2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250
ZXh0X21lbnVfaXRlbV90eXBlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEV3a19Db250
ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUpOworCisvKioKKyAqIEdldHMgYW4gYWN0aW9uIG9mIHRo
ZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGdldCB0aGUgYWN0aW9uCisgKiBA
cmV0dXJuIGFuIGFjdGlvbiBvZiB0aGUgaXRlbSBvbiBzdWNjZXNzIG9yIEBjIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfTk9fQUNUSU9OIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250
ZXh0X21lbnVfaXRlbV9hY3Rpb25fc2V0CisgKi8KK0VBUEkgRXdrX0NvbnRleHRfTWVudV9JdGVt
X0FjdGlvbiBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChjb25zdCBFd2tfQ29udGV4
dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNldHMgYW4gYWN0aW9uIG9mIHRoZSBpdGVtLgor
ICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIHNldCB0aGUgYWN0aW9uCisgKiBAcGFyYW0gYWN0
aW9uIGEgbmV3IGFjdGlvbiBmb3IgdGhlIGl0ZW0gb2JqZWN0CisgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqCisgKiBAc2Vl
IGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3
a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywg
RXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24pOworCisvKioKKyAqIEdldHMgYSB0
aXRsZSBvZiB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBnZXQgdGhlIHRp
dGxlCisgKiBAcmV0dXJuIGEgdGl0bGUgb2YgdGhlIGl0ZW0gb24gc3VjY2Vzcywgb3IgQGMgTlVM
TCBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0
CisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldChj
b25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNldHMgYSB0aXRsZSBv
ZiB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBzZXQgdGhlIHRpdGxlCisg
KiBAcGFyYW0gdGl0bGUgYSBuZXcgdGl0bGUgZm9yIHRoZSBpdGVtIG9iamVjdAorICogQHJldHVy
biBhIG5ldyB0aXRsZSBvZiB0aGUgaXRlbSBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVy
ZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldAorICovCitFQVBJ
IGNvbnN0IGNoYXIgKmV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9zZXQoRXdrX0NvbnRleHRf
TWVudV9JdGVtICpvLCBjb25zdCBjaGFyICp0aXRsZSk7CisKKy8qKgorICogUXVlcmllcyBpZiB0
aGUgaXRlbSBpcyB0b2dnbGVkLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIHF1ZXJ5IGlm
IHRoZSBpdGVtIGlzIHRvZ2dsZWQKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBpdGVt
IGlzIHRvZ2dsZWQgb3IgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQorICovCitF
QVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQoY29uc3QgRXdr
X0NvbnRleHRfTWVudV9JdGVtICpvKTsKKworLyoqCisgKiBTZXRzIGlmIHRoZSBpdGVtIHNob3Vs
ZCBiZSB0b2dnbGVkLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGJlIHRvZ2dsZWQKKyAq
IEBwYXJhbSBjaGVja2VkIEBjIEVJTkFfVFJVRSBpZiB0aGUgaXRlbSBzaG91bGQgYmUgdG9nZ2xl
ZCBvciBAYyBFSU5BX0ZBTFNFIGlmIG5vdAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3Vj
Y2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdr
X2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywg
RWluYV9Cb29sIGNoZWNrZWQpOworCisvKioKKyAqIEdldHMgaWYgdGhlIGl0ZW0gaXMgZW5hYmxl
ZC4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBnZXQgZW5hYmxlZCBzdGF0ZQorICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgaWYgaXQncyBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBv
ciBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9z
ZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0
KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbyk7CisKKy8qKgorICogRW5hYmxlcy9kaXNh
YmxlcyB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBlbmFibGUvZGlzYWJs
ZQorICogQHBhcmFtIGVuYWJsZWQgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgaXRlbSBvciBA
YyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRf
bWVudV9pdGVtX2VuYWJsZWRfZ2V0CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21l
bnVfaXRlbV9lbmFibGVkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEVpbmFfQm9vbCBl
bmFibGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIGV3
a19jb250ZXh0X21lbnVfaXRlbV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtX3ByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWVkOGUyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9p
dGVtX3ByaXZhdGUuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tf
Y29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19jb250ZXh0X21lbnVfaXRl
bV9wcml2YXRlX2gKKworI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgorI2luY2x1ZGUg
IldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0
ZW0uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCisvKioKKyAqIFxzdHJ1Y3QgIEV3
a19Db250ZXh0X01lbnVfSXRlbQorICogQGJyaWVmICAgQ29udGFpbnMgdGhlIGNvbnRleHQgbWVu
dSBpdGVtIGRhdGEuCisgKi8KK2NsYXNzIEV3a19Db250ZXh0X01lbnVfSXRlbSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8RXdrX0NvbnRleHRfTWVudV9JdGVtPiBjcmVhdGUoY29u
c3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tfQ29udGV4dF9NZW51X0l0ZW0oaXRlbSkpOworICAgIH0K
KworICAgIHN0YXRpYyBQYXNzT3duUHRyPEV3a19Db250ZXh0X01lbnVfSXRlbT4gY3JlYXRlKEV3
a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rp
b24gYWN0aW9uLCBFd2tfQ29udGV4dF9NZW51KiBwYXJlbnRNZW51LCBFd2tfQ29udGV4dF9NZW51
KiBzdWJNZW51LCBjb25zdCBjaGFyKiB0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9v
bCBlbmFibGVkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tfQ29udGV4
dF9NZW51X0l0ZW0odHlwZSwgYWN0aW9uLCBwYXJlbnRNZW51LCBzdWJNZW51LCB0aXRsZSwgY2hl
Y2tlZCwgZW5hYmxlZCkpOworICAgIH0KKworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rp
b24gYWN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBY3Rpb24oRXdrX0NvbnRleHRfTWVudV9J
dGVtX0FjdGlvbik7CisKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRUeXBlKEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlKTsKKworICAg
IGNvbnN0IGNoYXIqIHRpdGxlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBjaGFy
Kik7CisKKyAgICBib29sIGNoZWNrZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldENoZWNrZWQoYm9v
bCk7CisKKyAgICBib29sIGVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldEVuYWJsZWQoYm9v
bCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRXdrX0NvbnRleHRfTWVudV9JdGVtKGNvbnN0
IFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOworICAgIEV3a19Db250ZXh0X01lbnVf
SXRlbShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0
ZW1fQWN0aW9uIGFjdGlvbiwgRXdrX0NvbnRleHRfTWVudSogcGFyZW50TWVudSwKKyAgICAgICAg
RXdrX0NvbnRleHRfTWVudSogc3VibWVudSwgY29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBj
aGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCk7CisKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW1f
QWN0aW9uIG1fYWN0aW9uOworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIG1fdHlwZTsK
KworICAgIGJvb2wgbV9pc0NoZWNrZWQ7CisgICAgYm9vbCBtX2lzRW5hYmxlZDsKKworICAgIFdL
RWluYVNoYXJlZFN0cmluZyBtX3RpdGxlOworfTsKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X21l
bnVfaXRlbV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZGY1OWRmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19jb250ZXh0X21lbnVfcHJpdmF0ZV9o
CisjZGVmaW5lIGV3a19jb250ZXh0X21lbnVfcHJpdmF0ZV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKK2NsYXNz
IFdlYkNvbnRleHRNZW51UHJveHlFZmw7Cit9CisKK2NsYXNzIEV3a1ZpZXdJbXBsOworCitjbGFz
cyBFd2tfQ29udGV4dF9NZW51IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxFd2tf
Q29udGV4dF9NZW51PiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsLCBXZWJLaXQ6OldlYkNv
bnRleHRNZW51UHJveHlFZmwqIGNvbnRleHRNZW51UHJveHksIGNvbnN0IFZlY3RvcjxXZWJLaXQ6
OldlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcykKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgRXdrX0NvbnRleHRfTWVudSh2aWV3SW1wbCwgY29udGV4dE1lbnVQcm94eSwg
aXRlbXMpKTsKKyAgICB9CisgICAgfkV3a19Db250ZXh0X01lbnUoKTsKKworcHJpdmF0ZToKKyAg
ICBFd2tfQ29udGV4dF9NZW51KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViS2l0OjpXZWJDb250
ZXh0TWVudVByb3h5RWZsKiwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVt
RGF0YT4mIGl0ZW1zKTsKKworICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOworICAgIFdlYktp
dDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbCogbV9jb250ZXh0TWVudVByb3h5OworICAgIEVpbmFf
TGlzdCogbV9jb250ZXh0TWVudUl0ZW1zOworCit9OworCisjZW5kaWYgLy8gZXdrX2NvbnRleHRf
bWVudV9wcml2YXRlX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3LmgKaW5kZXggNTNjYTgzYS4uYThiY2Y0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSAiZXdrX2Jh
Y2tfZm9yd2FyZF9saXN0LmgiCiAjaW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlci5oIgogI2luY2x1
ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudS5oIgogI2luY2x1
ZGUgImV3a19kb3dubG9hZF9qb2IuaCIKICNpbmNsdWRlICJld2tfZXJyb3IuaCIKICNpbmNsdWRl
ICJld2tfaW50ZW50LmgiCkBAIC0xMDksNiArMTEwLDkgQEAgc3RydWN0IEV3a19WaWV3X1NtYXJ0
X0NsYXNzIHsKICAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQgJ2RhdGEnIGlz
IGZyZWUgdG8gYmUgY2hhbmdlZC4gKi8KICAgICB1bnNpZ25lZCBsb25nIHZlcnNpb247CiAKKyAg
ICBFaW5hX0Jvb2wgKCpjb250ZXh0X21lbnVfc2hvdykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qs
IEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFd2tfQ29udGV4dF9NZW51ICptZW51KTsKKyAg
ICBFaW5hX0Jvb2wgKCpjb250ZXh0X21lbnVfaGlkZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qp
OworCiAgICAgRWluYV9Cb29sICgqcG9wdXBfbWVudV9zaG93KShFd2tfVmlld19TbWFydF9EYXRh
ICpzZCwgRWluYV9SZWN0YW5nbGUgcmVjdCwgRXdrX1RleHRfRGlyZWN0aW9uIHRleHRfZGlyZWN0
aW9uLCBkb3VibGUgcGFnZV9zY2FsZV9mYWN0b3IsIEV3a19Qb3B1cF9NZW51ICptZW51KTsKICAg
ICBFaW5hX0Jvb2wgKCpwb3B1cF9tZW51X2hpZGUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsK
IApAQCAtMTQ2LDcgKzE1MCw3IEBAIHN0cnVjdCBFd2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBU
aGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZAogICogaW4g
dGhlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KICAqLwotI2RlZmluZSBFV0tf
VklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDZVTAorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFT
U19WRVJTSU9OIDdVTAogCiAvKioKICAqIEluaXRpYWxpemVyIGZvciB3aG9sZSBFd2tfVmlld19T
bWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC0xNTgsNyArMTYyLDcgQEAgc3RydWN0IEV3a19WaWV3
X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9O
CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNk
ZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRf
Y2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXplciB0byB6
ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGI3ZjIzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0
cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRFZmwuaCIKKworI2luY2x1ZGUgIkV3a1Zp
ZXdJbXBsLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXZWJDb250
ZXh0TWVudUl0ZW0uaCIgICAKKyNpbmNsdWRlICJXS0FycmF5LmgiCisjaW5jbHVkZSAiV0tQYWdl
LmgiCisjaW5jbHVkZSA8RXZhcy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0
aWMgaW5saW5lIENvbnRleHRNZW51Q2xpZW50RWZsKiB0b0NvbnRleHRDbGllbnRFZmwoY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVD
bGllbnRFZmwqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisKK0NvbnRleHRN
ZW51Q2xpZW50RWZsOjpDb250ZXh0TWVudUNsaWVudEVmbChFd2tWaWV3SW1wbCogdmlld0ltcGwp
CisgICAgOiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQoreworICAgIFdLUGFnZVJlZiBwYWdlUmVmID0g
bV92aWV3SW1wbC0+d2tQYWdlKCk7CisgICAgQVNTRVJUKHBhZ2VSZWYpOworCisgICAgV0tQYWdl
Q29udGV4dE1lbnVDbGllbnQgY29udGV4dE1lbnVDbGllbnQ7CisgICAgbWVtc2V0KCZjb250ZXh0
TWVudUNsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZUNvbnRleHRNZW51Q2xpZW50KSk7CisgICAgY29u
dGV4dE1lbnVDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VDb250ZXh0TWVudUNsaWVudEN1cnJlbnRW
ZXJzaW9uOworICAgIGNvbnRleHRNZW51Q2xpZW50LmNsaWVudEluZm8gPSB0aGlzOworICAgIGNv
bnRleHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVk
Rm9yVXNlV2l0aFYwID0gMDsKKyAgICBjb250ZXh0TWVudUNsaWVudC5jdXN0b21Db250ZXh0TWVu
dUl0ZW1TZWxlY3RlZCA9IDA7CisgICAgY29udGV4dE1lbnVDbGllbnQuY29udGV4dE1lbnVEaXNt
aXNzZWQgPSAwOworICAgIGNvbnRleHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bv
c2VkTWVudSA9IDA7CisKKyAgICBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQocGFnZVJl
ZiwgJmNvbnRleHRNZW51Q2xpZW50KTsKK30KKwordm9pZCBDb250ZXh0TWVudUNsaWVudEVmbDo6
Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdLUGFnZVJlZiwgV0tBcnJheVJlZiwgV0tB
cnJheVJlZiosIFdLSGl0VGVzdFJlc3VsdFJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjhkMDhkMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvbnRleHRNZW51Q2xpZW50RWZsX2gKKyNkZWZpbmUg
Q29udGV4dE1lbnVDbGllbnRFZmxfaAorCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNs
dWRlICJld2tfY29udGV4dC5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK2Ns
YXNzIEV3a1ZpZXdJbXBsOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29udGV4dE1l
bnVDbGllbnRFZmwgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENvbnRleHRNZW51
Q2xpZW50RWZsPiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZXh0TWVudUNsaWVudEVmbCh2aWV3SW1wbCkpOworICAg
IH0KKworICAgIHN0YXRpYyB2b2lkIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXS1Bh
Z2VSZWYsIFdLQXJyYXlSZWYgcHJvcG9zZWRNZW51LCBXS0FycmF5UmVmKiBuZXdNZW51LCBXS0hp
dFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdCwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBDb250ZXh0TWVudUNs
aWVudEVmbChFd2tWaWV3SW1wbCopOworCisgICAgRXdrVmlld0ltcGwqIG1fdmlld0ltcGw7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIENvbnRleHRNZW51Q2xpZW50
RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVu
dEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5j
cHAKaW5kZXggYmM3NGQ1OS4uN2EwMzllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJO
YXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNp
bmNsdWRlICJXZWJDb250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgor
I2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHlFZmwuaCIKICNpbmNsdWRlICJXZWJQYWdlR3Jv
dXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQ
cm94eUVmbC5oIgpAQCAtMjM2LDEwICsyMzYsOSBAQCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVBy
b3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kgog
ICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKG1fdmlld0ltcGwsIHBhZ2Up
OwogfQogCi1QYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCitQYXNzUmVmUHRyPFdlYkNvbnRl
eHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBh
Z2VQcm94eSogcGFnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBXZWJDb250ZXh0TWVudVByb3h5RWZsOjpjcmVhdGUobV92aWV3SW1wbCwgcGFn
ZSk7CiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNTgyNGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3Bw
CkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb250
ZXh0TWVudVByb3h5RWZsLmgiCisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1
ZGUgIkV3a1ZpZXdJbXBsLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgor
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJD
b250ZXh0TWVudVByb3h5RWZsOjpXZWJDb250ZXh0TWVudVByb3h5RWZsKEV3a1ZpZXdJbXBsKiB2
aWV3SW1wbCwgV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIDogbV92aWV3SW1wbCh2aWV3SW1wbCkK
KyAgICAsIG1fcGFnZShwYWdlKQoreworfQorCitXZWJDb250ZXh0TWVudVByb3h5RWZsOjp+V2Vi
Q29udGV4dE1lbnVQcm94eUVmbCgpCit7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUVm
bDo6c2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcykKK3sKKyAgICBtX3ZpZXdJ
bXBsLT5zaG93Q29udGV4dE1lbnUodGhpcywgcG9zaXRpb24sIGl0ZW1zKTsKK30KKwordm9pZCBX
ZWJDb250ZXh0TWVudVByb3h5RWZsOjpoaWRlQ29udGV4dE1lbnUoKQoreworICAgIG1fdmlld0lt
cGwtPmhpZGVDb250ZXh0TWVudSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi44YjlhNjY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmgKQEAgLTAsMCArMSw2NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJDb250ZXh0TWVudVByb3h5RWZsX2gKKyNkZWZpbmUgV2ViQ29udGV4dE1l
bnVQcm94eUVmbF9oCisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUgIldl
YkNvbnRleHRNZW51UHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgorCitjbGFzcyBFd2tWaWV3SW1wbDsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CitjbGFzcyBX
ZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlFZmwgOiBwdWJsaWMgV2Vi
Q29udGV4dE1lbnVQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29u
dGV4dE1lbnVQcm94eUVmbD4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViUGFnZVBy
b3h5KiBwYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250ZXh0
TWVudVByb3h5RWZsKHZpZXdJbXBsLCBwYWdlKSk7CisgICAgfQorICAgIH5XZWJDb250ZXh0TWVu
dVByb3h5RWZsKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jik7
CisgICAgdmlydHVhbCB2b2lkIGhpZGVDb250ZXh0TWVudSgpOworCitwcml2YXRlOgorICAgIFdl
YkNvbnRleHRNZW51UHJveHlFZmwoRXdrVmlld0ltcGwqLCBXZWJQYWdlUHJveHkqKTsKKworICAg
IEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOworICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOworfTsK
KworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01F
TlVTKQorI2VuZGlmIC8vIFdlYkNvbnRleHRNZW51UHJveHlFZmxfaAo=
</data>
<flag name="commit-queue"
          id="186908"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173621</attachid>
            <date>2012-11-12 04:55:32 -0800</date>
            <delta_ts>2012-11-15 19:40:48 -0800</delta_ts>
            <desc>Working in Progress - 4</desc>
            <filename>context-menu.patch</filename>
            <type>text/plain</type>
            <size>62056</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">Y29tbWl0IDgzMjJkMWYwMmU2ZWFiOTBjMDYwYjg3NmI0YjU0NmVlNTU4ZTJmNDkKQXV0aG9yOiBn
eXV5b3VuZyA8Z3l1eW91bmdAZ3l1eW91bmctU2Ftc3VuZy1EZXNrdG9wLTY0Yml0Lihub25lKT4K
RGF0ZTogICBTdW4gTm92IDExIDE1OjU0OjA1IDIwMTIgKzA5MDAKCiAgICBbRUZMXSBTdXBwb3J0
IFdlYktpdDIgRUZMIGNvbnRleHRtZW51CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBi
Yjg3NDdiLi4zYjc0ZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNDksNiArNDks
OCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29sb3JfcGlja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAor
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwCisgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb29raWVfbWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJh
c2VfbWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNw
cApAQCAtNzgsNiArODAsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJ
UHJvY2Vzcy9lZmwvQmF0dGVyeVByb3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4
dEhpc3RvcnlDbGllbnRFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVu
dEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Gb3JtQ2xp
ZW50RWZsLmNwcApAQCAtOTUsNiArOTgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
ICAgICBVSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwv
VmlicmF0aW9uQ2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5j
cHAKKyAgICBVSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQ
cm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwCkBAIC0zNjIsNiArMzY2LDcgQEAgU0VUKEVXSzJVbml0VGVzdHNfQklOQVJJ
RVMKICAgICB0ZXN0X2V3azJfY29sb3JfcGlja2VyCiAgICAgdGVzdF9ld2syX2NvbnRleHQKICAg
ICB0ZXN0X2V3azJfY29udGV4dF9oaXN0b3J5X2NhbGxiYWNrcworICAgIHRlc3RfZXdrMl9jb250
ZXh0X21lbnUKICAgICB0ZXN0X2V3azJfY29va2llX21hbmFnZXIKICAgICB0ZXN0X2V3azJfZGF0
YWJhc2VfbWFuYWdlcgogICAgIHRlc3RfZXdrMl9kb3dubG9hZF9qb2IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IDA3Y2ExMjkuLjIyZDYxNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtMzMsNiAr
MzMsOCBAQAogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmgiCiAjaW5jbHVk
ZSAiZXdrX2NvbG9yX3BpY2tlci5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVk
ZSAiZXdrX2NvbnRleHRfbWVudS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5o
IgogI2luY2x1ZGUgImV3a19jb29raWVfbWFuYWdlci5oIgogI2luY2x1ZGUgImV3a19kYXRhYmFz
ZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4IDQxYzI2YzYu
LmRmYWYzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJFd2tWaWV3SW1wbC5oIgogCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRFZmwuaCIK
ICNpbmNsdWRlICJFZmxTY3JlZW5VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJGaW5kQ2xpZW50RWZs
LmgiCiAjaW5jbHVkZSAiRm9ybUNsaWVudEVmbC5oIgpAQCAtNDMsNiArNDQsNyBAQAogI2luY2x1
ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbG9y
X3BpY2tlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgImV3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29u
X2RhdGFiYXNlX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9wcml2YXRlLmgiCkBAIC0xMTAsNiArMTEy
LDcgQEAgRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVm
UHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3MKICAgICAsIG1fcGFnZVBvbGljeUNsaWVudChQ
YWdlUG9saWN5Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3BhZ2VVSUNsaWVudChQ
YWdlVUlDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50
KFJlc291cmNlTG9hZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9jb250ZXh0TWVu
dUNsaWVudChDb250ZXh0TWVudUNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9maW5k
Q2xpZW50KEZpbmRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZm9ybUNsaWVudChG
b3JtQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKQEAgLTY3
OSw2ICs2ODIsMzggQEAgdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtQ29udGVudHNTaXplQ2hhbmdl
KGNvbnN0IEludFNpemUmIHNpemUpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19U
RVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZULCBSVEwpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCwgTFRSKTsKIAordm9pZCBF
d2tWaWV3SW1wbDo6c2hvd0NvbnRleHRNZW51KFdlYkNvbnRleHRNZW51UHJveHlFZmwqIGNvbnRl
eHRNZW51UHJveHksIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgVmVj
dG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcykKK3sKKyAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgIEFTU0VSVChzZC0+YXBpKTsKKworICAgIEFT
U0VSVChjb250ZXh0TWVudVByb3h5KTsKKworICAgIGlmICghc2QtPmFwaS0+Y29udGV4dF9tZW51
X3Nob3cpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NvbnRleHRNZW51KQorICAgICAg
ICBoaWRlQ29udGV4dE1lbnUoKTsKKworICAgIG1fY29udGV4dE1lbnUgPSBFd2tfQ29udGV4dF9N
ZW51OjpjcmVhdGUodGhpcywgY29udGV4dE1lbnVQcm94eSwgaXRlbXMpOworCisgICAgc2QtPmFw
aS0+Y29udGV4dF9tZW51X3Nob3coc2QsIHBvc2l0aW9uLngoKSwgcG9zaXRpb24ueSgpLCBtX2Nv
bnRleHRNZW51LmdldCgpKTsKK30KKwordm9pZCBFd2tWaWV3SW1wbDo6aGlkZUNvbnRleHRNZW51
KCkKK3sKKyAgICBpZiAoIW1fY29udGV4dE1lbnUpCisgICAgICAgIHJldHVybjsKKworICAgIEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisgICAgQVNTRVJUKHNkLT5hcGkp
OworCisgICAgaWYgKHNkLT5hcGktPmNvbnRleHRfbWVudV9oaWRlKQorICAgICAgICBzZC0+YXBp
LT5jb250ZXh0X21lbnVfaGlkZShzZCk7CisKKyAgICBtX2NvbnRleHRNZW51LmNsZWFyKCk7Cit9
CisKIHZvaWQgRXdrVmlld0ltcGw6OnJlcXVlc3RQb3B1cE1lbnUoV2ViUG9wdXBNZW51UHJveHlF
ZmwqIHBvcHVwTWVudVByb3h5LCBjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRl
eHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1
cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQogewogICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlld0ltcGwuaAppbmRleCA5NjBjYjRkLi42NzFhZDRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKQEAgLTQ2LDYgKzQ2
LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIENvbnRleHRNZW51Q2xp
ZW50RWZsOwogY2xhc3MgRmluZENsaWVudEVmbDsKIGNsYXNzIEZvcm1DbGllbnRFZmw7CiBjbGFz
cyBJbnB1dE1ldGhvZENvbnRleHRFZmw7CkBAIC01NCw2ICs1NSw4IEBAIGNsYXNzIFBhZ2VMb2Fk
Q2xpZW50RWZsOwogY2xhc3MgUGFnZVBvbGljeUNsaWVudEVmbDsKIGNsYXNzIFBhZ2VVSUNsaWVu
dEVmbDsKIGNsYXNzIFJlc291cmNlTG9hZENsaWVudEVmbDsKK2NsYXNzIFdlYkNvbnRleHRNZW51
SXRlbURhdGE7CitjbGFzcyBXZWJDb250ZXh0TWVudVByb3h5RWZsOwogY2xhc3MgV2ViUGFnZUdy
b3VwOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUG9wdXBJdGVtOwpAQCAtNzQsNiAr
NzcsNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgRXdrQ29udGV4dDsKIGNsYXNzIEV3a19CYWNr
X0ZvcndhcmRfTGlzdDsKIGNsYXNzIEV3a19Db2xvcl9QaWNrZXI7CitjbGFzcyBFd2tfQ29udGV4
dF9NZW51OwogY2xhc3MgRXdrX1BvcHVwX01lbnU7CiBjbGFzcyBFd2tfU2V0dGluZ3M7CiAKQEAg
LTE2MSw2ICsxNjUsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcXVlc3RQb3B1cE1lbnUoV2Vi
S2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJD
b3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8
V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKICAg
ICB2b2lkIGNsb3NlUG9wdXBNZW51KCk7CisgICAgCisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUo
V2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZsKiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYg
aXRlbXMpOworICAgIHZvaWQgaGlkZUNvbnRleHRNZW51KCk7CiAKICAgICB2b2lkIHVwZGF0ZVRl
eHRJbnB1dFN0YXRlKCk7CiAKQEAgLTIzMCw2ICsyMzcsNyBAQCBwcml2YXRlOgogICAgIE93blB0
cjxXZWJLaXQ6OlBhZ2VQb2xpY3lDbGllbnRFZmw+IG1fcGFnZVBvbGljeUNsaWVudDsKICAgICBP
d25QdHI8V2ViS2l0OjpQYWdlVUlDbGllbnRFZmw+IG1fcGFnZVVJQ2xpZW50OwogICAgIE93blB0
cjxXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbD4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7Cisg
ICAgT3duUHRyPFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnRFZmw+IG1fY29udGV4dE1lbnVDbGll
bnQ7CiAgICAgT3duUHRyPFdlYktpdDo6RmluZENsaWVudEVmbD4gbV9maW5kQ2xpZW50OwogICAg
IE93blB0cjxXZWJLaXQ6OkZvcm1DbGllbnRFZmw+IG1fZm9ybUNsaWVudDsKICNpZiBFTkFCTEUo
VklCUkFUSU9OKQpAQCAtMjUyLDYgKzI2MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3RvdWNo
RXZlbnRzRW5hYmxlZDsKICNlbmRpZgogICAgIFdlYkNvcmU6OlRpbWVyPEV3a1ZpZXdJbXBsPiBt
X2Rpc3BsYXlUaW1lcjsKKyAgICBPd25QdHI8RXdrX0NvbnRleHRfTWVudT4gbV9jb250ZXh0TWVu
dTsKICAgICBPd25QdHI8RXdrX1BvcHVwX01lbnU+IG1fcG9wdXBNZW51OwogICAgIE93blB0cjxX
ZWJLaXQ6OklucHV0TWV0aG9kQ29udGV4dEVmbD4gbV9pbnB1dE1ldGhvZENvbnRleHQ7CiAgICAg
T3duUHRyPEV3a19Db2xvcl9QaWNrZXI+IG1fY29sb3JQaWNrZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMzNiYmIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcApAQCAt
MCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25p
Y3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51LmgiCisKKyNpbmNsdWRlICJB
UElPYmplY3QuaCIKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIldlYkNvbnRl
eHRNZW51SXRlbURhdGEuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5RWZsLmgiCisj
aW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVtLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRf
bWVudV9pdGVtX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X3ByaXZhdGUu
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworRXdrX0NvbnRleHRfTWVudTo6RXdrX0Nv
bnRleHRfTWVudShFd2tWaWV3SW1wbCogdmlld0ltcGwsIFdlYkNvbnRleHRNZW51UHJveHlFZmwq
IGNvbnRleHRNZW51UHJveHksIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRl
bURhdGE+JiBpdGVtcykKKyAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCisgICAgLCBtX2NvbnRl
eHRNZW51UHJveHkoY29udGV4dE1lbnVQcm94eSkKKyAgICAsIG1fY29udGV4dE1lbnVJdGVtcygw
KQoreworICAgIGNvbnN0IHNpemVfdCBzaXplID0gaXRlbXMuc2l6ZSgpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBtX2NvbnRleHRNZW51SXRlbXMgPSBl
aW5hX2xpc3RfYXBwZW5kKG1fY29udGV4dE1lbnVJdGVtcywgRXdrX0NvbnRleHRfTWVudV9JdGVt
OjpjcmVhdGUoaXRlbXNbaV0pLmxlYWtQdHIoKSk7Cit9CisKK0V3a19Db250ZXh0X01lbnU6On5F
d2tfQ29udGV4dF9NZW51KCkKK3sKK30KKwordm9pZCBFd2tfQ29udGV4dF9NZW51OjpoaWRlKCkK
K3sKKyAgICBtX3ZpZXdJbXBsLT5oaWRlQ29udGV4dE1lbnUoKTsKK30KKwordm9pZCBFd2tfQ29u
dGV4dF9NZW51Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJLaXQ6OldlYkNvbnRl
eHRNZW51SXRlbURhdGEmIGl0ZW0pCit7CisgICAgbV9jb250ZXh0TWVudVByb3h5LT5jb250ZXh0
TWVudUl0ZW1TZWxlY3RlZChpdGVtKTsgCit9IAorCitFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGV3
a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSwg
RXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIEV3a19Db250ZXh0X01lbnUqIHBh
cmVudE1lbnUsIEV3a19Db250ZXh0X01lbnUqIHN1Yk1lbnUsIGNvbnN0IGNoYXIqIHRpdGxlLCBF
aW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQpCit7CisgICAgcmV0dXJuIEV3a19D
b250ZXh0X01lbnVfSXRlbTo6Y3JlYXRlKHR5cGUsIGFjdGlvbiwgcGFyZW50TWVudSwgc3ViTWVu
dSwgdGl0bGUsIGNoZWNrZWQsIGVuYWJsZWQpLmxlYWtQdHIoKTsKK30KKworRWluYV9Cb29sIGV3
a19jb250ZXh0X21lbnVfaGlkZShFd2tfQ29udGV4dF9NZW51KiBtZW51KQoreworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCBmYWxzZSk7CisKKyAgICBtZW51LT5oaWRl
KCk7CisgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IEVpbmFfTGlzdCAqZXdrX2NvbnRl
eHRfbWVudV9pdGVtc19nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudSogbWVudSkKK3sKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudSwgMCk7CisKKyAgICByZXR1cm4gbWVu
dS0+aXRlbXMoKTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3Qo
RXdrX0NvbnRleHRfTWVudSogbWVudSwgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQorewor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCBmYWxzZSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKKworICAgIFdlYkNvcmU6
OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbiA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRN
ZW51QWN0aW9uPihpdGVtLT5hY3Rpb24oKSk7CisgICAgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVHlwZT4oaXRl
bS0+dHlwZSgpKTsKKworICAgIFdlYkNvbnRleHRNZW51SXRlbURhdGEgbmV3SXRlbSh0eXBlLCBh
Y3Rpb24sIGl0ZW0tPnRpdGxlKCksIGl0ZW0tPmVuYWJsZWQoKSwgaXRlbS0+Y2hlY2tlZCgpKTsK
KyAgICBtZW51LT5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZChuZXdJdGVtKTsKKworICAgIHJldHVy
biB0cnVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHRfbWVudS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHRfbWVudS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZWFh
MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9tZW51LmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19jb250ZXh0X21lbnUuaAorICogQGJy
aWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgQ29udGV4dCBNZW51IEFQSS4KKyAqLworCisjaWZuZGVm
IGV3a19jb250ZXh0X21lbnVfaAorI2RlZmluZSBld2tfY29udGV4dF9tZW51X2gKKworI2luY2x1
ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVm
IF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUg
bmFtZSBmb3IgRXdrX0NvbnRleHRfTWVudSAqLwordHlwZWRlZiBzdHJ1Y3QgRXdrX0NvbnRleHRf
TWVudSBFd2tfQ29udGV4dF9NZW51OworCisvKioKKyAqIEhpZGVzIHRoZSBjb250ZXh0IG1lbnUg
b2JqZWN0LgorICoKKyAqIEBwYXJhbSBtZW51IHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0IHRvIGhp
ZGUKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24g
ZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX2ZyZWUKKyAqLworRUFQ
SSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9oaWRlKEV3a19Db250ZXh0X01lbnUgKm1lbnUp
OworCisvKioKKyAqIEdldHMgdGhlIGxpc3Qgb2YgaXRlbXMuCisgKgorICogQHBhcmFtIG8gdGhl
IGNvbnRleHQgbWVudSBvYmplY3QgdG8gZ2V0IGxpc3Qgb2YgdGhlIGl0ZW1zCisgKiBAcmV0dXJu
IHRoZSBsaXN0IG9mIHRoZSBpdGVtcyBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQor
ICovCitFQVBJIGNvbnN0IEVpbmFfTGlzdCAqZXdrX2NvbnRleHRfbWVudV9pdGVtc19nZXQoY29u
c3QgRXdrX0NvbnRleHRfTWVudSAqbyk7CisKKy8qKgorICogU2VsZWN0cyB0aGUgaXRlbSBmcm9t
IHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0LgorICoKKyAqIEBwYXJhbSBtZW51IHRoZSBjb250ZXh0
IG1lbnUgb2JqZWN0CisgKiBAcGFyYW0gaXRlbSB0aGUgaXRlbSBpcyBzZWxlY3RlZAorICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUK
KyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3NlbGVjdChFd2tfQ29u
dGV4dF9NZW51ICptZW51LCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKml0ZW0pOworCisvKioKKyAq
IENyZWF0ZXMgYSBuZXcgaXRlbSBvZiB0aGUgY29udGV4dCBtZW51LgorICoKKyAqIEBwYXJhbSB0
eXBlIHNwZWNpZmllcyBhIHR5cGUgb2YgdGhlIGl0ZW0KKyAqIEBwYXJhbSBhY3Rpb24gc3BlY2lm
aWVzIGEgYWN0aW9uIG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gcGFyZW50X21lbnUgc3BlY2lmaWVz
IGEgcGFyZW50IG1lbnUgb2YgdGhlIGl0ZW0KKyAqIEBwYXJhbSBzdWJtZW51IHNwZWNpZmllcyBh
IHN1Ym1lbnUgb2YgdGhlIGl0ZW0KKyAqIEBwYXJhbSB0aXRsZSBzcGVjaWZpZXMgYSB0aXRsZSBv
ZiB0aGUgaXRlbQorICogQHBhcmFtIGNoZWNrZWQgQGMgRUlOQV9UUlVFIGlmIHRoZSBpdGVtIHNo
b3VsZCBiZSB0b2dnbGVkIG9yIEBjIEVJTkFfRkFMU0UgaWYgbm90CisgKiBAcGFyYW0gZW5hYmxl
ZCBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBpdGVtIG9yIEBjIEVJTkFfRkFMU0UgdG8gZGlz
YWJsZQorICogQHJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgbmV3IGl0ZW0gb24gc3VjY2VzcyBv
ciBAYyBOVUxMIG9uIGZhaWx1cmUKKyAqCisgKiBAbm90ZSBUaGUgcmV0dXJuIHZhbHVlIEBiIHNo
b3VsZCBAYiBiZSBmcmVlZCBhZnRlciB1c2UKKyAqLworRUFQSSBFd2tfQ29udGV4dF9NZW51X0l0
ZW0gKmV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUg
dHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIEV3a19Db250ZXh0X01l
bnUgKnBhcmVudF9tZW51LCBFd2tfQ29udGV4dF9NZW51ICpzdWJfbWVudSwgY29uc3QgY2hhciAq
dGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCk7CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBld2tfY29udGV4dF9tZW51X2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X21lbnVfaXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dF9tZW51X2l0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMw
MDIwOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dF9tZW51X2l0ZW0uY3BwCkBAIC0wLDAgKzEsMjYyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJl
d2tfY29udGV4dF9tZW51X2l0ZW0uaCIKKworI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRl
bV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKKworRXdrX0NvbnRleHRfTWVudV9JdGVtOjpFd2tfQ29udGV4dF9NZW51X0l0ZW0o
Y29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQorICAgIDogbV90eXBl
KHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlPihpdGVtLnR5cGUoKSkpCisg
ICAgLCBtX2FjdGlvbihzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uPihp
dGVtLmFjdGlvbigpKSkKKyAgICAsIG1fdGl0bGUoaXRlbS50aXRsZSgpLnV0ZjgoKS5kYXRhKCkp
CisgICAgLCBtX2lzQ2hlY2tlZChpdGVtLmNoZWNrZWQoKSkKKyAgICAsIG1faXNFbmFibGVkKGl0
ZW0uZW5hYmxlZCgpKQoreworfQorCitFd2tfQ29udGV4dF9NZW51X0l0ZW06OkV3a19Db250ZXh0
X01lbnVfSXRlbShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9N
ZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgRXdrX0NvbnRleHRfTWVudSogcGFyZW50TWVudSwgRXdr
X0NvbnRleHRfTWVudSogc3ViTWVudSwgY29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBjaGVj
a2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCkKKyAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV9hY3Rp
b24oYWN0aW9uKQorICAgICwgbV90aXRsZSh0aXRsZSkKKyAgICAsIG1fcGFyZW50TWVudShwYXJl
bnRNZW51KQorICAgICwgbV9zdWJNZW51KHN1Yk1lbnUpCisgICAgLCBtX2lzQ2hlY2tlZChjaGVj
a2VkKQorICAgICwgbV9pc0VuYWJsZWQoZW5hYmxlZCkKK3sKK30KKwordm9pZCBld2tfY29udGV4
dF9tZW51X2l0ZW1fZnJlZShFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oaXRlbSk7CisKKyAgICBkZWxldGUgaXRlbTsKK30KKwor
RXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgRXdrX0NvbnRleHRfTWVudV9JdGVtOjp0eXBlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlOworfQorCit2b2lkIEV3a19Db250ZXh0X01lbnVf
SXRlbTo6c2V0VHlwZShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlKQoreworICAgIG1f
dHlwZSA9IHR5cGU7Cit9CisKK0V3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gRXdrX0NvbnRl
eHRfTWVudV9JdGVtOjphY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2FjdGlvbjsKK30K
Kwordm9pZCBFd2tfQ29udGV4dF9NZW51X0l0ZW06OnNldEFjdGlvbihFd2tfQ29udGV4dF9NZW51
X0l0ZW1fQWN0aW9uIGFjdGlvbikKK3sKKyAgICBtX2FjdGlvbiA9IGFjdGlvbjsKK30KKworY29u
c3QgY2hhciogRXdrX0NvbnRleHRfTWVudV9JdGVtOjp0aXRsZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fdGl0bGU7Cit9CisKK3ZvaWQgRXdrX0NvbnRleHRfTWVudV9JdGVtOjpzZXRUaXRsZShj
b25zdCBjaGFyKiB0aXRsZSkKK3sKKyAgICBtX3RpdGxlID0gdGl0bGU7Cit9CisKK2Jvb2wgRXdr
X0NvbnRleHRfTWVudV9JdGVtOjpjaGVja2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc0No
ZWNrZWQ7Cit9CisKK3ZvaWQgRXdrX0NvbnRleHRfTWVudV9JdGVtOjpzZXRDaGVja2VkKGJvb2wg
Y2hlY2tlZCkKK3sKKyAgICBtX2lzQ2hlY2tlZCA9IGNoZWNrZWQ7Cit9CisKK2Jvb2wgRXdrX0Nv
bnRleHRfTWVudV9JdGVtOjplbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc0VuYWJs
ZWQ7Cit9CisKK3ZvaWQgRXdrX0NvbnRleHRfTWVudV9JdGVtOjpzZXRFbmFibGVkKGJvb2wgZW5h
YmxlZCkKK3sKKyAgICBtX2lzRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKK0V3a19Db250ZXh0X01l
bnVfSXRlbV9UeXBlIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfQ29u
dGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGl0ZW0sIEVXS19BQ1RJT05fVFlQRSk7CisKKyAgICByZXR1cm4gaXRlbS0+dHlwZSgpOwor
fQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfc2V0KEV3a19Db250ZXh0
X01lbnVfSXRlbSogaXRlbSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSkKK3sKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworICAgIGl0ZW0t
PnNldFR5cGUodHlwZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRXdrX0NvbnRleHRfTWVu
dV9JdGVtX0FjdGlvbiBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChjb25zdCBFd2tf
Q29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGl0ZW0sIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fQUNUSU9OKTsKKworICAg
IHJldHVybiBpdGVtLT5hY3Rpb24oKTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVf
aXRlbV9hY3Rpb25fc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgRXdrX0NvbnRleHRf
TWVudV9JdGVtX0FjdGlvbiBhY3Rpb24pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGl0ZW0sIGZhbHNlKTsKKyAgICBpdGVtLT5zZXRBY3Rpb24oYWN0aW9uKTsKKworICAg
IHJldHVybiB0cnVlOworfQorCitjb25zdCBjaGFyKiBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0
bGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworCisgICAgcmV0dXJuIGl0ZW0t
PnRpdGxlKCk7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9z
ZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBjb25zdCBjaGFyKiB0aXRsZSkKK3sKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgMCk7CisgICAgaXRlbS0+c2V0
VGl0bGUodGl0bGUpOworCisgICAgcmV0dXJuIGl0ZW0tPnRpdGxlKCk7Cit9CisKK0VpbmFfQm9v
bCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVu
dV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVt
LCBmYWxzZSk7CisKKyAgICByZXR1cm4gaXRlbS0+Y2hlY2tlZCgpOworfQorCitFaW5hX0Jvb2wg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSog
aXRlbSwgRWluYV9Cb29sIGNoZWNrZWQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGl0ZW0sIGZhbHNlKTsKKyAgICBpdGVtLT5zZXRDaGVja2VkKGNoZWNrZWQpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5h
YmxlZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisgICAgCisgICAgcmV0dXJu
IGl0ZW0tPmVuYWJsZWQoKTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9l
bmFibGVkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEVpbmFfQm9vbCBlbmFibGVk
KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7Cisg
ICAgaXRlbS0+c2V0RW5hYmxlZChlbmFibGVkKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9f
QUNUSU9OLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbik7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9MSU5LX0lO
X05FV19XSU5ET1csIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5k
b3cpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX0RPV05MT0FEX0xJTktfVE9fRElTSywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRG93
bmxvYWRMaW5rVG9EaXNrKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19DT1BZX0xJTktfVE9fQ0xJUEJPQVJELCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0lNQUdFX0lOX05FV19XSU5ET1cs
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93KTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19ET1dOTE9B
RF9JTUFHRV9UT19ESVNLLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdl
VG9EaXNrKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19DT1BZX0lNQUdFX1RPX0NMSVBCT0FSRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnQ29weUltYWdlVG9DbGlwYm9hcmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfSU1BR0VfVVJMX1RPX0NMSVBCT0FSRCwgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fRlJB
TUVfSU5fTkVXX1dJTkRPVywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5O
ZXdXaW5kb3cpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX0NPUFksIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHkpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0JBQ0ss
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0dvQmFjayk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fRk9SV0FSRCwgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdTdG9wKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19SRUxPQUQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ1VU
LCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDdXQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BBU1RFLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdQYXN0ZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfU0VMRUNUX0FMTCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
U2VsZWN0QWxsKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19TUEVMTElOR19HVUVTUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3Bl
bGxpbmdHdWVzcyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfTk9fR1VFU1NFU19GT1VORCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
Tm9HdWVzc2VzRm91bmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX0lHTk9SRV9TUEVMTElORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnSWdub3JlU3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX0xFQVJOX1NQRUxMSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdMZWFyblNwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19PVEhFUiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3Ro
ZXIpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX1NFQVJDSF9JTl9TUE9UTElHSFQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NlYXJj
aEluU3BvdGxpZ2h0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19TRUFSQ0hfV0VCLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTZWFy
Y2hXZWIpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0xPT0tfVVBfSU5fRElDVElPTkFSWSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
TG9va1VwSW5EaWN0aW9uYXJ5KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX1dJVEhfREVGQVVMVF9BUFBMSUNBVElPTiwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbldpdGhEZWZhdWx0QXBwbGljYXRpb24pOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQUNUVUFMX1NJ
WkUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERkFjdHVhbFNpemUpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGWk9PTV9JTiwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtUERGWm9vbUluKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlpPT01fT1VULCBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1QREZab29tT3V0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1BERkFVVE9fU0laRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGQXV0
b1NpemUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fUERGU0lOR0xFX1BBR0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERlNpbmdsZVBhZ2Up
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERG
RkFDSU5HX1BBR0VTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZGYWNpbmdQYWdlcyk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZDT05U
SU5VT1VTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZDb250aW51b3VzKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERk5FWFRfUEFHRSwg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGTmV4dFBhZ2UpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGUFJFVklPVVNfUEFHRSwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtUERGUHJldmlvdXNQYWdlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJTkssIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVfR1JBTU1BUiwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfTUVOVSwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX1NQRUxMSU5HX1BBTkVMLCBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbCk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tfU1BFTExJTkcsIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX1NQRUxMSU5HX1dISUxF
X1RZUElORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlw
aW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19DSEVDS19HUkFNTUFSX1dJVEhfU1BFTExJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRk9OVF9NRU5VLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdGb250TWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19GT05UUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnU2hvd0ZvbnRzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19CT0xELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdCb2xkKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JVEFM
SUMsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYyk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVU5ERVJMSU5FLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09VVExJTkUsIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ091dGxpbmUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1NUWUxFUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3R5
bGVzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19TSE9XX0NPTE9SUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9ycyk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
U1BFRUNIX01FTlUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUQVJU
X1NQRUFLSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9Q
X1NQRUFLSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmcpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1dSSVRJ
TkdfRElSRUNUSU9OX01FTlUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJl
Y3Rpb25NZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19ERUZBVUxUX0RJUkVDVElPTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
RGVmYXVsdERpcmVjdGlvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfTEVGVF9UT19SSUdIVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnTGVmdFRvUmlnaHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX1JJR0hUX1RPX0xFRlQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z1JpZ2h0VG9MZWZ0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19QREZTSU5HTEVfUEFHRV9TQ1JPTExJTkcsIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERkZBQ0lOR19QQUdFU19TQ1JPTExJ
TkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2VzU2Nyb2xsaW5nKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19J
TlNQRUNUX0VMRU1FTlQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19URVhUX0RJUkVDVElPTl9NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGly
ZWN0aW9uTWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fREVGQVVMVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQs
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodCk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVY
VF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4
dERpcmVjdGlvblJpZ2h0VG9MZWZ0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX09QRU5fTUVESUFfSU5fTkVXX1dJTkRPVywgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnT3Blbk1lZGlhSW5OZXdXaW5kb3cpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTUVESUFfTElOS19UT19D
TElQQk9BUkQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlNZWRpYUxpbmtUb0NsaXBi
b2FyZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfVE9HR0xFX01FRElBX0NPTlRST0xTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdU
b2dnbGVNZWRpYUNvbnRyb2xzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFfTE9PUCwgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnVG9nZ2xlTWVkaWFMb29wKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19FTlRFUl9WSURFT19GVUxMU0NSRUVOLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdFbnRlclZpZGVvRnVsbHNjcmVlbik7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTUVESUFfUExBWV9QQVVT
RSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5UGF1c2UpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX01FRElBX01VVEUs
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0NVU1RPTV9UQUcsIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fQ1VTVE9NX1RBR19OT19BQ1RJT04sIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbUN1c3RvbVRhZ05vQWN0aW9uKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0xBU1RfQ1VTVE9NX1RBRywgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtTGFzdEN1c3RvbVRhZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0FQUExJQ0FUSU9OX1RBRywgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIxZDNhZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRl
bS5oCkBAIC0wLDAgKzEsMjY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8qKgorICogQGZpbGUgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtLmgKKyAqIEBicmllZiAgIERl
c2NyaWJlcyB0aGUgRXdrIENvbnRleHQgTWVudSBJdGVtIEFQSS4KKyAqLworCisjaWZuZGVmIGV3
a19jb250ZXh0X21lbnVfaXRlbV9oCisjZGVmaW5lIGV3a19jb250ZXh0X21lbnVfaXRlbV9oCisK
KyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3a19Qb3B1cF9NZW51X0l0ZW0g
Ki8KK3R5cGVkZWYgc3RydWN0IEV3a19Db250ZXh0X01lbnVfSXRlbSBFd2tfQ29udGV4dF9NZW51
X0l0ZW07CisKKy8qKgorICogXGVudW0gICAgX0V3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlCisg
KiBAYnJpZWYgICBEZWZpbmVzIHRoZSB0eXBlcyBvZiB0aGUgaXRlbXMgZm9yIHRoZSBjb250ZXh0
IG1lbnUuCisgKiBAaW5mbyAgICBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIENvbnRleHRNZW51SXRl
bS5oCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgRVdLX0FDVElPTl9UWVBFLAorICAgIEVXS19D
SEVDS0FCTEVfQUNUSU9OX1RZUEUsCisgICAgRVdLX1NFUEFSQVRPUl9UWVBFLAorICAgIEVXS19T
VUJNRU5VX1RZUEUKK30gRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGU7CisKKy8qKgorICogXGVu
dW0gICAgX0V3a19Db250ZXh0X01lbnVfQWN0aW9uCisgKiBAYnJpZWYgICBQcm92aWRlcyB0aGUg
YWN0aW9ucyBvZiBpdGVtcyBmb3IgdGhlIGNvbnRleHQgbWVudS4KKyAqIEBpbmZvICAgIEtlZXAg
dGhpcyBpbiBzeW5jIHdpdGggQ29udGV4dE1lbnVJdGVtLmgKKyAqLwordHlwZWRlZiBlbnVtIHsK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05PX0FDVElPTiwKKyAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX09QRU5fTElOS19JTl9ORVdfV0lORE9XLAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfRE9XTkxPQURfTElOS19UT19ESVNLLAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfQ09QWV9MSU5LX1RPX0NMSVBCT0FSRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX09QRU5fSU1BR0VfSU5fTkVXX1dJTkRPVywKKyAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX0RPV05MT0FEX0lNQUdFX1RPX0RJU0ssCisgICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19DT1BZX0lNQUdFX1RPX0NMSVBCT0FSRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0NPUFlfSU1BR0VfVVJMX1RPX0NMSVBCT0FSRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX09QRU5fRlJBTUVfSU5fTkVXX1dJTkRPVywKKyAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX0NPUFksCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19HT19CQUNLLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fRk9SV0FSRCwKKyAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX1NUT1AsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19SRUxP
QUQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DVVQsCisgICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19QQVNURSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFTEVD
VF9BTEwsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVMTElOR19HVUVTUywKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05PX0dVRVNTRVNfRk9VTkQsCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVfU1BFTExJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19MRUFSTl9TUEVMTElORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X09USEVSLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0VBUkNIX0lOX1NQT1RMSUdI
VCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFQVJDSF9XRUIsCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19MT09LX1VQX0lOX0RJQ1RJT05BUlksCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19PUEVOX1dJVEhfREVGQVVMVF9BUFBMSUNBVElPTiwKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fUERGQUNUVUFMX1NJWkUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1BERlpPT01fSU4sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlpPT01fT1VULAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZBVVRPX1NJWkUsCisgICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1BERlNJTkdMRV9QQUdFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZG
QUNJTkdfUEFHRVMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkNPTlRJTlVPVVMsCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERk5FWFRfUEFHRSwKKyAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fUERGUFJFVklPVVNfUEFHRSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X09QRU5fTElOSyA9IDIwMDAsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVf
R1JBTU1BUiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUxMSU5HX01FTlUsIC8q
Kjwgc3BlbGxpbmcgb3Igc3BlbGxpbmcvZ3JhbW1hciBzdWItbWVudSAqLworICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfU0hPV19TUEVMTElOR19QQU5FTCwKKyAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX0NIRUNLX1NQRUxMSU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfQ0hFQ0tfU1BFTExJTkdfV0hJTEVfVFlQSU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfQ0hFQ0tfR1JBTU1BUl9XSVRIX1NQRUxMSU5HLAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfRk9OVF9NRU5VLCAvKio8IGZvbnQgc3ViLW1lbnUgKi8KKyAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX1NIT1dfRk9OVFMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19CT0xELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSVRBTElDLAorICAgIEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfVU5ERVJMSU5FLAorICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfT1VUTElORSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUWUxFUywKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfQ09MT1JTLAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfU1BFRUNIX01FTlUsIC8qKjwgc3BlZWNoIHN1Yi1tZW51ICovCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVEFSVF9TUEVBS0lORywKKyAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX1NUT1BfU1BFQUtJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19XUklUSU5HX0RJUkVDVElPTl9NRU5VLCAvKio8IHdyaXRpbmcgZGlyZWN0aW9uIHN1Yi1t
ZW51ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19ERUZBVUxUX0RJUkVDVElPTiwK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0xFRlRfVE9fUklHSFQsCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19SSUdIVF9UT19MRUZULAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfUERGU0lOR0xFX1BBR0VfU0NST0xMSU5HLAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfUERGRkFDSU5HX1BBR0VTX1NDUk9MTElORywKKyAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX0lOU1BFQ1RfRUxFTUVOVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X1RFWFRfRElSRUNUSU9OX01FTlUsIC8qKjwgdGV4dCBkaXJlY3Rpb24gc3ViLW1lbnUgKi8KKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX0RFRkFVTFQsCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hULAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVG
VCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fT1BFTl9NRURJQV9JTl9ORVdfV0lORE9XLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9NRURJQV9MSU5LX1RPX0NMSVBCT0FS
RCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dMRV9NRURJQV9DT05UUk9MUywK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dMRV9NRURJQV9MT09QLAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfRU5URVJfVklERU9fRlVMTFNDUkVFTiwKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX01FRElBX1BMQVlfUEFVU0UsCisgICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19NRURJQV9NVVRFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNF
X0NVU1RPTV9UQUcgPSA1MDAwLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9DVVNUT01fVEFH
X05PX0FDVElPTiA9IDU5OTgsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0xBU1RfQ1VTVE9N
X1RBRyA9IDU5OTksCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0JBU0VfQVBQTElDQVRJT05f
VEFHID0gMTAwMDAKK30gRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbjsKKworLyoqCisgKiBD
cmVhdGVzIGEgbmV3IGl0ZW0gb2YgdGhlIGNvbnRleHQgbWVudS4KKyAqCisgKiBAcGFyYW0gdHlw
ZSBzcGVjaWZpZXMgYSB0eXBlIG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gYWN0aW9uIHNwZWNpZmll
cyBhIGFjdGlvbiBvZiB0aGUgaXRlbQorICogQHBhcmFtIHBhcmVudF9tZW51IHNwZWNpZmllcyBh
IHBhcmVudCBtZW51IG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gc3VibWVudSBzcGVjaWZpZXMgYSBz
dWJtZW51IG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gdGl0bGUgc3BlY2lmaWVzIGEgdGl0bGUgb2Yg
dGhlIGl0ZW0KKyAqIEBwYXJhbSBjaGVja2VkIEBjIEVJTkFfVFJVRSBpZiB0aGUgaXRlbSBzaG91
bGQgYmUgdG9nZ2xlZCBvciBAYyBFSU5BX0ZBTFNFIGlmIG5vdAorICogQHBhcmFtIGVuYWJsZWQg
QGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgaXRlbSBvciBAYyBFSU5BX0ZBTFNFIHRvIGRpc2Fi
bGUKKyAqIEByZXR1cm4gdGhlIHBvaW50ZXIgdG8gdGhlIG5ldyBpdGVtIG9uIHN1Y2Nlc3Mgb3Ig
QGMgTlVMTCBvbiBmYWlsdXJlCisgKgorICogQG5vdGUgVGhlIHJldHVybiB2YWx1ZSBAYiBzaG91
bGQgQGIgYmUgZnJlZWQgYWZ0ZXIgdXNlCisgKi8KKy8vRUFQSSBFd2tfQ29udGV4dF9NZW51X0l0
ZW0gKmV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUg
dHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIEV3a19Db250ZXh0X01l
bnUgKnBhcmVudF9tZW51LCBFd2tfQ29udGV4dF9NZW51ICpzdWJtZW51LCBjb25zdCBjaGFyICp0
aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKTsKKworLyoqCisgKiBE
ZXN0cm95cyB0aGUgaXRlbSBvZiB0aGUgY29udGV4dCBtZW51IG9iamVjdC4KKyAqCisgKiBAcGFy
YW0gaXRlbSB0aGUgaXRlbSB0byBkZXN0b3J5CisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51
X2hpZGUKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV91bnJlZgorICovCitFQVBJIHZvaWQgZXdr
X2NvbnRleHRfbWVudV9pdGVtX2ZyZWUoRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtKTsKKwor
LyoqCisgKiBHZXRzIHR5cGUgb2YgdGhlIGl0ZW0uCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0g
dG8gZ2V0IHRoZSB0eXBlCisgKiBAcmV0dXJuIHR5cGUgb2YgdGhlIGl0ZW0gb24gc3VjY2VzcyBv
ciBAYyBFV0tfQUNUSU9OX1RZUEUgb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRf
bWVudV9pdGVtX3R5cGVfc2V0CisgKi8KK0VBUEkgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRl
bSAqbyk7CisKKy8qKgorICogU2V0cyB0aGUgdHlwZSBvZiBpdGVtLgorICoKKyAqIEBwYXJhbSBv
IHRoZSBpdGVtIHRvIHNldCB0aGUgdHlwZQorICogQHBhcmFtIHR5cGUgYSBuZXcgdHlwZSBmb3Ig
dGhlIGl0ZW0gb2JqZWN0CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBvciBA
YyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRl
bV90eXBlX2dldAorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlw
ZV9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlw
ZSB0eXBlKTsKKworLyoqCisgKiBHZXRzIGFuIGFjdGlvbiBvZiB0aGUgaXRlbS4KKyAqCisgKiBA
cGFyYW0gbyB0aGUgaXRlbSB0byBnZXQgdGhlIGFjdGlvbgorICogQHJldHVybiBhbiBhY3Rpb24g
b2YgdGhlIGl0ZW0gb24gc3VjY2VzcyBvciBAYyBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05P
X0FDVElPTiBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0
aW9uX3NldAorICovCitFQVBJIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2FjdGlvbl9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpvKTsK
KworLyoqCisgKiBTZXRzIGFuIGFjdGlvbiBvZiB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0
aGUgaXRlbSB0byBzZXQgdGhlIGFjdGlvbgorICogQHBhcmFtIGFjdGlvbiBhIG5ldyBhY3Rpb24g
Zm9yIHRoZSBpdGVtIG9iamVjdAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywg
b3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51
X2l0ZW1fYWN0aW9uX2dldAorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0
ZW1fYWN0aW9uX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEV3a19Db250ZXh0X01lbnVf
SXRlbV9BY3Rpb24gYWN0aW9uKTsKKworLyoqCisgKiBHZXRzIGEgdGl0bGUgb2YgdGhlIGl0ZW0u
CisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gZ2V0IHRoZSB0aXRsZQorICogQHJldHVybiBh
IHRpdGxlIG9mIHRoZSBpdGVtIG9uIHN1Y2Nlc3MsIG9yIEBjIE5VTEwgb24gZmFpbHVyZQorICoK
KyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldAorICovCitFQVBJIGNvbnN0
IGNoYXIgKmV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQoY29uc3QgRXdrX0NvbnRleHRf
TWVudV9JdGVtICpvKTsKKworLyoqCisgKiBTZXRzIGEgdGl0bGUgb2YgdGhlIGl0ZW0uCisgKgor
ICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gc2V0IHRoZSB0aXRsZQorICogQHBhcmFtIHRpdGxlIGEg
bmV3IHRpdGxlIGZvciB0aGUgaXRlbSBvYmplY3QKKyAqIEByZXR1cm4gYSBuZXcgdGl0bGUgb2Yg
dGhlIGl0ZW0gb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3
a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQKKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tf
Y29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgY29u
c3QgY2hhciAqdGl0bGUpOworCisvKioKKyAqIFF1ZXJpZXMgaWYgdGhlIGl0ZW0gaXMgdG9nZ2xl
ZC4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBxdWVyeSBpZiB0aGUgaXRlbSBpcyB0b2dn
bGVkCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgaXRlbSBpcyB0b2dnbGVkIG9yIEBj
IEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdr
X2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRl
bSAqbyk7CisKKy8qKgorICogU2V0cyBpZiB0aGUgaXRlbSBzaG91bGQgYmUgdG9nZ2xlZC4KKyAq
CisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBiZSB0b2dnbGVkCisgKiBAcGFyYW0gY2hlY2tlZCBA
YyBFSU5BX1RSVUUgaWYgdGhlIGl0ZW0gc2hvdWxkIGJlIHRvZ2dsZWQgb3IgQGMgRUlOQV9GQUxT
RSBpZiBub3QKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9G
QUxTRSBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRl
bV9jaGVja2VkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEVpbmFfQm9vbCBjaGVja2Vk
KTsKKworLyoqCisgKiBHZXRzIGlmIHRoZSBpdGVtIGlzIGVuYWJsZWQuCisgKgorICogQHBhcmFt
IG8gdGhlIGl0ZW0gdG8gZ2V0IGVuYWJsZWQgc3RhdGUKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IGlmIGl0J3MgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQorICoK
KyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfc2V0CisgKi8KK0VBUEkgRWlu
YV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dldChjb25zdCBFd2tfQ29udGV4
dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIEVuYWJsZXMvZGlzYWJsZXMgdGhlIGl0ZW0uCisg
KgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gZW5hYmxlL2Rpc2FibGUKKyAqIEBwYXJhbSBlbmFi
bGVkIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhlIGl0ZW0gb3IgQGMgRUlOQV9GQUxTRSB0byBk
aXNhYmxlCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBvciBAYyBFSU5BX0ZB
TFNFIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVk
X2dldAorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9z
ZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFaW5hX0Jvb2wgZW5hYmxlZCk7CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBld2tfY29udGV4dF9tZW51X2l0
ZW1faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHRfbWVudV9pdGVtX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOWVhN2Y3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmgKQEAg
LTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IGV3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX3ByaXZhdGVfaAorCisjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCisjaW5j
bHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21l
bnUuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0ZW0uaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCisvKioKKyAqIFxzdHJ1Y3QgIEV3a19Db250ZXh0X01lbnVfSXRlbQor
ICogQGJyaWVmICAgQ29udGFpbnMgdGhlIGNvbnRleHQgbWVudSBpdGVtIGRhdGEuCisgKi8KK2Ns
YXNzIEV3a19Db250ZXh0X01lbnVfSXRlbSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8RXdrX0NvbnRleHRfTWVudV9JdGVtPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0
TWVudUl0ZW1EYXRhJiBpdGVtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBF
d2tfQ29udGV4dF9NZW51X0l0ZW0oaXRlbSkpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzT3du
UHRyPEV3a19Db250ZXh0X01lbnVfSXRlbT4gY3JlYXRlKEV3a19Db250ZXh0X01lbnVfSXRlbV9U
eXBlIHR5cGUsIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBFd2tfQ29udGV4
dF9NZW51KiBwYXJlbnRNZW51LCBFd2tfQ29udGV4dF9NZW51KiBzdWJNZW51LCBjb25zdCBjaGFy
KiB0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tfQ29udGV4dF9NZW51X0l0ZW0odHlwZSwgYWN0
aW9uLCBwYXJlbnRNZW51LCBzdWJNZW51LCB0aXRsZSwgY2hlY2tlZCwgZW5hYmxlZCkpOworICAg
IH0KKworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRBY3Rpb24oRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbik7CisKKyAgICBj
b25zdCBjaGFyKiB0aXRsZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgY2hhciop
OworCisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSgpIGNvbnN0OworICAgIHZv
aWQgc2V0VHlwZShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSk7CisKKyAgICBib29sIGNoZWNr
ZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldENoZWNrZWQoYm9vbCk7CisKKyAgICBib29sIGVuYWJs
ZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgRXdrX0NvbnRleHRfTWVudV9JdGVtKGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1l
bnVJdGVtRGF0YSYpOworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbShFd2tfQ29udGV4dF9NZW51
X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgRXdr
X0NvbnRleHRfTWVudSogcGFyZW50TWVudSwgRXdrX0NvbnRleHRfTWVudSogc3ViTWVudSwgY29u
c3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCk7CisK
KyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSBtX3R5cGU7CisgICAgRXdrX0NvbnRleHRf
TWVudV9JdGVtX0FjdGlvbiBtX2FjdGlvbjsKKworICAgIFdLRWluYVNoYXJlZFN0cmluZyBtX3Rp
dGxlOworCisgICAgRXdrX0NvbnRleHRfTWVudSogbV9wYXJlbnRNZW51OworICAgIEV3a19Db250
ZXh0X01lbnUqIG1fc3ViTWVudTsKKyAgICAKKyAgICBib29sIG1faXNDaGVja2VkOworICAgIGJv
b2wgbV9pc0VuYWJsZWQ7Cit9OworCisjZW5kaWYgLy8gZXdrX2NvbnRleHRfbWVudV9pdGVtX3By
aXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHRfbWVudV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dF9tZW51X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4zYTQ0M2IzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgKQEAgLTAsMCArMSw2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19jb250ZXh0X21l
bnVfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19jb250ZXh0X21lbnVfcHJpdmF0ZV9oCisKKyNpbmNs
dWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCisjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK2NsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CitjbGFzcyBXZWJDb250
ZXh0TWVudVByb3h5RWZsOworfQorCitjbGFzcyBFd2tWaWV3SW1wbDsKKworY2xhc3MgRXdrX0Nv
bnRleHRfTWVudSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RXdrX0NvbnRleHRf
TWVudT4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViS2l0OjpXZWJDb250ZXh0TWVu
dVByb3h5RWZsKiBjb250ZXh0TWVudVByb3h5LCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJDb250
ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IEV3a19Db250ZXh0X01lbnUodmlld0ltcGwsIGNvbnRleHRNZW51UHJveHksIGl0ZW1zKSk7
CisgICAgfQorICAgIH5Fd2tfQ29udGV4dF9NZW51KCk7CisKKyAgICB2b2lkIGhpZGUoKTsKKwor
ICAgIGNvbnN0IEVpbmFfTGlzdCogaXRlbXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRNZW51
SXRlbXM7IH0KKyAgICB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYktpdDo6
V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSk7CisKK3ByaXZhdGU6CisgICAgRXdrX0NvbnRl
eHRfTWVudShFd2tWaWV3SW1wbCogdmlld0ltcGwsIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94
eUVmbCosIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVt
cyk7CisKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKKyAgICBXZWJLaXQ6OldlYkNvbnRl
eHRNZW51UHJveHlFZmwqIG1fY29udGV4dE1lbnVQcm94eTsKKyAgICBFaW5hX0xpc3QqIG1fY29u
dGV4dE1lbnVJdGVtczsKK307CisKKyNlbmRpZiAvLyBld2tfY29udGV4dF9tZW51X3ByaXZhdGVf
aAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCA4
NWI5NzYyLi40MjRjOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmgKQEAgLTg0LDYgKzg0LDcgQEAKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xp
c3QuaCIKICNpbmNsdWRlICJld2tfY29sb3JfcGlja2VyLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRl
eHQuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25s
b2FkX2pvYi5oIgogI2luY2x1ZGUgImV3a19lcnJvci5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQu
aCIKQEAgLTExNCw2ICsxMTUsOSBAQCBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAg
IEV2YXNfU21hcnRfQ2xhc3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBj
aGFuZ2VkLiAqLwogICAgIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKIAorICAgIEVpbmFfQm9vbCAo
KmNvbnRleHRfbWVudV9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4
LCBFdmFzX0Nvb3JkIHksIEV3a19Db250ZXh0X01lbnUgKm1lbnUpOworICAgIEVpbmFfQm9vbCAo
KmNvbnRleHRfbWVudV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisKICAgICBFaW5h
X0Jvb2wgKCpwb3B1cF9tZW51X3Nob3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX1Jl
Y3RhbmdsZSByZWN0LCBFd2tfVGV4dF9EaXJlY3Rpb24gdGV4dF9kaXJlY3Rpb24sIGRvdWJsZSBw
YWdlX3NjYWxlX2ZhY3RvciwgRXdrX1BvcHVwX01lbnUgKm1lbnUpOwogICAgIEVpbmFfQm9vbCAo
KnBvcHVwX21lbnVfaGlkZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdEJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcAppbmRleCA4MjI4MGZjLi5lNDBj
ZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAK
QEAgLTIyMyw2ICsyMjMsMTQgQEAgdm9pZCBFV0syVW5pdFRlc3RCYXNlOjptb3VzZUNsaWNrKGlu
dCB4LCBpbnQgeSkKICAgICBldmFzX2V2ZW50X2ZlZWRfbW91c2VfdXAoZXZhcywgLyogTGVmdCAq
LyAxLCBFVkFTX0JVVFRPTl9OT05FLCAwLCAwKTsKIH0KIAordm9pZCBFV0syVW5pdFRlc3RCYXNl
Ojptb3VzZVJpZ2h0Q2xpY2soaW50IHgsIGludCB5KQoreworICAgIEV2YXMqIGV2YXMgPSBldmFz
X29iamVjdF9ldmFzX2dldChtX3dlYlZpZXcpOworICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV9t
b3ZlKGV2YXMsIHgsIHksIDAsIDApOworICAgIGV2YXNfZXZlbnRfZmVlZF9tb3VzZV9kb3duKGV2
YXMsIC8qIFJpZ2h0ICovIDMsIEVWQVNfQlVUVE9OX05PTkUsIDAsIDApOworICAgIGV2YXNfZXZl
bnRfZmVlZF9tb3VzZV91cChldmFzLCAvKiBSaWdodCAqLyAzLCBFVkFTX0JVVFRPTl9OT05FLCAw
LCAwKTsKK30KKwogdm9pZCBFV0syVW5pdFRlc3RCYXNlOjptb3VzZURvd24oaW50IHgsIGludCB5
KQogewogICAgIEV2YXMqIGV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldChtX3dlYlZpZXcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRl
c3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaAppbmRleCAyZWJiOTUw
Li43ODcwYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2Uu
aApAQCAtNDgsNiArNDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCB3YWl0VW50aWxVUkxDaGFu
Z2VkVG8oY29uc3QgY2hhciogZXhwZWN0ZWRVUkwsIGRvdWJsZSB0aW1lb3V0U2Vjb25kcyA9IGRl
ZmF1bHRUaW1lb3V0U2Vjb25kcyk7CiAKICAgICB2b2lkIG1vdXNlQ2xpY2soaW50IHgsIGludCB5
KTsKKyAgICB2b2lkIG1vdXNlUmlnaHRDbGljayhpbnQgeCwgaW50IHkpOwogICAgIHZvaWQgbW91
c2VEb3duKGludCB4LCBpbnQgeSk7CiAgICAgdm9pZCBtb3VzZVVwKGludCB4LCBpbnQgeSk7CiAg
ICAgdm9pZCBtb3VzZU1vdmUoaW50IHgsIGludCB5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0X21lbnUuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHRf
bWVudS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU5NmI5YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl9jb250ZXh0X21lbnUuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgICAgQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUK
KyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgICBJbmMuLCA1OSBUZW1w
bGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RC
YXNlLmgiCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9ubWVudC5o
IgorI2luY2x1ZGUgPEVXZWJLaXQyLmg+CisjaW5jbHVkZSA8RWNvcmUuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIEVXSzJVbml0VGVzdDsKKworZXh0ZXJuIEVXSzJVbml0VGVzdEVudmlyb25tZW50KiBl
bnZpcm9ubWVudDsKKworc3RhdGljIEVpbmFfQm9vbCBzaG93Q29udGV4dE1lbnUoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc21hcnREYXRhLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXdrX0Nv
bnRleHRfTWVudSogY29udGV4dE1lbnUpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1RFU1Rf
RihFV0syVW5pdFRlc3RCYXNlLCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KQoreworICAg
IGNvbnN0IGNoYXIqIGl0ZW1TZWxlY3RIVE1MID0KKyAgICAgICAgIjxodG1sPiIKKyAgICAgICAg
Ijxib2R5PjxhIGhyZWY9aHR0cDovL3d3dy5nb29nbGUuY29tPlRlc3QgTGluazwvYT48L2JvZHk+
IgorICAgICAgICAiPC9ib2R5PjwvaHRtbD4iOworCisgICAgZXdrVmlld0NsYXNzKCktPmNvbnRl
eHRfbWVudV9zaG93ID0gc2hvd0NvbnRleHRNZW51OworCisgICAgZXdrX3ZpZXdfaHRtbF9zdHJp
bmdfbG9hZCh3ZWJWaWV3KCksIGl0ZW1TZWxlY3RIVE1MLCAwLCAwKTsKKyAgICBBU1NFUlRfVFJV
RSh3YWl0VW50aWxMb2FkRmluaXNoZWQoKSk7CisgICAgbW91c2VSaWdodENsaWNrKDEwLCAxMCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51
Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVD
bGllbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYjdmMjMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRN
ZW51Q2xpZW50RWZsLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudEVmbC5oIgor
CisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
I2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbS5oIiAgIAorI2luY2x1ZGUgIldLQXJyYXkuaCIK
KyNpbmNsdWRlICJXS1BhZ2UuaCIKKyNpbmNsdWRlIDxFdmFzLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK3N0YXRpYyBpbmxpbmUgQ29udGV4dE1lbnVDbGllbnRFZmwqIHRvQ29udGV4
dENsaWVudEVmbChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxDb250ZXh0TWVudUNsaWVudEVmbCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8p
KTsKK30KKworQ29udGV4dE1lbnVDbGllbnRFZmw6OkNvbnRleHRNZW51Q2xpZW50RWZsKEV3a1Zp
ZXdJbXBsKiB2aWV3SW1wbCkKKyAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCit7CisgICAgV0tQ
YWdlUmVmIHBhZ2VSZWYgPSBtX3ZpZXdJbXBsLT53a1BhZ2UoKTsKKyAgICBBU1NFUlQocGFnZVJl
Zik7CisKKyAgICBXS1BhZ2VDb250ZXh0TWVudUNsaWVudCBjb250ZXh0TWVudUNsaWVudDsKKyAg
ICBtZW1zZXQoJmNvbnRleHRNZW51Q2xpZW50LCAwLCBzaXplb2YoV0tQYWdlQ29udGV4dE1lbnVD
bGllbnQpKTsKKyAgICBjb250ZXh0TWVudUNsaWVudC52ZXJzaW9uID0ga1dLUGFnZUNvbnRleHRN
ZW51Q2xpZW50Q3VycmVudFZlcnNpb247CisgICAgY29udGV4dE1lbnVDbGllbnQuY2xpZW50SW5m
byA9IHRoaXM7CisgICAgY29udGV4dE1lbnVDbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9z
ZWRNZW51X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgPSAwOworICAgIGNvbnRleHRNZW51Q2xpZW50
LmN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkID0gMDsKKyAgICBjb250ZXh0TWVudUNsaWVu
dC5jb250ZXh0TWVudURpc21pc3NlZCA9IDA7CisgICAgY29udGV4dE1lbnVDbGllbnQuZ2V0Q29u
dGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51ID0gMDsKKworICAgIFdLUGFnZVNldFBhZ2VDb250ZXh0
TWVudUNsaWVudChwYWdlUmVmLCAmY29udGV4dE1lbnVDbGllbnQpOworfQorCit2b2lkIENvbnRl
eHRNZW51Q2xpZW50RWZsOjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV0tQYWdlUmVm
LCBXS0FycmF5UmVmLCBXS0FycmF5UmVmKiwgV0tIaXRUZXN0UmVzdWx0UmVmLCBXS1R5cGVSZWYs
IGNvbnN0IHZvaWQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQwOGQxZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuaApAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29udGV4dE1lbnVDbGll
bnRFZmxfaAorI2RlZmluZSBDb250ZXh0TWVudUNsaWVudEVmbF9oCisKKyNpbmNsdWRlICJXS1Jl
dGFpblB0ci5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9X
S0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworY2xhc3MgRXdrVmlld0ltcGw7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBDb250ZXh0TWVudUNsaWVudEVmbCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8Q29udGV4dE1lbnVDbGllbnRFZmw+IGNyZWF0ZShFd2tWaWV3SW1wbCogdmlld0ltcGwp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvbnRleHRNZW51Q2xpZW50RWZs
KHZpZXdJbXBsKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZ2V0Q29udGV4dE1lbnVGcm9t
UHJvcG9zZWRNZW51KFdLUGFnZVJlZiwgV0tBcnJheVJlZiBwcm9wb3NlZE1lbnUsIFdLQXJyYXlS
ZWYqIG5ld01lbnUsIFdLSGl0VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVzdWx0LCBXS1R5cGVSZWYg
dXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IENvbnRleHRNZW51Q2xpZW50RWZsKEV3a1ZpZXdJbXBsKik7CisKKyAgICBFd2tWaWV3SW1w
bCogbV92aWV3SW1wbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
Q29udGV4dE1lbnVDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VDbGllbnRCYXNlLmNwcAppbmRleCBiNTk3ZDI5Li45NWE3ZTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcApAQCAtMzIsNyArMzIs
NyBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJDb250
ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1
ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgiCkBAIC0yMjMsMTAgKzIyMyw5IEBAIFBhc3NSZWZQ
dHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRCYXNlOjpjcmVhdGVQb3B1cE1lbnVQcm94
eShXZWJQYWdlUHJveHkqCiAgICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUo
bV92aWV3SW1wbCwgcGFnZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4g
UGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK1Bh
c3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRl
eHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFdlYkNvbnRleHRNZW51UHJveHlFZmw6OmNyZWF0
ZShtX3ZpZXdJbXBsLCBwYWdlKTsKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVBy
b3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQ
cm94eUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM3ZTBlYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4
dE1lbnVQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHlFZmwuaCIKKworI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQorCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0
TWVudUl0ZW1EYXRhLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1dlYkNvbnRleHRNZW51UHJveHlFZmw6OldlYkNvbnRleHRNZW51UHJveHlF
ZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsLCBXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3Zp
ZXdJbXBsKHZpZXdJbXBsKQorICAgICwgbV9wYWdlKHBhZ2UpCit7Cit9CisKK1dlYkNvbnRleHRN
ZW51UHJveHlFZmw6On5XZWJDb250ZXh0TWVudVByb3h5RWZsKCkKK3sKK30KKwordm9pZCBXZWJD
b250ZXh0TWVudVByb3h5RWZsOjpzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1z
KQoreworICAgIG1fdmlld0ltcGwtPnNob3dDb250ZXh0TWVudSh0aGlzLCBwb3NpdGlvbiwgaXRl
bXMpOworfQorCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlFZmw6OmhpZGVDb250ZXh0TWVudSgp
Cit7CisgICAgbV92aWV3SW1wbC0+aGlkZUNvbnRleHRNZW51KCk7Cit9CisKK3ZvaWQgV2ViQ29u
dGV4dE1lbnVQcm94eUVmbDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4
dE1lbnVJdGVtRGF0YSYgaXRlbSkKK3sKKyAgICBtX3BhZ2UtPmNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKGl0ZW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYkNvbnRleHRNZW51UHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5hNmZlZGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJDb250ZXh0TWVudVByb3h5RWZsX2gKKyNkZWZpbmUgV2ViQ29udGV4dE1lbnVQcm94eUVmbF9o
CisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUgIldlYkNvbnRleHRNZW51
UHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRQb2ludC5oPgorCitjbGFzcyBFd2tWaWV3SW1wbDsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CitjbGFzcyBXZWJQYWdlUHJveHk7
CisKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlFZmwgOiBwdWJsaWMgV2ViQ29udGV4dE1lbnVQ
cm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94
eUVmbD4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViUGFnZVByb3h5KiBwYWdlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250ZXh0TWVudVByb3h5RWZs
KHZpZXdJbXBsLCBwYWdlKSk7CisgICAgfQorICAgIH5XZWJDb250ZXh0TWVudVByb3h5RWZsKCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jik7CisgICAgdmlydHVh
bCB2b2lkIGhpZGVDb250ZXh0TWVudSgpOworCisgICAgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CisKK3ByaXZhdGU6CisgICAgV2Vi
Q29udGV4dE1lbnVQcm94eUVmbChFd2tWaWV3SW1wbCosIFdlYlBhZ2VQcm94eSopOworCisgICAg
RXdrVmlld0ltcGwqIG1fdmlld0ltcGw7CisgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7Cit9Owor
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVO
VVMpCisjZW5kaWYgLy8gV2ViQ29udGV4dE1lbnVQcm94eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174593</attachid>
            <date>2012-11-15 19:40:55 -0800</date>
            <delta_ts>2012-11-16 06:26:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96200-20121116123852.patch</filename>
            <type>text/plain</type>
            <size>69366</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjJhNDdlMzMwMTY1NTJh
MjU5NzkyZGNmMDc0YzI0NTUzOTk3MGFkMC4uMjRkODdmMWRiYTY5YzQyYmZlMjQ5YmE0NzFiYmI3
ODk5MjE4YTg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTE1ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0sy
XSBTdXBwb3J0IENvbnRleHQgTWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICBFRkwg
cG9ydCBhbHNvIGRvZXNuJ3QgaGlkZSB1bmF2YWlsYWJsZSBtZW51cyBhcyBndGsgcG9ydC4KKwog
MjAxMi0xMS0xNSAgQW5kcmV5IEFkYWlraW4gIDxhYW5kcmV5QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBbV2ViR0xdIGNsb25lTm9kZSBmb3IgaW1hZ2VzIHdpdGggcmV2
b2tlZCBCbG9iIFVSSXMgZmFpbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiNzA2NzE1MWViN2UzYTM5ZWIwMzM2
M2M3OGYxYWZkOTgxODJkNzFlLi45MjBhZmU5YTg4MGFmNzc2NDExNWEzMGEwZjE2NGExY2UxNzE4
ZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTIgQEAKKzIwMTItMTEtMTUgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIFN1cHBv
cnQgQ29udGV4dCBNZW51CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NjIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggc3VwcG9ydHMgV0syIEVGTCdzIGNvbnRleHQgbWVudSBhcyBXSzEg
aW1wbGVtZW5hdGlvbiBiZWNhdXNlIHdlIGNhbid0IHVzZSBlbGVtZW50YXJ5IGluIFdlYktpdCBp
bnNpZGUuCisgICAgICAgIEJhc2ljIGZ1bmN0aW9uYWxpdGllcyBvZiBjb250ZXh0IG1lbnUgYXJl
IG9ubHkgc3VwcG9ydHRlZC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuY3BwOgorICAgICAgICAoRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBs
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAoRXdr
Vmlld0ltcGw6OmhpZGVDb250ZXh0TWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChFd2tWaWV3SW1wbCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudS5jcHA6IEFkZGVk
LgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudTo6RXdrX0NvbnRleHRfTWVudSk6CisgICAgICAg
IChFd2tfQ29udGV4dF9NZW51Ojp+RXdrX0NvbnRleHRfTWVudSk6CisgICAgICAgIChFd2tfQ29u
dGV4dF9NZW51OjpoaWRlKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnU6OmFwcGVuZEl0ZW0p
OgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldyk6CisgICAgICAgIChld2tfY29u
dGV4dF9tZW51X2l0ZW1fZnJlZSk6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51Ojpjb250ZXh0
TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2hpZGUpOgorICAg
ICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtc19nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRf
bWVudV9pdGVtX3NlbGVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHRfbWVudS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9tZW51X2l0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6
RXdrX0NvbnRleHRfTWVudV9JdGVtKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6
dHlwZSk6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06OnNldFR5cGUpOgorICAgICAg
ICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjphY3Rpb24pOgorICAgICAgICAoRXdrX0NvbnRleHRf
TWVudV9JdGVtOjpzZXRBY3Rpb24pOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjp0
aXRsZSk6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06OnNldFRpdGxlKToKKyAgICAg
ICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6Y2hlY2tlZCk6CisgICAgICAgIChFd2tfQ29udGV4
dF9NZW51X0l0ZW06OnNldENoZWNrZWQpOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVt
OjplbmFibGVkKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6c2V0RW5hYmxlZCk6
CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQpOgorICAgICAgICAoZXdr
X2NvbnRleHRfbWVudV9pdGVtX3R5cGVfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVf
aXRlbV9hY3Rpb25fZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25f
c2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQpOgorICAgICAg
ICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldCk6CisgICAgICAgIChld2tfY29udGV4
dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVt
X2NoZWNrZWRfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dl
dCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbSk6CisgICAgICAgIChFd2tf
Q29udGV4dF9NZW51X0l0ZW06OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKEV3a19Db250ZXh0X01lbnUpOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudTo6Y3Jl
YXRlKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnU6Oml0ZW1zKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl9jb250ZXh0X21lbnUuY3BwOiBBZGRlZC4KKyAgICAgICAgKGNoZWNrQmFz
aWNDb250ZXh0TWVudUl0ZW0pOgorICAgICAgICAoc2hvd0NvbnRleHRNZW51KToKKyAgICAgICAg
KFRFU1RfRik6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5j
cHA6IEFkZGVkLgorICAgICAgICAodG9Db250ZXh0Q2xpZW50RWZsKToKKyAgICAgICAgKENvbnRl
eHRNZW51Q2xpZW50RWZsOjpDb250ZXh0TWVudUNsaWVudEVmbCk6CisgICAgICAgIChDb250ZXh0
TWVudUNsaWVudEVmbDo6Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKENvbnRleHRNZW51Q2xpZW50RWZsKToKKyAgICAgICAgKFdlYktp
dDo6Q29udGV4dE1lbnVDbGllbnRFZmw6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9QYWdlQ2xpZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRCYXNlOjpj
cmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkNvbnRl
eHRNZW51UHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmw6OldlYkNvbnRleHRNZW51UHJveHlFZmwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZsOjp+V2ViQ29udGV4dE1lbnVQ
cm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmw6OnNob3dD
b250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmw6Omhp
ZGVDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmw6
OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkNv
bnRleHRNZW51UHJveHlFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViQ29udGV4dE1lbnVQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51
UHJveHlFZmw6OmNyZWF0ZSk6CisKIDIwMTItMTEtMTUgIFl1bmkgSmVvbmcgIDx5aG5ldC5qdW5n
QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRkIEFQSXMgdG8gZ2V0L3NldCB3
aGV0aGVyIHNjcmlwdHMgY2FuIG9wZW4gbmV3IHdpbmRvd3MuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggNzk3OTcxZDBmNTZjOTUyNGUwMjQ0
OGNmZGRjNGI5ZTVlZGZhMTY5ZC4uNTY0MGRjNzY5N2U4MjM2Mzc2YzY1MzExMmZjMWI4MzAwZjRh
OTYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cApAQCAtODc2LDggKzg3Niw4IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0
ZSgpCiAgICAgICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkpKSB7
CiAjZW5kaWYKIAotICAgICAgICAgICAgICAgIC8vIEluIEdUSysgdW5hdmFpbGFibGUgaXRlbXMg
YXJlIG5vdCBoaWRkZW4gYnV0IGluc2Vuc2l0aXZlCi0jaWYgUExBVEZPUk0oR1RLKQorICAgICAg
ICAgICAgICAgIC8vIEluIEdUSysgYW5kIEVGTCwgdW5hdmFpbGFibGUgaXRlbXMgYXJlIG5vdCBo
aWRkZW4gYnV0IGluc2Vuc2l0aXZlLgorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZM
KQogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oQmFja0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0
KCkpOwogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oRm9yd2FyZEl0ZW0sIG1fY29udGV4dE1l
bnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU3RvcEl0ZW0sIG1fY29udGV4
dE1lbnUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBiYjg3NDdiMWNiMWY1
ODM4YzJkZDdjY2RkZjc4MjkxMWVhNjdjMWU1Li4zYjc0ZWRiNTA1M2ZmN2ExYzIzZDY4MTEwZjVh
NTkwOTRkZTFkZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNDksNiArNDksOCBA
QCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
YmFja19mb3J3YXJkX2xpc3RfaXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29s
b3JfcGlja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwCisgICAgVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb29raWVfbWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2Vf
bWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcApA
QCAtNzgsNiArODAsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJv
Y2Vzcy9lZmwvQmF0dGVyeVByb3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4dEhp
c3RvcnlDbGllbnRFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVm
bC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKICAgICBVSVBy
b2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50
RWZsLmNwcApAQCAtOTUsNiArOTgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAg
ICBVSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvVmli
cmF0aW9uQ2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAK
KyAgICBVSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9j
ZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9l
ZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJv
eHlFZmwuY3BwCkBAIC0zNjIsNiArMzY2LDcgQEAgU0VUKEVXSzJVbml0VGVzdHNfQklOQVJJRVMK
ICAgICB0ZXN0X2V3azJfY29sb3JfcGlja2VyCiAgICAgdGVzdF9ld2syX2NvbnRleHQKICAgICB0
ZXN0X2V3azJfY29udGV4dF9oaXN0b3J5X2NhbGxiYWNrcworICAgIHRlc3RfZXdrMl9jb250ZXh0
X21lbnUKICAgICB0ZXN0X2V3azJfY29va2llX21hbmFnZXIKICAgICB0ZXN0X2V3azJfZGF0YWJh
c2VfbWFuYWdlcgogICAgIHRlc3RfZXdrMl9kb3dubG9hZF9qb2IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4IDA3Y2ExMjkzNTBmNGVkYjdlM2RiNGJm
OTJhZDcwYjhjM2EyMDljZTQuLjIyZDYxNjgyNWUxY2Q1MTg4OTViMmU3ZGM3ZWM1YjgzMjMyMjU5
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAt
MzMsNiArMzMsOCBAQAogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmgiCiAj
aW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlci5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisj
aW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVf
aXRlbS5oIgogI2luY2x1ZGUgImV3a19jb29raWVfbWFuYWdlci5oIgogI2luY2x1ZGUgImV3a19k
YXRhYmFzZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4IGVj
M2YzMjc4MjE5MzVmN2UwZTNmOTA3YzA3NDg5M2VlNGViNDJiMDIuLmNkYzA4NzQ2MmU2NWY4MGQ1
YzQzN2ZiNWM0MzA4YTczNWMwMDlhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgogCisjaW5jbHVkZSAiQ29udGV4dE1l
bnVDbGllbnRFZmwuaCIKICNpbmNsdWRlICJFZmxTY3JlZW5VdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJGaW5kQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiRm9ybUNsaWVudEVmbC5oIgpAQCAtNDUsNiAr
NDYsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tf
Zm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29sb3JfcGlja2VyX3ByaXZh
dGUuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X3ByaXZhdGUuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2VfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgpAQCAtMTE0
LDYgKzExNiw3IEBAIEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywg
UGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBQYXNzCiAgICAgLCBtX3BhZ2VQb2xpY3lD
bGllbnQoUGFnZVBvbGljeUNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9wYWdlVUlD
bGllbnQoUGFnZVVJQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3Jlc291cmNlTG9h
ZENsaWVudChSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fY29u
dGV4dE1lbnVDbGllbnQoQ29udGV4dE1lbnVDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAs
IG1fZmluZENsaWVudChGaW5kQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2Zvcm1D
bGllbnQoRm9ybUNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogI2lmIEVOQUJMRShWSUJSQVRJT04p
CkBAIC03MTIsNiArNzE1LDM4IEBAIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUNvbnRlbnRzU2l6
ZUNoYW5nZShjb25zdCBJbnRTaXplJiBzaXplKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgUlRMKTsKIENPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIExUUik7CiAK
K3ZvaWQgRXdrVmlld0ltcGw6OnNob3dDb250ZXh0TWVudShXZWJDb250ZXh0TWVudVByb3h5RWZs
KiBjb250ZXh0TWVudVByb3h5LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNv
bnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpCit7CisgICAgRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsKKyAgICBBU1NFUlQoc2QtPmFwaSk7CisK
KyAgICBBU1NFUlQoY29udGV4dE1lbnVQcm94eSk7CisKKyAgICBpZiAoIXNkLT5hcGktPmNvbnRl
eHRfbWVudV9zaG93KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jb250ZXh0TWVudSkK
KyAgICAgICAgaGlkZUNvbnRleHRNZW51KCk7CisKKyAgICBtX2NvbnRleHRNZW51ID0gRXdrX0Nv
bnRleHRfTWVudTo6Y3JlYXRlKHRoaXMsIGNvbnRleHRNZW51UHJveHksIGl0ZW1zKTsKKworICAg
IHNkLT5hcGktPmNvbnRleHRfbWVudV9zaG93KHNkLCBwb3NpdGlvbi54KCksIHBvc2l0aW9uLnko
KSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6OmhpZGVDb250
ZXh0TWVudSgpCit7CisgICAgaWYgKCFtX2NvbnRleHRNZW51KQorICAgICAgICByZXR1cm47CisK
KyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgIEFTU0VSVChz
ZC0+YXBpKTsKKworICAgIGlmIChzZC0+YXBpLT5jb250ZXh0X21lbnVfaGlkZSkKKyAgICAgICAg
c2QtPmFwaS0+Y29udGV4dF9tZW51X2hpZGUoc2QpOworCisgICAgbV9jb250ZXh0TWVudS5jbGVh
cigpOworfQorCiB2b2lkIEV3a1ZpZXdJbXBsOjpyZXF1ZXN0UG9wdXBNZW51KFdlYlBvcHVwTWVu
dVByb3h5RWZsKiBwb3B1cE1lbnVQcm94eSwgY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVj
dGlvbiB0ZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8
V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKaW5kZXggNzBhNjYyMTIyMjA4YmM3ZjQ4NGY5
ZTg5YjUzMDgwZGVlMDE5YWM0Mi4uOTdhMTg3MzA1ZTliMmQzMWNmMjQwM2JiNjA4MzcyMjc4N2Fh
YTEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
d0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oCkBAIC00Niw2ICs0Niw3IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFz
cyBDb250ZXh0TWVudUNsaWVudEVmbDsKIGNsYXNzIEZpbmRDbGllbnRFZmw7CiBjbGFzcyBGb3Jt
Q2xpZW50RWZsOwogY2xhc3MgSW5wdXRNZXRob2RDb250ZXh0RWZsOwpAQCAtNTQsNiArNTUsOCBA
QCBjbGFzcyBQYWdlTG9hZENsaWVudEVmbDsKIGNsYXNzIFBhZ2VQb2xpY3lDbGllbnRFZmw7CiBj
bGFzcyBQYWdlVUlDbGllbnRFZmw7CiBjbGFzcyBSZXNvdXJjZUxvYWRDbGllbnRFZmw7CitjbGFz
cyBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eUVmbDsK
IGNsYXNzIFdlYlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlBvcHVw
SXRlbTsKQEAgLTc0LDYgKzc3LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEV3a0NvbnRleHQ7
CiBjbGFzcyBFd2tfQmFja19Gb3J3YXJkX0xpc3Q7CiBjbGFzcyBFd2tfQ29sb3JfUGlja2VyOwor
Y2xhc3MgRXdrX0NvbnRleHRfTWVudTsKIGNsYXNzIEV3a19Qb3B1cF9NZW51OwogY2xhc3MgRXdr
X1NldHRpbmdzOwogCkBAIC0xNjEsNiArMTY1LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXF1
ZXN0UG9wdXBNZW51KFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmwqLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3Rv
ciwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2Vs
ZWN0ZWRJbmRleCk7CiAgICAgdm9pZCBjbG9zZVBvcHVwTWVudSgpOworICAgIAorICAgIHZvaWQg
c2hvd0NvbnRleHRNZW51KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbCosIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4
dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKTsKKyAgICB2b2lkIGhpZGVDb250ZXh0TWVudSgpOwogCiAg
ICAgdm9pZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpOwogCkBAIC0yMzIsNiArMjM5LDcgQEAgcHJp
dmF0ZToKICAgICBPd25QdHI8V2ViS2l0OjpQYWdlUG9saWN5Q2xpZW50RWZsPiBtX3BhZ2VQb2xp
Y3lDbGllbnQ7CiAgICAgT3duUHRyPFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsPiBtX3BhZ2VVSUNs
aWVudDsKICAgICBPd25QdHI8V2ViS2l0OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw+IG1fcmVzb3Vy
Y2VMb2FkQ2xpZW50OworICAgIE93blB0cjxXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50RWZsPiBt
X2NvbnRleHRNZW51Q2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6OkZpbmRDbGllbnRFZmw+IG1f
ZmluZENsaWVudDsKICAgICBPd25QdHI8V2ViS2l0OjpGb3JtQ2xpZW50RWZsPiBtX2Zvcm1DbGll
bnQ7CiAjaWYgRU5BQkxFKFZJQlJBVElPTikKQEAgLTI1NCw2ICsyNjIsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV90b3VjaEV2ZW50c0VuYWJsZWQ7CiAjZW5kaWYKICAgICBXZWJDb3JlOjpUaW1l
cjxFd2tWaWV3SW1wbD4gbV9kaXNwbGF5VGltZXI7CisgICAgT3duUHRyPEV3a19Db250ZXh0X01l
bnU+IG1fY29udGV4dE1lbnU7CiAgICAgT3duUHRyPEV3a19Qb3B1cF9NZW51PiBtX3BvcHVwTWVu
dTsKICAgICBPd25QdHI8V2ViS2l0OjpJbnB1dE1ldGhvZENvbnRleHRFZmw+IG1faW5wdXRNZXRo
b2RDb250ZXh0OwogICAgIE93blB0cjxFd2tfQ29sb3JfUGlja2VyPiBtX2NvbG9yUGlja2VyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
bWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9t
ZW51LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hM2E3ZWVhYjM5ODRjMzZiZWM3MzMzYjc5NTZhYjg0YWM1YmUz
YTdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHRfbWVudS5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19jb250
ZXh0X21lbnUuaCIKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkV3a1ZpZXdJ
bXBsLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgorI2luY2x1ZGUgIldl
YkNvbnRleHRNZW51UHJveHlFZmwuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0ZW0u
aCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgorI2luY2x1ZGUg
ImV3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
CitFd2tfQ29udGV4dF9NZW51OjpFd2tfQ29udGV4dF9NZW51KEV3a1ZpZXdJbXBsKiB2aWV3SW1w
bCwgV2ViQ29udGV4dE1lbnVQcm94eUVmbCogY29udGV4dE1lbnVQcm94eSwgY29uc3QgVmVjdG9y
PFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQorICAgIDogbV92aWV3SW1w
bCh2aWV3SW1wbCkKKyAgICAsIG1fY29udGV4dE1lbnVQcm94eShjb250ZXh0TWVudVByb3h5KQor
ICAgICwgbV9jb250ZXh0TWVudUl0ZW1zKDApCit7CisgICAgY29uc3Qgc2l6ZV90IHNpemUgPSBp
dGVtcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAg
ICAgIG1fY29udGV4dE1lbnVJdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQobV9jb250ZXh0TWVudUl0
ZW1zLCBFd2tfQ29udGV4dF9NZW51X0l0ZW06OmNyZWF0ZShpdGVtc1tpXSkubGVha1B0cigpKTsK
K30KKworRXdrX0NvbnRleHRfTWVudTo6fkV3a19Db250ZXh0X01lbnUoKQoreworfQorCit2b2lk
IEV3a19Db250ZXh0X01lbnU6OmhpZGUoKQoreworICAgIG1fdmlld0ltcGwtPmhpZGVDb250ZXh0
TWVudSgpOworfQorCit2b2lkIEV3a19Db250ZXh0X01lbnU6OmFwcGVuZEl0ZW0oRXdrX0NvbnRl
eHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIG1fY29udGV4dE1lbnVJdGVtcyA9IGVpbmFfbGlz
dF9hcHBlbmQobV9jb250ZXh0TWVudUl0ZW1zLCBpdGVtKTsKK30KKworRXdrX0NvbnRleHRfTWVu
dV9JdGVtKiBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KEV3a19Db250ZXh0X01lbnVfSXRlbV9U
eXBlIHR5cGUsIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBFd2tfQ29udGV4
dF9NZW51KiBwYXJlbnRNZW51LCBFd2tfQ29udGV4dF9NZW51KiBzdWJNZW51LCBjb25zdCBjaGFy
KiB0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKQoreworICAgIEV3
a19Db250ZXh0X01lbnVfSXRlbSogbmV3SXRlbSA9IEV3a19Db250ZXh0X01lbnVfSXRlbTo6Y3Jl
YXRlKHR5cGUsIGFjdGlvbiwgcGFyZW50TWVudSwgc3ViTWVudSwgdGl0bGUsIGNoZWNrZWQsIGVu
YWJsZWQpLmxlYWtQdHIoKTsKKworICAgIHBhcmVudE1lbnUtPmFwcGVuZEl0ZW0obmV3SXRlbSk7
CisgICAgCisgICAgcmV0dXJuIG5ld0l0ZW07Cit9CisKK3ZvaWQgZXdrX2NvbnRleHRfbWVudV9p
dGVtX2ZyZWUoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKGl0ZW0pOworCisgICAgZGVsZXRlIGl0ZW07Cit9CisKKwordm9pZCBF
d2tfQ29udGV4dF9NZW51Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJLaXQ6Oldl
YkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCit7CisgICAgbV9jb250ZXh0TWVudVByb3h5LT5j
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChpdGVtKTsgCit9IAorCitFaW5hX0Jvb2wgZXdrX2NvbnRl
eHRfbWVudV9oaWRlKEV3a19Db250ZXh0X01lbnUqIG1lbnUpCit7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIGZhbHNlKTsKKworICAgIG1lbnUtPmhpZGUoKTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBFaW5hX0xpc3QgKmV3a19jb250ZXh0X21lbnVf
aXRlbXNfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUqIG1lbnUpCit7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIDApOworCisgICAgcmV0dXJuIG1lbnUtPml0ZW1z
KCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KEV3a19Db250
ZXh0X01lbnUqIG1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
eXBlPihpdGVtLT50eXBlKCkpOworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlv
biA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uPihpdGVtLT5hY3Rpb24o
KSk7CisKKyAgICBXZWJDb250ZXh0TWVudUl0ZW1EYXRhIG5ld0l0ZW0odHlwZSwgYWN0aW9uLCBp
dGVtLT50aXRsZSgpLCBpdGVtLT5lbmFibGVkKCksIGl0ZW0tPmNoZWNrZWQoKSk7CisgICAgbWVu
dS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQobmV3SXRlbSk7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250
ZXh0X21lbnUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X21lbnUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hM2I0OTViZTY0NGZiZTI2Y2FiMzhjZDY5MDQ3YmFjN2EyYzE5
YzQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHRfbWVudS5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX2NvbnRleHRfbWVudS5oCisgKiBA
YnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBDb250ZXh0IE1lbnUgQVBJLgorICovCisKKyNpZm5k
ZWYgZXdrX2NvbnRleHRfbWVudV9oCisjZGVmaW5lIGV3a19jb250ZXh0X21lbnVfaAorCisjaW5j
bHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVtLmgiCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZk
ZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciBFd2tfQ29udGV4dF9NZW51ICovCit0eXBlZGVmIHN0cnVjdCBFd2tfQ29udGV4
dF9NZW51IEV3a19Db250ZXh0X01lbnU7CisKKy8qKgorICogQ3JlYXRlcyBhIG5ldyBpdGVtIG9m
IHRoZSBjb250ZXh0IG1lbnUuCisgKgorICogQHBhcmFtIHR5cGUgc3BlY2lmaWVzIGEgdHlwZSBv
ZiB0aGUgaXRlbQorICogQHBhcmFtIGFjdGlvbiBzcGVjaWZpZXMgYSBhY3Rpb24gb2YgdGhlIGl0
ZW0KKyAqIEBwYXJhbSBwYXJlbnRfbWVudSBzcGVjaWZpZXMgYSBwYXJlbnQgbWVudSBvZiB0aGUg
aXRlbQorICogQHBhcmFtIHN1Ym1lbnUgc3BlY2lmaWVzIGEgc3VibWVudSBvZiB0aGUgaXRlbQor
ICogQHBhcmFtIHRpdGxlIHNwZWNpZmllcyBhIHRpdGxlIG9mIHRoZSBpdGVtCisgKiBAcGFyYW0g
Y2hlY2tlZCBAYyBFSU5BX1RSVUUgaWYgdGhlIGl0ZW0gc2hvdWxkIGJlIHRvZ2dsZWQgb3IgQGMg
RUlOQV9GQUxTRSBpZiBub3QKKyAqIEBwYXJhbSBlbmFibGVkIEBjIEVJTkFfVFJVRSB0byBlbmFi
bGUgdGhlIGl0ZW0gb3IgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCisgKiBAcmV0dXJuIHRoZSBw
b2ludGVyIHRvIHRoZSBuZXcgaXRlbSBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQor
ICoKKyAqIEBub3RlIFRoZSByZXR1cm4gdmFsdWUgQGIgc2hvdWxkIEBiIGJlIGZyZWVkIGFmdGVy
IHVzZQorICovCitFQVBJIEV3a19Db250ZXh0X01lbnVfSXRlbSAqZXdrX2NvbnRleHRfbWVudV9p
dGVtX25ldyhFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51
X0l0ZW1fQWN0aW9uIGFjdGlvbiwgRXdrX0NvbnRleHRfTWVudSAqcGFyZW50X21lbnUsIEV3a19D
b250ZXh0X01lbnUgKnN1Yl9tZW51LCBjb25zdCBjaGFyICp0aXRsZSwgRWluYV9Cb29sIGNoZWNr
ZWQsIEVpbmFfQm9vbCBlbmFibGVkKTsKKworLyoqCisgKiBEZXN0cm95cyB0aGUgaXRlbSBvZiB0
aGUgY29udGV4dCBtZW51IG9iamVjdC4KKyAqCisgKiBAcGFyYW0gaXRlbSB0aGUgaXRlbSB0byBk
ZXN0b3J5CisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2hpZGUKKyAqIEBzZWUgZXdrX2Nv
bnRleHRfbWVudV91bnJlZgorICovCitFQVBJIHZvaWQgZXdrX2NvbnRleHRfbWVudV9pdGVtX2Zy
ZWUoRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtKTsKKworLyoqCisgKiBIaWRlcyB0aGUgY29u
dGV4dCBtZW51IG9iamVjdC4KKyAqCisgKiBAcGFyYW0gbWVudSB0aGUgY29udGV4dCBtZW51IG9i
amVjdCB0byBoaWRlCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5B
X0ZBTFNFIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9mcmVl
CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaGlkZShFd2tfQ29udGV4dF9N
ZW51ICptZW51KTsKKworLyoqCisgKiBHZXRzIHRoZSBsaXN0IG9mIGl0ZW1zLgorICoKKyAqIEBw
YXJhbSBvIHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0IHRvIGdldCBsaXN0IG9mIHRoZSBpdGVtcwor
ICogQHJldHVybiB0aGUgbGlzdCBvZiB0aGUgaXRlbXMgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9u
IGZhaWx1cmUKKyAqLworRUFQSSBjb25zdCBFaW5hX0xpc3QgKmV3a19jb250ZXh0X21lbnVfaXRl
bXNfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUgKm8pOworCisvKioKKyAqIFNlbGVjdHMgdGhl
IGl0ZW0gZnJvbSB0aGUgY29udGV4dCBtZW51IG9iamVjdC4KKyAqCisgKiBAcGFyYW0gbWVudSB0
aGUgY29udGV4dCBtZW51IG9iamVjdAorICogQHBhcmFtIGl0ZW0gdGhlIGl0ZW0gaXMgc2VsZWN0
ZWQKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBv
biBmYWlsdXJlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxl
Y3QoRXdrX0NvbnRleHRfTWVudSAqbWVudSwgRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtKTsK
KworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIGV3a19jb250ZXh0
X21lbnVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHRfbWVudV9pdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M5MzNmODhmOGU4ODdm
YjNlNGQwZDhlZDczMmRmMzRlODM0OGI0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHAKQEAgLTAsMCAr
MSwyNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorCisjaW5jbHVkZSAi
ZXdrX2NvbnRleHRfbWVudV9pdGVtX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitFd2tfQ29udGV4dF9NZW51X0l0ZW06OkV3
a19Db250ZXh0X01lbnVfSXRlbShjb25zdCBXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGEm
IGl0ZW0pCisgICAgOiBtX3R5cGUoc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtX1R5
cGU+KGl0ZW0udHlwZSgpKSkKKyAgICAsIG1fYWN0aW9uKHN0YXRpY19jYXN0PEV3a19Db250ZXh0
X01lbnVfSXRlbV9BY3Rpb24+KGl0ZW0uYWN0aW9uKCkpKQorICAgICwgbV90aXRsZShpdGVtLnRp
dGxlKCkudXRmOCgpLmRhdGEoKSkKKyAgICAsIG1faXNDaGVja2VkKGl0ZW0uY2hlY2tlZCgpKQor
ICAgICwgbV9pc0VuYWJsZWQoaXRlbS5lbmFibGVkKCkpCit7Cit9CisKK0V3a19Db250ZXh0X01l
bnVfSXRlbTo6RXdrX0NvbnRleHRfTWVudV9JdGVtKEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBl
IHR5cGUsIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBFd2tfQ29udGV4dF9N
ZW51KiBwYXJlbnRNZW51LCBFd2tfQ29udGV4dF9NZW51KiBzdWJNZW51LCBjb25zdCBjaGFyKiB0
aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKQorICAgIDogbV90eXBl
KHR5cGUpCisgICAgLCBtX2FjdGlvbihhY3Rpb24pCisgICAgLCBtX3RpdGxlKHRpdGxlKQorICAg
ICwgbV9wYXJlbnRNZW51KHBhcmVudE1lbnUpCisgICAgLCBtX3N1Yk1lbnUoc3ViTWVudSkKKyAg
ICAsIG1faXNDaGVja2VkKGNoZWNrZWQpCisgICAgLCBtX2lzRW5hYmxlZChlbmFibGVkKQorewor
fQorCitFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSBFd2tfQ29udGV4dF9NZW51X0l0ZW06OnR5
cGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGU7Cit9CisKK3ZvaWQgRXdrX0NvbnRleHRf
TWVudV9JdGVtOjpzZXRUeXBlKEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUpCit7Cisg
ICAgbV90eXBlID0gdHlwZTsKK30KKworRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBFd2tf
Q29udGV4dF9NZW51X0l0ZW06OmFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYWN0aW9u
OworfQorCit2b2lkIEV3a19Db250ZXh0X01lbnVfSXRlbTo6c2V0QWN0aW9uKEV3a19Db250ZXh0
X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKQoreworICAgIG1fYWN0aW9uID0gYWN0aW9uOworfQor
Citjb25zdCBjaGFyKiBFd2tfQ29udGV4dF9NZW51X0l0ZW06OnRpdGxlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV90aXRsZTsKK30KKwordm9pZCBFd2tfQ29udGV4dF9NZW51X0l0ZW06OnNldFRp
dGxlKGNvbnN0IGNoYXIqIHRpdGxlKQoreworICAgIG1fdGl0bGUgPSB0aXRsZTsKK30KKworYm9v
bCBFd2tfQ29udGV4dF9NZW51X0l0ZW06OmNoZWNrZWQoKSBjb25zdAoreworICAgIHJldHVybiBt
X2lzQ2hlY2tlZDsKK30KKwordm9pZCBFd2tfQ29udGV4dF9NZW51X0l0ZW06OnNldENoZWNrZWQo
Ym9vbCBjaGVja2VkKQoreworICAgIG1faXNDaGVja2VkID0gY2hlY2tlZDsKK30KKworYm9vbCBF
d2tfQ29udGV4dF9NZW51X0l0ZW06OmVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lz
RW5hYmxlZDsKK30KKwordm9pZCBFd2tfQ29udGV4dF9NZW51X0l0ZW06OnNldEVuYWJsZWQoYm9v
bCBlbmFibGVkKQoreworICAgIG1faXNFbmFibGVkID0gZW5hYmxlZDsKK30KKworRXdrX0NvbnRl
eHRfTWVudV9JdGVtX1R5cGUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0KGNvbnN0IEV3
a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoaXRlbSwgRVdLX0FDVElPTl9UWVBFKTsKKworICAgIHJldHVybiBpdGVtLT50eXBl
KCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQoRXdrX0Nv
bnRleHRfTWVudV9JdGVtKiBpdGVtLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlKQor
eworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAg
ICBpdGVtLT5zZXRUeXBlKHR5cGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0V3a19Db250
ZXh0X01lbnVfSXRlbV9BY3Rpb24gZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9nZXQoY29u
c3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05PX0FDVElPTik7
CisKKyAgICByZXR1cm4gaXRlbS0+YWN0aW9uKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4
dF9tZW51X2l0ZW1fYWN0aW9uX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEV3a19D
b250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKQoreworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICBpdGVtLT5zZXRBY3Rpb24oYWN0aW9u
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBjaGFyKiBld2tfY29udGV4dF9tZW51
X2l0ZW1fdGl0bGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworCisgICAgcmV0
dXJuIGl0ZW0tPnRpdGxlKCk7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19jb250ZXh0X21lbnVfaXRl
bV90aXRsZV9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBjb25zdCBjaGFyKiB0aXRs
ZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgMCk7CisKKyAg
ICBpdGVtLT5zZXRUaXRsZSh0aXRsZSk7CisKKyAgICByZXR1cm4gaXRlbS0+dGl0bGUoKTsKK30K
KworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldChjb25zdCBFd2tf
Q29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGl0ZW0sIGZhbHNlKTsKKworICAgIHJldHVybiBpdGVtLT5jaGVja2VkKCk7Cit9CisK
K0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9zZXQoRXdrX0NvbnRleHRf
TWVudV9JdGVtKiBpdGVtLCBFaW5hX0Jvb2wgY2hlY2tlZCkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworCisgICAgaXRlbS0+c2V0Q2hlY2tlZChj
aGVja2VkKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRf
bWVudV9pdGVtX2VuYWJsZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkK
K3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworICAg
IAorICAgIHJldHVybiBpdGVtLT5lbmFibGVkKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4
dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBFaW5h
X0Jvb2wgZW5hYmxlZCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRl
bSwgZmFsc2UpOworCisgICAgaXRlbS0+c2V0RW5hYmxlZChlbmFibGVkKTsKKworICAgIHJldHVy
biB0cnVlOworfQorCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfTk9fQUNUSU9OLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlv
bik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfT1BFTl9MSU5LX0lOX05FV19XSU5ET1csIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09w
ZW5MaW5rSW5OZXdXaW5kb3cpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX0RPV05MT0FEX0xJTktfVE9fRElTSywgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0xJTktfVE9fQ0xJUEJPQVJELCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0lNQUdF
X0lOX05FV19XSU5ET1csIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3
V2luZG93KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19ET1dOTE9BRF9JTUFHRV9UT19ESVNLLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdEb3dubG9hZEltYWdlVG9EaXNrKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1RPX0NMSVBCT0FSRCwgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfSU1BR0VfVVJMX1RP
X0NMSVBCT0FSRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlw
Ym9hcmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX09QRU5fRlJBTUVfSU5fTkVXX1dJTkRPVywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnT3BlbkZyYW1lSW5OZXdXaW5kb3cpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFksIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z0NvcHkpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0dPX0JBQ0ssIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0dvQmFjayk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fRk9S
V0FSRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdTdG9wKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19SRUxPQUQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1JlbG9hZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfQ1VULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDdXQpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BBU1RFLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQYXN0ZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0VMRUNUX0FMTCwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVMTElOR19HVUVTUywgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnU3BlbGxpbmdHdWVzcyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fR1VFU1NFU19GT1VORCwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lHTk9SRV9TUEVMTElORywgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0xFQVJOX1NQRUxMSU5HLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PVEhFUiwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnT3RoZXIpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1NFQVJDSF9JTl9TUE9UTElHSFQsIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUFSQ0hfV0VCLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdTZWFyY2hXZWIpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0xPT0tfVVBfSU5fRElDVElPTkFSWSwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX1dJVEhfREVGQVVMVF9BUFBM
SUNBVElPTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbldpdGhEZWZhdWx0QXBwbGlj
YXRpb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fUERGQUNUVUFMX1NJWkUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERkFjdHVhbFNpemUp
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERG
Wk9PTV9JTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGWm9vbUluKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlpPT01fT1VULCBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1QREZab29tT3V0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkFVVE9fU0laRSwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtUERGQXV0b1NpemUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fUERGU0lOR0xFX1BBR0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVBERlNpbmdsZVBhZ2UpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVY
VF9NRU5VX0lURU1fUERGRkFDSU5HX1BBR0VTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZG
YWNpbmdQYWdlcyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9QREZDT05USU5VT1VTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZDb250aW51
b3VzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1BERk5FWFRfUEFHRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGTmV4dFBhZ2UpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGUFJFVklP
VVNfUEFHRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGUHJldmlvdXNQYWdlKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJ
TkssIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVfR1JBTU1BUiwg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcik7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfTUVOVSwg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX1NQRUxMSU5HX1BB
TkVMLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbCk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tf
U1BFTExJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNL
X1NQRUxMSU5HX1dISUxFX1RZUElORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tT
cGVsbGluZ1doaWxlVHlwaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19HUkFNTUFSX1dJVEhfU1BFTExJTkcsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZyk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRk9OVF9NRU5VLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19GT05UUywgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19CT0xELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdCb2xkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19JVEFMSUMsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYyk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVU5E
RVJMSU5FLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09VVExJTkUsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ091dGxpbmUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUWUxFUywgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnU3R5bGVzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0NPTE9SUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnU2hvd0NvbG9ycyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfU1BFRUNIX01FTlUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1Nw
ZWVjaE1lbnUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX1NUQVJUX1NQRUFLSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdGFy
dFNwZWFraW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19TVE9QX1NQRUFLSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdG9w
U3BlYWtpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX1dSSVRJTkdfRElSRUNUSU9OX01FTlUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19ERUZBVUxUX0RJUkVDVElPTiwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTEVGVF9UT19SSUdIVCwgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1JJR0hUX1RPX0xFRlQsIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QREZTSU5HTEVfUEFHRV9TQ1JPTExJTkcsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmcpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERkZBQ0lO
R19QQUdFU19TQ1JPTExJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1Bh
Z2VzU2Nyb2xsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19JTlNQRUNUX0VMRU1FTlQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z0luc3BlY3RFbGVtZW50KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fREVGQVVMVCwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9O
X0xFRlRfVE9fUklHSFQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25M
ZWZ0VG9SaWdodCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0KTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX09QRU5fTUVESUFfSU5fTkVXX1dJTkRP
VywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3Blbk1lZGlhSW5OZXdXaW5kb3cpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlf
TUVESUFfTElOS19UT19DTElQQk9BUkQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlN
ZWRpYUxpbmtUb0NsaXBib2FyZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfVE9HR0xFX01FRElBX0NPTlRST0xTLCBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUNvbnRyb2xzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFfTE9PUCwgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFMb29wKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19FTlRFUl9WSURFT19GVUxM
U0NSRUVOLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdFbnRlclZpZGVvRnVsbHNjcmVlbik7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
TUVESUFfUExBWV9QQVVTRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5UGF1
c2UpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX01FRElBX01VVEUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0NV
U1RPTV9UQUcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWcpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fQ1VTVE9NX1RBR19O
T19BQ1RJT04sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbUN1c3RvbVRhZ05vQWN0aW9uKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0xBU1RfQ1VT
VE9NX1RBRywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtTGFzdEN1c3RvbVRhZyk7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0FQUExJQ0FU
SU9OX1RBRywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21l
bnVfaXRlbS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
bWVudV9pdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM1OTEwNGE1MDA1NzhjMDJjYmIzOTVlYzkwNDBjODM4
OWU0ZmYxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5oCkBAIC0wLDAgKzEsMjQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX2NvbnRleHRfbWVu
dV9pdGVtLmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIENvbnRleHQgTWVudSBJdGVt
IEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19jb250ZXh0X21lbnVfaXRlbV9oCisjZGVmaW5lIGV3
a19jb250ZXh0X21lbnVfaXRlbV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUg
Zm9yIEV3a19Qb3B1cF9NZW51X0l0ZW0gKi8KK3R5cGVkZWYgc3RydWN0IEV3a19Db250ZXh0X01l
bnVfSXRlbSBFd2tfQ29udGV4dF9NZW51X0l0ZW07CisKKy8qKgorICogXGVudW0gICAgRXdrX0Nv
bnRleHRfTWVudV9JdGVtX1R5cGUKKyAqIEBicmllZiAgIERlZmluZXMgdGhlIHR5cGVzIG9mIHRo
ZSBpdGVtcyBmb3IgdGhlIGNvbnRleHQgbWVudS4KKyAqIEBpbmZvICAgIEtlZXAgdGhpcyBpbiBz
eW5jIHdpdGggQ29udGV4dE1lbnVJdGVtLmgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tf
QUNUSU9OX1RZUEUsCisgICAgRVdLX0NIRUNLQUJMRV9BQ1RJT05fVFlQRSwKKyAgICBFV0tfU0VQ
QVJBVE9SX1RZUEUsCisgICAgRVdLX1NVQk1FTlVfVFlQRQorfSBFd2tfQ29udGV4dF9NZW51X0l0
ZW1fVHlwZTsKKworLyoqCisgKiBcZW51bSAgICBFd2tfQ29udGV4dF9NZW51X0FjdGlvbgorICog
QGJyaWVmICAgUHJvdmlkZXMgdGhlIGFjdGlvbnMgb2YgaXRlbXMgZm9yIHRoZSBjb250ZXh0IG1l
bnUuCisgKiBAaW5mbyAgICBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIENvbnRleHRNZW51SXRlbS5o
CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19B
Q1RJT04sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJTktfSU5fTkVXX1dJ
TkRPVywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RPV05MT0FEX0xJTktfVE9fRElT
SywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTElOS19UT19DTElQQk9BUkQs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0lNQUdFX0lOX05FV19XSU5ET1cs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19ET1dOTE9BRF9JTUFHRV9UT19ESVNLLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9JTUFHRV9UT19DTElQQk9BUkQsCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1VSTF9UT19DTElQQk9BUkQs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0ZSQU1FX0lOX05FV19XSU5ET1cs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZLAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfR09fQkFDSywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZP
UldBUkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QLAorICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfUkVMT0FELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
Q1VULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUEFTVEUsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19TRUxFQ1RfQUxMLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfU1BFTExJTkdfR1VFU1MsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19HVUVT
U0VTX0ZPVU5ELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX1NQRUxMSU5H
LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTEVBUk5fU1BFTExJTkcsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PVEhFUiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX1NFQVJDSF9JTl9TUE9UTElHSFQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19T
RUFSQ0hfV0VCLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTE9PS19VUF9JTl9ESUNU
SU9OQVJZLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9XSVRIX0RFRkFVTFRf
QVBQTElDQVRJT04sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkFDVFVBTF9TSVpFLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZaT09NX0lOLAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9QREZaT09NX09VVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQVVUT19T
SVpFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZTSU5HTEVfUEFHRSwKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fUERGRkFDSU5HX1BBR0VTLAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9QREZDT05USU5VT1VTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZORVhUX1BB
R0UsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlBSRVZJT1VTX1BBR0UsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJTksgPSAyMDAwLAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfSUdOT1JFX0dSQU1NQVIsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19TUEVMTElOR19NRU5VLCAvKio8IHNwZWxsaW5nIG9yIHNwZWxsaW5nL2dyYW1tYXIgc3Vi
LW1lbnUgKi8KKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfU1BFTExJTkdfUEFO
RUwsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19TUEVMTElORywKKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX1NQRUxMSU5HX1dISUxFX1RZUElORywKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX0dSQU1NQVJfV0lUSF9TUEVMTElORywK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0ZPTlRfTUVOVSwgLyoqPCBmb250IHN1Yi1t
ZW51ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0ZPTlRTLAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfQk9MRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX0lUQUxJQywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1VOREVSTElORSwKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09VVExJTkUsCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19TVFlMRVMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0NP
TE9SUywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUVDSF9NRU5VLCAvKio8IHNw
ZWVjaCBzdWItbWVudSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RBUlRfU1BF
QUtJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QX1NQRUFLSU5HLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfV1JJVElOR19ESVJFQ1RJT05fTUVOVSwgLyoqPCB3
cml0aW5nIGRpcmVjdGlvbiBzdWItbWVudSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfREVGQVVMVF9ESVJFQ1RJT04sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUZU
X1RPX1JJR0hULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUklHSFRfVE9fTEVGVCwK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERlNJTkdMRV9QQUdFX1NDUk9MTElORywK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERkZBQ0lOR19QQUdFU19TQ1JPTExJTkcs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JTlNQRUNUX0VMRU1FTlQsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9NRU5VLCAvKio8IHRleHQgZGly
ZWN0aW9uIHN1Yi1tZW51ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJ
UkVDVElPTl9ERUZBVUxULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJF
Q1RJT05fTEVGVF9UT19SSUdIVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRf
RElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX09QRU5f
TUVESUFfSU5fTkVXX1dJTkRPVywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlf
TUVESUFfTElOS19UT19DTElQQk9BUkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19U
T0dHTEVfTUVESUFfQ09OVFJPTFMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dH
TEVfTUVESUFfTE9PUCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0VOVEVSX1ZJREVP
X0ZVTExTQ1JFRU4sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19NRURJQV9QTEFZX1BB
VVNFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTUVESUFfTVVURSwKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fQkFTRV9DVVNUT01fVEFHID0gNTAwMCwKKyAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fQ1VTVE9NX1RBR19OT19BQ1RJT04gPSA1OTk4LAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9MQVNUX0NVU1RPTV9UQUcgPSA1OTk5LAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9CQVNFX0FQUExJQ0FUSU9OX1RBRyA9IDEwMDAwCit9IEV3a19Db250ZXh0X01lbnVfSXRl
bV9BY3Rpb247CisKKy8qKgorICogR2V0cyB0eXBlIG9mIHRoZSBpdGVtLgorICoKKyAqIEBwYXJh
bSBvIHRoZSBpdGVtIHRvIGdldCB0aGUgdHlwZQorICogQHJldHVybiB0eXBlIG9mIHRoZSBpdGVt
IG9uIHN1Y2Nlc3Mgb3IgQGMgRVdLX0FDVElPTl9UWVBFIG9uIGZhaWx1cmUKKyAqCisgKiBAc2Vl
IGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX3NldAorICovCitFQVBJIEV3a19Db250ZXh0X01l
bnVfSXRlbV9UeXBlIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfQ29u
dGV4dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNldHMgdGhlIHR5cGUgb2YgaXRlbS4KKyAq
CisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBzZXQgdGhlIHR5cGUKKyAqIEBwYXJhbSB0eXBlIGEg
bmV3IHR5cGUgZm9yIHRoZSBpdGVtIG9iamVjdAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24g
c3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29u
dGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRf
bWVudV9pdGVtX3R5cGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgRXdrX0NvbnRleHRf
TWVudV9JdGVtX1R5cGUgdHlwZSk7CisKKy8qKgorICogR2V0cyBhbiBhY3Rpb24gb2YgdGhlIGl0
ZW0uCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gZ2V0IHRoZSBhY3Rpb24KKyAqIEByZXR1
cm4gYW4gYWN0aW9uIG9mIHRoZSBpdGVtIG9uIHN1Y2Nlc3Mgb3IgQGMgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19OT19BQ1RJT04gb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRf
bWVudV9pdGVtX2FjdGlvbl9zZXQKKyAqLworRUFQSSBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0
aW9uIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGNvbnN0IEV3a19Db250ZXh0X01l
bnVfSXRlbSAqbyk7CisKKy8qKgorICogU2V0cyBhbiBhY3Rpb24gb2YgdGhlIGl0ZW0uCisgKgor
ICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gc2V0IHRoZSBhY3Rpb24KKyAqIEBwYXJhbSBhY3Rpb24g
YSBuZXcgYWN0aW9uIGZvciB0aGUgaXRlbSBvYmplY3QKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdr
X2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2Nv
bnRleHRfbWVudV9pdGVtX2FjdGlvbl9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFd2tf
Q29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbik7CisKKy8qKgorICogR2V0cyBhIHRpdGxl
IG9mIHRoZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGdldCB0aGUgdGl0bGUK
KyAqIEByZXR1cm4gYSB0aXRsZSBvZiB0aGUgaXRlbSBvbiBzdWNjZXNzLCBvciBAYyBOVUxMIG9u
IGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9zZXQKKyAq
LworRUFQSSBjb25zdCBjaGFyICpld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGNvbnN0
IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbyk7CisKKy8qKgorICogU2V0cyBhIHRpdGxlIG9mIHRo
ZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIHNldCB0aGUgdGl0bGUKKyAqIEBw
YXJhbSB0aXRsZSBhIG5ldyB0aXRsZSBmb3IgdGhlIGl0ZW0gb2JqZWN0CisgKiBAcmV0dXJuIGEg
bmV3IHRpdGxlIG9mIHRoZSBpdGVtIG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisg
KgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0CisgKi8KK0VBUEkgY29u
c3QgY2hhciAqZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldChFd2tfQ29udGV4dF9NZW51
X0l0ZW0gKm8sIGNvbnN0IGNoYXIgKnRpdGxlKTsKKworLyoqCisgKiBRdWVyaWVzIGlmIHRoZSBp
dGVtIGlzIHRvZ2dsZWQuCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gcXVlcnkgaWYgdGhl
IGl0ZW0gaXMgdG9nZ2xlZAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGl0ZW0gaXMg
dG9nZ2xlZCBvciBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCisgKi8KK0VBUEkg
RWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldChjb25zdCBFd2tfQ29u
dGV4dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNldHMgaWYgdGhlIGl0ZW0gc2hvdWxkIGJl
IHRvZ2dsZWQuCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gYmUgdG9nZ2xlZAorICogQHBh
cmFtIGNoZWNrZWQgQGMgRUlOQV9UUlVFIGlmIHRoZSBpdGVtIHNob3VsZCBiZSB0b2dnbGVkIG9y
IEBjIEVJTkFfRkFMU0UgaWYgbm90CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
IG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29u
dGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFaW5h
X0Jvb2wgY2hlY2tlZCk7CisKKy8qKgorICogR2V0cyBpZiB0aGUgaXRlbSBpcyBlbmFibGVkLgor
ICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGdldCBlbmFibGVkIHN0YXRlCisgKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBpZiBpdCdzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9u
IGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldAor
ICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQoY29u
c3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpvKTsKKworLyoqCisgKiBFbmFibGVzL2Rpc2FibGVz
IHRoZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGVuYWJsZS9kaXNhYmxlCisg
KiBAcGFyYW0gZW5hYmxlZCBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBpdGVtIG9yIEBjIEVJ
TkFfRkFMU0UgdG8gZGlzYWJsZQorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywg
b3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51
X2l0ZW1fZW5hYmxlZF9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9p
dGVtX2VuYWJsZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgRWluYV9Cb29sIGVuYWJs
ZWQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogZXdrX2Nv
bnRleHRfbWVudV9pdGVtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjllYTdmNzI5MDE3ZDE2NTI4OTczM2EyYjEwZWQ3MmQ5M2QwMzM4ZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9t
ZW51X2l0ZW1fcHJpdmF0ZS5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZV9oCisj
ZGVmaW5lIGV3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlX2gKKworI2luY2x1ZGUgIldLRWlu
YVNoYXJlZFN0cmluZy5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKKyNp
bmNsdWRlICJld2tfY29udGV4dF9tZW51LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9p
dGVtLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworLyoqCisgKiBcc3RydWN0ICBF
d2tfQ29udGV4dF9NZW51X0l0ZW0KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBjb250ZXh0IG1l
bnUgaXRlbSBkYXRhLgorICovCitjbGFzcyBFd2tfQ29udGV4dF9NZW51X0l0ZW0geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEV3a19Db250ZXh0X01lbnVfSXRlbT4gY3JlYXRlKGNv
bnN0IFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgRXdrX0NvbnRleHRfTWVudV9JdGVtKGl0ZW0pKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxFd2tfQ29udGV4dF9NZW51X0l0ZW0+IGNyZWF0ZShF
d2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0
aW9uIGFjdGlvbiwgRXdrX0NvbnRleHRfTWVudSogcGFyZW50TWVudSwgRXdrX0NvbnRleHRfTWVu
dSogc3ViTWVudSwgY29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jv
b2wgZW5hYmxlZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXdrX0NvbnRl
eHRfTWVudV9JdGVtKHR5cGUsIGFjdGlvbiwgcGFyZW50TWVudSwgc3ViTWVudSwgdGl0bGUsIGNo
ZWNrZWQsIGVuYWJsZWQpKTsKKyAgICB9CisKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0
aW9uIGFjdGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0QWN0aW9uKEV3a19Db250ZXh0X01lbnVf
SXRlbV9BY3Rpb24pOworCisgICAgY29uc3QgY2hhciogdGl0bGUoKSBjb25zdDsKKyAgICB2b2lk
IHNldFRpdGxlKGNvbnN0IGNoYXIqKTsKKworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBl
IHR5cGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFR5cGUoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5
cGUpOworCisgICAgYm9vbCBjaGVja2VkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGVja2VkKGJv
b2wpOworCisgICAgYm9vbCBlbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRFbmFibGVkKGJv
b2wpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEV3a19Db250ZXh0X01lbnVfSXRlbShjb25z
dCBXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGEmKTsKKyAgICBFd2tfQ29udGV4dF9NZW51
X0l0ZW0oRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9J
dGVtX0FjdGlvbiBhY3Rpb24sIEV3a19Db250ZXh0X01lbnUqIHBhcmVudE1lbnUsIEV3a19Db250
ZXh0X01lbnUqIHN1Yk1lbnUsIGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwg
RWluYV9Cb29sIGVuYWJsZWQpOworCisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgbV90
eXBlOworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gbV9hY3Rpb247CisKKyAgICBX
S0VpbmFTaGFyZWRTdHJpbmcgbV90aXRsZTsKKworICAgIEV3a19Db250ZXh0X01lbnUqIG1fcGFy
ZW50TWVudTsKKyAgICBFd2tfQ29udGV4dF9NZW51KiBtX3N1Yk1lbnU7CisgICAgCisgICAgYm9v
bCBtX2lzQ2hlY2tlZDsKKyAgICBib29sIG1faXNFbmFibGVkOworfTsKKworI2VuZGlmIC8vIGV3
a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGFjODdkN2I3YzkyNTAxNTgxNWNlMzljMGYyMmMwYjYyNTEwMTJlNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21l
bnVfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9tZW51X3ByaXZhdGVfaAorI2RlZmluZSBld2tf
Y29udGV4dF9tZW51X3ByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0
YS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorI2luY2x1ZGUgPEVpbmEu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOworY2xh
c3MgV2ViQ29udGV4dE1lbnVQcm94eUVmbDsKK30KKworY2xhc3MgRXdrVmlld0ltcGw7CisKK2Ns
YXNzIEV3a19Db250ZXh0X01lbnUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEV3
a19Db250ZXh0X01lbnU+IGNyZWF0ZShFd2tWaWV3SW1wbCogdmlld0ltcGwsIFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVQcm94eUVmbCogY29udGV4dE1lbnVQcm94eSwgY29uc3QgVmVjdG9yPFdlYktp
dDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBFd2tfQ29udGV4dF9NZW51KHZpZXdJbXBsLCBjb250ZXh0TWVudVByb3h5
LCBpdGVtcykpOworICAgIH0KKyAgICB+RXdrX0NvbnRleHRfTWVudSgpOworCisgICAgdm9pZCBo
aWRlKCk7CisgICAgdm9pZCBhcHBlbmRJdGVtKEV3a19Db250ZXh0X01lbnVfSXRlbSopOworCisg
ICAgY29uc3QgRWluYV9MaXN0KiBpdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dE1lbnVJ
dGVtczsgfQorICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKTsKKworcHJpdmF0ZToKKyAgICBFd2tfQ29udGV4
dF9NZW51KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5
RWZsKiwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1z
KTsKKworICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOworICAgIFdlYktpdDo6V2ViQ29udGV4
dE1lbnVQcm94eUVmbCogbV9jb250ZXh0TWVudVByb3h5OworICAgIEVpbmFfTGlzdCogbV9jb250
ZXh0TWVudUl0ZW1zOworfTsKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X21lbnVfcHJpdmF0ZV9o
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDhh
Mzk0NmVmOWI1NzI1YzA5NGU1YTdhMGM4ZGVkMzhkNzEyYjFhYzkuLjQ1MzNkNWQ0YzcwYjg1YWYy
YmY5NTQzOTFmNDNiZjI2MDcwMmI3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaApAQCAtODQsNiArODQsNyBAQAogI2luY2x1ZGUgImV3a19iYWNrX2Zv
cndhcmRfbGlzdC5oIgogI2luY2x1ZGUgImV3a19jb2xvcl9waWNrZXIuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dC5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnUuaCIKICNpbmNsdWRlICJl
d2tfZG93bmxvYWRfam9iLmgiCiAjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdr
X2ludGVudC5oIgpAQCAtMTE0LDYgKzExNSw5IEBAIHN0cnVjdCBFd2tfVmlld19TbWFydF9DbGFz
cyB7CiAgICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVl
IHRvIGJlIGNoYW5nZWQuICovCiAgICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOwogCisgICAgRWlu
YV9Cb29sICgqY29udGV4dF9tZW51X3Nob3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFz
X0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXdrX0NvbnRleHRfTWVudSAqbWVudSk7CisgICAgRWlu
YV9Cb29sICgqY29udGV4dF9tZW51X2hpZGUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKKwog
ICAgIEVpbmFfQm9vbCAoKnBvcHVwX21lbnVfc2hvdykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qs
IEVpbmFfUmVjdGFuZ2xlIHJlY3QsIEV3a19UZXh0X0RpcmVjdGlvbiB0ZXh0X2RpcmVjdGlvbiwg
ZG91YmxlIHBhZ2Vfc2NhbGVfZmFjdG9yLCBFd2tfUG9wdXBfTWVudSAqbWVudSk7CiAgICAgRWlu
YV9Cb29sICgqcG9wdXBfbWVudV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CiAKQEAg
LTE2OSw3ICsxNzMsNyBAQCBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBF
V0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFS
VF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklU
KHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFT
U19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAvKioKICAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3
aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dF9tZW51LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250
ZXh0X21lbnUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMjY5ZWY3Y2JjN2VlYTM2N2I1ZmRhNTllMWY2ZTAy
MzgyMTViY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dF9tZW51LmNwcApAQCAtMCwwICsxLDgzIEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
IFNlZSB0aGUgR05VCisgICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgICAg
SW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBV
U0EKKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMv
RVdLMlVuaXRUZXN0QmFzZS5oIgorI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0
RW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlIDxFV2ViS2l0Mi5oPgorI2luY2x1ZGUgPEVjb3JlLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK2V4dGVybiBFV0syVW5pdFRlc3RF
bnZpcm9ubWVudCogZW52aXJvbm1lbnQ7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjaGVja0Jhc2lj
Q29udGV4dE1lbnVJdGVtKEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgRXdrX0NvbnRleHRf
TWVudV9JdGVtX1R5cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24s
IGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQp
Cit7CisgICAgRVhQRUNUX0VRKHR5cGUsIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChp
dGVtKSk7CisgICAgRVhQRUNUX0VRKGFjdGlvbiwgZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlv
bl9nZXQoaXRlbSkpOworICAgIEVYUEVDVF9TVFJFUSh0aXRsZSwgZXdrX2NvbnRleHRfbWVudV9p
dGVtX3RpdGxlX2dldChpdGVtKSk7CisgICAgRVhQRUNUX0VRKGNoZWNrZWQsIGV3a19jb250ZXh0
X21lbnVfaXRlbV9jaGVja2VkX2dldChpdGVtKSk7CisgICAgRVhQRUNUX0VRKGVuYWJsZWQsIGV3
a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dldChpdGVtKSk7Cit9CisKK3N0YXRpYyBFaW5h
X0Jvb2wgc2hvd0NvbnRleHRNZW51KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgRXZh
c19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV3a19Db250ZXh0X01lbnUqIGNvbnRleHRNZW51KQor
eworICAgIGNvbnN0IEVpbmFfTGlzdCogbGlzdCA9IGV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0
KGNvbnRleHRNZW51KTsKKyAgICBFWFBFQ1RfRVEoNCwgZWluYV9saXN0X2NvdW50KGxpc3QpKTsK
KworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSA9IHN0YXRpY19jYXN0PEV3a19Db250
ZXh0X01lbnVfSXRlbSo+KGVpbmFfbGlzdF9udGgobGlzdCwgMCkpOworICAgIGNoZWNrQmFzaWND
b250ZXh0TWVudUl0ZW0oaXRlbSwgRVdLX0FDVElPTl9UWVBFLCBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0dPX0JBQ0ssICJHbyBCYWNrIiwgZmFsc2UsIHRydWUpOworCisgICAgaXRlbSA9IHN0
YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGVpbmFfbGlzdF9udGgobGlzdCwgMSkp
OworICAgIGNoZWNrQmFzaWNDb250ZXh0TWVudUl0ZW0oaXRlbSwgRVdLX0FDVElPTl9UWVBFLCBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZPUldBUkQsICJHbyBGb3J3YXJkIiwgZmFsc2Us
IHRydWUpOworICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldChpdGVtLCBmYWxz
ZSk7CisgICAgRVhQRUNUX0ZBTFNFKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dldChp
dGVtKSk7CisKKyAgICBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4o
ZWluYV9saXN0X250aChsaXN0LCAyKSk7CisgICAgY2hlY2tCYXNpY0NvbnRleHRNZW51SXRlbShp
dGVtLCBFV0tfQUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RPUCwgIlN0
b3AiLCBmYWxzZSwgdHJ1ZSk7CisgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfc2V0
KGl0ZW0sIHRydWUpOworICAgIEVYUEVDVF9UUlVFKGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVj
a2VkX2dldChpdGVtKSk7CisKKyAgICBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVu
dV9JdGVtKj4oZWluYV9saXN0X250aChsaXN0LCAzKSk7CisgICAgY2hlY2tCYXNpY0NvbnRleHRN
ZW51SXRlbShpdGVtLCBFV0tfQUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
UkVMT0FELCAiUmVsb2FkIiwgZmFsc2UsIHRydWUpOworICAgIGV3a19jb250ZXh0X21lbnVfaXRl
bV90aXRsZV9zZXQoaXRlbSwgIlJlZnJlc2giKTsKKyAgICBFWFBFQ1RfU1RSRVEoIlJlZnJlc2gi
LCBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGl0ZW0pKTsKKworICAgIEV3a19Db250
ZXh0X01lbnVfSXRlbSogbmV3SXRlbSA9IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRVdLX0FD
VElPTl9UWVBFLCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09USEVSLCBjb250ZXh0TWVudSwg
MCwgIk5ldyBDdXN0b20gSXRlbSIsIGZhbHNlLCB0cnVlKTsKKyAgICBsaXN0ID0gZXdrX2NvbnRl
eHRfbWVudV9pdGVtc19nZXQoY29udGV4dE1lbnUpOworICAgIEVYUEVDVF9FUSg1LCBlaW5hX2xp
c3RfY291bnQobGlzdCkpOworCisgICAgRVhQRUNUX1RSVUUoZXdrX2NvbnRleHRfbWVudV9pdGVt
X3NlbGVjdChjb250ZXh0TWVudSwgaXRlbSkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1RF
U1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KQorewor
ICAgIGNvbnN0IGNoYXIqIGl0ZW1TZWxlY3RIVE1MID0KKyAgICAgICAgIjxodG1sPiIKKyAgICAg
ICAgIjxib2R5PjxhIGhyZWY9aHR0cDovL3d3dy5nb29nbGUuY29tPlRlc3QgTGluazwvYT48L2Jv
ZHk+IgorICAgICAgICAiPC9ib2R5PjwvaHRtbD4iOyAKKworICAgIGV3a1ZpZXdDbGFzcygpLT5j
b250ZXh0X21lbnVfc2hvdyA9IHNob3dDb250ZXh0TWVudTsKKworICAgIGV3a192aWV3X2h0bWxf
c3RyaW5nX2xvYWQod2ViVmlldygpLCBpdGVtU2VsZWN0SFRNTCwgImZpbGU6Ly8vIiwgMCk7Cisg
ICAgbW91c2VDbGljaygyMCwgMzAsIC8qUmlnaHQqLyAzKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0
VW50aWxMb2FkRmluaXNoZWQoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhODYwMjhlMGRk
NjQzMDcxNjI3MzFmMTdmMzVlMmYzZmE2ODUxZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcApAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJDb250ZXh0TWVudUNsaWVudEVmbC5oIgorCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIK
KyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKKyNpbmNs
dWRlICJXS1BhZ2UuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIgICAKKyNpbmNs
dWRlIDxFdmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRpYyBpbmxpbmUg
Q29udGV4dE1lbnVDbGllbnRFZmwqIHRvQ29udGV4dENsaWVudEVmbChjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUNsaWVudEVmbCo+
KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKK30KKworQ29udGV4dE1lbnVDbGllbnRF
Zmw6OkNvbnRleHRNZW51Q2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICA6IG1f
dmlld0ltcGwodmlld0ltcGwpCit7CisgICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBtX3ZpZXdJbXBs
LT53a1BhZ2UoKTsKKyAgICBBU1NFUlQocGFnZVJlZik7CisKKyAgICBXS1BhZ2VDb250ZXh0TWVu
dUNsaWVudCBjb250ZXh0TWVudUNsaWVudDsKKyAgICBtZW1zZXQoJmNvbnRleHRNZW51Q2xpZW50
LCAwLCBzaXplb2YoV0tQYWdlQ29udGV4dE1lbnVDbGllbnQpKTsKKyAgICBjb250ZXh0TWVudUNs
aWVudC52ZXJzaW9uID0ga1dLUGFnZUNvbnRleHRNZW51Q2xpZW50Q3VycmVudFZlcnNpb247Cisg
ICAgY29udGV4dE1lbnVDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgY29udGV4dE1lbnVD
bGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjAgPSAwOworICAgIGNvbnRleHRNZW51Q2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVj
dGVkID0gMDsKKyAgICBjb250ZXh0TWVudUNsaWVudC5jb250ZXh0TWVudURpc21pc3NlZCA9IDA7
CisgICAgY29udGV4dE1lbnVDbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51ID0g
MDsKKworICAgIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChwYWdlUmVmLCAmY29udGV4
dE1lbnVDbGllbnQpOworfQorCit2b2lkIENvbnRleHRNZW51Q2xpZW50RWZsOjpnZXRDb250ZXh0
TWVudUZyb21Qcm9wb3NlZE1lbnUoV0tQYWdlUmVmLCBXS0FycmF5UmVmLCBXS0FycmF5UmVmKiwg
V0tIaXRUZXN0UmVzdWx0UmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L0NvbnRleHRNZW51Q2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Nv
bnRleHRNZW51Q2xpZW50RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI5ZTRlZDNjZWNjYmQzMzdkODg3YzVi
NTQ1NDUwMWRmNzViMWFjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuaApAQCAtMCwwICsxLDU3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQ29udGV4dE1lbnVDbGllbnRFZmxfaAorI2RlZmluZSBD
b250ZXh0TWVudUNsaWVudEVmbF9oCisKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1
ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK2NsYXNzIEV3a1ZpZXdJbXBsOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgQ29udGV4dE1lbnVDbGllbnRFZmwgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzT3duUHRyPENvbnRleHRNZW51Q2xpZW50RWZsPiBjcmVhdGUoRXdrVmlld0ltcGwq
IHZpZXdJbXBsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZXh0TWVu
dUNsaWVudEVmbCh2aWV3SW1wbCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGdldENvbnRl
eHRNZW51RnJvbVByb3Bvc2VkTWVudShXS1BhZ2VSZWYsIFdLQXJyYXlSZWYgcHJvcG9zZWRNZW51
LCBXS0FycmF5UmVmKiBuZXdNZW51LCBXS0hpdFRlc3RSZXN1bHRSZWYsIFdLVHlwZVJlZiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
Q29udGV4dE1lbnVDbGllbnRFZmwoRXdrVmlld0ltcGwqKTsKKworICAgIEV3a1ZpZXdJbXBsKiBt
X3ZpZXdJbXBsOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBDb250
ZXh0TWVudUNsaWVudEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VDbGllbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFn
ZUNsaWVudEJhc2UuY3BwCmluZGV4IGJiNTczY2ZiZWQxNmQzMzVlNGQ3MGFhNTRjZmUzMzA0MGJi
NzliZTkuLjRlYTcyNDFhYWI1NTk1ODQ1ZjRkZjcwZTg0YzliYzAzZTlmNTM2OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3BwCkBAIC0zNSw3
ICszNSw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNvbnRleHRN
ZW51UHJveHkuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5RWZsLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUG9wdXBNZW51UHJveHlFZmwuaCIKQEAgLTIxOSwxMCArMjE5LDkgQEAgUGFzc1JlZlB0cjxX
ZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEJhc2U6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdl
YlBhZ2VQcm94eSoKICAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlFZmw6OmNyZWF0ZShtX3Zp
ZXdJbXBsLCBwYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdl
Q2xpZW50QmFzZTo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQorUGFzc1Jl
ZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50QmFzZTo6Y3JlYXRlQ29udGV4dE1l
bnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y3JlYXRlKG1f
dmlld0ltcGwsIHBhZ2UpOwogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlF
ZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5
RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lYzdlMGViODE2MzMzNTNjMTYzM2QwY2VmYjU5ZWQ1N2Y1MmM0
NWIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJD
b250ZXh0TWVudVByb3h5RWZsLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIgorCisjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCisKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIldlYkNv
bnRleHRNZW51SXRlbURhdGEuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6V2ViQ29udGV4dE1lbnVQ
cm94eUVmbChFd2tWaWV3SW1wbCogdmlld0ltcGwsIFdlYlBhZ2VQcm94eSogcGFnZSkKKyAgICA6
IG1fdmlld0ltcGwodmlld0ltcGwpCisgICAgLCBtX3BhZ2UocGFnZSkKK3sKK30KKworV2ViQ29u
dGV4dE1lbnVQcm94eUVmbDo6fldlYkNvbnRleHRNZW51UHJveHlFZmwoKQoreworfQorCit2b2lk
IFdlYkNvbnRleHRNZW51UHJveHlFZmw6OnNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYg
aXRlbXMpCit7CisgICAgbV92aWV3SW1wbC0+c2hvd0NvbnRleHRNZW51KHRoaXMsIHBvc2l0aW9u
LCBpdGVtcyk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6aGlkZUNvbnRleHRN
ZW51KCkKK3sKKyAgICBtX3ZpZXdJbXBsLT5oaWRlQ29udGV4dE1lbnUoKTsKK30KKwordm9pZCBX
ZWJDb250ZXh0TWVudVByb3h5RWZsOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJD
b250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQoreworICAgIG1fcGFnZS0+Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQoaXRlbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ZmVkZDc2YmVhN2Yw
OWRlNDM0NWQ0MDIxNDQ3ZWFlYWM2MjYzNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaApAQCAtMCwwICsxLDY2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYkNvbnRleHRNZW51UHJveHlFZmxfaAorI2RlZmluZSBXZWJDb250ZXh0
TWVudVByb3h5RWZsX2gKKworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorCisjaW5jbHVkZSAi
V2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CisKK2NsYXNzIEV3a1ZpZXdJbXBsOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKK2NsYXNz
IFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eUVmbCA6IHB1YmxpYyBX
ZWJDb250ZXh0TWVudVByb3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJD
b250ZXh0TWVudVByb3h5RWZsPiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsLCBXZWJQYWdl
UHJveHkqIHBhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRl
eHRNZW51UHJveHlFZmwodmlld0ltcGwsIHBhZ2UpKTsKKyAgICB9CisgICAgfldlYkNvbnRleHRN
ZW51UHJveHlFZmwoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4m
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZUNvbnRleHRNZW51KCk7CisKKyAgICB2b2lkIGNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmKTsKKworcHJp
dmF0ZToKKyAgICBXZWJDb250ZXh0TWVudVByb3h5RWZsKEV3a1ZpZXdJbXBsKiwgV2ViUGFnZVBy
b3h5Kik7CisKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKKyAgICBXZWJQYWdlUHJveHkq
IG1fcGFnZTsKK307CisKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKKyNlbmRpZiAvLyBXZWJDb250ZXh0TWVudVByb3h5RWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174670</attachid>
            <date>2012-11-16 06:26:23 -0800</date>
            <delta_ts>2012-11-19 00:24:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96200-20121116232417.patch</filename>
            <type>text/plain</type>
            <size>71438</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZlOGRlMWVhMWJmZDBl
Mjc1OWVlMDRjYjYxMzc5MDYxNTdlZjVlNy4uZWVlMmM5NzU0NDE3MzYxNDYzNWMxODkyZjU0ZWQ0
NGNhNDE0Y2RmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTE1ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0sy
XSBTdXBwb3J0IENvbnRleHQgTWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICBFRkwg
cG9ydCBhbHNvIGRvZXNuJ3QgaGlkZSB1bmF2YWlsYWJsZSBtZW51cyBhcyBndGsgcG9ydC4KKwog
MjAxMi0xMS0xNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBD
cmFzaCBhdCBXZWJDb3JlOjpQbHVnaW5EYXRhOjpwbHVnaW5GaWxlRm9yTWltZVR5cGUgY29uc3Qg
KyAzOApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDQ2NGFlYzUxM2ViNjZlNzljMjM1ZjVkMTEzM2UxNTMxYTk5NjVi
ZmQuLmY5MTdmNWRkMjJkYTlkMWU2YTIwNWQ2NDA1ZGNjYzk2Y2IxNTgxZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw5NCBAQAorMjAxMi0xMS0xNiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2lt
QHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gU3VwcG9ydCBDb250ZXh0IE1lbnUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MjAwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBzdXBwb3J0cyBXSzIgRUZMJ3MgY29udGV4dCBtZW51IGFzIFdLMSBpbXBsZW1lbnRhdGlvbiBi
ZWNhdXNlIHdlIGNhbid0IHVzZSBlbGVtZW50YXJ5IGluIGluc2lkZSBXZWJLaXQuCisgICAgICAg
IE9ubHkgYmFzaWMgZnVuY3Rpb25hbGl0aWVzIG9mIGNvbnRleHQgbWVudSBhcmUgc3VwcG9ydHRl
ZC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL0VXZWJLaXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0lt
cGwuY3BwOgorICAgICAgICAoRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKToKKyAgICAgICAgKEV3
a1ZpZXdJbXBsOjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmhpZGVD
b250ZXh0TWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChFd2tWaWV3SW1wbCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudS5jcHA6IEFkZGVkLgorICAgICAgICAoRXdr
Q29udGV4dE1lbnU6OkV3a0NvbnRleHRNZW51KToKKyAgICAgICAgKEV3a0NvbnRleHRNZW51Ojp+
RXdrQ29udGV4dE1lbnUpOgorICAgICAgICAoRXdrQ29udGV4dE1lbnU6OmhpZGUpOgorICAgICAg
ICAoRXdrQ29udGV4dE1lbnU6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKGV3
a19jb250ZXh0X21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVt
X2ZyZWUpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9oaWRlKToKKyAgICAgICAgKGV3a19j
b250ZXh0X21lbnVfaXRlbXNfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9z
ZWxlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVt
LmNwcDogQWRkZWQuCisgICAgICAgIChFd2tDb250ZXh0TWVudUl0ZW06OkV3a0NvbnRleHRNZW51
SXRlbSk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQpOgorICAgICAg
ICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0
X21lbnVfaXRlbV9hY3Rpb25fZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9h
Y3Rpb25fc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQpOgor
ICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldCk6CisgICAgICAgIChld2tf
Y29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVu
dV9pdGVtX2NoZWNrZWRfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFi
bGVkX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJp
dmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKEV3a0NvbnRleHRNZW51SXRlbSk6CisgICAgICAgIChF
d2tDb250ZXh0TWVudUl0ZW06OmNyZWF0ZSk6CisgICAgICAgIChFd2tDb250ZXh0TWVudUl0ZW06
OmFjdGlvbik6CisgICAgICAgIChFd2tDb250ZXh0TWVudUl0ZW06OnNldEFjdGlvbik6CisgICAg
ICAgIChFd2tDb250ZXh0TWVudUl0ZW06OnRpdGxlKToKKyAgICAgICAgKEV3a0NvbnRleHRNZW51
SXRlbTo6c2V0VGl0bGUpOgorICAgICAgICAoRXdrQ29udGV4dE1lbnVJdGVtOjp0eXBlKToKKyAg
ICAgICAgKEV3a0NvbnRleHRNZW51SXRlbTo6c2V0VHlwZSk6CisgICAgICAgIChFd2tDb250ZXh0
TWVudUl0ZW06OmNoZWNrZWQpOgorICAgICAgICAoRXdrQ29udGV4dE1lbnVJdGVtOjpzZXRDaGVj
a2VkKToKKyAgICAgICAgKEV3a0NvbnRleHRNZW51SXRlbTo6ZW5hYmxlZCk6CisgICAgICAgIChF
d2tDb250ZXh0TWVudUl0ZW06OnNldEVuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChFd2tDb250ZXh0TWVudSk6CisgICAgICAgIChFd2tDb250ZXh0TWVudTo6Y3Jl
YXRlKToKKyAgICAgICAgKEV3a0NvbnRleHRNZW51OjppdGVtcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX29iamVjdF9wcml2YXRlLmg6IEVXS19PQkpfR0VUX0lNUEwoKSBtYWNy
byBpcyBhZGRlZCBmb3Igbm90IHJldHVybmluZyBjYXNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVz
dF9ld2syX2NvbnRleHRfbWVudS5jcHA6IEFkZGVkLgorICAgICAgICAoY2hlY2tCYXNpY0NvbnRl
eHRNZW51SXRlbSk6CisgICAgICAgIChzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
VGlsZTo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVD
bGllbnRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRvQ29udGV4dENsaWVudEVmbCk6CisgICAg
ICAgIChDb250ZXh0TWVudUNsaWVudEVmbDo6Q29udGV4dE1lbnVDbGllbnRFZmwpOgorICAgICAg
ICAoQ29udGV4dE1lbnVDbGllbnRFZmw6OmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSk6
CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChDb250ZXh0TWVudUNsaWVudEVmbCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50RWZsOjpjcmVhdGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50QmFzZTo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZsOjpXZWJDb250ZXh0TWVudVBy
b3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6fldlYkNv
bnRleHRNZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5
RWZsOjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVBy
b3h5RWZsOjpoaWRlQ29udGV4dE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dVByb3h5RWZsOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYkNvbnRleHRNZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5RWZsOjpjcmVhdGUpOgorCiAyMDEyLTExLTE1ICBIdWFuZyBEb25nc3Vu
ZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBo
aWNzOiBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGlyZWN0bHkgY29tcG9zaXRlZCBpbWFnZXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXgg
Nzk3OTcxZDBmNTZjOTUyNGUwMjQ0OGNmZGRjNGI5ZTVlZGZhMTY5ZC4uNTY0MGRjNzY5N2U4MjM2
Mzc2YzY1MzExMmZjMWI4MzAwZjRhOTYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtODc2LDggKzg3Niw4IEBAIHZvaWQgQ29udGV4dE1l
bnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBh
Z2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmhhc0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KCkpKSB7CiAjZW5kaWYKIAotICAgICAgICAgICAgICAgIC8vIEluIEdU
SysgdW5hdmFpbGFibGUgaXRlbXMgYXJlIG5vdCBoaWRkZW4gYnV0IGluc2Vuc2l0aXZlCi0jaWYg
UExBVEZPUk0oR1RLKQorICAgICAgICAgICAgICAgIC8vIEluIEdUSysgYW5kIEVGTCwgdW5hdmFp
bGFibGUgaXRlbXMgYXJlIG5vdCBoaWRkZW4gYnV0IGluc2Vuc2l0aXZlLgorI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oQmFja0l0
ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oRm9y
d2FyZEl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGFwcGVuZEl0
ZW0oU3RvcEl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQppbmRleCBiYjg3NDdiMWNiMWY1ODM4YzJkZDdjY2RkZjc4MjkxMWVhNjdjMWU1Li40NDY3MjA5
NTc3ZTJjMWRiYzZhNWUxNDlhZTQ0NTY4YWIzZjg4MTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQpAQCAtNDksNiArNDksOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUu
Y3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZG93bmxvYWRfam9iLmNwcApAQCAtNzgsNiArODAsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQy
X1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9lZmwvQmF0dGVyeVByb3ZpZGVyLmNwcAogICAgIFVJ
UHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuY3BwCisgICAgVUlQcm9jZXNzL2Vm
bC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFu
YWdlckVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuY3BwCiAgICAgVUlQ
cm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcApAQCAtOTUsNiArOTgsNyBAQCBMSVNUKEFQUEVO
RCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcAog
ICAgIFVJUHJvY2Vzcy9lZmwvVmlicmF0aW9uQ2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9l
ZmwvV2ViQ29udGV4dEVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJv
eHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZs
LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCiAgICAgVUlQ
cm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC0yNTQsNiArMjU4LDggQEAgU0VUIChF
V2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5oIgogICAgICIke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHQuaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X21lbnUuaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5oIgogICAgICIke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2Vy
LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZGF0YWJhc2VfbWFuYWdlci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5oIgpAQCAtMzYyLDYgKzM2OCw3IEBA
IFNFVChFV0syVW5pdFRlc3RzX0JJTkFSSUVTCiAgICAgdGVzdF9ld2syX2NvbG9yX3BpY2tlcgog
ICAgIHRlc3RfZXdrMl9jb250ZXh0CiAgICAgdGVzdF9ld2syX2NvbnRleHRfaGlzdG9yeV9jYWxs
YmFja3MKKyAgICB0ZXN0X2V3azJfY29udGV4dF9tZW51CiAgICAgdGVzdF9ld2syX2Nvb2tpZV9t
YW5hZ2VyCiAgICAgdGVzdF9ld2syX2RhdGFiYXNlX21hbmFnZXIKICAgICB0ZXN0X2V3azJfZG93
bmxvYWRfam9iCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
V2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApp
bmRleCAwN2NhMTI5MzUwZjRlZGI3ZTNkYjRiZjkyYWQ3MGI4YzNhMjA5Y2U0Li4yMmQ2MTY4MjVl
MWNkNTE4ODk1YjJlN2RjN2VjNWI4MzIzMjI1OTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJld2tf
YmFja19mb3J3YXJkX2xpc3RfaXRlbS5oIgogI2luY2x1ZGUgImV3a19jb2xvcl9waWNrZXIuaCIK
ICNpbmNsdWRlICJld2tfY29udGV4dC5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnUuaCIK
KyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0ZW0uaCIKICNpbmNsdWRlICJld2tfY29va2ll
X21hbmFnZXIuaCIKICNpbmNsdWRlICJld2tfZGF0YWJhc2VfbWFuYWdlci5oIgogI2luY2x1ZGUg
ImV3a19kb3dubG9hZF9qb2IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXdJbXBsLmNwcAppbmRleCBlYzNmMzI3ODIxOTM1ZjdlMGUzZjkwN2MwNzQ4OTNl
ZTRlYjQyYjAyLi5jMDNjMGJmMDgxY2RjZTQ4OGNkODJmNzk1ZjRlNTBjZGNkMjlkMzQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCkBA
IC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRXdrVmlld0lt
cGwuaCIKIAorI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiRWZs
U2NyZWVuVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRmluZENsaWVudEVmbC5oIgogI2luY2x1ZGUg
IkZvcm1DbGllbnRFZmwuaCIKQEAgLTQ1LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlcy5oIgogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCiAjaW5j
bHVkZSAiZXdrX2NvbG9yX3BpY2tlcl9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRf
bWVudV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a19mYXZpY29uX2RhdGFiYXNlX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBf
bWVudV9pdGVtX3ByaXZhdGUuaCIKQEAgLTExNCw2ICsxMTYsNyBAQCBFd2tWaWV3SW1wbDo6RXdr
Vmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrQ29udGV4dD4gY29udGV4
dCwgUGFzcwogICAgICwgbV9wYWdlUG9saWN5Q2xpZW50KFBhZ2VQb2xpY3lDbGllbnRFZmw6OmNy
ZWF0ZSh0aGlzKSkKICAgICAsIG1fcGFnZVVJQ2xpZW50KFBhZ2VVSUNsaWVudEVmbDo6Y3JlYXRl
KHRoaXMpKQogICAgICwgbV9yZXNvdXJjZUxvYWRDbGllbnQoUmVzb3VyY2VMb2FkQ2xpZW50RWZs
OjpjcmVhdGUodGhpcykpCisgICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KENvbnRleHRNZW51Q2xp
ZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2ZpbmRDbGllbnQoRmluZENsaWVudEVmbDo6
Y3JlYXRlKHRoaXMpKQogICAgICwgbV9mb3JtQ2xpZW50KEZvcm1DbGllbnRFZmw6OmNyZWF0ZSh0
aGlzKSkKICNpZiBFTkFCTEUoVklCUkFUSU9OKQpAQCAtNzEyLDYgKzcxNSwzOCBAQCB2b2lkIEV3
a1ZpZXdJbXBsOjppbmZvcm1Db250ZW50c1NpemVDaGFuZ2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RP
X0xFRlQsIFJUTCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19URVhUX0RJUkVD
VElPTl9MRUZUX1RPX1JJR0hULCBMVFIpOwogCit2b2lkIEV3a1ZpZXdJbXBsOjpzaG93Q29udGV4
dE1lbnUoV2ViQ29udGV4dE1lbnVQcm94eUVmbCogY29udGV4dE1lbnVQcm94eSwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVt
RGF0YT4mIGl0ZW1zKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRh
KCk7CisgICAgQVNTRVJUKHNkLT5hcGkpOworCisgICAgQVNTRVJUKGNvbnRleHRNZW51UHJveHkp
OworCisgICAgaWYgKCFzZC0+YXBpLT5jb250ZXh0X21lbnVfc2hvdykKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKG1fY29udGV4dE1lbnUpCisgICAgICAgIGhpZGVDb250ZXh0TWVudSgpOwor
CisgICAgbV9jb250ZXh0TWVudSA9IEV3a0NvbnRleHRNZW51OjpjcmVhdGUodGhpcywgY29udGV4
dE1lbnVQcm94eSwgaXRlbXMpOworCisgICAgc2QtPmFwaS0+Y29udGV4dF9tZW51X3Nob3coc2Qs
IHBvc2l0aW9uLngoKSwgcG9zaXRpb24ueSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKK30KKwor
dm9pZCBFd2tWaWV3SW1wbDo6aGlkZUNvbnRleHRNZW51KCkKK3sKKyAgICBpZiAoIW1fY29udGV4
dE1lbnUpCisgICAgICAgIHJldHVybjsKKworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0g
c21hcnREYXRhKCk7CisgICAgQVNTRVJUKHNkLT5hcGkpOworCisgICAgaWYgKHNkLT5hcGktPmNv
bnRleHRfbWVudV9oaWRlKQorICAgICAgICBzZC0+YXBpLT5jb250ZXh0X21lbnVfaGlkZShzZCk7
CisKKyAgICBtX2NvbnRleHRNZW51LmNsZWFyKCk7Cit9CisKIHZvaWQgRXdrVmlld0ltcGw6OnJl
cXVlc3RQb3B1cE1lbnUoV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5LCBjb25z
dCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdl
U2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBz
ZWxlY3RlZEluZGV4KQogewogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRh
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaApp
bmRleCA3MGE2NjIxMjIyMDhiYzdmNDg0ZjllODliNTMwODBkZWUwMTlhYzQyLi4zZGEzMGRkNzdh
NDA2YjEwNTZiZWRjZGI4MDlkMjFlYzQ0NmYyOGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKQEAgLTQ2LDYgKzQ2LDcgQEAKICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIENvbnRleHRNZW51Q2xpZW50RWZsOwogY2xhc3Mg
RmluZENsaWVudEVmbDsKIGNsYXNzIEZvcm1DbGllbnRFZmw7CiBjbGFzcyBJbnB1dE1ldGhvZENv
bnRleHRFZmw7CkBAIC01NCw2ICs1NSw4IEBAIGNsYXNzIFBhZ2VMb2FkQ2xpZW50RWZsOwogY2xh
c3MgUGFnZVBvbGljeUNsaWVudEVmbDsKIGNsYXNzIFBhZ2VVSUNsaWVudEVmbDsKIGNsYXNzIFJl
c291cmNlTG9hZENsaWVudEVmbDsKK2NsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CitjbGFz
cyBXZWJDb250ZXh0TWVudVByb3h5RWZsOwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2Vi
UGFnZVByb3h5OwogY2xhc3MgV2ViUG9wdXBJdGVtOwpAQCAtNzQsNiArNzcsNyBAQCBjbGFzcyBJ
bnRTaXplOwogY2xhc3MgRXdrQ29udGV4dDsKIGNsYXNzIEV3a19CYWNrX0ZvcndhcmRfTGlzdDsK
IGNsYXNzIEV3a19Db2xvcl9QaWNrZXI7CitjbGFzcyBFd2tDb250ZXh0TWVudTsKIGNsYXNzIEV3
a19Qb3B1cF9NZW51OwogY2xhc3MgRXdrX1NldHRpbmdzOwogCkBAIC0xNjEsNiArMTY1LDkgQEAg
cHVibGljOgogCiAgICAgdm9pZCByZXF1ZXN0UG9wdXBNZW51KFdlYktpdDo6V2ViUG9wdXBNZW51
UHJveHlFZmwqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlv
biwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJ
dGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CiAgICAgdm9pZCBjbG9zZVBvcHVw
TWVudSgpOworICAgIAorICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KFdlYktpdDo6V2ViQ29udGV4
dE1lbnVQcm94eUVmbCosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3Qg
VmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKTsKKyAgICB2b2lk
IGhpZGVDb250ZXh0TWVudSgpOwogCiAgICAgdm9pZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpOwog
CkBAIC0yMzIsNiArMjM5LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8V2ViS2l0OjpQYWdlUG9s
aWN5Q2xpZW50RWZsPiBtX3BhZ2VQb2xpY3lDbGllbnQ7CiAgICAgT3duUHRyPFdlYktpdDo6UGFn
ZVVJQ2xpZW50RWZsPiBtX3BhZ2VVSUNsaWVudDsKICAgICBPd25QdHI8V2ViS2l0OjpSZXNvdXJj
ZUxvYWRDbGllbnRFZmw+IG1fcmVzb3VyY2VMb2FkQ2xpZW50OworICAgIE93blB0cjxXZWJLaXQ6
OkNvbnRleHRNZW51Q2xpZW50RWZsPiBtX2NvbnRleHRNZW51Q2xpZW50OwogICAgIE93blB0cjxX
ZWJLaXQ6OkZpbmRDbGllbnRFZmw+IG1fZmluZENsaWVudDsKICAgICBPd25QdHI8V2ViS2l0OjpG
b3JtQ2xpZW50RWZsPiBtX2Zvcm1DbGllbnQ7CiAjaWYgRU5BQkxFKFZJQlJBVElPTikKQEAgLTI1
NCw2ICsyNjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV90b3VjaEV2ZW50c0VuYWJsZWQ7CiAj
ZW5kaWYKICAgICBXZWJDb3JlOjpUaW1lcjxFd2tWaWV3SW1wbD4gbV9kaXNwbGF5VGltZXI7Cisg
ICAgUmVmUHRyPEV3a0NvbnRleHRNZW51PiBtX2NvbnRleHRNZW51OwogICAgIE93blB0cjxFd2tf
UG9wdXBfTWVudT4gbV9wb3B1cE1lbnU7CiAgICAgT3duUHRyPFdlYktpdDo6SW5wdXRNZXRob2RD
b250ZXh0RWZsPiBtX2lucHV0TWV0aG9kQ29udGV4dDsKICAgICBPd25QdHI8RXdrX0NvbG9yX1Bp
Y2tlcj4gbV9jb2xvclBpY2tlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmM0ZDhhMmNiNGM2ZWY1
Y2JhZTQwMjg1ZDYzMjgwYjY0MDdiOGQ0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwCkBAIC0wLDAgKzEsMTEy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51LmgiCisKKyNpbmNsdWRlICJBUElPYmplY3Qu
aCIKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRl
bURhdGEuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5RWZsLmgiCisjaW5jbHVkZSAi
ZXdrX2NvbnRleHRfbWVudV9pdGVtX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9t
ZW51X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfb2JqZWN0LmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK0V3a0NvbnRleHRNZW51OjpFd2tDb250ZXh0TWVudShFd2tWaWV3SW1wbCog
dmlld0ltcGwsIFdlYkNvbnRleHRNZW51UHJveHlFZmwqIGNvbnRleHRNZW51UHJveHksIGNvbnN0
IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpCisgICAgOiBtX3ZpZXdJbXBs
KHZpZXdJbXBsKQorICAgICwgbV9jb250ZXh0TWVudVByb3h5KGNvbnRleHRNZW51UHJveHkpCisg
ICAgLCBtX2NvbnRleHRNZW51SXRlbXMoMCkKK3sKKyAgICBjb25zdCBzaXplX3Qgc2l6ZSA9IGl0
ZW1zLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICBSZWZQdHI8RXdrX0NvbnRleHRfTWVudV9JdGVtPiBpdGVtID0gRXdrQ29udGV4dE1lbnVJ
dGVtOjpjcmVhdGUoaXRlbXNbaV0pLmdldCgpOworICAgICAgICBtX2NvbnRleHRNZW51SXRlbXMg
PSBlaW5hX2xpc3RfYXBwZW5kKG1fY29udGV4dE1lbnVJdGVtcywgZXdrX29iamVjdF9yZWYoaXRl
bS5nZXQoKSkpOworICAgIH0KK30KKworRXdrQ29udGV4dE1lbnU6On5Fd2tDb250ZXh0TWVudSgp
Cit7CisgICAgdm9pZCogZGF0YTsKKyAgICBFSU5BX0xJU1RfRlJFRShtX2NvbnRleHRNZW51SXRl
bXMsIGRhdGEpCisgICAgICAgIGV3a19vYmplY3RfdW5yZWYoc3RhdGljX2Nhc3Q8RXdrX0NvbnRl
eHRfTWVudV9JdGVtKj4oZGF0YSkpOworfQorCit2b2lkIEV3a0NvbnRleHRNZW51OjpoaWRlKCkK
K3sKKyAgICBtX3ZpZXdJbXBsLT5oaWRlQ29udGV4dE1lbnUoKTsKK30KKwordm9pZCBFd2tDb250
ZXh0TWVudTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0
TWVudUl0ZW1EYXRhJiBpdGVtKQoreworICAgIG1fY29udGV4dE1lbnVQcm94eS0+Y29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQoaXRlbSk7IAorfSAKKworRXdrX0NvbnRleHRfTWVudV9JdGVtKiBld2tf
Y29udGV4dF9tZW51X2l0ZW1fbmV3KEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3
a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBFd2tfQ29udGV4dF9NZW51KiBwYXJl
bnRNZW51LCBFd2tfQ29udGV4dF9NZW51KiBzdWJNZW51LCBjb25zdCBjaGFyKiB0aXRsZSwgRWlu
YV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKQoreworICAgIEVXS19PQkpfR0VUX0lN
UEwoRXdrQ29udGV4dE1lbnUsIHBhcmVudE1lbnUsIGV3a1BhcmVudE1lbnUpOworICAgIEVXS19P
QkpfR0VUX0lNUEwoRXdrQ29udGV4dE1lbnUsIHN1Yk1lbnUsIGV3a1N1Yk1lbnUpOworCisgICAg
UmVmUHRyPEV3a19Db250ZXh0X01lbnVfSXRlbT4gbmV3SXRlbSA9IEV3a0NvbnRleHRNZW51SXRl
bTo6Y3JlYXRlKHR5cGUsIGFjdGlvbiwgZXdrUGFyZW50TWVudSwgZXdrU3ViTWVudSwgdGl0bGUs
IGNoZWNrZWQsIGVuYWJsZWQpLmdldCgpOworCisgICAgcmV0dXJuIGV3a19vYmplY3RfcmVmKG5l
d0l0ZW0uZ2V0KCkpOworfQorCit2b2lkIGV3a19jb250ZXh0X21lbnVfaXRlbV9mcmVlKEV3a19D
b250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVS
TihFd2tDb250ZXh0TWVudUl0ZW0sIGl0ZW0sIGV3a01lbnVJdGVtKTsKKworICAgIGV3a19vYmpl
Y3RfdW5yZWYoZXdrTWVudUl0ZW0pOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9o
aWRlKEV3a19Db250ZXh0X01lbnUqIG1lbnUpCit7CisgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9S
RVRVUk4oRXdrQ29udGV4dE1lbnUsIG1lbnUsIGV3a01lbnUsIGZhbHNlKTsKKworICAgIGV3a01l
bnUtPmhpZGUoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBFaW5hX0xpc3QqIGV3
a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUqIG1lbnUpCit7
CisgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oY29uc3QgRXdrQ29udGV4dE1lbnUsIG1l
bnUsIGV3a01lbnUsIDApOworCisgICAgcmV0dXJuIGV3a01lbnUtPml0ZW1zKCk7Cit9CisKK0Vp
bmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUqIG1l
bnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBM
X09SX1JFVFVSTihFd2tDb250ZXh0TWVudSwgbWVudSwgZXdrTWVudSwgZmFsc2UpOworICAgIEVX
S19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKEV3a0NvbnRleHRNZW51SXRlbSwgaXRlbSwgZXdrTWVu
dUl0ZW0sIGZhbHNlKTsKKworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGUgdHlwZSA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGU+KGV3a01lbnVJdGVtLT50
eXBlKCkpOworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbiA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uPihld2tNZW51SXRlbS0+YWN0aW9uKCkpOwor
CisgICAgZXdrTWVudS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV2ViQ29udGV4dE1lbnVJdGVt
RGF0YSh0eXBlLCBhY3Rpb24sIGV3a01lbnVJdGVtLT50aXRsZSgpLCBld2tNZW51SXRlbS0+ZW5h
YmxlZCgpLCBld2tNZW51SXRlbS0+Y2hlY2tlZCgpKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X21lbnUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21l
bnUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xZTdjYmZjMzJhMTdkZGI5MmM1NGMwZmZhODg3Njc4M2YxOGU0NTM0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHRfbWVudS5oCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX2NvbnRleHRfbWVudS5oCisgKiBAYnJp
ZWYgICBEZXNjcmliZXMgdGhlIEV3ayBDb250ZXh0IE1lbnUgQVBJLgorICovCisKKyNpZm5kZWYg
ZXdrX2NvbnRleHRfbWVudV9oCisjZGVmaW5lIGV3a19jb250ZXh0X21lbnVfaAorCisjaW5jbHVk
ZSAiZXdrX2NvbnRleHRfbWVudV9pdGVtLmgiCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYg
X19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKgorICogRGVjbGFyZSBFd2tf
Q29udGV4dF9NZW51IGFzIEV3a19PYmplY3QuCisgKgorICogQHNlZSBFd2tfT2JqZWN0CisgKi8K
K3R5cGVkZWYgc3RydWN0IEV3a19PYmplY3QgRXdrX0NvbnRleHRfTWVudTsKKworLyoqCisgKiBD
cmVhdGVzIGEgbmV3IGl0ZW0gb2YgdGhlIGNvbnRleHQgbWVudS4KKyAqCisgKiBAcGFyYW0gdHlw
ZSBzcGVjaWZpZXMgYSB0eXBlIG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gYWN0aW9uIHNwZWNpZmll
cyBhIGFjdGlvbiBvZiB0aGUgaXRlbQorICogQHBhcmFtIHBhcmVudF9tZW51IHNwZWNpZmllcyBh
IHBhcmVudCBtZW51IG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gc3VibWVudSBzcGVjaWZpZXMgYSBz
dWJtZW51IG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gdGl0bGUgc3BlY2lmaWVzIGEgdGl0bGUgb2Yg
dGhlIGl0ZW0KKyAqIEBwYXJhbSBjaGVja2VkIEBjIEVJTkFfVFJVRSBpZiB0aGUgaXRlbSBzaG91
bGQgYmUgdG9nZ2xlZCBvciBAYyBFSU5BX0ZBTFNFIGlmIG5vdAorICogQHBhcmFtIGVuYWJsZWQg
QGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgaXRlbSBvciBAYyBFSU5BX0ZBTFNFIHRvIGRpc2Fi
bGUKKyAqIEByZXR1cm4gdGhlIHBvaW50ZXIgdG8gdGhlIG5ldyBpdGVtIG9uIHN1Y2Nlc3Mgb3Ig
QGMgTlVMTCBvbiBmYWlsdXJlCisgKiAgICAgICAgIHRoZSBuZXcgaXRlbSBzaG91bGQgYmUgZnJl
ZWQgYWZ0ZXIgdXNlLiBVc2UgZXdrX29iamVjdF91bnJlZigpCisgICAgICAgICAgIHRvIGZyZWUg
dGhlIGl0ZW0KKyAqCisgKiBAbm90ZSBUaGUgcmV0dXJuIHZhbHVlIEBiIHNob3VsZCBAYiBiZSBm
cmVlZCBhZnRlciB1c2UKKyAqLworRUFQSSBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKmV3a19jb250
ZXh0X21lbnVfaXRlbV9uZXcoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSwgRXdrX0Nv
bnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIEV3a19Db250ZXh0X01lbnUgKnBhcmVudF9t
ZW51LCBFd2tfQ29udGV4dF9NZW51ICpzdWJfbWVudSwgY29uc3QgY2hhciAqdGl0bGUsIEVpbmFf
Qm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCk7CisKKy8qKgorICogRGVzdHJveXMgdGhl
IGl0ZW0gb2YgdGhlIGNvbnRleHQgbWVudSBvYmplY3QuCisgKgorICogQHBhcmFtIGl0ZW0gdGhl
IGl0ZW0gdG8gZGVzdG9yeQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9oaWRlCisgKi8K
K0VBUEkgdm9pZCBld2tfY29udGV4dF9tZW51X2l0ZW1fZnJlZShFd2tfQ29udGV4dF9NZW51X0l0
ZW0gKml0ZW0pOworCisvKioKKyAqIEhpZGVzIHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0LgorICoK
KyAqIEBwYXJhbSBtZW51IHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0IHRvIGhpZGUKKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICoK
KyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX2ZyZWUKKyAqLworRUFQSSBFaW5hX0Jvb2wg
ZXdrX2NvbnRleHRfbWVudV9oaWRlKEV3a19Db250ZXh0X01lbnUgKm1lbnUpOworCisvKioKKyAq
IEdldHMgdGhlIGxpc3Qgb2YgaXRlbXMuCisgKgorICogQHBhcmFtIG8gdGhlIGNvbnRleHQgbWVu
dSBvYmplY3QgdG8gZ2V0IGxpc3Qgb2YgdGhlIGl0ZW1zCisgKiBAcmV0dXJuIHRoZSBsaXN0IG9m
IHRoZSBpdGVtcyBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZSwKKyAqICAgICAgICAg
dGhlIEVpbmFfTGlzdCBhbmQgaXRzIGl0ZW1zIHNob3VsZCBiZSBmcmVlZCBhZnRlciB1c2UuIFVz
ZSBld2tfb2JqZWN0X3VucmVmKCkKKyAqICAgICAgICAgdG8gZnJlZSB0aGUgaXRlbXMKKyAqLwor
RUFQSSBjb25zdCBFaW5hX0xpc3QgKmV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnN0IEV3
a19Db250ZXh0X01lbnUgKm8pOworCisvKioKKyAqIFNlbGVjdHMgdGhlIGl0ZW0gZnJvbSB0aGUg
Y29udGV4dCBtZW51IG9iamVjdC4KKyAqCisgKiBAcGFyYW0gbWVudSB0aGUgY29udGV4dCBtZW51
IG9iamVjdAorICogQHBhcmFtIGl0ZW0gdGhlIGl0ZW0gaXMgc2VsZWN0ZWQKKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QoRXdrX0NvbnRleHRf
TWVudSAqbWVudSwgRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtKTsKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIGV3a19jb250ZXh0X21lbnVfaCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVu
dV9pdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X21lbnVfaXRlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJhZTE4NGY1NjBjZmU5Nzg2ZGM3NGQ4ZGI2OWJh
MjQwZjg5ZGE1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHAKQEAgLTAsMCArMSwyMTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcK
KyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVu
dV9pdGVtX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OworCitFd2tDb250ZXh0TWVudUl0ZW06OkV3a0NvbnRleHRNZW51SXRlbShj
b25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQorICAgIDogbV90eXBlKHN0YXRpY19j
YXN0PEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlPihpdGVtLnR5cGUoKSkpCisgICAgLCBtX2Fj
dGlvbihzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uPihpdGVtLmFjdGlv
bigpKSkKKyAgICAsIG1fdGl0bGUoaXRlbS50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpCisgICAgLCBt
X3BhcmVudE1lbnUoMCkKKyAgICAsIG1fc3ViTWVudSgwKQorICAgICwgbV9pc0NoZWNrZWQoaXRl
bS5jaGVja2VkKCkpCisgICAgLCBtX2lzRW5hYmxlZChpdGVtLmVuYWJsZWQoKSkKK3sKK30KKwor
RXdrQ29udGV4dE1lbnVJdGVtOjpFd2tDb250ZXh0TWVudUl0ZW0oRXdrX0NvbnRleHRfTWVudV9J
dGVtX1R5cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIEV3a0Nv
bnRleHRNZW51KiBwYXJlbnRNZW51LCBFd2tDb250ZXh0TWVudSogc3ViTWVudSwgY29uc3QgY2hh
ciogdGl0bGUsIGJvb2wgY2hlY2tlZCwgYm9vbCBlbmFibGVkKQorICAgIDogbV90eXBlKHR5cGUp
CisgICAgLCBtX2FjdGlvbihhY3Rpb24pCisgICAgLCBtX3RpdGxlKHRpdGxlKQorICAgICwgbV9w
YXJlbnRNZW51KHBhcmVudE1lbnUpCisgICAgLCBtX3N1Yk1lbnUoc3ViTWVudSkKKyAgICAsIG1f
aXNDaGVja2VkKGNoZWNrZWQpCisgICAgLCBtX2lzRW5hYmxlZChlbmFibGVkKQoreworfQorCitF
d2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQo
Y29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVXS19PQkpfR0VUX0lN
UExfT1JfUkVUVVJOKGNvbnN0IEV3a0NvbnRleHRNZW51SXRlbSwgaXRlbSwgZXdrTWVudUl0ZW0s
IEVXS19BQ1RJT05fVFlQRSk7CisKKyAgICByZXR1cm4gZXdrTWVudUl0ZW0tPnR5cGUoKTsKK30K
KworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX3NldChFd2tfQ29udGV4dF9N
ZW51X0l0ZW0qIGl0ZW0sIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUpCit7CisgICAg
RVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oRXdrQ29udGV4dE1lbnVJdGVtLCBpdGVtLCBld2tN
ZW51SXRlbSwgZmFsc2UpOworCisgICAgZXdrTWVudUl0ZW0tPnNldFR5cGUodHlwZSk7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBld2tfY29u
dGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0
ZW0pCit7CisgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oY29uc3QgRXdrQ29udGV4dE1l
bnVJdGVtLCBpdGVtLCBld2tNZW51SXRlbSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19B
Q1RJT04pOworCisgICAgcmV0dXJuIGV3a01lbnVJdGVtLT5hY3Rpb24oKTsKK30KKworRWluYV9C
b29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fc2V0KEV3a19Db250ZXh0X01lbnVfSXRl
bSogaXRlbSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24pCit7CisgICAgRVdL
X09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oRXdrQ29udGV4dE1lbnVJdGVtLCBpdGVtLCBld2tNZW51
SXRlbSwgZmFsc2UpOworCisgICAgZXdrTWVudUl0ZW0tPnNldEFjdGlvbihhY3Rpb24pOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19jb250ZXh0X21lbnVfaXRlbV90
aXRsZV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVXS19P
QkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a0NvbnRleHRNZW51SXRlbSwgaXRlbSwgZXdr
TWVudUl0ZW0sIDApOworCisgICAgcmV0dXJuIGV3a01lbnVJdGVtLT50aXRsZSgpOworfQorCitF
aW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldChFd2tfQ29udGV4dF9NZW51
X0l0ZW0qIGl0ZW0sIGNvbnN0IGNoYXIqIHRpdGxlKQoreworICAgIEVXS19PQkpfR0VUX0lNUExf
T1JfUkVUVVJOKEV3a0NvbnRleHRNZW51SXRlbSwgaXRlbSwgZXdrTWVudUl0ZW0sIGZhbHNlKTsK
KworICAgIGV3a01lbnVJdGVtLT5zZXRUaXRsZSh0aXRsZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldChjb25zdCBF
d2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9S
RVRVUk4oY29uc3QgRXdrQ29udGV4dE1lbnVJdGVtLCBpdGVtLCBld2tNZW51SXRlbSwgZmFsc2Up
OworCisgICAgcmV0dXJuIGV3a01lbnVJdGVtLT5jaGVja2VkKCk7Cit9CisKK0VpbmFfQm9vbCBl
d2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBp
dGVtLCBFaW5hX0Jvb2wgY2hlY2tlZCkKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVS
TihFd2tDb250ZXh0TWVudUl0ZW0sIGl0ZW0sIGV3a01lbnVJdGVtLCBmYWxzZSk7CisKKyAgICBl
d2tNZW51SXRlbS0+c2V0Q2hlY2tlZChjaGVja2VkKTsKKworICAgIHJldHVybiB0cnVlOworfQor
CitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0KGNvbnN0IEV3a19D
b250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVS
Tihjb25zdCBFd2tDb250ZXh0TWVudUl0ZW0sIGl0ZW0sIGV3a01lbnVJdGVtLCBmYWxzZSk7Cisg
ICAgCisgICAgcmV0dXJuIGV3a01lbnVJdGVtLT5lbmFibGVkKCk7Cit9CisKK0VpbmFfQm9vbCBl
d2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBp
dGVtLCBFaW5hX0Jvb2wgZW5hYmxlZCkKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVS
TihFd2tDb250ZXh0TWVudUl0ZW0sIGl0ZW0sIGV3a01lbnVJdGVtLCBmYWxzZSk7CisKKyAgICBl
d2tNZW51SXRlbS0+c2V0RW5hYmxlZChlbmFibGVkKTsKKworICAgIHJldHVybiB0cnVlOworfQor
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
Tk9fQUNUSU9OLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbik7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9MSU5L
X0lOX05FV19XSU5ET1csIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdX
aW5kb3cpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0RPV05MT0FEX0xJTktfVE9fRElTSywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
RG93bmxvYWRMaW5rVG9EaXNrKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0xJTktfVE9fQ0xJUEJPQVJELCBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0lNQUdFX0lOX05FV19XSU5E
T1csIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93KTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19ET1dO
TE9BRF9JTUFHRV9UT19ESVNLLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZElt
YWdlVG9EaXNrKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19DT1BZX0lNQUdFX1RPX0NMSVBCT0FSRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfSU1BR0VfVVJMX1RPX0NMSVBCT0FSRCwg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5f
RlJBTUVfSU5fTkVXX1dJTkRPVywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1l
SW5OZXdXaW5kb3cpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX0NPUFksIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHkpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0JB
Q0ssIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0dvQmFjayk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fRk9SV0FSRCwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QLCBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdTdG9wKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19SRUxPQUQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
Q1VULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDdXQpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BBU1RFLCBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdQYXN0ZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfU0VMRUNUX0FMTCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnU2VsZWN0QWxsKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19TUEVMTElOR19HVUVTUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
U3BlbGxpbmdHdWVzcyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfTk9fR1VFU1NFU19GT1VORCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnTm9HdWVzc2VzRm91bmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX0lHTk9SRV9TUEVMTElORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnSWdub3JlU3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0xFQVJOX1NQRUxMSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdMZWFyblNwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PVEhFUiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
T3RoZXIpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX1NFQVJDSF9JTl9TUE9UTElHSFQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1Nl
YXJjaEluU3BvdGxpZ2h0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19TRUFSQ0hfV0VCLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdT
ZWFyY2hXZWIpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX0xPT0tfVVBfSU5fRElDVElPTkFSWSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnTG9va1VwSW5EaWN0aW9uYXJ5KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX1dJVEhfREVGQVVMVF9BUFBMSUNBVElPTiwgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbldpdGhEZWZhdWx0QXBwbGljYXRpb24pOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQUNUVUFM
X1NJWkUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERkFjdHVhbFNpemUpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGWk9PTV9JTiwgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtUERGWm9vbUluKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlpPT01fT1VULCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1QREZab29tT3V0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1BERkFVVE9fU0laRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERG
QXV0b1NpemUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5V
X0lURU1fUERGU0lOR0xFX1BBR0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERlNpbmdsZVBh
Z2UpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1f
UERGRkFDSU5HX1BBR0VTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZGYWNpbmdQYWdlcyk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZD
T05USU5VT1VTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZDb250aW51b3VzKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERk5FWFRfUEFH
RSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGTmV4dFBhZ2UpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGUFJFVklPVVNfUEFHRSwgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtUERGUHJldmlvdXNQYWdlKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJTkssIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVfR1JBTU1BUiwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfTUVOVSwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX1NQRUxMSU5HX1BBTkVMLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbCk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tfU1BFTExJTkcsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX1NQRUxMSU5HX1dI
SUxFX1RZUElORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxl
VHlwaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19DSEVDS19HUkFNTUFSX1dJVEhfU1BFTExJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRk9OVF9NRU5VLCBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdGb250TWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19GT05UUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnU2hvd0ZvbnRzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19CT0xELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdCb2xkKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19J
VEFMSUMsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYyk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVU5ERVJMSU5FLCBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09VVExJTkUsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ091dGxpbmUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX1NUWUxFUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
U3R5bGVzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19TSE9XX0NPTE9SUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9y
cyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfU1BFRUNIX01FTlUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NU
QVJUX1NQRUFLSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19T
VE9QX1NQRUFLSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmcpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1dS
SVRJTkdfRElSRUNUSU9OX01FTlUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdE
aXJlY3Rpb25NZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19ERUZBVUxUX0RJUkVDVElPTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnRGVmYXVsdERpcmVjdGlvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfTEVGVF9UT19SSUdIVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnTGVmdFRvUmlnaHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1JJR0hUX1RPX0xFRlQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1JpZ2h0VG9MZWZ0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19QREZTSU5HTEVfUEFHRV9TQ1JPTExJTkcsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERkZBQ0lOR19QQUdFU19TQ1JP
TExJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2VzU2Nyb2xsaW5n
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19JTlNQRUNUX0VMRU1FTlQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVt
ZW50KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19URVhUX0RJUkVDVElPTl9NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUZXh0
RGlyZWN0aW9uTWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fREVGQVVMVCwgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklH
SFQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodCk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
VEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
VGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX09QRU5fTUVESUFfSU5fTkVXX1dJTkRPVywgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnT3Blbk1lZGlhSW5OZXdXaW5kb3cpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTUVESUFfTElOS19U
T19DTElQQk9BUkQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlNZWRpYUxpbmtUb0Ns
aXBib2FyZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfVE9HR0xFX01FRElBX0NPTlRST0xTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdUb2dnbGVNZWRpYUNvbnRyb2xzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFfTE9PUCwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFMb29wKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19FTlRFUl9WSURFT19GVUxMU0NSRUVOLCBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UYWdFbnRlclZpZGVvRnVsbHNjcmVlbik7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTUVESUFfUExBWV9Q
QVVTRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5UGF1c2UpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX01FRElBX01V
VEUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0NVU1RPTV9UQUcsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWcpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fQ1VTVE9NX1RBR19OT19BQ1RJT04sIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbUN1c3RvbVRhZ05vQWN0aW9uKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0xBU1RfQ1VTVE9NX1RBRywgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtTGFzdEN1c3RvbVRhZyk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0FQUExJQ0FUSU9OX1RBRywgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjk0ZjYwMTZmODJhZWVlODNiNGY5MWNhMTg2NDg1MzA5MjY4YjdlZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250
ZXh0X21lbnVfaXRlbS5oCkBAIC0wLDAgKzEsMjQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtLmgKKyAq
IEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIENvbnRleHQgTWVudSBJdGVtIEFQSS4KKyAqLwor
CisjaWZuZGVmIGV3a19jb250ZXh0X21lbnVfaXRlbV9oCisjZGVmaW5lIGV3a19jb250ZXh0X21l
bnVfaXRlbV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0
ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBEZWNsYXJlIEV3a19Db250ZXh0X01lbnVfSXRl
bSBhcyBFd2tfT2JqZWN0LgorICoKKyAqIEBzZWUgRXdrX09iamVjdAorICovCit0eXBlZGVmIHN0
cnVjdCBFd2tfT2JqZWN0IEV3a19Db250ZXh0X01lbnVfSXRlbTsKKworLyoqCisgKiBcZW51bSAg
ICBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZQorICogQGJyaWVmICAgRGVmaW5lcyB0aGUgdHlw
ZXMgb2YgdGhlIGl0ZW1zIGZvciB0aGUgY29udGV4dCBtZW51LgorICogQGluZm8gICAgS2VlcCB0
aGlzIGluIHN5bmMgd2l0aCBDb250ZXh0TWVudUl0ZW0uaAorICovCit0eXBlZGVmIGVudW0gewor
ICAgIEVXS19BQ1RJT05fVFlQRSwKKyAgICBFV0tfQ0hFQ0tBQkxFX0FDVElPTl9UWVBFLAorICAg
IEVXS19TRVBBUkFUT1JfVFlQRSwKKyAgICBFV0tfU1VCTUVOVV9UWVBFCit9IEV3a19Db250ZXh0
X01lbnVfSXRlbV9UeXBlOworCisvKioKKyAqIFxlbnVtICAgIEV3a19Db250ZXh0X01lbnVfQWN0
aW9uCisgKiBAYnJpZWYgICBQcm92aWRlcyB0aGUgYWN0aW9ucyBvZiBpdGVtcyBmb3IgdGhlIGNv
bnRleHQgbWVudS4KKyAqIEBpbmZvICAgIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggQ29udGV4dE1l
bnVJdGVtLmgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX05PX0FDVElPTiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fTElOS19J
Tl9ORVdfV0lORE9XLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRE9XTkxPQURfTElO
S19UT19ESVNLLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9MSU5LX1RPX0NM
SVBCT0FSRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fSU1BR0VfSU5fTkVX
X1dJTkRPVywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RPV05MT0FEX0lNQUdFX1RP
X0RJU0ssCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1RPX0NMSVBC
T0FSRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfSU1BR0VfVVJMX1RPX0NM
SVBCT0FSRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fRlJBTUVfSU5fTkVX
X1dJTkRPVywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFksCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19HT19CQUNLLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfR09fRk9SV0FSRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUT1AsCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19SRUxPQUQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19DVVQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QQVNURSwKKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFTEVDVF9BTEwsCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19TUEVMTElOR19HVUVTUywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X05PX0dVRVNTRVNfRk9VTkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVf
U1BFTExJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUFSTl9TUEVMTElORywK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09USEVSLAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfU0VBUkNIX0lOX1NQT1RMSUdIVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX1NFQVJDSF9XRUIsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MT09LX1VQ
X0lOX0RJQ1RJT05BUlksCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX1dJVEhf
REVGQVVMVF9BUFBMSUNBVElPTiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQUNUVUFM
X1NJWkUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlpPT01fSU4sCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1BERlpPT01fT1VULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9Q
REZBVVRPX1NJWkUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlNJTkdMRV9QQUdFLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZGQUNJTkdfUEFHRVMsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1BERkNPTlRJTlVPVVMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BE
Rk5FWFRfUEFHRSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGUFJFVklPVVNfUEFHRSwK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fTElOSyA9IDIwMDAsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVfR1JBTU1BUiwKKyAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1NQRUxMSU5HX01FTlUsIC8qKjwgc3BlbGxpbmcgb3Igc3BlbGxpbmcvZ3Jh
bW1hciBzdWItbWVudSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19TUEVM
TElOR19QQU5FTCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX1NQRUxMSU5H
LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tfU1BFTExJTkdfV0hJTEVfVFlQ
SU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tfR1JBTU1BUl9XSVRIX1NQ
RUxMSU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRk9OVF9NRU5VLCAvKio8IGZv
bnQgc3ViLW1lbnUgKi8KKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfRk9OVFMs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19CT0xELAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfSVRBTElDLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVU5ERVJM
SU5FLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1VUTElORSwKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1NUWUxFUywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X1NIT1dfQ09MT1JTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFRUNIX01FTlUs
IC8qKjwgc3BlZWNoIHN1Yi1tZW51ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19T
VEFSVF9TUEVBS0lORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUT1BfU1BFQUtJ
TkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19XUklUSU5HX0RJUkVDVElPTl9NRU5V
LCAvKio8IHdyaXRpbmcgZGlyZWN0aW9uIHN1Yi1tZW51ICovCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19ERUZBVUxUX0RJUkVDVElPTiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX0xFRlRfVE9fUklHSFQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19SSUdIVF9U
T19MRUZULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUERGU0lOR0xFX1BBR0VfU0NS
T0xMSU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUERGRkFDSU5HX1BBR0VTX1ND
Uk9MTElORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lOU1BFQ1RfRUxFTUVOVCwK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX01FTlUsIC8qKjwg
dGV4dCBkaXJlY3Rpb24gc3ViLW1lbnUgKi8KKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X1RFWFRfRElSRUNUSU9OX0RFRkFVTFQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19U
RVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fT1BFTl9NRURJQV9JTl9ORVdfV0lORE9XLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfQ09QWV9NRURJQV9MSU5LX1RPX0NMSVBCT0FSRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX1RPR0dMRV9NRURJQV9DT05UUk9MUywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX1RPR0dMRV9NRURJQV9MT09QLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRU5U
RVJfVklERU9fRlVMTFNDUkVFTiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX01FRElB
X1BMQVlfUEFVU0UsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19NRURJQV9NVVRFLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0NVU1RPTV9UQUcgPSA1MDAwLAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9DVVNUT01fVEFHX05PX0FDVElPTiA9IDU5OTgsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX0xBU1RfQ1VTVE9NX1RBRyA9IDU5OTksCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX0JBU0VfQVBQTElDQVRJT05fVEFHID0gMTAwMDAKK30gRXdrX0NvbnRleHRf
TWVudV9JdGVtX0FjdGlvbjsKKworLyoqCisgKiBHZXRzIHRoZSB0eXBlIG9mIHRoZSBpdGVtLgor
ICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGdldCB0aGUgdHlwZQorICogQHJldHVybiB0eXBl
IG9mIHRoZSBpdGVtIG9uIHN1Y2Nlc3Mgb3IgQGMgRVdLX0FDVElPTl9UWVBFIG9uIGZhaWx1cmUK
KyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX3NldAorICovCitFQVBJIEV3
a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChj
b25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNldHMgdGhlIHR5cGUg
b2YgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBzZXQgdGhlIHR5cGUKKyAqIEBw
YXJhbSB0eXBlIGEgbmV3IHR5cGUgZm9yIHRoZSBpdGVtIG9iamVjdAorICogQHJldHVybiBAYyBF
SU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKgorICog
QHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywg
RXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSk7CisKKy8qKgorICogR2V0cyB0aGUgYWN0
aW9uIG9mIHRoZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGdldCB0aGUgYWN0
aW9uCisgKiBAcmV0dXJuIGFuIGFjdGlvbiBvZiB0aGUgaXRlbSBvbiBzdWNjZXNzIG9yIEBjIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fQUNUSU9OIG9uIGZhaWx1cmUKKyAqCisgKiBAc2Vl
IGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fc2V0CisgKi8KK0VBUEkgRXdrX0NvbnRleHRf
TWVudV9JdGVtX0FjdGlvbiBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChjb25zdCBF
d2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNldHMgdGhlIGFjdGlvbiBvZiB0
aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBzZXQgdGhlIGFjdGlvbgorICog
QHBhcmFtIGFjdGlvbiBhIG5ldyBhY3Rpb24gZm9yIHRoZSBpdGVtIG9iamVjdAorICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisg
KgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldAorICovCitFQVBJIEVp
bmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX3NldChFd2tfQ29udGV4dF9NZW51
X0l0ZW0gKm8sIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKTsKKworLyoqCisg
KiBHZXRzIHRoZSB0aXRsZSBvZiB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0
byBnZXQgdGhlIHRpdGxlCisgKiBAcmV0dXJuIGEgdGl0bGUgb2YgdGhlIGl0ZW0gb24gc3VjY2Vz
cywgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0
ZW1fdGl0bGVfc2V0CisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX2NvbnRleHRfbWVudV9pdGVt
X3RpdGxlX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNl
dHMgdGhlIHRpdGxlIG9mIHRoZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIHNl
dCB0aGUgdGl0bGUKKyAqIEBwYXJhbSB0aXRsZSBhIG5ldyB0aXRsZSBmb3IgdGhlIGl0ZW0gb2Jq
ZWN0CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNF
IG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQK
KyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldChFd2tf
Q29udGV4dF9NZW51X0l0ZW0gKm8sIGNvbnN0IGNoYXIgKnRpdGxlKTsKKworLyoqCisgKiBRdWVy
aWVzIGlmIHRoZSBpdGVtIGlzIHRvZ2dsZWQuCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8g
cXVlcnkgaWYgdGhlIGl0ZW0gaXMgdG9nZ2xlZAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYg
dGhlIGl0ZW0gaXMgdG9nZ2xlZCBvciBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJl
CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldChj
b25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNldHMgaWYgdGhlIGl0
ZW0gc2hvdWxkIGJlIHRvZ2dsZWQuCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gYmUgdG9n
Z2xlZAorICogQHBhcmFtIGNoZWNrZWQgQGMgRUlOQV9UUlVFIGlmIHRoZSBpdGVtIHNob3VsZCBi
ZSB0b2dnbGVkIG9yIEBjIEVJTkFfRkFMU0UgaWYgbm90CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVpbmFf
Qm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9J
dGVtICpvLCBFaW5hX0Jvb2wgY2hlY2tlZCk7CisKKy8qKgorICogR2V0cyBpZiB0aGUgaXRlbSBp
cyBlbmFibGVkLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGdldCBlbmFibGVkIHN0YXRl
CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBpdCdzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0Ug
aWYgbm90IG9yIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9l
bmFibGVkX3NldAorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5h
YmxlZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpvKTsKKworLyoqCisgKiBFbmFi
bGVzL2Rpc2FibGVzIHRoZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGVuYWJs
ZS9kaXNhYmxlCisgKiBAcGFyYW0gZW5hYmxlZCBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBp
dGVtIG9yIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tf
Y29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2Nv
bnRleHRfbWVudV9pdGVtX2VuYWJsZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgRWlu
YV9Cb29sIGVuYWJsZWQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5k
aWYgLyogZXdrX2NvbnRleHRfbWVudV9pdGVtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJp
dmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjViYTJiYjcwYmNhZTNmYzNkOGY1N2QxYmM3ZTU0ZDhjY2RhZjM1
YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAq
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9tZW51X2l0ZW1f
cHJpdmF0ZV9oCisjZGVmaW5lIGV3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlX2gKKworI2lu
Y2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRl
bURhdGEuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0ZW0uaCIKKyNpbmNsdWRlICJl
d2tfY29udGV4dF9tZW51X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfb2JqZWN0X3ByaXZhdGUu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCitjbGFzcyBFd2tDb250ZXh0TWVudUl0
ZW0gOiBwdWJsaWMgRXdrX09iamVjdCB7CitwdWJsaWM6CisgICAgRVdLX09CSkVDVF9ERUNMQVJF
KEV3a0NvbnRleHRNZW51SXRlbSkKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a0NvbnRleHRN
ZW51SXRlbT4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRl
bSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrQ29udGV4dE1lbnVJdGVt
KGl0ZW0pKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tDb250ZXh0TWVudUl0
ZW0+IGNyZWF0ZShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9N
ZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgRXdrQ29udGV4dE1lbnUqIHBhcmVudE1lbnUsIEV3a0Nv
bnRleHRNZW51KiBzdWJNZW51LCBjb25zdCBjaGFyKiB0aXRsZSwgYm9vbCBjaGVja2VkLCBib29s
IGVuYWJsZWQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a0NvbnRleHRN
ZW51SXRlbSh0eXBlLCBhY3Rpb24sIHBhcmVudE1lbnUsIHN1Yk1lbnUsIHRpdGxlLCBjaGVja2Vk
LCBlbmFibGVkKSk7CisgICAgfQorCisgICAgRXdrQ29udGV4dE1lbnUqIHBhcmVudE1lbnUoKSBj
b25zdCB7IHJldHVybiBtX3BhcmVudE1lbnU7IH0KKyAgICB2b2lkIHNldFBhcmVudE1lbnUoRXdr
Q29udGV4dE1lbnUqIHBhcmVudE1lbnUpIHsgbV9wYXJlbnRNZW51ID0gcGFyZW50TWVudTsgfQor
CisgICAgRXdrQ29udGV4dE1lbnUqIHN1Yk1lbnUoKSBjb25zdCB7IHJldHVybiBtX3N1Yk1lbnU7
IH0KKyAgICB2b2lkIHNldFN1Yk1lbnUoRXdrQ29udGV4dE1lbnUqIHN1Yk1lbnUpIHsgbV9zdWJN
ZW51ID0gc3ViTWVudTsgfQorCisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQorICAgIHZvaWQgc2V0QWN0aW9uKEV3a19D
b250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKSB7IG1fYWN0aW9uID0gYWN0aW9uOyB9CisK
KyAgICBjb25zdCBjaGFyKiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KKyAgICB2
b2lkIHNldFRpdGxlKGNvbnN0IGNoYXIqIHRpdGxlKSB7IG1fdGl0bGUgPSB0aXRsZTsgfQorCisg
ICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQorICAgIHZvaWQgc2V0VHlwZShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlKSB7
IG1fdHlwZSA9IHR5cGU7IH0KKworICAgIGJvb2wgY2hlY2tlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDaGVja2VkOyB9CisgICAgdm9pZCBzZXRDaGVja2VkKGJvb2wgY2hlY2tlZCkgeyBtX2lzQ2hl
Y2tlZCA9IGNoZWNrZWQ7IH0gICAKKworICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2lz
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBFd2tDb250ZXh0
TWVudUl0ZW0oY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CisgICAgRXdr
Q29udGV4dE1lbnVJdGVtKEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3a19Db250
ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBFd2tDb250ZXh0TWVudSogcGFyZW50TWVudSwg
RXdrQ29udGV4dE1lbnUqIHN1Yk1lbnUsIGNvbnN0IGNoYXIqIHRpdGxlLCBib29sIGNoZWNrZWQs
IGJvb2wgZW5hYmxlZCk7CisKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSBtX3R5cGU7
CisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBtX2FjdGlvbjsKKworICAgIFdLRWlu
YVNoYXJlZFN0cmluZyBtX3RpdGxlOworCisgICAgRXdrQ29udGV4dE1lbnUqIG1fcGFyZW50TWVu
dTsKKyAgICBFd2tDb250ZXh0TWVudSogbV9zdWJNZW51OworCisgICAgYm9vbCBtX2lzQ2hlY2tl
ZDsKKyAgICBib29sIG1faXNFbmFibGVkOworfTsKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X21l
bnVfaXRlbV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2JkM2M3
NjMxNTMyMmQ2MTE3ODliODVmZTRhNTU3Y2YyOGVlYzdlOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5o
CkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBld2tfY29udGV4dF9tZW51X3ByaXZhdGVfaAorI2RlZmluZSBld2tfY29udGV4dF9tZW51
X3ByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgorI2luY2x1
ZGUgImV3a19vYmplY3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CitjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOworY2xhc3MgV2ViQ29udGV4dE1l
bnVQcm94eUVmbDsKK30KKworY2xhc3MgRXdrVmlld0ltcGw7CisKK2NsYXNzIEV3a0NvbnRleHRN
ZW51IDogcHVibGljIEV3a19PYmplY3QgeworcHVibGljOgorICAgIEVXS19PQkpFQ1RfREVDTEFS
RShFd2tDb250ZXh0TWVudSkKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a0NvbnRleHRNZW51
PiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsLCBXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlFZmwqIGNvbnRleHRNZW51UHJveHksIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRN
ZW51SXRlbURhdGE+JiBpdGVtcykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RXdrQ29udGV4dE1lbnUodmlld0ltcGwsIGNvbnRleHRNZW51UHJveHksIGl0ZW1zKSk7CisgICAg
fQorCisgICAgfkV3a0NvbnRleHRNZW51KCk7CisKKyAgICB2b2lkIGhpZGUoKTsKKworICAgIGNv
bnN0IEVpbmFfTGlzdCogaXRlbXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRNZW51SXRlbXM7
IH0KKyAgICB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YSYgaXRlbSk7CisKK3ByaXZhdGU6CisgICAgRXdrQ29udGV4dE1lbnUo
RXdrVmlld0ltcGwqLCBXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmwqLCBjb25zdCBWZWN0
b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpOworCisgICAgRXdrVmll
d0ltcGwqIG1fdmlld0ltcGw7CisgICAgV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZsKiBt
X2NvbnRleHRNZW51UHJveHk7CisgICAgRWluYV9MaXN0KiBtX2NvbnRleHRNZW51SXRlbXM7Cit9
OworCisjZW5kaWYgLy8gZXdrX2NvbnRleHRfbWVudV9wcml2YXRlX2gKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdF9wcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0X3ByaXZhdGUuaAppbmRl
eCA0ZDRjY2ZhYmM4MmI5MmNkNDgwODY4NGVkZTk2MzJhM2ZkZjgyNDE3Li42ZTVmZWFlNjdjMzI2
MzgxMjFkYWQ2MjdmNTJjNTY3MmUwNTM4NjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0X3ByaXZhdGUuaApAQCAtNzIsNiArNzIsOCBA
QCBpbmxpbmUgVCBld2tfb2JqZWN0X2Nhc3QoRXdrX09iamVjdCogb2JqZWN0KQogICAgIGlmICgh
aW1wbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgICAgICByZXR1cm4gX19WQV9BUkdTX18KIAorI2RlZmluZSBFV0tfT0JK
X0dFVF9JTVBMKEltcGxDbGFzcywgb2JqZWN0LCBpbXBsKSAgICAgICAgICAgXAorICAgIEltcGxD
bGFzcyogaW1wbCA9IGV3a19vYmplY3RfY2FzdDxJbXBsQ2xhc3MqPihvYmplY3QpOwogCiAjZGVm
aW5lIEVXS19PQkpFQ1RfREVDTEFSRShfY2xhc3NOYW1lKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiBzdGF0aWMgY29uc3QgY2hhciogY2xhc3NOYW1lKCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCA4YTM5NDZlZjliNTcyNWMwOTRlNWE3YTBj
OGRlZDM4ZDcxMmIxYWM5Li40NTMzZDVkNGM3MGI4NWFmMmJmOTU0MzkxZjQzYmYyNjA3MDJiNzU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTg0
LDYgKzg0LDcgQEAKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3QuaCIKICNpbmNsdWRl
ICJld2tfY29sb3JfcGlja2VyLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKKyNpbmNsdWRl
ICJld2tfY29udGV4dF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgogI2lu
Y2x1ZGUgImV3a19lcnJvci5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIKQEAgLTExNCw2ICsx
MTUsOSBAQCBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEV2YXNfU21hcnRfQ2xh
c3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAqLwogICAg
IHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKIAorICAgIEVpbmFfQm9vbCAoKmNvbnRleHRfbWVudV9z
aG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHks
IEV3a19Db250ZXh0X01lbnUgKm1lbnUpOworICAgIEVpbmFfQm9vbCAoKmNvbnRleHRfbWVudV9o
aWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisKICAgICBFaW5hX0Jvb2wgKCpwb3B1cF9t
ZW51X3Nob3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX1JlY3RhbmdsZSByZWN0LCBF
d2tfVGV4dF9EaXJlY3Rpb24gdGV4dF9kaXJlY3Rpb24sIGRvdWJsZSBwYWdlX3NjYWxlX2ZhY3Rv
ciwgRXdrX1BvcHVwX01lbnUgKm1lbnUpOwogICAgIEVpbmFfQm9vbCAoKnBvcHVwX21lbnVfaGlk
ZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwogCkBAIC0xNjksNyArMTczLDcgQEAgc3RydWN0
IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9O
CiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0
KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0K
KyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21h
cnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0K
IAogLyoqCiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xh
c3Mgc3RydWN0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHRfbWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dF9tZW51LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMDA5ZDg0OTg3MjA2ZDc4OTgyZWIxZDk1YWI2OWZhMDc0NGM4YjI4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Nv
bnRleHRfbWVudS5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwg
U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCIKKyNp
bmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50LmgiCisjaW5jbHVk
ZSA8RVdlYktpdDIuaD4KKyNpbmNsdWRlIDxFY29yZS5oPgorCit1c2luZyBuYW1lc3BhY2UgRVdL
MlVuaXRUZXN0OworCitleHRlcm4gRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQqIGVudmlyb25tZW50
OworCitzdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tCYXNpY0NvbnRleHRNZW51SXRlbShFd2tfQ29u
dGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3
a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBjb25zdCBjaGFyKiB0aXRsZSwgRWlu
YV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKQoreworICAgIEFTU0VSVF9UUlVFKGl0
ZW0pOworCisgICAgRVhQRUNUX0VRKHR5cGUsIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dl
dChpdGVtKSk7CisgICAgRVhQRUNUX0VRKGFjdGlvbiwgZXdrX2NvbnRleHRfbWVudV9pdGVtX2Fj
dGlvbl9nZXQoaXRlbSkpOworICAgIEVYUEVDVF9TVFJFUSh0aXRsZSwgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX3RpdGxlX2dldChpdGVtKSk7CisgICAgRVhQRUNUX0VRKGNoZWNrZWQsIGV3a19jb250
ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldChpdGVtKSk7CisgICAgRVhQRUNUX0VRKGVuYWJsZWQs
IGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dldChpdGVtKSk7Cit9CisKK3N0YXRpYyBF
aW5hX0Jvb2wgc2hvd0NvbnRleHRNZW51KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwg
RXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV3a19Db250ZXh0X01lbnUqIGNvbnRleHRNZW51
KQoreworICAgIGNvbnN0IEVpbmFfTGlzdCogbGlzdCA9IGV3a19jb250ZXh0X21lbnVfaXRlbXNf
Z2V0KGNvbnRleHRNZW51KTsKKyAgICBFWFBFQ1RfRVEoNCwgZWluYV9saXN0X2NvdW50KGxpc3Qp
KTsKKworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSA9IHN0YXRpY19jYXN0PEV3a19D
b250ZXh0X01lbnVfSXRlbSo+KGVpbmFfbGlzdF9udGgobGlzdCwgMCkpOworICAgIGNoZWNrQmFz
aWNDb250ZXh0TWVudUl0ZW0oaXRlbSwgRVdLX0FDVElPTl9UWVBFLCBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX0dPX0JBQ0ssICJHbyBCYWNrIiwgZmFsc2UsIHRydWUpOworCisgICAgaXRlbSA9
IHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGVpbmFfbGlzdF9udGgobGlzdCwg
MSkpOworICAgIGNoZWNrQmFzaWNDb250ZXh0TWVudUl0ZW0oaXRlbSwgRVdLX0FDVElPTl9UWVBF
LCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZPUldBUkQsICJHbyBGb3J3YXJkIiwgZmFs
c2UsIHRydWUpOworICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldChpdGVtLCBm
YWxzZSk7CisgICAgRVhQRUNUX0ZBTFNFKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dl
dChpdGVtKSk7CisKKyAgICBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVt
Kj4oZWluYV9saXN0X250aChsaXN0LCAyKSk7CisgICAgY2hlY2tCYXNpY0NvbnRleHRNZW51SXRl
bShpdGVtLCBFV0tfQUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RPUCwg
IlN0b3AiLCBmYWxzZSwgdHJ1ZSk7CisgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRf
c2V0KGl0ZW0sIHRydWUpOworICAgIEVYUEVDVF9UUlVFKGV3a19jb250ZXh0X21lbnVfaXRlbV9j
aGVja2VkX2dldChpdGVtKSk7CisKKyAgICBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRf
TWVudV9JdGVtKj4oZWluYV9saXN0X250aChsaXN0LCAzKSk7CisgICAgY2hlY2tCYXNpY0NvbnRl
eHRNZW51SXRlbShpdGVtLCBFV0tfQUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfUkVMT0FELCAiUmVsb2FkIiwgZmFsc2UsIHRydWUpOworICAgIGV3a19jb250ZXh0X21lbnVf
aXRlbV90aXRsZV9zZXQoaXRlbSwgIlJlZnJlc2giKTsKKyAgICBFWFBFQ1RfU1RSRVEoIlJlZnJl
c2giLCBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGl0ZW0pKTsKKworICAgIEV3a19D
b250ZXh0X01lbnVfSXRlbSogbmV3SXRlbSA9IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRVdL
X0FDVElPTl9UWVBFLCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09USEVSLCBjb250ZXh0TWVu
dSwgMCwgIk5ldyBDdXN0b20gSXRlbSIsIGZhbHNlLCB0cnVlKTsKKyAgICBFWFBFQ1RfVFJVRShu
ZXdJdGVtKTsKKyAgICBld2tfY29udGV4dF9tZW51X2l0ZW1fZnJlZShuZXdJdGVtKTsKKworICAg
IEVYUEVDVF9UUlVFKGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QoY29udGV4dE1lbnUsIGl0
ZW0pKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX3NlbGVjdCkKK3sKKyAgICBjb25zdCBjaGFyKiBpdGVtU2Vs
ZWN0SFRNTCA9CisgICAgICAgICI8aHRtbD4iCisgICAgICAgICI8Ym9keT48YSBocmVmPWh0dHA6
Ly93d3cuZ29vZ2xlLmNvbT5UZXN0IExpbms8L2E+PC9ib2R5PiIKKyAgICAgICAgIjwvYm9keT48
L2h0bWw+IjsgCisKKyAgICBld2tWaWV3Q2xhc3MoKS0+Y29udGV4dF9tZW51X3Nob3cgPSBzaG93
Q29udGV4dE1lbnU7CisKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwg
aXRlbVNlbGVjdEhUTUwsICJmaWxlOi8vLyIsIDApOworICAgIG1vdXNlQ2xpY2soMjAsIDMwLCAv
KlJpZ2h0Ki8gMyk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsTG9hZEZpbmlzaGVkKCkpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNs
aWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xp
ZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTg2MDI4ZTBkZDY0MzA3MTYyNzMxZjE3ZjM1ZTJmM2Zh
Njg1MWQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9D
b250ZXh0TWVudUNsaWVudEVmbC5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRF
ZmwuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKyNpbmNsdWRlICJXS0FycmF5LmgiCisjaW5jbHVkZSAiV0tQYWdlLmgiCisjaW5jbHVk
ZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiICAgCisjaW5jbHVkZSA8RXZhcy5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgaW5saW5lIENvbnRleHRNZW51Q2xpZW50RWZsKiB0
b0NvbnRleHRDbGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVDbGllbnRFZmwqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSk7Cit9CisKK0NvbnRleHRNZW51Q2xpZW50RWZsOjpDb250ZXh0TWVudUNsaWVudEVm
bChFd2tWaWV3SW1wbCogdmlld0ltcGwpCisgICAgOiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQorewor
ICAgIFdLUGFnZVJlZiBwYWdlUmVmID0gbV92aWV3SW1wbC0+d2tQYWdlKCk7CisgICAgQVNTRVJU
KHBhZ2VSZWYpOworCisgICAgV0tQYWdlQ29udGV4dE1lbnVDbGllbnQgY29udGV4dE1lbnVDbGll
bnQ7CisgICAgbWVtc2V0KCZjb250ZXh0TWVudUNsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZUNvbnRl
eHRNZW51Q2xpZW50KSk7CisgICAgY29udGV4dE1lbnVDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VD
b250ZXh0TWVudUNsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIGNvbnRleHRNZW51Q2xpZW50LmNs
aWVudEluZm8gPSB0aGlzOworICAgIGNvbnRleHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJv
bVByb3Bvc2VkTWVudV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwID0gMDsKKyAgICBjb250ZXh0TWVu
dUNsaWVudC5jdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZCA9IDA7CisgICAgY29udGV4dE1l
bnVDbGllbnQuY29udGV4dE1lbnVEaXNtaXNzZWQgPSAwOworICAgIGNvbnRleHRNZW51Q2xpZW50
LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSA9IDA7CisKKyAgICBXS1BhZ2VTZXRQYWdl
Q29udGV4dE1lbnVDbGllbnQocGFnZVJlZiwgJmNvbnRleHRNZW51Q2xpZW50KTsKK30KKwordm9p
ZCBDb250ZXh0TWVudUNsaWVudEVmbDo6Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdL
UGFnZVJlZiwgV0tBcnJheVJlZiwgV0tBcnJheVJlZiosIFdLSGl0VGVzdFJlc3VsdFJlZiwgV0tU
eXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmIyOWU0ZWQzY2VjY2JkMzM3ZDg4N2M1YjU0NTQ1MDFkZjc1YjFhYzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xp
ZW50RWZsLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1z
dW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IENvbnRleHRNZW51Q2xpZW50RWZsX2gKKyNkZWZpbmUgQ29udGV4dE1lbnVDbGllbnRFZmxfaAor
CisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dC5oIgorI2lu
Y2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CitjbGFzcyBFd2tWaWV3SW1wbDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENvbnRl
eHRNZW51Q2xpZW50RWZsIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDb250ZXh0
TWVudUNsaWVudEVmbD4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ29udGV4dE1lbnVDbGllbnRFZmwodmlld0ltcGwpKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUo
V0tQYWdlUmVmLCBXS0FycmF5UmVmIHByb3Bvc2VkTWVudSwgV0tBcnJheVJlZiogbmV3TWVudSwg
V0tIaXRUZXN0UmVzdWx0UmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENvbnRleHRNZW51Q2xpZW50RWZsKEV3
a1ZpZXdJbXBsKik7CisKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gQ29udGV4dE1lbnVDbGllbnRFZmxfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcAppbmRleCBi
YjU3M2NmYmVkMTZkMzM1ZTRkNzBhYTU0Y2ZlMzMwNDBiYjc5YmU5Li40ZWE3MjQxYWFiNTU5NTg0
NWY0ZGY3MGU4NGM5YmMwM2U5ZjUzNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIldl
YkNvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSAi
V2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgi
CkBAIC0yMTksMTAgKzIxOSw5IEBAIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VD
bGllbnRCYXNlOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqCiAgICAgcmV0dXJu
IFdlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUobV92aWV3SW1wbCwgcGFnZSk7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRl
eHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK1Bhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94
eT4gUGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiBw
YWdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IFdlYkNvbnRleHRNZW51UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdJbXBsLCBwYWdlKTsKIH0KIAog
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM3
ZTBlYjgxNjMzMzUzYzE2MzNkMGNlZmI1OWVkNTdmNTJjNDViMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHAK
QEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0
cm9uaWNzLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbnRl
eHRNZW51UHJveHlFZmwuaCIKKworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorCisjaW5jbHVk
ZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCisj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNv
bnRleHRNZW51UHJveHlFZmw6OldlYkNvbnRleHRNZW51UHJveHlFZmwoRXdrVmlld0ltcGwqIHZp
ZXdJbXBsLCBXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQor
ICAgICwgbV9wYWdlKHBhZ2UpCit7Cit9CisKK1dlYkNvbnRleHRNZW51UHJveHlFZmw6On5XZWJD
b250ZXh0TWVudVByb3h5RWZsKCkKK3sKK30KKwordm9pZCBXZWJDb250ZXh0TWVudVByb3h5RWZs
OjpzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25z
dCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQoreworICAgIG1fdmlld0lt
cGwtPnNob3dDb250ZXh0TWVudSh0aGlzLCBwb3NpdGlvbiwgaXRlbXMpOworfQorCit2b2lkIFdl
YkNvbnRleHRNZW51UHJveHlFZmw6OmhpZGVDb250ZXh0TWVudSgpCit7CisgICAgbV92aWV3SW1w
bC0+aGlkZUNvbnRleHRNZW51KCk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRl
bSkKK3sKKyAgICBtX3BhZ2UtPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGl0ZW0pOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVBy
b3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJv
eHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lN2JlMmFiOWNlYjVkZGNmMWM0NjJiNDU1MzhjMzI5M2EyMjI4
ZjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJD
b250ZXh0TWVudVByb3h5RWZsLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb250ZXh0
TWVudVByb3h5RWZsX2gKKyNkZWZpbmUgV2ViQ29udGV4dE1lbnVQcm94eUVmbF9oCisKKyNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRQ
b2ludC5oPgorCitjbGFzcyBFd2tWaWV3SW1wbDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNz
IFdlYkNvbnRleHRNZW51UHJveHlFZmwgOiBwdWJsaWMgV2ViQ29udGV4dE1lbnVQcm94eSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eUVmbD4gY3Jl
YXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250ZXh0TWVudVByb3h5RWZsKHZpZXdJbXBs
LCBwYWdlKSk7CisgICAgfQorCisgICAgfldlYkNvbnRleHRNZW51UHJveHlFZmwoKTsKKworICAg
IHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVj
dG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jik7CisgICAgdm9pZCBoaWRlQ29udGV4dE1lbnUo
KTsKKworICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1l
bnVJdGVtRGF0YSYpOworCitwcml2YXRlOgorICAgIFdlYkNvbnRleHRNZW51UHJveHlFZmwoRXdr
Vmlld0ltcGwqLCBXZWJQYWdlUHJveHkqKTsKKworICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBs
OworICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOworfTsKKworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorI2VuZGlmIC8vIFdlYkNvbnRl
eHRNZW51UHJveHlFZmxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174905</attachid>
            <date>2012-11-19 00:24:53 -0800</date>
            <delta_ts>2012-11-19 00:37:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96200-20121119172243.patch</filename>
            <type>text/plain</type>
            <size>69153</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzAwNmQ1NWQyODFjZDZl
OWFjMzg1OGVlMmJhZmYzMGYwOGViYTU2MS4uZWJlMzhiMjM1YWZmNjFmYjMwYzc4ZDBiNDgxN2Yy
OWJhYWYwYTY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTE5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0sy
XSBTdXBwb3J0IENvbnRleHQgTWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICBFRkwg
cG9ydCBhbHNvIGRvZXNuJ3QgaGlkZSB1bmF2YWlsYWJsZSBtZW51cyBhcyBndGsgcG9ydC4KKwog
MjAxMi0xMS0xNiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgd2ViYXVkaW86IGxlYWs6IEF1ZGlvQ29udGV4dCBvYmplY3RzIGFyZSBsZWFraW5nLiBU
aGV5IHJldGFpbiAzNm1iIG9mIHNoYXJlZCBkYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDc1ZDA3Mzc4NWMy
M2Y4NDkyOGQ3ZTNkZjU4YTQ5OTgwNDU4ZWE0ZjYuLjU3MjU2NTJhMzM4ZmQyNGEyNGEyNjY0YTBh
YWNlNGY1ZTkyN2Y2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MiBAQAorMjAxMi0xMS0xOCAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxd
W1dLMl0gU3VwcG9ydCBDb250ZXh0IE1lbnUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk2MjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzdXBwb3J0cyBXSzIgRUZMJ3MgY29udGV4dCBt
ZW51IGFzIFdLMSBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlIHdlIGNhbid0IHVzZSBlbGVtZW50YXJ5
IGluIGluc2lkZSBXZWJLaXQuCisgICAgICAgIE9ubHkgYmFzaWMgZnVuY3Rpb25hbGl0aWVzIG9m
IGNvbnRleHQgbWVudSBhcmUgc3VwcG9ydGVkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21h
a2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAgICAgIChFd2tWaWV3SW1wbDo6
RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNob3dDb250ZXh0TWVudSk6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6aGlkZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEV3
a1ZpZXdJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51
LmNwcDogQWRkZWQuCisgICAgICAgIChFd2tfQ29udGV4dF9NZW51OjpFd2tfQ29udGV4dF9NZW51
KToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnU6On5Fd2tfQ29udGV4dF9NZW51KToKKyAgICAg
ICAgKEV3a19Db250ZXh0X01lbnU6OmhpZGUpOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudTo6
YXBwZW5kSXRlbSk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAgICAg
ICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9mcmVlKToKKyAgICAgICAgKEV3a19Db250ZXh0X01l
bnU6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVf
aGlkZSk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1zX2dldCk6CisgICAgICAgIChl
d2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dF9tZW51Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoRXdrX0NvbnRleHRf
TWVudV9JdGVtOjpFd2tfQ29udGV4dF9NZW51X0l0ZW0pOgorICAgICAgICAoRXdrX0NvbnRleHRf
TWVudV9JdGVtOjp0eXBlKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6c2V0VHlw
ZSk6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06OmFjdGlvbik6CisgICAgICAgIChF
d2tfQ29udGV4dF9NZW51X0l0ZW06OnNldEFjdGlvbik6CisgICAgICAgIChFd2tfQ29udGV4dF9N
ZW51X0l0ZW06OnRpdGxlKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6c2V0VGl0
bGUpOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjpjaGVja2VkKToKKyAgICAgICAg
KEV3a19Db250ZXh0X01lbnVfSXRlbTo6c2V0Q2hlY2tlZCk6CisgICAgICAgIChFd2tfQ29udGV4
dF9NZW51X0l0ZW06OmVuYWJsZWQpOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjpz
ZXRFbmFibGVkKToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldCk6Cisg
ICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQpOgorICAgICAgICAoZXdrX2Nv
bnRleHRfbWVudV9pdGVtX2FjdGlvbl9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9p
dGVtX2FjdGlvbl9zZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dl
dCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KToKKyAgICAgICAg
KGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldCk6CisgICAgICAgIChld2tfY29udGV4
dF9tZW51X2l0ZW1fY2hlY2tlZF9zZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVt
X2VuYWJsZWRfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3Nl
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRl
bV9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtKToKKyAg
ICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudSk6CisgICAgICAgIChFd2tfQ29udGV4
dF9NZW51OjpjcmVhdGUpOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudTo6aXRlbXMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHRfbWVudS5jcHA6IEFkZGVkLgorICAgICAg
ICAoY2hlY2tCYXNpY0NvbnRleHRNZW51SXRlbSk6CisgICAgICAgIChzaG93Q29udGV4dE1lbnUp
OgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51
Q2xpZW50RWZsLmNwcDogQWRkZWQuCisgICAgICAgICh0b0NvbnRleHRDbGllbnRFZmwpOgorICAg
ICAgICAoQ29udGV4dE1lbnVDbGllbnRFZmw6OkNvbnRleHRNZW51Q2xpZW50RWZsKToKKyAgICAg
ICAgKENvbnRleHRNZW51Q2xpZW50RWZsOjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQ29udGV4dE1lbnVDbGllbnRFZmwpOgorICAg
ICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNsaWVudEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEJhc2U6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9l
ZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6V2ViQ29udGV4dE1lbnVQ
cm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmw6On5XZWJD
b250ZXh0TWVudVByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94
eUVmbDo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQ
cm94eUVmbDo6aGlkZUNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eUVmbDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJDb250ZXh0TWVudVByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVQcm94eUVmbDo6Y3JlYXRlKToKKwogMjAxMi0xMS0xOCAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBXcm9uZyB0cmFu
c2Zvcm0gd2hlbiB1c2luZyBzb2Z0d2FyZSBwYXRoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDc5Nzk3MWQwZjU2Yzk1MjRlMDI0NDhjZmRk
YzRiOWU1ZWRmYTE2OWQuLjU2NDBkYzc2OTdlODIzNjM3NmM2NTMxMTJmYzFiODMwMGY0YTk2MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAg
LTg3Niw4ICs4NzYsOCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQog
ICAgICAgICAgICAgICAgIGlmICghKGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPnBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLT5oYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpKSkgewogI2Vu
ZGlmCiAKLSAgICAgICAgICAgICAgICAvLyBJbiBHVEsrIHVuYXZhaWxhYmxlIGl0ZW1zIGFyZSBu
b3QgaGlkZGVuIGJ1dCBpbnNlbnNpdGl2ZQotI2lmIFBMQVRGT1JNKEdUSykKKyAgICAgICAgICAg
ICAgICAvLyBJbiBHVEsrIGFuZCBFRkwsIHVuYXZhaWxhYmxlIGl0ZW1zIGFyZSBub3QgaGlkZGVu
IGJ1dCBpbnNlbnNpdGl2ZS4KKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAg
ICAgICAgICAgICAgICBhcHBlbmRJdGVtKEJhY2tJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsK
ICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKEZvcndhcmRJdGVtLCBtX2NvbnRleHRNZW51Lmdl
dCgpKTsKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKFN0b3BJdGVtLCBtX2NvbnRleHRNZW51
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggYmI4NzQ3YjFjYjFmNTgzOGMy
ZGQ3Y2NkZGY3ODI5MTFlYTY3YzFlNS4uM2I3NGVkYjUwNTNmZjdhMWMyM2Q2ODExMGY1YTU5MDk0
ZGUxZGVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQ5LDYgKzQ5LDggQEAgTElT
VChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tf
Zm9yd2FyZF9saXN0X2l0ZW0uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3Bp
Y2tlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKyAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29v
a2llX21hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2RhdGFiYXNlX21hbmFn
ZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHAKQEAgLTc4
LDYgKzgwLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3Mv
ZWZsL0JhdHRlcnlQcm92aWRlci5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0NvbnRleHRIaXN0b3J5
Q2xpZW50RWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuY3Bw
CiAgICAgVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCiAgICAgVUlQcm9jZXNz
L2VmbC9GaW5kQ2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5j
cHAKQEAgLTk1LDYgKzk4LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQ
cm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1ZpYnJhdGlv
bkNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCisgICAg
VUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9l
ZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dl
Ykluc3BlY3RvclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZs
LmNwcApAQCAtMzYyLDYgKzM2Niw3IEBAIFNFVChFV0syVW5pdFRlc3RzX0JJTkFSSUVTCiAgICAg
dGVzdF9ld2syX2NvbG9yX3BpY2tlcgogICAgIHRlc3RfZXdrMl9jb250ZXh0CiAgICAgdGVzdF9l
d2syX2NvbnRleHRfaGlzdG9yeV9jYWxsYmFja3MKKyAgICB0ZXN0X2V3azJfY29udGV4dF9tZW51
CiAgICAgdGVzdF9ld2syX2Nvb2tpZV9tYW5hZ2VyCiAgICAgdGVzdF9ld2syX2RhdGFiYXNlX21h
bmFnZXIKICAgICB0ZXN0X2V3azJfZG93bmxvYWRfam9iCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCAwN2NhMTI5MzUwZjRlZGI3ZTNkYjRiZjkyYWQ3
MGI4YzNhMjA5Y2U0Li4yMmQ2MTY4MjVlMWNkNTE4ODk1YjJlN2RjN2VjNWI4MzIzMjI1OTU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTMzLDYg
KzMzLDggQEAKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5oIgogI2luY2x1
ZGUgImV3a19jb2xvcl9waWNrZXIuaCIKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgorI2luY2x1
ZGUgImV3a19jb250ZXh0X21lbnUuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0ZW0u
aCIKICNpbmNsdWRlICJld2tfY29va2llX21hbmFnZXIuaCIKICNpbmNsdWRlICJld2tfZGF0YWJh
c2VfbWFuYWdlci5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2IuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAppbmRleCBhY2EyZDRk
ZWUxYWFmMmI4M2Q2NGEwY2M4Zjg0NzE4M2Q0Zjc3OTAyLi5lNzI3OTIzMzcwNmUwZDcwNWViY2I5
ZDg4Mjk0NTMzM2FjMzRmYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKIAorI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xp
ZW50RWZsLmgiCiAjaW5jbHVkZSAiRWZsU2NyZWVuVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRmlu
ZENsaWVudEVmbC5oIgogI2luY2x1ZGUgIkZvcm1DbGllbnRFZmwuaCIKQEAgLTQ1LDYgKzQ2LDcg
QEAKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgImV3a19iYWNrX2Zvcndh
cmRfbGlzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlcl9wcml2YXRlLmgi
CisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Nv
bnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29uX2RhdGFiYXNlX3ByaXZhdGUu
aCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCIKQEAgLTExNCw2ICsx
MTYsNyBAQCBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NS
ZWZQdHI8RXdrQ29udGV4dD4gY29udGV4dCwgUGFzcwogICAgICwgbV9wYWdlUG9saWN5Q2xpZW50
KFBhZ2VQb2xpY3lDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fcGFnZVVJQ2xpZW50
KFBhZ2VVSUNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9yZXNvdXJjZUxvYWRDbGll
bnQoUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2NvbnRleHRN
ZW51Q2xpZW50KENvbnRleHRNZW51Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2Zp
bmRDbGllbnQoRmluZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9mb3JtQ2xpZW50
KEZvcm1DbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICNpZiBFTkFCTEUoVklCUkFUSU9OKQpAQCAt
NzE0LDYgKzcxNywzOCBAQCB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Db250ZW50c1NpemVDaGFu
Z2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X1RFWFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsIFJUTCk7CiBDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hULCBMVFIpOwogCit2b2lk
IEV3a1ZpZXdJbXBsOjpzaG93Q29udGV4dE1lbnUoV2ViQ29udGV4dE1lbnVQcm94eUVmbCogY29u
dGV4dE1lbnVQcm94eSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQoreworICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisgICAgQVNTRVJUKHNkLT5hcGkpOworCisgICAg
QVNTRVJUKGNvbnRleHRNZW51UHJveHkpOworCisgICAgaWYgKCFzZC0+YXBpLT5jb250ZXh0X21l
bnVfc2hvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY29udGV4dE1lbnUpCisgICAg
ICAgIGhpZGVDb250ZXh0TWVudSgpOworCisgICAgbV9jb250ZXh0TWVudSA9IEV3a19Db250ZXh0
X01lbnU6OmNyZWF0ZSh0aGlzLCBjb250ZXh0TWVudVByb3h5LCBpdGVtcyk7CisKKyAgICBzZC0+
YXBpLT5jb250ZXh0X21lbnVfc2hvdyhzZCwgcG9zaXRpb24ueCgpLCBwb3NpdGlvbi55KCksIG1f
Y29udGV4dE1lbnUuZ2V0KCkpOworfQorCit2b2lkIEV3a1ZpZXdJbXBsOjpoaWRlQ29udGV4dE1l
bnUoKQoreworICAgIGlmICghbV9jb250ZXh0TWVudSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsKKyAgICBBU1NFUlQoc2QtPmFw
aSk7CisKKyAgICBpZiAoc2QtPmFwaS0+Y29udGV4dF9tZW51X2hpZGUpCisgICAgICAgIHNkLT5h
cGktPmNvbnRleHRfbWVudV9oaWRlKHNkKTsKKworICAgIG1fY29udGV4dE1lbnUuY2xlYXIoKTsK
K30KKwogdm9pZCBFd2tWaWV3SW1wbDo6cmVxdWVzdFBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94
eUVmbCogcG9wdXBNZW51UHJveHksIGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24g
dGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBv
cHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCmluZGV4IDcyODAwYmFlZDdkZDk3M2IxY2RiMWFhZjZm
YWU2NWM5ZDcwYzRmNDguLjExNWQ3ODc4NjdhMWJlZDBhZjZjY2NiMWRlYzg5NjAwOGNmMGUwODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaApA
QCAtNDYsNiArNDYsNyBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgQ29u
dGV4dE1lbnVDbGllbnRFZmw7CiBjbGFzcyBGaW5kQ2xpZW50RWZsOwogY2xhc3MgRm9ybUNsaWVu
dEVmbDsKIGNsYXNzIElucHV0TWV0aG9kQ29udGV4dEVmbDsKQEAgLTU0LDYgKzU1LDggQEAgY2xh
c3MgUGFnZUxvYWRDbGllbnRFZmw7CiBjbGFzcyBQYWdlUG9saWN5Q2xpZW50RWZsOwogY2xhc3Mg
UGFnZVVJQ2xpZW50RWZsOwogY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOworY2xhc3MgV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YTsKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlFZmw7CiBjbGFz
cyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQb3B1cEl0ZW07
CkBAIC03NCw2ICs3Nyw3IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBFd2tDb250ZXh0OwogY2xh
c3MgRXdrX0JhY2tfRm9yd2FyZF9MaXN0OwogY2xhc3MgRXdrX0NvbG9yX1BpY2tlcjsKK2NsYXNz
IEV3a0NvbnRleHRNZW51OwogY2xhc3MgRXdrX1BvcHVwX01lbnU7CiBjbGFzcyBFd2tfU2V0dGlu
Z3M7CiAKQEAgLTE2MSw2ICsxNjUsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcXVlc3RQb3B1
cE1lbnUoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbCosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25z
dCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZElu
ZGV4KTsKICAgICB2b2lkIGNsb3NlUG9wdXBNZW51KCk7CisgICAgCisgICAgdm9pZCBzaG93Q29u
dGV4dE1lbnUoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZsKiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0
ZW1EYXRhPiYgaXRlbXMpOworICAgIHZvaWQgaGlkZUNvbnRleHRNZW51KCk7CiAKICAgICB2b2lk
IHVwZGF0ZVRleHRJbnB1dFN0YXRlKCk7CiAKQEAgLTIzMyw2ICsyNDAsNyBAQCBwcml2YXRlOgog
ICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VQb2xpY3lDbGllbnRFZmw+IG1fcGFnZVBvbGljeUNsaWVu
dDsKICAgICBPd25QdHI8V2ViS2l0OjpQYWdlVUlDbGllbnRFZmw+IG1fcGFnZVVJQ2xpZW50Owog
ICAgIE93blB0cjxXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbD4gbV9yZXNvdXJjZUxvYWRD
bGllbnQ7CisgICAgT3duUHRyPFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnRFZmw+IG1fY29udGV4
dE1lbnVDbGllbnQ7CiAgICAgT3duUHRyPFdlYktpdDo6RmluZENsaWVudEVmbD4gbV9maW5kQ2xp
ZW50OwogICAgIE93blB0cjxXZWJLaXQ6OkZvcm1DbGllbnRFZmw+IG1fZm9ybUNsaWVudDsKICNp
ZiBFTkFCTEUoVklCUkFUSU9OKQpAQCAtMjU1LDYgKzI2Myw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX3RvdWNoRXZlbnRzRW5hYmxlZDsKICNlbmRpZgogICAgIFdlYkNvcmU6OlRpbWVyPEV3a1Zp
ZXdJbXBsPiBtX2Rpc3BsYXlUaW1lcjsKKyAgICBPd25QdHI8RXdrQ29udGV4dE1lbnU+IG1fY29u
dGV4dE1lbnU7CiAgICAgT3duUHRyPEV3a19Qb3B1cF9NZW51PiBtX3BvcHVwTWVudTsKICAgICBP
d25QdHI8V2ViS2l0OjpJbnB1dE1ldGhvZENvbnRleHRFZmw+IG1faW5wdXRNZXRob2RDb250ZXh0
OwogICAgIE93blB0cjxFd2tfQ29sb3JfUGlja2VyPiBtX2NvbG9yUGlja2VyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kY2I0NzMwZDlkNzc3YzJkZDA3Y2Q1MjRiNGYxMzA0YjczMDgxYWY3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHRfbWVudS5jcHAKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnUu
aCIKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCisj
aW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRN
ZW51UHJveHlFZmwuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0ZW0uaCIKKyNpbmNs
dWRlICJld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19jb250
ZXh0X21lbnVfcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitFd2tDb250
ZXh0TWVudTo6RXdrQ29udGV4dE1lbnUoRXdrVmlld0ltcGwqIHZpZXdJbXBsLCBXZWJDb250ZXh0
TWVudVByb3h5RWZsKiBjb250ZXh0TWVudVByb3h5LCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJD
b250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpCisgICAgOiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQor
ICAgICwgbV9jb250ZXh0TWVudVByb3h5KGNvbnRleHRNZW51UHJveHkpCisgICAgLCBtX2NvbnRl
eHRNZW51SXRlbXMoMCkKK3sKKyAgICBjb25zdCBzaXplX3Qgc2l6ZSA9IGl0ZW1zLnNpemUoKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgbV9jb250ZXh0
TWVudUl0ZW1zID0gZWluYV9saXN0X2FwcGVuZChtX2NvbnRleHRNZW51SXRlbXMsIEV3a19Db250
ZXh0X01lbnVfSXRlbTo6Y3JlYXRlKGl0ZW1zW2ldKS5sZWFrUHRyKCkpOworfQorCitFd2tDb250
ZXh0TWVudTo6fkV3a0NvbnRleHRNZW51KCkKK3sKKyAgICB2b2lkKiBkYXRhOworICAgIEVJTkFf
TElTVF9GUkVFKG1fY29udGV4dE1lbnVJdGVtcywgZGF0YSkKKyAgICAgICAgZGVsZXRlIHN0YXRp
Y19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGRhdGEpOworfQorCit2b2lkIEV3a0NvbnRl
eHRNZW51OjpoaWRlKCkKK3sKKyAgICBtX3ZpZXdJbXBsLT5oaWRlQ29udGV4dE1lbnUoKTsKK30K
KworRXdrX0NvbnRleHRfTWVudV9JdGVtKiBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KEV3a19D
b250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24g
YWN0aW9uLCBFd2tfQ29udGV4dF9NZW51KiBwYXJlbnRNZW51LCBFd2tfQ29udGV4dF9NZW51KiBz
dWJNZW51LCBjb25zdCBjaGFyKiB0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBl
bmFibGVkKQoreworICAgIEV3a0NvbnRleHRNZW51SXRlbSogbmV3SXRlbSA9IEV3a0NvbnRleHRN
ZW51SXRlbTo6Y3JlYXRlKHR5cGUsIGFjdGlvbiwgcGFyZW50TWVudSwgc3ViTWVudSwgdGl0bGUs
IGNoZWNrZWQsIGVuYWJsZWQpLmxlYWtQdHIoKTsKKworICAgIHJldHVybiBuZXdJdGVtOworfQor
Cit2b2lkIGV3a19jb250ZXh0X21lbnVfaXRlbV9mcmVlKEV3a19Db250ZXh0X01lbnVfSXRlbSog
aXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihpdGVtKTsKKworICAgIGRl
bGV0ZSBpdGVtOworfQorCit2b2lkIEV3a0NvbnRleHRNZW51Ojpjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZChjb25zdCBXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCit7CisgICAg
bV9jb250ZXh0TWVudVByb3h5LT5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZChpdGVtKTsgCit9IAor
CitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9oaWRlKEV3a19Db250ZXh0X01lbnUqIG1lbnUp
Cit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIGZhbHNlKTsKKwor
ICAgIG1lbnUtPmhpZGUoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBFaW5hX0xp
c3QqIGV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUqIG1l
bnUpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIDApOworCisg
ICAgcmV0dXJuIG1lbnUtPml0ZW1zKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51
X2l0ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUqIG1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRl
bSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudSwgZmFs
c2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisK
KyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlPihpdGVtLT50eXBlKCkpOworICAgIFdlYkNvcmU6OkNv
bnRleHRNZW51QWN0aW9uIGFjdGlvbiA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51
QWN0aW9uPihpdGVtLT5hY3Rpb24oKSk7CisKKyAgICBXZWJDb250ZXh0TWVudUl0ZW1EYXRhIG5l
d0l0ZW0odHlwZSwgYWN0aW9uLCBpdGVtLT50aXRsZSgpLCBpdGVtLT5lbmFibGVkKCksIGl0ZW0t
PmNoZWNrZWQoKSk7CisgICAgbWVudS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQobmV3SXRlbSk7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YWY1MzViNGZmZDg1OTg1
Yzg5ZDcyZmJiNTE0NGNhM2MzZDVmZmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudS5oCkBAIC0wLDAgKzEsMTAxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdr
X2NvbnRleHRfbWVudS5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBDb250ZXh0IE1l
bnUgQVBJLgorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRfbWVudV9oCisjZGVmaW5lIGV3a19j
b250ZXh0X21lbnVfaAorCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVtLmgiCisjaW5j
bHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlm
CisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBFd2tfQ29udGV4dF9NZW51ICovCit0eXBl
ZGVmIHN0cnVjdCBFd2tDb250ZXh0TWVudSBFd2tfQ29udGV4dF9NZW51OworCisvKioKKyAqIENy
ZWF0ZXMgYSBuZXcgaXRlbSBvZiB0aGUgY29udGV4dCBtZW51LgorICoKKyAqIEBwYXJhbSB0eXBl
IHNwZWNpZmllcyBhIHR5cGUgb2YgdGhlIGl0ZW0KKyAqIEBwYXJhbSBhY3Rpb24gc3BlY2lmaWVz
IGEgYWN0aW9uIG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gcGFyZW50X21lbnUgc3BlY2lmaWVzIGEg
cGFyZW50IG1lbnUgb2YgdGhlIGl0ZW0KKyAqIEBwYXJhbSBzdWJtZW51IHNwZWNpZmllcyBhIHN1
Ym1lbnUgb2YgdGhlIGl0ZW0KKyAqIEBwYXJhbSB0aXRsZSBzcGVjaWZpZXMgYSB0aXRsZSBvZiB0
aGUgaXRlbQorICogQHBhcmFtIGNoZWNrZWQgQGMgRUlOQV9UUlVFIGlmIHRoZSBpdGVtIHNob3Vs
ZCBiZSB0b2dnbGVkIG9yIEBjIEVJTkFfRkFMU0UgaWYgbm90CisgKiBAcGFyYW0gZW5hYmxlZCBA
YyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBpdGVtIG9yIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJs
ZQorICogQHJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgbmV3IGl0ZW0gb24gc3VjY2VzcyBvciBA
YyBOVUxMIG9uIGZhaWx1cmUKKyAqCisgKiBAbm90ZSBUaGUgcmV0dXJuIHZhbHVlIEBiIHNob3Vs
ZCBAYiBiZSBmcmVlZCBhZnRlciB1c2UKKyAqLworRUFQSSBFd2tfQ29udGV4dF9NZW51X0l0ZW0g
KmV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlw
ZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIEV3a19Db250ZXh0X01lbnUg
KnBhcmVudF9tZW51LCBFd2tfQ29udGV4dF9NZW51ICpzdWJfbWVudSwgY29uc3QgY2hhciAqdGl0
bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCk7CisKKy8qKgorICogRGVz
dHJveXMgdGhlIGl0ZW0gb2YgdGhlIGNvbnRleHQgbWVudSBvYmplY3QuCisgKgorICogQHBhcmFt
IGl0ZW0gdGhlIGl0ZW0gdG8gZGVzdG9yeQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9o
aWRlCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfdW5yZWYKKyAqLworRUFQSSB2b2lkIGV3a19j
b250ZXh0X21lbnVfaXRlbV9mcmVlKEV3a19Db250ZXh0X01lbnVfSXRlbSAqaXRlbSk7CisKKy8q
KgorICogSGlkZXMgdGhlIGNvbnRleHQgbWVudSBvYmplY3QuCisgKgorICogQHBhcmFtIG1lbnUg
dGhlIGNvbnRleHQgbWVudSBvYmplY3QgdG8gaGlkZQorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29u
dGV4dF9tZW51X2l0ZW1fZnJlZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51
X2hpZGUoRXdrX0NvbnRleHRfTWVudSAqbWVudSk7CisKKy8qKgorICogR2V0cyB0aGUgbGlzdCBv
ZiBpdGVtcy4KKyAqCisgKiBAcGFyYW0gbyB0aGUgY29udGV4dCBtZW51IG9iamVjdCB0byBnZXQg
bGlzdCBvZiB0aGUgaXRlbXMKKyAqIEByZXR1cm4gdGhlIGxpc3Qgb2YgdGhlIGl0ZW1zIG9uIHN1
Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKi8KK0VBUEkgY29uc3QgRWluYV9MaXN0ICpl
d2tfY29udGV4dF9tZW51X2l0ZW1zX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51ICpvKTsKKwor
LyoqCisgKiBTZWxlY3RzIHRoZSBpdGVtIGZyb20gdGhlIGNvbnRleHQgbWVudSBvYmplY3QuCisg
KgorICogQHBhcmFtIG1lbnUgdGhlIGNvbnRleHQgbWVudSBvYmplY3QKKyAqIEBwYXJhbSBpdGVt
IHRoZSBpdGVtIGlzIHNlbGVjdGVkCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
IG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29u
dGV4dF9tZW51X2l0ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUgKm1lbnUsIEV3a19Db250ZXh0
X01lbnVfSXRlbSAqaXRlbSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNl
bmRpZiAvKiBld2tfY29udGV4dF9tZW51X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW0uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmExMGMwNGE4OWM1YjM1ZWRlYzAxNTAyMWViODYxZDNmYmE1N2JkNjIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51
X2l0ZW0uY3BwCkBAIC0wLDAgKzEsMjYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0
ZW0uaCIKKworI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmgiCisjaW5j
bHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworRXdrQ29u
dGV4dE1lbnVJdGVtOjpFd2tDb250ZXh0TWVudUl0ZW0oY29uc3QgV2ViQ29udGV4dE1lbnVJdGVt
RGF0YSYgaXRlbSkKKyAgICA6IG1fdHlwZShzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0
ZW1fVHlwZT4oaXRlbS50eXBlKCkpKQorICAgICwgbV9hY3Rpb24oc3RhdGljX2Nhc3Q8RXdrX0Nv
bnRleHRfTWVudV9JdGVtX0FjdGlvbj4oaXRlbS5hY3Rpb24oKSkpCisgICAgLCBtX3RpdGxlKGl0
ZW0udGl0bGUoKS51dGY4KCkuZGF0YSgpKQorICAgICwgbV9wYXJlbnRNZW51KDApCisgICAgLCBt
X3N1Yk1lbnUoMCkKKyAgICAsIG1faXNDaGVja2VkKGl0ZW0uY2hlY2tlZCgpKQorICAgICwgbV9p
c0VuYWJsZWQoaXRlbS5lbmFibGVkKCkpCit7Cit9CisKK0V3a0NvbnRleHRNZW51SXRlbTo6RXdr
Q29udGV4dE1lbnVJdGVtKEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3a19Db250
ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBFd2tfQ29udGV4dF9NZW51KiBwYXJlbnRNZW51
LCBFd2tfQ29udGV4dF9NZW51KiBzdWJNZW51LCBjb25zdCBjaGFyKiB0aXRsZSwgRWluYV9Cb29s
IGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBt
X2FjdGlvbihhY3Rpb24pCisgICAgLCBtX3RpdGxlKHRpdGxlKQorICAgICwgbV9wYXJlbnRNZW51
KHBhcmVudE1lbnUpCisgICAgLCBtX3N1Yk1lbnUoc3ViTWVudSkKKyAgICAsIG1faXNDaGVja2Vk
KGNoZWNrZWQpCisgICAgLCBtX2lzRW5hYmxlZChlbmFibGVkKQoreworfQorCitFd2tfQ29udGV4
dF9NZW51X0l0ZW1fVHlwZSBFd2tDb250ZXh0TWVudUl0ZW06OnR5cGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3R5cGU7Cit9CisKK3ZvaWQgRXdrQ29udGV4dE1lbnVJdGVtOjpzZXRUeXBlKEV3
a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUpCit7CisgICAgbV90eXBlID0gdHlwZTsKK30K
KworRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBFd2tDb250ZXh0TWVudUl0ZW06OmFjdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYWN0aW9uOworfQorCit2b2lkIEV3a0NvbnRleHRN
ZW51SXRlbTo6c2V0QWN0aW9uKEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKQor
eworICAgIG1fYWN0aW9uID0gYWN0aW9uOworfQorCitjb25zdCBjaGFyKiBFd2tDb250ZXh0TWVu
dUl0ZW06OnRpdGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90aXRsZTsKK30KKwordm9pZCBF
d2tDb250ZXh0TWVudUl0ZW06OnNldFRpdGxlKGNvbnN0IGNoYXIqIHRpdGxlKQoreworICAgIG1f
dGl0bGUgPSB0aXRsZTsKK30KKworYm9vbCBFd2tDb250ZXh0TWVudUl0ZW06OmNoZWNrZWQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2lzQ2hlY2tlZDsKK30KKwordm9pZCBFd2tDb250ZXh0TWVu
dUl0ZW06OnNldENoZWNrZWQoYm9vbCBjaGVja2VkKQoreworICAgIG1faXNDaGVja2VkID0gY2hl
Y2tlZDsKK30KKworYm9vbCBFd2tDb250ZXh0TWVudUl0ZW06OmVuYWJsZWQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2lzRW5hYmxlZDsKK30KKwordm9pZCBFd2tDb250ZXh0TWVudUl0ZW06OnNl
dEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1faXNFbmFibGVkID0gZW5hYmxlZDsKK30K
KworRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVf
Z2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgRVdLX0FDVElPTl9UWVBFKTsKKworICAgIHJldHVy
biBpdGVtLT50eXBlKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlw
ZV9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1f
VHlwZSB0eXBlKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBm
YWxzZSk7CisKKyAgICBpdGVtLT5zZXRUeXBlKHR5cGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK0V3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gZXdrX2NvbnRleHRfbWVudV9pdGVtX2Fj
dGlvbl9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X05PX0FDVElPTik7CisKKyAgICByZXR1cm4gaXRlbS0+YWN0aW9uKCk7Cit9CisKK0VpbmFfQm9v
bCBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0q
IGl0ZW0sIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKQoreworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICBpdGVtLT5zZXRB
Y3Rpb24oYWN0aW9uKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBjaGFyKiBld2tf
Y29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSog
aXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgMCk7CisK
KyAgICByZXR1cm4gaXRlbS0+dGl0bGUoKTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21l
bnVfaXRlbV90aXRsZV9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBjb25zdCBjaGFy
KiB0aXRsZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFs
c2UpOworCisgICAgaXRlbS0+c2V0VGl0bGUodGl0bGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQoY29uc3QgRXdr
X0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICByZXR1cm4gaXRlbS0+Y2hlY2tlZCgpOworfQor
CitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfc2V0KEV3a19Db250ZXh0
X01lbnVfSXRlbSogaXRlbSwgRWluYV9Cb29sIGNoZWNrZWQpCit7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKKworICAgIGl0ZW0tPnNldENoZWNrZWQo
Y2hlY2tlZCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0
X21lbnVfaXRlbV9lbmFibGVkX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0p
Cit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKKyAg
ICAKKyAgICByZXR1cm4gaXRlbS0+ZW5hYmxlZCgpOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2VuYWJsZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgRWlu
YV9Cb29sIGVuYWJsZWQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0
ZW0sIGZhbHNlKTsKKworICAgIGl0ZW0tPnNldEVuYWJsZWQoZW5hYmxlZCk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX05PX0FDVElPTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rp
b24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX09QRU5fTElOS19JTl9ORVdfV0lORE9XLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdP
cGVuTGlua0luTmV3V2luZG93KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19ET1dOTE9BRF9MSU5LX1RPX0RJU0ssIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzayk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9MSU5LX1RPX0NMSVBCT0FSRCwg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCk7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9JTUFH
RV9JTl9ORVdfV0lORE9XLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5l
d1dpbmRvdyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfRE9XTkxPQURfSU1BR0VfVE9fRElTSywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnRG93bmxvYWRJbWFnZVRvRGlzayk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9JTUFHRV9UT19DTElQQk9BUkQsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1VSTF9U
T19DTElQQk9BUkQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xp
cGJvYXJkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19PUEVOX0ZSQU1FX0lOX05FV19XSU5ET1csIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ09wZW5GcmFtZUluTmV3V2luZG93KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdDb3B5KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19HT19CQUNLLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdHb0JhY2spOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZP
UldBUkQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RPUCwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnU3RvcCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUkVMT0FELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdSZWxvYWQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX0NVVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ3V0KTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QQVNURSwg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUGFzdGUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFTEVDVF9BTEwsIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfR1VFU1MsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3MpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05PX0dVRVNTRVNfRk9VTkQsIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVfU1BFTExJTkcsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUFSTl9TUEVMTElORywgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1RIRVIsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ090aGVyKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19TRUFSQ0hfSU5fU1BPVExJR0hULCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0VBUkNIX1dFQiwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnU2VhcmNoV2ViKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MT09LX1VQX0lOX0RJQ1RJT05BUlksIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9XSVRIX0RFRkFVTFRfQVBQ
TElDQVRJT04sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5XaXRoRGVmYXVsdEFwcGxp
Y2F0aW9uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1BERkFDVFVBTF9TSVpFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZBY3R1YWxTaXpl
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BE
RlpPT01fSU4sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERlpvb21Jbik7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZaT09NX09VVCwgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtUERGWm9vbU91dCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZBVVRPX1NJWkUsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVBERkF1dG9TaXplKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1BERlNJTkdMRV9QQUdFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1QREZTaW5nbGVQYWdlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1BERkZBQ0lOR19QQUdFUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERG
RmFjaW5nUGFnZXMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9N
RU5VX0lURU1fUERGQ09OVElOVU9VUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGQ29udGlu
dW91cyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRF
TV9QREZORVhUX1BBR0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERk5leHRQYWdlKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlBSRVZJ
T1VTX1BBR0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERlByZXZpb3VzUGFnZSk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9M
SU5LLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluayk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX0dSQU1NQVIs
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUxMSU5HX01FTlUs
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19TUEVMTElOR19Q
QU5FTCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNL
X1NQRUxMSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVD
S19TUEVMTElOR19XSElMRV9UWVBJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NoZWNr
U3BlbGxpbmdXaGlsZVR5cGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tfR1JBTU1BUl9XSVRIX1NQRUxMSU5HLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmcpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0ZPTlRfTUVOVSwg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfRk9OVFMsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250cyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQk9MRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnQm9sZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfSVRBTElDLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1VO
REVSTElORSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PVVRMSU5FLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVFlMRVMsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ1N0eWxlcyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19DT0xPUlMsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1Nob3dDb2xvcnMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX1NQRUVDSF9NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdT
cGVlY2hNZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19TVEFSVF9TUEVBS0lORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3Rh
cnRTcGVha2luZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfU1RPUF9TUEVBS0lORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3Rv
cFNwZWFraW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19XUklUSU5HX0RJUkVDVElPTl9NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfREVGQVVMVF9ESVJFQ1RJT04sIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0xFRlRfVE9fUklHSFQsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19SSUdIVF9UT19MRUZULCBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUERGU0lOR0xFX1BBR0VfU0NST0xMSU5HLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQREZTaW5nbGVQYWdlU2Nyb2xsaW5nKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QREZGQUNJ
TkdfUEFHRVNfU0NST0xMSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNpbmdQ
YWdlc1Njcm9sbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfSU5TUEVDVF9FTEVNRU5ULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdJbnNwZWN0RWxlbWVudCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fTUVOVSwgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX0RFRkFVTFQsIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0KTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElP
Tl9MRUZUX1RPX1JJR0hULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9u
TGVmdFRvUmlnaHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdCk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9PUEVOX01FRElBX0lOX05FV19XSU5E
T1csIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5NZWRpYUluTmV3V2luZG93KTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZ
X01FRElBX0xJTktfVE9fQ0xJUEJPQVJELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5
TWVkaWFMaW5rVG9DbGlwYm9hcmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dMRV9NRURJQV9DT05UUk9MUywgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9scyk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVE9HR0xFX01FRElBX0xPT1AsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRU5URVJfVklERU9fRlVM
TFNDUkVFTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW4p
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X01FRElBX1BMQVlfUEFVU0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGxheVBh
dXNlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19NRURJQV9NVVRFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGUpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fQkFTRV9D
VVNUT01fVEFHLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1CYXNlQ3VzdG9tVGFnKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0NVU1RPTV9UQUdf
Tk9fQUNUSU9OLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1DdXN0b21UYWdOb0FjdGlvbik7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9MQVNUX0NV
U1RPTV9UQUcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbUxhc3RDdXN0b21UYWcpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fQkFTRV9BUFBMSUNB
VElPTl9UQUcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9t
ZW51X2l0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X21lbnVfaXRlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5NmVhZGUyZjg2ZGFhNjZjYzkyMmQ0Yzk2ZDE4NWJj
ZDg0ZjdhY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW0uaApAQCAtMCwwICsxLDI0MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICog
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19jb250ZXh0X21l
bnVfaXRlbS5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBDb250ZXh0IE1lbnUgSXRl
bSBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9tZW51X2l0ZW1faAorI2RlZmluZSBl
d2tfY29udGV4dF9tZW51X2l0ZW1faAorCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19j
cGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1l
IGZvciBFd2tfUG9wdXBfTWVudV9JdGVtICovCit0eXBlZGVmIHN0cnVjdCBFd2tDb250ZXh0TWVu
dUl0ZW0gRXdrX0NvbnRleHRfTWVudV9JdGVtOworCisvKioKKyAqIFxlbnVtICAgIF9Fd2tfQ29u
dGV4dF9NZW51X0l0ZW1fVHlwZQorICogQGJyaWVmICAgRGVmaW5lcyB0aGUgdHlwZXMgb2YgdGhl
IGl0ZW1zIGZvciB0aGUgY29udGV4dCBtZW51LgorICogQGluZm8gICAgS2VlcCB0aGlzIGluIHN5
bmMgd2l0aCBDb250ZXh0TWVudUl0ZW0uaAorICovCit0eXBlZGVmIGVudW0geworICAgIEVXS19B
Q1RJT05fVFlQRSwKKyAgICBFV0tfQ0hFQ0tBQkxFX0FDVElPTl9UWVBFLAorICAgIEVXS19TRVBB
UkFUT1JfVFlQRSwKKyAgICBFV0tfU1VCTUVOVV9UWVBFCit9IEV3a19Db250ZXh0X01lbnVfSXRl
bV9UeXBlOworCisvKioKKyAqIFxlbnVtICAgIF9Fd2tfQ29udGV4dF9NZW51X0FjdGlvbgorICog
QGJyaWVmICAgUHJvdmlkZXMgdGhlIGFjdGlvbnMgb2YgaXRlbXMgZm9yIHRoZSBjb250ZXh0IG1l
bnUuCisgKiBAaW5mbyAgICBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIENvbnRleHRNZW51SXRlbS5o
CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19B
Q1RJT04sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJTktfSU5fTkVXX1dJ
TkRPVywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RPV05MT0FEX0xJTktfVE9fRElT
SywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTElOS19UT19DTElQQk9BUkQs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0lNQUdFX0lOX05FV19XSU5ET1cs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19ET1dOTE9BRF9JTUFHRV9UT19ESVNLLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9JTUFHRV9UT19DTElQQk9BUkQsCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1VSTF9UT19DTElQQk9BUkQs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0ZSQU1FX0lOX05FV19XSU5ET1cs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZLAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfR09fQkFDSywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZP
UldBUkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QLAorICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfUkVMT0FELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
Q1VULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUEFTVEUsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19TRUxFQ1RfQUxMLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfU1BFTExJTkdfR1VFU1MsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19HVUVT
U0VTX0ZPVU5ELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX1NQRUxMSU5H
LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTEVBUk5fU1BFTExJTkcsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PVEhFUiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX1NFQVJDSF9JTl9TUE9UTElHSFQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19T
RUFSQ0hfV0VCLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTE9PS19VUF9JTl9ESUNU
SU9OQVJZLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9XSVRIX0RFRkFVTFRf
QVBQTElDQVRJT04sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkFDVFVBTF9TSVpFLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZaT09NX0lOLAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9QREZaT09NX09VVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQVVUT19T
SVpFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZTSU5HTEVfUEFHRSwKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fUERGRkFDSU5HX1BBR0VTLAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9QREZDT05USU5VT1VTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZORVhUX1BB
R0UsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlBSRVZJT1VTX1BBR0UsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJTksgPSAyMDAwLAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfSUdOT1JFX0dSQU1NQVIsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19TUEVMTElOR19NRU5VLCAvKio8IHNwZWxsaW5nIG9yIHNwZWxsaW5nL2dyYW1tYXIgc3Vi
LW1lbnUgKi8KKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfU1BFTExJTkdfUEFO
RUwsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19TUEVMTElORywKKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX1NQRUxMSU5HX1dISUxFX1RZUElORywKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX0dSQU1NQVJfV0lUSF9TUEVMTElORywK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0ZPTlRfTUVOVSwgLyoqPCBmb250IHN1Yi1t
ZW51ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0ZPTlRTLAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfQk9MRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX0lUQUxJQywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1VOREVSTElORSwKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09VVExJTkUsCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19TVFlMRVMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0NP
TE9SUywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUVDSF9NRU5VLCAvKio8IHNw
ZWVjaCBzdWItbWVudSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RBUlRfU1BF
QUtJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QX1NQRUFLSU5HLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfV1JJVElOR19ESVJFQ1RJT05fTUVOVSwgLyoqPCB3
cml0aW5nIGRpcmVjdGlvbiBzdWItbWVudSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfREVGQVVMVF9ESVJFQ1RJT04sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUZU
X1RPX1JJR0hULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUklHSFRfVE9fTEVGVCwK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERlNJTkdMRV9QQUdFX1NDUk9MTElORywK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERkZBQ0lOR19QQUdFU19TQ1JPTExJTkcs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JTlNQRUNUX0VMRU1FTlQsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9NRU5VLCAvKio8IHRleHQgZGly
ZWN0aW9uIHN1Yi1tZW51ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJ
UkVDVElPTl9ERUZBVUxULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJF
Q1RJT05fTEVGVF9UT19SSUdIVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRf
RElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX09QRU5f
TUVESUFfSU5fTkVXX1dJTkRPVywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlf
TUVESUFfTElOS19UT19DTElQQk9BUkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19U
T0dHTEVfTUVESUFfQ09OVFJPTFMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dH
TEVfTUVESUFfTE9PUCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0VOVEVSX1ZJREVP
X0ZVTExTQ1JFRU4sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19NRURJQV9QTEFZX1BB
VVNFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTUVESUFfTVVURSwKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fQkFTRV9DVVNUT01fVEFHID0gNTAwMCwKKyAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fQ1VTVE9NX1RBR19OT19BQ1RJT04gPSA1OTk4LAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9MQVNUX0NVU1RPTV9UQUcgPSA1OTk5LAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9CQVNFX0FQUExJQ0FUSU9OX1RBRyA9IDEwMDAwCit9IEV3a19Db250ZXh0X01lbnVfSXRl
bV9BY3Rpb247CisKKy8qKgorICogR2V0cyB0eXBlIG9mIHRoZSBpdGVtLgorICoKKyAqIEBwYXJh
bSBvIHRoZSBpdGVtIHRvIGdldCB0aGUgdHlwZQorICogQHJldHVybiB0eXBlIG9mIHRoZSBpdGVt
IG9uIHN1Y2Nlc3Mgb3IgQGMgRVdLX0FDVElPTl9UWVBFIG9uIGZhaWx1cmUKKyAqCisgKiBAc2Vl
IGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX3NldAorICovCitFQVBJIEV3a19Db250ZXh0X01l
bnVfSXRlbV9UeXBlIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfQ29u
dGV4dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNldHMgdGhlIHR5cGUgb2YgaXRlbS4KKyAq
CisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBzZXQgdGhlIHR5cGUKKyAqIEBwYXJhbSB0eXBlIGEg
bmV3IHR5cGUgZm9yIHRoZSBpdGVtIG9iamVjdAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24g
c3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29u
dGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRf
bWVudV9pdGVtX3R5cGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgRXdrX0NvbnRleHRf
TWVudV9JdGVtX1R5cGUgdHlwZSk7CisKKy8qKgorICogR2V0cyBhbiBhY3Rpb24gb2YgdGhlIGl0
ZW0uCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gZ2V0IHRoZSBhY3Rpb24KKyAqIEByZXR1
cm4gYW4gYWN0aW9uIG9mIHRoZSBpdGVtIG9uIHN1Y2Nlc3Mgb3IgQGMgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19OT19BQ1RJT04gb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRf
bWVudV9pdGVtX2FjdGlvbl9zZXQKKyAqLworRUFQSSBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0
aW9uIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGNvbnN0IEV3a19Db250ZXh0X01l
bnVfSXRlbSAqbyk7CisKKy8qKgorICogU2V0cyBhbiBhY3Rpb24gb2YgdGhlIGl0ZW0uCisgKgor
ICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gc2V0IHRoZSBhY3Rpb24KKyAqIEBwYXJhbSBhY3Rpb24g
YSBuZXcgYWN0aW9uIGZvciB0aGUgaXRlbSBvYmplY3QKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdr
X2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2Nv
bnRleHRfbWVudV9pdGVtX2FjdGlvbl9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFd2tf
Q29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbik7CisKKy8qKgorICogR2V0cyBhIHRpdGxl
IG9mIHRoZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGdldCB0aGUgdGl0bGUK
KyAqIEByZXR1cm4gYSB0aXRsZSBvZiB0aGUgaXRlbSBvbiBzdWNjZXNzLCBvciBAYyBOVUxMIG9u
IGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9zZXQKKyAq
LworRUFQSSBjb25zdCBjaGFyICpld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGNvbnN0
IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbyk7CisKKy8qKgorICogU2V0cyBhIHRpdGxlIG9mIHRo
ZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIHNldCB0aGUgdGl0bGUKKyAqIEBw
YXJhbSB0aXRsZSBhIG5ldyB0aXRsZSBmb3IgdGhlIGl0ZW0gb2JqZWN0CisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqCisg
KiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQKKyAqLworRUFQSSBFaW5hX0Jv
b2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0g
Km8sIGNvbnN0IGNoYXIgKnRpdGxlKTsKKworLyoqCisgKiBRdWVyaWVzIGlmIHRoZSBpdGVtIGlz
IHRvZ2dsZWQuCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gcXVlcnkgaWYgdGhlIGl0ZW0g
aXMgdG9nZ2xlZAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGl0ZW0gaXMgdG9nZ2xl
ZCBvciBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRWluYV9C
b29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldChjb25zdCBFd2tfQ29udGV4dF9N
ZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNldHMgaWYgdGhlIGl0ZW0gc2hvdWxkIGJlIHRvZ2ds
ZWQuCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gYmUgdG9nZ2xlZAorICogQHBhcmFtIGNo
ZWNrZWQgQGMgRUlOQV9UUlVFIGlmIHRoZSBpdGVtIHNob3VsZCBiZSB0b2dnbGVkIG9yIEBjIEVJ
TkFfRkFMU0UgaWYgbm90CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBj
IEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9t
ZW51X2l0ZW1fY2hlY2tlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFaW5hX0Jvb2wg
Y2hlY2tlZCk7CisKKy8qKgorICogR2V0cyBpZiB0aGUgaXRlbSBpcyBlbmFibGVkLgorICoKKyAq
IEBwYXJhbSBvIHRoZSBpdGVtIHRvIGdldCBlbmFibGVkIHN0YXRlCisgKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBpZiBpdCdzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1
cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldAorICovCitF
QVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQoY29uc3QgRXdr
X0NvbnRleHRfTWVudV9JdGVtICpvKTsKKworLyoqCisgKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBp
dGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGVuYWJsZS9kaXNhYmxlCisgKiBAcGFy
YW0gZW5hYmxlZCBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBpdGVtIG9yIEBjIEVJTkFfRkFM
U0UgdG8gZGlzYWJsZQorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMg
RUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1f
ZW5hYmxlZF9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2Vu
YWJsZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgRWluYV9Cb29sIGVuYWJsZWQpOwor
CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogZXdrX2NvbnRleHRf
bWVudV9pdGVtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNkY2YyNDc3YmRmNmQ4ODU2NTkwMWQ1ZTYzMWY5ZGRhYTRlYTUwNjEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0
ZW1fcHJpdmF0ZS5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZV9oCisjZGVmaW5l
IGV3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlX2gKKworI2luY2x1ZGUgIldLRWluYVNoYXJl
ZFN0cmluZy5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKKyNpbmNsdWRl
ICJld2tfY29udGV4dF9tZW51LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVtLmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworLyoqCisgKiBcc3RydWN0ICBFd2tfQ29u
dGV4dF9NZW51X0l0ZW0KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBjb250ZXh0IG1lbnUgaXRl
bSBkYXRhLgorICovCitjbGFzcyBFd2tDb250ZXh0TWVudUl0ZW0geworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzT3duUHRyPEV3a0NvbnRleHRNZW51SXRlbT4gY3JlYXRlKGNvbnN0IFdlYktpdDo6
V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgRXdrX0NvbnRleHRfTWVudV9JdGVtKGl0ZW0pKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgUGFzc093blB0cjxFd2tDb250ZXh0TWVudUl0ZW0+IGNyZWF0ZShFd2tfQ29udGV4dF9NZW51
X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgRXdr
Q29udGV4dE1lbnUqIHBhcmVudE1lbnUsIEV3a0NvbnRleHRNZW51KiBzdWJNZW51LCBjb25zdCBj
aGFyKiB0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tfQ29udGV4dF9NZW51X0l0ZW0odHlwZSwg
YWN0aW9uLCBwYXJlbnRNZW51LCBzdWJNZW51LCB0aXRsZSwgY2hlY2tlZCwgZW5hYmxlZCkpOwor
ICAgIH0KKworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRBY3Rpb24oRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbik7CisKKyAg
ICBjb25zdCBjaGFyKiB0aXRsZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgY2hh
ciopOworCisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSgpIGNvbnN0OworICAg
IHZvaWQgc2V0VHlwZShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSk7CisKKyAgICBib29sIGNo
ZWNrZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldENoZWNrZWQoYm9vbCk7CisKKyAgICBib29sIGVu
YWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgRXdrQ29udGV4dE1lbnVJdGVtKGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1l
bnVJdGVtRGF0YSYpOworICAgIEV3a0NvbnRleHRNZW51SXRlbShFd2tfQ29udGV4dF9NZW51X0l0
ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgRXdrQ29u
dGV4dE1lbnUqIHBhcmVudE1lbnUsIEV3a0NvbnRleHRNZW51KiBzdWJNZW51LCBjb25zdCBjaGFy
KiB0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKTsKKworICAgIEV3
a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIG1fdHlwZTsKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0
ZW1fQWN0aW9uIG1fYWN0aW9uOworCisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1fdGl0bGU7CisK
KyAgICBFd2tfQ29udGV4dF9NZW51KiBtX3BhcmVudE1lbnU7CisgICAgRXdrX0NvbnRleHRfTWVu
dSogbV9zdWJNZW51OworICAgIAorICAgIGJvb2wgbV9pc0NoZWNrZWQ7CisgICAgYm9vbCBtX2lz
RW5hYmxlZDsKK307CisKKyNlbmRpZiAvLyBld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9tZW51X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0X21lbnVfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkZjE0OTUxMTExNGFiYmNjMjc3OTE4
ZDZhZDY3MzUxNTg0ZWMyNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X3ByaXZhdGUuaApAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRf
bWVudV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfbWVudV9wcml2YXRlX2gKKworI2lu
Y2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9t
ZW51X2l0ZW0uaCIKKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3Mg
V2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlFZmw7Cit9
CisKK2NsYXNzIEV3a1ZpZXdJbXBsOworCitjbGFzcyBFd2tDb250ZXh0TWVudSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8RXdrQ29udGV4dE1lbnU+IGNyZWF0ZShFd2tWaWV3SW1w
bCogdmlld0ltcGwsIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbCogY29udGV4dE1lbnVQ
cm94eSwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1z
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tDb250ZXh0TWVudSh2aWV3
SW1wbCwgY29udGV4dE1lbnVQcm94eSwgaXRlbXMpKTsKKyAgICB9CisKKyAgICB+RXdrQ29udGV4
dE1lbnUoKTsKKworICAgIHZvaWQgaGlkZSgpOworCisgICAgY29uc3QgRWluYV9MaXN0KiBpdGVt
cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dE1lbnVJdGVtczsgfQorICAgIHZvaWQgY29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBp
dGVtKTsKKworcHJpdmF0ZToKKyAgICBFd2tDb250ZXh0TWVudShFd2tWaWV3SW1wbCogdmlld0lt
cGwsIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbCosIGNvbnN0IFZlY3RvcjxXZWJLaXQ6
OldlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcyk7CisKKyAgICBFd2tWaWV3SW1wbCogbV92
aWV3SW1wbDsKKyAgICBXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmwqIG1fY29udGV4dE1l
bnVQcm94eTsKKyAgICBFaW5hX0xpc3QqIG1fY29udGV4dE1lbnVJdGVtczsKK307CisKKyNlbmRp
ZiAvLyBld2tfY29udGV4dF9tZW51X3ByaXZhdGVfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCA3NTAxNjExNzRiOWE0NTdmZjJlZGU5ODg1MThi
MGIzNDY3NzJiNTdmLi4zN2Y0MjUzYzFjOGE4NWVjMWMzZjJkMWUxMmU3MjBkODA1ODcyNWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTg0LDYg
Kzg0LDcgQEAKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3QuaCIKICNpbmNsdWRlICJl
d2tfY29sb3JfcGlja2VyLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKKyNpbmNsdWRlICJl
d2tfY29udGV4dF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgogI2luY2x1
ZGUgImV3a19lcnJvci5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIKQEAgLTExNCw2ICsxMTUs
OSBAQCBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEV2YXNfU21hcnRfQ2xhc3Mg
c2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAqLwogICAgIHVu
c2lnbmVkIGxvbmcgdmVyc2lvbjsKIAorICAgIEVpbmFfQm9vbCAoKmNvbnRleHRfbWVudV9zaG93
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV3
a19Db250ZXh0X01lbnUgKm1lbnUpOworICAgIEVpbmFfQm9vbCAoKmNvbnRleHRfbWVudV9oaWRl
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisKICAgICBFaW5hX0Jvb2wgKCpwb3B1cF9tZW51
X3Nob3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX1JlY3RhbmdsZSByZWN0LCBFd2tf
VGV4dF9EaXJlY3Rpb24gdGV4dF9kaXJlY3Rpb24sIGRvdWJsZSBwYWdlX3NjYWxlX2ZhY3Rvciwg
RXdrX1BvcHVwX01lbnUgKm1lbnUpOwogICAgIEVpbmFfQm9vbCAoKnBvcHVwX21lbnVfaGlkZSko
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwogCkBAIC0xNjksNyArMTczLDcgQEAgc3RydWN0IEV3
a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9W
RVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAg
Ki8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7
c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKyNk
ZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRf
Y2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAog
LyoqCiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mg
c3RydWN0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX2NvbnRleHRfbWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dF9tZW51LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
MDA5ZDg0OTg3MjA2ZDc4OTgyZWIxZDk1YWI2OWZhMDc0NGM4YjI4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRl
eHRfbWVudS5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3Vp
dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCIKKyNpbmNs
dWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50LmgiCisjaW5jbHVkZSA8
RVdlYktpdDIuaD4KKyNpbmNsdWRlIDxFY29yZS5oPgorCit1c2luZyBuYW1lc3BhY2UgRVdLMlVu
aXRUZXN0OworCitleHRlcm4gRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQqIGVudmlyb25tZW50Owor
CitzdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tCYXNpY0NvbnRleHRNZW51SXRlbShFd2tfQ29udGV4
dF9NZW51X0l0ZW0qIGl0ZW0sIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3a19D
b250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBjb25zdCBjaGFyKiB0aXRsZSwgRWluYV9C
b29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKQoreworICAgIEFTU0VSVF9UUlVFKGl0ZW0p
OworCisgICAgRVhQRUNUX0VRKHR5cGUsIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChp
dGVtKSk7CisgICAgRVhQRUNUX0VRKGFjdGlvbiwgZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlv
bl9nZXQoaXRlbSkpOworICAgIEVYUEVDVF9TVFJFUSh0aXRsZSwgZXdrX2NvbnRleHRfbWVudV9p
dGVtX3RpdGxlX2dldChpdGVtKSk7CisgICAgRVhQRUNUX0VRKGNoZWNrZWQsIGV3a19jb250ZXh0
X21lbnVfaXRlbV9jaGVja2VkX2dldChpdGVtKSk7CisgICAgRVhQRUNUX0VRKGVuYWJsZWQsIGV3
a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dldChpdGVtKSk7Cit9CisKK3N0YXRpYyBFaW5h
X0Jvb2wgc2hvd0NvbnRleHRNZW51KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgRXZh
c19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV3a19Db250ZXh0X01lbnUqIGNvbnRleHRNZW51KQor
eworICAgIGNvbnN0IEVpbmFfTGlzdCogbGlzdCA9IGV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0
KGNvbnRleHRNZW51KTsKKyAgICBFWFBFQ1RfRVEoNCwgZWluYV9saXN0X2NvdW50KGxpc3QpKTsK
KworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSA9IHN0YXRpY19jYXN0PEV3a19Db250
ZXh0X01lbnVfSXRlbSo+KGVpbmFfbGlzdF9udGgobGlzdCwgMCkpOworICAgIGNoZWNrQmFzaWND
b250ZXh0TWVudUl0ZW0oaXRlbSwgRVdLX0FDVElPTl9UWVBFLCBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0dPX0JBQ0ssICJHbyBCYWNrIiwgZmFsc2UsIHRydWUpOworCisgICAgaXRlbSA9IHN0
YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGVpbmFfbGlzdF9udGgobGlzdCwgMSkp
OworICAgIGNoZWNrQmFzaWNDb250ZXh0TWVudUl0ZW0oaXRlbSwgRVdLX0FDVElPTl9UWVBFLCBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZPUldBUkQsICJHbyBGb3J3YXJkIiwgZmFsc2Us
IHRydWUpOworICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldChpdGVtLCBmYWxz
ZSk7CisgICAgRVhQRUNUX0ZBTFNFKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dldChp
dGVtKSk7CisKKyAgICBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4o
ZWluYV9saXN0X250aChsaXN0LCAyKSk7CisgICAgY2hlY2tCYXNpY0NvbnRleHRNZW51SXRlbShp
dGVtLCBFV0tfQUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RPUCwgIlN0
b3AiLCBmYWxzZSwgdHJ1ZSk7CisgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfc2V0
KGl0ZW0sIHRydWUpOworICAgIEVYUEVDVF9UUlVFKGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVj
a2VkX2dldChpdGVtKSk7CisKKyAgICBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVu
dV9JdGVtKj4oZWluYV9saXN0X250aChsaXN0LCAzKSk7CisgICAgY2hlY2tCYXNpY0NvbnRleHRN
ZW51SXRlbShpdGVtLCBFV0tfQUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
UkVMT0FELCAiUmVsb2FkIiwgZmFsc2UsIHRydWUpOworICAgIGV3a19jb250ZXh0X21lbnVfaXRl
bV90aXRsZV9zZXQoaXRlbSwgIlJlZnJlc2giKTsKKyAgICBFWFBFQ1RfU1RSRVEoIlJlZnJlc2gi
LCBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGl0ZW0pKTsKKworICAgIEV3a19Db250
ZXh0X01lbnVfSXRlbSogbmV3SXRlbSA9IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRVdLX0FD
VElPTl9UWVBFLCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09USEVSLCBjb250ZXh0TWVudSwg
MCwgIk5ldyBDdXN0b20gSXRlbSIsIGZhbHNlLCB0cnVlKTsKKyAgICBFWFBFQ1RfVFJVRShuZXdJ
dGVtKTsKKyAgICBld2tfY29udGV4dF9tZW51X2l0ZW1fZnJlZShuZXdJdGVtKTsKKworICAgIEVY
UEVDVF9UUlVFKGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QoY29udGV4dE1lbnUsIGl0ZW0p
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdr
X2NvbnRleHRfbWVudV9pdGVtX3NlbGVjdCkKK3sKKyAgICBjb25zdCBjaGFyKiBpdGVtU2VsZWN0
SFRNTCA9CisgICAgICAgICI8aHRtbD4iCisgICAgICAgICI8Ym9keT48YSBocmVmPWh0dHA6Ly93
d3cuZ29vZ2xlLmNvbT5UZXN0IExpbms8L2E+PC9ib2R5PiIKKyAgICAgICAgIjwvYm9keT48L2h0
bWw+IjsgCisKKyAgICBld2tWaWV3Q2xhc3MoKS0+Y29udGV4dF9tZW51X3Nob3cgPSBzaG93Q29u
dGV4dE1lbnU7CisKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgaXRl
bVNlbGVjdEhUTUwsICJmaWxlOi8vLyIsIDApOworICAgIG1vdXNlQ2xpY2soMjAsIDMwLCAvKlJp
Z2h0Ki8gMyk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsTG9hZEZpbmlzaGVkKCkpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVu
dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50
RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43YTg2MDI4ZTBkZDY0MzA3MTYyNzMxZjE3ZjM1ZTJmM2ZhNjg1
MWQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250
ZXh0TWVudUNsaWVudEVmbC5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRFZmwu
aCIKKworI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKyNpbmNsdWRlICJXS0FycmF5LmgiCisjaW5jbHVkZSAiV0tQYWdlLmgiCisjaW5jbHVkZSAi
V2ViQ29udGV4dE1lbnVJdGVtLmgiICAgCisjaW5jbHVkZSA8RXZhcy5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OworCitzdGF0aWMgaW5saW5lIENvbnRleHRNZW51Q2xpZW50RWZsKiB0b0Nv
bnRleHRDbGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q29udGV4dE1lbnVDbGllbnRFZmwqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSk7Cit9CisKK0NvbnRleHRNZW51Q2xpZW50RWZsOjpDb250ZXh0TWVudUNsaWVudEVmbChF
d2tWaWV3SW1wbCogdmlld0ltcGwpCisgICAgOiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQoreworICAg
IFdLUGFnZVJlZiBwYWdlUmVmID0gbV92aWV3SW1wbC0+d2tQYWdlKCk7CisgICAgQVNTRVJUKHBh
Z2VSZWYpOworCisgICAgV0tQYWdlQ29udGV4dE1lbnVDbGllbnQgY29udGV4dE1lbnVDbGllbnQ7
CisgICAgbWVtc2V0KCZjb250ZXh0TWVudUNsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZUNvbnRleHRN
ZW51Q2xpZW50KSk7CisgICAgY29udGV4dE1lbnVDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VDb250
ZXh0TWVudUNsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIGNvbnRleHRNZW51Q2xpZW50LmNsaWVu
dEluZm8gPSB0aGlzOworICAgIGNvbnRleHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJvbVBy
b3Bvc2VkTWVudV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwID0gMDsKKyAgICBjb250ZXh0TWVudUNs
aWVudC5jdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZCA9IDA7CisgICAgY29udGV4dE1lbnVD
bGllbnQuY29udGV4dE1lbnVEaXNtaXNzZWQgPSAwOworICAgIGNvbnRleHRNZW51Q2xpZW50Lmdl
dENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSA9IDA7CisKKyAgICBXS1BhZ2VTZXRQYWdlQ29u
dGV4dE1lbnVDbGllbnQocGFnZVJlZiwgJmNvbnRleHRNZW51Q2xpZW50KTsKK30KKwordm9pZCBD
b250ZXh0TWVudUNsaWVudEVmbDo6Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdLUGFn
ZVJlZiwgV0tBcnJheVJlZiwgV0tBcnJheVJlZiosIFdLSGl0VGVzdFJlc3VsdFJlZiwgV0tUeXBl
UmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIyOWU0ZWQzY2VjY2JkMzM3ZDg4N2M1YjU0NTQ1MDFkZjc1YjFhYzAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50
RWZsLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENv
bnRleHRNZW51Q2xpZW50RWZsX2gKKyNkZWZpbmUgQ29udGV4dE1lbnVDbGllbnRFZmxfaAorCisj
aW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dC5oIgorI2luY2x1
ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitj
bGFzcyBFd2tWaWV3SW1wbDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENvbnRleHRN
ZW51Q2xpZW50RWZsIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDb250ZXh0TWVu
dUNsaWVudEVmbD4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQ29udGV4dE1lbnVDbGllbnRFZmwodmlld0ltcGwpKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgdm9pZCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV0tQ
YWdlUmVmLCBXS0FycmF5UmVmIHByb3Bvc2VkTWVudSwgV0tBcnJheVJlZiogbmV3TWVudSwgV0tI
aXRUZXN0UmVzdWx0UmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENvbnRleHRNZW51Q2xpZW50RWZsKEV3a1Zp
ZXdJbXBsKik7CisKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gQ29udGV4dE1lbnVDbGllbnRFZmxfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcAppbmRleCA5N2E4
NWY1Y2NlZmVjNzNkYjNmMzQ2OWFiNDEzM2UyMzJjMWIzNGQwLi4wY2U4MmFhZTQ2ZTQwNGY1ZDI5
M2RhYWM2MzRkYjAxOTM1YjJjOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VDbGllbnRCYXNlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIldlYkNv
bnRleHQuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSAiV2Vi
Q29udGV4dE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgiCkBA
IC0yMjEsMTAgKzIyMSw5IEBAIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGll
bnRCYXNlOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqCiAgICAgcmV0dXJuIFdl
YlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUobV92aWV3SW1wbCwgcGFnZSk7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRleHRN
ZW51UHJveHkoV2ViUGFnZVByb3h5KikKK1Bhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4g
UGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdl
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFdl
YkNvbnRleHRNZW51UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdJbXBsLCBwYWdlKTsKIH0KIAogI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM3ZTBl
YjgxNjMzMzUzYzE2MzNkMGNlZmI1OWVkNTdmNTJjNDViMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHAKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRN
ZW51UHJveHlFZmwuaCIKKworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorCisjaW5jbHVkZSAi
RXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCisjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbnRl
eHRNZW51UHJveHlFZmw6OldlYkNvbnRleHRNZW51UHJveHlFZmwoRXdrVmlld0ltcGwqIHZpZXdJ
bXBsLCBXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQorICAg
ICwgbV9wYWdlKHBhZ2UpCit7Cit9CisKK1dlYkNvbnRleHRNZW51UHJveHlFZmw6On5XZWJDb250
ZXh0TWVudVByb3h5RWZsKCkKK3sKK30KKwordm9pZCBXZWJDb250ZXh0TWVudVByb3h5RWZsOjpz
aG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQoreworICAgIG1fdmlld0ltcGwt
PnNob3dDb250ZXh0TWVudSh0aGlzLCBwb3NpdGlvbiwgaXRlbXMpOworfQorCit2b2lkIFdlYkNv
bnRleHRNZW51UHJveHlFZmw6OmhpZGVDb250ZXh0TWVudSgpCit7CisgICAgbV92aWV3SW1wbC0+
aGlkZUNvbnRleHRNZW51KCk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkK
K3sKKyAgICBtX3BhZ2UtPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGl0ZW0pOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5
RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlF
ZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZWEwNTBjNmYxNWYxZDVlNTc0YTM1NDMyMTg3ODdkYTg1YjM0MWUy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250
ZXh0TWVudVByb3h5RWZsLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb250ZXh0TWVu
dVByb3h5RWZsX2gKKyNkZWZpbmUgV2ViQ29udGV4dE1lbnVQcm94eUVmbF9oCisKKyNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2lu
dC5oPgorCitjbGFzcyBFd2tWaWV3SW1wbDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYkNvbnRleHRNZW51SXRlbURhdGE7CitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdl
YkNvbnRleHRNZW51UHJveHlFZmwgOiBwdWJsaWMgV2ViQ29udGV4dE1lbnVQcm94eSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eUVmbD4gY3JlYXRl
KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250ZXh0TWVudVByb3h5RWZsKHZpZXdJbXBsLCBw
YWdlKSk7CisgICAgfQorICAgIH5XZWJDb250ZXh0TWVudVByb3h5RWZsKCk7CisKKyAgICB2b2lk
IHNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFZlY3RvcjxX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYpOworICAgIHZvaWQgaGlkZUNvbnRleHRNZW51KCk7CisK
KyAgICB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRl
bURhdGEmKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb250ZXh0TWVudVByb3h5RWZsKEV3a1ZpZXdJ
bXBsKiwgV2ViUGFnZVByb3h5Kik7CisKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKKyAg
ICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKK307CisKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyNlbmRpZiAvLyBXZWJDb250ZXh0TWVu
dVByb3h5RWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174907</attachid>
            <date>2012-11-19 00:37:17 -0800</date>
            <delta_ts>2012-11-19 02:39:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96200-20121119173507.patch</filename>
            <type>text/plain</type>
            <size>69187</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJhZjU5YjdmMWViZWY4
ODEzZWM4ZDRlMTA0OGVlMjEyNzE4MDQ3YS4uZjE3NGM0NGIyYjFjYmFkZjBhMTNiODRmMDNmNjIz
OTY4NzRlYmI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTE5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0sy
XSBTdXBwb3J0IENvbnRleHQgTWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICBFRkwg
cG9ydCBhbHNvIGRvZXNuJ3QgaGlkZSB1bmF2YWlsYWJsZSBtZW51cyBhcyBndGsgcG9ydC4KKwog
MjAxMi0xMS0xOCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgd2ViYXVkaW86IGNsZWFuLXVwLiBSZXBsYWNlIEF1ZGlvQ29udGV4dDo6bV9kb2N1bWVu
dCBtZW1iZXIgd2l0aCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDliOGJiZDU0MjM1NjUzZWUyZGU2MjkxYTJmZGVlOGI3
NTJhMjk3MWUuLmZjYmQ5NzA4YzI0ZGNlM2UyODVlMDNiMTg4YTYyMTdlODA5YzU4NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw5MiBAQAorMjAxMi0xMS0xOCAgR3l1eW91bmcgS2ltICA8Z3l1eW91
bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gU3VwcG9ydCBDb250ZXh0
IE1lbnUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2
MjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBzdXBwb3J0cyBXSzIgRUZMJ3MgY29udGV4dCBtZW51IGFzIFdLMSBpbXBsZW1lbnRh
dGlvbiBiZWNhdXNlIHdlIGNhbid0IHVzZSBlbGVtZW50YXJ5IGluIGluc2lkZSBXZWJLaXQuCisg
ICAgICAgIE9ubHkgYmFzaWMgZnVuY3Rpb25hbGl0aWVzIG9mIGNvbnRleHQgbWVudSBhcmUgc3Vw
cG9ydGVkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5jcHA6CisgICAgICAgIChFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwpOgorICAgICAg
ICAoRXdrVmlld0ltcGw6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6
aGlkZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcDogQWRkZWQuCisgICAgICAg
IChFd2tfQ29udGV4dF9NZW51OjpFd2tfQ29udGV4dF9NZW51KToKKyAgICAgICAgKEV3a19Db250
ZXh0X01lbnU6On5Fd2tfQ29udGV4dF9NZW51KToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnU6
OmhpZGUpOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudTo6YXBwZW5kSXRlbSk6CisgICAgICAg
IChld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVf
aXRlbV9mcmVlKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnU6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaGlkZSk6CisgICAgICAgIChld2tf
Y29udGV4dF9tZW51X2l0ZW1zX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1f
c2VsZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51Lmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRl
bS5jcHA6IEFkZGVkLgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjpFd2tfQ29udGV4
dF9NZW51X0l0ZW0pOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjp0eXBlKToKKyAg
ICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6c2V0VHlwZSk6CisgICAgICAgIChFd2tfQ29u
dGV4dF9NZW51X0l0ZW06OmFjdGlvbik6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06
OnNldEFjdGlvbik6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06OnRpdGxlKToKKyAg
ICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6c2V0VGl0bGUpOgorICAgICAgICAoRXdrX0Nv
bnRleHRfTWVudV9JdGVtOjpjaGVja2VkKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRl
bTo6c2V0Q2hlY2tlZCk6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06OmVuYWJsZWQp
OgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjpzZXRFbmFibGVkKToKKyAgICAgICAg
KGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9t
ZW51X2l0ZW1fdHlwZV9zZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlv
bl9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9zZXQpOgorICAg
ICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldCk6CisgICAgICAgIChld2tfY29u
dGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRl
bV9jaGVja2VkX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9z
ZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0KToKKyAgICAg
ICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmg6IEFkZGVkLgor
ICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtKToKKyAgICAgICAgKEV3a19Db250ZXh0X01l
bnVfSXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9tZW51X3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoRXdr
X0NvbnRleHRfTWVudSk6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51OjpjcmVhdGUpOgorICAg
ICAgICAoRXdrX0NvbnRleHRfTWVudTo6aXRlbXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX2NvbnRleHRfbWVudS5jcHA6IEFkZGVkLgorICAgICAgICAoY2hlY2tCYXNpY0NvbnRleHRN
ZW51SXRlbSk6CisgICAgICAgIChzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAoVEVTVF9GKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcDogQWRkZWQu
CisgICAgICAgICh0b0NvbnRleHRDbGllbnRFZmwpOgorICAgICAgICAoQ29udGV4dE1lbnVDbGll
bnRFZmw6OkNvbnRleHRNZW51Q2xpZW50RWZsKToKKyAgICAgICAgKENvbnRleHRNZW51Q2xpZW50
RWZsOjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoQ29udGV4dE1lbnVDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0
TWVudUNsaWVudEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGll
bnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRl
eHRNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94
eUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVQcm94eUVmbDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmw6On5XZWJDb250ZXh0TWVudVByb3h5RWZsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6c2hvd0NvbnRleHRNZW51
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6aGlkZUNvbnRleHRN
ZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQ
cm94eUVmbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb250ZXh0
TWVudVByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6
Y3JlYXRlKToKKwogMjAxMi0xMS0xOCAgSmFlaHVuIExpbSAgPGxqYWVodW4ubGltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gUmVtb3ZlIHVuZGVyc2NvcmUgY2hhcmFjdGVycyBp
biBFd2sgY2xhc3MgbmFtZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKaW5kZXggNzk3OTcxZDBmNTZjOTUyNGUwMjQ0OGNmZGRjNGI5ZTVlZGZhMTY5
ZC4uNTY0MGRjNzY5N2U4MjM2Mzc2YzY1MzExMmZjMWI4MzAwZjRhOTYwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtODc2LDggKzg3Niw4
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgICAgICAg
ICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPmhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkpKSB7CiAjZW5kaWYKIAotICAgICAg
ICAgICAgICAgIC8vIEluIEdUSysgdW5hdmFpbGFibGUgaXRlbXMgYXJlIG5vdCBoaWRkZW4gYnV0
IGluc2Vuc2l0aXZlCi0jaWYgUExBVEZPUk0oR1RLKQorICAgICAgICAgICAgICAgIC8vIEluIEdU
SysgYW5kIEVGTCwgdW5hdmFpbGFibGUgaXRlbXMgYXJlIG5vdCBoaWRkZW4gYnV0IGluc2Vuc2l0
aXZlLgorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgICAgICAgICAgICAg
IGFwcGVuZEl0ZW0oQmFja0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAg
ICAgIGFwcGVuZEl0ZW0oRm9yd2FyZEl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIGFwcGVuZEl0ZW0oU3RvcEl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBiYjg3NDdiMWNiMWY1ODM4YzJkZDdjY2RkZjc4Mjkx
MWVhNjdjMWU1Li4zYjc0ZWRiNTA1M2ZmN2ExYzIzZDY4MTEwZjVhNTkwOTRkZTFkZWYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNDksNiArNDksOCBAQCBMSVNUKEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3Rf
aXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X21lbnUuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
bWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcApAQCAtNzgsNiArODAsNyBAQCBM
SVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9lZmwvQmF0dGVyeVBy
b3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuY3Bw
CisgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nl
c3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0ZpbmRDbGll
bnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcApAQCAtOTUsNiAr
OTgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1Rl
eHRDaGVja2VyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvVmlicmF0aW9uQ2xpZW50RWZsLmNw
cAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZs
L1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJv
eHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC0zNjIs
NiArMzY2LDcgQEAgU0VUKEVXSzJVbml0VGVzdHNfQklOQVJJRVMKICAgICB0ZXN0X2V3azJfY29s
b3JfcGlja2VyCiAgICAgdGVzdF9ld2syX2NvbnRleHQKICAgICB0ZXN0X2V3azJfY29udGV4dF9o
aXN0b3J5X2NhbGxiYWNrcworICAgIHRlc3RfZXdrMl9jb250ZXh0X21lbnUKICAgICB0ZXN0X2V3
azJfY29va2llX21hbmFnZXIKICAgICB0ZXN0X2V3azJfZGF0YWJhc2VfbWFuYWdlcgogICAgIHRl
c3RfZXdrMl9kb3dubG9hZF9qb2IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
V2ViS2l0Mi5oCmluZGV4IDA3Y2ExMjkzNTBmNGVkYjdlM2RiNGJmOTJhZDcwYjhjM2EyMDljZTQu
LjIyZDYxNjgyNWUxY2Q1MTg4OTViMmU3ZGM3ZWM1YjgzMjMyMjU5NTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtMzMsNiArMzMsOCBAQAogI2lu
Y2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX2NvbG9y
X3BpY2tlci5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRl
eHRfbWVudS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgogI2luY2x1ZGUg
ImV3a19jb29raWVfbWFuYWdlci5oIgogI2luY2x1ZGUgImV3a19kYXRhYmFzZV9tYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4IGFjYTJkNGRlZTFhYWYyYjgzZDY0
YTBjYzhmODQ3MTgzZDRmNzc5MDIuLmU3Mjc5MjMzNzA2ZTBkNzA1ZWJjYjlkODgyOTQ1MzMzYWMz
NGZiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
SW1wbC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJFd2tWaWV3SW1wbC5oIgogCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRFZmwuaCIKICNp
bmNsdWRlICJFZmxTY3JlZW5VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJGaW5kQ2xpZW50RWZsLmgi
CiAjaW5jbHVkZSAiRm9ybUNsaWVudEVmbC5oIgpAQCAtNDUsNiArNDYsNyBAQAogI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJl
d2tfY29udGV4dF9tZW51X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRl
LmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImV3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgpAQCAtMTE0LDYgKzExNiw3IEBAIEV3a1Zp
ZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tDb250
ZXh0PiBjb250ZXh0LCBQYXNzCiAgICAgLCBtX3BhZ2VQb2xpY3lDbGllbnQoUGFnZVBvbGljeUNs
aWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9wYWdlVUlDbGllbnQoUGFnZVVJQ2xpZW50
RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3Jlc291cmNlTG9hZENsaWVudChSZXNvdXJjZUxv
YWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQoQ29u
dGV4dE1lbnVDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZmluZENsaWVudChGaW5k
Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2Zvcm1DbGllbnQoRm9ybUNsaWVudEVm
bDo6Y3JlYXRlKHRoaXMpKQogI2lmIEVOQUJMRShWSUJSQVRJT04pCkBAIC03MTQsNiArNzE3LDM4
IEBAIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUNvbnRlbnRzU2l6ZUNoYW5nZShjb25zdCBJbnRT
aXplJiBzaXplKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJ
T05fUklHSFRfVE9fTEVGVCwgUlRMKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIExUUik7CiAKK3ZvaWQgRXdrVmlld0ltcGw6
OnNob3dDb250ZXh0TWVudShXZWJDb250ZXh0TWVudVByb3h5RWZsKiBjb250ZXh0TWVudVByb3h5
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxXZWJDb250
ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qg
PSBzbWFydERhdGEoKTsKKyAgICBBU1NFUlQoc2QtPmFwaSk7CisKKyAgICBBU1NFUlQoY29udGV4
dE1lbnVQcm94eSk7CisKKyAgICBpZiAoIXNkLT5hcGktPmNvbnRleHRfbWVudV9zaG93KQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAobV9jb250ZXh0TWVudSkKKyAgICAgICAgaGlkZUNvbnRl
eHRNZW51KCk7CisKKyAgICBtX2NvbnRleHRNZW51ID0gRXdrX0NvbnRleHRfTWVudTo6Y3JlYXRl
KHRoaXMsIGNvbnRleHRNZW51UHJveHksIGl0ZW1zKTsKKworICAgIHNkLT5hcGktPmNvbnRleHRf
bWVudV9zaG93KHNkLCBwb3NpdGlvbi54KCksIHBvc2l0aW9uLnkoKSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6OmhpZGVDb250ZXh0TWVudSgpCit7CisgICAg
aWYgKCFtX2NvbnRleHRNZW51KQorICAgICAgICByZXR1cm47CisKKyAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgIEFTU0VSVChzZC0+YXBpKTsKKworICAgIGlm
IChzZC0+YXBpLT5jb250ZXh0X21lbnVfaGlkZSkKKyAgICAgICAgc2QtPmFwaS0+Y29udGV4dF9t
ZW51X2hpZGUoc2QpOworCisgICAgbV9jb250ZXh0TWVudS5jbGVhcigpOworfQorCiB2b2lkIEV3
a1ZpZXdJbXBsOjpyZXF1ZXN0UG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1l
bnVQcm94eSwgY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9u
LCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRl
bXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCA9IHNtYXJ0RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXdJbXBsLmgKaW5kZXggMjRjYTRmZGJiYzgyOWZjZGQ5OWYwMThjZGVjMmNhYjk0MGM5OGNk
OC4uYmQzNDBjYzBlMWJhMmVjZjNiMzhiYWRhZjg1NDFlMzBmNjZjZDE5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC00Niw2ICs0Niw3
IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBDb250ZXh0TWVudUNsaWVu
dEVmbDsKIGNsYXNzIEZpbmRDbGllbnRFZmw7CiBjbGFzcyBGb3JtQ2xpZW50RWZsOwogY2xhc3Mg
SW5wdXRNZXRob2RDb250ZXh0RWZsOwpAQCAtNTQsNiArNTUsOCBAQCBjbGFzcyBQYWdlTG9hZENs
aWVudEVmbDsKIGNsYXNzIFBhZ2VQb2xpY3lDbGllbnRFZmw7CiBjbGFzcyBQYWdlVUlDbGllbnRF
Zmw7CiBjbGFzcyBSZXNvdXJjZUxvYWRDbGllbnRFZmw7CitjbGFzcyBXZWJDb250ZXh0TWVudUl0
ZW1EYXRhOworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eUVmbDsKIGNsYXNzIFdlYlBhZ2VHcm91
cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlBvcHVwSXRlbTsKQEAgLTc0LDYgKzc3
LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEV3a0NvbnRleHQ7CiBjbGFzcyBFd2tCYWNrRm9y
d2FyZExpc3Q7CiBjbGFzcyBFd2tDb2xvclBpY2tlcjsKK2NsYXNzIEV3a0NvbnRleHRNZW51Owog
Y2xhc3MgRXdrUG9wdXBNZW51OwogY2xhc3MgRXdrU2V0dGluZ3M7CiAKQEAgLTE2MSw2ICsxNjUs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcXVlc3RQb3B1cE1lbnUoV2ViS2l0OjpXZWJQb3B1
cE1lbnVQcm94eUVmbCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGly
ZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQ
b3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKICAgICB2b2lkIGNsb3Nl
UG9wdXBNZW51KCk7CisgICAgCisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoV2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5RWZsKiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBj
b25zdCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpOworICAg
IHZvaWQgaGlkZUNvbnRleHRNZW51KCk7CiAKICAgICB2b2lkIHVwZGF0ZVRleHRJbnB1dFN0YXRl
KCk7CiAKQEAgLTIzMyw2ICsyNDAsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OlBh
Z2VQb2xpY3lDbGllbnRFZmw+IG1fcGFnZVBvbGljeUNsaWVudDsKICAgICBPd25QdHI8V2ViS2l0
OjpQYWdlVUlDbGllbnRFZmw+IG1fcGFnZVVJQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6OlJl
c291cmNlTG9hZENsaWVudEVmbD4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7CisgICAgT3duUHRyPFdl
YktpdDo6Q29udGV4dE1lbnVDbGllbnRFZmw+IG1fY29udGV4dE1lbnVDbGllbnQ7CiAgICAgT3du
UHRyPFdlYktpdDo6RmluZENsaWVudEVmbD4gbV9maW5kQ2xpZW50OwogICAgIE93blB0cjxXZWJL
aXQ6OkZvcm1DbGllbnRFZmw+IG1fZm9ybUNsaWVudDsKICNpZiBFTkFCTEUoVklCUkFUSU9OKQpA
QCAtMjU1LDYgKzI2Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3RvdWNoRXZlbnRzRW5hYmxl
ZDsKICNlbmRpZgogICAgIFdlYkNvcmU6OlRpbWVyPEV3a1ZpZXdJbXBsPiBtX2Rpc3BsYXlUaW1l
cjsKKyAgICBPd25QdHI8RXdrQ29udGV4dE1lbnU+IG1fY29udGV4dE1lbnU7CiAgICAgT3duUHRy
PEV3a1BvcHVwTWVudT4gbV9wb3B1cE1lbnU7CiAgICAgT3duUHRyPFdlYktpdDo6SW5wdXRNZXRo
b2RDb250ZXh0RWZsPiBtX2lucHV0TWV0aG9kQ29udGV4dDsKICAgICBPd25QdHI8RXdrQ29sb3JQ
aWNrZXI+IG1fY29sb3JQaWNrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjYjQ3MzBkOWQ3Nzdj
MmRkMDdjZDUyNGI0ZjEzMDRiNzMwODFhZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcApAQCAtMCwwICsxLDEw
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudS5oIgorCisjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0
ZW1EYXRhLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIgorI2luY2x1ZGUg
ImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRl
bV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0V3a0NvbnRleHRNZW51OjpFd2tDb250ZXh0TWVudShF
d2tWaWV3SW1wbCogdmlld0ltcGwsIFdlYkNvbnRleHRNZW51UHJveHlFZmwqIGNvbnRleHRNZW51
UHJveHksIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVt
cykKKyAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCisgICAgLCBtX2NvbnRleHRNZW51UHJveHko
Y29udGV4dE1lbnVQcm94eSkKKyAgICAsIG1fY29udGV4dE1lbnVJdGVtcygwKQoreworICAgIGNv
bnN0IHNpemVfdCBzaXplID0gaXRlbXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQorICAgICAgICBtX2NvbnRleHRNZW51SXRlbXMgPSBlaW5hX2xpc3RfYXBw
ZW5kKG1fY29udGV4dE1lbnVJdGVtcywgRXdrX0NvbnRleHRfTWVudV9JdGVtOjpjcmVhdGUoaXRl
bXNbaV0pLmxlYWtQdHIoKSk7Cit9CisKK0V3a0NvbnRleHRNZW51Ojp+RXdrQ29udGV4dE1lbnUo
KQoreworICAgIHZvaWQqIGRhdGE7CisgICAgRUlOQV9MSVNUX0ZSRUUobV9jb250ZXh0TWVudUl0
ZW1zLCBkYXRhKQorICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9J
dGVtKj4oZGF0YSk7Cit9CisKK3ZvaWQgRXdrQ29udGV4dE1lbnU6OmhpZGUoKQoreworICAgIG1f
dmlld0ltcGwtPmhpZGVDb250ZXh0TWVudSgpOworfQorCitFd2tfQ29udGV4dF9NZW51X0l0ZW0q
IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlw
ZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIEV3a19Db250ZXh0X01lbnUq
IHBhcmVudE1lbnUsIEV3a19Db250ZXh0X01lbnUqIHN1Yk1lbnUsIGNvbnN0IGNoYXIqIHRpdGxl
LCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQpCit7CisgICAgRXdrQ29udGV4
dE1lbnVJdGVtKiBuZXdJdGVtID0gRXdrQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUodHlwZSwgYWN0
aW9uLCBwYXJlbnRNZW51LCBzdWJNZW51LCB0aXRsZSwgY2hlY2tlZCwgZW5hYmxlZCkubGVha1B0
cigpOworCisgICAgcmV0dXJuIG5ld0l0ZW07Cit9CisKK3ZvaWQgZXdrX2NvbnRleHRfbWVudV9p
dGVtX2ZyZWUoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKGl0ZW0pOworCisgICAgZGVsZXRlIGl0ZW07Cit9CisKK3ZvaWQgRXdr
Q29udGV4dE1lbnU6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKK3sKKyAgICBtX2NvbnRleHRNZW51UHJveHktPmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKGl0ZW0pOyAKK30gCisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9t
ZW51X2hpZGUoRXdrX0NvbnRleHRfTWVudSogbWVudSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwobWVudSwgZmFsc2UpOworCisgICAgbWVudS0+aGlkZSgpOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IEVpbmFfTGlzdCogZXdrX2NvbnRleHRfbWVudV9pdGVt
c19nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudSogbWVudSkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwobWVudSwgMCk7CisKKyAgICByZXR1cm4gbWVudS0+aXRlbXMoKTsK
K30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QoRXdrX0NvbnRleHRf
TWVudSogbWVudSwgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKKworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGU+
KGl0ZW0tPnR5cGUoKSk7CisgICAgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24+KGl0ZW0tPmFjdGlvbigpKTsK
KworICAgIFdlYkNvbnRleHRNZW51SXRlbURhdGEgbmV3SXRlbSh0eXBlLCBhY3Rpb24sIGl0ZW0t
PnRpdGxlKCksIGl0ZW0tPmVuYWJsZWQoKSwgaXRlbS0+Y2hlY2tlZCgpKTsKKyAgICBtZW51LT5j
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChuZXdJdGVtKTsKKworICAgIHJldHVybiB0cnVlOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
bWVudS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVu
dS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZhZjUzNWI0ZmZkODU5ODVjODlkNzJmYmI1MTQ0Y2EzYzNkNWZmZGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dF9tZW51LmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfY29udGV4dF9tZW51LmgKKyAqIEBicmll
ZiAgIERlc2NyaWJlcyB0aGUgRXdrIENvbnRleHQgTWVudSBBUEkuCisgKi8KKworI2lmbmRlZiBl
d2tfY29udGV4dF9tZW51X2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfbWVudV9oCisKKyNpbmNsdWRl
ICJld2tfY29udGV4dF9tZW51X2l0ZW0uaCIKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5h
bWUgZm9yIEV3a19Db250ZXh0X01lbnUgKi8KK3R5cGVkZWYgc3RydWN0IEV3a0NvbnRleHRNZW51
IEV3a19Db250ZXh0X01lbnU7CisKKy8qKgorICogQ3JlYXRlcyBhIG5ldyBpdGVtIG9mIHRoZSBj
b250ZXh0IG1lbnUuCisgKgorICogQHBhcmFtIHR5cGUgc3BlY2lmaWVzIGEgdHlwZSBvZiB0aGUg
aXRlbQorICogQHBhcmFtIGFjdGlvbiBzcGVjaWZpZXMgYSBhY3Rpb24gb2YgdGhlIGl0ZW0KKyAq
IEBwYXJhbSBwYXJlbnRfbWVudSBzcGVjaWZpZXMgYSBwYXJlbnQgbWVudSBvZiB0aGUgaXRlbQor
ICogQHBhcmFtIHN1Ym1lbnUgc3BlY2lmaWVzIGEgc3VibWVudSBvZiB0aGUgaXRlbQorICogQHBh
cmFtIHRpdGxlIHNwZWNpZmllcyBhIHRpdGxlIG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gY2hlY2tl
ZCBAYyBFSU5BX1RSVUUgaWYgdGhlIGl0ZW0gc2hvdWxkIGJlIHRvZ2dsZWQgb3IgQGMgRUlOQV9G
QUxTRSBpZiBub3QKKyAqIEBwYXJhbSBlbmFibGVkIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhl
IGl0ZW0gb3IgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCisgKiBAcmV0dXJuIHRoZSBwb2ludGVy
IHRvIHRoZSBuZXcgaXRlbSBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQorICoKKyAq
IEBub3RlIFRoZSByZXR1cm4gdmFsdWUgQGIgc2hvdWxkIEBiIGJlIGZyZWVkIGFmdGVyIHVzZQor
ICovCitFQVBJIEV3a19Db250ZXh0X01lbnVfSXRlbSAqZXdrX2NvbnRleHRfbWVudV9pdGVtX25l
dyhFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1f
QWN0aW9uIGFjdGlvbiwgRXdrX0NvbnRleHRfTWVudSAqcGFyZW50X21lbnUsIEV3a19Db250ZXh0
X01lbnUgKnN1Yl9tZW51LCBjb25zdCBjaGFyICp0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVp
bmFfQm9vbCBlbmFibGVkKTsKKworLyoqCisgKiBEZXN0cm95cyB0aGUgaXRlbSBvZiB0aGUgY29u
dGV4dCBtZW51IG9iamVjdC4KKyAqCisgKiBAcGFyYW0gaXRlbSB0aGUgaXRlbSB0byBkZXN0b3J5
CisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2hpZGUKKyAqIEBzZWUgZXdrX2NvbnRleHRf
bWVudV91bnJlZgorICovCitFQVBJIHZvaWQgZXdrX2NvbnRleHRfbWVudV9pdGVtX2ZyZWUoRXdr
X0NvbnRleHRfTWVudV9JdGVtICppdGVtKTsKKworLyoqCisgKiBIaWRlcyB0aGUgY29udGV4dCBt
ZW51IG9iamVjdC4KKyAqCisgKiBAcGFyYW0gbWVudSB0aGUgY29udGV4dCBtZW51IG9iamVjdCB0
byBoaWRlCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNF
IG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9mcmVlCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaGlkZShFd2tfQ29udGV4dF9NZW51ICpt
ZW51KTsKKworLyoqCisgKiBHZXRzIHRoZSBsaXN0IG9mIGl0ZW1zLgorICoKKyAqIEBwYXJhbSBv
IHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0IHRvIGdldCBsaXN0IG9mIHRoZSBpdGVtcworICogQHJl
dHVybiB0aGUgbGlzdCBvZiB0aGUgaXRlbXMgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1
cmUKKyAqLworRUFQSSBjb25zdCBFaW5hX0xpc3QgKmV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0
KGNvbnN0IEV3a19Db250ZXh0X01lbnUgKm8pOworCisvKioKKyAqIFNlbGVjdHMgdGhlIGl0ZW0g
ZnJvbSB0aGUgY29udGV4dCBtZW51IG9iamVjdC4KKyAqCisgKiBAcGFyYW0gbWVudSB0aGUgY29u
dGV4dCBtZW51IG9iamVjdAorICogQHBhcmFtIGl0ZW0gdGhlIGl0ZW0gaXMgc2VsZWN0ZWQKKyAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWls
dXJlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QoRXdr
X0NvbnRleHRfTWVudSAqbWVudSwgRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtKTsKKworI2lm
ZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIGV3a19jb250ZXh0X21lbnVf
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHRfbWVudV9pdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0X21lbnVfaXRlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEwYzA0YTg5YzViMzVlZGVjMDE1
MDIxZWI4NjFkM2ZiYTU3YmQ2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHAKQEAgLTAsMCArMSwyNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorCisjaW5jbHVkZSAiZXdrX2Nv
bnRleHRfbWVudV9pdGVtX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitFd2tDb250ZXh0TWVudUl0ZW06OkV3a0NvbnRleHRN
ZW51SXRlbShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQorICAgIDogbV90eXBl
KHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlPihpdGVtLnR5cGUoKSkpCisg
ICAgLCBtX2FjdGlvbihzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uPihp
dGVtLmFjdGlvbigpKSkKKyAgICAsIG1fdGl0bGUoaXRlbS50aXRsZSgpLnV0ZjgoKS5kYXRhKCkp
CisgICAgLCBtX3BhcmVudE1lbnUoMCkKKyAgICAsIG1fc3ViTWVudSgwKQorICAgICwgbV9pc0No
ZWNrZWQoaXRlbS5jaGVja2VkKCkpCisgICAgLCBtX2lzRW5hYmxlZChpdGVtLmVuYWJsZWQoKSkK
K3sKK30KKworRXdrQ29udGV4dE1lbnVJdGVtOjpFd2tDb250ZXh0TWVudUl0ZW0oRXdrX0NvbnRl
eHRfTWVudV9JdGVtX1R5cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rp
b24sIEV3a19Db250ZXh0X01lbnUqIHBhcmVudE1lbnUsIEV3a19Db250ZXh0X01lbnUqIHN1Yk1l
bnUsIGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJs
ZWQpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fYWN0aW9uKGFjdGlvbikKKyAgICAsIG1f
dGl0bGUodGl0bGUpCisgICAgLCBtX3BhcmVudE1lbnUocGFyZW50TWVudSkKKyAgICAsIG1fc3Vi
TWVudShzdWJNZW51KQorICAgICwgbV9pc0NoZWNrZWQoY2hlY2tlZCkKKyAgICAsIG1faXNFbmFi
bGVkKGVuYWJsZWQpCit7Cit9CisKK0V3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIEV3a0NvbnRl
eHRNZW51SXRlbTo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZTsKK30KKwordm9p
ZCBFd2tDb250ZXh0TWVudUl0ZW06OnNldFR5cGUoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUg
dHlwZSkKK3sKKyAgICBtX3R5cGUgPSB0eXBlOworfQorCitFd2tfQ29udGV4dF9NZW51X0l0ZW1f
QWN0aW9uIEV3a0NvbnRleHRNZW51SXRlbTo6YWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9hY3Rpb247Cit9CisKK3ZvaWQgRXdrQ29udGV4dE1lbnVJdGVtOjpzZXRBY3Rpb24oRXdrX0Nv
bnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24pCit7CisgICAgbV9hY3Rpb24gPSBhY3Rpb247
Cit9CisKK2NvbnN0IGNoYXIqIEV3a0NvbnRleHRNZW51SXRlbTo6dGl0bGUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3RpdGxlOworfQorCit2b2lkIEV3a0NvbnRleHRNZW51SXRlbTo6c2V0VGl0
bGUoY29uc3QgY2hhciogdGl0bGUpCit7CisgICAgbV90aXRsZSA9IHRpdGxlOworfQorCitib29s
IEV3a0NvbnRleHRNZW51SXRlbTo6Y2hlY2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXND
aGVja2VkOworfQorCit2b2lkIEV3a0NvbnRleHRNZW51SXRlbTo6c2V0Q2hlY2tlZChib29sIGNo
ZWNrZWQpCit7CisgICAgbV9pc0NoZWNrZWQgPSBjaGVja2VkOworfQorCitib29sIEV3a0NvbnRl
eHRNZW51SXRlbTo6ZW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNFbmFibGVkOwor
fQorCit2b2lkIEV3a0NvbnRleHRNZW51SXRlbTo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCit7
CisgICAgbV9pc0VuYWJsZWQgPSBlbmFibGVkOworfQorCitFd2tfQ29udGV4dF9NZW51X0l0ZW1f
VHlwZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVu
dV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVt
LCBFV0tfQUNUSU9OX1RZUEUpOworCisgICAgcmV0dXJuIGl0ZW0tPnR5cGUoKTsKK30KKworRWlu
YV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX3NldChFd2tfQ29udGV4dF9NZW51X0l0
ZW0qIGl0ZW0sIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUpCit7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKKworICAgIGl0ZW0tPnNldFR5
cGUodHlwZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRXdrX0NvbnRleHRfTWVudV9JdGVt
X0FjdGlvbiBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChjb25zdCBFd2tfQ29udGV4
dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGl0ZW0sIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fQUNUSU9OKTsKKworICAgIHJldHVy
biBpdGVtLT5hY3Rpb24oKTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9h
Y3Rpb25fc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgRXdrX0NvbnRleHRfTWVudV9J
dGVtX0FjdGlvbiBhY3Rpb24pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGl0ZW0sIGZhbHNlKTsKKworICAgIGl0ZW0tPnNldEFjdGlvbihhY3Rpb24pOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9n
ZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCAwKTsKKworICAgIHJldHVybiBpdGVtLT50aXRsZSgp
OworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldChFd2tfQ29u
dGV4dF9NZW51X0l0ZW0qIGl0ZW0sIGNvbnN0IGNoYXIqIHRpdGxlKQoreworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICBpdGVtLT5zZXRUaXRs
ZSh0aXRsZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0
X21lbnVfaXRlbV9jaGVja2VkX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0p
Cit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKKwor
ICAgIHJldHVybiBpdGVtLT5jaGVja2VkKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9t
ZW51X2l0ZW1fY2hlY2tlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBFaW5hX0Jv
b2wgY2hlY2tlZCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwg
ZmFsc2UpOworCisgICAgaXRlbS0+c2V0Q2hlY2tlZChjaGVja2VkKTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0KGNv
bnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworICAgIAorICAgIHJldHVybiBpdGVtLT5lbmFi
bGVkKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQo
RXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBFaW5hX0Jvb2wgZW5hYmxlZCkKK3sKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworCisgICAgaXRlbS0+
c2V0RW5hYmxlZChlbmFibGVkKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fQUNUSU9OLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbik7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9MSU5LX0lOX05FV19XSU5E
T1csIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3cpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RPV05M
T0FEX0xJTktfVE9fRElTSywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5r
VG9EaXNrKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19DT1BZX0xJTktfVE9fQ0xJUEJPQVJELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdDb3B5TGlua1RvQ2xpcGJvYXJkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0lNQUdFX0lOX05FV19XSU5ET1csIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93KTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19ET1dOTE9BRF9JTUFHRV9U
T19ESVNLLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19D
T1BZX0lNQUdFX1RPX0NMSVBCT0FSRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weUlt
YWdlVG9DbGlwYm9hcmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX0NPUFlfSU1BR0VfVVJMX1RPX0NMSVBCT0FSRCwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fRlJBTUVfSU5fTkVX
X1dJTkRPVywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3cp
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X0NPUFksIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHkpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0JBQ0ssIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0dvQmFjayk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fRk9SV0FSRCwgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnR29Gb3J3YXJkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdG9w
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19SRUxPQUQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ1VULCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdDdXQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BBU1RFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdQYXN0ZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfU0VMRUNUX0FMTCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxs
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19TUEVMTElOR19HVUVTUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdHdWVz
cyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfTk9fR1VFU1NFU19GT1VORCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2Vz
Rm91bmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0lHTk9SRV9TUEVMTElORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSWdub3Jl
U3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX0xFQVJOX1NQRUxMSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdMZWFy
blNwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19PVEhFUiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3RoZXIpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFQVJD
SF9JTl9TUE9UTElHSFQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxp
Z2h0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19TRUFSQ0hfV0VCLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0xP
T0tfVVBfSU5fRElDVElPTkFSWSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5E
aWN0aW9uYXJ5KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19PUEVOX1dJVEhfREVGQVVMVF9BUFBMSUNBVElPTiwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnT3BlbldpdGhEZWZhdWx0QXBwbGljYXRpb24pOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQUNUVUFMX1NJWkUsIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVBERkFjdHVhbFNpemUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGWk9PTV9JTiwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtUERGWm9vbUluKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1BERlpPT01fT1VULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZa
b29tT3V0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1BERkFVVE9fU0laRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGQXV0b1NpemUpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGU0lO
R0xFX1BBR0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERlNpbmdsZVBhZ2UpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGRkFDSU5HX1BB
R0VTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZGYWNpbmdQYWdlcyk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZDT05USU5VT1VTLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZDb250aW51b3VzKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERk5FWFRfUEFHRSwgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtUERGTmV4dFBhZ2UpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGUFJFVklPVVNfUEFHRSwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtUERGUHJldmlvdXNQYWdlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJTkssIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ09wZW5MaW5rKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19JR05PUkVfR1JBTU1BUiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnSWdub3JlR3JhbW1hcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfTUVOVSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnU3BlbGxpbmdNZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19TSE9XX1NQRUxMSU5HX1BBTkVMLCBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tfU1BFTExJTkcsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX1NQRUxMSU5HX1dISUxFX1RZUElORywg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVD
S19HUkFNTUFSX1dJVEhfU1BFTExJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NoZWNr
R3JhbW1hcldpdGhTcGVsbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfRk9OVF9NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdGb250TWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfU0hPV19GT05UUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2hvd0Zv
bnRzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19CT0xELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdCb2xkKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JVEFMSUMsIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVU5ERVJMSU5FLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdVbmRlcmxpbmUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX09VVExJTkUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z091dGxpbmUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX1NUWUxFUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3R5bGVzKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9X
X0NPTE9SUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9ycyk7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFRUNIX01F
TlUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUQVJUX1NQRUFLSU5H
LCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QX1NQRUFLSU5H
LCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmcpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1dSSVRJTkdfRElSRUNU
SU9OX01FTlUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19ERUZBVUxUX0RJUkVDVElPTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERp
cmVjdGlvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfTEVGVF9UT19SSUdIVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTGVmdFRv
UmlnaHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX1JJR0hUX1RPX0xFRlQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9M
ZWZ0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19QREZTSU5HTEVfUEFHRV9TQ1JPTExJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z1BERlNpbmdsZVBhZ2VTY3JvbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERkZBQ0lOR19QQUdFU19TQ1JPTExJTkcsIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2VzU2Nyb2xsaW5nKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JTlNQRUNUX0VM
RU1FTlQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50KTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJ
UkVDVElPTl9NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVu
dSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfVEVYVF9ESVJFQ1RJT05fREVGQVVMVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4
dERpcmVjdGlvbkRlZmF1bHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodCk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJ
T05fUklHSFRfVE9fTEVGVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlv
blJpZ2h0VG9MZWZ0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX09QRU5fTUVESUFfSU5fTkVXX1dJTkRPVywgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnT3Blbk1lZGlhSW5OZXdXaW5kb3cpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTUVESUFfTElOS19UT19DTElQQk9BUkQs
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlNZWRpYUxpbmtUb0NsaXBib2FyZCk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVE9H
R0xFX01FRElBX0NPTlRST0xTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRp
YUNvbnRyb2xzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19UT0dHTEVfTUVESUFfTE9PUCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
VG9nZ2xlTWVkaWFMb29wKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19FTlRFUl9WSURFT19GVUxMU0NSRUVOLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdFbnRlclZpZGVvRnVsbHNjcmVlbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTUVESUFfUExBWV9QQVVTRSwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5UGF1c2UpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX01FRElBX01VVEUsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0NVU1RPTV9UQUcsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbUJhc2VDdXN0b21UYWcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfQ09OVEVYVF9NRU5VX0lURU1fQ1VTVE9NX1RBR19OT19BQ1RJT04sIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbUN1c3RvbVRhZ05vQWN0aW9uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0xBU1RfQ1VTVE9NX1RBRywgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtTGFzdEN1c3RvbVRhZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT05URVhUX01FTlVfSVRFTV9CQVNFX0FQUExJQ0FUSU9OX1RBRywgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTk2ZWFkZTJmODZkYWE2NmNjOTIyZDRjOTZkMTg1YmNkODRmN2FjYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRl
bS5oCkBAIC0wLDAgKzEsMjQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8qKgorICogQGZpbGUgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtLmgKKyAqIEBicmllZiAgIERl
c2NyaWJlcyB0aGUgRXdrIENvbnRleHQgTWVudSBJdGVtIEFQSS4KKyAqLworCisjaWZuZGVmIGV3
a19jb250ZXh0X21lbnVfaXRlbV9oCisjZGVmaW5lIGV3a19jb250ZXh0X21lbnVfaXRlbV9oCisK
KyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3a19Qb3B1cF9NZW51X0l0ZW0g
Ki8KK3R5cGVkZWYgc3RydWN0IEV3a0NvbnRleHRNZW51SXRlbSBFd2tfQ29udGV4dF9NZW51X0l0
ZW07CisKKy8qKgorICogXGVudW0gICAgX0V3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlCisgKiBA
YnJpZWYgICBEZWZpbmVzIHRoZSB0eXBlcyBvZiB0aGUgaXRlbXMgZm9yIHRoZSBjb250ZXh0IG1l
bnUuCisgKiBAaW5mbyAgICBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIENvbnRleHRNZW51SXRlbS5o
CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgRVdLX0FDVElPTl9UWVBFLAorICAgIEVXS19DSEVD
S0FCTEVfQUNUSU9OX1RZUEUsCisgICAgRVdLX1NFUEFSQVRPUl9UWVBFLAorICAgIEVXS19TVUJN
RU5VX1RZUEUKK30gRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGU7CisKKy8qKgorICogXGVudW0g
ICAgX0V3a19Db250ZXh0X01lbnVfQWN0aW9uCisgKiBAYnJpZWYgICBQcm92aWRlcyB0aGUgYWN0
aW9ucyBvZiBpdGVtcyBmb3IgdGhlIGNvbnRleHQgbWVudS4KKyAqIEBpbmZvICAgIEtlZXAgdGhp
cyBpbiBzeW5jIHdpdGggQ29udGV4dE1lbnVJdGVtLmgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05PX0FDVElPTiwKKyAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX09QRU5fTElOS19JTl9ORVdfV0lORE9XLAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfRE9XTkxPQURfTElOS19UT19ESVNLLAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfQ09QWV9MSU5LX1RPX0NMSVBCT0FSRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX09QRU5fSU1BR0VfSU5fTkVXX1dJTkRPVywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0RPV05MT0FEX0lNQUdFX1RPX0RJU0ssCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19DT1BZX0lNQUdFX1RPX0NMSVBCT0FSRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX0NPUFlfSU1BR0VfVVJMX1RPX0NMSVBCT0FSRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX09QRU5fRlJBTUVfSU5fTkVXX1dJTkRPVywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0NPUFksCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19HT19CQUNLLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fRk9SV0FSRCwKKyAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1NUT1AsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19SRUxPQUQs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DVVQsCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19QQVNURSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFTEVDVF9B
TEwsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVMTElOR19HVUVTUywKKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05PX0dVRVNTRVNfRk9VTkQsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19JR05PUkVfU1BFTExJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19MRUFSTl9TUEVMTElORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09U
SEVSLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0VBUkNIX0lOX1NQT1RMSUdIVCwK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFQVJDSF9XRUIsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19MT09LX1VQX0lOX0RJQ1RJT05BUlksCisgICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19PUEVOX1dJVEhfREVGQVVMVF9BUFBMSUNBVElPTiwKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fUERGQUNUVUFMX1NJWkUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1BERlpPT01fSU4sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlpPT01fT1VULAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9QREZBVVRPX1NJWkUsCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1BERlNJTkdMRV9QQUdFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZGQUNJ
TkdfUEFHRVMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkNPTlRJTlVPVVMsCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERk5FWFRfUEFHRSwKKyAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fUERGUFJFVklPVVNfUEFHRSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09Q
RU5fTElOSyA9IDIwMDAsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVfR1JB
TU1BUiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUxMSU5HX01FTlUsIC8qKjwg
c3BlbGxpbmcgb3Igc3BlbGxpbmcvZ3JhbW1hciBzdWItbWVudSAqLworICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfU0hPV19TUEVMTElOR19QQU5FTCwKKyAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX0NIRUNLX1NQRUxMSU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
Q0hFQ0tfU1BFTExJTkdfV0hJTEVfVFlQSU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfQ0hFQ0tfR1JBTU1BUl9XSVRIX1NQRUxMSU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfRk9OVF9NRU5VLCAvKio8IGZvbnQgc3ViLW1lbnUgKi8KKyAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1NIT1dfRk9OVFMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19C
T0xELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSVRBTElDLAorICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfVU5ERVJMSU5FLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfT1VUTElORSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUWUxFUywKKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfQ09MT1JTLAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfU1BFRUNIX01FTlUsIC8qKjwgc3BlZWNoIHN1Yi1tZW51ICovCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVEFSVF9TUEVBS0lORywKKyAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1NUT1BfU1BFQUtJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19XUklUSU5HX0RJUkVDVElPTl9NRU5VLCAvKio8IHdyaXRpbmcgZGlyZWN0aW9uIHN1Yi1tZW51
ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19ERUZBVUxUX0RJUkVDVElPTiwKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0xFRlRfVE9fUklHSFQsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19SSUdIVF9UT19MRUZULAorICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfUERGU0lOR0xFX1BBR0VfU0NST0xMSU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfUERGRkFDSU5HX1BBR0VTX1NDUk9MTElORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0lOU1BFQ1RfRUxFTUVOVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RF
WFRfRElSRUNUSU9OX01FTlUsIC8qKjwgdGV4dCBkaXJlY3Rpb24gc3ViLW1lbnUgKi8KKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX0RFRkFVTFQsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hULAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fT1BFTl9NRURJQV9JTl9ORVdfV0lORE9XLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9NRURJQV9MSU5LX1RPX0NMSVBCT0FSRCwK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dMRV9NRURJQV9DT05UUk9MUywKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dMRV9NRURJQV9MT09QLAorICAgIEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfRU5URVJfVklERU9fRlVMTFNDUkVFTiwKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX01FRElBX1BMQVlfUEFVU0UsCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19NRURJQV9NVVRFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0NV
U1RPTV9UQUcgPSA1MDAwLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9DVVNUT01fVEFHX05P
X0FDVElPTiA9IDU5OTgsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0xBU1RfQ1VTVE9NX1RB
RyA9IDU5OTksCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0JBU0VfQVBQTElDQVRJT05fVEFH
ID0gMTAwMDAKK30gRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbjsKKworLyoqCisgKiBHZXRz
IHR5cGUgb2YgdGhlIGl0ZW0uCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gZ2V0IHRoZSB0
eXBlCisgKiBAcmV0dXJuIHR5cGUgb2YgdGhlIGl0ZW0gb24gc3VjY2VzcyBvciBAYyBFV0tfQUNU
SU9OX1RZUEUgb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5
cGVfc2V0CisgKi8KK0VBUEkgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgZXdrX2NvbnRleHRf
bWVudV9pdGVtX3R5cGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbyk7CisKKy8q
KgorICogU2V0cyB0aGUgdHlwZSBvZiBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRv
IHNldCB0aGUgdHlwZQorICogQHBhcmFtIHR5cGUgYSBuZXcgdHlwZSBmb3IgdGhlIGl0ZW0gb2Jq
ZWN0CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNF
IG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldAor
ICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQoRXdrX0Nv
bnRleHRfTWVudV9JdGVtICpvLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlKTsKKwor
LyoqCisgKiBHZXRzIGFuIGFjdGlvbiBvZiB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUg
aXRlbSB0byBnZXQgdGhlIGFjdGlvbgorICogQHJldHVybiBhbiBhY3Rpb24gb2YgdGhlIGl0ZW0g
b24gc3VjY2VzcyBvciBAYyBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05PX0FDVElPTiBvbiBm
YWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX3NldAorICov
CitFQVBJIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gZXdrX2NvbnRleHRfbWVudV9pdGVt
X2FjdGlvbl9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpvKTsKKworLyoqCisgKiBT
ZXRzIGFuIGFjdGlvbiBvZiB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBz
ZXQgdGhlIGFjdGlvbgorICogQHBhcmFtIGFjdGlvbiBhIG5ldyBhY3Rpb24gZm9yIHRoZSBpdGVt
IG9iamVjdAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlOQV9G
QUxTRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9u
X2dldAorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX3Nl
dChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24g
YWN0aW9uKTsKKworLyoqCisgKiBHZXRzIGEgdGl0bGUgb2YgdGhlIGl0ZW0uCisgKgorICogQHBh
cmFtIG8gdGhlIGl0ZW0gdG8gZ2V0IHRoZSB0aXRsZQorICogQHJldHVybiBhIHRpdGxlIG9mIHRo
ZSBpdGVtIG9uIHN1Y2Nlc3MsIG9yIEBjIE5VTEwgb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdr
X2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldAorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19j
b250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpv
KTsKKworLyoqCisgKiBTZXRzIGEgdGl0bGUgb2YgdGhlIGl0ZW0uCisgKgorICogQHBhcmFtIG8g
dGhlIGl0ZW0gdG8gc2V0IHRoZSB0aXRsZQorICogQHBhcmFtIHRpdGxlIGEgbmV3IHRpdGxlIGZv
ciB0aGUgaXRlbSBvYmplY3QKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9y
IEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9p
dGVtX3RpdGxlX2dldAorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1f
dGl0bGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgY29uc3QgY2hhciAqdGl0bGUpOwor
CisvKioKKyAqIFF1ZXJpZXMgaWYgdGhlIGl0ZW0gaXMgdG9nZ2xlZC4KKyAqCisgKiBAcGFyYW0g
byB0aGUgaXRlbSB0byBxdWVyeSBpZiB0aGUgaXRlbSBpcyB0b2dnbGVkCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBpZiB0aGUgaXRlbSBpcyB0b2dnbGVkIG9yIEBjIEVJTkFfRkFMU0UgaWYgbm90
IG9yIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVt
X2NoZWNrZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbyk7CisKKy8qKgorICog
U2V0cyBpZiB0aGUgaXRlbSBzaG91bGQgYmUgdG9nZ2xlZC4KKyAqCisgKiBAcGFyYW0gbyB0aGUg
aXRlbSB0byBiZSB0b2dnbGVkCisgKiBAcGFyYW0gY2hlY2tlZCBAYyBFSU5BX1RSVUUgaWYgdGhl
IGl0ZW0gc2hvdWxkIGJlIHRvZ2dsZWQgb3IgQGMgRUlOQV9GQUxTRSBpZiBub3QKKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisg
Ki8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX3NldChFd2tf
Q29udGV4dF9NZW51X0l0ZW0gKm8sIEVpbmFfQm9vbCBjaGVja2VkKTsKKworLyoqCisgKiBHZXRz
IGlmIHRoZSBpdGVtIGlzIGVuYWJsZWQuCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gZ2V0
IGVuYWJsZWQgc3RhdGUKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGl0J3MgZW5hYmxlZCwg
QGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2VuYWJsZWRfc2V0CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0
X21lbnVfaXRlbV9lbmFibGVkX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pOwor
CisvKioKKyAqIEVuYWJsZXMvZGlzYWJsZXMgdGhlIGl0ZW0uCisgKgorICogQHBhcmFtIG8gdGhl
IGl0ZW0gdG8gZW5hYmxlL2Rpc2FibGUKKyAqIEBwYXJhbSBlbmFibGVkIEBjIEVJTkFfVFJVRSB0
byBlbmFibGUgdGhlIGl0ZW0gb3IgQGMgRUlOQV9GQUxTRSB0byBkaXNhYmxlCisgKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAq
CisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dldAorICovCitFQVBJIEVp
bmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQoRXdrX0NvbnRleHRfTWVu
dV9JdGVtICpvLCBFaW5hX0Jvb2wgZW5hYmxlZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor
I2VuZGlmCisKKyNlbmRpZiAvKiBld2tfY29udGV4dF9tZW51X2l0ZW1faCAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVt
X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X21lbnVfaXRlbV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RjZjI0NzdiZGY2ZDg4NTY1OTAxZDVl
NjMxZjlkZGFhNGVhNTA2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmgKQEAgLTAsMCArMSw4
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19jb250
ZXh0X21lbnVfaXRlbV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3By
aXZhdGVfaAorCisjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCisjaW5jbHVkZSAiV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnUuaCIKKyNp
bmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0ZW0uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgorCisvKioKKyAqIFxzdHJ1Y3QgIEV3a19Db250ZXh0X01lbnVfSXRlbQorICogQGJyaWVm
ICAgQ29udGFpbnMgdGhlIGNvbnRleHQgbWVudSBpdGVtIGRhdGEuCisgKi8KK2NsYXNzIEV3a0Nv
bnRleHRNZW51SXRlbSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RXdrQ29udGV4
dE1lbnVJdGVtPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBp
dGVtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tfQ29udGV4dF9NZW51
X0l0ZW0oaXRlbSkpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzT3duUHRyPEV3a0NvbnRleHRN
ZW51SXRlbT4gY3JlYXRlKEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3a19Db250
ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBFd2tDb250ZXh0TWVudSogcGFyZW50TWVudSwg
RXdrQ29udGV4dE1lbnUqIHN1Yk1lbnUsIGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hl
Y2tlZCwgRWluYV9Cb29sIGVuYWJsZWQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IEV3a19Db250ZXh0X01lbnVfSXRlbSh0eXBlLCBhY3Rpb24sIHBhcmVudE1lbnUsIHN1Yk1l
bnUsIHRpdGxlLCBjaGVja2VkLCBlbmFibGVkKSk7CisgICAgfQorCisgICAgRXdrX0NvbnRleHRf
TWVudV9JdGVtX0FjdGlvbiBhY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldEFjdGlvbihFd2tf
Q29udGV4dF9NZW51X0l0ZW1fQWN0aW9uKTsKKworICAgIGNvbnN0IGNoYXIqIHRpdGxlKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBjaGFyKik7CisKKyAgICBFd2tfQ29udGV4dF9N
ZW51X0l0ZW1fVHlwZSB0eXBlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRUeXBlKEV3a19Db250ZXh0
X01lbnVfSXRlbV9UeXBlKTsKKworICAgIGJvb2wgY2hlY2tlZCgpIGNvbnN0OworICAgIHZvaWQg
c2V0Q2hlY2tlZChib29sKTsKKworICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQg
c2V0RW5hYmxlZChib29sKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBFd2tDb250ZXh0TWVu
dUl0ZW0oY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CisgICAgRXdrQ29u
dGV4dE1lbnVJdGVtKEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3a19Db250ZXh0
X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBFd2tDb250ZXh0TWVudSogcGFyZW50TWVudSwgRXdr
Q29udGV4dE1lbnUqIHN1Yk1lbnUsIGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tl
ZCwgRWluYV9Cb29sIGVuYWJsZWQpOworCisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUg
bV90eXBlOworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gbV9hY3Rpb247CisKKyAg
ICBXS0VpbmFTaGFyZWRTdHJpbmcgbV90aXRsZTsKKworICAgIEV3a19Db250ZXh0X01lbnUqIG1f
cGFyZW50TWVudTsKKyAgICBFd2tfQ29udGV4dF9NZW51KiBtX3N1Yk1lbnU7CisgICAgCisgICAg
Ym9vbCBtX2lzQ2hlY2tlZDsKKyAgICBib29sIG1faXNFbmFibGVkOworfTsKKworI2VuZGlmIC8v
IGV3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2RmMTQ5NTExMTE0YWJiY2MyNzc5MThkNmFkNjczNTE1ODRlYzI1OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X21lbnVfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9tZW51X3ByaXZhdGVfaAorI2RlZmluZSBl
d2tfY29udGV4dF9tZW51X3ByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVt
RGF0YS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorI2luY2x1ZGUgPEVp
bmEuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOwor
Y2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eUVmbDsKK30KKworY2xhc3MgRXdrVmlld0ltcGw7CisK
K2NsYXNzIEV3a0NvbnRleHRNZW51IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxF
d2tDb250ZXh0TWVudT4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5RWZsKiBjb250ZXh0TWVudVByb3h5LCBjb25zdCBWZWN0b3I8V2ViS2l0
OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEV3a0NvbnRleHRNZW51KHZpZXdJbXBsLCBjb250ZXh0TWVudVByb3h5LCBp
dGVtcykpOworICAgIH0KKworICAgIH5Fd2tDb250ZXh0TWVudSgpOworCisgICAgdm9pZCBoaWRl
KCk7CisKKyAgICBjb25zdCBFaW5hX0xpc3QqIGl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0TWVudUl0ZW1zOyB9CisgICAgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBX
ZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pOworCitwcml2YXRlOgorICAgIEV3
a0NvbnRleHRNZW51KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViS2l0OjpXZWJDb250ZXh0TWVu
dVByb3h5RWZsKiwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4m
IGl0ZW1zKTsKKworICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOworICAgIFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVQcm94eUVmbCogbV9jb250ZXh0TWVudVByb3h5OworICAgIEVpbmFfTGlzdCog
bV9jb250ZXh0TWVudUl0ZW1zOworfTsKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X21lbnVfcHJp
dmF0ZV9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmlu
ZGV4IDc1MDE2MTE3NGI5YTQ1N2ZmMmVkZTk4ODUxOGIwYjM0Njc3MmI1N2YuLjM3ZjQyNTNjMWM4
YTg1ZWMxYzNmMmQxZTEyZTcyMGQ4MDU4NzI1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtODQsNiArODQsNyBAQAogI2luY2x1ZGUgImV3a19i
YWNrX2ZvcndhcmRfbGlzdC5oIgogI2luY2x1ZGUgImV3a19jb2xvcl9waWNrZXIuaCIKICNpbmNs
dWRlICJld2tfY29udGV4dC5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnUuaCIKICNpbmNs
dWRlICJld2tfZG93bmxvYWRfam9iLmgiCiAjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCiAjaW5jbHVk
ZSAiZXdrX2ludGVudC5oIgpAQCAtMTE0LDYgKzExNSw5IEBAIHN0cnVjdCBFd2tfVmlld19TbWFy
dF9DbGFzcyB7CiAgICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBp
cyBmcmVlIHRvIGJlIGNoYW5nZWQuICovCiAgICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOwogCisg
ICAgRWluYV9Cb29sICgqY29udGV4dF9tZW51X3Nob3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXdrX0NvbnRleHRfTWVudSAqbWVudSk7Cisg
ICAgRWluYV9Cb29sICgqY29udGV4dF9tZW51X2hpZGUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
KTsKKwogICAgIEVpbmFfQm9vbCAoKnBvcHVwX21lbnVfc2hvdykoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QsIEVpbmFfUmVjdGFuZ2xlIHJlY3QsIEV3a19UZXh0X0RpcmVjdGlvbiB0ZXh0X2RpcmVj
dGlvbiwgZG91YmxlIHBhZ2Vfc2NhbGVfZmFjdG9yLCBFd2tfUG9wdXBfTWVudSAqbWVudSk7CiAg
ICAgRWluYV9Cb29sICgqcG9wdXBfbWVudV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7
CiAKQEAgLTE2OSw3ICsxNzMsNyBAQCBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICog
QHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklF
V19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFS
VF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAvKioKICAqIEluaXRpYWxpemVyIHRvIHpl
cm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dF9t
ZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdr
Ml9jb250ZXh0X21lbnUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMDlkODQ5ODcyMDZkNzg5ODJlYjFkOTVh
YjY5ZmEwNzQ0YzhiMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dF9tZW51LmNwcApAQCAtMCwwICsxLDg1
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuIFNlZSB0aGUgR05VCisgICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
CisgICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEt
MTMwNyBVU0EKKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlVuaXRUZXN0
VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oIgorI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVu
aXRUZXN0RW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlIDxFV2ViS2l0Mi5oPgorI2luY2x1ZGUgPEVj
b3JlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK2V4dGVybiBFV0syVW5p
dFRlc3RFbnZpcm9ubWVudCogZW52aXJvbm1lbnQ7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjaGVj
a0Jhc2ljQ29udGV4dE1lbnVJdGVtKEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgRXdrX0Nv
bnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBh
Y3Rpb24sIGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVu
YWJsZWQpCit7CisgICAgQVNTRVJUX1RSVUUoaXRlbSk7CisKKyAgICBFWFBFQ1RfRVEodHlwZSwg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0KGl0ZW0pKTsKKyAgICBFWFBFQ1RfRVEoYWN0
aW9uLCBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChpdGVtKSk7CisgICAgRVhQRUNU
X1NUUkVRKHRpdGxlLCBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGl0ZW0pKTsKKyAg
ICBFWFBFQ1RfRVEoY2hlY2tlZCwgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGl0
ZW0pKTsKKyAgICBFWFBFQ1RfRVEoZW5hYmxlZCwgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJs
ZWRfZ2V0KGl0ZW0pKTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBzaG93Q29udGV4dE1lbnUoRXdr
X1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwg
RXdrX0NvbnRleHRfTWVudSogY29udGV4dE1lbnUpCit7CisgICAgY29uc3QgRWluYV9MaXN0KiBs
aXN0ID0gZXdrX2NvbnRleHRfbWVudV9pdGVtc19nZXQoY29udGV4dE1lbnUpOworICAgIEVYUEVD
VF9FUSg0LCBlaW5hX2xpc3RfY291bnQobGlzdCkpOworCisgICAgRXdrX0NvbnRleHRfTWVudV9J
dGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4oZWluYV9saXN0
X250aChsaXN0LCAwKSk7CisgICAgY2hlY2tCYXNpY0NvbnRleHRNZW51SXRlbShpdGVtLCBFV0tf
QUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fQkFDSywgIkdvIEJhY2si
LCBmYWxzZSwgdHJ1ZSk7CisKKyAgICBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVu
dV9JdGVtKj4oZWluYV9saXN0X250aChsaXN0LCAxKSk7CisgICAgY2hlY2tCYXNpY0NvbnRleHRN
ZW51SXRlbShpdGVtLCBFV0tfQUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
R09fRk9SV0FSRCwgIkdvIEZvcndhcmQiLCBmYWxzZSwgdHJ1ZSk7CisgICAgZXdrX2NvbnRleHRf
bWVudV9pdGVtX2VuYWJsZWRfc2V0KGl0ZW0sIGZhbHNlKTsKKyAgICBFWFBFQ1RfRkFMU0UoZXdr
X2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0KGl0ZW0pKTsKKworICAgIGl0ZW0gPSBzdGF0
aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW0qPihlaW5hX2xpc3RfbnRoKGxpc3QsIDIpKTsK
KyAgICBjaGVja0Jhc2ljQ29udGV4dE1lbnVJdGVtKGl0ZW0sIEVXS19BQ1RJT05fVFlQRSwgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QLCAiU3RvcCIsIGZhbHNlLCB0cnVlKTsKKyAgICBl
d2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9zZXQoaXRlbSwgdHJ1ZSk7CisgICAgRVhQRUNU
X1RSVUUoZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGl0ZW0pKTsKKworICAgIGl0
ZW0gPSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW0qPihlaW5hX2xpc3RfbnRoKGxp
c3QsIDMpKTsKKyAgICBjaGVja0Jhc2ljQ29udGV4dE1lbnVJdGVtKGl0ZW0sIEVXS19BQ1RJT05f
VFlQRSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19SRUxPQUQsICJSZWxvYWQiLCBmYWxzZSwg
dHJ1ZSk7CisgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldChpdGVtLCAiUmVmcmVz
aCIpOworICAgIEVYUEVDVF9TVFJFUSgiUmVmcmVzaCIsIGV3a19jb250ZXh0X21lbnVfaXRlbV90
aXRsZV9nZXQoaXRlbSkpOworCisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBuZXdJdGVtID0g
ZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldyhFV0tfQUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfT1RIRVIsIGNvbnRleHRNZW51LCAwLCAiTmV3IEN1c3RvbSBJdGVtIiwgZmFs
c2UsIHRydWUpOworICAgIEVYUEVDVF9UUlVFKG5ld0l0ZW0pOworICAgIGV3a19jb250ZXh0X21l
bnVfaXRlbV9mcmVlKG5ld0l0ZW0pOworCisgICAgRVhQRUNUX1RSVUUoZXdrX2NvbnRleHRfbWVu
dV9pdGVtX3NlbGVjdChjb250ZXh0TWVudSwgaXRlbSkpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0
KQoreworICAgIGNvbnN0IGNoYXIqIGl0ZW1TZWxlY3RIVE1MID0KKyAgICAgICAgIjxodG1sPiIK
KyAgICAgICAgIjxib2R5PjxhIGhyZWY9aHR0cDovL3d3dy5nb29nbGUuY29tPlRlc3QgTGluazwv
YT48L2JvZHk+IgorICAgICAgICAiPC9ib2R5PjwvaHRtbD4iOyAKKworICAgIGV3a1ZpZXdDbGFz
cygpLT5jb250ZXh0X21lbnVfc2hvdyA9IHNob3dDb250ZXh0TWVudTsKKworICAgIGV3a192aWV3
X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBpdGVtU2VsZWN0SFRNTCwgImZpbGU6Ly8vIiwg
MCk7CisgICAgbW91c2VDbGljaygyMCwgMzAsIC8qUmlnaHQqLyAzKTsKKyAgICBBU1NFUlRfVFJV
RSh3YWl0VW50aWxMb2FkRmluaXNoZWQoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhODYw
MjhlMGRkNjQzMDcxNjI3MzFmMTdmMzVlMmYzZmE2ODUxZDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcApAQCAt
MCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25p
Y3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudEVmbC5oIgorCisjaW5jbHVkZSAiRXdrVmlld0lt
cGwuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIK
KyNpbmNsdWRlICJXS1BhZ2UuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIgICAK
KyNpbmNsdWRlIDxFdmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRpYyBp
bmxpbmUgQ29udGV4dE1lbnVDbGllbnRFZmwqIHRvQ29udGV4dENsaWVudEVmbChjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUNsaWVu
dEVmbCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKK30KKworQ29udGV4dE1lbnVD
bGllbnRFZmw6OkNvbnRleHRNZW51Q2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAg
ICA6IG1fdmlld0ltcGwodmlld0ltcGwpCit7CisgICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBtX3Zp
ZXdJbXBsLT53a1BhZ2UoKTsKKyAgICBBU1NFUlQocGFnZVJlZik7CisKKyAgICBXS1BhZ2VDb250
ZXh0TWVudUNsaWVudCBjb250ZXh0TWVudUNsaWVudDsKKyAgICBtZW1zZXQoJmNvbnRleHRNZW51
Q2xpZW50LCAwLCBzaXplb2YoV0tQYWdlQ29udGV4dE1lbnVDbGllbnQpKTsKKyAgICBjb250ZXh0
TWVudUNsaWVudC52ZXJzaW9uID0ga1dLUGFnZUNvbnRleHRNZW51Q2xpZW50Q3VycmVudFZlcnNp
b247CisgICAgY29udGV4dE1lbnVDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgY29udGV4
dE1lbnVDbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51X2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjAgPSAwOworICAgIGNvbnRleHRNZW51Q2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRl
bVNlbGVjdGVkID0gMDsKKyAgICBjb250ZXh0TWVudUNsaWVudC5jb250ZXh0TWVudURpc21pc3Nl
ZCA9IDA7CisgICAgY29udGV4dE1lbnVDbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRN
ZW51ID0gMDsKKworICAgIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChwYWdlUmVmLCAm
Y29udGV4dE1lbnVDbGllbnQpOworfQorCit2b2lkIENvbnRleHRNZW51Q2xpZW50RWZsOjpnZXRD
b250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV0tQYWdlUmVmLCBXS0FycmF5UmVmLCBXS0FycmF5
UmVmKiwgV0tIaXRUZXN0UmVzdWx0UmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI5ZTRlZDNjZWNjYmQzMzdk
ODg3YzViNTQ1NDUwMWRmNzViMWFjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuaApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29udGV4dE1lbnVDbGllbnRFZmxfaAorI2Rl
ZmluZSBDb250ZXh0TWVudUNsaWVudEVmbF9oCisKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgor
I2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK2NsYXNzIEV3a1ZpZXdJbXBsOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29udGV4dE1lbnVDbGllbnRFZmwgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENvbnRleHRNZW51Q2xpZW50RWZsPiBjcmVhdGUoRXdrVmll
d0ltcGwqIHZpZXdJbXBsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250
ZXh0TWVudUNsaWVudEVmbCh2aWV3SW1wbCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGdl
dENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXS1BhZ2VSZWYsIFdLQXJyYXlSZWYgcHJvcG9z
ZWRNZW51LCBXS0FycmF5UmVmKiBuZXdNZW51LCBXS0hpdFRlc3RSZXN1bHRSZWYsIFdLVHlwZVJl
ZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgQ29udGV4dE1lbnVDbGllbnRFZmwoRXdrVmlld0ltcGwqKTsKKworICAgIEV3a1ZpZXdJ
bXBsKiBtX3ZpZXdJbXBsOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBDb250ZXh0TWVudUNsaWVudEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFnZUNsaWVudEJhc2UuY3BwCmluZGV4IDk3YTg1ZjVjY2VmZWM3M2RiM2YzNDY5YWI0MTMz
ZTIzMmMxYjM0ZDAuLjBjZTgyYWFlNDZlNDA0ZjVkMjkzZGFhYzYzNGRiMDE5MzViMmM5ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3BwCkBA
IC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNv
bnRleHRNZW51UHJveHkuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5RWZsLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKQEAgLTIyMSwxMCArMjIxLDkgQEAgUGFzc1Jl
ZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEJhc2U6OmNyZWF0ZVBvcHVwTWVudVBy
b3h5KFdlYlBhZ2VQcm94eSoKICAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlFZmw6OmNyZWF0
ZShtX3ZpZXdJbXBsLCBwYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5
PiBQYWdlQ2xpZW50QmFzZTo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQor
UGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50QmFzZTo6Y3JlYXRlQ29u
dGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y3Jl
YXRlKG1fdmlld0ltcGwsIHBhZ2UpOwogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51
UHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVu
dVByb3h5RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzdlMGViODE2MzMzNTNjMTYzM2QwY2VmYjU5ZWQ1
N2Y1MmM0NWIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIgorCisjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCisKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUg
IldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6V2ViQ29udGV4
dE1lbnVQcm94eUVmbChFd2tWaWV3SW1wbCogdmlld0ltcGwsIFdlYlBhZ2VQcm94eSogcGFnZSkK
KyAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCisgICAgLCBtX3BhZ2UocGFnZSkKK3sKK30KKwor
V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6fldlYkNvbnRleHRNZW51UHJveHlFZmwoKQoreworfQor
Cit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlFZmw6OnNob3dDb250ZXh0TWVudShjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1E
YXRhPiYgaXRlbXMpCit7CisgICAgbV92aWV3SW1wbC0+c2hvd0NvbnRleHRNZW51KHRoaXMsIHBv
c2l0aW9uLCBpdGVtcyk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6aGlkZUNv
bnRleHRNZW51KCkKK3sKKyAgICBtX3ZpZXdJbXBsLT5oaWRlQ29udGV4dE1lbnUoKTsKK30KKwor
dm9pZCBXZWJDb250ZXh0TWVudVByb3h5RWZsOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25z
dCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQoreworICAgIG1fcGFnZS0+Y29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQoaXRlbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3YmUyYWI5
Y2ViNWRkY2YxYzQ2MmI0NTUzOGMzMjkzYTIyMjhmNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaApAQCAtMCww
ICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkNvbnRleHRNZW51UHJveHlFZmxfaAorI2RlZmluZSBXZWJD
b250ZXh0TWVudVByb3h5RWZsX2gKKworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorCisjaW5j
bHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1l
bnUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CisKK2NsYXNzIEV3a1ZpZXdJbXBs
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsK
K2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eUVmbCA6IHB1
YmxpYyBXZWJDb250ZXh0TWVudVByb3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJDb250ZXh0TWVudVByb3h5RWZsPiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsLCBX
ZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkNvbnRleHRNZW51UHJveHlFZmwodmlld0ltcGwsIHBhZ2UpKTsKKyAgICB9CisKKyAgICB+V2Vi
Q29udGV4dE1lbnVQcm94eUVmbCgpOworCisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4m
KTsKKyAgICB2b2lkIGhpZGVDb250ZXh0TWVudSgpOworCisgICAgdm9pZCBjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CisKK3ByaXZhdGU6Cisg
ICAgV2ViQ29udGV4dE1lbnVQcm94eUVmbChFd2tWaWV3SW1wbCosIFdlYlBhZ2VQcm94eSopOwor
CisgICAgRXdrVmlld0ltcGwqIG1fdmlld0ltcGw7CisgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7
Cit9OworCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRF
WFRfTUVOVVMpCisjZW5kaWYgLy8gV2ViQ29udGV4dE1lbnVQcm94eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174928</attachid>
            <date>2012-11-19 02:40:04 -0800</date>
            <delta_ts>2012-11-19 02:44:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96200-20121119193754.patch</filename>
            <type>text/plain</type>
            <size>69755</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJhZjU5YjdmMWViZWY4
ODEzZWM4ZDRlMTA0OGVlMjEyNzE4MDQ3YS4uZjE3NGM0NGIyYjFjYmFkZjBhMTNiODRmMDNmNjIz
OTY4NzRlYmI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTE5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0sy
XSBTdXBwb3J0IENvbnRleHQgTWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICBFRkwg
cG9ydCBhbHNvIGRvZXNuJ3QgaGlkZSB1bmF2YWlsYWJsZSBtZW51cyBhcyBndGsgcG9ydC4KKwog
MjAxMi0xMS0xOCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgd2ViYXVkaW86IGNsZWFuLXVwLiBSZXBsYWNlIEF1ZGlvQ29udGV4dDo6bV9kb2N1bWVu
dCBtZW1iZXIgd2l0aCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDliOGJiZDU0MjM1NjUzZWUyZGU2MjkxYTJmZGVlOGI3
NTJhMjk3MWUuLmZjYmQ5NzA4YzI0ZGNlM2UyODVlMDNiMTg4YTYyMTdlODA5YzU4NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw5MiBAQAorMjAxMi0xMS0xOCAgR3l1eW91bmcgS2ltICA8Z3l1eW91
bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gU3VwcG9ydCBDb250ZXh0
IE1lbnUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2
MjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBzdXBwb3J0cyBXSzIgRUZMJ3MgY29udGV4dCBtZW51IGFzIFdLMSBpbXBsZW1lbnRh
dGlvbiBiZWNhdXNlIHdlIGNhbid0IHVzZSBlbGVtZW50YXJ5IGluIGluc2lkZSBXZWJLaXQuCisg
ICAgICAgIE9ubHkgYmFzaWMgZnVuY3Rpb25hbGl0aWVzIG9mIGNvbnRleHQgbWVudSBhcmUgc3Vw
cG9ydGVkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5jcHA6CisgICAgICAgIChFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwpOgorICAgICAg
ICAoRXdrVmlld0ltcGw6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6
aGlkZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcDogQWRkZWQuCisgICAgICAg
IChFd2tfQ29udGV4dF9NZW51OjpFd2tfQ29udGV4dF9NZW51KToKKyAgICAgICAgKEV3a19Db250
ZXh0X01lbnU6On5Fd2tfQ29udGV4dF9NZW51KToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnU6
OmhpZGUpOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudTo6YXBwZW5kSXRlbSk6CisgICAgICAg
IChld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVf
aXRlbV9mcmVlKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnU6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaGlkZSk6CisgICAgICAgIChld2tf
Y29udGV4dF9tZW51X2l0ZW1zX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1f
c2VsZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51Lmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRl
bS5jcHA6IEFkZGVkLgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjpFd2tfQ29udGV4
dF9NZW51X0l0ZW0pOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjp0eXBlKToKKyAg
ICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6c2V0VHlwZSk6CisgICAgICAgIChFd2tfQ29u
dGV4dF9NZW51X0l0ZW06OmFjdGlvbik6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06
OnNldEFjdGlvbik6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06OnRpdGxlKToKKyAg
ICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6c2V0VGl0bGUpOgorICAgICAgICAoRXdrX0Nv
bnRleHRfTWVudV9JdGVtOjpjaGVja2VkKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRl
bTo6c2V0Q2hlY2tlZCk6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06OmVuYWJsZWQp
OgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjpzZXRFbmFibGVkKToKKyAgICAgICAg
KGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9t
ZW51X2l0ZW1fdHlwZV9zZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlv
bl9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9zZXQpOgorICAg
ICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldCk6CisgICAgICAgIChld2tfY29u
dGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRl
bV9jaGVja2VkX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9z
ZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0KToKKyAgICAg
ICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmg6IEFkZGVkLgor
ICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtKToKKyAgICAgICAgKEV3a19Db250ZXh0X01l
bnVfSXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9tZW51X3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoRXdr
X0NvbnRleHRfTWVudSk6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51OjpjcmVhdGUpOgorICAg
ICAgICAoRXdrX0NvbnRleHRfTWVudTo6aXRlbXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX2NvbnRleHRfbWVudS5jcHA6IEFkZGVkLgorICAgICAgICAoY2hlY2tCYXNpY0NvbnRleHRN
ZW51SXRlbSk6CisgICAgICAgIChzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAoVEVTVF9GKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcDogQWRkZWQu
CisgICAgICAgICh0b0NvbnRleHRDbGllbnRFZmwpOgorICAgICAgICAoQ29udGV4dE1lbnVDbGll
bnRFZmw6OkNvbnRleHRNZW51Q2xpZW50RWZsKToKKyAgICAgICAgKENvbnRleHRNZW51Q2xpZW50
RWZsOjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoQ29udGV4dE1lbnVDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0
TWVudUNsaWVudEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGll
bnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRl
eHRNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94
eUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVQcm94eUVmbDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmw6On5XZWJDb250ZXh0TWVudVByb3h5RWZsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6c2hvd0NvbnRleHRNZW51
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6aGlkZUNvbnRleHRN
ZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQ
cm94eUVmbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb250ZXh0
TWVudVByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6
Y3JlYXRlKToKKwogMjAxMi0xMS0xOCAgSmFlaHVuIExpbSAgPGxqYWVodW4ubGltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gUmVtb3ZlIHVuZGVyc2NvcmUgY2hhcmFjdGVycyBp
biBFd2sgY2xhc3MgbmFtZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKaW5kZXggNzk3OTcxZDBmNTZjOTUyNGUwMjQ0OGNmZGRjNGI5ZTVlZGZhMTY5
ZC4uNTY0MGRjNzY5N2U4MjM2Mzc2YzY1MzExMmZjMWI4MzAwZjRhOTYwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtODc2LDggKzg3Niw4
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgICAgICAg
ICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPmhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkpKSB7CiAjZW5kaWYKIAotICAgICAg
ICAgICAgICAgIC8vIEluIEdUSysgdW5hdmFpbGFibGUgaXRlbXMgYXJlIG5vdCBoaWRkZW4gYnV0
IGluc2Vuc2l0aXZlCi0jaWYgUExBVEZPUk0oR1RLKQorICAgICAgICAgICAgICAgIC8vIEluIEdU
SysgYW5kIEVGTCwgdW5hdmFpbGFibGUgaXRlbXMgYXJlIG5vdCBoaWRkZW4gYnV0IGluc2Vuc2l0
aXZlLgorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgICAgICAgICAgICAg
IGFwcGVuZEl0ZW0oQmFja0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAg
ICAgIGFwcGVuZEl0ZW0oRm9yd2FyZEl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIGFwcGVuZEl0ZW0oU3RvcEl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBiYjg3NDdiMWNiMWY1ODM4YzJkZDdjY2RkZjc4Mjkx
MWVhNjdjMWU1Li4zYjc0ZWRiNTA1M2ZmN2ExYzIzZDY4MTEwZjVhNTkwOTRkZTFkZWYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNDksNiArNDksOCBAQCBMSVNUKEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3Rf
aXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X21lbnUuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
bWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcApAQCAtNzgsNiArODAsNyBAQCBM
SVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9lZmwvQmF0dGVyeVBy
b3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuY3Bw
CisgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nl
c3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0ZpbmRDbGll
bnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcApAQCAtOTUsNiAr
OTgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1Rl
eHRDaGVja2VyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvVmlicmF0aW9uQ2xpZW50RWZsLmNw
cAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZs
L1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJv
eHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC0zNjIs
NiArMzY2LDcgQEAgU0VUKEVXSzJVbml0VGVzdHNfQklOQVJJRVMKICAgICB0ZXN0X2V3azJfY29s
b3JfcGlja2VyCiAgICAgdGVzdF9ld2syX2NvbnRleHQKICAgICB0ZXN0X2V3azJfY29udGV4dF9o
aXN0b3J5X2NhbGxiYWNrcworICAgIHRlc3RfZXdrMl9jb250ZXh0X21lbnUKICAgICB0ZXN0X2V3
azJfY29va2llX21hbmFnZXIKICAgICB0ZXN0X2V3azJfZGF0YWJhc2VfbWFuYWdlcgogICAgIHRl
c3RfZXdrMl9kb3dubG9hZF9qb2IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
V2ViS2l0Mi5oCmluZGV4IDA3Y2ExMjkzNTBmNGVkYjdlM2RiNGJmOTJhZDcwYjhjM2EyMDljZTQu
LjIyZDYxNjgyNWUxY2Q1MTg4OTViMmU3ZGM3ZWM1YjgzMjMyMjU5NTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtMzMsNiArMzMsOCBAQAogI2lu
Y2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX2NvbG9y
X3BpY2tlci5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRl
eHRfbWVudS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgogI2luY2x1ZGUg
ImV3a19jb29raWVfbWFuYWdlci5oIgogI2luY2x1ZGUgImV3a19kYXRhYmFzZV9tYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4IGFjYTJkNGRlZTFhYWYyYjgzZDY0
YTBjYzhmODQ3MTgzZDRmNzc5MDIuLmU3Mjc5MjMzNzA2ZTBkNzA1ZWJjYjlkODgyOTQ1MzMzYWMz
NGZiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
SW1wbC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJFd2tWaWV3SW1wbC5oIgogCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRFZmwuaCIKICNp
bmNsdWRlICJFZmxTY3JlZW5VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJGaW5kQ2xpZW50RWZsLmgi
CiAjaW5jbHVkZSAiRm9ybUNsaWVudEVmbC5oIgpAQCAtNDUsNiArNDYsNyBAQAogI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJl
d2tfY29udGV4dF9tZW51X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRl
LmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImV3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgpAQCAtMTE0LDYgKzExNiw3IEBAIEV3a1Zp
ZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tDb250
ZXh0PiBjb250ZXh0LCBQYXNzCiAgICAgLCBtX3BhZ2VQb2xpY3lDbGllbnQoUGFnZVBvbGljeUNs
aWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9wYWdlVUlDbGllbnQoUGFnZVVJQ2xpZW50
RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3Jlc291cmNlTG9hZENsaWVudChSZXNvdXJjZUxv
YWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQoQ29u
dGV4dE1lbnVDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZmluZENsaWVudChGaW5k
Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2Zvcm1DbGllbnQoRm9ybUNsaWVudEVm
bDo6Y3JlYXRlKHRoaXMpKQogI2lmIEVOQUJMRShWSUJSQVRJT04pCkBAIC03MTQsNiArNzE3LDM4
IEBAIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUNvbnRlbnRzU2l6ZUNoYW5nZShjb25zdCBJbnRT
aXplJiBzaXplKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJ
T05fUklHSFRfVE9fTEVGVCwgUlRMKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIExUUik7CiAKK3ZvaWQgRXdrVmlld0ltcGw6
OnNob3dDb250ZXh0TWVudShXZWJDb250ZXh0TWVudVByb3h5RWZsKiBjb250ZXh0TWVudVByb3h5
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxXZWJDb250
ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qg
PSBzbWFydERhdGEoKTsKKyAgICBBU1NFUlQoc2QtPmFwaSk7CisKKyAgICBBU1NFUlQoY29udGV4
dE1lbnVQcm94eSk7CisKKyAgICBpZiAoIXNkLT5hcGktPmNvbnRleHRfbWVudV9zaG93KQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAobV9jb250ZXh0TWVudSkKKyAgICAgICAgaGlkZUNvbnRl
eHRNZW51KCk7CisKKyAgICBtX2NvbnRleHRNZW51ID0gRXdrX0NvbnRleHRfTWVudTo6Y3JlYXRl
KHRoaXMsIGNvbnRleHRNZW51UHJveHksIGl0ZW1zKTsKKworICAgIHNkLT5hcGktPmNvbnRleHRf
bWVudV9zaG93KHNkLCBwb3NpdGlvbi54KCksIHBvc2l0aW9uLnkoKSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6OmhpZGVDb250ZXh0TWVudSgpCit7CisgICAg
aWYgKCFtX2NvbnRleHRNZW51KQorICAgICAgICByZXR1cm47CisKKyAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgIEFTU0VSVChzZC0+YXBpKTsKKworICAgIGlm
IChzZC0+YXBpLT5jb250ZXh0X21lbnVfaGlkZSkKKyAgICAgICAgc2QtPmFwaS0+Y29udGV4dF9t
ZW51X2hpZGUoc2QpOworCisgICAgbV9jb250ZXh0TWVudS5jbGVhcigpOworfQorCiB2b2lkIEV3
a1ZpZXdJbXBsOjpyZXF1ZXN0UG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1l
bnVQcm94eSwgY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9u
LCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRl
bXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCA9IHNtYXJ0RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXdJbXBsLmgKaW5kZXggMjRjYTRmZGJiYzgyOWZjZGQ5OWYwMThjZGVjMmNhYjk0MGM5OGNk
OC4uYmQzNDBjYzBlMWJhMmVjZjNiMzhiYWRhZjg1NDFlMzBmNjZjZDE5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC00Niw2ICs0Niw3
IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBDb250ZXh0TWVudUNsaWVu
dEVmbDsKIGNsYXNzIEZpbmRDbGllbnRFZmw7CiBjbGFzcyBGb3JtQ2xpZW50RWZsOwogY2xhc3Mg
SW5wdXRNZXRob2RDb250ZXh0RWZsOwpAQCAtNTQsNiArNTUsOCBAQCBjbGFzcyBQYWdlTG9hZENs
aWVudEVmbDsKIGNsYXNzIFBhZ2VQb2xpY3lDbGllbnRFZmw7CiBjbGFzcyBQYWdlVUlDbGllbnRF
Zmw7CiBjbGFzcyBSZXNvdXJjZUxvYWRDbGllbnRFZmw7CitjbGFzcyBXZWJDb250ZXh0TWVudUl0
ZW1EYXRhOworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eUVmbDsKIGNsYXNzIFdlYlBhZ2VHcm91
cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlBvcHVwSXRlbTsKQEAgLTc0LDYgKzc3
LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEV3a0NvbnRleHQ7CiBjbGFzcyBFd2tCYWNrRm9y
d2FyZExpc3Q7CiBjbGFzcyBFd2tDb2xvclBpY2tlcjsKK2NsYXNzIEV3a0NvbnRleHRNZW51Owog
Y2xhc3MgRXdrUG9wdXBNZW51OwogY2xhc3MgRXdrU2V0dGluZ3M7CiAKQEAgLTE2MSw2ICsxNjUs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcXVlc3RQb3B1cE1lbnUoV2ViS2l0OjpXZWJQb3B1
cE1lbnVQcm94eUVmbCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGly
ZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQ
b3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKICAgICB2b2lkIGNsb3Nl
UG9wdXBNZW51KCk7CisgICAgCisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoV2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5RWZsKiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBj
b25zdCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpOworICAg
IHZvaWQgaGlkZUNvbnRleHRNZW51KCk7CiAKICAgICB2b2lkIHVwZGF0ZVRleHRJbnB1dFN0YXRl
KCk7CiAKQEAgLTIzMyw2ICsyNDAsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OlBh
Z2VQb2xpY3lDbGllbnRFZmw+IG1fcGFnZVBvbGljeUNsaWVudDsKICAgICBPd25QdHI8V2ViS2l0
OjpQYWdlVUlDbGllbnRFZmw+IG1fcGFnZVVJQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6OlJl
c291cmNlTG9hZENsaWVudEVmbD4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7CisgICAgT3duUHRyPFdl
YktpdDo6Q29udGV4dE1lbnVDbGllbnRFZmw+IG1fY29udGV4dE1lbnVDbGllbnQ7CiAgICAgT3du
UHRyPFdlYktpdDo6RmluZENsaWVudEVmbD4gbV9maW5kQ2xpZW50OwogICAgIE93blB0cjxXZWJL
aXQ6OkZvcm1DbGllbnRFZmw+IG1fZm9ybUNsaWVudDsKICNpZiBFTkFCTEUoVklCUkFUSU9OKQpA
QCAtMjU1LDYgKzI2Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3RvdWNoRXZlbnRzRW5hYmxl
ZDsKICNlbmRpZgogICAgIFdlYkNvcmU6OlRpbWVyPEV3a1ZpZXdJbXBsPiBtX2Rpc3BsYXlUaW1l
cjsKKyAgICBPd25QdHI8RXdrQ29udGV4dE1lbnU+IG1fY29udGV4dE1lbnU7CiAgICAgT3duUHRy
PEV3a1BvcHVwTWVudT4gbV9wb3B1cE1lbnU7CiAgICAgT3duUHRyPFdlYktpdDo6SW5wdXRNZXRo
b2RDb250ZXh0RWZsPiBtX2lucHV0TWV0aG9kQ29udGV4dDsKICAgICBPd25QdHI8RXdrQ29sb3JQ
aWNrZXI+IG1fY29sb3JQaWNrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0ODQ0NDMxYTgxOTQ1
ZDA2OTA2NThiNTYxZTg3YjJkOGFiYTA2NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcApAQCAtMCwwICsxLDEy
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudS5oIgorCisjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0
ZW1EYXRhLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIgorI2luY2x1ZGUg
ImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRl
bV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0V3a0NvbnRleHRNZW51OjpFd2tDb250ZXh0TWVudShF
d2tWaWV3SW1wbCogdmlld0ltcGwsIFdlYkNvbnRleHRNZW51UHJveHlFZmwqIGNvbnRleHRNZW51
UHJveHksIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVt
cykKKyAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCisgICAgLCBtX2NvbnRleHRNZW51UHJveHko
Y29udGV4dE1lbnVQcm94eSkKKyAgICAsIG1fY29udGV4dE1lbnVJdGVtcygwKQoreworICAgIGNv
bnN0IHNpemVfdCBzaXplID0gaXRlbXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQorICAgICAgICBtX2NvbnRleHRNZW51SXRlbXMgPSBlaW5hX2xpc3RfYXBw
ZW5kKG1fY29udGV4dE1lbnVJdGVtcywgRXdrX0NvbnRleHRfTWVudV9JdGVtOjpjcmVhdGUoaXRl
bXNbaV0pLmxlYWtQdHIoKSk7Cit9CisKK0V3a0NvbnRleHRNZW51Ojp+RXdrQ29udGV4dE1lbnUo
KQoreworICAgIHZvaWQqIGRhdGE7CisgICAgRUlOQV9MSVNUX0ZSRUUobV9jb250ZXh0TWVudUl0
ZW1zLCBkYXRhKQorICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9J
dGVtKj4oZGF0YSk7Cit9CisKK3ZvaWQgRXdrQ29udGV4dE1lbnU6OmhpZGUoKQoreworICAgIG1f
dmlld0ltcGwtPmhpZGVDb250ZXh0TWVudSgpOworfQorCit2b2lkIEV3a19Db250ZXh0X01lbnU6
OmFwcGVuZEl0ZW0oRXdrQ29udGV4dE1lbnVJdGVtKiBpdGVtKQoreworICAgIG1fY29udGV4dE1l
bnVJdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQobV9jb250ZXh0TWVudUl0ZW1zLCBpdGVtKTsKK30K
Kwordm9pZCBFd2tfQ29udGV4dF9NZW51OjpyZW1vdmVJdGVtKEV3a0NvbnRleHRNZW51SXRlbSog
aXRlbSkKK3sKKyAgICBtX2NvbnRleHRNZW51SXRlbXMgPSBlaW5hX2xpc3RfcmVtb3ZlKG1fY29u
dGV4dE1lbnVJdGVtcywgaXRlbSk7Cit9CisKK3ZvaWQgRXdrQ29udGV4dE1lbnU6OmNvbnRleHRN
ZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRl
bSkKK3sKKyAgICBtX2NvbnRleHRNZW51UHJveHktPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGl0
ZW0pOyAKK30gCisKK0V3a19Db250ZXh0X01lbnVfSXRlbSogZXdrX2NvbnRleHRfbWVudV9pdGVt
X2FkZChFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0
ZW1fQWN0aW9uIGFjdGlvbiwgY29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBF
aW5hX0Jvb2wgZW5hYmxlZCwgRXdrX0NvbnRleHRfTWVudSogcGFyZW50TWVudSwgRXdrX0NvbnRl
eHRfTWVudSogc3ViTWVudSkKK3sKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIG5ld0l0ZW0g
PSBFd2tfQ29udGV4dF9NZW51X0l0ZW06OmNyZWF0ZSh0eXBlLCBhY3Rpb24sIHRpdGxlLCBjaGVj
a2VkLCBlbmFibGVkLCBwYXJlbnRNZW51LCBzdWJNZW51KS5sZWFrUHRyKCk7CisgICAgcGFyZW50
TWVudS0+YXBwZW5kSXRlbShuZXdJdGVtKTsKKworICAgIHJldHVybiBuZXdJdGVtOworfQorCitF
aW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3JlbW92ZShFd2tfQ29udGV4dF9NZW51KiBt
ZW51LCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKG1lbnUsIDApOworCisgICAgbWVudS0+cmVtb3ZlSXRlbShpdGVtKTsK
KworICAgIHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9oaWRl
KEV3a19Db250ZXh0X01lbnUqIG1lbnUpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKG1lbnUsIGZhbHNlKTsKKworICAgIG1lbnUtPmhpZGUoKTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitjb25zdCBFaW5hX0xpc3QqIGV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0KGNv
bnN0IEV3a19Db250ZXh0X01lbnUqIG1lbnUpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKG1lbnUsIDApOworCisgICAgcmV0dXJuIG1lbnUtPml0ZW1zKCk7Cit9CisKK0Vp
bmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUqIG1l
bnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwobWVudSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UeXBl
IHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlPihpdGVtLT50
eXBlKCkpOworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbiA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uPihpdGVtLT5hY3Rpb24oKSk7CisKKyAgICBX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhIG5ld0l0ZW0odHlwZSwgYWN0aW9uLCBpdGVtLT50aXRsZSgp
LCBpdGVtLT5lbmFibGVkKCksIGl0ZW0tPmNoZWNrZWQoKSk7CisgICAgbWVudS0+Y29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQobmV3SXRlbSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lOGJlZTQyMjBmMWU0MGRhNDE3NDUzMWEwNmMwODM0OTM5Mjk4NzJjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
bWVudS5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3Vu
ZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworLyoqCisgKiBAZmlsZSAgICBld2tfY29udGV4dF9tZW51LmgKKyAqIEBicmllZiAgIERlc2Ny
aWJlcyB0aGUgRXdrIENvbnRleHQgTWVudSBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfY29udGV4
dF9tZW51X2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfbWVudV9oCisKKyNpbmNsdWRlICJld2tfY29u
dGV4dF9tZW51X2l0ZW0uaCIKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3
a19Db250ZXh0X01lbnUgKi8KK3R5cGVkZWYgc3RydWN0IEV3a0NvbnRleHRNZW51IEV3a19Db250
ZXh0X01lbnU7CisKKy8qKgorICogQ3JlYXRlcyBhIG5ldyBpdGVtIG9mIHRoZSBjb250ZXh0IG1l
bnUuCisgKgorICogQHBhcmFtIHR5cGUgc3BlY2lmaWVzIGEgdHlwZSBvZiB0aGUgaXRlbQorICog
QHBhcmFtIGFjdGlvbiBzcGVjaWZpZXMgYSBhY3Rpb24gb2YgdGhlIGl0ZW0KKyAqIEBwYXJhbSB0
aXRsZSBzcGVjaWZpZXMgYSB0aXRsZSBvZiB0aGUgaXRlbQorICogQHBhcmFtIGNoZWNrZWQgQGMg
RUlOQV9UUlVFIGlmIHRoZSBpdGVtIHNob3VsZCBiZSB0b2dnbGVkIG9yIEBjIEVJTkFfRkFMU0Ug
aWYgbm90CisgKiBAcGFyYW0gZW5hYmxlZCBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBpdGVt
IG9yIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQorICogQHBhcmFtIHBhcmVudF9tZW51IHNwZWNp
ZmllcyBhIHBhcmVudCBtZW51IG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gc3VibWVudSBzcGVjaWZp
ZXMgYSBzdWJtZW51IG9mIHRoZSBpdGVtCisgKiBAcmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBu
ZXcgaXRlbSBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQorICovCitFQVBJIEV3a19D
b250ZXh0X01lbnVfSXRlbSAqZXdrX2NvbnRleHRfbWVudV9pdGVtX2FkZChFd2tfQ29udGV4dF9N
ZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwg
Y29uc3QgY2hhciAqdGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCwg
RXdrX0NvbnRleHRfTWVudSAqcGFyZW50X21lbnUsIEV3a19Db250ZXh0X01lbnUgKnN1Yl9tZW51
KTsKKworLyoqCisgKiBSZW1vdmUgdGhlIGl0ZW0gb2YgdGhlIGNvbnRleHQgbWVudS4KKyAqCisg
KiBAcGFyYW0gbWVudSB0aGUgY29udGV4dCBtZW51IAorICogQHBhcmFtIGl0ZW0gdGhlIGl0ZW0g
dG8gcmVtb3ZlCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZB
TFNFIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVt
X3JlbW92ZShFd2tfQ29udGV4dF9NZW51ICptZW51LCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKml0
ZW0pOworCisvKioKKyAqIEhpZGVzIHRoZSBjb250ZXh0IG1lbnUuCisgKgorICogQHBhcmFtIG1l
bnUgdGhlIGNvbnRleHQgbWVudSB0byBoaWRlCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdr
X2NvbnRleHRfbWVudV9oaWRlKEV3a19Db250ZXh0X01lbnUgKm1lbnUpOworCisvKioKKyAqIEdl
dHMgdGhlIGxpc3Qgb2YgaXRlbXMuCisgKgorICogQHBhcmFtIG8gdGhlIGNvbnRleHQgbWVudSB0
byBnZXQgbGlzdCBvZiB0aGUgaXRlbXMKKyAqIEByZXR1cm4gdGhlIGxpc3Qgb2YgdGhlIGl0ZW1z
IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKi8KK0VBUEkgY29uc3QgRWluYV9M
aXN0ICpld2tfY29udGV4dF9tZW51X2l0ZW1zX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51ICpv
KTsKKworLyoqCisgKiBTZWxlY3RzIHRoZSBpdGVtIGZyb20gdGhlIGNvbnRleHQgbWVudS4KKyAq
CisgKiBAcGFyYW0gbWVudSB0aGUgY29udGV4dCBtZW51CisgKiBAcGFyYW0gaXRlbSB0aGUgaXRl
bSBpcyBzZWxlY3RlZAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBF
SU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX3NlbGVjdChFd2tfQ29udGV4dF9NZW51ICptZW51LCBFd2tfQ29udGV4dF9NZW51X0l0
ZW0gKml0ZW0pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyog
ZXdrX2NvbnRleHRfbWVudV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWNh
ZmYwMzc4NGEzMzU4OGI5YzdjM2Q5ZjdiY2EyYWM4NWE5MGVlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmNw
cApAQCAtMCwwICsxLDI2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVtLmgiCisK
KyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3
a19wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0V3a0NvbnRleHRNZW51
SXRlbTo6RXdrQ29udGV4dE1lbnVJdGVtKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0
ZW0pCisgICAgOiBtX3R5cGUoc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGU+
KGl0ZW0udHlwZSgpKSkKKyAgICAsIG1fYWN0aW9uKHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01l
bnVfSXRlbV9BY3Rpb24+KGl0ZW0uYWN0aW9uKCkpKQorICAgICwgbV90aXRsZShpdGVtLnRpdGxl
KCkudXRmOCgpLmRhdGEoKSkKKyAgICAsIG1faXNDaGVja2VkKGl0ZW0uY2hlY2tlZCgpKQorICAg
ICwgbV9pc0VuYWJsZWQoaXRlbS5lbmFibGVkKCkpCisgICAgLCBtX3BhcmVudE1lbnUoMCkKKyAg
ICAsIG1fc3ViTWVudSgwKQoreworfQorCitFd2tDb250ZXh0TWVudUl0ZW06OkV3a0NvbnRleHRN
ZW51SXRlbShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51
X0l0ZW1fQWN0aW9uIGFjdGlvbiwgY29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBjaGVja2Vk
LCBFaW5hX0Jvb2wgZW5hYmxlZCwgRXdrX0NvbnRleHRfTWVudSogcGFyZW50TWVudSwgRXdrX0Nv
bnRleHRfTWVudSogc3ViTWVudSkKKyAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV9hY3Rpb24o
YWN0aW9uKQorICAgICwgbV90aXRsZSh0aXRsZSkKKyAgICAsIG1faXNDaGVja2VkKGNoZWNrZWQp
CisgICAgLCBtX2lzRW5hYmxlZChlbmFibGVkKQorICAgICwgbV9wYXJlbnRNZW51KHBhcmVudE1l
bnUpCisgICAgLCBtX3N1Yk1lbnUoc3ViTWVudSkKK3sKK30KKworRXdrX0NvbnRleHRfTWVudV9J
dGVtX1R5cGUgRXdrQ29udGV4dE1lbnVJdGVtOjp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV90eXBlOworfQorCit2b2lkIEV3a0NvbnRleHRNZW51SXRlbTo6c2V0VHlwZShFd2tfQ29udGV4
dF9NZW51X0l0ZW1fVHlwZSB0eXBlKQoreworICAgIG1fdHlwZSA9IHR5cGU7Cit9CisKK0V3a19D
b250ZXh0X01lbnVfSXRlbV9BY3Rpb24gRXdrQ29udGV4dE1lbnVJdGVtOjphY3Rpb24oKSBjb25z
dAoreworICAgIHJldHVybiBtX2FjdGlvbjsKK30KKwordm9pZCBFd2tDb250ZXh0TWVudUl0ZW06
OnNldEFjdGlvbihFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbikKK3sKKyAgICBt
X2FjdGlvbiA9IGFjdGlvbjsKK30KKworY29uc3QgY2hhciogRXdrQ29udGV4dE1lbnVJdGVtOjp0
aXRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGl0bGU7Cit9CisKK3ZvaWQgRXdrQ29udGV4
dE1lbnVJdGVtOjpzZXRUaXRsZShjb25zdCBjaGFyKiB0aXRsZSkKK3sKKyAgICBtX3RpdGxlID0g
dGl0bGU7Cit9CisKK2Jvb2wgRXdrQ29udGV4dE1lbnVJdGVtOjpjaGVja2VkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9pc0NoZWNrZWQ7Cit9CisKK3ZvaWQgRXdrQ29udGV4dE1lbnVJdGVtOjpz
ZXRDaGVja2VkKGJvb2wgY2hlY2tlZCkKK3sKKyAgICBtX2lzQ2hlY2tlZCA9IGNoZWNrZWQ7Cit9
CisKK2Jvb2wgRXdrQ29udGV4dE1lbnVJdGVtOjplbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9pc0VuYWJsZWQ7Cit9CisKK3ZvaWQgRXdrQ29udGV4dE1lbnVJdGVtOjpzZXRFbmFibGVk
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2lzRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKK0V3a19D
b250ZXh0X01lbnVfSXRlbV9UeXBlIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChjb25z
dCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGl0ZW0sIEVXS19BQ1RJT05fVFlQRSk7CisKKyAgICByZXR1cm4gaXRlbS0+
dHlwZSgpOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfc2V0KEV3
a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlw
ZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOwor
CisgICAgaXRlbS0+c2V0VHlwZSh0eXBlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitFd2tf
Q29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0
KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19BQ1RJ
T04pOworCisgICAgcmV0dXJuIGl0ZW0tPmFjdGlvbigpOworfQorCitFaW5hX0Jvb2wgZXdrX2Nv
bnRleHRfbWVudV9pdGVtX2FjdGlvbl9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBF
d2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbikKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworCisgICAgaXRlbS0+c2V0QWN0aW9uKGFj
dGlvbik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY29uc3QgY2hhciogZXdrX2NvbnRleHRf
bWVudV9pdGVtX3RpdGxlX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOworCisgICAgcmV0
dXJuIGl0ZW0tPnRpdGxlKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1f
dGl0bGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgY29uc3QgY2hhciogdGl0bGUp
Cit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKKwor
ICAgIGl0ZW0tPnNldFRpdGxlKHRpdGxlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitFaW5h
X0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0
X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
aXRlbSwgZmFsc2UpOworCisgICAgcmV0dXJuIGl0ZW0tPmNoZWNrZWQoKTsKK30KKworRWluYV9C
b29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX3NldChFd2tfQ29udGV4dF9NZW51X0l0
ZW0qIGl0ZW0sIEVpbmFfQm9vbCBjaGVja2VkKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICBpdGVtLT5zZXRDaGVja2VkKGNoZWNrZWQp
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0
ZW1fZW5hYmxlZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisgICAgCisgICAg
cmV0dXJuIGl0ZW0tPmVuYWJsZWQoKTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVf
aXRlbV9lbmFibGVkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEVpbmFfQm9vbCBl
bmFibGVkKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxz
ZSk7CisKKyAgICBpdGVtLT5zZXRFbmFibGVkKGVuYWJsZWQpOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19OT19BQ1RJT04sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVO
X0xJTktfSU5fTkVXX1dJTkRPVywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJ
bk5ld1dpbmRvdyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfRE9XTkxPQURfTElOS19UT19ESVNLLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTElOS19UT19DTElQQk9BUkQsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fSU1BR0VfSU5fTkVX
X1dJTkRPVywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3cp
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X0RPV05MT0FEX0lNQUdFX1RPX0RJU0ssIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0Rvd25s
b2FkSW1hZ2VUb0Rpc2spOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX0NPUFlfSU1BR0VfVE9fQ0xJUEJPQVJELCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9JTUFHRV9VUkxfVE9fQ0xJUEJP
QVJELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZCk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
T1BFTl9GUkFNRV9JTl9ORVdfV0lORE9XLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVu
RnJhbWVJbk5ld1dpbmRvdyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfQ09QWSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weSk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
R09fQkFDSywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnR29CYWNrKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19HT19GT1JXQVJELCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUT1AsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ1N0b3ApOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1JFTE9BRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUmVs
b2FkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19DVVQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0N1dCk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUEFTVEUsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUxFQ1RfQUxMLCBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdTZWxlY3RBbGwpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1NQRUxMSU5HX0dVRVNTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdTcGVsbGluZ0d1ZXNzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19OT19HVUVTU0VTX0ZPVU5ELCBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX1NQRUxMSU5HLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTEVBUk5fU1BFTExJTkcsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09USEVSLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdPdGhlcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfU0VBUkNIX0lOX1NQT1RMSUdIVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnU2VhcmNoSW5TcG90bGlnaHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX1NFQVJDSF9XRUIsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1NlYXJjaFdlYik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfTE9PS19VUF9JTl9ESUNUSU9OQVJZLCBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fV0lUSF9ERUZBVUxUX0FQUExJQ0FUSU9O
LCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuV2l0aERlZmF1bHRBcHBsaWNhdGlvbik7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZB
Q1RVQUxfU0laRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGQWN0dWFsU2l6ZSk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZaT09NX0lO
LCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZab29tSW4pOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGWk9PTV9PVVQsIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVBERlpvb21PdXQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQVVUT19TSVpFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1QREZBdXRvU2l6ZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9QREZTSU5HTEVfUEFHRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGU2lu
Z2xlUGFnZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVf
SVRFTV9QREZGQUNJTkdfUEFHRVMsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERkZhY2luZ1Bh
Z2VzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1BERkNPTlRJTlVPVVMsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERkNvbnRpbnVvdXMpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGTkVY
VF9QQUdFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZOZXh0UGFnZSk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZQUkVWSU9VU19QQUdF
LCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZQcmV2aW91c1BhZ2UpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fTElOSywgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmspOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lHTk9SRV9HUkFNTUFSLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVMTElOR19NRU5VLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfU1BFTExJTkdfUEFORUwsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19TUEVMTElO
RywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZyk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tfU1BFTExJ
TkdfV0hJTEVfVFlQSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5n
V2hpbGVUeXBpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX0NIRUNLX0dSQU1NQVJfV0lUSF9TUEVMTElORywgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19GT05UX01FTlUsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0ZPTlRTLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdTaG93Rm9udHMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0JPTEQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0Jv
bGQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX0lUQUxJQywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSXRhbGljKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19VTkRFUkxJTkUs
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1VUTElORSwgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RZTEVTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdTdHlsZXMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1NIT1dfQ09MT1JTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTaG93
Q29sb3JzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19TUEVFQ0hfTUVOVSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVu
dSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfU1RBUlRfU1BFQUtJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1N0YXJ0U3BlYWtp
bmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX1NUT1BfU1BFQUtJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2lu
Zyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfV1JJVElOR19ESVJFQ1RJT05fTUVOVSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnV3Jp
dGluZ0RpcmVjdGlvbk1lbnUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX0RFRkFVTFRfRElSRUNUSU9OLCBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUZUX1RPX1JJR0hULCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfUklHSFRfVE9fTEVGVCwgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnUmlnaHRUb0xlZnQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX1BERlNJTkdMRV9QQUdFX1NDUk9MTElORywgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnUERGU2luZ2xlUGFnZVNjcm9sbGluZyk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUERGRkFDSU5HX1BBR0VT
X1NDUk9MTElORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFnZXNTY3Jv
bGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0lOU1BFQ1RfRUxFTUVOVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSW5zcGVj
dEVsZW1lbnQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX01FTlUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z1RleHREaXJlY3Rpb25NZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9ERUZBVUxULCBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdCk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fTEVGVF9U
T19SSUdIVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkxlZnRUb1Jp
Z2h0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fT1BFTl9NRURJQV9JTl9ORVdfV0lORE9XLCBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuTWVkaWFJbk5ld1dpbmRvdyk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9NRURJQV9M
SU5LX1RPX0NMSVBCT0FSRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weU1lZGlhTGlu
a1RvQ2xpcGJvYXJkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFfQ09OVFJPTFMsIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dMRV9NRURJQV9MT09QLCBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUxvb3ApOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0VOVEVSX1ZJREVPX0ZVTExTQ1JFRU4s
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0VudGVyVmlkZW9GdWxsc2NyZWVuKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19NRURJQV9Q
TEFZX1BBVVNFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXlQYXVzZSk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTUVE
SUFfTVVURSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRlKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0JBU0VfQ1VTVE9NX1RB
RywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRhZyk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9DVVNUT01fVEFHX05PX0FDVElP
TiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtQ3VzdG9tVGFnTm9BY3Rpb24pOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fTEFTVF9DVVNUT01fVEFH
LCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1MYXN0Q3VzdG9tVGFnKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0JBU0VfQVBQTElDQVRJT05fVEFH
LCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVt
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0
ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lOTZlYWRlMmY4NmRhYTY2Y2M5MjJkNGM5NmQxODViY2Q4NGY3YWNi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHRfbWVudV9pdGVtLmgKQEAgLTAsMCArMSwyNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfY29udGV4dF9tZW51X2l0ZW0u
aAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgQ29udGV4dCBNZW51IEl0ZW0gQVBJLgor
ICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRfbWVudV9pdGVtX2gKKyNkZWZpbmUgZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVz
CitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgRXdr
X1BvcHVwX01lbnVfSXRlbSAqLwordHlwZWRlZiBzdHJ1Y3QgRXdrQ29udGV4dE1lbnVJdGVtIEV3
a19Db250ZXh0X01lbnVfSXRlbTsKKworLyoqCisgKiBcZW51bSAgICBfRXdrX0NvbnRleHRfTWVu
dV9JdGVtX1R5cGUKKyAqIEBicmllZiAgIERlZmluZXMgdGhlIHR5cGVzIG9mIHRoZSBpdGVtcyBm
b3IgdGhlIGNvbnRleHQgbWVudS4KKyAqIEBpbmZvICAgIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGgg
Q29udGV4dE1lbnVJdGVtLmgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfQUNUSU9OX1RZ
UEUsCisgICAgRVdLX0NIRUNLQUJMRV9BQ1RJT05fVFlQRSwKKyAgICBFV0tfU0VQQVJBVE9SX1RZ
UEUsCisgICAgRVdLX1NVQk1FTlVfVFlQRQorfSBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZTsK
KworLyoqCisgKiBcZW51bSAgICBfRXdrX0NvbnRleHRfTWVudV9BY3Rpb24KKyAqIEBicmllZiAg
IFByb3ZpZGVzIHRoZSBhY3Rpb25zIG9mIGl0ZW1zIGZvciB0aGUgY29udGV4dCBtZW51LgorICog
QGluZm8gICAgS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBDb250ZXh0TWVudUl0ZW0uaAorICovCit0
eXBlZGVmIGVudW0geworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fQUNUSU9OLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9MSU5LX0lOX05FV19XSU5ET1csCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19ET1dOTE9BRF9MSU5LX1RPX0RJU0ssCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0xJTktfVE9fQ0xJUEJPQVJELAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9JTUFHRV9JTl9ORVdfV0lORE9XLAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfRE9XTkxPQURfSU1BR0VfVE9fRElTSywKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfSU1BR0VfVE9fQ0xJUEJPQVJELAorICAgIEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9JTUFHRV9VUkxfVE9fQ0xJUEJPQVJELAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9GUkFNRV9JTl9ORVdfV0lORE9XLAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX0dPX0JBQ0ssCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19HT19GT1JXQVJELAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RPUCwKKyAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX1JFTE9BRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NVVCwKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BBU1RFLAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfU0VMRUNUX0FMTCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUxM
SU5HX0dVRVNTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fR1VFU1NFU19GT1VO
RCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lHTk9SRV9TUEVMTElORywKKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0xFQVJOX1NQRUxMSU5HLAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfT1RIRVIsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUFS
Q0hfSU5fU1BPVExJR0hULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0VBUkNIX1dF
QiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0xPT0tfVVBfSU5fRElDVElPTkFSWSwK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fV0lUSF9ERUZBVUxUX0FQUExJQ0FU
SU9OLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZBQ1RVQUxfU0laRSwKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fUERGWk9PTV9JTiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
UERGWk9PTV9PVVQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkFVVE9fU0laRSwKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGU0lOR0xFX1BBR0UsCisgICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1BERkZBQ0lOR19QQUdFUywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERG
Q09OVElOVU9VUywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGTkVYVF9QQUdFLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9QREZQUkVWSU9VU19QQUdFLAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfT1BFTl9MSU5LID0gMjAwMCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0lHTk9SRV9HUkFNTUFSLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BF
TExJTkdfTUVOVSwgLyoqPCBzcGVsbGluZyBvciBzcGVsbGluZy9ncmFtbWFyIHN1Yi1tZW51ICov
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX1NQRUxMSU5HX1BBTkVMLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tfU1BFTExJTkcsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19DSEVDS19TUEVMTElOR19XSElMRV9UWVBJTkcsCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19HUkFNTUFSX1dJVEhfU1BFTExJTkcsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19GT05UX01FTlUsIC8qKjwgZm9udCBzdWItbWVudSAqLwor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19GT05UUywKKyAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX0JPTEQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JVEFM
SUMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19VTkRFUkxJTkUsCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19PVVRMSU5FLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfU1RZTEVTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19DT0xPUlMsCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVFQ0hfTUVOVSwgLyoqPCBzcGVlY2ggc3Vi
LW1lbnUgKi8KKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUQVJUX1NQRUFLSU5HLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RPUF9TUEVBS0lORywKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1dSSVRJTkdfRElSRUNUSU9OX01FTlUsIC8qKjwgd3JpdGluZyBk
aXJlY3Rpb24gc3ViLW1lbnUgKi8KKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RFRkFV
TFRfRElSRUNUSU9OLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTEVGVF9UT19SSUdI
VCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1JJR0hUX1RPX0xFRlQsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QREZTSU5HTEVfUEFHRV9TQ1JPTExJTkcsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QREZGQUNJTkdfUEFHRVNfU0NST0xMSU5HLAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfSU5TUEVDVF9FTEVNRU5ULAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fTUVOVSwgLyoqPCB0ZXh0IGRpcmVjdGlvbiBz
dWItbWVudSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05f
REVGQVVMVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX0xF
RlRfVE9fUklHSFQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElP
Tl9SSUdIVF9UT19MRUZULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9PUEVOX01FRElBX0lO
X05FV19XSU5ET1csCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX01FRElBX0xJ
TktfVE9fQ0xJUEJPQVJELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVE9HR0xFX01F
RElBX0NPTlRST0xTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVE9HR0xFX01FRElB
X0xPT1AsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19FTlRFUl9WSURFT19GVUxMU0NS
RUVOLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTUVESUFfUExBWV9QQVVTRSwKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX01FRElBX01VVEUsCisgICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX0JBU0VfQ1VTVE9NX1RBRyA9IDUwMDAsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX0NVU1RPTV9UQUdfTk9fQUNUSU9OID0gNTk5OCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fTEFTVF9DVVNUT01fVEFHID0gNTk5OSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fQkFT
RV9BUFBMSUNBVElPTl9UQUcgPSAxMDAwMAorfSBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9u
OworCisvKioKKyAqIEdldHMgdHlwZSBvZiB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUg
aXRlbSB0byBnZXQgdGhlIHR5cGUKKyAqIEByZXR1cm4gdHlwZSBvZiB0aGUgaXRlbSBvbiBzdWNj
ZXNzIG9yIEBjIEVXS19BQ1RJT05fVFlQRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29u
dGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQKKyAqLworRUFQSSBFd2tfQ29udGV4dF9NZW51X0l0ZW1f
VHlwZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVu
dV9JdGVtICpvKTsKKworLyoqCisgKiBTZXRzIHRoZSB0eXBlIG9mIGl0ZW0uCisgKgorICogQHBh
cmFtIG8gdGhlIGl0ZW0gdG8gc2V0IHRoZSB0eXBlCisgKiBAcGFyYW0gdHlwZSBhIG5ldyB0eXBl
IGZvciB0aGUgaXRlbSBvYmplY3QKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Ms
IG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX3R5cGVfZ2V0CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRl
bV90eXBlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEV3a19Db250ZXh0X01lbnVfSXRl
bV9UeXBlIHR5cGUpOworCisvKioKKyAqIEdldHMgYW4gYWN0aW9uIG9mIHRoZSBpdGVtLgorICoK
KyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGdldCB0aGUgYWN0aW9uCisgKiBAcmV0dXJuIGFuIGFj
dGlvbiBvZiB0aGUgaXRlbSBvbiBzdWNjZXNzIG9yIEBjIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfTk9fQUNUSU9OIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRl
bV9hY3Rpb25fc2V0CisgKi8KK0VBUEkgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBld2tf
Y29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0g
Km8pOworCisvKioKKyAqIFNldHMgYW4gYWN0aW9uIG9mIHRoZSBpdGVtLgorICoKKyAqIEBwYXJh
bSBvIHRoZSBpdGVtIHRvIHNldCB0aGUgYWN0aW9uCisgKiBAcGFyYW0gYWN0aW9uIGEgbmV3IGFj
dGlvbiBmb3IgdGhlIGl0ZW0gb2JqZWN0CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNj
ZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0
X21lbnVfaXRlbV9hY3Rpb25fZ2V0CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21l
bnVfaXRlbV9hY3Rpb25fc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgRXdrX0NvbnRleHRf
TWVudV9JdGVtX0FjdGlvbiBhY3Rpb24pOworCisvKioKKyAqIEdldHMgYSB0aXRsZSBvZiB0aGUg
aXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBnZXQgdGhlIHRpdGxlCisgKiBAcmV0
dXJuIGEgdGl0bGUgb2YgdGhlIGl0ZW0gb24gc3VjY2Vzcywgb3IgQGMgTlVMTCBvbiBmYWlsdXJl
CisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0CisgKi8KK0VBUEkg
Y29uc3QgY2hhciAqZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldChjb25zdCBFd2tfQ29u
dGV4dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNldHMgYSB0aXRsZSBvZiB0aGUgaXRlbS4K
KyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBzZXQgdGhlIHRpdGxlCisgKiBAcGFyYW0gdGl0
bGUgYSBuZXcgdGl0bGUgZm9yIHRoZSBpdGVtIG9iamVjdAorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBl
d2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19j
b250ZXh0X21lbnVfaXRlbV90aXRsZV9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBjb25z
dCBjaGFyICp0aXRsZSk7CisKKy8qKgorICogUXVlcmllcyBpZiB0aGUgaXRlbSBpcyB0b2dnbGVk
LgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIHF1ZXJ5IGlmIHRoZSBpdGVtIGlzIHRvZ2ds
ZWQKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBpdGVtIGlzIHRvZ2dsZWQgb3IgQGMg
RUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tf
Y29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVt
ICpvKTsKKworLyoqCisgKiBTZXRzIGlmIHRoZSBpdGVtIHNob3VsZCBiZSB0b2dnbGVkLgorICoK
KyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGJlIHRvZ2dsZWQKKyAqIEBwYXJhbSBjaGVja2VkIEBj
IEVJTkFfVFJVRSBpZiB0aGUgaXRlbSBzaG91bGQgYmUgdG9nZ2xlZCBvciBAYyBFSU5BX0ZBTFNF
IGlmIG5vdAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZB
TFNFIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVt
X2NoZWNrZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgRWluYV9Cb29sIGNoZWNrZWQp
OworCisvKioKKyAqIEdldHMgaWYgdGhlIGl0ZW0gaXMgZW5hYmxlZC4KKyAqCisgKiBAcGFyYW0g
byB0aGUgaXRlbSB0byBnZXQgZW5hYmxlZCBzdGF0ZQorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgaXQncyBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCisgKgor
ICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQKKyAqLworRUFQSSBFaW5h
X0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0
X01lbnVfSXRlbSAqbyk7CisKKy8qKgorICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgaXRlbS4KKyAq
CisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBlbmFibGUvZGlzYWJsZQorICogQHBhcmFtIGVuYWJs
ZWQgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgaXRlbSBvciBAYyBFSU5BX0ZBTFNFIHRvIGRp
c2FibGUKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFM
U0Ugb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRf
Z2V0CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3Nl
dChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEVpbmFfQm9vbCBlbmFibGVkKTsKKworI2lmZGVm
IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIGV3a19jb250ZXh0X21lbnVfaXRl
bV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmY5MTAw
ZWE4M2YxMWYzYzI3YTZjNzZmNzJkNjM2ZDM1ZTk0ODcxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtX3ByaXZh
dGUuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgZXdrX2NvbnRleHRfbWVudV9pdGVtX3ByaXZhdGVfaAorI2RlZmluZSBld2tfY29u
dGV4dF9tZW51X2l0ZW1fcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcu
aCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCisjaW5jbHVkZSAiZXdrX2Nv
bnRleHRfbWVudS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKKy8qKgorICogXHN0cnVjdCAgRXdrX0NvbnRleHRfTWVu
dV9JdGVtCisgKiBAYnJpZWYgICBDb250YWlucyB0aGUgY29udGV4dCBtZW51IGl0ZW0gZGF0YS4K
KyAqLworY2xhc3MgRXdrQ29udGV4dE1lbnVJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxFd2tDb250ZXh0TWVudUl0ZW0+IGNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbnRl
eHRNZW51SXRlbURhdGEmIGl0ZW0pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IEV3a19Db250ZXh0X01lbnVfSXRlbShpdGVtKSk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NP
d25QdHI8RXdrQ29udGV4dE1lbnVJdGVtPiBjcmVhdGUoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5
cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIGNvbnN0IGNoYXIq
IHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQsIEV3a0NvbnRleHRN
ZW51KiBwYXJlbnRNZW51LCBFd2tDb250ZXh0TWVudSogc3ViTWVudSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgRXdrX0NvbnRleHRfTWVudV9JdGVtKHR5cGUsIGFjdGlvbiwg
dGl0bGUsIGNoZWNrZWQsIGVuYWJsZWQsIHBhcmVudE1lbnUsIHN1Yk1lbnUpKTsKKyAgICB9CisK
KyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbigpIGNvbnN0OworICAgIHZv
aWQgc2V0QWN0aW9uKEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24pOworCisgICAgY29uc3Qg
Y2hhciogdGl0bGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFRpdGxlKGNvbnN0IGNoYXIqKTsKKwor
ICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUoKSBjb25zdDsKKyAgICB2b2lkIHNl
dFR5cGUoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUpOworCisgICAgYm9vbCBjaGVja2VkKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRDaGVja2VkKGJvb2wpOworCisgICAgYm9vbCBlbmFibGVkKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpOworCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IEV3a0NvbnRleHRNZW51SXRlbShjb25zdCBXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURh
dGEmKTsKKyAgICBFd2tDb250ZXh0TWVudUl0ZW0oRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUg
dHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIGNvbnN0IGNoYXIqIHRp
dGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQsIEV3a0NvbnRleHRNZW51
KiBwYXJlbnRNZW51LCBFd2tDb250ZXh0TWVudSogc3ViTWVudSk7CisKKyAgICBFd2tfQ29udGV4
dF9NZW51X0l0ZW1fVHlwZSBtX3R5cGU7CisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlv
biBtX2FjdGlvbjsKKworICAgIFdLRWluYVNoYXJlZFN0cmluZyBtX3RpdGxlOworICAgIAorICAg
IGJvb2wgbV9pc0NoZWNrZWQ7CisgICAgYm9vbCBtX2lzRW5hYmxlZDsKKworICAgIEV3a19Db250
ZXh0X01lbnUqIG1fcGFyZW50TWVudTsKKyAgICBFd2tfQ29udGV4dF9NZW51KiBtX3N1Yk1lbnU7
Cit9OworCisjZW5kaWYgLy8gZXdrX2NvbnRleHRfbWVudV9pdGVtX3ByaXZhdGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9t
ZW51X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzY5YTBjNmRjZTY0M2NlNzZmNDlmMTQ0NjFlNzZl
MzA3NmVjZmRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwor
ICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19jb250ZXh0X21lbnVfcHJp
dmF0ZV9oCisjZGVmaW5lIGV3a19jb250ZXh0X21lbnVfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVt
LmgiCisjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkNvbnRl
eHRNZW51SXRlbURhdGE7CitjbGFzcyBXZWJDb250ZXh0TWVudVByb3h5RWZsOworfQorCitjbGFz
cyBFd2tWaWV3SW1wbDsKKworY2xhc3MgRXdrQ29udGV4dE1lbnUgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzT3duUHRyPEV3a0NvbnRleHRNZW51PiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJ
bXBsLCBXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmwqIGNvbnRleHRNZW51UHJveHksIGNv
bnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcykKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXdrQ29udGV4dE1lbnUodmlld0ltcGwsIGNv
bnRleHRNZW51UHJveHksIGl0ZW1zKSk7CisgICAgfQorCisgICAgfkV3a0NvbnRleHRNZW51KCk7
CisKKyAgICB2b2lkIGhpZGUoKTsKKyAgICB2b2lkIGFwcGVuZEl0ZW0oRXdrQ29udGV4dE1lbnVJ
dGVtKik7CisgICAgdm9pZCByZW1vdmVJdGVtKEV3a0NvbnRleHRNZW51SXRlbSopOworCisgICAg
Y29uc3QgRWluYV9MaXN0KiBpdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dE1lbnVJdGVt
czsgfQorICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViS2l0OjpXZWJD
b250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKTsKKworcHJpdmF0ZToKKyAgICBFd2tDb250ZXh0TWVu
dShFd2tWaWV3SW1wbCogdmlld0ltcGwsIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbCos
IGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcyk7CisK
KyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKKyAgICBXZWJLaXQ6OldlYkNvbnRleHRNZW51
UHJveHlFZmwqIG1fY29udGV4dE1lbnVQcm94eTsKKyAgICBFaW5hX0xpc3QqIG1fY29udGV4dE1l
bnVJdGVtczsKK307CisKKyNlbmRpZiAvLyBld2tfY29udGV4dF9tZW51X3ByaXZhdGVfaAorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCA3NTAxNjEx
NzRiOWE0NTdmZjJlZGU5ODg1MThiMGIzNDY3NzJiNTdmLi4zN2Y0MjUzYzFjOGE4NWVjMWMzZjJk
MWUxMmU3MjBkODA1ODcyNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmgKQEAgLTg0LDYgKzg0LDcgQEAKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJk
X2xpc3QuaCIKICNpbmNsdWRlICJld2tfY29sb3JfcGlja2VyLmgiCiAjaW5jbHVkZSAiZXdrX2Nv
bnRleHQuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX2Rv
d25sb2FkX2pvYi5oIgogI2luY2x1ZGUgImV3a19lcnJvci5oIgogI2luY2x1ZGUgImV3a19pbnRl
bnQuaCIKQEAgLTExNCw2ICsxMTUsOSBAQCBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgewog
ICAgIEV2YXNfU21hcnRfQ2xhc3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBi
ZSBjaGFuZ2VkLiAqLwogICAgIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKIAorICAgIEVpbmFfQm9v
bCAoKmNvbnRleHRfbWVudV9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29y
ZCB4LCBFdmFzX0Nvb3JkIHksIEV3a19Db250ZXh0X01lbnUgKm1lbnUpOworICAgIEVpbmFfQm9v
bCAoKmNvbnRleHRfbWVudV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisKICAgICBF
aW5hX0Jvb2wgKCpwb3B1cF9tZW51X3Nob3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFaW5h
X1JlY3RhbmdsZSByZWN0LCBFd2tfVGV4dF9EaXJlY3Rpb24gdGV4dF9kaXJlY3Rpb24sIGRvdWJs
ZSBwYWdlX3NjYWxlX2ZhY3RvciwgRXdrX1BvcHVwX01lbnUgKm1lbnUpOwogICAgIEVpbmFfQm9v
bCAoKnBvcHVwX21lbnVfaGlkZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwogCkBAIC0xNjks
NyArMTczLDcgQEAgc3RydWN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJ
RVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNT
X0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xB
U1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFy
dF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVS
U0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUg
RXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHRfbWVudS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dF9t
ZW51LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lY2Y2ODQ4YmYyZWI3NzE5OGY4ZjYzY2RiNzI1ZmQyYzBlMzY1
MDRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX2NvbnRleHRfbWVudS5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUg
dGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJV
bml0VGVzdEJhc2UuaCIKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmly
b25tZW50LmgiCisjaW5jbHVkZSA8RVdlYktpdDIuaD4KKyNpbmNsdWRlIDxFY29yZS5oPgorCit1
c2luZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0OworCitleHRlcm4gRVdLMlVuaXRUZXN0RW52aXJv
bm1lbnQqIGVudmlyb25tZW50OworCitzdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tCYXNpY0NvbnRl
eHRNZW51SXRlbShFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEV3a19Db250ZXh0X01lbnVf
SXRlbV9UeXBlIHR5cGUsIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBjb25z
dCBjaGFyKiB0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKQorewor
ICAgIEFTU0VSVF9UUlVFKGl0ZW0pOworCisgICAgRVhQRUNUX0VRKHR5cGUsIGV3a19jb250ZXh0
X21lbnVfaXRlbV90eXBlX2dldChpdGVtKSk7CisgICAgRVhQRUNUX0VRKGFjdGlvbiwgZXdrX2Nv
bnRleHRfbWVudV9pdGVtX2FjdGlvbl9nZXQoaXRlbSkpOworICAgIEVYUEVDVF9TVFJFUSh0aXRs
ZSwgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldChpdGVtKSk7CisgICAgRVhQRUNUX0VR
KGNoZWNrZWQsIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldChpdGVtKSk7CisgICAg
RVhQRUNUX0VRKGVuYWJsZWQsIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dldChpdGVt
KSk7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgc2hvd0NvbnRleHRNZW51KEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNtYXJ0RGF0YSwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV3a19Db250ZXh0
X01lbnUqIGNvbnRleHRNZW51KQoreworICAgIGNvbnN0IEVpbmFfTGlzdCogbGlzdCA9IGV3a19j
b250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnRleHRNZW51KTsKKyAgICBFWFBFQ1RfRVEoNCwgZWlu
YV9saXN0X2NvdW50KGxpc3QpKTsKKworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSA9
IHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGVpbmFfbGlzdF9udGgobGlzdCwg
MCkpOworICAgIGNoZWNrQmFzaWNDb250ZXh0TWVudUl0ZW0oaXRlbSwgRVdLX0FDVElPTl9UWVBF
LCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0JBQ0ssICJHbyBCYWNrIiwgZmFsc2UsIHRy
dWUpOworCisgICAgaXRlbSA9IHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGVp
bmFfbGlzdF9udGgobGlzdCwgMSkpOworICAgIGNoZWNrQmFzaWNDb250ZXh0TWVudUl0ZW0oaXRl
bSwgRVdLX0FDVElPTl9UWVBFLCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZPUldBUkQs
ICJHbyBGb3J3YXJkIiwgZmFsc2UsIHRydWUpOworICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9l
bmFibGVkX3NldChpdGVtLCBmYWxzZSk7CisgICAgRVhQRUNUX0ZBTFNFKGV3a19jb250ZXh0X21l
bnVfaXRlbV9lbmFibGVkX2dldChpdGVtKSk7CisKKyAgICBpdGVtID0gc3RhdGljX2Nhc3Q8RXdr
X0NvbnRleHRfTWVudV9JdGVtKj4oZWluYV9saXN0X250aChsaXN0LCAyKSk7CisgICAgY2hlY2tC
YXNpY0NvbnRleHRNZW51SXRlbShpdGVtLCBFV0tfQUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfU1RPUCwgIlN0b3AiLCBmYWxzZSwgdHJ1ZSk7CisgICAgZXdrX2NvbnRleHRf
bWVudV9pdGVtX2NoZWNrZWRfc2V0KGl0ZW0sIHRydWUpOworICAgIEVYUEVDVF9UUlVFKGV3a19j
b250ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldChpdGVtKSk7CisKKyAgICBpdGVtID0gc3RhdGlj
X2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4oZWluYV9saXN0X250aChsaXN0LCAzKSk7Cisg
ICAgY2hlY2tCYXNpY0NvbnRleHRNZW51SXRlbShpdGVtLCBFV0tfQUNUSU9OX1RZUEUsIEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfUkVMT0FELCAiUmVsb2FkIiwgZmFsc2UsIHRydWUpOworICAg
IGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9zZXQoaXRlbSwgIlJlZnJlc2giKTsKKyAgICBF
WFBFQ1RfU1RSRVEoIlJlZnJlc2giLCBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGl0
ZW0pKTsKKworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSogbmV3SXRlbSA9IGV3a19jb250ZXh0
X21lbnVfaXRlbV9hZGQoRVdLX0FDVElPTl9UWVBFLCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X09USEVSLCAiTmV3IEN1c3RvbSBJdGVtIiwgZmFsc2UsIHRydWUsIGNvbnRleHRNZW51LCAwKTsK
KyAgICBsaXN0ID0gZXdrX2NvbnRleHRfbWVudV9pdGVtc19nZXQoY29udGV4dE1lbnUpOworICAg
IEVYUEVDVF9FUSg1LCBlaW5hX2xpc3RfY291bnQobGlzdCkpOworCisgICAgZXdrX2NvbnRleHRf
bWVudV9pdGVtX3JlbW92ZShjb250ZXh0TWVudSwgbmV3SXRlbSk7CisgICAgbGlzdCA9IGV3a19j
b250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnRleHRNZW51KTsKKyAgICBFWFBFQ1RfRVEoNCwgZWlu
YV9saXN0X2NvdW50KGxpc3QpKTsKKworICAgIEVYUEVDVF9UUlVFKGV3a19jb250ZXh0X21lbnVf
aXRlbV9zZWxlY3QoY29udGV4dE1lbnUsIGl0ZW0pKTsKKworICAgIHJldHVybiB0cnVlOworfQor
CitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX2NvbnRleHRfbWVudV9pdGVtX3NlbGVjdCkK
K3sKKyAgICBjb25zdCBjaGFyKiBpdGVtU2VsZWN0SFRNTCA9CisgICAgICAgICI8aHRtbD4iCisg
ICAgICAgICI8Ym9keT48YSBocmVmPWh0dHA6Ly93d3cuZ29vZ2xlLmNvbT5UZXN0IExpbms8L2E+
PC9ib2R5PiIKKyAgICAgICAgIjwvYm9keT48L2h0bWw+IjsgCisKKyAgICBld2tWaWV3Q2xhc3Mo
KS0+Y29udGV4dF9tZW51X3Nob3cgPSBzaG93Q29udGV4dE1lbnU7CisKKyAgICBld2tfdmlld19o
dG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgaXRlbVNlbGVjdEhUTUwsICJmaWxlOi8vLyIsIDAp
OworICAgIG1vdXNlQ2xpY2soMjAsIDMwLCAvKlJpZ2h0Ki8gMyk7CisgICAgQVNTRVJUX1RSVUUo
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTg2MDI4
ZTBkZDY0MzA3MTYyNzMxZjE3ZjM1ZTJmM2ZhNjg1MWQyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKQEAgLTAs
MCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRFZmwuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXdJbXBs
LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXS0FycmF5LmgiCisj
aW5jbHVkZSAiV0tQYWdlLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiICAgCisj
aW5jbHVkZSA8RXZhcy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgaW5s
aW5lIENvbnRleHRNZW51Q2xpZW50RWZsKiB0b0NvbnRleHRDbGllbnRFZmwoY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVDbGllbnRF
ZmwqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisKK0NvbnRleHRNZW51Q2xp
ZW50RWZsOjpDb250ZXh0TWVudUNsaWVudEVmbChFd2tWaWV3SW1wbCogdmlld0ltcGwpCisgICAg
OiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQoreworICAgIFdLUGFnZVJlZiBwYWdlUmVmID0gbV92aWV3
SW1wbC0+d2tQYWdlKCk7CisgICAgQVNTRVJUKHBhZ2VSZWYpOworCisgICAgV0tQYWdlQ29udGV4
dE1lbnVDbGllbnQgY29udGV4dE1lbnVDbGllbnQ7CisgICAgbWVtc2V0KCZjb250ZXh0TWVudUNs
aWVudCwgMCwgc2l6ZW9mKFdLUGFnZUNvbnRleHRNZW51Q2xpZW50KSk7CisgICAgY29udGV4dE1l
bnVDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VDb250ZXh0TWVudUNsaWVudEN1cnJlbnRWZXJzaW9u
OworICAgIGNvbnRleHRNZW51Q2xpZW50LmNsaWVudEluZm8gPSB0aGlzOworICAgIGNvbnRleHRN
ZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwID0gMDsKKyAgICBjb250ZXh0TWVudUNsaWVudC5jdXN0b21Db250ZXh0TWVudUl0ZW1T
ZWxlY3RlZCA9IDA7CisgICAgY29udGV4dE1lbnVDbGllbnQuY29udGV4dE1lbnVEaXNtaXNzZWQg
PSAwOworICAgIGNvbnRleHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVu
dSA9IDA7CisKKyAgICBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQocGFnZVJlZiwgJmNv
bnRleHRNZW51Q2xpZW50KTsKK30KKwordm9pZCBDb250ZXh0TWVudUNsaWVudEVmbDo6Z2V0Q29u
dGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdLUGFnZVJlZiwgV0tBcnJheVJlZiwgV0tBcnJheVJl
ZiosIFdLSGl0VGVzdFJlc3VsdFJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9Db250ZXh0TWVudUNsaWVudEVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyOWU0ZWQzY2VjY2JkMzM3ZDg4
N2M1YjU0NTQ1MDFkZjc1YjFhYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmgKQEAgLTAsMCArMSw1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvbnRleHRNZW51Q2xpZW50RWZsX2gKKyNkZWZp
bmUgQ29udGV4dE1lbnVDbGllbnRFZmxfaAorCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNp
bmNsdWRlICJld2tfY29udGV4dC5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitjbGFzcyBFd2tWaWV3SW1wbDsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIENvbnRleHRNZW51Q2xpZW50RWZsIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxDb250ZXh0TWVudUNsaWVudEVmbD4gY3JlYXRlKEV3a1ZpZXdJ
bXBsKiB2aWV3SW1wbCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ29udGV4
dE1lbnVDbGllbnRFZmwodmlld0ltcGwpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBnZXRD
b250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV0tQYWdlUmVmLCBXS0FycmF5UmVmIHByb3Bvc2Vk
TWVudSwgV0tBcnJheVJlZiogbmV3TWVudSwgV0tIaXRUZXN0UmVzdWx0UmVmLCBXS1R5cGVSZWYg
dXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IENvbnRleHRNZW51Q2xpZW50RWZsKEV3a1ZpZXdJbXBsKik7CisKKyAgICBFd2tWaWV3SW1w
bCogbV92aWV3SW1wbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
Q29udGV4dE1lbnVDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VDbGllbnRCYXNlLmNwcAppbmRleCA5N2E4NWY1Y2NlZmVjNzNkYjNmMzQ2OWFiNDEzM2Uy
MzJjMWIzNGQwLi4wY2U4MmFhZTQ2ZTQwNGY1ZDI5M2RhYWM2MzRkYjAxOTM1YjJjOWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcApAQCAt
MzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJDb250
ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1
ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgiCkBAIC0yMjEsMTAgKzIyMSw5IEBAIFBhc3NSZWZQ
dHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRCYXNlOjpjcmVhdGVQb3B1cE1lbnVQcm94
eShXZWJQYWdlUHJveHkqCiAgICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUo
bV92aWV3SW1wbCwgcGFnZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4g
UGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK1Bh
c3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRl
eHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFdlYkNvbnRleHRNZW51UHJveHlFZmw6OmNyZWF0
ZShtX3ZpZXdJbXBsLCBwYWdlKTsKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVBy
b3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQ
cm94eUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM3ZTBlYjgxNjMzMzUzYzE2MzNkMGNlZmI1OWVkNTdm
NTJjNDViMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHlFZmwuaCIKKworI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQorCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbnRleHRNZW51UHJveHlFZmw6OldlYkNvbnRleHRN
ZW51UHJveHlFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsLCBXZWJQYWdlUHJveHkqIHBhZ2UpCisg
ICAgOiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQorICAgICwgbV9wYWdlKHBhZ2UpCit7Cit9CisKK1dl
YkNvbnRleHRNZW51UHJveHlFZmw6On5XZWJDb250ZXh0TWVudVByb3h5RWZsKCkKK3sKK30KKwor
dm9pZCBXZWJDb250ZXh0TWVudVByb3h5RWZsOjpzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0
YT4mIGl0ZW1zKQoreworICAgIG1fdmlld0ltcGwtPnNob3dDb250ZXh0TWVudSh0aGlzLCBwb3Np
dGlvbiwgaXRlbXMpOworfQorCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlFZmw6OmhpZGVDb250
ZXh0TWVudSgpCit7CisgICAgbV92aWV3SW1wbC0+aGlkZUNvbnRleHRNZW51KCk7Cit9CisKK3Zv
aWQgV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3Qg
V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKK3sKKyAgICBtX3BhZ2UtPmNvbnRleHRNZW51
SXRlbVNlbGVjdGVkKGl0ZW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2JlMmFiOWNl
YjVkZGNmMWM0NjJiNDU1MzhjMzI5M2EyMjI4ZjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmgKQEAgLTAsMCAr
MSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJDb250ZXh0TWVudVByb3h5RWZsX2gKKyNkZWZpbmUgV2ViQ29u
dGV4dE1lbnVQcm94eUVmbF9oCisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1
ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgorCitjbGFzcyBFd2tWaWV3SW1wbDsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7Citj
bGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlFZmwgOiBwdWJs
aWMgV2ViQ29udGV4dE1lbnVQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViQ29udGV4dE1lbnVQcm94eUVmbD4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2Vi
UGFnZVByb3h5KiBwYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJD
b250ZXh0TWVudVByb3h5RWZsKHZpZXdJbXBsLCBwYWdlKSk7CisgICAgfQorCisgICAgfldlYkNv
bnRleHRNZW51UHJveHlFZmwoKTsKKworICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jik7
CisgICAgdm9pZCBoaWRlQ29udGV4dE1lbnUoKTsKKworICAgIHZvaWQgY29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOworCitwcml2YXRlOgorICAg
IFdlYkNvbnRleHRNZW51UHJveHlFZmwoRXdrVmlld0ltcGwqLCBXZWJQYWdlUHJveHkqKTsKKwor
ICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOworICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwor
fTsKKworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhU
X01FTlVTKQorI2VuZGlmIC8vIFdlYkNvbnRleHRNZW51UHJveHlFZmxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174929</attachid>
            <date>2012-11-19 02:44:17 -0800</date>
            <delta_ts>2012-11-19 03:10:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96200-20121119194206.patch</filename>
            <type>text/plain</type>
            <size>69765</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJhZjU5YjdmMWViZWY4
ODEzZWM4ZDRlMTA0OGVlMjEyNzE4MDQ3YS4uZjE3NGM0NGIyYjFjYmFkZjBhMTNiODRmMDNmNjIz
OTY4NzRlYmI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTE5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0sy
XSBTdXBwb3J0IENvbnRleHQgTWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICBFRkwg
cG9ydCBhbHNvIGRvZXNuJ3QgaGlkZSB1bmF2YWlsYWJsZSBtZW51cyBhcyBndGsgcG9ydC4KKwog
MjAxMi0xMS0xOCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgd2ViYXVkaW86IGNsZWFuLXVwLiBSZXBsYWNlIEF1ZGlvQ29udGV4dDo6bV9kb2N1bWVu
dCBtZW1iZXIgd2l0aCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDliOGJiZDU0MjM1NjUzZWUyZGU2MjkxYTJmZGVlOGI3
NTJhMjk3MWUuLmZjYmQ5NzA4YzI0ZGNlM2UyODVlMDNiMTg4YTYyMTdlODA5YzU4NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw5MiBAQAorMjAxMi0xMS0xOCAgR3l1eW91bmcgS2ltICA8Z3l1eW91
bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gU3VwcG9ydCBDb250ZXh0
IE1lbnUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2
MjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBzdXBwb3J0cyBXSzIgRUZMJ3MgY29udGV4dCBtZW51IGFzIFdLMSBpbXBsZW1lbnRh
dGlvbiBiZWNhdXNlIHdlIGNhbid0IHVzZSBlbGVtZW50YXJ5IGluIGluc2lkZSBXZWJLaXQuCisg
ICAgICAgIE9ubHkgYmFzaWMgZnVuY3Rpb25hbGl0aWVzIG9mIGNvbnRleHQgbWVudSBhcmUgc3Vw
cG9ydGVkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5jcHA6CisgICAgICAgIChFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwpOgorICAgICAg
ICAoRXdrVmlld0ltcGw6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6
aGlkZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcDogQWRkZWQuCisgICAgICAg
IChFd2tfQ29udGV4dF9NZW51OjpFd2tfQ29udGV4dF9NZW51KToKKyAgICAgICAgKEV3a19Db250
ZXh0X01lbnU6On5Fd2tfQ29udGV4dF9NZW51KToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnU6
OmhpZGUpOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudTo6YXBwZW5kSXRlbSk6CisgICAgICAg
IChld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVf
aXRlbV9mcmVlKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnU6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaGlkZSk6CisgICAgICAgIChld2tf
Y29udGV4dF9tZW51X2l0ZW1zX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1f
c2VsZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51Lmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRl
bS5jcHA6IEFkZGVkLgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjpFd2tfQ29udGV4
dF9NZW51X0l0ZW0pOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjp0eXBlKToKKyAg
ICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6c2V0VHlwZSk6CisgICAgICAgIChFd2tfQ29u
dGV4dF9NZW51X0l0ZW06OmFjdGlvbik6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06
OnNldEFjdGlvbik6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06OnRpdGxlKToKKyAg
ICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6c2V0VGl0bGUpOgorICAgICAgICAoRXdrX0Nv
bnRleHRfTWVudV9JdGVtOjpjaGVja2VkKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRl
bTo6c2V0Q2hlY2tlZCk6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06OmVuYWJsZWQp
OgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjpzZXRFbmFibGVkKToKKyAgICAgICAg
KGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9t
ZW51X2l0ZW1fdHlwZV9zZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlv
bl9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9zZXQpOgorICAg
ICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldCk6CisgICAgICAgIChld2tfY29u
dGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRl
bV9jaGVja2VkX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9z
ZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0KToKKyAgICAg
ICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmg6IEFkZGVkLgor
ICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtKToKKyAgICAgICAgKEV3a19Db250ZXh0X01l
bnVfSXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9tZW51X3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoRXdr
X0NvbnRleHRfTWVudSk6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51OjpjcmVhdGUpOgorICAg
ICAgICAoRXdrX0NvbnRleHRfTWVudTo6aXRlbXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX2NvbnRleHRfbWVudS5jcHA6IEFkZGVkLgorICAgICAgICAoY2hlY2tCYXNpY0NvbnRleHRN
ZW51SXRlbSk6CisgICAgICAgIChzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAoVEVTVF9GKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcDogQWRkZWQu
CisgICAgICAgICh0b0NvbnRleHRDbGllbnRFZmwpOgorICAgICAgICAoQ29udGV4dE1lbnVDbGll
bnRFZmw6OkNvbnRleHRNZW51Q2xpZW50RWZsKToKKyAgICAgICAgKENvbnRleHRNZW51Q2xpZW50
RWZsOjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoQ29udGV4dE1lbnVDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0
TWVudUNsaWVudEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGll
bnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRl
eHRNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94
eUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVQcm94eUVmbDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmw6On5XZWJDb250ZXh0TWVudVByb3h5RWZsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6c2hvd0NvbnRleHRNZW51
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6aGlkZUNvbnRleHRN
ZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQ
cm94eUVmbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb250ZXh0
TWVudVByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6
Y3JlYXRlKToKKwogMjAxMi0xMS0xOCAgSmFlaHVuIExpbSAgPGxqYWVodW4ubGltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gUmVtb3ZlIHVuZGVyc2NvcmUgY2hhcmFjdGVycyBp
biBFd2sgY2xhc3MgbmFtZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKaW5kZXggNzk3OTcxZDBmNTZjOTUyNGUwMjQ0OGNmZGRjNGI5ZTVlZGZhMTY5
ZC4uNTY0MGRjNzY5N2U4MjM2Mzc2YzY1MzExMmZjMWI4MzAwZjRhOTYwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtODc2LDggKzg3Niw4
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgICAgICAg
ICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPmhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkpKSB7CiAjZW5kaWYKIAotICAgICAg
ICAgICAgICAgIC8vIEluIEdUSysgdW5hdmFpbGFibGUgaXRlbXMgYXJlIG5vdCBoaWRkZW4gYnV0
IGluc2Vuc2l0aXZlCi0jaWYgUExBVEZPUk0oR1RLKQorICAgICAgICAgICAgICAgIC8vIEluIEdU
SysgYW5kIEVGTCwgdW5hdmFpbGFibGUgaXRlbXMgYXJlIG5vdCBoaWRkZW4gYnV0IGluc2Vuc2l0
aXZlLgorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgICAgICAgICAgICAg
IGFwcGVuZEl0ZW0oQmFja0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAg
ICAgIGFwcGVuZEl0ZW0oRm9yd2FyZEl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIGFwcGVuZEl0ZW0oU3RvcEl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBiYjg3NDdiMWNiMWY1ODM4YzJkZDdjY2RkZjc4Mjkx
MWVhNjdjMWU1Li4zYjc0ZWRiNTA1M2ZmN2ExYzIzZDY4MTEwZjVhNTkwOTRkZTFkZWYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNDksNiArNDksOCBAQCBMSVNUKEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3Rf
aXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X21lbnUuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
bWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcApAQCAtNzgsNiArODAsNyBAQCBM
SVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9lZmwvQmF0dGVyeVBy
b3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuY3Bw
CisgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nl
c3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0ZpbmRDbGll
bnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcApAQCAtOTUsNiAr
OTgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1Rl
eHRDaGVja2VyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvVmlicmF0aW9uQ2xpZW50RWZsLmNw
cAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZs
L1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJv
eHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC0zNjIs
NiArMzY2LDcgQEAgU0VUKEVXSzJVbml0VGVzdHNfQklOQVJJRVMKICAgICB0ZXN0X2V3azJfY29s
b3JfcGlja2VyCiAgICAgdGVzdF9ld2syX2NvbnRleHQKICAgICB0ZXN0X2V3azJfY29udGV4dF9o
aXN0b3J5X2NhbGxiYWNrcworICAgIHRlc3RfZXdrMl9jb250ZXh0X21lbnUKICAgICB0ZXN0X2V3
azJfY29va2llX21hbmFnZXIKICAgICB0ZXN0X2V3azJfZGF0YWJhc2VfbWFuYWdlcgogICAgIHRl
c3RfZXdrMl9kb3dubG9hZF9qb2IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
V2ViS2l0Mi5oCmluZGV4IDA3Y2ExMjkzNTBmNGVkYjdlM2RiNGJmOTJhZDcwYjhjM2EyMDljZTQu
LjIyZDYxNjgyNWUxY2Q1MTg4OTViMmU3ZGM3ZWM1YjgzMjMyMjU5NTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtMzMsNiArMzMsOCBAQAogI2lu
Y2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX2NvbG9y
X3BpY2tlci5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRl
eHRfbWVudS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgogI2luY2x1ZGUg
ImV3a19jb29raWVfbWFuYWdlci5oIgogI2luY2x1ZGUgImV3a19kYXRhYmFzZV9tYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4IGFjYTJkNGRlZTFhYWYyYjgzZDY0
YTBjYzhmODQ3MTgzZDRmNzc5MDIuLmU3Mjc5MjMzNzA2ZTBkNzA1ZWJjYjlkODgyOTQ1MzMzYWMz
NGZiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
SW1wbC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJFd2tWaWV3SW1wbC5oIgogCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRFZmwuaCIKICNp
bmNsdWRlICJFZmxTY3JlZW5VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJGaW5kQ2xpZW50RWZsLmgi
CiAjaW5jbHVkZSAiRm9ybUNsaWVudEVmbC5oIgpAQCAtNDUsNiArNDYsNyBAQAogI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJl
d2tfY29udGV4dF9tZW51X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRl
LmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImV3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgpAQCAtMTE0LDYgKzExNiw3IEBAIEV3a1Zp
ZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tDb250
ZXh0PiBjb250ZXh0LCBQYXNzCiAgICAgLCBtX3BhZ2VQb2xpY3lDbGllbnQoUGFnZVBvbGljeUNs
aWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9wYWdlVUlDbGllbnQoUGFnZVVJQ2xpZW50
RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3Jlc291cmNlTG9hZENsaWVudChSZXNvdXJjZUxv
YWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQoQ29u
dGV4dE1lbnVDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZmluZENsaWVudChGaW5k
Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2Zvcm1DbGllbnQoRm9ybUNsaWVudEVm
bDo6Y3JlYXRlKHRoaXMpKQogI2lmIEVOQUJMRShWSUJSQVRJT04pCkBAIC03MTQsNiArNzE3LDM4
IEBAIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUNvbnRlbnRzU2l6ZUNoYW5nZShjb25zdCBJbnRT
aXplJiBzaXplKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJ
T05fUklHSFRfVE9fTEVGVCwgUlRMKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIExUUik7CiAKK3ZvaWQgRXdrVmlld0ltcGw6
OnNob3dDb250ZXh0TWVudShXZWJDb250ZXh0TWVudVByb3h5RWZsKiBjb250ZXh0TWVudVByb3h5
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxXZWJDb250
ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qg
PSBzbWFydERhdGEoKTsKKyAgICBBU1NFUlQoc2QtPmFwaSk7CisKKyAgICBBU1NFUlQoY29udGV4
dE1lbnVQcm94eSk7CisKKyAgICBpZiAoIXNkLT5hcGktPmNvbnRleHRfbWVudV9zaG93KQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAobV9jb250ZXh0TWVudSkKKyAgICAgICAgaGlkZUNvbnRl
eHRNZW51KCk7CisKKyAgICBtX2NvbnRleHRNZW51ID0gRXdrX0NvbnRleHRfTWVudTo6Y3JlYXRl
KHRoaXMsIGNvbnRleHRNZW51UHJveHksIGl0ZW1zKTsKKworICAgIHNkLT5hcGktPmNvbnRleHRf
bWVudV9zaG93KHNkLCBwb3NpdGlvbi54KCksIHBvc2l0aW9uLnkoKSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6OmhpZGVDb250ZXh0TWVudSgpCit7CisgICAg
aWYgKCFtX2NvbnRleHRNZW51KQorICAgICAgICByZXR1cm47CisKKyAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgIEFTU0VSVChzZC0+YXBpKTsKKworICAgIGlm
IChzZC0+YXBpLT5jb250ZXh0X21lbnVfaGlkZSkKKyAgICAgICAgc2QtPmFwaS0+Y29udGV4dF9t
ZW51X2hpZGUoc2QpOworCisgICAgbV9jb250ZXh0TWVudS5jbGVhcigpOworfQorCiB2b2lkIEV3
a1ZpZXdJbXBsOjpyZXF1ZXN0UG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1l
bnVQcm94eSwgY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9u
LCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRl
bXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCA9IHNtYXJ0RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXdJbXBsLmgKaW5kZXggMjRjYTRmZGJiYzgyOWZjZGQ5OWYwMThjZGVjMmNhYjk0MGM5OGNk
OC4uYmQzNDBjYzBlMWJhMmVjZjNiMzhiYWRhZjg1NDFlMzBmNjZjZDE5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC00Niw2ICs0Niw3
IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBDb250ZXh0TWVudUNsaWVu
dEVmbDsKIGNsYXNzIEZpbmRDbGllbnRFZmw7CiBjbGFzcyBGb3JtQ2xpZW50RWZsOwogY2xhc3Mg
SW5wdXRNZXRob2RDb250ZXh0RWZsOwpAQCAtNTQsNiArNTUsOCBAQCBjbGFzcyBQYWdlTG9hZENs
aWVudEVmbDsKIGNsYXNzIFBhZ2VQb2xpY3lDbGllbnRFZmw7CiBjbGFzcyBQYWdlVUlDbGllbnRF
Zmw7CiBjbGFzcyBSZXNvdXJjZUxvYWRDbGllbnRFZmw7CitjbGFzcyBXZWJDb250ZXh0TWVudUl0
ZW1EYXRhOworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eUVmbDsKIGNsYXNzIFdlYlBhZ2VHcm91
cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlBvcHVwSXRlbTsKQEAgLTc0LDYgKzc3
LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEV3a0NvbnRleHQ7CiBjbGFzcyBFd2tCYWNrRm9y
d2FyZExpc3Q7CiBjbGFzcyBFd2tDb2xvclBpY2tlcjsKK2NsYXNzIEV3a0NvbnRleHRNZW51Owog
Y2xhc3MgRXdrUG9wdXBNZW51OwogY2xhc3MgRXdrU2V0dGluZ3M7CiAKQEAgLTE2MSw2ICsxNjUs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcXVlc3RQb3B1cE1lbnUoV2ViS2l0OjpXZWJQb3B1
cE1lbnVQcm94eUVmbCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGly
ZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQ
b3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKICAgICB2b2lkIGNsb3Nl
UG9wdXBNZW51KCk7CisgICAgCisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoV2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5RWZsKiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBj
b25zdCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpOworICAg
IHZvaWQgaGlkZUNvbnRleHRNZW51KCk7CiAKICAgICB2b2lkIHVwZGF0ZVRleHRJbnB1dFN0YXRl
KCk7CiAKQEAgLTIzMyw2ICsyNDAsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OlBh
Z2VQb2xpY3lDbGllbnRFZmw+IG1fcGFnZVBvbGljeUNsaWVudDsKICAgICBPd25QdHI8V2ViS2l0
OjpQYWdlVUlDbGllbnRFZmw+IG1fcGFnZVVJQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6OlJl
c291cmNlTG9hZENsaWVudEVmbD4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7CisgICAgT3duUHRyPFdl
YktpdDo6Q29udGV4dE1lbnVDbGllbnRFZmw+IG1fY29udGV4dE1lbnVDbGllbnQ7CiAgICAgT3du
UHRyPFdlYktpdDo6RmluZENsaWVudEVmbD4gbV9maW5kQ2xpZW50OwogICAgIE93blB0cjxXZWJL
aXQ6OkZvcm1DbGllbnRFZmw+IG1fZm9ybUNsaWVudDsKICNpZiBFTkFCTEUoVklCUkFUSU9OKQpA
QCAtMjU1LDYgKzI2Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3RvdWNoRXZlbnRzRW5hYmxl
ZDsKICNlbmRpZgogICAgIFdlYkNvcmU6OlRpbWVyPEV3a1ZpZXdJbXBsPiBtX2Rpc3BsYXlUaW1l
cjsKKyAgICBPd25QdHI8RXdrQ29udGV4dE1lbnU+IG1fY29udGV4dE1lbnU7CiAgICAgT3duUHRy
PEV3a1BvcHVwTWVudT4gbV9wb3B1cE1lbnU7CiAgICAgT3duUHRyPFdlYktpdDo6SW5wdXRNZXRo
b2RDb250ZXh0RWZsPiBtX2lucHV0TWV0aG9kQ29udGV4dDsKICAgICBPd25QdHI8RXdrQ29sb3JQ
aWNrZXI+IG1fY29sb3JQaWNrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3N2Y3OWJiNTg5MDY3
YjI1Y2NiODdhY2Q1NjRhMjVhMmY0ZGIzZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcApAQCAtMCwwICsxLDEy
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudS5oIgorCisjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0
ZW1EYXRhLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIgorI2luY2x1ZGUg
ImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRl
bV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0V3a0NvbnRleHRNZW51OjpFd2tDb250ZXh0TWVudShF
d2tWaWV3SW1wbCogdmlld0ltcGwsIFdlYkNvbnRleHRNZW51UHJveHlFZmwqIGNvbnRleHRNZW51
UHJveHksIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVt
cykKKyAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCisgICAgLCBtX2NvbnRleHRNZW51UHJveHko
Y29udGV4dE1lbnVQcm94eSkKKyAgICAsIG1fY29udGV4dE1lbnVJdGVtcygwKQoreworICAgIGNv
bnN0IHNpemVfdCBzaXplID0gaXRlbXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQorICAgICAgICBtX2NvbnRleHRNZW51SXRlbXMgPSBlaW5hX2xpc3RfYXBw
ZW5kKG1fY29udGV4dE1lbnVJdGVtcywgRXdrX0NvbnRleHRfTWVudV9JdGVtOjpjcmVhdGUoaXRl
bXNbaV0pLmxlYWtQdHIoKSk7Cit9CisKK0V3a0NvbnRleHRNZW51Ojp+RXdrQ29udGV4dE1lbnUo
KQoreworICAgIHZvaWQqIGRhdGE7CisgICAgRUlOQV9MSVNUX0ZSRUUobV9jb250ZXh0TWVudUl0
ZW1zLCBkYXRhKQorICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9J
dGVtKj4oZGF0YSk7Cit9CisKK3ZvaWQgRXdrQ29udGV4dE1lbnU6OmhpZGUoKQoreworICAgIG1f
dmlld0ltcGwtPmhpZGVDb250ZXh0TWVudSgpOworfQorCit2b2lkIEV3a19Db250ZXh0X01lbnU6
OmFwcGVuZEl0ZW0oRXdrQ29udGV4dE1lbnVJdGVtKiBpdGVtKQoreworICAgIG1fY29udGV4dE1l
bnVJdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQobV9jb250ZXh0TWVudUl0ZW1zLCBpdGVtKTsKK30K
Kwordm9pZCBFd2tfQ29udGV4dF9NZW51OjpyZW1vdmVJdGVtKEV3a0NvbnRleHRNZW51SXRlbSog
aXRlbSkKK3sKKyAgICBtX2NvbnRleHRNZW51SXRlbXMgPSBlaW5hX2xpc3RfcmVtb3ZlKG1fY29u
dGV4dE1lbnVJdGVtcywgaXRlbSk7Cit9CisKK3ZvaWQgRXdrQ29udGV4dE1lbnU6OmNvbnRleHRN
ZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRl
bSkKK3sKKyAgICBtX2NvbnRleHRNZW51UHJveHktPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGl0
ZW0pOyAKK30gCisKK0V3a19Db250ZXh0X01lbnVfSXRlbSogZXdrX2NvbnRleHRfbWVudV9pdGVt
X2FwcGVuZChFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51
X0l0ZW1fQWN0aW9uIGFjdGlvbiwgY29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBjaGVja2Vk
LCBFaW5hX0Jvb2wgZW5hYmxlZCwgRXdrX0NvbnRleHRfTWVudSogcGFyZW50TWVudSwgRXdrX0Nv
bnRleHRfTWVudSogc3ViTWVudSkKK3sKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIG5ld0l0
ZW0gPSBFd2tfQ29udGV4dF9NZW51X0l0ZW06OmNyZWF0ZSh0eXBlLCBhY3Rpb24sIHRpdGxlLCBj
aGVja2VkLCBlbmFibGVkLCBwYXJlbnRNZW51LCBzdWJNZW51KS5sZWFrUHRyKCk7CisgICAgcGFy
ZW50TWVudS0+YXBwZW5kSXRlbShuZXdJdGVtKTsKKworICAgIHJldHVybiBuZXdJdGVtOworfQor
CitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3JlbW92ZShFd2tfQ29udGV4dF9NZW51
KiBtZW51LCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIDApOworCisgICAgbWVudS0+cmVtb3ZlSXRlbShpdGVt
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9o
aWRlKEV3a19Db250ZXh0X01lbnUqIG1lbnUpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKG1lbnUsIGZhbHNlKTsKKworICAgIG1lbnUtPmhpZGUoKTsKKworICAgIHJldHVy
biB0cnVlOworfQorCitjb25zdCBFaW5hX0xpc3QqIGV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0
KGNvbnN0IEV3a19Db250ZXh0X01lbnUqIG1lbnUpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKG1lbnUsIDApOworCisgICAgcmV0dXJuIG1lbnUtPml0ZW1zKCk7Cit9CisK
K0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUq
IG1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwobWVudSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
eXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlPihpdGVt
LT50eXBlKCkpOworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbiA9IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uPihpdGVtLT5hY3Rpb24oKSk7CisKKyAg
ICBXZWJDb250ZXh0TWVudUl0ZW1EYXRhIG5ld0l0ZW0odHlwZSwgYWN0aW9uLCBpdGVtLT50aXRs
ZSgpLCBpdGVtLT5lbmFibGVkKCksIGl0ZW0tPmNoZWNrZWQoKSk7CisgICAgbWVudS0+Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQobmV3SXRlbSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMzM2OGNlN2MwYjlmYzA5YmQxYzEyMzkwMWMzZDUzYzQwZjNmOTcxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHRfbWVudS5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLyoqCisgKiBAZmlsZSAgICBld2tfY29udGV4dF9tZW51LmgKKyAqIEBicmllZiAgIERl
c2NyaWJlcyB0aGUgRXdrIENvbnRleHQgTWVudSBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfY29u
dGV4dF9tZW51X2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfbWVudV9oCisKKyNpbmNsdWRlICJld2tf
Y29udGV4dF9tZW51X2l0ZW0uaCIKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVz
cGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9y
IEV3a19Db250ZXh0X01lbnUgKi8KK3R5cGVkZWYgc3RydWN0IEV3a0NvbnRleHRNZW51IEV3a19D
b250ZXh0X01lbnU7CisKKy8qKgorICogQXBwZW5kcyBhIG5ldyBpdGVtIG9mIHRoZSBjb250ZXh0
IG1lbnUuCisgKgorICogQHBhcmFtIHR5cGUgc3BlY2lmaWVzIGEgdHlwZSBvZiB0aGUgaXRlbQor
ICogQHBhcmFtIGFjdGlvbiBzcGVjaWZpZXMgYSBhY3Rpb24gb2YgdGhlIGl0ZW0KKyAqIEBwYXJh
bSB0aXRsZSBzcGVjaWZpZXMgYSB0aXRsZSBvZiB0aGUgaXRlbQorICogQHBhcmFtIGNoZWNrZWQg
QGMgRUlOQV9UUlVFIGlmIHRoZSBpdGVtIHNob3VsZCBiZSB0b2dnbGVkIG9yIEBjIEVJTkFfRkFM
U0UgaWYgbm90CisgKiBAcGFyYW0gZW5hYmxlZCBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBp
dGVtIG9yIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQorICogQHBhcmFtIHBhcmVudF9tZW51IHNw
ZWNpZmllcyBhIHBhcmVudCBtZW51IG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gc3VibWVudSBzcGVj
aWZpZXMgYSBzdWJtZW51IG9mIHRoZSBpdGVtCisgKiBAcmV0dXJuIHRoZSBwb2ludGVyIHRvIHRo
ZSBuZXcgaXRlbSBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQorICovCitFQVBJIEV3
a19Db250ZXh0X01lbnVfSXRlbSAqZXdrX2NvbnRleHRfbWVudV9pdGVtX2FwcGVuZChFd2tfQ29u
dGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFj
dGlvbiwgY29uc3QgY2hhciAqdGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5h
YmxlZCwgRXdrX0NvbnRleHRfTWVudSAqcGFyZW50X21lbnUsIEV3a19Db250ZXh0X01lbnUgKnN1
Yl9tZW51KTsKKworLyoqCisgKiBSZW1vdmVzIHRoZSBpdGVtIG9mIHRoZSBjb250ZXh0IG1lbnUu
CisgKgorICogQHBhcmFtIG1lbnUgdGhlIGNvbnRleHQgbWVudSAKKyAqIEBwYXJhbSBpdGVtIHRo
ZSBpdGVtIHRvIHJlbW92ZQorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMg
RUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21l
bnVfaXRlbV9yZW1vdmUoRXdrX0NvbnRleHRfTWVudSAqbWVudSwgRXdrX0NvbnRleHRfTWVudV9J
dGVtICppdGVtKTsKKworLyoqCisgKiBIaWRlcyB0aGUgY29udGV4dCBtZW51LgorICoKKyAqIEBw
YXJhbSBtZW51IHRoZSBjb250ZXh0IG1lbnUgdG8gaGlkZQorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRWluYV9C
b29sIGV3a19jb250ZXh0X21lbnVfaGlkZShFd2tfQ29udGV4dF9NZW51ICptZW51KTsKKworLyoq
CisgKiBHZXRzIHRoZSBsaXN0IG9mIGl0ZW1zLgorICoKKyAqIEBwYXJhbSBvIHRoZSBjb250ZXh0
IG1lbnUgdG8gZ2V0IGxpc3Qgb2YgdGhlIGl0ZW1zCisgKiBAcmV0dXJuIHRoZSBsaXN0IG9mIHRo
ZSBpdGVtcyBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQorICovCitFQVBJIGNvbnN0
IEVpbmFfTGlzdCAqZXdrX2NvbnRleHRfbWVudV9pdGVtc19nZXQoY29uc3QgRXdrX0NvbnRleHRf
TWVudSAqbyk7CisKKy8qKgorICogU2VsZWN0cyB0aGUgaXRlbSBmcm9tIHRoZSBjb250ZXh0IG1l
bnUuCisgKgorICogQHBhcmFtIG1lbnUgdGhlIGNvbnRleHQgbWVudQorICogQHBhcmFtIGl0ZW0g
dGhlIGl0ZW0gaXMgc2VsZWN0ZWQKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mg
b3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250
ZXh0X21lbnVfaXRlbV9zZWxlY3QoRXdrX0NvbnRleHRfTWVudSAqbWVudSwgRXdrX0NvbnRleHRf
TWVudV9JdGVtICppdGVtKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8qIGV3a19jb250ZXh0X21lbnVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWVjYWZmMDM3ODRhMzM1ODhiOWM3YzNkOWY3YmNhMmFjODVhOTBlZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVf
aXRlbS5jcHAKQEAgLTAsMCArMSwyNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRl
bS5oIgorCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVtX3ByaXZhdGUuaCIKKyNpbmNs
dWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitFd2tDb250
ZXh0TWVudUl0ZW06OkV3a0NvbnRleHRNZW51SXRlbShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1E
YXRhJiBpdGVtKQorICAgIDogbV90eXBlKHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRl
bV9UeXBlPihpdGVtLnR5cGUoKSkpCisgICAgLCBtX2FjdGlvbihzdGF0aWNfY2FzdDxFd2tfQ29u
dGV4dF9NZW51X0l0ZW1fQWN0aW9uPihpdGVtLmFjdGlvbigpKSkKKyAgICAsIG1fdGl0bGUoaXRl
bS50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpCisgICAgLCBtX2lzQ2hlY2tlZChpdGVtLmNoZWNrZWQo
KSkKKyAgICAsIG1faXNFbmFibGVkKGl0ZW0uZW5hYmxlZCgpKQorICAgICwgbV9wYXJlbnRNZW51
KDApCisgICAgLCBtX3N1Yk1lbnUoMCkKK3sKK30KKworRXdrQ29udGV4dE1lbnVJdGVtOjpFd2tD
b250ZXh0TWVudUl0ZW0oRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSwgRXdrX0NvbnRl
eHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wg
Y2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQsIEV3a19Db250ZXh0X01lbnUqIHBhcmVudE1lbnUs
IEV3a19Db250ZXh0X01lbnUqIHN1Yk1lbnUpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1f
YWN0aW9uKGFjdGlvbikKKyAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgLCBtX2lzQ2hlY2tlZChj
aGVja2VkKQorICAgICwgbV9pc0VuYWJsZWQoZW5hYmxlZCkKKyAgICAsIG1fcGFyZW50TWVudShw
YXJlbnRNZW51KQorICAgICwgbV9zdWJNZW51KHN1Yk1lbnUpCit7Cit9CisKK0V3a19Db250ZXh0
X01lbnVfSXRlbV9UeXBlIEV3a0NvbnRleHRNZW51SXRlbTo6dHlwZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fdHlwZTsKK30KKwordm9pZCBFd2tDb250ZXh0TWVudUl0ZW06OnNldFR5cGUoRXdr
X0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSkKK3sKKyAgICBtX3R5cGUgPSB0eXBlOworfQor
CitFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIEV3a0NvbnRleHRNZW51SXRlbTo6YWN0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hY3Rpb247Cit9CisKK3ZvaWQgRXdrQ29udGV4dE1l
bnVJdGVtOjpzZXRBY3Rpb24oRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24pCit7
CisgICAgbV9hY3Rpb24gPSBhY3Rpb247Cit9CisKK2NvbnN0IGNoYXIqIEV3a0NvbnRleHRNZW51
SXRlbTo6dGl0bGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3RpdGxlOworfQorCit2b2lkIEV3
a0NvbnRleHRNZW51SXRlbTo6c2V0VGl0bGUoY29uc3QgY2hhciogdGl0bGUpCit7CisgICAgbV90
aXRsZSA9IHRpdGxlOworfQorCitib29sIEV3a0NvbnRleHRNZW51SXRlbTo6Y2hlY2tlZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1faXNDaGVja2VkOworfQorCit2b2lkIEV3a0NvbnRleHRNZW51
SXRlbTo6c2V0Q2hlY2tlZChib29sIGNoZWNrZWQpCit7CisgICAgbV9pc0NoZWNrZWQgPSBjaGVj
a2VkOworfQorCitib29sIEV3a0NvbnRleHRNZW51SXRlbTo6ZW5hYmxlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1faXNFbmFibGVkOworfQorCit2b2lkIEV3a0NvbnRleHRNZW51SXRlbTo6c2V0
RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9pc0VuYWJsZWQgPSBlbmFibGVkOworfQor
CitFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9n
ZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfQUNUSU9OX1RZUEUpOworCisgICAgcmV0dXJu
IGl0ZW0tPnR5cGUoKTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBl
X3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEV3a19Db250ZXh0X01lbnVfSXRlbV9U
eXBlIHR5cGUpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZh
bHNlKTsKKworICAgIGl0ZW0tPnNldFR5cGUodHlwZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0
aW9uX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
Tk9fQUNUSU9OKTsKKworICAgIHJldHVybiBpdGVtLT5hY3Rpb24oKTsKK30KKworRWluYV9Cb29s
IGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSog
aXRlbSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24pCit7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKKworICAgIGl0ZW0tPnNldEFj
dGlvbihhY3Rpb24pOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19j
b250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBp
dGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCAwKTsKKwor
ICAgIHJldHVybiBpdGVtLT50aXRsZSgpOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX3RpdGxlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIGNvbnN0IGNoYXIq
IHRpdGxlKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxz
ZSk7CisKKyAgICBpdGVtLT5zZXRUaXRsZSh0aXRsZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldChjb25zdCBFd2tf
Q29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGl0ZW0sIGZhbHNlKTsKKworICAgIHJldHVybiBpdGVtLT5jaGVja2VkKCk7Cit9CisK
K0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9zZXQoRXdrX0NvbnRleHRf
TWVudV9JdGVtKiBpdGVtLCBFaW5hX0Jvb2wgY2hlY2tlZCkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworCisgICAgaXRlbS0+c2V0Q2hlY2tlZChj
aGVja2VkKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRf
bWVudV9pdGVtX2VuYWJsZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkK
K3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworICAg
IAorICAgIHJldHVybiBpdGVtLT5lbmFibGVkKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4
dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBFaW5h
X0Jvb2wgZW5hYmxlZCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRl
bSwgZmFsc2UpOworCisgICAgaXRlbS0+c2V0RW5hYmxlZChlbmFibGVkKTsKKworICAgIHJldHVy
biB0cnVlOworfQorCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfTk9fQUNUSU9OLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlv
bik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfT1BFTl9MSU5LX0lOX05FV19XSU5ET1csIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09w
ZW5MaW5rSW5OZXdXaW5kb3cpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX0RPV05MT0FEX0xJTktfVE9fRElTSywgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0xJTktfVE9fQ0xJUEJPQVJELCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0lNQUdF
X0lOX05FV19XSU5ET1csIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3
V2luZG93KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19ET1dOTE9BRF9JTUFHRV9UT19ESVNLLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdEb3dubG9hZEltYWdlVG9EaXNrKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1RPX0NMSVBCT0FSRCwgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfSU1BR0VfVVJMX1RP
X0NMSVBCT0FSRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlw
Ym9hcmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX09QRU5fRlJBTUVfSU5fTkVXX1dJTkRPVywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnT3BlbkZyYW1lSW5OZXdXaW5kb3cpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFksIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z0NvcHkpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0dPX0JBQ0ssIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0dvQmFjayk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fRk9S
V0FSRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdTdG9wKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19SRUxPQUQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1JlbG9hZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfQ1VULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDdXQpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BBU1RFLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQYXN0ZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0VMRUNUX0FMTCwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVMTElOR19HVUVTUywgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnU3BlbGxpbmdHdWVzcyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fR1VFU1NFU19GT1VORCwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lHTk9SRV9TUEVMTElORywgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0xFQVJOX1NQRUxMSU5HLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PVEhFUiwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnT3RoZXIpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1NFQVJDSF9JTl9TUE9UTElHSFQsIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUFSQ0hfV0VCLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdTZWFyY2hXZWIpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0xPT0tfVVBfSU5fRElDVElPTkFSWSwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5KTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX1dJVEhfREVGQVVMVF9BUFBM
SUNBVElPTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbldpdGhEZWZhdWx0QXBwbGlj
YXRpb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fUERGQUNUVUFMX1NJWkUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERkFjdHVhbFNpemUp
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERG
Wk9PTV9JTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGWm9vbUluKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlpPT01fT1VULCBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1QREZab29tT3V0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkFVVE9fU0laRSwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtUERGQXV0b1NpemUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fUERGU0lOR0xFX1BBR0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVBERlNpbmdsZVBhZ2UpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVY
VF9NRU5VX0lURU1fUERGRkFDSU5HX1BBR0VTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZG
YWNpbmdQYWdlcyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9QREZDT05USU5VT1VTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZDb250aW51
b3VzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1BERk5FWFRfUEFHRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGTmV4dFBhZ2UpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGUFJFVklP
VVNfUEFHRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGUHJldmlvdXNQYWdlKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJ
TkssIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVfR1JBTU1BUiwg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcik7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfTUVOVSwg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX1NQRUxMSU5HX1BB
TkVMLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbCk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tf
U1BFTExJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNL
X1NQRUxMSU5HX1dISUxFX1RZUElORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tT
cGVsbGluZ1doaWxlVHlwaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19HUkFNTUFSX1dJVEhfU1BFTExJTkcsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZyk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRk9OVF9NRU5VLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19GT05UUywgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19CT0xELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdCb2xkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19JVEFMSUMsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYyk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVU5E
RVJMSU5FLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09VVExJTkUsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ091dGxpbmUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUWUxFUywgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnU3R5bGVzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0NPTE9SUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnU2hvd0NvbG9ycyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfU1BFRUNIX01FTlUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1Nw
ZWVjaE1lbnUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX1NUQVJUX1NQRUFLSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdGFy
dFNwZWFraW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19TVE9QX1NQRUFLSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdG9w
U3BlYWtpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX1dSSVRJTkdfRElSRUNUSU9OX01FTlUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19ERUZBVUxUX0RJUkVDVElPTiwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTEVGVF9UT19SSUdIVCwgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1JJR0hUX1RPX0xFRlQsIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QREZTSU5HTEVfUEFHRV9TQ1JPTExJTkcsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmcpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERkZBQ0lO
R19QQUdFU19TQ1JPTExJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1Bh
Z2VzU2Nyb2xsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19JTlNQRUNUX0VMRU1FTlQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z0luc3BlY3RFbGVtZW50KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fREVGQVVMVCwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9O
X0xFRlRfVE9fUklHSFQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25M
ZWZ0VG9SaWdodCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVGVCwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0KTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX09QRU5fTUVESUFfSU5fTkVXX1dJTkRP
VywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3Blbk1lZGlhSW5OZXdXaW5kb3cpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlf
TUVESUFfTElOS19UT19DTElQQk9BUkQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlN
ZWRpYUxpbmtUb0NsaXBib2FyZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfVE9HR0xFX01FRElBX0NPTlRST0xTLCBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUNvbnRyb2xzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFfTE9PUCwgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFMb29wKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19FTlRFUl9WSURFT19GVUxM
U0NSRUVOLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdFbnRlclZpZGVvRnVsbHNjcmVlbik7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
TUVESUFfUExBWV9QQVVTRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5UGF1
c2UpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX01FRElBX01VVEUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0NV
U1RPTV9UQUcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWcpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fQ1VTVE9NX1RBR19O
T19BQ1RJT04sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbUN1c3RvbVRhZ05vQWN0aW9uKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0xBU1RfQ1VT
VE9NX1RBRywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtTGFzdEN1c3RvbVRhZyk7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0FQUExJQ0FU
SU9OX1RBRywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21l
bnVfaXRlbS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
bWVudV9pdGVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk2ZWFkZTJmODZkYWE2NmNjOTIyZDRjOTZkMTg1YmNk
ODRmN2FjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5oCkBAIC0wLDAgKzEsMjQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX2NvbnRleHRfbWVu
dV9pdGVtLmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIENvbnRleHQgTWVudSBJdGVt
IEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19jb250ZXh0X21lbnVfaXRlbV9oCisjZGVmaW5lIGV3
a19jb250ZXh0X21lbnVfaXRlbV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUg
Zm9yIEV3a19Qb3B1cF9NZW51X0l0ZW0gKi8KK3R5cGVkZWYgc3RydWN0IEV3a0NvbnRleHRNZW51
SXRlbSBFd2tfQ29udGV4dF9NZW51X0l0ZW07CisKKy8qKgorICogXGVudW0gICAgX0V3a19Db250
ZXh0X01lbnVfSXRlbV9UeXBlCisgKiBAYnJpZWYgICBEZWZpbmVzIHRoZSB0eXBlcyBvZiB0aGUg
aXRlbXMgZm9yIHRoZSBjb250ZXh0IG1lbnUuCisgKiBAaW5mbyAgICBLZWVwIHRoaXMgaW4gc3lu
YyB3aXRoIENvbnRleHRNZW51SXRlbS5oCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgRVdLX0FD
VElPTl9UWVBFLAorICAgIEVXS19DSEVDS0FCTEVfQUNUSU9OX1RZUEUsCisgICAgRVdLX1NFUEFS
QVRPUl9UWVBFLAorICAgIEVXS19TVUJNRU5VX1RZUEUKK30gRXdrX0NvbnRleHRfTWVudV9JdGVt
X1R5cGU7CisKKy8qKgorICogXGVudW0gICAgX0V3a19Db250ZXh0X01lbnVfQWN0aW9uCisgKiBA
YnJpZWYgICBQcm92aWRlcyB0aGUgYWN0aW9ucyBvZiBpdGVtcyBmb3IgdGhlIGNvbnRleHQgbWVu
dS4KKyAqIEBpbmZvICAgIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggQ29udGV4dE1lbnVJdGVtLmgK
KyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05PX0FD
VElPTiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fTElOS19JTl9ORVdfV0lO
RE9XLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRE9XTkxPQURfTElOS19UT19ESVNL
LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9MSU5LX1RPX0NMSVBCT0FSRCwK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fSU1BR0VfSU5fTkVXX1dJTkRPVywK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RPV05MT0FEX0lNQUdFX1RPX0RJU0ssCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1RPX0NMSVBCT0FSRCwKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfSU1BR0VfVVJMX1RPX0NMSVBCT0FSRCwK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fRlJBTUVfSU5fTkVXX1dJTkRPVywK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFksCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19HT19CQUNLLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fRk9S
V0FSRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUT1AsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19SRUxPQUQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19D
VVQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QQVNURSwKKyAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX1NFTEVDVF9BTEwsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19TUEVMTElOR19HVUVTUywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05PX0dVRVNT
RVNfRk9VTkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVfU1BFTExJTkcs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUFSTl9TUEVMTElORywKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX09USEVSLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfU0VBUkNIX0lOX1NQT1RMSUdIVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NF
QVJDSF9XRUIsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MT09LX1VQX0lOX0RJQ1RJ
T05BUlksCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX1dJVEhfREVGQVVMVF9B
UFBMSUNBVElPTiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQUNUVUFMX1NJWkUsCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlpPT01fSU4sCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1BERlpPT01fT1VULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZBVVRPX1NJ
WkUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlNJTkdMRV9QQUdFLAorICAgIEVXS19D
T05URVhUX01FTlVfSVRFTV9QREZGQUNJTkdfUEFHRVMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1BERkNPTlRJTlVPVVMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERk5FWFRfUEFH
RSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGUFJFVklPVVNfUEFHRSwKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fTElOSyA9IDIwMDAsCisgICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19JR05PUkVfR1JBTU1BUiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX1NQRUxMSU5HX01FTlUsIC8qKjwgc3BlbGxpbmcgb3Igc3BlbGxpbmcvZ3JhbW1hciBzdWIt
bWVudSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19TUEVMTElOR19QQU5F
TCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX1NQRUxMSU5HLAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tfU1BFTExJTkdfV0hJTEVfVFlQSU5HLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tfR1JBTU1BUl9XSVRIX1NQRUxMSU5HLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRk9OVF9NRU5VLCAvKio8IGZvbnQgc3ViLW1l
bnUgKi8KKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfRk9OVFMsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19CT0xELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfSVRBTElDLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVU5ERVJMSU5FLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1VUTElORSwKKyAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX1NUWUxFUywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfQ09M
T1JTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFRUNIX01FTlUsIC8qKjwgc3Bl
ZWNoIHN1Yi1tZW51ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVEFSVF9TUEVB
S0lORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUT1BfU1BFQUtJTkcsCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19XUklUSU5HX0RJUkVDVElPTl9NRU5VLCAvKio8IHdy
aXRpbmcgZGlyZWN0aW9uIHN1Yi1tZW51ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19ERUZBVUxUX0RJUkVDVElPTiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0xFRlRf
VE9fUklHSFQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19SSUdIVF9UT19MRUZULAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUERGU0lOR0xFX1BBR0VfU0NST0xMSU5HLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUERGRkFDSU5HX1BBR0VTX1NDUk9MTElORywK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lOU1BFQ1RfRUxFTUVOVCwKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX01FTlUsIC8qKjwgdGV4dCBkaXJl
Y3Rpb24gc3ViLW1lbnUgKi8KKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElS
RUNUSU9OX0RFRkFVTFQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVD
VElPTl9MRUZUX1RPX1JJR0hULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9E
SVJFQ1RJT05fUklHSFRfVE9fTEVGVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fT1BFTl9N
RURJQV9JTl9ORVdfV0lORE9XLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9N
RURJQV9MSU5LX1RPX0NMSVBCT0FSRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RP
R0dMRV9NRURJQV9DT05UUk9MUywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dM
RV9NRURJQV9MT09QLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRU5URVJfVklERU9f
RlVMTFNDUkVFTiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX01FRElBX1BMQVlfUEFV
U0UsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19NRURJQV9NVVRFLAorICAgIEVXS19D
T05URVhUX01FTlVfSVRFTV9CQVNFX0NVU1RPTV9UQUcgPSA1MDAwLAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9DVVNUT01fVEFHX05PX0FDVElPTiA9IDU5OTgsCisgICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX0xBU1RfQ1VTVE9NX1RBRyA9IDU5OTksCisgICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX0JBU0VfQVBQTElDQVRJT05fVEFHID0gMTAwMDAKK30gRXdrX0NvbnRleHRfTWVudV9JdGVt
X0FjdGlvbjsKKworLyoqCisgKiBHZXRzIHR5cGUgb2YgdGhlIGl0ZW0uCisgKgorICogQHBhcmFt
IG8gdGhlIGl0ZW0gdG8gZ2V0IHRoZSB0eXBlCisgKiBAcmV0dXJuIHR5cGUgb2YgdGhlIGl0ZW0g
b24gc3VjY2VzcyBvciBAYyBFV0tfQUNUSU9OX1RZUEUgb24gZmFpbHVyZQorICoKKyAqIEBzZWUg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfc2V0CisgKi8KK0VBUEkgRXdrX0NvbnRleHRfTWVu
dV9JdGVtX1R5cGUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0KGNvbnN0IEV3a19Db250
ZXh0X01lbnVfSXRlbSAqbyk7CisKKy8qKgorICogU2V0cyB0aGUgdHlwZSBvZiBpdGVtLgorICoK
KyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIHNldCB0aGUgdHlwZQorICogQHBhcmFtIHR5cGUgYSBu
ZXcgdHlwZSBmb3IgdGhlIGl0ZW0gb2JqZWN0CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250
ZXh0X21lbnVfaXRlbV90eXBlX2dldAorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9t
ZW51X2l0ZW1fdHlwZV9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFd2tfQ29udGV4dF9N
ZW51X0l0ZW1fVHlwZSB0eXBlKTsKKworLyoqCisgKiBHZXRzIGFuIGFjdGlvbiBvZiB0aGUgaXRl
bS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBnZXQgdGhlIGFjdGlvbgorICogQHJldHVy
biBhbiBhY3Rpb24gb2YgdGhlIGl0ZW0gb24gc3VjY2VzcyBvciBAYyBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX05PX0FDVElPTiBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9t
ZW51X2l0ZW1fYWN0aW9uX3NldAorICovCitFQVBJIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rp
b24gZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVu
dV9JdGVtICpvKTsKKworLyoqCisgKiBTZXRzIGFuIGFjdGlvbiBvZiB0aGUgaXRlbS4KKyAqCisg
KiBAcGFyYW0gbyB0aGUgaXRlbSB0byBzZXQgdGhlIGFjdGlvbgorICogQHBhcmFtIGFjdGlvbiBh
IG5ldyBhY3Rpb24gZm9yIHRoZSBpdGVtIG9iamVjdAorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tf
Y29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldAorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29u
dGV4dF9tZW51X2l0ZW1fYWN0aW9uX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEV3a19D
b250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKTsKKworLyoqCisgKiBHZXRzIGEgdGl0bGUg
b2YgdGhlIGl0ZW0uCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gZ2V0IHRoZSB0aXRsZQor
ICogQHJldHVybiBhIHRpdGxlIG9mIHRoZSBpdGVtIG9uIHN1Y2Nlc3MsIG9yIEBjIE5VTEwgb24g
ZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldAorICov
CitFQVBJIGNvbnN0IGNoYXIgKmV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQoY29uc3Qg
RXdrX0NvbnRleHRfTWVudV9JdGVtICpvKTsKKworLyoqCisgKiBTZXRzIGEgdGl0bGUgb2YgdGhl
IGl0ZW0uCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gc2V0IHRoZSB0aXRsZQorICogQHBh
cmFtIHRpdGxlIGEgbmV3IHRpdGxlIGZvciB0aGUgaXRlbSBvYmplY3QKKyAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICoKKyAq
IEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldAorICovCitFQVBJIEVpbmFfQm9v
bCBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAq
bywgY29uc3QgY2hhciAqdGl0bGUpOworCisvKioKKyAqIFF1ZXJpZXMgaWYgdGhlIGl0ZW0gaXMg
dG9nZ2xlZC4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBxdWVyeSBpZiB0aGUgaXRlbSBp
cyB0b2dnbGVkCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgaXRlbSBpcyB0b2dnbGVk
IG9yIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFaW5hX0Jv
b2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01l
bnVfSXRlbSAqbyk7CisKKy8qKgorICogU2V0cyBpZiB0aGUgaXRlbSBzaG91bGQgYmUgdG9nZ2xl
ZC4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBiZSB0b2dnbGVkCisgKiBAcGFyYW0gY2hl
Y2tlZCBAYyBFSU5BX1RSVUUgaWYgdGhlIGl0ZW0gc2hvdWxkIGJlIHRvZ2dsZWQgb3IgQGMgRUlO
QV9GQUxTRSBpZiBub3QKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMg
RUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21l
bnVfaXRlbV9jaGVja2VkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEVpbmFfQm9vbCBj
aGVja2VkKTsKKworLyoqCisgKiBHZXRzIGlmIHRoZSBpdGVtIGlzIGVuYWJsZWQuCisgKgorICog
QHBhcmFtIG8gdGhlIGl0ZW0gdG8gZ2V0IGVuYWJsZWQgc3RhdGUKKyAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIGlmIGl0J3MgZW5hYmxlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVy
ZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfc2V0CisgKi8KK0VB
UEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX2dldChjb25zdCBFd2tf
Q29udGV4dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIEVuYWJsZXMvZGlzYWJsZXMgdGhlIGl0
ZW0uCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gZW5hYmxlL2Rpc2FibGUKKyAqIEBwYXJh
bSBlbmFibGVkIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhlIGl0ZW0gb3IgQGMgRUlOQV9GQUxT
RSB0byBkaXNhYmxlCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBvciBAYyBF
SU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9l
bmFibGVkX2dldAorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5h
YmxlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFaW5hX0Jvb2wgZW5hYmxlZCk7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBld2tfY29udGV4dF9t
ZW51X2l0ZW1faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmJmOTEwMGVhODNmMTFmM2MyN2E2Yzc2ZjcyZDYzNmQzNWU5NDg3MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRl
bV9wcml2YXRlLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIGV3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlX2gKKyNkZWZpbmUg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX3ByaXZhdGVfaAorCisjaW5jbHVkZSAiV0tFaW5hU2hhcmVk
U3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgorI2luY2x1ZGUg
ImV3a19jb250ZXh0X21lbnUuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0ZW0uaCIK
KyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCisvKioKKyAqIFxzdHJ1Y3QgIEV3a19Db250
ZXh0X01lbnVfSXRlbQorICogQGJyaWVmICAgQ29udGFpbnMgdGhlIGNvbnRleHQgbWVudSBpdGVt
IGRhdGEuCisgKi8KK2NsYXNzIEV3a0NvbnRleHRNZW51SXRlbSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8RXdrQ29udGV4dE1lbnVJdGVtPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBFd2tfQ29udGV4dF9NZW51X0l0ZW0oaXRlbSkpOworICAgIH0KKworICAgIHN0YXRp
YyBQYXNzT3duUHRyPEV3a0NvbnRleHRNZW51SXRlbT4gY3JlYXRlKEV3a19Db250ZXh0X01lbnVf
SXRlbV9UeXBlIHR5cGUsIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBjb25z
dCBjaGFyKiB0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkLCBFd2tD
b250ZXh0TWVudSogcGFyZW50TWVudSwgRXdrQ29udGV4dE1lbnUqIHN1Yk1lbnUpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV3a19Db250ZXh0X01lbnVfSXRlbSh0eXBlLCBh
Y3Rpb24sIHRpdGxlLCBjaGVja2VkLCBlbmFibGVkLCBwYXJlbnRNZW51LCBzdWJNZW51KSk7Cisg
ICAgfQorCisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24oKSBjb25zdDsK
KyAgICB2b2lkIHNldEFjdGlvbihFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uKTsKKworICAg
IGNvbnN0IGNoYXIqIHRpdGxlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBjaGFy
Kik7CisKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRUeXBlKEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlKTsKKworICAgIGJvb2wgY2hl
Y2tlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0Q2hlY2tlZChib29sKTsKKworICAgIGJvb2wgZW5h
YmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBFd2tDb250ZXh0TWVudUl0ZW0oY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhJik7CisgICAgRXdrQ29udGV4dE1lbnVJdGVtKEV3a19Db250ZXh0X01lbnVfSXRl
bV9UeXBlIHR5cGUsIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBjb25zdCBj
aGFyKiB0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkLCBFd2tDb250
ZXh0TWVudSogcGFyZW50TWVudSwgRXdrQ29udGV4dE1lbnUqIHN1Yk1lbnUpOworCisgICAgRXdr
X0NvbnRleHRfTWVudV9JdGVtX1R5cGUgbV90eXBlOworICAgIEV3a19Db250ZXh0X01lbnVfSXRl
bV9BY3Rpb24gbV9hY3Rpb247CisKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgbV90aXRsZTsKKyAg
ICAKKyAgICBib29sIG1faXNDaGVja2VkOworICAgIGJvb2wgbV9pc0VuYWJsZWQ7CisKKyAgICBF
d2tfQ29udGV4dF9NZW51KiBtX3BhcmVudE1lbnU7CisgICAgRXdrX0NvbnRleHRfTWVudSogbV9z
dWJNZW51OworfTsKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X21lbnVfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHRfbWVudV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc2OWEwYzZkY2U2NDNjZTc2ZjQ5ZjE0
NDYxZTc2ZTMwNzZlY2ZkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9t
ZW51X3ByaXZhdGVfaAorI2RlZmluZSBld2tfY29udGV4dF9tZW51X3ByaXZhdGVfaAorCisjaW5j
bHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21l
bnVfaXRlbS5oIgorI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhOworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eUVmbDsKK30K
KworY2xhc3MgRXdrVmlld0ltcGw7CisKK2NsYXNzIEV3a0NvbnRleHRNZW51IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc093blB0cjxFd2tDb250ZXh0TWVudT4gY3JlYXRlKEV3a1ZpZXdJbXBs
KiB2aWV3SW1wbCwgV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZsKiBjb250ZXh0TWVudVBy
b3h5LCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV3a0NvbnRleHRNZW51KHZpZXdJ
bXBsLCBjb250ZXh0TWVudVByb3h5LCBpdGVtcykpOworICAgIH0KKworICAgIH5Fd2tDb250ZXh0
TWVudSgpOworCisgICAgdm9pZCBoaWRlKCk7CisgICAgdm9pZCBhcHBlbmRJdGVtKEV3a0NvbnRl
eHRNZW51SXRlbSopOworICAgIHZvaWQgcmVtb3ZlSXRlbShFd2tDb250ZXh0TWVudUl0ZW0qKTsK
KworICAgIGNvbnN0IEVpbmFfTGlzdCogaXRlbXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRN
ZW51SXRlbXM7IH0KKyAgICB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYktp
dDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSk7CisKK3ByaXZhdGU6CisgICAgRXdrQ29u
dGV4dE1lbnUoRXdrVmlld0ltcGwqIHZpZXdJbXBsLCBXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlFZmwqLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRl
bXMpOworCisgICAgRXdrVmlld0ltcGwqIG1fdmlld0ltcGw7CisgICAgV2ViS2l0OjpXZWJDb250
ZXh0TWVudVByb3h5RWZsKiBtX2NvbnRleHRNZW51UHJveHk7CisgICAgRWluYV9MaXN0KiBtX2Nv
bnRleHRNZW51SXRlbXM7Cit9OworCisjZW5kaWYgLy8gZXdrX2NvbnRleHRfbWVudV9wcml2YXRl
X2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXgg
NzUwMTYxMTc0YjlhNDU3ZmYyZWRlOTg4NTE4YjBiMzQ2NzcyYjU3Zi4uMzdmNDI1M2MxYzhhODVl
YzFjM2YyZDFlMTJlNzIwZDgwNTg3MjVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oCkBAIC04NCw2ICs4NCw3IEBACiAjaW5jbHVkZSAiZXdrX2JhY2tf
Zm9yd2FyZF9saXN0LmgiCiAjaW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlci5oIgogI2luY2x1ZGUg
ImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudS5oIgogI2luY2x1ZGUg
ImV3a19kb3dubG9hZF9qb2IuaCIKICNpbmNsdWRlICJld2tfZXJyb3IuaCIKICNpbmNsdWRlICJl
d2tfaW50ZW50LmgiCkBAIC0xMTQsNiArMTE1LDkgQEAgc3RydWN0IEV3a19WaWV3X1NtYXJ0X0Ns
YXNzIHsKICAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQgJ2RhdGEnIGlzIGZy
ZWUgdG8gYmUgY2hhbmdlZC4gKi8KICAgICB1bnNpZ25lZCBsb25nIHZlcnNpb247CiAKKyAgICBF
aW5hX0Jvb2wgKCpjb250ZXh0X21lbnVfc2hvdykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV2
YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFd2tfQ29udGV4dF9NZW51ICptZW51KTsKKyAgICBF
aW5hX0Jvb2wgKCpjb250ZXh0X21lbnVfaGlkZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwor
CiAgICAgRWluYV9Cb29sICgqcG9wdXBfbWVudV9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpz
ZCwgRWluYV9SZWN0YW5nbGUgcmVjdCwgRXdrX1RleHRfRGlyZWN0aW9uIHRleHRfZGlyZWN0aW9u
LCBkb3VibGUgcGFnZV9zY2FsZV9mYWN0b3IsIEV3a19Qb3B1cF9NZW51ICptZW51KTsKICAgICBF
aW5hX0Jvb2wgKCpwb3B1cF9tZW51X2hpZGUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKIApA
QCAtMTY5LDcgKzE3Myw3IEBAIHN0cnVjdCBFd2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBAc2Vl
IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgogICogQHNlZSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NM
QVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NN
QVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lO
SVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NM
QVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CiAKIC8qKgogICogSW5pdGlhbGl6ZXIgdG8gemVybyBh
IHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0X21lbnUu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Nv
bnRleHRfbWVudS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmRhOTRjMjVhYjU5OGY4NDlhMjQ0NTZlNjg4N2Jl
ZWExNmNjZmI4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0X21lbnUuY3BwCkBAIC0wLDAgKzEsODkgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAg
ICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3
IFVTQQorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RCYXNlLmgiCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgPEVXZWJLaXQyLmg+CisjaW5jbHVkZSA8RWNvcmUu
aD4KKwordXNpbmcgbmFtZXNwYWNlIEVXSzJVbml0VGVzdDsKKworZXh0ZXJuIEVXSzJVbml0VGVz
dEVudmlyb25tZW50KiBlbnZpcm9ubWVudDsKKworc3RhdGljIGlubGluZSB2b2lkIGNoZWNrQmFz
aWNDb250ZXh0TWVudUl0ZW0oRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBFd2tfQ29udGV4
dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlv
biwgY29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxl
ZCkKK3sKKyAgICBBU1NFUlRfVFJVRShpdGVtKTsKKworICAgIEVYUEVDVF9FUSh0eXBlLCBld2tf
Y29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQoaXRlbSkpOworICAgIEVYUEVDVF9FUShhY3Rpb24s
IGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGl0ZW0pKTsKKyAgICBFWFBFQ1RfU1RS
RVEodGl0bGUsIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQoaXRlbSkpOworICAgIEVY
UEVDVF9FUShjaGVja2VkLCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQoaXRlbSkp
OworICAgIEVYUEVDVF9FUShlbmFibGVkLCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9n
ZXQoaXRlbSkpOworfQorCitzdGF0aWMgRWluYV9Cb29sIHNob3dDb250ZXh0TWVudShFd2tfVmll
d19TbWFydF9EYXRhKiBzbWFydERhdGEsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFd2tf
Q29udGV4dF9NZW51KiBjb250ZXh0TWVudSkKK3sKKyAgICBjb25zdCBFaW5hX0xpc3QqIGxpc3Qg
PSBld2tfY29udGV4dF9tZW51X2l0ZW1zX2dldChjb250ZXh0TWVudSk7CisgICAgRVhQRUNUX0VR
KDQsIGVpbmFfbGlzdF9jb3VudChsaXN0KSk7CisKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0q
IGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW0qPihlaW5hX2xpc3RfbnRo
KGxpc3QsIDApKTsKKyAgICBjaGVja0Jhc2ljQ29udGV4dE1lbnVJdGVtKGl0ZW0sIEVXS19BQ1RJ
T05fVFlQRSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19HT19CQUNLLCAiR28gQmFjayIsIGZh
bHNlLCB0cnVlKTsKKworICAgIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0
ZW0qPihlaW5hX2xpc3RfbnRoKGxpc3QsIDEpKTsKKyAgICBjaGVja0Jhc2ljQ29udGV4dE1lbnVJ
dGVtKGl0ZW0sIEVXS19BQ1RJT05fVFlQRSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19HT19G
T1JXQVJELCAiR28gRm9yd2FyZCIsIGZhbHNlLCB0cnVlKTsKKyAgICBld2tfY29udGV4dF9tZW51
X2l0ZW1fZW5hYmxlZF9zZXQoaXRlbSwgZmFsc2UpOworICAgIEVYUEVDVF9GQUxTRShld2tfY29u
dGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQoaXRlbSkpOworCisgICAgaXRlbSA9IHN0YXRpY19j
YXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGVpbmFfbGlzdF9udGgobGlzdCwgMikpOworICAg
IGNoZWNrQmFzaWNDb250ZXh0TWVudUl0ZW0oaXRlbSwgRVdLX0FDVElPTl9UWVBFLCBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1NUT1AsICJTdG9wIiwgZmFsc2UsIHRydWUpOworICAgIGV3a19j
b250ZXh0X21lbnVfaXRlbV9jaGVja2VkX3NldChpdGVtLCB0cnVlKTsKKyAgICBFWFBFQ1RfVFJV
RShld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQoaXRlbSkpOworCisgICAgaXRlbSA9
IHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGVpbmFfbGlzdF9udGgobGlzdCwg
MykpOworICAgIGNoZWNrQmFzaWNDb250ZXh0TWVudUl0ZW0oaXRlbSwgRVdLX0FDVElPTl9UWVBF
LCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1JFTE9BRCwgIlJlbG9hZCIsIGZhbHNlLCB0cnVl
KTsKKyAgICBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KGl0ZW0sICJSZWZyZXNoIik7
CisgICAgRVhQRUNUX1NUUkVRKCJSZWZyZXNoIiwgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxl
X2dldChpdGVtKSk7CisKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIG5ld0l0ZW0gPSBld2tf
Y29udGV4dF9tZW51X2l0ZW1fYXBwZW5kKEVXS19BQ1RJT05fVFlQRSwgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19PVEhFUiwgIk5ldyBDdXN0b20gSXRlbSIsIGZhbHNlLCB0cnVlLCBjb250ZXh0
TWVudSwgMCk7CisgICAgbGlzdCA9IGV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnRleHRN
ZW51KTsKKyAgICBFWFBFQ1RfRVEoNSwgZWluYV9saXN0X2NvdW50KGxpc3QpKTsKKworICAgIGV3
a19jb250ZXh0X21lbnVfaXRlbV9yZW1vdmUoY29udGV4dE1lbnUsIG5ld0l0ZW0pOworICAgIGxp
c3QgPSBld2tfY29udGV4dF9tZW51X2l0ZW1zX2dldChjb250ZXh0TWVudSk7CisgICAgRVhQRUNU
X0VRKDQsIGVpbmFfbGlzdF9jb3VudChsaXN0KSk7CisKKyAgICBFWFBFQ1RfVFJVRShld2tfY29u
dGV4dF9tZW51X2l0ZW1fc2VsZWN0KGNvbnRleHRNZW51LCBpdGVtKSk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19jb250ZXh0X21lbnVfaXRl
bV9zZWxlY3QpCit7CisgICAgY29uc3QgY2hhciogaXRlbVNlbGVjdEhUTUwgPQorICAgICAgICAi
PGh0bWw+IgorICAgICAgICAiPGJvZHk+PGEgaHJlZj1odHRwOi8vd3d3Lmdvb2dsZS5jb20+VGVz
dCBMaW5rPC9hPjwvYm9keT4iCisgICAgICAgICI8L2JvZHk+PC9odG1sPiI7IAorCisgICAgZXdr
Vmlld0NsYXNzKCktPmNvbnRleHRfbWVudV9zaG93ID0gc2hvd0NvbnRleHRNZW51OworCisgICAg
ZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGl0ZW1TZWxlY3RIVE1MLCAiZmls
ZTovLy8iLCAwKTsKKyAgICBtb3VzZUNsaWNrKDIwLCAzMCwgLypSaWdodCovIDMpOworICAgIEFT
U0VSVF9UUlVFKHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2E4NjAyOGUwZGQ2NDMwNzE2MjczMWYxN2YzNWUyZjNmYTY4NTFkMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwu
Y3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBF
bGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50RWZsLmgiCisKKyNpbmNsdWRlICJF
d2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV0tB
cnJheS5oIgorI2luY2x1ZGUgIldLUGFnZS5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRl
bS5oIiAgIAorI2luY2x1ZGUgPEV2YXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
c3RhdGljIGlubGluZSBDb250ZXh0TWVudUNsaWVudEVmbCogdG9Db250ZXh0Q2xpZW50RWZsKGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRleHRN
ZW51Q2xpZW50RWZsKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworfQorCitDb250
ZXh0TWVudUNsaWVudEVmbDo6Q29udGV4dE1lbnVDbGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJ
bXBsKQorICAgIDogbV92aWV3SW1wbCh2aWV3SW1wbCkKK3sKKyAgICBXS1BhZ2VSZWYgcGFnZVJl
ZiA9IG1fdmlld0ltcGwtPndrUGFnZSgpOworICAgIEFTU0VSVChwYWdlUmVmKTsKKworICAgIFdL
UGFnZUNvbnRleHRNZW51Q2xpZW50IGNvbnRleHRNZW51Q2xpZW50OworICAgIG1lbXNldCgmY29u
dGV4dE1lbnVDbGllbnQsIDAsIHNpemVvZihXS1BhZ2VDb250ZXh0TWVudUNsaWVudCkpOworICAg
IGNvbnRleHRNZW51Q2xpZW50LnZlcnNpb24gPSBrV0tQYWdlQ29udGV4dE1lbnVDbGllbnRDdXJy
ZW50VmVyc2lvbjsKKyAgICBjb250ZXh0TWVudUNsaWVudC5jbGllbnRJbmZvID0gdGhpczsKKyAg
ICBjb250ZXh0TWVudUNsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCA9IDA7CisgICAgY29udGV4dE1lbnVDbGllbnQuY3VzdG9tQ29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQgPSAwOworICAgIGNvbnRleHRNZW51Q2xpZW50LmNvbnRleHRNZW51
RGlzbWlzc2VkID0gMDsKKyAgICBjb250ZXh0TWVudUNsaWVudC5nZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUgPSAwOworCisgICAgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KHBh
Z2VSZWYsICZjb250ZXh0TWVudUNsaWVudCk7Cit9CisKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRF
Zmw6OmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXS1BhZ2VSZWYsIFdLQXJyYXlSZWYs
IFdLQXJyYXlSZWYqLCBXS0hpdFRlc3RSZXN1bHRSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCop
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjllNGVkM2Nl
Y2NiZDMzN2Q4ODdjNWI1NDU0NTAxZGY3NWIxYWMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5oCkBAIC0wLDAgKzEs
NTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb250ZXh0TWVudUNsaWVudEVm
bF9oCisjZGVmaW5lIENvbnRleHRNZW51Q2xpZW50RWZsX2gKKworI2luY2x1ZGUgIldLUmV0YWlu
UHRyLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFz
ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworY2xhc3MgRXdrVmlld0ltcGw7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDb250ZXh0TWVudUNsaWVudEVmbCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q29udGV4dE1lbnVDbGllbnRFZmw+IGNyZWF0
ZShFd2tWaWV3SW1wbCogdmlld0ltcGwpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IENvbnRleHRNZW51Q2xpZW50RWZsKHZpZXdJbXBsKSk7CisgICAgfQorCisgICAgc3RhdGlj
IHZvaWQgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdLUGFnZVJlZiwgV0tBcnJheVJl
ZiBwcm9wb3NlZE1lbnUsIFdLQXJyYXlSZWYqIG5ld01lbnUsIFdLSGl0VGVzdFJlc3VsdFJlZiwg
V0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBDb250ZXh0TWVudUNsaWVudEVmbChFd2tWaWV3SW1wbCopOworCisgICAg
RXdrVmlld0ltcGwqIG1fdmlld0ltcGw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIENvbnRleHRNZW51Q2xpZW50RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAKaW5kZXggOTdhODVmNWNjZWZlYzczZGIzZjM0
NjlhYjQxMzNlMjMyYzFiMzRkMC4uMGNlODJhYWU0NmU0MDRmNWQyOTNkYWFjNjM0ZGIwMTkzNWIy
YzlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFz
ZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHlF
ZmwuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgpAQCAtMjIxLDEwICsyMjEsOSBA
QCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50QmFzZTo6Y3JlYXRlUG9w
dXBNZW51UHJveHkoV2ViUGFnZVByb3h5KgogICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eUVm
bDo6Y3JlYXRlKG1fdmlld0ltcGwsIHBhZ2UpOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvbnRleHRN
ZW51UHJveHk+IFBhZ2VDbGllbnRCYXNlOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQ
cm94eSopCitQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRCYXNlOjpj
cmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBXZWJDb250ZXh0TWVudVByb3h5
RWZsOjpjcmVhdGUobV92aWV3SW1wbCwgcGFnZSk7CiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29u
dGV4dE1lbnVQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNv
bnRleHRNZW51UHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjN2UwZWI4MTYzMzM1M2MxNjMzZDBj
ZWZiNTllZDU3ZjUyYzQ1YjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5RWZsLmgiCisK
KyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCisj
aW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb250ZXh0TWVudVByb3h5RWZsOjpX
ZWJDb250ZXh0TWVudVByb3h5RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViUGFnZVByb3h5
KiBwYWdlKQorICAgIDogbV92aWV3SW1wbCh2aWV3SW1wbCkKKyAgICAsIG1fcGFnZShwYWdlKQor
eworfQorCitXZWJDb250ZXh0TWVudVByb3h5RWZsOjp+V2ViQ29udGV4dE1lbnVQcm94eUVmbCgp
Cit7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6c2hvd0NvbnRleHRNZW51KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbURhdGE+JiBpdGVtcykKK3sKKyAgICBtX3ZpZXdJbXBsLT5zaG93Q29udGV4dE1lbnUo
dGhpcywgcG9zaXRpb24sIGl0ZW1zKTsKK30KKwordm9pZCBXZWJDb250ZXh0TWVudVByb3h5RWZs
OjpoaWRlQ29udGV4dE1lbnUoKQoreworICAgIG1fdmlld0ltcGwtPmhpZGVDb250ZXh0TWVudSgp
OworfQorCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlFZmw6OmNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCit7CisgICAgbV9wYWdlLT5j
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChpdGVtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTdiZTJhYjljZWI1ZGRjZjFjNDYyYjQ1NTM4YzMyOTNhMjIyOGY0ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5o
CkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29udGV4dE1lbnVQcm94eUVmbF9oCisjZGVm
aW5lIFdlYkNvbnRleHRNZW51UHJveHlFZmxfaAorCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
CisKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9D
b250ZXh0TWVudS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KKworY2xhc3MgRXdr
Vmlld0ltcGw7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb250ZXh0TWVudUl0
ZW1EYXRhOworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJDb250ZXh0TWVudVByb3h5
RWZsIDogcHVibGljIFdlYkNvbnRleHRNZW51UHJveHkgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHlFZmw+IGNyZWF0ZShFd2tWaWV3SW1wbCogdmll
d0ltcGwsIFdlYlBhZ2VQcm94eSogcGFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViQ29udGV4dE1lbnVQcm94eUVmbCh2aWV3SW1wbCwgcGFnZSkpOworICAgIH0KKwor
ICAgIH5XZWJDb250ZXh0TWVudVByb3h5RWZsKCk7CisKKyAgICB2b2lkIHNob3dDb250ZXh0TWVu
dShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0
ZW1EYXRhPiYpOworICAgIHZvaWQgaGlkZUNvbnRleHRNZW51KCk7CisKKyAgICB2b2lkIGNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmKTsKKworcHJp
dmF0ZToKKyAgICBXZWJDb250ZXh0TWVudVByb3h5RWZsKEV3a1ZpZXdJbXBsKiwgV2ViUGFnZVBy
b3h5Kik7CisKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKKyAgICBXZWJQYWdlUHJveHkq
IG1fcGFnZTsKK307CisKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKKyNlbmRpZiAvLyBXZWJDb250ZXh0TWVudVByb3h5RWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174935</attachid>
            <date>2012-11-19 03:10:57 -0800</date>
            <delta_ts>2012-11-19 03:21:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96200-20121119200847.patch</filename>
            <type>text/plain</type>
            <size>70264</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJhZjU5YjdmMWViZWY4
ODEzZWM4ZDRlMTA0OGVlMjEyNzE4MDQ3YS4uZjE3NGM0NGIyYjFjYmFkZjBhMTNiODRmMDNmNjIz
OTY4NzRlYmI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTE5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0sy
XSBTdXBwb3J0IENvbnRleHQgTWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICBFRkwg
cG9ydCBhbHNvIGRvZXNuJ3QgaGlkZSB1bmF2YWlsYWJsZSBtZW51cyBhcyBndGsgcG9ydC4KKwog
MjAxMi0xMS0xOCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgd2ViYXVkaW86IGNsZWFuLXVwLiBSZXBsYWNlIEF1ZGlvQ29udGV4dDo6bV9kb2N1bWVu
dCBtZW1iZXIgd2l0aCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDliOGJiZDU0MjM1NjUzZWUyZGU2MjkxYTJmZGVlOGI3
NTJhMjk3MWUuLmZjYmQ5NzA4YzI0ZGNlM2UyODVlMDNiMTg4YTYyMTdlODA5YzU4NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw5MiBAQAorMjAxMi0xMS0xOCAgR3l1eW91bmcgS2ltICA8Z3l1eW91
bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gU3VwcG9ydCBDb250ZXh0
IE1lbnUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2
MjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBzdXBwb3J0cyBXSzIgRUZMJ3MgY29udGV4dCBtZW51IGFzIFdLMSBpbXBsZW1lbnRh
dGlvbiBiZWNhdXNlIHdlIGNhbid0IHVzZSBlbGVtZW50YXJ5IGluIGluc2lkZSBXZWJLaXQuCisg
ICAgICAgIE9ubHkgYmFzaWMgZnVuY3Rpb25hbGl0aWVzIG9mIGNvbnRleHQgbWVudSBhcmUgc3Vw
cG9ydGVkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5jcHA6CisgICAgICAgIChFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwpOgorICAgICAg
ICAoRXdrVmlld0ltcGw6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6
aGlkZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcDogQWRkZWQuCisgICAgICAg
IChFd2tfQ29udGV4dF9NZW51OjpFd2tfQ29udGV4dF9NZW51KToKKyAgICAgICAgKEV3a19Db250
ZXh0X01lbnU6On5Fd2tfQ29udGV4dF9NZW51KToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnU6
OmhpZGUpOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudTo6YXBwZW5kSXRlbSk6CisgICAgICAg
IChld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVf
aXRlbV9mcmVlKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnU6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaGlkZSk6CisgICAgICAgIChld2tf
Y29udGV4dF9tZW51X2l0ZW1zX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1f
c2VsZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51Lmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRl
bS5jcHA6IEFkZGVkLgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjpFd2tfQ29udGV4
dF9NZW51X0l0ZW0pOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjp0eXBlKToKKyAg
ICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6c2V0VHlwZSk6CisgICAgICAgIChFd2tfQ29u
dGV4dF9NZW51X0l0ZW06OmFjdGlvbik6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06
OnNldEFjdGlvbik6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06OnRpdGxlKToKKyAg
ICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRlbTo6c2V0VGl0bGUpOgorICAgICAgICAoRXdrX0Nv
bnRleHRfTWVudV9JdGVtOjpjaGVja2VkKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnVfSXRl
bTo6c2V0Q2hlY2tlZCk6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51X0l0ZW06OmVuYWJsZWQp
OgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtOjpzZXRFbmFibGVkKToKKyAgICAgICAg
KGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9t
ZW51X2l0ZW1fdHlwZV9zZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlv
bl9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9zZXQpOgorICAg
ICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldCk6CisgICAgICAgIChld2tfY29u
dGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRl
bV9jaGVja2VkX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9z
ZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0KToKKyAgICAg
ICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmg6IEFkZGVkLgor
ICAgICAgICAoRXdrX0NvbnRleHRfTWVudV9JdGVtKToKKyAgICAgICAgKEV3a19Db250ZXh0X01l
bnVfSXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9tZW51X3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoRXdr
X0NvbnRleHRfTWVudSk6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51OjpjcmVhdGUpOgorICAg
ICAgICAoRXdrX0NvbnRleHRfTWVudTo6aXRlbXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX2NvbnRleHRfbWVudS5jcHA6IEFkZGVkLgorICAgICAgICAoY2hlY2tCYXNpY0NvbnRleHRN
ZW51SXRlbSk6CisgICAgICAgIChzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAoVEVTVF9GKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcDogQWRkZWQu
CisgICAgICAgICh0b0NvbnRleHRDbGllbnRFZmwpOgorICAgICAgICAoQ29udGV4dE1lbnVDbGll
bnRFZmw6OkNvbnRleHRNZW51Q2xpZW50RWZsKToKKyAgICAgICAgKENvbnRleHRNZW51Q2xpZW50
RWZsOjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoQ29udGV4dE1lbnVDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0
TWVudUNsaWVudEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGll
bnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRl
eHRNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94
eUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVQcm94eUVmbDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmw6On5XZWJDb250ZXh0TWVudVByb3h5RWZsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6c2hvd0NvbnRleHRNZW51
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6aGlkZUNvbnRleHRN
ZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQ
cm94eUVmbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb250ZXh0
TWVudVByb3h5RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6
Y3JlYXRlKToKKwogMjAxMi0xMS0xOCAgSmFlaHVuIExpbSAgPGxqYWVodW4ubGltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gUmVtb3ZlIHVuZGVyc2NvcmUgY2hhcmFjdGVycyBp
biBFd2sgY2xhc3MgbmFtZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKaW5kZXggNzk3OTcxZDBmNTZjOTUyNGUwMjQ0OGNmZGRjNGI5ZTVlZGZhMTY5
ZC4uNTY0MGRjNzY5N2U4MjM2Mzc2YzY1MzExMmZjMWI4MzAwZjRhOTYwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtODc2LDggKzg3Niw4
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgICAgICAg
ICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPmhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkpKSB7CiAjZW5kaWYKIAotICAgICAg
ICAgICAgICAgIC8vIEluIEdUSysgdW5hdmFpbGFibGUgaXRlbXMgYXJlIG5vdCBoaWRkZW4gYnV0
IGluc2Vuc2l0aXZlCi0jaWYgUExBVEZPUk0oR1RLKQorICAgICAgICAgICAgICAgIC8vIEluIEdU
SysgYW5kIEVGTCwgdW5hdmFpbGFibGUgaXRlbXMgYXJlIG5vdCBoaWRkZW4gYnV0IGluc2Vuc2l0
aXZlLgorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgICAgICAgICAgICAg
IGFwcGVuZEl0ZW0oQmFja0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAg
ICAgIGFwcGVuZEl0ZW0oRm9yd2FyZEl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIGFwcGVuZEl0ZW0oU3RvcEl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBiYjg3NDdiMWNiMWY1ODM4YzJkZDdjY2RkZjc4Mjkx
MWVhNjdjMWU1Li4zYjc0ZWRiNTA1M2ZmN2ExYzIzZDY4MTEwZjVhNTkwOTRkZTFkZWYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNDksNiArNDksOCBAQCBMSVNUKEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3Rf
aXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X21lbnUuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
bWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcApAQCAtNzgsNiArODAsNyBAQCBM
SVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9lZmwvQmF0dGVyeVBy
b3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuY3Bw
CisgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nl
c3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0ZpbmRDbGll
bnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcApAQCAtOTUsNiAr
OTgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1Rl
eHRDaGVja2VyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvVmlicmF0aW9uQ2xpZW50RWZsLmNw
cAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZs
L1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJv
eHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC0zNjIs
NiArMzY2LDcgQEAgU0VUKEVXSzJVbml0VGVzdHNfQklOQVJJRVMKICAgICB0ZXN0X2V3azJfY29s
b3JfcGlja2VyCiAgICAgdGVzdF9ld2syX2NvbnRleHQKICAgICB0ZXN0X2V3azJfY29udGV4dF9o
aXN0b3J5X2NhbGxiYWNrcworICAgIHRlc3RfZXdrMl9jb250ZXh0X21lbnUKICAgICB0ZXN0X2V3
azJfY29va2llX21hbmFnZXIKICAgICB0ZXN0X2V3azJfZGF0YWJhc2VfbWFuYWdlcgogICAgIHRl
c3RfZXdrMl9kb3dubG9hZF9qb2IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
V2ViS2l0Mi5oCmluZGV4IDA3Y2ExMjkzNTBmNGVkYjdlM2RiNGJmOTJhZDcwYjhjM2EyMDljZTQu
LjIyZDYxNjgyNWUxY2Q1MTg4OTViMmU3ZGM3ZWM1YjgzMjMyMjU5NTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtMzMsNiArMzMsOCBAQAogI2lu
Y2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX2NvbG9y
X3BpY2tlci5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRl
eHRfbWVudS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgogI2luY2x1ZGUg
ImV3a19jb29raWVfbWFuYWdlci5oIgogI2luY2x1ZGUgImV3a19kYXRhYmFzZV9tYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4IGFjYTJkNGRlZTFhYWYyYjgzZDY0
YTBjYzhmODQ3MTgzZDRmNzc5MDIuLmU3Mjc5MjMzNzA2ZTBkNzA1ZWJjYjlkODgyOTQ1MzMzYWMz
NGZiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
SW1wbC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJFd2tWaWV3SW1wbC5oIgogCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRFZmwuaCIKICNp
bmNsdWRlICJFZmxTY3JlZW5VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJGaW5kQ2xpZW50RWZsLmgi
CiAjaW5jbHVkZSAiRm9ybUNsaWVudEVmbC5oIgpAQCAtNDUsNiArNDYsNyBAQAogI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJl
d2tfY29udGV4dF9tZW51X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRl
LmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImV3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgpAQCAtMTE0LDYgKzExNiw3IEBAIEV3a1Zp
ZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tDb250
ZXh0PiBjb250ZXh0LCBQYXNzCiAgICAgLCBtX3BhZ2VQb2xpY3lDbGllbnQoUGFnZVBvbGljeUNs
aWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9wYWdlVUlDbGllbnQoUGFnZVVJQ2xpZW50
RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3Jlc291cmNlTG9hZENsaWVudChSZXNvdXJjZUxv
YWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQoQ29u
dGV4dE1lbnVDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZmluZENsaWVudChGaW5k
Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2Zvcm1DbGllbnQoRm9ybUNsaWVudEVm
bDo6Y3JlYXRlKHRoaXMpKQogI2lmIEVOQUJMRShWSUJSQVRJT04pCkBAIC03MTQsNiArNzE3LDM4
IEBAIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUNvbnRlbnRzU2l6ZUNoYW5nZShjb25zdCBJbnRT
aXplJiBzaXplKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJ
T05fUklHSFRfVE9fTEVGVCwgUlRMKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIExUUik7CiAKK3ZvaWQgRXdrVmlld0ltcGw6
OnNob3dDb250ZXh0TWVudShXZWJDb250ZXh0TWVudVByb3h5RWZsKiBjb250ZXh0TWVudVByb3h5
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxXZWJDb250
ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qg
PSBzbWFydERhdGEoKTsKKyAgICBBU1NFUlQoc2QtPmFwaSk7CisKKyAgICBBU1NFUlQoY29udGV4
dE1lbnVQcm94eSk7CisKKyAgICBpZiAoIXNkLT5hcGktPmNvbnRleHRfbWVudV9zaG93KQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAobV9jb250ZXh0TWVudSkKKyAgICAgICAgaGlkZUNvbnRl
eHRNZW51KCk7CisKKyAgICBtX2NvbnRleHRNZW51ID0gRXdrX0NvbnRleHRfTWVudTo6Y3JlYXRl
KHRoaXMsIGNvbnRleHRNZW51UHJveHksIGl0ZW1zKTsKKworICAgIHNkLT5hcGktPmNvbnRleHRf
bWVudV9zaG93KHNkLCBwb3NpdGlvbi54KCksIHBvc2l0aW9uLnkoKSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6OmhpZGVDb250ZXh0TWVudSgpCit7CisgICAg
aWYgKCFtX2NvbnRleHRNZW51KQorICAgICAgICByZXR1cm47CisKKyAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgIEFTU0VSVChzZC0+YXBpKTsKKworICAgIGlm
IChzZC0+YXBpLT5jb250ZXh0X21lbnVfaGlkZSkKKyAgICAgICAgc2QtPmFwaS0+Y29udGV4dF9t
ZW51X2hpZGUoc2QpOworCisgICAgbV9jb250ZXh0TWVudS5jbGVhcigpOworfQorCiB2b2lkIEV3
a1ZpZXdJbXBsOjpyZXF1ZXN0UG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1l
bnVQcm94eSwgY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9u
LCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRl
bXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCA9IHNtYXJ0RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXdJbXBsLmgKaW5kZXggMjRjYTRmZGJiYzgyOWZjZGQ5OWYwMThjZGVjMmNhYjk0MGM5OGNk
OC4uYmQzNDBjYzBlMWJhMmVjZjNiMzhiYWRhZjg1NDFlMzBmNjZjZDE5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC00Niw2ICs0Niw3
IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBDb250ZXh0TWVudUNsaWVu
dEVmbDsKIGNsYXNzIEZpbmRDbGllbnRFZmw7CiBjbGFzcyBGb3JtQ2xpZW50RWZsOwogY2xhc3Mg
SW5wdXRNZXRob2RDb250ZXh0RWZsOwpAQCAtNTQsNiArNTUsOCBAQCBjbGFzcyBQYWdlTG9hZENs
aWVudEVmbDsKIGNsYXNzIFBhZ2VQb2xpY3lDbGllbnRFZmw7CiBjbGFzcyBQYWdlVUlDbGllbnRF
Zmw7CiBjbGFzcyBSZXNvdXJjZUxvYWRDbGllbnRFZmw7CitjbGFzcyBXZWJDb250ZXh0TWVudUl0
ZW1EYXRhOworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eUVmbDsKIGNsYXNzIFdlYlBhZ2VHcm91
cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlBvcHVwSXRlbTsKQEAgLTc0LDYgKzc3
LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEV3a0NvbnRleHQ7CiBjbGFzcyBFd2tCYWNrRm9y
d2FyZExpc3Q7CiBjbGFzcyBFd2tDb2xvclBpY2tlcjsKK2NsYXNzIEV3a0NvbnRleHRNZW51Owog
Y2xhc3MgRXdrUG9wdXBNZW51OwogY2xhc3MgRXdrU2V0dGluZ3M7CiAKQEAgLTE2MSw2ICsxNjUs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcXVlc3RQb3B1cE1lbnUoV2ViS2l0OjpXZWJQb3B1
cE1lbnVQcm94eUVmbCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGly
ZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQ
b3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKICAgICB2b2lkIGNsb3Nl
UG9wdXBNZW51KCk7CisgICAgCisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoV2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5RWZsKiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBj
b25zdCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpOworICAg
IHZvaWQgaGlkZUNvbnRleHRNZW51KCk7CiAKICAgICB2b2lkIHVwZGF0ZVRleHRJbnB1dFN0YXRl
KCk7CiAKQEAgLTIzMyw2ICsyNDAsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OlBh
Z2VQb2xpY3lDbGllbnRFZmw+IG1fcGFnZVBvbGljeUNsaWVudDsKICAgICBPd25QdHI8V2ViS2l0
OjpQYWdlVUlDbGllbnRFZmw+IG1fcGFnZVVJQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6OlJl
c291cmNlTG9hZENsaWVudEVmbD4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7CisgICAgT3duUHRyPFdl
YktpdDo6Q29udGV4dE1lbnVDbGllbnRFZmw+IG1fY29udGV4dE1lbnVDbGllbnQ7CiAgICAgT3du
UHRyPFdlYktpdDo6RmluZENsaWVudEVmbD4gbV9maW5kQ2xpZW50OwogICAgIE93blB0cjxXZWJL
aXQ6OkZvcm1DbGllbnRFZmw+IG1fZm9ybUNsaWVudDsKICNpZiBFTkFCTEUoVklCUkFUSU9OKQpA
QCAtMjU1LDYgKzI2Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3RvdWNoRXZlbnRzRW5hYmxl
ZDsKICNlbmRpZgogICAgIFdlYkNvcmU6OlRpbWVyPEV3a1ZpZXdJbXBsPiBtX2Rpc3BsYXlUaW1l
cjsKKyAgICBPd25QdHI8RXdrQ29udGV4dE1lbnU+IG1fY29udGV4dE1lbnU7CiAgICAgT3duUHRy
PEV3a1BvcHVwTWVudT4gbV9wb3B1cE1lbnU7CiAgICAgT3duUHRyPFdlYktpdDo6SW5wdXRNZXRo
b2RDb250ZXh0RWZsPiBtX2lucHV0TWV0aG9kQ29udGV4dDsKICAgICBPd25QdHI8RXdrQ29sb3JQ
aWNrZXI+IG1fY29sb3JQaWNrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3MTdlNTFmOGY3ZDZm
MjU1YjQxMWIwNjQ4ZDgyNjE3M2MwYmU1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmNwcApAQCAtMCwwICsxLDEy
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudS5oIgorCisjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0
ZW1EYXRhLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIgorI2luY2x1ZGUg
ImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRl
bV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0V3a0NvbnRleHRNZW51OjpFd2tDb250ZXh0TWVudShF
d2tWaWV3SW1wbCogdmlld0ltcGwsIFdlYkNvbnRleHRNZW51UHJveHlFZmwqIGNvbnRleHRNZW51
UHJveHksIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVt
cykKKyAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCisgICAgLCBtX2NvbnRleHRNZW51UHJveHko
Y29udGV4dE1lbnVQcm94eSkKKyAgICAsIG1fY29udGV4dE1lbnVJdGVtcygwKQoreworICAgIGNv
bnN0IHNpemVfdCBzaXplID0gaXRlbXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQorICAgICAgICBtX2NvbnRleHRNZW51SXRlbXMgPSBlaW5hX2xpc3RfYXBw
ZW5kKG1fY29udGV4dE1lbnVJdGVtcywgRXdrX0NvbnRleHRfTWVudV9JdGVtOjpjcmVhdGUoaXRl
bXNbaV0pLmxlYWtQdHIoKSk7Cit9CisKK0V3a0NvbnRleHRNZW51Ojp+RXdrQ29udGV4dE1lbnUo
KQoreworICAgIHZvaWQqIGRhdGE7CisgICAgRUlOQV9MSVNUX0ZSRUUobV9jb250ZXh0TWVudUl0
ZW1zLCBkYXRhKQorICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9J
dGVtKj4oZGF0YSk7Cit9CisKK3ZvaWQgRXdrQ29udGV4dE1lbnU6OmhpZGUoKQoreworICAgIG1f
dmlld0ltcGwtPmhpZGVDb250ZXh0TWVudSgpOworfQorCit2b2lkIEV3a19Db250ZXh0X01lbnU6
OmFwcGVuZEl0ZW0oRXdrQ29udGV4dE1lbnVJdGVtKiBpdGVtKQoreworICAgIG1fY29udGV4dE1l
bnVJdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQobV9jb250ZXh0TWVudUl0ZW1zLCBpdGVtKTsKK30K
Kwordm9pZCBFd2tfQ29udGV4dF9NZW51OjpyZW1vdmVJdGVtKEV3a0NvbnRleHRNZW51SXRlbSog
aXRlbSkKK3sKKyAgICBtX2NvbnRleHRNZW51SXRlbXMgPSBlaW5hX2xpc3RfcmVtb3ZlKG1fY29u
dGV4dE1lbnVJdGVtcywgaXRlbSk7Cit9CisKK3ZvaWQgRXdrQ29udGV4dE1lbnU6OmNvbnRleHRN
ZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRl
bSkKK3sKKyAgICBtX2NvbnRleHRNZW51UHJveHktPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGl0
ZW0pOyAKK30gCisKK0V3a19Db250ZXh0X01lbnVfSXRlbSogZXdrX2NvbnRleHRfbWVudV9pdGVt
X25ldyhFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0
ZW1fQWN0aW9uIGFjdGlvbiwgY29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBF
aW5hX0Jvb2wgZW5hYmxlZCwgRXdrX0NvbnRleHRfTWVudSogcGFyZW50TWVudSwgRXdrX0NvbnRl
eHRfTWVudSogc3ViTWVudSkKK3sKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIG5ld0l0ZW0g
PSBFd2tfQ29udGV4dF9NZW51X0l0ZW06OmNyZWF0ZSh0eXBlLCBhY3Rpb24sIHRpdGxlLCBjaGVj
a2VkLCBlbmFibGVkLCBwYXJlbnRNZW51LCBzdWJNZW51KS5sZWFrUHRyKCk7CisKKyAgICByZXR1
cm4gbmV3SXRlbTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQo
RXdrX0NvbnRleHRfTWVudSogbWVudSwgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQorewor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51LCAwKTsKKworICAgIG1lbnUt
PmFwcGVuZEl0ZW0oaXRlbSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWluYV9Cb29sIGV3
a19jb250ZXh0X21lbnVfaXRlbV9yZW1vdmUoRXdrX0NvbnRleHRfTWVudSogbWVudSwgRXdrX0Nv
bnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChtZW51LCAwKTsKKworICAgIG1lbnUtPnJlbW92ZUl0ZW0oaXRlbSk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaGlkZShFd2tfQ29udGV4
dF9NZW51KiBtZW51KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtZW51
LCBmYWxzZSk7CisKKyAgICBtZW51LT5oaWRlKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Y29uc3QgRWluYV9MaXN0KiBld2tfY29udGV4dF9tZW51X2l0ZW1zX2dldChjb25zdCBFd2tfQ29u
dGV4dF9NZW51KiBtZW51KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCht
ZW51LCAwKTsKKworICAgIHJldHVybiBtZW51LT5pdGVtcygpOworfQorCitFaW5hX0Jvb2wgZXdr
X2NvbnRleHRfbWVudV9pdGVtX3NlbGVjdChFd2tfQ29udGV4dF9NZW51KiBtZW51LCBFd2tfQ29u
dGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKG1lbnUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRl
bSwgZmFsc2UpOworCisgICAgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVHlwZSB0eXBlID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVHlwZT4oaXRlbS0+dHlwZSgpKTsKKyAg
ICBXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24gPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpDb250ZXh0TWVudUFjdGlvbj4oaXRlbS0+YWN0aW9uKCkpOworCisgICAgV2ViQ29udGV4dE1l
bnVJdGVtRGF0YSBuZXdJdGVtKHR5cGUsIGFjdGlvbiwgaXRlbS0+dGl0bGUoKSwgaXRlbS0+ZW5h
YmxlZCgpLCBpdGVtLT5jaGVja2VkKCkpOworICAgIG1lbnUtPmNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKG5ld0l0ZW0pOworCisgICAgcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk3
NjQ4OGFhMjc3NWYzOGRiNWMwZjgxOTFkMDA0M2ZmMGFhNzliYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuaApAQCAt
MCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAq
IEBmaWxlICAgIGV3a19jb250ZXh0X21lbnUuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBF
d2sgQ29udGV4dCBNZW51IEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19jb250ZXh0X21lbnVfaAor
I2RlZmluZSBld2tfY29udGV4dF9tZW51X2gKKworI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVf
aXRlbS5oIgorI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgRXdrX0NvbnRleHRf
TWVudSAqLwordHlwZWRlZiBzdHJ1Y3QgRXdrQ29udGV4dE1lbnUgRXdrX0NvbnRleHRfTWVudTsK
KworLyoqCisgKiBDcmVhdGVzIGEgbmV3IGl0ZW0gb2YgdGhlIGNvbnRleHQgbWVudS4KKyAqCisg
KiBAcGFyYW0gdHlwZSBzcGVjaWZpZXMgYSB0eXBlIG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gYWN0
aW9uIHNwZWNpZmllcyBhIGFjdGlvbiBvZiB0aGUgaXRlbQorICogQHBhcmFtIHRpdGxlIHNwZWNp
ZmllcyBhIHRpdGxlIG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gY2hlY2tlZCBAYyBFSU5BX1RSVUUg
aWYgdGhlIGl0ZW0gc2hvdWxkIGJlIHRvZ2dsZWQgb3IgQGMgRUlOQV9GQUxTRSBpZiBub3QKKyAq
IEBwYXJhbSBlbmFibGVkIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhlIGl0ZW0gb3IgQGMgRUlO
QV9GQUxTRSB0byBkaXNhYmxlCisgKiBAcGFyYW0gcGFyZW50X21lbnUgc3BlY2lmaWVzIGEgcGFy
ZW50IG1lbnUgb2YgdGhlIGl0ZW0KKyAqIEBwYXJhbSBzdWJtZW51IHNwZWNpZmllcyBhIHN1Ym1l
bnUgb2YgdGhlIGl0ZW0KKyAqIEByZXR1cm4gdGhlIHBvaW50ZXIgdG8gdGhlIG5ldyBpdGVtIG9u
IHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRXdrX0NvbnRleHRfTWVu
dV9JdGVtICpld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KEV3a19Db250ZXh0X01lbnVfSXRlbV9U
eXBlIHR5cGUsIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBjb25zdCBjaGFy
ICp0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkLCBFd2tfQ29udGV4
dF9NZW51ICpwYXJlbnRfbWVudSwgRXdrX0NvbnRleHRfTWVudSAqc3ViX21lbnUpOworCisvKioK
KyAqIEFwcGVuZHMgdGhlIGl0ZW0gb2YgdGhlIGNvbnRleHQgbWVudS4KKyAqCisgKiBAcGFyYW0g
bWVudSB0aGUgY29udGV4dCBtZW51IAorICogQHBhcmFtIGl0ZW0gdGhlIGl0ZW0gdG8gYXBwZW5k
CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG9uIGZh
aWx1cmUKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2FwcGVuZChF
d2tfQ29udGV4dF9NZW51ICptZW51LCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKml0ZW0pOworCisK
Ky8qKgorICogUmVtb3ZlcyB0aGUgaXRlbSBvZiB0aGUgY29udGV4dCBtZW51LgorICoKKyAqIEBw
YXJhbSBtZW51IHRoZSBjb250ZXh0IG1lbnUgCisgKiBAcGFyYW0gaXRlbSB0aGUgaXRlbSB0byBy
ZW1vdmUKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ug
b24gZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fcmVt
b3ZlKEV3a19Db250ZXh0X01lbnUgKm1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSAqaXRlbSk7
CisKKy8qKgorICogSGlkZXMgdGhlIGNvbnRleHQgbWVudS4KKyAqCisgKiBAcGFyYW0gbWVudSB0
aGUgY29udGV4dCBtZW51IHRvIGhpZGUKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29u
dGV4dF9tZW51X2hpZGUoRXdrX0NvbnRleHRfTWVudSAqbWVudSk7CisKKy8qKgorICogR2V0cyB0
aGUgbGlzdCBvZiBpdGVtcy4KKyAqCisgKiBAcGFyYW0gbyB0aGUgY29udGV4dCBtZW51IHRvIGdl
dCBsaXN0IG9mIHRoZSBpdGVtcworICogQHJldHVybiB0aGUgbGlzdCBvZiB0aGUgaXRlbXMgb24g
c3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKKyAqLworRUFQSSBjb25zdCBFaW5hX0xpc3Qg
KmV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUgKm8pOwor
CisvKioKKyAqIFNlbGVjdHMgdGhlIGl0ZW0gZnJvbSB0aGUgY29udGV4dCBtZW51LgorICoKKyAq
IEBwYXJhbSBtZW51IHRoZSBjb250ZXh0IG1lbnUKKyAqIEBwYXJhbSBpdGVtIHRoZSBpdGVtIGlz
IHNlbGVjdGVkCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFf
RkFMU0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0
ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUgKm1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSAq
aXRlbSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBld2tf
Y29udGV4dF9tZW51X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlY2FmZjAz
Nzg0YTMzNTg4YjljN2MzZDlmN2JjYTJhYzg1YTkwZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW0uY3BwCkBA
IC0wLDAgKzEsMjYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0ZW0uaCIKKworI2lu
Y2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3By
aXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworRXdrQ29udGV4dE1lbnVJdGVt
OjpFd2tDb250ZXh0TWVudUl0ZW0oY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkK
KyAgICA6IG1fdHlwZShzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZT4oaXRl
bS50eXBlKCkpKQorICAgICwgbV9hY3Rpb24oc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9J
dGVtX0FjdGlvbj4oaXRlbS5hY3Rpb24oKSkpCisgICAgLCBtX3RpdGxlKGl0ZW0udGl0bGUoKS51
dGY4KCkuZGF0YSgpKQorICAgICwgbV9pc0NoZWNrZWQoaXRlbS5jaGVja2VkKCkpCisgICAgLCBt
X2lzRW5hYmxlZChpdGVtLmVuYWJsZWQoKSkKKyAgICAsIG1fcGFyZW50TWVudSgwKQorICAgICwg
bV9zdWJNZW51KDApCit7Cit9CisKK0V3a0NvbnRleHRNZW51SXRlbTo6RXdrQ29udGV4dE1lbnVJ
dGVtKEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3a19Db250ZXh0X01lbnVfSXRl
bV9BY3Rpb24gYWN0aW9uLCBjb25zdCBjaGFyKiB0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVp
bmFfQm9vbCBlbmFibGVkLCBFd2tfQ29udGV4dF9NZW51KiBwYXJlbnRNZW51LCBFd2tfQ29udGV4
dF9NZW51KiBzdWJNZW51KQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX2FjdGlvbihhY3Rp
b24pCisgICAgLCBtX3RpdGxlKHRpdGxlKQorICAgICwgbV9pc0NoZWNrZWQoY2hlY2tlZCkKKyAg
ICAsIG1faXNFbmFibGVkKGVuYWJsZWQpCisgICAgLCBtX3BhcmVudE1lbnUocGFyZW50TWVudSkK
KyAgICAsIG1fc3ViTWVudShzdWJNZW51KQoreworfQorCitFd2tfQ29udGV4dF9NZW51X0l0ZW1f
VHlwZSBFd2tDb250ZXh0TWVudUl0ZW06OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5
cGU7Cit9CisKK3ZvaWQgRXdrQ29udGV4dE1lbnVJdGVtOjpzZXRUeXBlKEV3a19Db250ZXh0X01l
bnVfSXRlbV9UeXBlIHR5cGUpCit7CisgICAgbV90eXBlID0gdHlwZTsKK30KKworRXdrX0NvbnRl
eHRfTWVudV9JdGVtX0FjdGlvbiBFd2tDb250ZXh0TWVudUl0ZW06OmFjdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fYWN0aW9uOworfQorCit2b2lkIEV3a0NvbnRleHRNZW51SXRlbTo6c2V0
QWN0aW9uKEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKQoreworICAgIG1fYWN0
aW9uID0gYWN0aW9uOworfQorCitjb25zdCBjaGFyKiBFd2tDb250ZXh0TWVudUl0ZW06OnRpdGxl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90aXRsZTsKK30KKwordm9pZCBFd2tDb250ZXh0TWVu
dUl0ZW06OnNldFRpdGxlKGNvbnN0IGNoYXIqIHRpdGxlKQoreworICAgIG1fdGl0bGUgPSB0aXRs
ZTsKK30KKworYm9vbCBFd2tDb250ZXh0TWVudUl0ZW06OmNoZWNrZWQoKSBjb25zdAoreworICAg
IHJldHVybiBtX2lzQ2hlY2tlZDsKK30KKwordm9pZCBFd2tDb250ZXh0TWVudUl0ZW06OnNldENo
ZWNrZWQoYm9vbCBjaGVja2VkKQoreworICAgIG1faXNDaGVja2VkID0gY2hlY2tlZDsKK30KKwor
Ym9vbCBFd2tDb250ZXh0TWVudUl0ZW06OmVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBt
X2lzRW5hYmxlZDsKK30KKwordm9pZCBFd2tDb250ZXh0TWVudUl0ZW06OnNldEVuYWJsZWQoYm9v
bCBlbmFibGVkKQoreworICAgIG1faXNFbmFibGVkID0gZW5hYmxlZDsKK30KKworRXdrX0NvbnRl
eHRfTWVudV9JdGVtX1R5cGUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0KGNvbnN0IEV3
a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoaXRlbSwgRVdLX0FDVElPTl9UWVBFKTsKKworICAgIHJldHVybiBpdGVtLT50eXBl
KCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQoRXdrX0Nv
bnRleHRfTWVudV9JdGVtKiBpdGVtLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlKQor
eworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAg
ICBpdGVtLT5zZXRUeXBlKHR5cGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0V3a19Db250
ZXh0X01lbnVfSXRlbV9BY3Rpb24gZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9nZXQoY29u
c3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05PX0FDVElPTik7
CisKKyAgICByZXR1cm4gaXRlbS0+YWN0aW9uKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4
dF9tZW51X2l0ZW1fYWN0aW9uX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEV3a19D
b250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKQoreworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICBpdGVtLT5zZXRBY3Rpb24oYWN0aW9u
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBjaGFyKiBld2tfY29udGV4dF9tZW51
X2l0ZW1fdGl0bGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgMCk7CisKKyAgICByZXR1cm4g
aXRlbS0+dGl0bGUoKTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRs
ZV9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBjb25zdCBjaGFyKiB0aXRsZSkKK3sK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworCisgICAg
aXRlbS0+c2V0VGl0bGUodGl0bGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9v
bCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVu
dV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVt
LCBmYWxzZSk7CisKKyAgICByZXR1cm4gaXRlbS0+Y2hlY2tlZCgpOworfQorCitFaW5hX0Jvb2wg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSog
aXRlbSwgRWluYV9Cb29sIGNoZWNrZWQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGl0ZW0sIGZhbHNlKTsKKworICAgIGl0ZW0tPnNldENoZWNrZWQoY2hlY2tlZCk7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9l
bmFibGVkX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKKyAgICAKKyAgICByZXR1
cm4gaXRlbS0+ZW5hYmxlZCgpOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVt
X2VuYWJsZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgRWluYV9Cb29sIGVuYWJs
ZWQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsK
KworICAgIGl0ZW0tPnNldEVuYWJsZWQoZW5hYmxlZCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X05PX0FDVElPTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24pOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fTElO
S19JTl9ORVdfV0lORE9XLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3
V2luZG93KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19ET1dOTE9BRF9MSU5LX1RPX0RJU0ssIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z0Rvd25sb2FkTGlua1RvRGlzayk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9MSU5LX1RPX0NMSVBCT0FSRCwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9JTUFHRV9JTl9ORVdfV0lO
RE9XLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdyk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRE9X
TkxPQURfSU1BR0VfVE9fRElTSywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJ
bWFnZVRvRGlzayk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfQ09QWV9JTUFHRV9UT19DTElQQk9BUkQsIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1VSTF9UT19DTElQQk9BUkQs
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVO
X0ZSQU1FX0lOX05FV19XSU5ET1csIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFt
ZUluTmV3V2luZG93KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19DT1BZLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5KTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19HT19C
QUNLLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdHb0JhY2spOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZPUldBUkQsIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RPUCwgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnU3RvcCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfUkVMT0FELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQp
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X0NVVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ3V0KTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QQVNURSwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnUGFzdGUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX1NFTEVDVF9BTEwsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1NlbGVjdEFsbCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfU1BFTExJTkdfR1VFU1MsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z1NwZWxsaW5nR3Vlc3MpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX05PX0dVRVNTRVNfRk9VTkQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ05vR3Vlc3Nlc0ZvdW5kKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVfU1BFTExJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUFSTl9TUEVMTElORywgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnTGVhcm5TcGVsbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfT1RIRVIsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z090aGVyKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19TRUFSQ0hfSU5fU1BPVExJR0hULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdT
ZWFyY2hJblNwb3RsaWdodCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfU0VBUkNIX1dFQiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
U2VhcmNoV2ViKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19MT09LX1VQX0lOX0RJQ1RJT05BUlksIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ0xvb2tVcEluRGljdGlvbmFyeSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9XSVRIX0RFRkFVTFRfQVBQTElDQVRJT04sIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5XaXRoRGVmYXVsdEFwcGxpY2F0aW9uKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkFDVFVB
TF9TSVpFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZBY3R1YWxTaXplKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlpPT01fSU4sIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVBERlpvb21Jbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZaT09NX09VVCwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtUERGWm9vbU91dCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9QREZBVVRPX1NJWkUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBE
RkF1dG9TaXplKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1BERlNJTkdMRV9QQUdFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZTaW5nbGVQ
YWdlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1BERkZBQ0lOR19QQUdFUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGRmFjaW5nUGFnZXMp
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERG
Q09OVElOVU9VUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGQ29udGludW91cyk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZORVhUX1BB
R0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERk5leHRQYWdlKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlBSRVZJT1VTX1BBR0UsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVBERlByZXZpb3VzUGFnZSk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9MSU5LLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluayk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX0dSQU1NQVIsIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUxMSU5HX01FTlUsIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19TUEVMTElOR19QQU5FTCwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX1NQRUxMSU5HLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19TUEVMTElOR19X
SElMRV9UWVBJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGls
ZVR5cGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfQ0hFQ0tfR1JBTU1BUl9XSVRIX1NQRUxMSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0ZPTlRfTUVOVSwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnRm9udE1lbnUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfRk9OVFMsIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ1Nob3dGb250cyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfQk9MRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQm9sZCk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
SVRBTElDLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1VOREVSTElORSwgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PVVRMSU5FLCBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVFlMRVMsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z1N0eWxlcyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfU0hPV19DT0xPUlMsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xv
cnMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX1NQRUVDSF9NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51KTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19T
VEFSVF9TUEVBS0lORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZyk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
U1RPUF9TUEVBS0lORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19X
UklUSU5HX0RJUkVDVElPTl9NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdXcml0aW5n
RGlyZWN0aW9uTWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfREVGQVVMVF9ESVJFQ1RJT04sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ0RlZmF1bHREaXJlY3Rpb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0xFRlRfVE9fUklHSFQsIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ0xlZnRUb1JpZ2h0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19SSUdIVF9UT19MRUZULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdSaWdodFRvTGVmdCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfUERGU0lOR0xFX1BBR0VfU0NST0xMSU5HLCBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdQREZTaW5nbGVQYWdlU2Nyb2xsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QREZGQUNJTkdfUEFHRVNfU0NS
T0xMSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNpbmdQYWdlc1Njcm9sbGlu
Zyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfSU5TUEVDVF9FTEVNRU5ULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxl
bWVudCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfVEVYVF9ESVJFQ1RJT05fTUVOVSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4
dERpcmVjdGlvbk1lbnUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX0RFRkFVTFQsIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJ
R0hULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQp
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X1RFWFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z1RleHREaXJlY3Rpb25SaWdodFRvTGVmdCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9PUEVOX01FRElBX0lOX05FV19XSU5ET1csIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ09wZW5NZWRpYUluTmV3V2luZG93KTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX01FRElBX0xJTktf
VE9fQ0xJUEJPQVJELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5TWVkaWFMaW5rVG9D
bGlwYm9hcmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX1RPR0dMRV9NRURJQV9DT05UUk9MUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnVG9nZ2xlTWVkaWFDb250cm9scyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfVE9HR0xFX01FRElBX0xPT1AsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRU5URVJfVklERU9fRlVMTFNDUkVFTiwgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW4pOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX01FRElBX1BMQVlf
UEFVU0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGxheVBhdXNlKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19NRURJQV9N
VVRFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGUpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fQkFTRV9DVVNUT01fVEFHLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1CYXNlQ3VzdG9tVGFnKTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0NVU1RPTV9UQUdfTk9fQUNUSU9OLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1DdXN0b21UYWdOb0FjdGlvbik7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9MQVNUX0NVU1RPTV9UQUcsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbUxhc3RDdXN0b21UYWcpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fQkFTRV9BUFBMSUNBVElPTl9UQUcsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW0uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU5NmVhZGUyZjg2ZGFhNjZjYzkyMmQ0Yzk2ZDE4NWJjZDg0ZjdhY2IKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dF9tZW51X2l0ZW0uaApAQCAtMCwwICsxLDI0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19jb250ZXh0X21lbnVfaXRlbS5oCisg
KiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBDb250ZXh0IE1lbnUgSXRlbSBBUEkuCisgKi8K
KworI2lmbmRlZiBld2tfY29udGV4dF9tZW51X2l0ZW1faAorI2RlZmluZSBld2tfY29udGV4dF9t
ZW51X2l0ZW1faAorCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBFd2tfUG9w
dXBfTWVudV9JdGVtICovCit0eXBlZGVmIHN0cnVjdCBFd2tDb250ZXh0TWVudUl0ZW0gRXdrX0Nv
bnRleHRfTWVudV9JdGVtOworCisvKioKKyAqIFxlbnVtICAgIF9Fd2tfQ29udGV4dF9NZW51X0l0
ZW1fVHlwZQorICogQGJyaWVmICAgRGVmaW5lcyB0aGUgdHlwZXMgb2YgdGhlIGl0ZW1zIGZvciB0
aGUgY29udGV4dCBtZW51LgorICogQGluZm8gICAgS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBDb250
ZXh0TWVudUl0ZW0uaAorICovCit0eXBlZGVmIGVudW0geworICAgIEVXS19BQ1RJT05fVFlQRSwK
KyAgICBFV0tfQ0hFQ0tBQkxFX0FDVElPTl9UWVBFLAorICAgIEVXS19TRVBBUkFUT1JfVFlQRSwK
KyAgICBFV0tfU1VCTUVOVV9UWVBFCit9IEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlOworCisv
KioKKyAqIFxlbnVtICAgIF9Fd2tfQ29udGV4dF9NZW51X0FjdGlvbgorICogQGJyaWVmICAgUHJv
dmlkZXMgdGhlIGFjdGlvbnMgb2YgaXRlbXMgZm9yIHRoZSBjb250ZXh0IG1lbnUuCisgKiBAaW5m
byAgICBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIENvbnRleHRNZW51SXRlbS5oCisgKi8KK3R5cGVk
ZWYgZW51bSB7CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19BQ1RJT04sCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJTktfSU5fTkVXX1dJTkRPVywKKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RPV05MT0FEX0xJTktfVE9fRElTSywKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTElOS19UT19DTElQQk9BUkQsCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0lNQUdFX0lOX05FV19XSU5ET1csCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19ET1dOTE9BRF9JTUFHRV9UT19ESVNLLAorICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfQ09QWV9JTUFHRV9UT19DTElQQk9BUkQsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1VSTF9UT19DTElQQk9BUkQsCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0ZSQU1FX0lOX05FV19XSU5ET1csCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
R09fQkFDSywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZPUldBUkQsCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QLAorICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfUkVMT0FELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ1VULAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfUEFTVEUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19TRUxFQ1RfQUxMLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdf
R1VFU1MsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19HVUVTU0VTX0ZPVU5ELAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX1NQRUxMSU5HLAorICAgIEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfTEVBUk5fU1BFTExJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19PVEhFUiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFQVJDSF9J
Tl9TUE9UTElHSFQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUFSQ0hfV0VCLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTE9PS19VUF9JTl9ESUNUSU9OQVJZLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9XSVRIX0RFRkFVTFRfQVBQTElDQVRJT04s
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkFDVFVBTF9TSVpFLAorICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9QREZaT09NX0lOLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZa
T09NX09VVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQVVUT19TSVpFLAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9QREZTSU5HTEVfUEFHRSwKKyAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fUERGRkFDSU5HX1BBR0VTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZDT05U
SU5VT1VTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZORVhUX1BBR0UsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1BERlBSRVZJT1VTX1BBR0UsCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19PUEVOX0xJTksgPSAyMDAwLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfSUdOT1JFX0dSQU1NQVIsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVMTElO
R19NRU5VLCAvKio8IHNwZWxsaW5nIG9yIHNwZWxsaW5nL2dyYW1tYXIgc3ViLW1lbnUgKi8KKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfU1BFTExJTkdfUEFORUwsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19TUEVMTElORywKKyAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX0NIRUNLX1NQRUxMSU5HX1dISUxFX1RZUElORywKKyAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX0NIRUNLX0dSQU1NQVJfV0lUSF9TUEVMTElORywKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX0ZPTlRfTUVOVSwgLyoqPCBmb250IHN1Yi1tZW51ICovCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0ZPTlRTLAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfQk9MRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lUQUxJQywK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1VOREVSTElORSwKKyAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX09VVExJTkUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19T
VFlMRVMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0NPTE9SUywKKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUVDSF9NRU5VLCAvKio8IHNwZWVjaCBzdWItbWVu
dSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RBUlRfU1BFQUtJTkcsCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QX1NQRUFLSU5HLAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfV1JJVElOR19ESVJFQ1RJT05fTUVOVSwgLyoqPCB3cml0aW5nIGRpcmVj
dGlvbiBzdWItbWVudSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfREVGQVVMVF9E
SVJFQ1RJT04sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUZUX1RPX1JJR0hULAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUklHSFRfVE9fTEVGVCwKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1BERlNJTkdMRV9QQUdFX1NDUk9MTElORywKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1BERkZBQ0lOR19QQUdFU19TQ1JPTExJTkcsCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19JTlNQRUNUX0VMRU1FTlQsCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9NRU5VLCAvKio8IHRleHQgZGlyZWN0aW9uIHN1Yi1t
ZW51ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9ERUZB
VUxULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fTEVGVF9U
T19SSUdIVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX1JJ
R0hUX1RPX0xFRlQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX09QRU5fTUVESUFfSU5fTkVX
X1dJTkRPVywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTUVESUFfTElOS19U
T19DTElQQk9BUkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFf
Q09OVFJPTFMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFfTE9P
UCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0VOVEVSX1ZJREVPX0ZVTExTQ1JFRU4s
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19NRURJQV9QTEFZX1BBVVNFLAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfTUVESUFfTVVURSwKKyAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fQkFTRV9DVVNUT01fVEFHID0gNTAwMCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
Q1VTVE9NX1RBR19OT19BQ1RJT04gPSA1OTk4LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9M
QVNUX0NVU1RPTV9UQUcgPSA1OTk5LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0FQ
UExJQ0FUSU9OX1RBRyA9IDEwMDAwCit9IEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb247CisK
Ky8qKgorICogR2V0cyB0eXBlIG9mIHRoZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVt
IHRvIGdldCB0aGUgdHlwZQorICogQHJldHVybiB0eXBlIG9mIHRoZSBpdGVtIG9uIHN1Y2Nlc3Mg
b3IgQGMgRVdLX0FDVElPTl9UWVBFIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0
X21lbnVfaXRlbV90eXBlX3NldAorICovCitFQVBJIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBl
IGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0
ZW0gKm8pOworCisvKioKKyAqIFNldHMgdGhlIHR5cGUgb2YgaXRlbS4KKyAqCisgKiBAcGFyYW0g
byB0aGUgaXRlbSB0byBzZXQgdGhlIHR5cGUKKyAqIEBwYXJhbSB0eXBlIGEgbmV3IHR5cGUgZm9y
IHRoZSBpdGVtIG9iamVjdAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3Ig
QGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0
ZW1fdHlwZV9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5
cGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5
cGUgdHlwZSk7CisKKy8qKgorICogR2V0cyBhbiBhY3Rpb24gb2YgdGhlIGl0ZW0uCisgKgorICog
QHBhcmFtIG8gdGhlIGl0ZW0gdG8gZ2V0IHRoZSBhY3Rpb24KKyAqIEByZXR1cm4gYW4gYWN0aW9u
IG9mIHRoZSBpdGVtIG9uIHN1Y2Nlc3Mgb3IgQGMgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19O
T19BQ1RJT04gb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX2Fj
dGlvbl9zZXQKKyAqLworRUFQSSBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGV3a19jb250
ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbyk7
CisKKy8qKgorICogU2V0cyBhbiBhY3Rpb24gb2YgdGhlIGl0ZW0uCisgKgorICogQHBhcmFtIG8g
dGhlIGl0ZW0gdG8gc2V0IHRoZSBhY3Rpb24KKyAqIEBwYXJhbSBhY3Rpb24gYSBuZXcgYWN0aW9u
IGZvciB0aGUgaXRlbSBvYmplY3QKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Ms
IG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX2FjdGlvbl9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9p
dGVtX2FjdGlvbl9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFd2tfQ29udGV4dF9NZW51
X0l0ZW1fQWN0aW9uIGFjdGlvbik7CisKKy8qKgorICogR2V0cyBhIHRpdGxlIG9mIHRoZSBpdGVt
LgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGdldCB0aGUgdGl0bGUKKyAqIEByZXR1cm4g
YSB0aXRsZSBvZiB0aGUgaXRlbSBvbiBzdWNjZXNzLCBvciBAYyBOVUxMIG9uIGZhaWx1cmUKKyAq
CisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9zZXQKKyAqLworRUFQSSBjb25z
dCBjaGFyICpld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0
X01lbnVfSXRlbSAqbyk7CisKKy8qKgorICogU2V0cyBhIHRpdGxlIG9mIHRoZSBpdGVtLgorICoK
KyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIHNldCB0aGUgdGl0bGUKKyAqIEBwYXJhbSB0aXRsZSBh
IG5ldyB0aXRsZSBmb3IgdGhlIGl0ZW0gb2JqZWN0CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19j
b250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRl
eHRfbWVudV9pdGVtX3RpdGxlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIGNvbnN0IGNo
YXIgKnRpdGxlKTsKKworLyoqCisgKiBRdWVyaWVzIGlmIHRoZSBpdGVtIGlzIHRvZ2dsZWQuCisg
KgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gcXVlcnkgaWYgdGhlIGl0ZW0gaXMgdG9nZ2xlZAor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGl0ZW0gaXMgdG9nZ2xlZCBvciBAYyBFSU5B
X0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250
ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8p
OworCisvKioKKyAqIFNldHMgaWYgdGhlIGl0ZW0gc2hvdWxkIGJlIHRvZ2dsZWQuCisgKgorICog
QHBhcmFtIG8gdGhlIGl0ZW0gdG8gYmUgdG9nZ2xlZAorICogQHBhcmFtIGNoZWNrZWQgQGMgRUlO
QV9UUlVFIGlmIHRoZSBpdGVtIHNob3VsZCBiZSB0b2dnbGVkIG9yIEBjIEVJTkFfRkFMU0UgaWYg
bm90CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ug
b24gZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hl
Y2tlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFaW5hX0Jvb2wgY2hlY2tlZCk7CisK
Ky8qKgorICogR2V0cyBpZiB0aGUgaXRlbSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJhbSBvIHRo
ZSBpdGVtIHRvIGdldCBlbmFibGVkIHN0YXRlCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBp
dCdzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKKyAqCisgKiBA
c2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldAorICovCitFQVBJIEVpbmFfQm9v
bCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVu
dV9JdGVtICpvKTsKKworLyoqCisgKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBpdGVtLgorICoKKyAq
IEBwYXJhbSBvIHRoZSBpdGVtIHRvIGVuYWJsZS9kaXNhYmxlCisgKiBAcGFyYW0gZW5hYmxlZCBA
YyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBpdGVtIG9yIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJs
ZQorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBv
biBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQK
KyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfc2V0KEV3
a19Db250ZXh0X01lbnVfSXRlbSAqbywgRWluYV9Cb29sIGVuYWJsZWQpOworCisjaWZkZWYgX19j
cGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogZXdrX2NvbnRleHRfbWVudV9pdGVtX2gg
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250
ZXh0X21lbnVfaXRlbV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZjkxMDBlYTgz
ZjExZjNjMjdhNmM3NmY3MmQ2MzZkMzVlOTQ4NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5o
CkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19jb250ZXh0
X21lbnVfaXRlbV9wcml2YXRlX2gKKworI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgor
I2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKKyNpbmNsdWRlICJld2tfY29udGV4
dF9tZW51LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVtLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKworLyoqCisgKiBcc3RydWN0ICBFd2tfQ29udGV4dF9NZW51X0l0
ZW0KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBjb250ZXh0IG1lbnUgaXRlbSBkYXRhLgorICov
CitjbGFzcyBFd2tDb250ZXh0TWVudUl0ZW0geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPEV3a0NvbnRleHRNZW51SXRlbT4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1l
bnVJdGVtRGF0YSYgaXRlbSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXdr
X0NvbnRleHRfTWVudV9JdGVtKGl0ZW0pKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc093blB0
cjxFd2tDb250ZXh0TWVudUl0ZW0+IGNyZWF0ZShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0
eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgY29uc3QgY2hhciogdGl0
bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCwgRXdrQ29udGV4dE1lbnUq
IHBhcmVudE1lbnUsIEV3a0NvbnRleHRNZW51KiBzdWJNZW51KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBFd2tfQ29udGV4dF9NZW51X0l0ZW0odHlwZSwgYWN0aW9uLCB0aXRs
ZSwgY2hlY2tlZCwgZW5hYmxlZCwgcGFyZW50TWVudSwgc3ViTWVudSkpOworICAgIH0KKworICAg
IEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRBY3Rpb24oRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbik7CisKKyAgICBjb25zdCBjaGFy
KiB0aXRsZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgY2hhciopOworCisgICAg
RXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VHlw
ZShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSk7CisKKyAgICBib29sIGNoZWNrZWQoKSBjb25z
dDsKKyAgICB2b2lkIHNldENoZWNrZWQoYm9vbCk7CisKKyAgICBib29sIGVuYWJsZWQoKSBjb25z
dDsKKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
RXdrQ29udGV4dE1lbnVJdGVtKGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYp
OworICAgIEV3a0NvbnRleHRNZW51SXRlbShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBl
LCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgY29uc3QgY2hhciogdGl0bGUs
IEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCwgRXdrQ29udGV4dE1lbnUqIHBh
cmVudE1lbnUsIEV3a0NvbnRleHRNZW51KiBzdWJNZW51KTsKKworICAgIEV3a19Db250ZXh0X01l
bnVfSXRlbV9UeXBlIG1fdHlwZTsKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIG1f
YWN0aW9uOworCisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1fdGl0bGU7CisgICAgCisgICAgYm9v
bCBtX2lzQ2hlY2tlZDsKKyAgICBib29sIG1faXNFbmFibGVkOworCisgICAgRXdrX0NvbnRleHRf
TWVudSogbV9wYXJlbnRNZW51OworICAgIEV3a19Db250ZXh0X01lbnUqIG1fc3ViTWVudTsKK307
CisKKyNlbmRpZiAvLyBld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X3ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVf
cHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3NjlhMGM2ZGNlNjQzY2U3NmY0OWYxNDQ2MWU3NmUzMDc2
ZWNmZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dF9tZW51X3ByaXZhdGUuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRfbWVudV9wcml2YXRl
X2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfbWVudV9wcml2YXRlX2gKKworI2luY2x1ZGUgIldlYkNv
bnRleHRNZW51SXRlbURhdGEuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0ZW0uaCIK
KyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQ29udGV4dE1l
bnVJdGVtRGF0YTsKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlFZmw7Cit9CisKK2NsYXNzIEV3
a1ZpZXdJbXBsOworCitjbGFzcyBFd2tDb250ZXh0TWVudSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8RXdrQ29udGV4dE1lbnU+IGNyZWF0ZShFd2tWaWV3SW1wbCogdmlld0ltcGws
IFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbCogY29udGV4dE1lbnVQcm94eSwgY29uc3Qg
VmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tDb250ZXh0TWVudSh2aWV3SW1wbCwgY29udGV4
dE1lbnVQcm94eSwgaXRlbXMpKTsKKyAgICB9CisKKyAgICB+RXdrQ29udGV4dE1lbnUoKTsKKwor
ICAgIHZvaWQgaGlkZSgpOworICAgIHZvaWQgYXBwZW5kSXRlbShFd2tDb250ZXh0TWVudUl0ZW0q
KTsKKyAgICB2b2lkIHJlbW92ZUl0ZW0oRXdrQ29udGV4dE1lbnVJdGVtKik7CisKKyAgICBjb25z
dCBFaW5hX0xpc3QqIGl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0TWVudUl0ZW1zOyB9
CisgICAgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJLaXQ6OldlYkNvbnRl
eHRNZW51SXRlbURhdGEmIGl0ZW0pOworCitwcml2YXRlOgorICAgIEV3a0NvbnRleHRNZW51KEV3
a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZsKiwgY29u
c3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKTsKKworICAg
IEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOworICAgIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94
eUVmbCogbV9jb250ZXh0TWVudVByb3h5OworICAgIEVpbmFfTGlzdCogbV9jb250ZXh0TWVudUl0
ZW1zOworfTsKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X21lbnVfcHJpdmF0ZV9oCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDc1MDE2MTE3NGI5
YTQ1N2ZmMmVkZTk4ODUxOGIwYjM0Njc3MmI1N2YuLjM3ZjQyNTNjMWM4YTg1ZWMxYzNmMmQxZTEy
ZTcyMGQ4MDU4NzI1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuaApAQCAtODQsNiArODQsNyBAQAogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlz
dC5oIgogI2luY2x1ZGUgImV3a19jb2xvcl9waWNrZXIuaCIKICNpbmNsdWRlICJld2tfY29udGV4
dC5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnUuaCIKICNpbmNsdWRlICJld2tfZG93bmxv
YWRfam9iLmgiCiAjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudC5o
IgpAQCAtMTE0LDYgKzExNSw5IEBAIHN0cnVjdCBFd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAg
RXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNo
YW5nZWQuICovCiAgICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOwogCisgICAgRWluYV9Cb29sICgq
Y29udGV4dF9tZW51X3Nob3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX0Nvb3JkIHgs
IEV2YXNfQ29vcmQgeSwgRXdrX0NvbnRleHRfTWVudSAqbWVudSk7CisgICAgRWluYV9Cb29sICgq
Y29udGV4dF9tZW51X2hpZGUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKKwogICAgIEVpbmFf
Qm9vbCAoKnBvcHVwX21lbnVfc2hvdykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEVpbmFfUmVj
dGFuZ2xlIHJlY3QsIEV3a19UZXh0X0RpcmVjdGlvbiB0ZXh0X2RpcmVjdGlvbiwgZG91YmxlIHBh
Z2Vfc2NhbGVfZmFjdG9yLCBFd2tfUG9wdXBfTWVudSAqbWVudSk7CiAgICAgRWluYV9Cb29sICgq
cG9wdXBfbWVudV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CiAKQEAgLTE2OSw3ICsx
NzMsNyBAQCBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBFV0tfVklFV19T
TUFSVF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VF9OQU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNt
YXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19W
RVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2Ns
YXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9O
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwfQogCiAvKioKICAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tf
Vmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dF9tZW51LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0X21lbnUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmMyZGFhZGY1NzQ1NzE4NjJiNGJiZTU4OGJlYWI0ZmM1OGNmMTdiZWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy90ZXN0X2V3azJfY29udGV4dF9tZW51LmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICAgIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUg
R05VCisgICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgICAgSW5jLiwgNTkg
VGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKyovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5oIgorI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1l
bnQuaCIKKyNpbmNsdWRlIDxFV2ViS2l0Mi5oPgorI2luY2x1ZGUgPEVjb3JlLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK2V4dGVybiBFV0syVW5pdFRlc3RFbnZpcm9ubWVu
dCogZW52aXJvbm1lbnQ7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjaGVja0Jhc2ljQ29udGV4dE1l
bnVJdGVtKEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgRXdrX0NvbnRleHRfTWVudV9JdGVt
X1R5cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIGNvbnN0IGNo
YXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQpCit7CisgICAg
QVNTRVJUX1RSVUUoaXRlbSk7CisKKyAgICBFWFBFQ1RfRVEodHlwZSwgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX3R5cGVfZ2V0KGl0ZW0pKTsKKyAgICBFWFBFQ1RfRVEoYWN0aW9uLCBld2tfY29udGV4
dF9tZW51X2l0ZW1fYWN0aW9uX2dldChpdGVtKSk7CisgICAgRVhQRUNUX1NUUkVRKHRpdGxlLCBl
d2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGl0ZW0pKTsKKyAgICBFWFBFQ1RfRVEoY2hl
Y2tlZCwgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGl0ZW0pKTsKKyAgICBFWFBF
Q1RfRVEoZW5hYmxlZCwgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0KGl0ZW0pKTsK
K30KKworc3RhdGljIEVpbmFfQm9vbCBzaG93Q29udGV4dE1lbnUoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXdrX0NvbnRleHRfTWVu
dSogY29udGV4dE1lbnUpCit7CisgICAgY29uc3QgRWluYV9MaXN0KiBsaXN0ID0gZXdrX2NvbnRl
eHRfbWVudV9pdGVtc19nZXQoY29udGV4dE1lbnUpOworICAgIEVYUEVDVF9FUSg0LCBlaW5hX2xp
c3RfY291bnQobGlzdCkpOworCisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtID0gc3Rh
dGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4oZWluYV9saXN0X250aChsaXN0LCAwKSk7
CisgICAgY2hlY2tCYXNpY0NvbnRleHRNZW51SXRlbShpdGVtLCBFV0tfQUNUSU9OX1RZUEUsIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fQkFDSywgIkdvIEJhY2siLCBmYWxzZSwgdHJ1ZSk7
CisKKyAgICBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4oZWluYV9s
aXN0X250aChsaXN0LCAxKSk7CisgICAgY2hlY2tCYXNpY0NvbnRleHRNZW51SXRlbShpdGVtLCBF
V0tfQUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fRk9SV0FSRCwgIkdv
IEZvcndhcmQiLCBmYWxzZSwgdHJ1ZSk7CisgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJs
ZWRfc2V0KGl0ZW0sIGZhbHNlKTsKKyAgICBFWFBFQ1RfRkFMU0UoZXdrX2NvbnRleHRfbWVudV9p
dGVtX2VuYWJsZWRfZ2V0KGl0ZW0pKTsKKworICAgIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfQ29u
dGV4dF9NZW51X0l0ZW0qPihlaW5hX2xpc3RfbnRoKGxpc3QsIDIpKTsKKyAgICBjaGVja0Jhc2lj
Q29udGV4dE1lbnVJdGVtKGl0ZW0sIEVXS19BQ1RJT05fVFlQRSwgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19TVE9QLCAiU3RvcCIsIGZhbHNlLCB0cnVlKTsKKyAgICBld2tfY29udGV4dF9tZW51
X2l0ZW1fY2hlY2tlZF9zZXQoaXRlbSwgdHJ1ZSk7CisgICAgRVhQRUNUX1RSVUUoZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGl0ZW0pKTsKKworICAgIGl0ZW0gPSBzdGF0aWNfY2Fz
dDxFd2tfQ29udGV4dF9NZW51X0l0ZW0qPihlaW5hX2xpc3RfbnRoKGxpc3QsIDMpKTsKKyAgICBj
aGVja0Jhc2ljQ29udGV4dE1lbnVJdGVtKGl0ZW0sIEVXS19BQ1RJT05fVFlQRSwgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19SRUxPQUQsICJSZWxvYWQiLCBmYWxzZSwgdHJ1ZSk7CisgICAgZXdr
X2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldChpdGVtLCAiUmVmcmVzaCIpOworICAgIEVYUEVD
VF9TVFJFUSgiUmVmcmVzaCIsIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQoaXRlbSkp
OworCisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBuZXdJdGVtID0gZXdrX2NvbnRleHRfbWVu
dV9pdGVtX25ldyhFV0tfQUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1RI
RVIsICJOZXcgQ3VzdG9tIEl0ZW0iLCBmYWxzZSwgdHJ1ZSwgY29udGV4dE1lbnUsIDApOworICAg
IGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQoY29udGV4dE1lbnUsIG5ld0l0ZW0pOworICAg
IGxpc3QgPSBld2tfY29udGV4dF9tZW51X2l0ZW1zX2dldChjb250ZXh0TWVudSk7CisgICAgRVhQ
RUNUX0VRKDUsIGVpbmFfbGlzdF9jb3VudChsaXN0KSk7CisKKyAgICBld2tfY29udGV4dF9tZW51
X2l0ZW1fcmVtb3ZlKGNvbnRleHRNZW51LCBuZXdJdGVtKTsKKyAgICBsaXN0ID0gZXdrX2NvbnRl
eHRfbWVudV9pdGVtc19nZXQoY29udGV4dE1lbnUpOworICAgIEVYUEVDVF9FUSg0LCBlaW5hX2xp
c3RfY291bnQobGlzdCkpOworCisgICAgRVhQRUNUX1RSVUUoZXdrX2NvbnRleHRfbWVudV9pdGVt
X3NlbGVjdChjb250ZXh0TWVudSwgaXRlbSkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1RF
U1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KQorewor
ICAgIGNvbnN0IGNoYXIqIGl0ZW1TZWxlY3RIVE1MID0KKyAgICAgICAgIjxodG1sPiIKKyAgICAg
ICAgIjxib2R5PjxhIGhyZWY9aHR0cDovL3d3dy5nb29nbGUuY29tPlRlc3QgTGluazwvYT48L2Jv
ZHk+IgorICAgICAgICAiPC9ib2R5PjwvaHRtbD4iOyAKKworICAgIGV3a1ZpZXdDbGFzcygpLT5j
b250ZXh0X21lbnVfc2hvdyA9IHNob3dDb250ZXh0TWVudTsKKworICAgIGV3a192aWV3X2h0bWxf
c3RyaW5nX2xvYWQod2ViVmlldygpLCBpdGVtU2VsZWN0SFRNTCwgImZpbGU6Ly8vIiwgMCk7Cisg
ICAgbW91c2VDbGljaygyMCwgMzAsIC8qUmlnaHQqLyAzKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0
VW50aWxMb2FkRmluaXNoZWQoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhODYwMjhlMGRk
NjQzMDcxNjI3MzFmMTdmMzVlMmYzZmE2ODUxZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcApAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJDb250ZXh0TWVudUNsaWVudEVmbC5oIgorCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIK
KyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKKyNpbmNs
dWRlICJXS1BhZ2UuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIgICAKKyNpbmNs
dWRlIDxFdmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRpYyBpbmxpbmUg
Q29udGV4dE1lbnVDbGllbnRFZmwqIHRvQ29udGV4dENsaWVudEVmbChjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUNsaWVudEVmbCo+
KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKK30KKworQ29udGV4dE1lbnVDbGllbnRF
Zmw6OkNvbnRleHRNZW51Q2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICA6IG1f
dmlld0ltcGwodmlld0ltcGwpCit7CisgICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBtX3ZpZXdJbXBs
LT53a1BhZ2UoKTsKKyAgICBBU1NFUlQocGFnZVJlZik7CisKKyAgICBXS1BhZ2VDb250ZXh0TWVu
dUNsaWVudCBjb250ZXh0TWVudUNsaWVudDsKKyAgICBtZW1zZXQoJmNvbnRleHRNZW51Q2xpZW50
LCAwLCBzaXplb2YoV0tQYWdlQ29udGV4dE1lbnVDbGllbnQpKTsKKyAgICBjb250ZXh0TWVudUNs
aWVudC52ZXJzaW9uID0ga1dLUGFnZUNvbnRleHRNZW51Q2xpZW50Q3VycmVudFZlcnNpb247Cisg
ICAgY29udGV4dE1lbnVDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgY29udGV4dE1lbnVD
bGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51X2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjAgPSAwOworICAgIGNvbnRleHRNZW51Q2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVj
dGVkID0gMDsKKyAgICBjb250ZXh0TWVudUNsaWVudC5jb250ZXh0TWVudURpc21pc3NlZCA9IDA7
CisgICAgY29udGV4dE1lbnVDbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51ID0g
MDsKKworICAgIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChwYWdlUmVmLCAmY29udGV4
dE1lbnVDbGllbnQpOworfQorCit2b2lkIENvbnRleHRNZW51Q2xpZW50RWZsOjpnZXRDb250ZXh0
TWVudUZyb21Qcm9wb3NlZE1lbnUoV0tQYWdlUmVmLCBXS0FycmF5UmVmLCBXS0FycmF5UmVmKiwg
V0tIaXRUZXN0UmVzdWx0UmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L0NvbnRleHRNZW51Q2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Nv
bnRleHRNZW51Q2xpZW50RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI5ZTRlZDNjZWNjYmQzMzdkODg3YzVi
NTQ1NDUwMWRmNzViMWFjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuaApAQCAtMCwwICsxLDU3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQ29udGV4dE1lbnVDbGllbnRFZmxfaAorI2RlZmluZSBD
b250ZXh0TWVudUNsaWVudEVmbF9oCisKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1
ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK2NsYXNzIEV3a1ZpZXdJbXBsOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgQ29udGV4dE1lbnVDbGllbnRFZmwgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzT3duUHRyPENvbnRleHRNZW51Q2xpZW50RWZsPiBjcmVhdGUoRXdrVmlld0ltcGwq
IHZpZXdJbXBsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZXh0TWVu
dUNsaWVudEVmbCh2aWV3SW1wbCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGdldENvbnRl
eHRNZW51RnJvbVByb3Bvc2VkTWVudShXS1BhZ2VSZWYsIFdLQXJyYXlSZWYgcHJvcG9zZWRNZW51
LCBXS0FycmF5UmVmKiBuZXdNZW51LCBXS0hpdFRlc3RSZXN1bHRSZWYsIFdLVHlwZVJlZiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
Q29udGV4dE1lbnVDbGllbnRFZmwoRXdrVmlld0ltcGwqKTsKKworICAgIEV3a1ZpZXdJbXBsKiBt
X3ZpZXdJbXBsOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBDb250
ZXh0TWVudUNsaWVudEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VDbGllbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFn
ZUNsaWVudEJhc2UuY3BwCmluZGV4IDk3YTg1ZjVjY2VmZWM3M2RiM2YzNDY5YWI0MTMzZTIzMmMx
YjM0ZDAuLjBjZTgyYWFlNDZlNDA0ZjVkMjkzZGFhYzYzNGRiMDE5MzViMmM5ZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3BwCkBAIC0zNSw3
ICszNSw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNvbnRleHRN
ZW51UHJveHkuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5RWZsLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUG9wdXBNZW51UHJveHlFZmwuaCIKQEAgLTIyMSwxMCArMjIxLDkgQEAgUGFzc1JlZlB0cjxX
ZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEJhc2U6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdl
YlBhZ2VQcm94eSoKICAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlFZmw6OmNyZWF0ZShtX3Zp
ZXdJbXBsLCBwYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdl
Q2xpZW50QmFzZTo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQorUGFzc1Jl
ZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50QmFzZTo6Y3JlYXRlQ29udGV4dE1l
bnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y3JlYXRlKG1f
dmlld0ltcGwsIHBhZ2UpOwogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlF
ZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5
RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lYzdlMGViODE2MzMzNTNjMTYzM2QwY2VmYjU5ZWQ1N2Y1MmM0
NWIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJD
b250ZXh0TWVudVByb3h5RWZsLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIgorCisjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCisKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIldlYkNv
bnRleHRNZW51SXRlbURhdGEuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6V2ViQ29udGV4dE1lbnVQ
cm94eUVmbChFd2tWaWV3SW1wbCogdmlld0ltcGwsIFdlYlBhZ2VQcm94eSogcGFnZSkKKyAgICA6
IG1fdmlld0ltcGwodmlld0ltcGwpCisgICAgLCBtX3BhZ2UocGFnZSkKK3sKK30KKworV2ViQ29u
dGV4dE1lbnVQcm94eUVmbDo6fldlYkNvbnRleHRNZW51UHJveHlFZmwoKQoreworfQorCit2b2lk
IFdlYkNvbnRleHRNZW51UHJveHlFZmw6OnNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYg
aXRlbXMpCit7CisgICAgbV92aWV3SW1wbC0+c2hvd0NvbnRleHRNZW51KHRoaXMsIHBvc2l0aW9u
LCBpdGVtcyk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6aGlkZUNvbnRleHRN
ZW51KCkKK3sKKyAgICBtX3ZpZXdJbXBsLT5oaWRlQ29udGV4dE1lbnUoKTsKK30KKwordm9pZCBX
ZWJDb250ZXh0TWVudVByb3h5RWZsOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJD
b250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQoreworICAgIG1fcGFnZS0+Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQoaXRlbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3YmUyYWI5Y2ViNWRk
Y2YxYzQ2MmI0NTUzOGMzMjkzYTIyMjhmNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYkNvbnRleHRNZW51UHJveHlFZmxfaAorI2RlZmluZSBXZWJDb250ZXh0
TWVudVByb3h5RWZsX2gKKworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorCisjaW5jbHVkZSAi
V2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CisKK2NsYXNzIEV3a1ZpZXdJbXBsOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKK2NsYXNz
IFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eUVmbCA6IHB1YmxpYyBX
ZWJDb250ZXh0TWVudVByb3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJD
b250ZXh0TWVudVByb3h5RWZsPiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsLCBXZWJQYWdl
UHJveHkqIHBhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRl
eHRNZW51UHJveHlFZmwodmlld0ltcGwsIHBhZ2UpKTsKKyAgICB9CisKKyAgICB+V2ViQ29udGV4
dE1lbnVQcm94eUVmbCgpOworCisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mKTsKKyAg
ICB2b2lkIGhpZGVDb250ZXh0TWVudSgpOworCisgICAgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CisKK3ByaXZhdGU6CisgICAgV2Vi
Q29udGV4dE1lbnVQcm94eUVmbChFd2tWaWV3SW1wbCosIFdlYlBhZ2VQcm94eSopOworCisgICAg
RXdrVmlld0ltcGwqIG1fdmlld0ltcGw7CisgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7Cit9Owor
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVO
VVMpCisjZW5kaWYgLy8gV2ViQ29udGV4dE1lbnVQcm94eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174936</attachid>
            <date>2012-11-19 03:21:08 -0800</date>
            <delta_ts>2012-11-20 00:01:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96200-20121119201858.patch</filename>
            <type>text/plain</type>
            <size>70213</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWFhN2NkNzQ5ZWEzNmNi
YTExZmIyNzAyOWM5NjBmN2IzOGQ4Y2Y4NS4uMTU3MDk5NGNmMmI2MWU4OGE2ODE1OTNjOWI3OGQ5
NTYxZDQwMjQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTE5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0sy
XSBTdXBwb3J0IENvbnRleHQgTWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICBFRkwg
cG9ydCBhbHNvIGRvZXNuJ3QgaGlkZSB1bmF2YWlsYWJsZSBtZW51cyBhcyBndGsgcG9ydC4KKwog
MjAxMi0xMS0xOSAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSRUdSRVNTSU9OIChyMTMzNTY1KTogQ2FsZW5kYXIgcGlja2VyIGlzbid0IGFuaW1hdGluZyB3
aGVuIGNoYW5naW5nIG1vbnRoIGJ5IHByZXNzaW5nICd0JwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDM3NDBkNDc4
M2M5YWVkNTAwYmQzMmFkNTY2ODAyYTBlZGYxMDI1OTIuLmZiZmU0ZjRhMWQyMGQzOGM5MmQ3NmNi
ZmI3NzMyNDIzYTU5MDAwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NCBAQAorMjAxMi0xMS0x
OSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtF
RkxdW1dLMl0gU3VwcG9ydCBDb250ZXh0IE1lbnUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzdXBwb3J0cyBXSzIgRUZMJ3MgY29udGV4
dCBtZW51IGFzIFdLMSBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlIHdlIGNhbid0IHVzZSBlbGVtZW50
YXJ5IGluIGluc2lkZSBXZWJLaXQuCisgICAgICAgIE9ubHkgYmFzaWMgZnVuY3Rpb25hbGl0aWVz
IG9mIGNvbnRleHQgbWVudSBhcmUgc3VwcG9ydGVkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNob3dDb250ZXh0TWVudSk6
CisgICAgICAgIChFd2tWaWV3SW1wbDo6aGlkZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KEV3a1ZpZXdJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9t
ZW51LmNwcDogQWRkZWQuCisgICAgICAgIChFd2tDb250ZXh0TWVudTo6RXdrQ29udGV4dE1lbnUp
OgorICAgICAgICAoRXdrQ29udGV4dE1lbnU6On5Fd2tDb250ZXh0TWVudSk6CisgICAgICAgIChF
d2tDb250ZXh0TWVudTo6aGlkZSk6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51OjphcHBlbmRJ
dGVtKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnU6OnJlbW92ZUl0ZW0pOgorICAgICAgICAo
RXdrQ29udGV4dE1lbnU6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKGV3a19j
b250ZXh0X21lbnVfaXRlbV9uZXcpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2Fw
cGVuZCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fcmVtb3ZlKToKKyAgICAgICAg
KGV3a19jb250ZXh0X21lbnVfaGlkZSk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1z
X2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51Lmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAg
ICAgICAoRXdrQ29udGV4dE1lbnVJdGVtOjpFd2tDb250ZXh0TWVudUl0ZW0pOgorICAgICAgICAo
RXdrQ29udGV4dE1lbnVJdGVtOjp0eXBlKToKKyAgICAgICAgKEV3a0NvbnRleHRNZW51SXRlbTo6
c2V0VHlwZSk6CisgICAgICAgIChFd2tDb250ZXh0TWVudUl0ZW06OmFjdGlvbik6CisgICAgICAg
IChFd2tDb250ZXh0TWVudUl0ZW06OnNldEFjdGlvbik6CisgICAgICAgIChFd2tDb250ZXh0TWVu
dUl0ZW06OnRpdGxlKToKKyAgICAgICAgKEV3a0NvbnRleHRNZW51SXRlbTo6c2V0VGl0bGUpOgor
ICAgICAgICAoRXdrQ29udGV4dE1lbnVJdGVtOjpjaGVja2VkKToKKyAgICAgICAgKEV3a0NvbnRl
eHRNZW51SXRlbTo6c2V0Q2hlY2tlZCk6CisgICAgICAgIChFd2tDb250ZXh0TWVudUl0ZW06OmVu
YWJsZWQpOgorICAgICAgICAoRXdrQ29udGV4dE1lbnVJdGVtOjpzZXRFbmFibGVkKToKKyAgICAg
ICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldCk6CisgICAgICAgIChld2tfY29udGV4
dF9tZW51X2l0ZW1fdHlwZV9zZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2Fj
dGlvbl9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9zZXQpOgor
ICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldCk6CisgICAgICAgIChld2tf
Y29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVf
aXRlbV9jaGVja2VkX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tl
ZF9zZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0KToKKyAg
ICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmg6IEFkZGVk
LgorICAgICAgICAoRXdrQ29udGV4dE1lbnVJdGVtKToKKyAgICAgICAgKEV3a0NvbnRleHRNZW51
SXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9t
ZW51X3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoRXdrQ29u
dGV4dE1lbnUpOgorICAgICAgICAoRXdrQ29udGV4dE1lbnU6OmNyZWF0ZSk6CisgICAgICAgIChF
d2tDb250ZXh0TWVudTo6aXRlbXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRl
eHRfbWVudS5jcHA6IEFkZGVkLgorICAgICAgICAoY2hlY2tCYXNpY0NvbnRleHRNZW51SXRlbSk6
CisgICAgICAgIChzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcDogQWRkZWQuCisgICAgICAg
ICh0b0NvbnRleHRDbGllbnRFZmwpOgorICAgICAgICAoQ29udGV4dE1lbnVDbGllbnRFZmw6OkNv
bnRleHRNZW51Q2xpZW50RWZsKToKKyAgICAgICAgKENvbnRleHRNZW51Q2xpZW50RWZsOjpnZXRD
b250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvQ29u
dGV4dE1lbnVDbGllbnRFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
Q29udGV4dE1lbnVDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNsaWVu
dEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRleHRNZW51UHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eUVmbDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHRNZW51UHJveHlFZmw6On5XZWJDb250ZXh0TWVudVByb3h5RWZsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6c2hvd0NvbnRleHRNZW51KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6aGlkZUNvbnRleHRNZW51KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb250ZXh0TWVudVByb3h5
RWZsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y3JlYXRlKToK
KwogMjAxMi0xMS0xOSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBidWlsZGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCA3OTc5NzFkMGY1NmM5NTI0ZTAyNDQ4Y2ZkZGM0Yjll
NWVkZmExNjlkLi41NjQwZGM3Njk3ZTgyMzYzNzZjNjUzMTEyZmMxYjgzMDBmNGE5NjBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC04NzYs
OCArODc2LDggQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAg
ICAgICAgICAgICBpZiAoIShmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5wYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSkpIHsKICNlbmRpZgog
Ci0gICAgICAgICAgICAgICAgLy8gSW4gR1RLKyB1bmF2YWlsYWJsZSBpdGVtcyBhcmUgbm90IGhp
ZGRlbiBidXQgaW5zZW5zaXRpdmUKLSNpZiBQTEFURk9STShHVEspCisgICAgICAgICAgICAgICAg
Ly8gSW4gR1RLKyBhbmQgRUZMLCB1bmF2YWlsYWJsZSBpdGVtcyBhcmUgbm90IGhpZGRlbiBidXQg
aW5zZW5zaXRpdmUuCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgICAg
ICAgICAgICAgYXBwZW5kSXRlbShCYWNrSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAg
ICAgICAgICAgICAgYXBwZW5kSXRlbShGb3J3YXJkSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7
CiAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShTdG9wSXRlbSwgbV9jb250ZXh0TWVudS5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGJiODc0N2IxY2IxZjU4MzhjMmRkN2Nj
ZGRmNzgyOTExZWE2N2MxZTUuLjNiNzRlZGI1MDUzZmY3YTFjMjNkNjgxMTBmNWE1OTA5NGRlMWRl
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC00OSw2ICs0OSw4IEBAIExJU1QoQVBQ
RU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2Zvcndh
cmRfbGlzdF9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb2xvcl9waWNrZXIu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dF9tZW51X2l0ZW0uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9t
YW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19kYXRhYmFzZV9tYW5hZ2VyLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuY3BwCkBAIC03OCw2ICs4
MCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgVUlQcm9jZXNzL2VmbC9C
YXR0ZXJ5UHJvdmlkZXIuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0SGlzdG9yeUNsaWVu
dEVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcAogICAg
IFVJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwv
RmluZENsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuY3BwCkBA
IC05NSw2ICs5OCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vz
cy9lZmwvVGV4dENoZWNrZXJFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25DbGll
bnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAorICAgIFVJUHJv
Y2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJJbnNw
ZWN0b3JQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAK
QEAgLTM2Miw2ICszNjYsNyBAQCBTRVQoRVdLMlVuaXRUZXN0c19CSU5BUklFUwogICAgIHRlc3Rf
ZXdrMl9jb2xvcl9waWNrZXIKICAgICB0ZXN0X2V3azJfY29udGV4dAogICAgIHRlc3RfZXdrMl9j
b250ZXh0X2hpc3RvcnlfY2FsbGJhY2tzCisgICAgdGVzdF9ld2syX2NvbnRleHRfbWVudQogICAg
IHRlc3RfZXdrMl9jb29raWVfbWFuYWdlcgogICAgIHRlc3RfZXdrMl9kYXRhYmFzZV9tYW5hZ2Vy
CiAgICAgdGVzdF9ld2syX2Rvd25sb2FkX2pvYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggMDdjYTEyOTM1MGY0ZWRiN2UzZGI0YmY5MmFkNzBiOGMz
YTIwOWNlNC4uMjJkNjE2ODI1ZTFjZDUxODg5NWIyZTdkYzdlYzViODMyMzIyNTk1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zMyw2ICszMyw4
IEBACiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uaCIKICNpbmNsdWRlICJl
d2tfY29sb3JfcGlja2VyLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKKyNpbmNsdWRlICJl
d2tfY29udGV4dF9tZW51LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVtLmgiCiAj
aW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX2RhdGFiYXNlX21h
bmFnZXIuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKaW5kZXggYWNhMmQ0ZGVlMWFh
ZjJiODNkNjRhMGNjOGY4NDcxODNkNGY3NzkwMi4uZTcyNzkyMzM3MDZlMGQ3MDVlYmNiOWQ4ODI5
NDUzMzNhYzM0ZmI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdJbXBsLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCiAKKyNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudEVm
bC5oIgogI2luY2x1ZGUgIkVmbFNjcmVlblV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkZpbmRDbGll
bnRFZmwuaCIKICNpbmNsdWRlICJGb3JtQ2xpZW50RWZsLmgiCkBAIC00NSw2ICs0Niw3IEBACiAj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xp
c3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19jb2xvcl9waWNrZXJfcHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgImV3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0
X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfZmF2aWNvbl9kYXRhYmFzZV9wcml2YXRlLmgiCiAj
aW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmgiCkBAIC0xMTQsNiArMTE2LDcg
QEAgRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRy
PEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3MKICAgICAsIG1fcGFnZVBvbGljeUNsaWVudChQYWdl
UG9saWN5Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3BhZ2VVSUNsaWVudChQYWdl
VUlDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50KFJl
c291cmNlTG9hZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9jb250ZXh0TWVudUNs
aWVudChDb250ZXh0TWVudUNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9maW5kQ2xp
ZW50KEZpbmRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZm9ybUNsaWVudChGb3Jt
Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKQEAgLTcxNCw2
ICs3MTcsMzggQEAgdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtQ29udGVudHNTaXplQ2hhbmdlKGNv
bnN0IEludFNpemUmIHNpemUpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19URVhU
X0RJUkVDVElPTl9SSUdIVF9UT19MRUZULCBSVEwpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCwgTFRSKTsKIAordm9pZCBFd2tW
aWV3SW1wbDo6c2hvd0NvbnRleHRNZW51KFdlYkNvbnRleHRNZW51UHJveHlFZmwqIGNvbnRleHRN
ZW51UHJveHksIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgVmVjdG9y
PFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcykKK3sKKyAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgIEFTU0VSVChzZC0+YXBpKTsKKworICAgIEFTU0VS
VChjb250ZXh0TWVudVByb3h5KTsKKworICAgIGlmICghc2QtPmFwaS0+Y29udGV4dF9tZW51X3No
b3cpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NvbnRleHRNZW51KQorICAgICAgICBo
aWRlQ29udGV4dE1lbnUoKTsKKworICAgIG1fY29udGV4dE1lbnUgPSBFd2tfQ29udGV4dF9NZW51
OjpjcmVhdGUodGhpcywgY29udGV4dE1lbnVQcm94eSwgaXRlbXMpOworCisgICAgc2QtPmFwaS0+
Y29udGV4dF9tZW51X3Nob3coc2QsIHBvc2l0aW9uLngoKSwgcG9zaXRpb24ueSgpLCBtX2NvbnRl
eHRNZW51LmdldCgpKTsKK30KKwordm9pZCBFd2tWaWV3SW1wbDo6aGlkZUNvbnRleHRNZW51KCkK
K3sKKyAgICBpZiAoIW1fY29udGV4dE1lbnUpCisgICAgICAgIHJldHVybjsKKworICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisgICAgQVNTRVJUKHNkLT5hcGkpOwor
CisgICAgaWYgKHNkLT5hcGktPmNvbnRleHRfbWVudV9oaWRlKQorICAgICAgICBzZC0+YXBpLT5j
b250ZXh0X21lbnVfaGlkZShzZCk7CisKKyAgICBtX2NvbnRleHRNZW51LmNsZWFyKCk7Cit9CisK
IHZvaWQgRXdrVmlld0ltcGw6OnJlcXVlc3RQb3B1cE1lbnUoV2ViUG9wdXBNZW51UHJveHlFZmwq
IHBvcHVwTWVudVByb3h5LCBjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHRE
aXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0
ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQogewogICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuaAppbmRleCAyNGNhNGZkYmJjODI5ZmNkZDk5ZjAxOGNkZWMyY2Fi
OTQwYzk4Y2Q4Li5iZDM0MGNjMGUxYmEyZWNmM2IzOGJhZGFmODU0MWUzMGY2NmNkMTljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKQEAgLTQ2
LDYgKzQ2LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIENvbnRleHRN
ZW51Q2xpZW50RWZsOwogY2xhc3MgRmluZENsaWVudEVmbDsKIGNsYXNzIEZvcm1DbGllbnRFZmw7
CiBjbGFzcyBJbnB1dE1ldGhvZENvbnRleHRFZmw7CkBAIC01NCw2ICs1NSw4IEBAIGNsYXNzIFBh
Z2VMb2FkQ2xpZW50RWZsOwogY2xhc3MgUGFnZVBvbGljeUNsaWVudEVmbDsKIGNsYXNzIFBhZ2VV
SUNsaWVudEVmbDsKIGNsYXNzIFJlc291cmNlTG9hZENsaWVudEVmbDsKK2NsYXNzIFdlYkNvbnRl
eHRNZW51SXRlbURhdGE7CitjbGFzcyBXZWJDb250ZXh0TWVudVByb3h5RWZsOwogY2xhc3MgV2Vi
UGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUG9wdXBJdGVtOwpAQCAt
NzQsNiArNzcsNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgRXdrQ29udGV4dDsKIGNsYXNzIEV3
a0JhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIEV3a0NvbG9yUGlja2VyOworY2xhc3MgRXdrQ29udGV4
dE1lbnU7CiBjbGFzcyBFd2tQb3B1cE1lbnU7CiBjbGFzcyBFd2tTZXR0aW5nczsKIApAQCAtMTYx
LDYgKzE2NSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVxdWVzdFBvcHVwTWVudShXZWJLaXQ6
OldlYlBvcHVwTWVudVByb3h5RWZsKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6
OlRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJL
aXQ6OldlYlBvcHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOwogICAgIHZv
aWQgY2xvc2VQb3B1cE1lbnUoKTsKKyAgICAKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudShXZWJL
aXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmwqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9z
aXRpb24sIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVt
cyk7CisgICAgdm9pZCBoaWRlQ29udGV4dE1lbnUoKTsKIAogICAgIHZvaWQgdXBkYXRlVGV4dElu
cHV0U3RhdGUoKTsKIApAQCAtMjMzLDYgKzI0MCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdl
YktpdDo6UGFnZVBvbGljeUNsaWVudEVmbD4gbV9wYWdlUG9saWN5Q2xpZW50OwogICAgIE93blB0
cjxXZWJLaXQ6OlBhZ2VVSUNsaWVudEVmbD4gbV9wYWdlVUlDbGllbnQ7CiAgICAgT3duUHRyPFdl
YktpdDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsPiBtX3Jlc291cmNlTG9hZENsaWVudDsKKyAgICBP
d25QdHI8V2ViS2l0OjpDb250ZXh0TWVudUNsaWVudEVmbD4gbV9jb250ZXh0TWVudUNsaWVudDsK
ICAgICBPd25QdHI8V2ViS2l0OjpGaW5kQ2xpZW50RWZsPiBtX2ZpbmRDbGllbnQ7CiAgICAgT3du
UHRyPFdlYktpdDo6Rm9ybUNsaWVudEVmbD4gbV9mb3JtQ2xpZW50OwogI2lmIEVOQUJMRShWSUJS
QVRJT04pCkBAIC0yNTUsNiArMjYzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdG91Y2hFdmVu
dHNFbmFibGVkOwogI2VuZGlmCiAgICAgV2ViQ29yZTo6VGltZXI8RXdrVmlld0ltcGw+IG1fZGlz
cGxheVRpbWVyOworICAgIE93blB0cjxFd2tDb250ZXh0TWVudT4gbV9jb250ZXh0TWVudTsKICAg
ICBPd25QdHI8RXdrUG9wdXBNZW51PiBtX3BvcHVwTWVudTsKICAgICBPd25QdHI8V2ViS2l0OjpJ
bnB1dE1ldGhvZENvbnRleHRFZmw+IG1faW5wdXRNZXRob2RDb250ZXh0OwogICAgIE93blB0cjxF
d2tDb2xvclBpY2tlcj4gbV9jb2xvclBpY2tlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzcxN2U1
MWY4ZjdkNmYyNTViNDExYjA2NDhkODI2MTczYzBiZTVmMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwCkBAIC0w
LDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25p
Y3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51LmgiCisKKyNpbmNsdWRlICJB
UElPYmplY3QuaCIKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIldlYkNvbnRl
eHRNZW51SXRlbURhdGEuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5RWZsLmgiCisj
aW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVtLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRf
bWVudV9pdGVtX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X3ByaXZhdGUu
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworRXdrQ29udGV4dE1lbnU6OkV3a0NvbnRl
eHRNZW51KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViQ29udGV4dE1lbnVQcm94eUVmbCogY29u
dGV4dE1lbnVQcm94eSwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0
YT4mIGl0ZW1zKQorICAgIDogbV92aWV3SW1wbCh2aWV3SW1wbCkKKyAgICAsIG1fY29udGV4dE1l
bnVQcm94eShjb250ZXh0TWVudVByb3h5KQorICAgICwgbV9jb250ZXh0TWVudUl0ZW1zKDApCit7
CisgICAgY29uc3Qgc2l6ZV90IHNpemUgPSBpdGVtcy5zaXplKCk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIG1fY29udGV4dE1lbnVJdGVtcyA9IGVpbmFf
bGlzdF9hcHBlbmQobV9jb250ZXh0TWVudUl0ZW1zLCBFd2tfQ29udGV4dF9NZW51X0l0ZW06OmNy
ZWF0ZShpdGVtc1tpXSkubGVha1B0cigpKTsKK30KKworRXdrQ29udGV4dE1lbnU6On5Fd2tDb250
ZXh0TWVudSgpCit7CisgICAgdm9pZCogZGF0YTsKKyAgICBFSU5BX0xJU1RfRlJFRShtX2NvbnRl
eHRNZW51SXRlbXMsIGRhdGEpCisgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4
dF9NZW51X0l0ZW0qPihkYXRhKTsKK30KKwordm9pZCBFd2tDb250ZXh0TWVudTo6aGlkZSgpCit7
CisgICAgbV92aWV3SW1wbC0+aGlkZUNvbnRleHRNZW51KCk7Cit9CisKK3ZvaWQgRXdrX0NvbnRl
eHRfTWVudTo6YXBwZW5kSXRlbShFd2tDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCit7CisgICAgbV9j
b250ZXh0TWVudUl0ZW1zID0gZWluYV9saXN0X2FwcGVuZChtX2NvbnRleHRNZW51SXRlbXMsIGl0
ZW0pOworfQorCit2b2lkIEV3a19Db250ZXh0X01lbnU6OnJlbW92ZUl0ZW0oRXdrQ29udGV4dE1l
bnVJdGVtKiBpdGVtKQoreworICAgIG1fY29udGV4dE1lbnVJdGVtcyA9IGVpbmFfbGlzdF9yZW1v
dmUobV9jb250ZXh0TWVudUl0ZW1zLCBpdGVtKTsKK30KKwordm9pZCBFd2tDb250ZXh0TWVudTo6
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1E
YXRhJiBpdGVtKQoreworICAgIG1fY29udGV4dE1lbnVQcm94eS0+Y29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQoaXRlbSk7IAorfSAKKworRXdrX0NvbnRleHRfTWVudV9JdGVtKiBld2tfY29udGV4dF9t
ZW51X2l0ZW1fbmV3KEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3a19Db250ZXh0
X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBjb25zdCBjaGFyKiB0aXRsZSwgRWluYV9Cb29sIGNo
ZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkLCBFd2tfQ29udGV4dF9NZW51KiBwYXJlbnRNZW51LCBF
d2tfQ29udGV4dF9NZW51KiBzdWJNZW51KQoreworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSog
bmV3SXRlbSA9IEV3a19Db250ZXh0X01lbnVfSXRlbTo6Y3JlYXRlKHR5cGUsIGFjdGlvbiwgdGl0
bGUsIGNoZWNrZWQsIGVuYWJsZWQsIHBhcmVudE1lbnUsIHN1Yk1lbnUpLmxlYWtQdHIoKTsKKwor
ICAgIHJldHVybiBuZXdJdGVtOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVt
X2FwcGVuZChFd2tfQ29udGV4dF9NZW51KiBtZW51LCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0
ZW0pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIDApOworCisg
ICAgbWVudS0+YXBwZW5kSXRlbShpdGVtKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitFaW5h
X0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3JlbW92ZShFd2tfQ29udGV4dF9NZW51KiBtZW51
LCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKG1lbnUsIDApOworCisgICAgbWVudS0+cmVtb3ZlSXRlbShpdGVtKTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9oaWRlKEV3
a19Db250ZXh0X01lbnUqIG1lbnUpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKG1lbnUsIGZhbHNlKTsKKworICAgIG1lbnUtPmhpZGUoKTsKKworICAgIHJldHVybiB0cnVl
OworfQorCitjb25zdCBFaW5hX0xpc3QqIGV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnN0
IEV3a19Db250ZXh0X01lbnUqIG1lbnUpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKG1lbnUsIDApOworCisgICAgcmV0dXJuIG1lbnUtPml0ZW1zKCk7Cit9CisKK0VpbmFf
Qm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUqIG1lbnUs
IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwobWVudSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlIHR5
cGUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlPihpdGVtLT50eXBl
KCkpOworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbiA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uPihpdGVtLT5hY3Rpb24oKSk7CisKKyAgICBXZWJD
b250ZXh0TWVudUl0ZW1EYXRhIG5ld0l0ZW0odHlwZSwgYWN0aW9uLCBpdGVtLT50aXRsZSgpLCBp
dGVtLT5lbmFibGVkKCksIGl0ZW0tPmNoZWNrZWQoKSk7CisgICAgbWVudS0+Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQobmV3SXRlbSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42OGJjZTE1MjI2YTk1YjQwZDAwZjA0MGQwMDczODRhMWY3YzM3YTIyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVu
dS5oCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8qKgorICogQGZpbGUgICAgZXdrX2NvbnRleHRfbWVudS5oCisgKiBAYnJpZWYgICBEZXNjcmli
ZXMgdGhlIEV3ayBDb250ZXh0IE1lbnUgQVBJLgorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRf
bWVudV9oCisjZGVmaW5lIGV3a19jb250ZXh0X21lbnVfaAorCisjaW5jbHVkZSAiZXdrX2NvbnRl
eHRfbWVudV9pdGVtLmgiCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMK
K2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBFd2tf
Q29udGV4dF9NZW51ICovCit0eXBlZGVmIHN0cnVjdCBFd2tDb250ZXh0TWVudSBFd2tfQ29udGV4
dF9NZW51OworCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgaXRlbSBvZiB0aGUgY29udGV4dCBtZW51
LgorICoKKyAqIEBwYXJhbSB0eXBlIHNwZWNpZmllcyBhIHR5cGUgb2YgdGhlIGl0ZW0KKyAqIEBw
YXJhbSBhY3Rpb24gc3BlY2lmaWVzIGEgYWN0aW9uIG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gdGl0
bGUgc3BlY2lmaWVzIGEgdGl0bGUgb2YgdGhlIGl0ZW0KKyAqIEBwYXJhbSBjaGVja2VkIEBjIEVJ
TkFfVFJVRSBpZiB0aGUgaXRlbSBzaG91bGQgYmUgdG9nZ2xlZCBvciBAYyBFSU5BX0ZBTFNFIGlm
IG5vdAorICogQHBhcmFtIGVuYWJsZWQgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgaXRlbSBv
ciBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKKyAqIEBwYXJhbSBwYXJlbnRfbWVudSBzcGVjaWZp
ZXMgYSBwYXJlbnQgbWVudSBvZiB0aGUgaXRlbQorICogQHBhcmFtIHN1Ym1lbnUgc3BlY2lmaWVz
IGEgc3VibWVudSBvZiB0aGUgaXRlbQorICogQHJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgbmV3
IGl0ZW0gb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFd2tfQ29u
dGV4dF9NZW51X0l0ZW0gKmV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRXdrX0NvbnRleHRfTWVu
dV9JdGVtX1R5cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIGNv
bnN0IGNoYXIgKnRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQsIEV3
a19Db250ZXh0X01lbnUgKnBhcmVudF9tZW51LCBFd2tfQ29udGV4dF9NZW51ICpzdWJfbWVudSk7
CisKKy8qKgorICogQXBwZW5kcyB0aGUgaXRlbSBvZiB0aGUgY29udGV4dCBtZW51LgorICoKKyAq
IEBwYXJhbSBtZW51IHRoZSBjb250ZXh0IG1lbnUgCisgKiBAcGFyYW0gaXRlbSB0aGUgaXRlbSB0
byBhcHBlbmQKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFM
U0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1f
YXBwZW5kKEV3a19Db250ZXh0X01lbnUgKm1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSAqaXRl
bSk7CisKKy8qKgorICogUmVtb3ZlcyB0aGUgaXRlbSBvZiB0aGUgY29udGV4dCBtZW51LgorICoK
KyAqIEBwYXJhbSBtZW51IHRoZSBjb250ZXh0IG1lbnUgCisgKiBAcGFyYW0gaXRlbSB0aGUgaXRl
bSB0byByZW1vdmUKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFf
RkFMU0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0
ZW1fcmVtb3ZlKEV3a19Db250ZXh0X01lbnUgKm1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSAq
aXRlbSk7CisKKy8qKgorICogSGlkZXMgdGhlIGNvbnRleHQgbWVudS4KKyAqCisgKiBAcGFyYW0g
bWVudSB0aGUgY29udGV4dCBtZW51IHRvIGhpZGUKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBl
d2tfY29udGV4dF9tZW51X2hpZGUoRXdrX0NvbnRleHRfTWVudSAqbWVudSk7CisKKy8qKgorICog
R2V0cyB0aGUgbGlzdCBvZiBpdGVtcy4KKyAqCisgKiBAcGFyYW0gbyB0aGUgY29udGV4dCBtZW51
IHRvIGdldCBsaXN0IG9mIHRoZSBpdGVtcworICogQHJldHVybiB0aGUgbGlzdCBvZiB0aGUgaXRl
bXMgb24gc3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKKyAqLworRUFQSSBjb25zdCBFaW5h
X0xpc3QgKmV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUg
Km8pOworCisvKioKKyAqIFNlbGVjdHMgdGhlIGl0ZW0gZnJvbSB0aGUgY29udGV4dCBtZW51Lgor
ICoKKyAqIEBwYXJhbSBtZW51IHRoZSBjb250ZXh0IG1lbnUKKyAqIEBwYXJhbSBpdGVtIHRoZSBp
dGVtIGlzIHNlbGVjdGVkCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBj
IEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9t
ZW51X2l0ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUgKm1lbnUsIEV3a19Db250ZXh0X01lbnVf
SXRlbSAqaXRlbSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAv
KiBld2tfY29udGV4dF9tZW51X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW0uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFl
Y2FmZjAzNzg0YTMzNTg4YjljN2MzZDlmN2JjYTJhYzg1YTkwZWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW0u
Y3BwCkBAIC0wLDAgKzEsMjYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0ZW0uaCIK
KworI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmgiCisjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworRXdrQ29udGV4dE1l
bnVJdGVtOjpFd2tDb250ZXh0TWVudUl0ZW0oY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYg
aXRlbSkKKyAgICA6IG1fdHlwZShzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlw
ZT4oaXRlbS50eXBlKCkpKQorICAgICwgbV9hY3Rpb24oc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRf
TWVudV9JdGVtX0FjdGlvbj4oaXRlbS5hY3Rpb24oKSkpCisgICAgLCBtX3RpdGxlKGl0ZW0udGl0
bGUoKS51dGY4KCkuZGF0YSgpKQorICAgICwgbV9pc0NoZWNrZWQoaXRlbS5jaGVja2VkKCkpCisg
ICAgLCBtX2lzRW5hYmxlZChpdGVtLmVuYWJsZWQoKSkKKyAgICAsIG1fcGFyZW50TWVudSgwKQor
ICAgICwgbV9zdWJNZW51KDApCit7Cit9CisKK0V3a0NvbnRleHRNZW51SXRlbTo6RXdrQ29udGV4
dE1lbnVJdGVtKEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3a19Db250ZXh0X01l
bnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBjb25zdCBjaGFyKiB0aXRsZSwgRWluYV9Cb29sIGNoZWNr
ZWQsIEVpbmFfQm9vbCBlbmFibGVkLCBFd2tfQ29udGV4dF9NZW51KiBwYXJlbnRNZW51LCBFd2tf
Q29udGV4dF9NZW51KiBzdWJNZW51KQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX2FjdGlv
bihhY3Rpb24pCisgICAgLCBtX3RpdGxlKHRpdGxlKQorICAgICwgbV9pc0NoZWNrZWQoY2hlY2tl
ZCkKKyAgICAsIG1faXNFbmFibGVkKGVuYWJsZWQpCisgICAgLCBtX3BhcmVudE1lbnUocGFyZW50
TWVudSkKKyAgICAsIG1fc3ViTWVudShzdWJNZW51KQoreworfQorCitFd2tfQ29udGV4dF9NZW51
X0l0ZW1fVHlwZSBFd2tDb250ZXh0TWVudUl0ZW06OnR5cGUoKSBjb25zdAoreworICAgIHJldHVy
biBtX3R5cGU7Cit9CisKK3ZvaWQgRXdrQ29udGV4dE1lbnVJdGVtOjpzZXRUeXBlKEV3a19Db250
ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUpCit7CisgICAgbV90eXBlID0gdHlwZTsKK30KKworRXdr
X0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBFd2tDb250ZXh0TWVudUl0ZW06OmFjdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fYWN0aW9uOworfQorCit2b2lkIEV3a0NvbnRleHRNZW51SXRl
bTo6c2V0QWN0aW9uKEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKQoreworICAg
IG1fYWN0aW9uID0gYWN0aW9uOworfQorCitjb25zdCBjaGFyKiBFd2tDb250ZXh0TWVudUl0ZW06
OnRpdGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90aXRsZTsKK30KKwordm9pZCBFd2tDb250
ZXh0TWVudUl0ZW06OnNldFRpdGxlKGNvbnN0IGNoYXIqIHRpdGxlKQoreworICAgIG1fdGl0bGUg
PSB0aXRsZTsKK30KKworYm9vbCBFd2tDb250ZXh0TWVudUl0ZW06OmNoZWNrZWQoKSBjb25zdAor
eworICAgIHJldHVybiBtX2lzQ2hlY2tlZDsKK30KKwordm9pZCBFd2tDb250ZXh0TWVudUl0ZW06
OnNldENoZWNrZWQoYm9vbCBjaGVja2VkKQoreworICAgIG1faXNDaGVja2VkID0gY2hlY2tlZDsK
K30KKworYm9vbCBFd2tDb250ZXh0TWVudUl0ZW06OmVuYWJsZWQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2lzRW5hYmxlZDsKK30KKwordm9pZCBFd2tDb250ZXh0TWVudUl0ZW06OnNldEVuYWJs
ZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1faXNFbmFibGVkID0gZW5hYmxlZDsKK30KKworRXdr
X0NvbnRleHRfTWVudV9JdGVtX1R5cGUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0KGNv
bnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoaXRlbSwgRVdLX0FDVElPTl9UWVBFKTsKKworICAgIHJldHVybiBpdGVt
LT50eXBlKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQo
RXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0
eXBlKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7
CisKKyAgICBpdGVtLT5zZXRUeXBlKHR5cGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0V3
a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9n
ZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX05PX0FD
VElPTik7CisKKyAgICByZXR1cm4gaXRlbS0+YWN0aW9uKCk7Cit9CisKK0VpbmFfQm9vbCBld2tf
Y29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0s
IEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKQoreworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICBpdGVtLT5zZXRBY3Rpb24o
YWN0aW9uKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBjaGFyKiBld2tfY29udGV4
dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkK
K3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgMCk7CisKKyAgICBy
ZXR1cm4gaXRlbS0+dGl0bGUoKTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRl
bV90aXRsZV9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBjb25zdCBjaGFyKiB0aXRs
ZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOwor
CisgICAgaXRlbS0+c2V0VGl0bGUodGl0bGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0Vp
bmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQoY29uc3QgRXdrX0NvbnRl
eHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChpdGVtLCBmYWxzZSk7CisKKyAgICByZXR1cm4gaXRlbS0+Y2hlY2tlZCgpOworfQorCitFaW5h
X0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfc2V0KEV3a19Db250ZXh0X01lbnVf
SXRlbSogaXRlbSwgRWluYV9Cb29sIGNoZWNrZWQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKKworICAgIGl0ZW0tPnNldENoZWNrZWQoY2hlY2tl
ZCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVf
aXRlbV9lbmFibGVkX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNlKTsKKyAgICAKKyAg
ICByZXR1cm4gaXRlbS0+ZW5hYmxlZCgpOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX2VuYWJsZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgRWluYV9Cb29s
IGVuYWJsZWQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZh
bHNlKTsKKworICAgIGl0ZW0tPnNldEVuYWJsZWQoZW5hYmxlZCk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX05PX0FDVElPTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24pOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09Q
RU5fTElOS19JTl9ORVdfV0lORE9XLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlu
a0luTmV3V2luZG93KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19ET1dOTE9BRF9MSU5LX1RPX0RJU0ssIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzayk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9MSU5LX1RPX0NMSVBCT0FSRCwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9JTUFHRV9JTl9O
RVdfV0lORE9XLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRv
dyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfRE9XTkxPQURfSU1BR0VfVE9fRElTSywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRG93
bmxvYWRJbWFnZVRvRGlzayk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfQ09QWV9JTUFHRV9UT19DTElQQk9BUkQsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1VSTF9UT19DTElQ
Qk9BUkQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJk
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19PUEVOX0ZSQU1FX0lOX05FV19XSU5ET1csIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09w
ZW5GcmFtZUluTmV3V2luZG93KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19HT19CQUNLLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdHb0JhY2spOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZPUldBUkQs
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RPUCwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnU3RvcCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfUkVMT0FELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdS
ZWxvYWQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0NVVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ3V0KTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QQVNURSwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnUGFzdGUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFTEVDVF9BTEwsIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ1NlbGVjdEFsbCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfR1VFU1MsIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ1NwZWxsaW5nR3Vlc3MpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX05PX0dVRVNTRVNfRk9VTkQsIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVfU1BFTExJTkcsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUFSTl9TUEVMTElORywgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1RIRVIsIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ090aGVyKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19TRUFSQ0hfSU5fU1BPVExJR0hULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdTZWFyY2hJblNwb3RsaWdodCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfU0VBUkNIX1dFQiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnU2VhcmNoV2ViKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19MT09LX1VQX0lOX0RJQ1RJT05BUlksIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9XSVRIX0RFRkFVTFRfQVBQTElDQVRJ
T04sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5XaXRoRGVmYXVsdEFwcGxpY2F0aW9u
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BE
RkFDVFVBTF9TSVpFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZBY3R1YWxTaXplKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlpPT01f
SU4sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERlpvb21Jbik7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZaT09NX09VVCwgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtUERGWm9vbU91dCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9QREZBVVRPX1NJWkUsIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVBERkF1dG9TaXplKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1BERlNJTkdMRV9QQUdFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZT
aW5nbGVQYWdlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1BERkZBQ0lOR19QQUdFUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGRmFjaW5n
UGFnZXMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fUERGQ09OVElOVU9VUywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGQ29udGludW91cyk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZO
RVhUX1BBR0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERk5leHRQYWdlKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlBSRVZJT1VTX1BB
R0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERlByZXZpb3VzUGFnZSk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9MSU5LLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluayk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX0dSQU1NQVIsIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUxMSU5HX01FTlUsIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0hPV19TUEVMTElOR19QQU5FTCwg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX1NQRUxM
SU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19TUEVM
TElOR19XSElMRV9UWVBJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxp
bmdXaGlsZVR5cGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfQ0hFQ0tfR1JBTU1BUl9XSVRIX1NQRUxMSU5HLCBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0ZPTlRfTUVOVSwgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfRk9OVFMsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ1Nob3dGb250cyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfQk9MRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
Qm9sZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfSVRBTElDLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1VOREVSTElO
RSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PVVRMSU5FLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVFlMRVMsIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ1N0eWxlcyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfU0hPV19DT0xPUlMsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1No
b3dDb2xvcnMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX1NQRUVDSF9NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hN
ZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19TVEFSVF9TUEVBS0lORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVh
a2luZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfU1RPUF9TUEVBS0lORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFr
aW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19XUklUSU5HX0RJUkVDVElPTl9NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdX
cml0aW5nRGlyZWN0aW9uTWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfREVGQVVMVF9ESVJFQ1RJT04sIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0xFRlRfVE9fUklHSFQsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19SSUdIVF9UT19MRUZULCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdSaWdodFRvTGVmdCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfUERGU0lOR0xFX1BBR0VfU0NST0xMSU5HLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdQREZTaW5nbGVQYWdlU2Nyb2xsaW5nKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19QREZGQUNJTkdfUEFH
RVNfU0NST0xMSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNpbmdQYWdlc1Nj
cm9sbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfSU5TUEVDVF9FTEVNRU5ULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJbnNw
ZWN0RWxlbWVudCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fTUVOVSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnVGV4dERpcmVjdGlvbk1lbnUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX0RFRkFVTFQsIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0KTsKK0NPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9MRUZU
X1RPX1JJR0hULCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTGVmdFRv
UmlnaHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9PUEVOX01FRElBX0lOX05FV19XSU5ET1csIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5NZWRpYUluTmV3V2luZG93KTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX01FRElB
X0xJTktfVE9fQ0xJUEJPQVJELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5TWVkaWFM
aW5rVG9DbGlwYm9hcmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX1RPR0dMRV9NRURJQV9DT05UUk9MUywgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9scyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVE9HR0xFX01FRElBX0xPT1AsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCk7CitDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRU5URVJfVklERU9fRlVMTFNDUkVF
TiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW4pOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX01FRElB
X1BMQVlfUEFVU0UsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGxheVBhdXNlKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19N
RURJQV9NVVRFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGUpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fQkFTRV9DVVNUT01f
VEFHLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1CYXNlQ3VzdG9tVGFnKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0NVU1RPTV9UQUdfTk9fQUNU
SU9OLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1DdXN0b21UYWdOb0FjdGlvbik7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9MQVNUX0NVU1RPTV9U
QUcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbUxhc3RDdXN0b21UYWcpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fQkFTRV9BUFBMSUNBVElPTl9U
QUcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0
ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVf
aXRlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU5NmVhZGUyZjg2ZGFhNjZjYzkyMmQ0Yzk2ZDE4NWJjZDg0Zjdh
Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9tZW51X2l0ZW0uaApAQCAtMCwwICsxLDI0MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19jb250ZXh0X21lbnVfaXRl
bS5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBDb250ZXh0IE1lbnUgSXRlbSBBUEku
CisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9tZW51X2l0ZW1faAorI2RlZmluZSBld2tfY29u
dGV4dF9tZW51X2l0ZW1faAorCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3Bs
dXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBF
d2tfUG9wdXBfTWVudV9JdGVtICovCit0eXBlZGVmIHN0cnVjdCBFd2tDb250ZXh0TWVudUl0ZW0g
RXdrX0NvbnRleHRfTWVudV9JdGVtOworCisvKioKKyAqIFxlbnVtICAgIF9Fd2tfQ29udGV4dF9N
ZW51X0l0ZW1fVHlwZQorICogQGJyaWVmICAgRGVmaW5lcyB0aGUgdHlwZXMgb2YgdGhlIGl0ZW1z
IGZvciB0aGUgY29udGV4dCBtZW51LgorICogQGluZm8gICAgS2VlcCB0aGlzIGluIHN5bmMgd2l0
aCBDb250ZXh0TWVudUl0ZW0uaAorICovCit0eXBlZGVmIGVudW0geworICAgIEVXS19BQ1RJT05f
VFlQRSwKKyAgICBFV0tfQ0hFQ0tBQkxFX0FDVElPTl9UWVBFLAorICAgIEVXS19TRVBBUkFUT1Jf
VFlQRSwKKyAgICBFV0tfU1VCTUVOVV9UWVBFCit9IEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBl
OworCisvKioKKyAqIFxlbnVtICAgIF9Fd2tfQ29udGV4dF9NZW51X0FjdGlvbgorICogQGJyaWVm
ICAgUHJvdmlkZXMgdGhlIGFjdGlvbnMgb2YgaXRlbXMgZm9yIHRoZSBjb250ZXh0IG1lbnUuCisg
KiBAaW5mbyAgICBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIENvbnRleHRNZW51SXRlbS5oCisgKi8K
K3R5cGVkZWYgZW51bSB7CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19BQ1RJT04s
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJTktfSU5fTkVXX1dJTkRPVywK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RPV05MT0FEX0xJTktfVE9fRElTSywKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTElOS19UT19DTElQQk9BUkQsCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0lNQUdFX0lOX05FV19XSU5ET1csCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19ET1dOTE9BRF9JTUFHRV9UT19ESVNLLAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9JTUFHRV9UT19DTElQQk9BUkQsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZX0lNQUdFX1VSTF9UT19DTElQQk9BUkQsCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0ZSQU1FX0lOX05FV19XSU5ET1csCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZLAorICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfR09fQkFDSywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZPUldBUkQs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QLAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfUkVMT0FELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ1VULAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUEFTVEUsCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19TRUxFQ1RfQUxMLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BF
TExJTkdfR1VFU1MsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19HVUVTU0VTX0ZP
VU5ELAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX1NQRUxMSU5HLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTEVBUk5fU1BFTExJTkcsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19PVEhFUiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NF
QVJDSF9JTl9TUE9UTElHSFQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUFSQ0hf
V0VCLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTE9PS19VUF9JTl9ESUNUSU9OQVJZ
LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1BFTl9XSVRIX0RFRkFVTFRfQVBQTElD
QVRJT04sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERkFDVFVBTF9TSVpFLAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9QREZaT09NX0lOLAorICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9QREZaT09NX09VVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQVVUT19TSVpFLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZTSU5HTEVfUEFHRSwKKyAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fUERGRkFDSU5HX1BBR0VTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9Q
REZDT05USU5VT1VTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZORVhUX1BBR0UsCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BERlBSRVZJT1VTX1BBR0UsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJTksgPSAyMDAwLAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfSUdOT1JFX0dSQU1NQVIsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19T
UEVMTElOR19NRU5VLCAvKio8IHNwZWxsaW5nIG9yIHNwZWxsaW5nL2dyYW1tYXIgc3ViLW1lbnUg
Ki8KKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfU1BFTExJTkdfUEFORUwsCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19TUEVMTElORywKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX1NQRUxMSU5HX1dISUxFX1RZUElORywKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX0dSQU1NQVJfV0lUSF9TUEVMTElORywKKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0ZPTlRfTUVOVSwgLyoqPCBmb250IHN1Yi1tZW51ICov
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0ZPTlRTLAorICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfQk9MRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lU
QUxJQywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1VOREVSTElORSwKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX09VVExJTkUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19TVFlMRVMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0NPTE9SUywK
KyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUVDSF9NRU5VLCAvKio8IHNwZWVjaCBz
dWItbWVudSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RBUlRfU1BFQUtJTkcs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVE9QX1NQRUFLSU5HLAorICAgIEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfV1JJVElOR19ESVJFQ1RJT05fTUVOVSwgLyoqPCB3cml0aW5n
IGRpcmVjdGlvbiBzdWItbWVudSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfREVG
QVVMVF9ESVJFQ1RJT04sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUZUX1RPX1JJ
R0hULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUklHSFRfVE9fTEVGVCwKKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERlNJTkdMRV9QQUdFX1NDUk9MTElORywKKyAgICBF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERkZBQ0lOR19QQUdFU19TQ1JPTExJTkcsCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19JTlNQRUNUX0VMRU1FTlQsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9NRU5VLCAvKio8IHRleHQgZGlyZWN0aW9u
IHN1Yi1tZW51ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElP
Tl9ERUZBVUxULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05f
TEVGVF9UT19SSUdIVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNU
SU9OX1JJR0hUX1RPX0xFRlQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX09QRU5fTUVESUFf
SU5fTkVXX1dJTkRPVywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTUVESUFf
TElOS19UT19DTElQQk9BUkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVf
TUVESUFfQ09OVFJPTFMsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVE
SUFfTE9PUCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0VOVEVSX1ZJREVPX0ZVTExT
Q1JFRU4sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19NRURJQV9QTEFZX1BBVVNFLAor
ICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTUVESUFfTVVURSwKKyAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fQkFTRV9DVVNUT01fVEFHID0gNTAwMCwKKyAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fQ1VTVE9NX1RBR19OT19BQ1RJT04gPSA1OTk4LAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9MQVNUX0NVU1RPTV9UQUcgPSA1OTk5LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9C
QVNFX0FQUExJQ0FUSU9OX1RBRyA9IDEwMDAwCit9IEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rp
b247CisKKy8qKgorICogR2V0cyB0eXBlIG9mIHRoZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRo
ZSBpdGVtIHRvIGdldCB0aGUgdHlwZQorICogQHJldHVybiB0eXBlIG9mIHRoZSBpdGVtIG9uIHN1
Y2Nlc3Mgb3IgQGMgRVdLX0FDVElPTl9UWVBFIG9uIGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19j
b250ZXh0X21lbnVfaXRlbV90eXBlX3NldAorICovCitFQVBJIEV3a19Db250ZXh0X01lbnVfSXRl
bV9UeXBlIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfQ29udGV4dF9N
ZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNldHMgdGhlIHR5cGUgb2YgaXRlbS4KKyAqCisgKiBA
cGFyYW0gbyB0aGUgaXRlbSB0byBzZXQgdGhlIHR5cGUKKyAqIEBwYXJhbSB0eXBlIGEgbmV3IHR5
cGUgZm9yIHRoZSBpdGVtIG9iamVjdAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cywgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9t
ZW51X2l0ZW1fdHlwZV9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9p
dGVtX3R5cGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgRXdrX0NvbnRleHRfTWVudV9J
dGVtX1R5cGUgdHlwZSk7CisKKy8qKgorICogR2V0cyBhbiBhY3Rpb24gb2YgdGhlIGl0ZW0uCisg
KgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gZ2V0IHRoZSBhY3Rpb24KKyAqIEByZXR1cm4gYW4g
YWN0aW9uIG9mIHRoZSBpdGVtIG9uIHN1Y2Nlc3Mgb3IgQGMgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19OT19BQ1RJT04gb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9p
dGVtX2FjdGlvbl9zZXQKKyAqLworRUFQSSBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGV3
a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRl
bSAqbyk7CisKKy8qKgorICogU2V0cyBhbiBhY3Rpb24gb2YgdGhlIGl0ZW0uCisgKgorICogQHBh
cmFtIG8gdGhlIGl0ZW0gdG8gc2V0IHRoZSBhY3Rpb24KKyAqIEBwYXJhbSBhY3Rpb24gYSBuZXcg
YWN0aW9uIGZvciB0aGUgaXRlbSBvYmplY3QKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1
Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRl
eHRfbWVudV9pdGVtX2FjdGlvbl9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRf
bWVudV9pdGVtX2FjdGlvbl9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFd2tfQ29udGV4
dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbik7CisKKy8qKgorICogR2V0cyBhIHRpdGxlIG9mIHRo
ZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGdldCB0aGUgdGl0bGUKKyAqIEBy
ZXR1cm4gYSB0aXRsZSBvZiB0aGUgaXRlbSBvbiBzdWNjZXNzLCBvciBAYyBOVUxMIG9uIGZhaWx1
cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9zZXQKKyAqLworRUFQ
SSBjb25zdCBjaGFyICpld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGNvbnN0IEV3a19D
b250ZXh0X01lbnVfSXRlbSAqbyk7CisKKy8qKgorICogU2V0cyBhIHRpdGxlIG9mIHRoZSBpdGVt
LgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIHNldCB0aGUgdGl0bGUKKyAqIEBwYXJhbSB0
aXRsZSBhIG5ldyB0aXRsZSBmb3IgdGhlIGl0ZW0gb2JqZWN0CisgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqCisgKiBAc2Vl
IGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdr
X2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIGNv
bnN0IGNoYXIgKnRpdGxlKTsKKworLyoqCisgKiBRdWVyaWVzIGlmIHRoZSBpdGVtIGlzIHRvZ2ds
ZWQuCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gcXVlcnkgaWYgdGhlIGl0ZW0gaXMgdG9n
Z2xlZAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGl0ZW0gaXMgdG9nZ2xlZCBvciBA
YyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3
a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0
ZW0gKm8pOworCisvKioKKyAqIFNldHMgaWYgdGhlIGl0ZW0gc2hvdWxkIGJlIHRvZ2dsZWQuCisg
KgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gYmUgdG9nZ2xlZAorICogQHBhcmFtIGNoZWNrZWQg
QGMgRUlOQV9UUlVFIGlmIHRoZSBpdGVtIHNob3VsZCBiZSB0b2dnbGVkIG9yIEBjIEVJTkFfRkFM
U0UgaWYgbm90CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFf
RkFMU0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0
ZW1fY2hlY2tlZF9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBFaW5hX0Jvb2wgY2hlY2tl
ZCk7CisKKy8qKgorICogR2V0cyBpZiB0aGUgaXRlbSBpcyBlbmFibGVkLgorICoKKyAqIEBwYXJh
bSBvIHRoZSBpdGVtIHRvIGdldCBlbmFibGVkIHN0YXRlCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBpZiBpdCdzIGVuYWJsZWQsIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKKyAq
CisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldAorICovCitFQVBJIEVp
bmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQoY29uc3QgRXdrX0NvbnRl
eHRfTWVudV9JdGVtICpvKTsKKworLyoqCisgKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBpdGVtLgor
ICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGVuYWJsZS9kaXNhYmxlCisgKiBAcGFyYW0gZW5h
YmxlZCBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBpdGVtIG9yIEBjIEVJTkFfRkFMU0UgdG8g
ZGlzYWJsZQorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlOQV9G
QUxTRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxl
ZF9nZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRf
c2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSAqbywgRWluYV9Cb29sIGVuYWJsZWQpOworCisjaWZk
ZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogZXdrX2NvbnRleHRfbWVudV9p
dGVtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZjkx
MDBlYTgzZjExZjNjMjdhNmM3NmY3MmQ2MzZkMzVlOTQ4NzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJp
dmF0ZS5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3Vu
ZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19j
b250ZXh0X21lbnVfaXRlbV9wcml2YXRlX2gKKworI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmlu
Zy5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKKyNpbmNsdWRlICJld2tf
Y29udGV4dF9tZW51LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVtLmgiCisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworLyoqCisgKiBcc3RydWN0ICBFd2tfQ29udGV4dF9N
ZW51X0l0ZW0KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBjb250ZXh0IG1lbnUgaXRlbSBkYXRh
LgorICovCitjbGFzcyBFd2tDb250ZXh0TWVudUl0ZW0geworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEV3a0NvbnRleHRNZW51SXRlbT4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgRXdrX0NvbnRleHRfTWVudV9JdGVtKGl0ZW0pKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFz
c093blB0cjxFd2tDb250ZXh0TWVudUl0ZW0+IGNyZWF0ZShFd2tfQ29udGV4dF9NZW51X0l0ZW1f
VHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgY29uc3QgY2hh
ciogdGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCwgRXdrQ29udGV4
dE1lbnUqIHBhcmVudE1lbnUsIEV3a0NvbnRleHRNZW51KiBzdWJNZW51KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tfQ29udGV4dF9NZW51X0l0ZW0odHlwZSwgYWN0aW9u
LCB0aXRsZSwgY2hlY2tlZCwgZW5hYmxlZCwgcGFyZW50TWVudSwgc3ViTWVudSkpOworICAgIH0K
KworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRBY3Rpb24oRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbik7CisKKyAgICBjb25z
dCBjaGFyKiB0aXRsZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgY2hhciopOwor
CisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSgpIGNvbnN0OworICAgIHZvaWQg
c2V0VHlwZShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSk7CisKKyAgICBib29sIGNoZWNrZWQo
KSBjb25zdDsKKyAgICB2b2lkIHNldENoZWNrZWQoYm9vbCk7CisKKyAgICBib29sIGVuYWJsZWQo
KSBjb25zdDsKKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgRXdrQ29udGV4dE1lbnVJdGVtKGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVt
RGF0YSYpOworICAgIEV3a0NvbnRleHRNZW51SXRlbShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlw
ZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgY29uc3QgY2hhciog
dGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCwgRXdrQ29udGV4dE1l
bnUqIHBhcmVudE1lbnUsIEV3a0NvbnRleHRNZW51KiBzdWJNZW51KTsKKworICAgIEV3a19Db250
ZXh0X01lbnVfSXRlbV9UeXBlIG1fdHlwZTsKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0
aW9uIG1fYWN0aW9uOworCisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1fdGl0bGU7CisgICAgCisg
ICAgYm9vbCBtX2lzQ2hlY2tlZDsKKyAgICBib29sIG1faXNFbmFibGVkOworCisgICAgRXdrX0Nv
bnRleHRfTWVudSogbV9wYXJlbnRNZW51OworICAgIEV3a19Db250ZXh0X01lbnUqIG1fc3ViTWVu
dTsKK307CisKKyNlbmRpZiAvLyBld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51
X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X21lbnVfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3NjlhMGM2ZGNlNjQzY2U3NmY0OWYxNDQ2MWU3
NmUzMDc2ZWNmZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9tZW51X3ByaXZhdGUuaApAQCAtMCwwICsxLDY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
CisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRfbWVudV9w
cml2YXRlX2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfbWVudV9wcml2YXRlX2gKKworI2luY2x1ZGUg
IldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X2l0
ZW0uaCIKKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YTsKK2NsYXNzIFdlYkNvbnRleHRNZW51UHJveHlFZmw7Cit9CisKK2Ns
YXNzIEV3a1ZpZXdJbXBsOworCitjbGFzcyBFd2tDb250ZXh0TWVudSB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8RXdrQ29udGV4dE1lbnU+IGNyZWF0ZShFd2tWaWV3SW1wbCogdmll
d0ltcGwsIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbCogY29udGV4dE1lbnVQcm94eSwg
Y29uc3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tDb250ZXh0TWVudSh2aWV3SW1wbCwg
Y29udGV4dE1lbnVQcm94eSwgaXRlbXMpKTsKKyAgICB9CisKKyAgICB+RXdrQ29udGV4dE1lbnUo
KTsKKworICAgIHZvaWQgaGlkZSgpOworICAgIHZvaWQgYXBwZW5kSXRlbShFd2tDb250ZXh0TWVu
dUl0ZW0qKTsKKyAgICB2b2lkIHJlbW92ZUl0ZW0oRXdrQ29udGV4dE1lbnVJdGVtKik7CisKKyAg
ICBjb25zdCBFaW5hX0xpc3QqIGl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0TWVudUl0
ZW1zOyB9CisgICAgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJLaXQ6Oldl
YkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pOworCitwcml2YXRlOgorICAgIEV3a0NvbnRleHRN
ZW51KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZs
KiwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKTsK
KworICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOworICAgIFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eUVmbCogbV9jb250ZXh0TWVudVByb3h5OworICAgIEVpbmFfTGlzdCogbV9jb250ZXh0
TWVudUl0ZW1zOworfTsKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X21lbnVfcHJpdmF0ZV9oCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDc1MDE2
MTE3NGI5YTQ1N2ZmMmVkZTk4ODUxOGIwYjM0Njc3MmI1N2YuLjM3ZjQyNTNjMWM4YTg1ZWMxYzNm
MmQxZTEyZTcyMGQ4MDU4NzI1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaApAQCAtODQsNiArODQsNyBAQAogI2luY2x1ZGUgImV3a19iYWNrX2Zvcndh
cmRfbGlzdC5oIgogI2luY2x1ZGUgImV3a19jb2xvcl9waWNrZXIuaCIKICNpbmNsdWRlICJld2tf
Y29udGV4dC5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnUuaCIKICNpbmNsdWRlICJld2tf
ZG93bmxvYWRfam9iLmgiCiAjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX2lu
dGVudC5oIgpAQCAtMTE0LDYgKzExNSw5IEBAIHN0cnVjdCBFd2tfVmlld19TbWFydF9DbGFzcyB7
CiAgICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRv
IGJlIGNoYW5nZWQuICovCiAgICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOwogCisgICAgRWluYV9C
b29sICgqY29udGV4dF9tZW51X3Nob3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX0Nv
b3JkIHgsIEV2YXNfQ29vcmQgeSwgRXdrX0NvbnRleHRfTWVudSAqbWVudSk7CisgICAgRWluYV9C
b29sICgqY29udGV4dF9tZW51X2hpZGUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKKwogICAg
IEVpbmFfQm9vbCAoKnBvcHVwX21lbnVfc2hvdykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEVp
bmFfUmVjdGFuZ2xlIHJlY3QsIEV3a19UZXh0X0RpcmVjdGlvbiB0ZXh0X2RpcmVjdGlvbiwgZG91
YmxlIHBhZ2Vfc2NhbGVfZmFjdG9yLCBFd2tfUG9wdXBfTWVudSAqbWVudSk7CiAgICAgRWluYV9C
b29sICgqcG9wdXBfbWVudV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CiAKQEAgLTE2
OSw3ICsxNzMsNyBAQCBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBFV0tf
VklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xB
U1NfSU5JVF9OQU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19J
TklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9D
TEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNt
YXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19W
RVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwfQogCiAvKioKICAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9s
ZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dF9tZW51LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0
X21lbnUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyZGFhZGY1NzQ1NzE4NjJiNGJiZTU4OGJlYWI0ZmM1OGNm
MTdiZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy90ZXN0X2V3azJfY29udGV4dF9tZW51LmNwcApAQCAtMCwwICsxLDkwIEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNl
ZSB0aGUgR05VCisgICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgICAgSW5j
LiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EK
KyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdL
MlVuaXRUZXN0QmFzZS5oIgorI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52
aXJvbm1lbnQuaCIKKyNpbmNsdWRlIDxFV2ViS2l0Mi5oPgorI2luY2x1ZGUgPEVjb3JlLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK2V4dGVybiBFV0syVW5pdFRlc3RFbnZp
cm9ubWVudCogZW52aXJvbm1lbnQ7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjaGVja0Jhc2ljQ29u
dGV4dE1lbnVJdGVtKEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgRXdrX0NvbnRleHRfTWVu
dV9JdGVtX1R5cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIGNv
bnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQpCit7
CisgICAgQVNTRVJUX1RSVUUoaXRlbSk7CisKKyAgICBFWFBFQ1RfRVEodHlwZSwgZXdrX2NvbnRl
eHRfbWVudV9pdGVtX3R5cGVfZ2V0KGl0ZW0pKTsKKyAgICBFWFBFQ1RfRVEoYWN0aW9uLCBld2tf
Y29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChpdGVtKSk7CisgICAgRVhQRUNUX1NUUkVRKHRp
dGxlLCBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGl0ZW0pKTsKKyAgICBFWFBFQ1Rf
RVEoY2hlY2tlZCwgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGl0ZW0pKTsKKyAg
ICBFWFBFQ1RfRVEoZW5hYmxlZCwgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0KGl0
ZW0pKTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBzaG93Q29udGV4dE1lbnUoRXdrX1ZpZXdfU21h
cnRfRGF0YSogc21hcnREYXRhLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXdrX0NvbnRl
eHRfTWVudSogY29udGV4dE1lbnUpCit7CisgICAgY29uc3QgRWluYV9MaXN0KiBsaXN0ID0gZXdr
X2NvbnRleHRfbWVudV9pdGVtc19nZXQoY29udGV4dE1lbnUpOworICAgIEVYUEVDVF9FUSg0LCBl
aW5hX2xpc3RfY291bnQobGlzdCkpOworCisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVt
ID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4oZWluYV9saXN0X250aChsaXN0
LCAwKSk7CisgICAgY2hlY2tCYXNpY0NvbnRleHRNZW51SXRlbShpdGVtLCBFV0tfQUNUSU9OX1RZ
UEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fQkFDSywgIkdvIEJhY2siLCBmYWxzZSwg
dHJ1ZSk7CisKKyAgICBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4o
ZWluYV9saXN0X250aChsaXN0LCAxKSk7CisgICAgY2hlY2tCYXNpY0NvbnRleHRNZW51SXRlbShp
dGVtLCBFV0tfQUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fRk9SV0FS
RCwgIkdvIEZvcndhcmQiLCBmYWxzZSwgdHJ1ZSk7CisgICAgZXdrX2NvbnRleHRfbWVudV9pdGVt
X2VuYWJsZWRfc2V0KGl0ZW0sIGZhbHNlKTsKKyAgICBFWFBFQ1RfRkFMU0UoZXdrX2NvbnRleHRf
bWVudV9pdGVtX2VuYWJsZWRfZ2V0KGl0ZW0pKTsKKworICAgIGl0ZW0gPSBzdGF0aWNfY2FzdDxF
d2tfQ29udGV4dF9NZW51X0l0ZW0qPihlaW5hX2xpc3RfbnRoKGxpc3QsIDIpKTsKKyAgICBjaGVj
a0Jhc2ljQ29udGV4dE1lbnVJdGVtKGl0ZW0sIEVXS19BQ1RJT05fVFlQRSwgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19TVE9QLCAiU3RvcCIsIGZhbHNlLCB0cnVlKTsKKyAgICBld2tfY29udGV4
dF9tZW51X2l0ZW1fY2hlY2tlZF9zZXQoaXRlbSwgdHJ1ZSk7CisgICAgRVhQRUNUX1RSVUUoZXdr
X2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGl0ZW0pKTsKKworICAgIGl0ZW0gPSBzdGF0
aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW0qPihlaW5hX2xpc3RfbnRoKGxpc3QsIDMpKTsK
KyAgICBjaGVja0Jhc2ljQ29udGV4dE1lbnVJdGVtKGl0ZW0sIEVXS19BQ1RJT05fVFlQRSwgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19SRUxPQUQsICJSZWxvYWQiLCBmYWxzZSwgdHJ1ZSk7Cisg
ICAgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldChpdGVtLCAiUmVmcmVzaCIpOworICAg
IEVYUEVDVF9TVFJFUSgiUmVmcmVzaCIsIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQo
aXRlbSkpOworCisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBuZXdJdGVtID0gZXdrX2NvbnRl
eHRfbWVudV9pdGVtX25ldyhFV0tfQUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfT1RIRVIsICJOZXcgQ3VzdG9tIEl0ZW0iLCBmYWxzZSwgdHJ1ZSwgY29udGV4dE1lbnUsIDAp
OworICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQoY29udGV4dE1lbnUsIG5ld0l0ZW0p
OworICAgIGxpc3QgPSBld2tfY29udGV4dF9tZW51X2l0ZW1zX2dldChjb250ZXh0TWVudSk7Cisg
ICAgRVhQRUNUX0VRKDUsIGVpbmFfbGlzdF9jb3VudChsaXN0KSk7CisKKyAgICBld2tfY29udGV4
dF9tZW51X2l0ZW1fcmVtb3ZlKGNvbnRleHRNZW51LCBuZXdJdGVtKTsKKyAgICBsaXN0ID0gZXdr
X2NvbnRleHRfbWVudV9pdGVtc19nZXQoY29udGV4dE1lbnUpOworICAgIEVYUEVDVF9FUSg0LCBl
aW5hX2xpc3RfY291bnQobGlzdCkpOworCisgICAgRVhQRUNUX1RSVUUoZXdrX2NvbnRleHRfbWVu
dV9pdGVtX3NlbGVjdChjb250ZXh0TWVudSwgaXRlbSkpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0
KQoreworICAgIGNvbnN0IGNoYXIqIGl0ZW1TZWxlY3RIVE1MID0KKyAgICAgICAgIjxodG1sPiIK
KyAgICAgICAgIjxib2R5PjxhIGhyZWY9aHR0cDovL3d3dy5nb29nbGUuY29tPlRlc3QgTGluazwv
YT48L2JvZHk+IgorICAgICAgICAiPC9ib2R5PjwvaHRtbD4iOyAKKworICAgIGV3a1ZpZXdDbGFz
cygpLT5jb250ZXh0X21lbnVfc2hvdyA9IHNob3dDb250ZXh0TWVudTsKKworICAgIGV3a192aWV3
X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBpdGVtU2VsZWN0SFRNTCwgImZpbGU6Ly8vIiwg
MCk7CisgICAgbW91c2VDbGljaygyMCwgMzAsIC8qUmlnaHQqLyAzKTsKKyAgICBBU1NFUlRfVFJV
RSh3YWl0VW50aWxMb2FkRmluaXNoZWQoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhODYw
MjhlMGRkNjQzMDcxNjI3MzFmMTdmMzVlMmYzZmE2ODUxZDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcApAQCAt
MCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25p
Y3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudEVmbC5oIgorCisjaW5jbHVkZSAiRXdrVmlld0lt
cGwuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIK
KyNpbmNsdWRlICJXS1BhZ2UuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIgICAK
KyNpbmNsdWRlIDxFdmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRpYyBp
bmxpbmUgQ29udGV4dE1lbnVDbGllbnRFZmwqIHRvQ29udGV4dENsaWVudEVmbChjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUNsaWVu
dEVmbCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKK30KKworQ29udGV4dE1lbnVD
bGllbnRFZmw6OkNvbnRleHRNZW51Q2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAg
ICA6IG1fdmlld0ltcGwodmlld0ltcGwpCit7CisgICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBtX3Zp
ZXdJbXBsLT53a1BhZ2UoKTsKKyAgICBBU1NFUlQocGFnZVJlZik7CisKKyAgICBXS1BhZ2VDb250
ZXh0TWVudUNsaWVudCBjb250ZXh0TWVudUNsaWVudDsKKyAgICBtZW1zZXQoJmNvbnRleHRNZW51
Q2xpZW50LCAwLCBzaXplb2YoV0tQYWdlQ29udGV4dE1lbnVDbGllbnQpKTsKKyAgICBjb250ZXh0
TWVudUNsaWVudC52ZXJzaW9uID0ga1dLUGFnZUNvbnRleHRNZW51Q2xpZW50Q3VycmVudFZlcnNp
b247CisgICAgY29udGV4dE1lbnVDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgY29udGV4
dE1lbnVDbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51X2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjAgPSAwOworICAgIGNvbnRleHRNZW51Q2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRl
bVNlbGVjdGVkID0gMDsKKyAgICBjb250ZXh0TWVudUNsaWVudC5jb250ZXh0TWVudURpc21pc3Nl
ZCA9IDA7CisgICAgY29udGV4dE1lbnVDbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRN
ZW51ID0gMDsKKworICAgIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChwYWdlUmVmLCAm
Y29udGV4dE1lbnVDbGllbnQpOworfQorCit2b2lkIENvbnRleHRNZW51Q2xpZW50RWZsOjpnZXRD
b250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV0tQYWdlUmVmLCBXS0FycmF5UmVmLCBXS0FycmF5
UmVmKiwgV0tIaXRUZXN0UmVzdWx0UmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI5ZTRlZDNjZWNjYmQzMzdk
ODg3YzViNTQ1NDUwMWRmNzViMWFjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuaApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29udGV4dE1lbnVDbGllbnRFZmxfaAorI2Rl
ZmluZSBDb250ZXh0TWVudUNsaWVudEVmbF9oCisKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgor
I2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK2NsYXNzIEV3a1ZpZXdJbXBsOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29udGV4dE1lbnVDbGllbnRFZmwgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENvbnRleHRNZW51Q2xpZW50RWZsPiBjcmVhdGUoRXdrVmll
d0ltcGwqIHZpZXdJbXBsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250
ZXh0TWVudUNsaWVudEVmbCh2aWV3SW1wbCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGdl
dENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXS1BhZ2VSZWYsIFdLQXJyYXlSZWYgcHJvcG9z
ZWRNZW51LCBXS0FycmF5UmVmKiBuZXdNZW51LCBXS0hpdFRlc3RSZXN1bHRSZWYsIFdLVHlwZVJl
ZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgQ29udGV4dE1lbnVDbGllbnRFZmwoRXdrVmlld0ltcGwqKTsKKworICAgIEV3a1ZpZXdJ
bXBsKiBtX3ZpZXdJbXBsOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBDb250ZXh0TWVudUNsaWVudEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFnZUNsaWVudEJhc2UuY3BwCmluZGV4IDk3YTg1ZjVjY2VmZWM3M2RiM2YzNDY5YWI0MTMz
ZTIzMmMxYjM0ZDAuLjBjZTgyYWFlNDZlNDA0ZjVkMjkzZGFhYzYzNGRiMDE5MzViMmM5ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3BwCkBA
IC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNv
bnRleHRNZW51UHJveHkuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5RWZsLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKQEAgLTIyMSwxMCArMjIxLDkgQEAgUGFzc1Jl
ZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEJhc2U6OmNyZWF0ZVBvcHVwTWVudVBy
b3h5KFdlYlBhZ2VQcm94eSoKICAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlFZmw6OmNyZWF0
ZShtX3ZpZXdJbXBsLCBwYWdlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5
PiBQYWdlQ2xpZW50QmFzZTo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQor
UGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50QmFzZTo6Y3JlYXRlQ29u
dGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6Y3Jl
YXRlKG1fdmlld0ltcGwsIHBhZ2UpOwogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51
UHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVu
dVByb3h5RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzdlMGViODE2MzMzNTNjMTYzM2QwY2VmYjU5ZWQ1
N2Y1MmM0NWIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIgorCisjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCisKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUg
IldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6V2ViQ29udGV4
dE1lbnVQcm94eUVmbChFd2tWaWV3SW1wbCogdmlld0ltcGwsIFdlYlBhZ2VQcm94eSogcGFnZSkK
KyAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCisgICAgLCBtX3BhZ2UocGFnZSkKK3sKK30KKwor
V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6fldlYkNvbnRleHRNZW51UHJveHlFZmwoKQoreworfQor
Cit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlFZmw6OnNob3dDb250ZXh0TWVudShjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1E
YXRhPiYgaXRlbXMpCit7CisgICAgbV92aWV3SW1wbC0+c2hvd0NvbnRleHRNZW51KHRoaXMsIHBv
c2l0aW9uLCBpdGVtcyk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUVmbDo6aGlkZUNv
bnRleHRNZW51KCkKK3sKKyAgICBtX3ZpZXdJbXBsLT5oaWRlQ29udGV4dE1lbnUoKTsKK30KKwor
dm9pZCBXZWJDb250ZXh0TWVudVByb3h5RWZsOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25z
dCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQoreworICAgIG1fcGFnZS0+Y29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQoaXRlbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3YmUyYWI5
Y2ViNWRkY2YxYzQ2MmI0NTUzOGMzMjkzYTIyMjhmNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaApAQCAtMCww
ICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkNvbnRleHRNZW51UHJveHlFZmxfaAorI2RlZmluZSBXZWJD
b250ZXh0TWVudVByb3h5RWZsX2gKKworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorCisjaW5j
bHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1l
bnUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CisKK2NsYXNzIEV3a1ZpZXdJbXBs
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsK
K2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eUVmbCA6IHB1
YmxpYyBXZWJDb250ZXh0TWVudVByb3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJDb250ZXh0TWVudVByb3h5RWZsPiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsLCBX
ZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkNvbnRleHRNZW51UHJveHlFZmwodmlld0ltcGwsIHBhZ2UpKTsKKyAgICB9CisKKyAgICB+V2Vi
Q29udGV4dE1lbnVQcm94eUVmbCgpOworCisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4m
KTsKKyAgICB2b2lkIGhpZGVDb250ZXh0TWVudSgpOworCisgICAgdm9pZCBjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CisKK3ByaXZhdGU6Cisg
ICAgV2ViQ29udGV4dE1lbnVQcm94eUVmbChFd2tWaWV3SW1wbCosIFdlYlBhZ2VQcm94eSopOwor
CisgICAgRXdrVmlld0ltcGwqIG1fdmlld0ltcGw7CisgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7
Cit9OworCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRF
WFRfTUVOVVMpCisjZW5kaWYgLy8gV2ViQ29udGV4dE1lbnVQcm94eUVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175162</attachid>
            <date>2012-11-20 00:01:27 -0800</date>
            <delta_ts>2012-11-21 00:28:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96200-20121120165915.patch</filename>
            <type>text/plain</type>
            <size>76056</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzViMmVlYzRlNDI4MTI0
MmRiMDQxODg3YzExMDBmZWFiNGQ5OWUzOC4uOWYxM2JlNTQ1NDU1NDUyNzFlMzEyMjJlMWNhZTQ4
MDk2Zjk0YzVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTE5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0sy
XSBTdXBwb3J0IENvbnRleHQgTWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICBFRkwg
cG9ydCBhbHNvIGRvZXNuJ3QgaGlkZSB1bmF2YWlsYWJsZSBtZW51cyBhcyBndGsgcG9ydC4KKwog
MjAxMi0xMS0xOSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBbV0lOXSBBZGQgV2ViQ29yZTo6Z2V0UmVnaXN0cnlWYWx1ZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
OTI2NjdjYzIwMmRmMTFmYjA4YWI0ZDZkMzk5ZWVjNmNmYzJmOWY1MC4uOGEzMjkzMzg3NjViMTgz
N2UyYzQ1NzJiOWJjMjZjYzhiZDM0MjAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAor
MjAxMi0xMS0xOSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisg
ICAgICAgIFtFRkxdW1dLMl0gU3VwcG9ydCBDb250ZXh0IE1lbnUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MjAwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzdXBwb3J0cyBXSzIgRUZM
J3MgY29udGV4dCBtZW51IGFzIFdLMSBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlIHdlIGNhbid0IHVz
ZSBlbGVtZW50YXJ5IGluIGluc2lkZSBXZWJLaXQuCisgICAgICAgIE9ubHkgYmFzaWMgZnVuY3Rp
b25hbGl0aWVzIG9mIGNvbnRleHQgbWVudSBhcmUgc3VwcG9ydGVkLiBCZXNpZGUgdGhpcyBpbXBs
ZW1lbnRhdGlvbiBmb2xsb3dzIEdUSydzIGltcGxlbWVudGF0aW9uLgorICAgICAgICBGb3IgZXhh
bXBsZSwgZXdrX2NvbnRleHRfbWVudV9uZXcsIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQs
IGV3a19jb250ZXh0X21lbnVfaXRlbV9yZW1vdmUgYXJlIHN1cHBvcnRlZC4KKworICAgICAgICBJ
biBhZGRpdGlvbiwgZXdrX2RlZmluZXMuaCBmaWxlIGlzIGFkZGVkIGluIG9yZGVyIHRvIHN1cHBv
cnQgY3Jvc3MgaW5jbHVzaW9uIGFzIEdUSyBwb3J0LgorCisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNob3dDb250ZXh0TWVudSk6
CisgICAgICAgIChFd2tWaWV3SW1wbDo6aGlkZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KEV3a1ZpZXdJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9t
ZW51LmNwcDogQWRkZWQuCisgICAgICAgIChFd2tDb250ZXh0TWVudTo6RXdrQ29udGV4dE1lbnUp
OgorICAgICAgICAoRXdrQ29udGV4dE1lbnU6On5Fd2tDb250ZXh0TWVudSk6CisgICAgICAgIChF
d2tDb250ZXh0TWVudTo6aGlkZSk6CisgICAgICAgIChFd2tfQ29udGV4dF9NZW51OjphcHBlbmRJ
dGVtKToKKyAgICAgICAgKEV3a19Db250ZXh0X01lbnU6OnJlbW92ZUl0ZW0pOgorICAgICAgICAo
RXdrQ29udGV4dE1lbnU6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKGV3a19j
b250ZXh0X21lbnVfbmV3KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfbmV3X3dpdGhfaXRl
bXMpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FwcGVuZCk6CisgICAgICAgIChl
d2tfY29udGV4dF9tZW51X2l0ZW1fcmVtb3ZlKToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVf
aGlkZSk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1zX2dldCk6CisgICAgICAgIChl
d2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dF9tZW51Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoRXdrQ29udGV4dE1l
bnVJdGVtOjpFd2tDb250ZXh0TWVudUl0ZW0pOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9p
dGVtX25ldyk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVu
dSk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQpOgorICAgICAgICAo
ZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21l
bnVfaXRlbV9hY3Rpb25fZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rp
b25fc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQpOgorICAg
ICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX3NldCk6CisgICAgICAgIChld2tfY29u
dGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9p
dGVtX2NoZWNrZWRfc2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVk
X2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0
ZS5oOiBBZGRlZC4KKyAgICAgICAgKEV3a0NvbnRleHRNZW51SXRlbSk6CisgICAgICAgIChFd2tD
b250ZXh0TWVudUl0ZW06OmNyZWF0ZSk6CisgICAgICAgIChFd2tDb250ZXh0TWVudUl0ZW06OmFj
dGlvbik6CisgICAgICAgIChFd2tDb250ZXh0TWVudUl0ZW06OnNldEFjdGlvbik6CisgICAgICAg
IChFd2tDb250ZXh0TWVudUl0ZW06OnRpdGxlKToKKyAgICAgICAgKEV3a0NvbnRleHRNZW51SXRl
bTo6c2V0VGl0bGUpOgorICAgICAgICAoRXdrQ29udGV4dE1lbnVJdGVtOjp0eXBlKToKKyAgICAg
ICAgKEV3a0NvbnRleHRNZW51SXRlbTo6c2V0VHlwZSk6CisgICAgICAgIChFd2tDb250ZXh0TWVu
dUl0ZW06OmNoZWNrZWQpOgorICAgICAgICAoRXdrQ29udGV4dE1lbnVJdGVtOjpzZXRDaGVja2Vk
KToKKyAgICAgICAgKEV3a0NvbnRleHRNZW51SXRlbTo6ZW5hYmxlZCk6CisgICAgICAgIChFd2tD
b250ZXh0TWVudUl0ZW06OnNldEVuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChFd2tDb250ZXh0TWVudSk6CisgICAgICAgIChFd2tDb250ZXh0TWVudTo6Y3JlYXRl
KToKKyAgICAgICAgKEV3a0NvbnRleHRNZW51OjppdGVtcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2RlZmluZXMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3
azJfY29udGV4dF9tZW51LmNwcDogQWRkZWQuCisgICAgICAgIChjaGVja0Jhc2ljQ29udGV4dE1l
bnVJdGVtKToKKyAgICAgICAgKHNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChURVNUX0YpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKHRvQ29udGV4dENsaWVudEVmbCk6CisgICAgICAgIChDb250ZXh0TWVudUNsaWVu
dEVmbDo6Q29udGV4dE1lbnVDbGllbnRFZmwpOgorICAgICAgICAoQ29udGV4dE1lbnVDbGllbnRF
Zmw6OmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSk6CisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChDb250ZXh0TWVudUNsaWVudEVmbCk6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRN
ZW51Q2xpZW50RWZsOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVu
dEJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6Y3JlYXRlQ29udGV4
dE1lbnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5
RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5RWZsOjpXZWJDb250ZXh0TWVudVByb3h5RWZsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVmbDo6fldlYkNvbnRleHRNZW51UHJveHlFZmwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZsOjpzaG93Q29udGV4dE1lbnUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZsOjpoaWRlQ29udGV4dE1l
bnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZsOjpjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVBy
b3h5RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbnRleHRN
ZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZsOjpj
cmVhdGUpOgorCiAyMDEyLTExLTE5ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgogCiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBSZW1vdmUgdGlsZXMgb2Yg
YSBsYXllciB3aGVuIHRoZXkgYXJlIG9mZiB0aGUgdmlld3BvcnQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggNzk3OTcxZDBmNTZjOTUyNGUw
MjQ0OGNmZGRjNGI5ZTVlZGZhMTY5ZC4uNTY0MGRjNzY5N2U4MjM2Mzc2YzY1MzExMmZjMWI4MzAw
ZjRhOTYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcApAQCAtODc2LDggKzg3Niw4IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSgpCiAgICAgICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkp
KSB7CiAjZW5kaWYKIAotICAgICAgICAgICAgICAgIC8vIEluIEdUSysgdW5hdmFpbGFibGUgaXRl
bXMgYXJlIG5vdCBoaWRkZW4gYnV0IGluc2Vuc2l0aXZlCi0jaWYgUExBVEZPUk0oR1RLKQorICAg
ICAgICAgICAgICAgIC8vIEluIEdUSysgYW5kIEVGTCwgdW5hdmFpbGFibGUgaXRlbXMgYXJlIG5v
dCBoaWRkZW4gYnV0IGluc2Vuc2l0aXZlLgorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
RUZMKQogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oQmFja0l0ZW0sIG1fY29udGV4dE1lbnUu
Z2V0KCkpOwogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oRm9yd2FyZEl0ZW0sIG1fY29udGV4
dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU3RvcEl0ZW0sIG1fY29u
dGV4dE1lbnUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBiYjg3NDdiMWNi
MWY1ODM4YzJkZDdjY2RkZjc4MjkxMWVhNjdjMWU1Li41YjNlMDdiNjNiYjA3ZWY5OWIyNTM2NjM4
NmM4N2RlODA4NjllOTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNDksNiArNDks
OCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29sb3JfcGlja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAor
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwCisgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb29raWVfbWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJh
c2VfbWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNw
cApAQCAtNzgsNiArODAsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJ
UHJvY2Vzcy9lZmwvQmF0dGVyeVByb3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4
dEhpc3RvcnlDbGllbnRFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVu
dEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Gb3JtQ2xp
ZW50RWZsLmNwcApAQCAtOTUsNiArOTgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
ICAgICBVSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwv
VmlicmF0aW9uQ2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5j
cHAKKyAgICBVSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQ
cm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwCkBAIC0yNTYsNiArMjYwLDcgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAg
ICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5oIgorICAgICIke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2RlZmluZXMuaCIKICAg
ICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3du
bG9hZF9qb2IuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19lcnJvci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Zhdmljb25fZGF0YWJhc2UuaCIKQEAgLTM2Miw2ICszNjcsNyBA
QCBTRVQoRVdLMlVuaXRUZXN0c19CSU5BUklFUwogICAgIHRlc3RfZXdrMl9jb2xvcl9waWNrZXIK
ICAgICB0ZXN0X2V3azJfY29udGV4dAogICAgIHRlc3RfZXdrMl9jb250ZXh0X2hpc3RvcnlfY2Fs
bGJhY2tzCisgICAgdGVzdF9ld2syX2NvbnRleHRfbWVudQogICAgIHRlc3RfZXdrMl9jb29raWVf
bWFuYWdlcgogICAgIHRlc3RfZXdrMl9kYXRhYmFzZV9tYW5hZ2VyCiAgICAgdGVzdF9ld2syX2Rv
d25sb2FkX2pvYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgK
aW5kZXggMDdjYTEyOTM1MGY0ZWRiN2UzZGI0YmY5MmFkNzBiOGMzYTIwOWNlNC4uMjJkNjE2ODI1
ZTFjZDUxODg5NWIyZTdkYzdlYzViODMyMzIyNTk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiZXdr
X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uaCIKICNpbmNsdWRlICJld2tfY29sb3JfcGlja2VyLmgi
CiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51Lmgi
CisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX2Nvb2tp
ZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX2RhdGFiYXNlX21hbmFnZXIuaCIKICNpbmNsdWRl
ICJld2tfZG93bmxvYWRfam9iLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3SW1wbC5jcHAKaW5kZXggMDc1NTNjNDhjYzZjYmU0MzI3ZDhhM2I4MzNkM2Ex
Y2UzNGY2YjFmMS4uNzUzNWViODZmNDcyMzFhOGQ4YWRmNGE4YmFiMmY2MGFlZDBhZWVmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcApA
QCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkV3a1ZpZXdJ
bXBsLmgiCiAKKyNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIkVm
bFNjcmVlblV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkZpbmRDbGllbnRFZmwuaCIKICNpbmNsdWRl
ICJGb3JtQ2xpZW50RWZsLmgiCkBAIC00NSw2ICs0Niw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVy
ZW5jZXMuaCIKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgImV3a19jb2xvcl9waWNrZXJfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0
X21lbnVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfZmF2aWNvbl9kYXRhYmFzZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVw
X21lbnVfaXRlbV9wcml2YXRlLmgiCkBAIC0xMTQsNiArMTE2LDcgQEAgRXdrVmlld0ltcGw6OkV3
a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRl
eHQsIFBhc3MKICAgICAsIG1fcGFnZVBvbGljeUNsaWVudChQYWdlUG9saWN5Q2xpZW50RWZsOjpj
cmVhdGUodGhpcykpCiAgICAgLCBtX3BhZ2VVSUNsaWVudChQYWdlVUlDbGllbnRFZmw6OmNyZWF0
ZSh0aGlzKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50KFJlc291cmNlTG9hZENsaWVudEVm
bDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9jb250ZXh0TWVudUNsaWVudChDb250ZXh0TWVudUNs
aWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9maW5kQ2xpZW50KEZpbmRDbGllbnRFZmw6
OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZm9ybUNsaWVudChGb3JtQ2xpZW50RWZsOjpjcmVhdGUo
dGhpcykpCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKQEAgLTczMiw2ICs3MzUsMzggQEAgdm9pZCBF
d2tWaWV3SW1wbDo6aW5mb3JtQ29udGVudHNTaXplQ2hhbmdlKGNvbnN0IEludFNpemUmIHNpemUp
CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19URVhUX0RJUkVDVElPTl9SSUdIVF9U
T19MRUZULCBSVEwpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9ESVJF
Q1RJT05fTEVGVF9UT19SSUdIVCwgTFRSKTsKIAordm9pZCBFd2tWaWV3SW1wbDo6c2hvd0NvbnRl
eHRNZW51KFdlYkNvbnRleHRNZW51UHJveHlFZmwqIGNvbnRleHRNZW51UHJveHksIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bURhdGE+JiBpdGVtcykKK3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0
YSgpOworICAgIEFTU0VSVChzZC0+YXBpKTsKKworICAgIEFTU0VSVChjb250ZXh0TWVudVByb3h5
KTsKKworICAgIGlmICghc2QtPmFwaS0+Y29udGV4dF9tZW51X3Nob3cpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtX2NvbnRleHRNZW51KQorICAgICAgICBoaWRlQ29udGV4dE1lbnUoKTsK
KworICAgIG1fY29udGV4dE1lbnUgPSBFd2tfQ29udGV4dF9NZW51OjpjcmVhdGUodGhpcywgY29u
dGV4dE1lbnVQcm94eSwgaXRlbXMpOworCisgICAgc2QtPmFwaS0+Y29udGV4dF9tZW51X3Nob3co
c2QsIHBvc2l0aW9uLngoKSwgcG9zaXRpb24ueSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKK30K
Kwordm9pZCBFd2tWaWV3SW1wbDo6aGlkZUNvbnRleHRNZW51KCkKK3sKKyAgICBpZiAoIW1fY29u
dGV4dE1lbnUpCisgICAgICAgIHJldHVybjsKKworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
ID0gc21hcnREYXRhKCk7CisgICAgQVNTRVJUKHNkLT5hcGkpOworCisgICAgaWYgKHNkLT5hcGkt
PmNvbnRleHRfbWVudV9oaWRlKQorICAgICAgICBzZC0+YXBpLT5jb250ZXh0X21lbnVfaGlkZShz
ZCk7CisKKyAgICBtX2NvbnRleHRNZW51LmNsZWFyKCk7Cit9CisKIHZvaWQgRXdrVmlld0ltcGw6
OnJlcXVlc3RQb3B1cE1lbnUoV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5LCBj
b25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBw
YWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJf
dCBzZWxlY3RlZEluZGV4KQogewogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnRE
YXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwu
aAppbmRleCBiZDI1NmJjYWQ1ODE1Y2YyZWVkMjRiNzAwMzAzMDNiNzBjMDBmZTBiLi5jOWFjNTU1
YmI4MWE0ZDcyOTRiOGYyYWYyZTEzYzM2NzYxNDQwZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKQEAgLTQ2LDYgKzQ2LDcgQEAKICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIENvbnRleHRNZW51Q2xpZW50RWZsOwogY2xh
c3MgRmluZENsaWVudEVmbDsKIGNsYXNzIEZvcm1DbGllbnRFZmw7CiBjbGFzcyBJbnB1dE1ldGhv
ZENvbnRleHRFZmw7CkBAIC01NCw2ICs1NSw4IEBAIGNsYXNzIFBhZ2VMb2FkQ2xpZW50RWZsOwog
Y2xhc3MgUGFnZVBvbGljeUNsaWVudEVmbDsKIGNsYXNzIFBhZ2VVSUNsaWVudEVmbDsKIGNsYXNz
IFJlc291cmNlTG9hZENsaWVudEVmbDsKK2NsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7Citj
bGFzcyBXZWJDb250ZXh0TWVudVByb3h5RWZsOwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3Mg
V2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUG9wdXBJdGVtOwpAQCAtNzgsNiArODEsNyBAQCBjbGFz
cyBJbnRTaXplOwogY2xhc3MgRXdrQ29udGV4dDsKIGNsYXNzIEV3a0JhY2tGb3J3YXJkTGlzdDsK
IGNsYXNzIEV3a0NvbG9yUGlja2VyOworY2xhc3MgRXdrQ29udGV4dE1lbnU7CiBjbGFzcyBFd2tQ
b3B1cE1lbnU7CiBjbGFzcyBFd2tTZXR0aW5nczsKIApAQCAtMTY1LDYgKzE2OSw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcmVxdWVzdFBvcHVwTWVudShXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5
RWZsKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRv
dWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlBvcHVwSXRlbT4m
IGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOwogICAgIHZvaWQgY2xvc2VQb3B1cE1lbnUo
KTsKKyAgICAKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudShXZWJLaXQ6OldlYkNvbnRleHRNZW51
UHJveHlFZmwqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFZlY3Rv
cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcyk7CisgICAgdm9pZCBoaWRl
Q29udGV4dE1lbnUoKTsKIAogICAgIHZvaWQgdXBkYXRlVGV4dElucHV0U3RhdGUoKTsKIApAQCAt
MjQxLDYgKzI0OCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6UGFnZVBvbGljeUNs
aWVudEVmbD4gbV9wYWdlUG9saWN5Q2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VVSUNs
aWVudEVmbD4gbV9wYWdlVUlDbGllbnQ7CiAgICAgT3duUHRyPFdlYktpdDo6UmVzb3VyY2VMb2Fk
Q2xpZW50RWZsPiBtX3Jlc291cmNlTG9hZENsaWVudDsKKyAgICBPd25QdHI8V2ViS2l0OjpDb250
ZXh0TWVudUNsaWVudEVmbD4gbV9jb250ZXh0TWVudUNsaWVudDsKICAgICBPd25QdHI8V2ViS2l0
OjpGaW5kQ2xpZW50RWZsPiBtX2ZpbmRDbGllbnQ7CiAgICAgT3duUHRyPFdlYktpdDo6Rm9ybUNs
aWVudEVmbD4gbV9mb3JtQ2xpZW50OwogI2lmIEVOQUJMRShWSUJSQVRJT04pCkBAIC0yNjMsNiAr
MjcxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdG91Y2hFdmVudHNFbmFibGVkOwogI2VuZGlm
CiAgICAgV2ViQ29yZTo6VGltZXI8RXdrVmlld0ltcGw+IG1fZGlzcGxheVRpbWVyOworICAgIE93
blB0cjxFd2tDb250ZXh0TWVudT4gbV9jb250ZXh0TWVudTsKICAgICBPd25QdHI8RXdrUG9wdXBN
ZW51PiBtX3BvcHVwTWVudTsKICAgICBPd25QdHI8V2ViS2l0OjpJbnB1dE1ldGhvZENvbnRleHRF
Zmw+IG1faW5wdXRNZXRob2RDb250ZXh0OwogICAgIE93blB0cjxFd2tDb2xvclBpY2tlcj4gbV9j
b2xvclBpY2tlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X21lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHRfbWVudS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE0ZTU0NzE4NGMzMTk2Y2ZhZWU3Zjk1
ZTAwMzhhZTU5ODY1MzE0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwCkBAIC0wLDAgKzEsMTQ5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
CisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJld2tfY29udGV4dF9tZW51LmgiCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNs
dWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIK
KyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5RWZsLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRl
eHRfbWVudV9pdGVtLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVtX3ByaXZhdGUu
aCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X3ByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworRXdrQ29udGV4dE1lbnU6OkV3a0NvbnRleHRNZW51KEV3a1ZpZXdJbXBs
KiB2aWV3SW1wbCwgV2ViQ29udGV4dE1lbnVQcm94eUVmbCogY29udGV4dE1lbnVQcm94eSwgY29u
c3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQorICAgIDog
bV92aWV3SW1wbCh2aWV3SW1wbCkKKyAgICAsIG1fY29udGV4dE1lbnVQcm94eShjb250ZXh0TWVu
dVByb3h5KQorICAgICwgbV9jb250ZXh0TWVudUl0ZW1zKDApCit7CisgICAgY29uc3Qgc2l6ZV90
IHNpemUgPSBpdGVtcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCisgICAgICAgIG1fY29udGV4dE1lbnVJdGVtcyA9IGVpbmFfbGlzdF9hcHBlbmQobV9jb250
ZXh0TWVudUl0ZW1zLCBFd2tfQ29udGV4dF9NZW51X0l0ZW06OmNyZWF0ZShpdGVtc1tpXSkubGVh
a1B0cigpKTsKK30KKworRXdrQ29udGV4dE1lbnU6OkV3a0NvbnRleHRNZW51KCkKKyAgICA6IG1f
dmlld0ltcGwoMCkKKyAgICAsIG1fY29udGV4dE1lbnVQcm94eSgwKQorICAgICwgbV9jb250ZXh0
TWVudUl0ZW1zKDApCit7Cit9CisKK0V3a0NvbnRleHRNZW51OjpFd2tDb250ZXh0TWVudShFaW5h
X0xpc3QqIGl0ZW1zKQorICAgIDogbV92aWV3SW1wbCgwKQorICAgICwgbV9jb250ZXh0TWVudVBy
b3h5KDApCisgICAgLCBtX2NvbnRleHRNZW51SXRlbXMoMCkKK3sKKyAgICBFaW5hX0xpc3QqIGw7
CisgICAgdm9pZCogZGF0YTsKKyAgICBFSU5BX0xJU1RfRk9SRUFDSChpdGVtcywgbCwgZGF0YSkK
KyAgICAgICAgbV9jb250ZXh0TWVudUl0ZW1zID0gZWluYV9saXN0X2FwcGVuZChtX2NvbnRleHRN
ZW51SXRlbXMsIHN0YXRpY19jYXN0PEV3a0NvbnRleHRNZW51SXRlbSo+KGRhdGEpKTsKK30KKwor
RXdrQ29udGV4dE1lbnU6On5Fd2tDb250ZXh0TWVudSgpCit7CisgICAgdm9pZCogZGF0YTsKKyAg
ICBFSU5BX0xJU1RfRlJFRShtX2NvbnRleHRNZW51SXRlbXMsIGRhdGEpCisgICAgICAgIGRlbGV0
ZSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW0qPihkYXRhKTsKK30KKwordm9pZCBF
d2tDb250ZXh0TWVudTo6aGlkZSgpCit7CisgICAgbV92aWV3SW1wbC0+aGlkZUNvbnRleHRNZW51
KCk7Cit9CisKK3ZvaWQgRXdrX0NvbnRleHRfTWVudTo6YXBwZW5kSXRlbShFd2tDb250ZXh0TWVu
dUl0ZW0qIGl0ZW0pCit7CisgICAgbV9jb250ZXh0TWVudUl0ZW1zID0gZWluYV9saXN0X2FwcGVu
ZChtX2NvbnRleHRNZW51SXRlbXMsIGl0ZW0pOworfQorCit2b2lkIEV3a19Db250ZXh0X01lbnU6
OnJlbW92ZUl0ZW0oRXdrQ29udGV4dE1lbnVJdGVtKiBpdGVtKQoreworICAgIG1fY29udGV4dE1l
bnVJdGVtcyA9IGVpbmFfbGlzdF9yZW1vdmUobV9jb250ZXh0TWVudUl0ZW1zLCBpdGVtKTsKK30K
Kwordm9pZCBFd2tDb250ZXh0TWVudTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2Vi
S2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQoreworICAgIG1fY29udGV4dE1lbnVQ
cm94eS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaXRlbSk7IAorfSAKKworRXdrX0NvbnRleHRf
TWVudSogZXdrX2NvbnRleHRfbWVudV9uZXcoKQoreworICAgIHJldHVybiBFd2tDb250ZXh0TWVu
dTo6Y3JlYXRlKCkubGVha1B0cigpOworfQorCitFd2tfQ29udGV4dF9NZW51KiBld2tfY29udGV4
dF9tZW51X25ld193aXRoX2l0ZW1zKEVpbmFfTGlzdCogaXRlbXMpCit7CisgICAgcmV0dXJuIEV3
a0NvbnRleHRNZW51OjpjcmVhdGUoaXRlbXMpLmxlYWtQdHIoKTsKK30KKworRWluYV9Cb29sIGV3
a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQoRXdrX0NvbnRleHRfTWVudSogbWVudSwgRXdrX0Nv
bnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChtZW51LCBmYWxzZSk7CisKKyAgICBtZW51LT5hcHBlbmRJdGVtKGl0ZW0pOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fcmVtb3Zl
KEV3a19Db250ZXh0X01lbnUqIG1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudSwgZmFsc2UpOworCisgICAg
bWVudS0+cmVtb3ZlSXRlbShpdGVtKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitFaW5hX0Jv
b2wgZXdrX2NvbnRleHRfbWVudV9oaWRlKEV3a19Db250ZXh0X01lbnUqIG1lbnUpCit7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIGZhbHNlKTsKKworICAgIG1lbnUt
PmhpZGUoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBFaW5hX0xpc3QqIGV3a19j
b250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUqIG1lbnUpCit7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIDApOworCisgICAgcmV0dXJu
IG1lbnUtPml0ZW1zKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fc2Vs
ZWN0KEV3a19Db250ZXh0X01lbnUqIG1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkK
K3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudSwgZmFsc2UpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UeXBlPihpdGVtLT50eXBlKCkpOworICAgIFdlYkNvcmU6OkNvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uPihp
dGVtLT5hY3Rpb24oKSk7CisKKyAgICBtZW51LT5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZChXZWJD
b250ZXh0TWVudUl0ZW1EYXRhKHR5cGUsIGFjdGlvbiwgaXRlbS0+dGl0bGUoKSwgaXRlbS0+ZW5h
YmxlZCgpLCBpdGVtLT5jaGVja2VkKCkpKTsKKworICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFkMzU2MTkzOTI3ODUwZGI3MTM3OGFiNzI1ZTYxYzA1MDc1YmE5NWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9tZW51LmgKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLyoqCisgKiBAZmlsZSAgICBld2tfY29udGV4dF9tZW51LmgKKyAqIEBicmllZiAgIERl
c2NyaWJlcyB0aGUgRXdrIENvbnRleHQgTWVudSBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfY29u
dGV4dF9tZW51X2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfbWVudV9oCisKKyNpbmNsdWRlICJld2tf
ZGVmaW5lcy5oIgorI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRl
cm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgRXdrX0NvbnRleHRfTWVu
dSB0byBiZSB1c2VkIGFzIGEgc3VibWVudSBvZiBhbiBleGlzdGluZworICogRXdrX0NvbnRleHRf
TWVudS4gVGhlIGNvbnRleHQgbWVudSBpcyBjcmVhdGVkIGJ5IHRoZSBld2tfdmlldyBhbmQKKyAq
IHBhc3NlZCBhcyBhbiBhcmd1bWVudCBvZiBld2tfdmlldyBzbWFydCBjYWxsYmFjay4KKyAqCisg
KiBAcmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBuZXcgY29udGV4dCBtZW51CisgKgorICogQHNl
ZSBld2tfY29udGV4dF9tZW51X25ld193aXRoX2l0ZW1zCisgKi8KK0VBUEkgRXdrX0NvbnRleHRf
TWVudSAqZXdrX2NvbnRleHRfbWVudV9uZXcodm9pZCk7CisKKy8qKgorICogQ3JlYXRlcyBhIG5l
dyBFd2tfQ29udGV4dF9NZW51IHRvIGJlIHVzZWQgYXMgYSBzdWJtZW51IG9mIGFuIGV4aXN0aW5n
CisgKiBFd2tfQ29udGV4dF9NZW51IHdpdGggdGhlIGdpdmVuIGluaXRpYWwgaXRlbXMuIFRoZSBj
b250ZXh0IG1lbnUgaXMKKyAqIGNyZWF0ZWQgYnkgdGhlIGV3a192aWV3IGFuZCBwYXNzZWQgYXMg
YW4gYXJndW1lbnQgb2YgZXdrX3ZpZXcgc21hcnQgY2FsbGJhY2suCisgKgorICogQHBhcmFtIGl0
ZW1zIHRoZSBsaXN0IG9mIGluaXRpYWwgaXRlbXMKKyAqIEByZXR1cm4gdGhlIHBvaW50ZXIgdG8g
dGhlIG5ldyBjb250ZXh0IG1lbnUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfbmV3Cisg
Ki8KK0VBUEkgRXdrX0NvbnRleHRfTWVudSAqZXdrX2NvbnRleHRfbWVudV9uZXdfd2l0aF9pdGVt
cyhFaW5hX0xpc3QgKml0ZW1zKTsKKworLyoqCisgKiBBcHBlbmRzIHRoZSBpdGVtIG9mIHRoZSBj
b250ZXh0IG1lbnUuCisgKgorICogQHBhcmFtIG1lbnUgdGhlIGNvbnRleHQgbWVudSAKKyAqIEBw
YXJhbSBpdGVtIHRoZSBpdGVtIHRvIGFwcGVuZAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24g
c3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3
a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQoRXdrX0NvbnRleHRfTWVudSAqbWVudSwgRXdrX0Nv
bnRleHRfTWVudV9JdGVtICppdGVtKTsKKworLyoqCisgKiBSZW1vdmVzIHRoZSBpdGVtIG9mIHRo
ZSBjb250ZXh0IG1lbnUuCisgKgorICogQHBhcmFtIG1lbnUgdGhlIGNvbnRleHQgbWVudSAKKyAq
IEBwYXJhbSBpdGVtIHRoZSBpdGVtIHRvIHJlbW92ZQorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRWluYV9Cb29s
IGV3a19jb250ZXh0X21lbnVfaXRlbV9yZW1vdmUoRXdrX0NvbnRleHRfTWVudSAqbWVudSwgRXdr
X0NvbnRleHRfTWVudV9JdGVtICppdGVtKTsKKworLyoqCisgKiBIaWRlcyB0aGUgY29udGV4dCBt
ZW51LgorICoKKyAqIEBwYXJhbSBtZW51IHRoZSBjb250ZXh0IG1lbnUgdG8gaGlkZQorICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisg
Ki8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaGlkZShFd2tfQ29udGV4dF9NZW51
ICptZW51KTsKKworLyoqCisgKiBHZXRzIHRoZSBsaXN0IG9mIGl0ZW1zLgorICoKKyAqIEBwYXJh
bSBvIHRoZSBjb250ZXh0IG1lbnUgdG8gZ2V0IGxpc3Qgb2YgdGhlIGl0ZW1zCisgKiBAcmV0dXJu
IHRoZSBsaXN0IG9mIHRoZSBpdGVtcyBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQor
ICovCitFQVBJIGNvbnN0IEVpbmFfTGlzdCAqZXdrX2NvbnRleHRfbWVudV9pdGVtc19nZXQoY29u
c3QgRXdrX0NvbnRleHRfTWVudSAqbyk7CisKKy8qKgorICogU2VsZWN0cyB0aGUgaXRlbSBmcm9t
IHRoZSBjb250ZXh0IG1lbnUuCisgKgorICogQHBhcmFtIG1lbnUgdGhlIGNvbnRleHQgbWVudQor
ICogQHBhcmFtIGl0ZW0gdGhlIGl0ZW0gaXMgc2VsZWN0ZWQKKyAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRWlu
YV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QoRXdrX0NvbnRleHRfTWVudSAqbWVu
dSwgRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKworI2VuZGlmIC8qIGV3a19jb250ZXh0X21lbnVfaCAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRl
bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDU3ZGJmNjJhNzA5NThkNTEzNjdhZmQwOGFmNjhmZjkzNjk3YWRm
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0X21lbnVfaXRlbS5jcHAKQEAgLTAsMCArMSwyMjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19j
b250ZXh0X21lbnVfaXRlbS5oIgorCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVtX3By
aXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitFd2tDb250ZXh0TWVudUl0ZW06OkV3a0NvbnRleHRNZW51SXRlbShjb25zdCBXZWJD
b250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQorICAgIDogbV90eXBlKHN0YXRpY19jYXN0PEV3a19D
b250ZXh0X01lbnVfSXRlbV9UeXBlPihpdGVtLnR5cGUoKSkpCisgICAgLCBtX2FjdGlvbihzdGF0
aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uPihpdGVtLmFjdGlvbigpKSkKKyAg
ICAsIG1fdGl0bGUoaXRlbS50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpCisgICAgLCBtX2lzQ2hlY2tl
ZChpdGVtLmNoZWNrZWQoKSkKKyAgICAsIG1faXNFbmFibGVkKGl0ZW0uZW5hYmxlZCgpKQorICAg
ICwgbV9wYXJlbnRNZW51KDApCisgICAgLCBtX3N1Yk1lbnUoMCkKK3sKK30KKworRXdrQ29udGV4
dE1lbnVJdGVtOjpFd2tDb250ZXh0TWVudUl0ZW0oRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUg
dHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIGNvbnN0IGNoYXIqIHRp
dGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQsIEV3a19Db250ZXh0X01l
bnUqIHN1Yk1lbnUpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fYWN0aW9uKGFjdGlvbikK
KyAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgLCBtX2lzQ2hlY2tlZChjaGVja2VkKQorICAgICwg
bV9pc0VuYWJsZWQoZW5hYmxlZCkKKyAgICAsIG1fcGFyZW50TWVudSgwKQorICAgICwgbV9zdWJN
ZW51KHN1Yk1lbnUpCit7Cit9CisKK0V3a19Db250ZXh0X01lbnVfSXRlbSogZXdrX2NvbnRleHRf
bWVudV9pdGVtX25ldyhFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4
dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgY29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBj
aGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCkKK3sKKyAgICByZXR1cm4gRXdrX0NvbnRleHRfTWVu
dV9JdGVtOjpjcmVhdGUodHlwZSwgYWN0aW9uLCB0aXRsZSwgY2hlY2tlZCwgZW5hYmxlZCwgMCku
bGVha1B0cigpOworfQorCitFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGV3a19jb250ZXh0X21lbnVf
aXRlbV9uZXdfd2l0aF9zdWJtZW51KEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUsIEV3
a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBjb25zdCBjaGFyKiB0aXRsZSwgRWlu
YV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkLCBFd2tfQ29udGV4dF9NZW51KiBzdWJN
ZW51KQoreworICAgIHJldHVybiBFd2tfQ29udGV4dF9NZW51X0l0ZW06OmNyZWF0ZSh0eXBlLCBh
Y3Rpb24sIHRpdGxlLCBjaGVja2VkLCBlbmFibGVkLCBzdWJNZW51KS5sZWFrUHRyKCk7Cit9CisK
K0V3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dl
dChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIEVXS19BQ1RJT05fVFlQRSk7CisKKyAgICByZXR1cm4g
aXRlbS0+dHlwZSgpOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVf
c2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5
cGUgdHlwZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFs
c2UpOworCisgICAgaXRlbS0+c2V0VHlwZSh0eXBlKTsKKworICAgIHJldHVybiB0cnVlOworfQor
CitFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rp
b25fZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19O
T19BQ1RJT04pOworCisgICAgcmV0dXJuIGl0ZW0tPmFjdGlvbigpOworfQorCitFaW5hX0Jvb2wg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9zZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBp
dGVtLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbikKK3sKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworCisgICAgaXRlbS0+c2V0QWN0
aW9uKGFjdGlvbik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY29uc3QgY2hhciogZXdrX2Nv
bnRleHRfbWVudV9pdGVtX3RpdGxlX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0
ZW0pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOworCisg
ICAgcmV0dXJuIGl0ZW0tPnRpdGxlKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51
X2l0ZW1fdGl0bGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgY29uc3QgY2hhciog
dGl0bGUpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIGZhbHNl
KTsKKworICAgIGl0ZW0tPnNldFRpdGxlKHRpdGxlKTsKKworICAgIHJldHVybiB0cnVlOworfQor
CitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGNvbnN0IEV3a19D
b250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoaXRlbSwgZmFsc2UpOworCisgICAgcmV0dXJuIGl0ZW0tPmNoZWNrZWQoKTsKK30KKwor
RWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX3NldChFd2tfQ29udGV4dF9N
ZW51X0l0ZW0qIGl0ZW0sIEVpbmFfQm9vbCBjaGVja2VkKQoreworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICBpdGVtLT5zZXRDaGVja2VkKGNo
ZWNrZWQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9t
ZW51X2l0ZW1fZW5hYmxlZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQor
eworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisgICAg
CisgICAgcmV0dXJuIGl0ZW0tPmVuYWJsZWQoKTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0
X21lbnVfaXRlbV9lbmFibGVkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEVpbmFf
Qm9vbCBlbmFibGVkKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVt
LCBmYWxzZSk7CisKKyAgICBpdGVtLT5zZXRFbmFibGVkKGVuYWJsZWQpOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19OT19BQ1RJT04sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9u
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19PUEVOX0xJTktfSU5fTkVXX1dJTkRPVywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3Bl
bkxpbmtJbk5ld1dpbmRvdyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfRE9XTkxPQURfTElOS19UT19ESVNLLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTElOS19UT19DTElQQk9BUkQsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fSU1BR0Vf
SU5fTkVXX1dJTkRPVywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdX
aW5kb3cpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0RPV05MT0FEX0lNQUdFX1RPX0RJU0ssIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z0Rvd25sb2FkSW1hZ2VUb0Rpc2spOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfSU1BR0VfVE9fQ0xJUEJPQVJELCBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9JTUFHRV9VUkxfVE9f
Q0xJUEJPQVJELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VVcmxUb0NsaXBi
b2FyZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfT1BFTl9GUkFNRV9JTl9ORVdfV0lORE9XLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdPcGVuRnJhbWVJbk5ld1dpbmRvdyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
Q29weSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfR09fQkFDSywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnR29CYWNrKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19HT19GT1JX
QVJELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUT1AsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ1N0b3ApOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1JFTE9BRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnUmVsb2FkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19DVVQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0N1dCk7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUEFTVEUsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUxFQ1RfQUxMLCBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdTZWxlY3RBbGwpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUxMSU5HX0dVRVNTLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdTcGVsbGluZ0d1ZXNzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19HVUVTU0VTX0ZPVU5ELCBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX1NQRUxMSU5HLCBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTEVBUk5fU1BFTExJTkcsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09USEVSLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdPdGhlcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfU0VBUkNIX0lOX1NQT1RMSUdIVCwgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFQVJDSF9XRUIsIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ1NlYXJjaFdlYik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfTE9PS19VUF9JTl9ESUNUSU9OQVJZLCBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fV0lUSF9ERUZBVUxUX0FQUExJ
Q0FUSU9OLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuV2l0aERlZmF1bHRBcHBsaWNh
dGlvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRF
TV9QREZBQ1RVQUxfU0laRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGQWN0dWFsU2l6ZSk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZa
T09NX0lOLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZab29tSW4pOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGWk9PTV9PVVQsIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVBERlpvb21PdXQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQVVUT19TSVpFLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1QREZBdXRvU2l6ZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19D
T05URVhUX01FTlVfSVRFTV9QREZTSU5HTEVfUEFHRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
UERGU2luZ2xlUGFnZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9QREZGQUNJTkdfUEFHRVMsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERkZh
Y2luZ1BhZ2VzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1BERkNPTlRJTlVPVVMsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERkNvbnRpbnVv
dXMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1f
UERGTkVYVF9QQUdFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZOZXh0UGFnZSk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZQUkVWSU9V
U19QQUdFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZQcmV2aW91c1BhZ2UpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fTElO
SywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmspOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lHTk9SRV9HUkFNTUFSLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVMTElOR19NRU5VLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfU1BFTExJTkdfUEFO
RUwsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19T
UEVMTElORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZyk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tf
U1BFTExJTkdfV0hJTEVfVFlQSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDaGVja1Nw
ZWxsaW5nV2hpbGVUeXBpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX0dSQU1NQVJfV0lUSF9TUEVMTElORywgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19GT05UX01FTlUsIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0ZPTlRTLCBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0JPTEQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ0JvbGQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX0lUQUxJQywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSXRhbGljKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19VTkRF
UkxJTkUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1VUTElORSwgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RZTEVTLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdTdHlsZXMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfQ09MT1JTLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdTaG93Q29sb3JzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19TUEVFQ0hfTUVOVSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3Bl
ZWNoTWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfU1RBUlRfU1BFQUtJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1N0YXJ0
U3BlYWtpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX1NUT1BfU1BFQUtJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1N0b3BT
cGVha2luZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfV1JJVElOR19ESVJFQ1RJT05fTUVOVSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RFRkFVTFRfRElSRUNUSU9OLCBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUZUX1RPX1JJR0hULCBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUklHSFRfVE9fTEVGVCwgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERlNJTkdMRV9QQUdFX1NDUk9MTElORywgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUERGU2luZ2xlUGFnZVNjcm9sbGluZyk7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUERGRkFDSU5H
X1BBR0VTX1NDUk9MTElORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFn
ZXNTY3JvbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX0lOU1BFQ1RfRUxFTUVOVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
SW5zcGVjdEVsZW1lbnQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX01FTlUsIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25NZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9ERUZBVUxULCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdCk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05f
TEVGVF9UT19SSUdIVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkxl
ZnRUb1JpZ2h0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZULCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fT1BFTl9NRURJQV9JTl9ORVdfV0lORE9X
LCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuTWVkaWFJbk5ld1dpbmRvdyk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9N
RURJQV9MSU5LX1RPX0NMSVBCT0FSRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weU1l
ZGlhTGlua1RvQ2xpcGJvYXJkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFfQ09OVFJPTFMsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dMRV9NRURJQV9MT09QLCBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUxvb3ApOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0VOVEVSX1ZJREVPX0ZVTExT
Q1JFRU4sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0VudGVyVmlkZW9GdWxsc2NyZWVuKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19N
RURJQV9QTEFZX1BBVVNFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXlQYXVz
ZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfTUVESUFfTVVURSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRlKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0JBU0VfQ1VT
VE9NX1RBRywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRhZyk7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9DVVNUT01fVEFHX05P
X0FDVElPTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtQ3VzdG9tVGFnTm9BY3Rpb24pOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fTEFTVF9DVVNU
T01fVEFHLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1MYXN0Q3VzdG9tVGFnKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0JBU0VfQVBQTElDQVRJ
T05fVEFHLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVu
dV9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9t
ZW51X2l0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjEyYTIxZjVjMTg5YWEyODAwZWFiMjFkZTZlZmZmOWY1
YWNkMDVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmgKQEAgLTAsMCArMSwyNzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfY29udGV4dF9tZW51
X2l0ZW0uaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgQ29udGV4dCBNZW51IEl0ZW0g
QVBJLgorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRfbWVudV9pdGVtX2gKKyNkZWZpbmUgZXdr
X2NvbnRleHRfbWVudV9pdGVtX2gKKworI2luY2x1ZGUgImV3a19kZWZpbmVzLmgiCisjaW5jbHVk
ZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisK
Ky8qKgorICogXGVudW0gICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUKKyAqIEBicmllZiAg
IERlZmluZXMgdGhlIHR5cGVzIG9mIHRoZSBpdGVtcyBmb3IgdGhlIGNvbnRleHQgbWVudS4KKyAq
IEBpbmZvICAgIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggQ29udGV4dE1lbnVJdGVtLmgKKyAqLwor
dHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfQUNUSU9OX1RZUEUsCisgICAgRVdLX0NIRUNLQUJMRV9B
Q1RJT05fVFlQRSwKKyAgICBFV0tfU0VQQVJBVE9SX1RZUEUsCisgICAgRVdLX1NVQk1FTlVfVFlQ
RQorfSBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZTsKKworLyoqCisgKiBcZW51bSAgICBFd2tf
Q29udGV4dF9NZW51X0FjdGlvbgorICogQGJyaWVmICAgUHJvdmlkZXMgdGhlIGFjdGlvbnMgb2Yg
aXRlbXMgZm9yIHRoZSBjb250ZXh0IG1lbnUuCisgKiBAaW5mbyAgICBLZWVwIHRoaXMgaW4gc3lu
YyB3aXRoIENvbnRleHRNZW51SXRlbS5oCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19OT19BQ1RJT04sCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19PUEVOX0xJTktfSU5fTkVXX1dJTkRPVywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX0RPV05MT0FEX0xJTktfVE9fRElTSywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X0NPUFlfTElOS19UT19DTElQQk9BUkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19P
UEVOX0lNQUdFX0lOX05FV19XSU5ET1csCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19E
T1dOTE9BRF9JTUFHRV9UT19ESVNLLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09Q
WV9JTUFHRV9UT19DTElQQk9BUkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZ
X0lNQUdFX1VSTF9UT19DTElQQk9BUkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19P
UEVOX0ZSQU1FX0lOX05FV19XSU5ET1csCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19D
T1BZLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fQkFDSywKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZPUldBUkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19TVE9QLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUkVMT0FELAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfQ1VULAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfUEFTVEUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUxFQ1RfQUxMLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfR1VFU1MsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19OT19HVUVTU0VTX0ZPVU5ELAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfSUdOT1JFX1NQRUxMSU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
TEVBUk5fU1BFTExJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PVEhFUiwKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFQVJDSF9JTl9TUE9UTElHSFQsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUFSQ0hfV0VCLAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfTE9PS19VUF9JTl9ESUNUSU9OQVJZLAorICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfT1BFTl9XSVRIX0RFRkFVTFRfQVBQTElDQVRJT04sCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1BERkFDVFVBTF9TSVpFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZaT09N
X0lOLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZaT09NX09VVCwKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fUERGQVVUT19TSVpFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9Q
REZTSU5HTEVfUEFHRSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGRkFDSU5HX1BBR0VT
LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZDT05USU5VT1VTLAorICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9QREZORVhUX1BBR0UsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1BE
RlBSRVZJT1VTX1BBR0UsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PUEVOX0xJTksg
PSAyMDAwLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX0dSQU1NQVIsCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVMTElOR19NRU5VLCAvKio8IHNwZWxsaW5n
IG9yIHNwZWxsaW5nL2dyYW1tYXIgc3ViLW1lbnUgKi8KKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX1NIT1dfU1BFTExJTkdfUEFORUwsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19DSEVDS19TUEVMTElORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX1NQ
RUxMSU5HX1dISUxFX1RZUElORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNL
X0dSQU1NQVJfV0lUSF9TUEVMTElORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0ZP
TlRfTUVOVSwgLyoqPCBmb250IHN1Yi1tZW51ICovCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19TSE9XX0ZPTlRTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQk9MRCwKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lUQUxJQywKKyAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX1VOREVSTElORSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09VVExJ
TkUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVFlMRVMsCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19TSE9XX0NPTE9SUywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX1NQRUVDSF9NRU5VLCAvKio8IHNwZWVjaCBzdWItbWVudSAqLworICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfU1RBUlRfU1BFQUtJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19TVE9QX1NQRUFLSU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfV1JJVElO
R19ESVJFQ1RJT05fTUVOVSwgLyoqPCB3cml0aW5nIGRpcmVjdGlvbiBzdWItbWVudSAqLworICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfREVGQVVMVF9ESVJFQ1RJT04sCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19MRUZUX1RPX1JJR0hULAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfUklHSFRfVE9fTEVGVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BE
RlNJTkdMRV9QQUdFX1NDUk9MTElORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BE
RkZBQ0lOR19QQUdFU19TQ1JPTExJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19J
TlNQRUNUX0VMRU1FTlQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVD
VElPTl9NRU5VLCAvKio8IHRleHQgZGlyZWN0aW9uIHN1Yi1tZW51ICovCisgICAgRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9ERUZBVUxULAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCwKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX09QRU5fTUVESUFfSU5fTkVXX1dJTkRPVywKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTUVESUFfTElOS19UT19DTElQQk9BUkQsCisgICAgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFfQ09OVFJPTFMsCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFfTE9PUCwKKyAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX0VOVEVSX1ZJREVPX0ZVTExTQ1JFRU4sCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19NRURJQV9QTEFZX1BBVVNFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfTUVESUFfTVVURSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fQkFTRV9DVVNUT01fVEFH
ID0gNTAwMCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fQ1VTVE9NX1RBR19OT19BQ1RJT04g
PSA1OTk4LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9MQVNUX0NVU1RPTV9UQUcgPSA1OTk5
LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0FQUExJQ0FUSU9OX1RBRyA9IDEwMDAw
Cit9IEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb247CisKKy8qKgorICogQ3JlYXRlcyBhIG5l
dyBpdGVtIG9mIHRoZSBjb250ZXh0IG1lbnUuCisgKgorICogQHBhcmFtIHR5cGUgc3BlY2lmaWVz
IGEgdHlwZSBvZiB0aGUgaXRlbQorICogQHBhcmFtIGFjdGlvbiBzcGVjaWZpZXMgYSBhY3Rpb24g
b2YgdGhlIGl0ZW0KKyAqIEBwYXJhbSB0aXRsZSBzcGVjaWZpZXMgYSB0aXRsZSBvZiB0aGUgaXRl
bQorICogQHBhcmFtIGNoZWNrZWQgQGMgRUlOQV9UUlVFIGlmIHRoZSBpdGVtIHNob3VsZCBiZSB0
b2dnbGVkIG9yIEBjIEVJTkFfRkFMU0UgaWYgbm90CisgKiBAcGFyYW0gZW5hYmxlZCBAYyBFSU5B
X1RSVUUgdG8gZW5hYmxlIHRoZSBpdGVtIG9yIEBjIEVJTkFfRkFMU0UgdG8gZGlzYWJsZQorICog
QHJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgbmV3IGl0ZW0KKyAqCisgKiBAc2VlIGV3a19jb250
ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51CisgKi8KK0VBUEkgRXdrX0NvbnRleHRfTWVu
dV9JdGVtICpld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KEV3a19Db250ZXh0X01lbnVfSXRlbV9U
eXBlIHR5cGUsIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBjb25zdCBjaGFy
ICp0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKTsKKworLyoqCisg
KiBDcmVhdGVzIGEgbmV3IGl0ZW0gb2YgdGhlIGNvbnRleHQgbWVudS4KKyAqCisgKiBAcGFyYW0g
dHlwZSBzcGVjaWZpZXMgYSB0eXBlIG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gYWN0aW9uIHNwZWNp
ZmllcyBhIGFjdGlvbiBvZiB0aGUgaXRlbQorICogQHBhcmFtIHRpdGxlIHNwZWNpZmllcyBhIHRp
dGxlIG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gY2hlY2tlZCBAYyBFSU5BX1RSVUUgaWYgdGhlIGl0
ZW0gc2hvdWxkIGJlIHRvZ2dsZWQgb3IgQGMgRUlOQV9GQUxTRSBpZiBub3QKKyAqIEBwYXJhbSBl
bmFibGVkIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhlIGl0ZW0gb3IgQGMgRUlOQV9GQUxTRSB0
byBkaXNhYmxlCisgKiBAcGFyYW0gc3VibWVudSBzcGVjaWZpZXMgYSBzdWJtZW51IG9mIHRoZSBp
dGVtCisgKiBAcmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBuZXcgaXRlbQorICoKKyAqIEBzZWUg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldworICovCitFQVBJIEV3a19Db250ZXh0X01lbnVfSXRl
bSAqZXdrX2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUoRXdrX0NvbnRleHRfTWVu
dV9JdGVtX1R5cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIGNv
bnN0IGNoYXIgKnRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQsIEV3
a19Db250ZXh0X01lbnUgKnN1Ym1lbnUpOworCisvKioKKyAqIEdldHMgdHlwZSBvZiB0aGUgaXRl
bS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBnZXQgdGhlIHR5cGUKKyAqIEByZXR1cm4g
dHlwZSBvZiB0aGUgaXRlbSBvbiBzdWNjZXNzIG9yIEBjIEVXS19BQ1RJT05fVFlQRSBvbiBmYWls
dXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQKKyAqLworRUFQ
SSBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9n
ZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpvKTsKKworLyoqCisgKiBTZXRzIHRoZSB0
eXBlIG9mIGl0ZW0uCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gc2V0IHRoZSB0eXBlCisg
KiBAcGFyYW0gdHlwZSBhIG5ldyB0eXBlIGZvciB0aGUgaXRlbSBvYmplY3QKKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICoK
KyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0CisgKi8KK0VBUEkgRWluYV9C
b29sIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0g
Km8sIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUpOworCisvKioKKyAqIEdldHMgYW4g
YWN0aW9uIG9mIHRoZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGdldCB0aGUg
YWN0aW9uCisgKiBAcmV0dXJuIGFuIGFjdGlvbiBvZiB0aGUgaXRlbSBvbiBzdWNjZXNzIG9yIEBj
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fQUNUSU9OIG9uIGZhaWx1cmUKKyAqCisgKiBA
c2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fc2V0CisgKi8KK0VBUEkgRXdrX0NvbnRl
eHRfTWVudV9JdGVtX0FjdGlvbiBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChjb25z
dCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNldHMgYW4gYWN0aW9uIG9m
IHRoZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIHNldCB0aGUgYWN0aW9uCisg
KiBAcGFyYW0gYWN0aW9uIGEgbmV3IGFjdGlvbiBmb3IgdGhlIGl0ZW0gb2JqZWN0CisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUK
KyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0CisgKi8KK0VBUEkg
RWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fc2V0KEV3a19Db250ZXh0X01l
bnVfSXRlbSAqbywgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24pOworCisvKioK
KyAqIEdldHMgYSB0aXRsZSBvZiB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0
byBnZXQgdGhlIHRpdGxlCisgKiBAcmV0dXJuIGEgdGl0bGUgb2YgdGhlIGl0ZW0gb24gc3VjY2Vz
cywgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0
ZW1fdGl0bGVfc2V0CisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX2NvbnRleHRfbWVudV9pdGVt
X3RpdGxlX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNl
dHMgYSB0aXRsZSBvZiB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBzZXQg
dGhlIHRpdGxlCisgKiBAcGFyYW0gdGl0bGUgYSBuZXcgdGl0bGUgZm9yIHRoZSBpdGVtIG9iamVj
dAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBv
biBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0Cisg
Ki8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9zZXQoRXdrX0Nv
bnRleHRfTWVudV9JdGVtICpvLCBjb25zdCBjaGFyICp0aXRsZSk7CisKKy8qKgorICogUXVlcmll
cyBpZiB0aGUgaXRlbSBpcyB0b2dnbGVkLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIHF1
ZXJ5IGlmIHRoZSBpdGVtIGlzIHRvZ2dsZWQKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRo
ZSBpdGVtIGlzIHRvZ2dsZWQgb3IgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQor
ICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQoY29u
c3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpvKTsKKworLyoqCisgKiBTZXRzIGlmIHRoZSBpdGVt
IHNob3VsZCBiZSB0b2dnbGVkLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIGJlIHRvZ2ds
ZWQKKyAqIEBwYXJhbSBjaGVja2VkIEBjIEVJTkFfVFJVRSBpZiB0aGUgaXRlbSBzaG91bGQgYmUg
dG9nZ2xlZCBvciBAYyBFSU5BX0ZBTFNFIGlmIG5vdAorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFaW5hX0Jv
b2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfc2V0KEV3a19Db250ZXh0X01lbnVfSXRl
bSAqbywgRWluYV9Cb29sIGNoZWNrZWQpOworCisvKioKKyAqIEdldHMgaWYgdGhlIGl0ZW0gaXMg
ZW5hYmxlZC4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBnZXQgZW5hYmxlZCBzdGF0ZQor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgaXQncyBlbmFibGVkLCBAYyBFSU5BX0ZBTFNFIGlm
IG5vdCBvciBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5h
YmxlZF9zZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJs
ZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbyk7CisKKy8qKgorICogRW5hYmxl
cy9kaXNhYmxlcyB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBlbmFibGUv
ZGlzYWJsZQorICogQHBhcmFtIGVuYWJsZWQgQGMgRUlOQV9UUlVFIHRvIGVuYWJsZSB0aGUgaXRl
bSBvciBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX2Nv
bnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250
ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8sIEVpbmFf
Qm9vbCBlbmFibGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlm
IC8qIGV3a19jb250ZXh0X21lbnVfaXRlbV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtX3ByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MmYyNzkwYjI0ZGVjYjNhYTZiMTNhZGRjY2ZjOTYxMjExMjk0MjY2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHRfbWVudV9pdGVtX3ByaXZhdGUuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRfbWVudV9pdGVtX3By
aXZhdGVfaAorI2RlZmluZSBld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZV9oCisKKyNpbmNs
dWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1E
YXRhLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudS5oIgorI2luY2x1ZGUgImV3a19jb250
ZXh0X21lbnVfaXRlbS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKKy8qKgorICog
XHN0cnVjdCAgRXdrX0NvbnRleHRfTWVudV9JdGVtCisgKiBAYnJpZWYgICBDb250YWlucyB0aGUg
Y29udGV4dCBtZW51IGl0ZW0gZGF0YS4KKyAqLworY2xhc3MgRXdrQ29udGV4dE1lbnVJdGVtIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxFd2tDb250ZXh0TWVudUl0ZW0+IGNyZWF0
ZShjb25zdCBXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV3a0NvbnRleHRNZW51SXRlbShpdGVtKSk7CisgICAg
fQorCisgICAgc3RhdGljIFBhc3NPd25QdHI8RXdrQ29udGV4dE1lbnVJdGVtPiBjcmVhdGUoRXdr
X0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlv
biBhY3Rpb24sIGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29s
IGVuYWJsZWQsIEV3a0NvbnRleHRNZW51KiBzdWJNZW51KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBFd2tDb250ZXh0TWVudUl0ZW0odHlwZSwgYWN0aW9uLCB0aXRsZSwgY2hl
Y2tlZCwgZW5hYmxlZCwgc3ViTWVudSkpOworICAgIH0KKworICAgIEV3a19Db250ZXh0X01lbnVf
SXRlbV9BY3Rpb24gYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb247IH0KKyAgICB2b2lk
IHNldEFjdGlvbihFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbikgeyBtX2FjdGlv
biA9IGFjdGlvbjsgfQorCisgICAgY29uc3QgY2hhciogdGl0bGUoKSBjb25zdCB7IHJldHVybiBt
X3RpdGxlOyB9CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBjaGFyKiB0aXRsZSkgeyBtX3RpdGxl
ID0gdGl0bGU7IH0KKworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB2b2lkIHNldFR5cGUoRXdrX0NvbnRleHRfTWVudV9J
dGVtX1R5cGUgdHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9CisKKyAgICBib29sIGNoZWNrZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzQ2hlY2tlZDsgfQorICAgIHZvaWQgc2V0Q2hlY2tlZChib29sIGNo
ZWNrZWQpIHsgbV9pc0NoZWNrZWQgPSBjaGVja2VkOyB9CisKKyAgICBib29sIGVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVu
YWJsZWQpIHsgbV9pc0VuYWJsZWQgPSBlbmFibGVkOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGlj
aXQgRXdrQ29udGV4dE1lbnVJdGVtKGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0
YSYpOworICAgIEV3a0NvbnRleHRNZW51SXRlbShFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0
eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgY29uc3QgY2hhciogdGl0
bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCwgRXdrQ29udGV4dE1lbnUq
IHN1Yk1lbnUpOworCisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgbV90eXBlOworICAg
IEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gbV9hY3Rpb247CisKKyAgICBXS0VpbmFTaGFy
ZWRTdHJpbmcgbV90aXRsZTsKKyAgICAKKyAgICBib29sIG1faXNDaGVja2VkOworICAgIGJvb2wg
bV9pc0VuYWJsZWQ7CisKKyAgICBFd2tfQ29udGV4dF9NZW51KiBtX3BhcmVudE1lbnU7CisgICAg
RXdrX0NvbnRleHRfTWVudSogbV9zdWJNZW51OworfTsKKworI2VuZGlmIC8vIGV3a19jb250ZXh0
X21lbnVfaXRlbV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjlm
NWM5MGFjMDgzZTJjMjc0ZWEyODYzODNiZjc5YTZjOGRlZTI0NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfcHJpdmF0
ZS5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBF
bGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBld2tfY29udGV4dF9tZW51X3ByaXZhdGVfaAorI2RlZmluZSBld2tfY29udGV4dF9t
ZW51X3ByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgorI2lu
Y2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOworY2xhc3MgV2ViQ29u
dGV4dE1lbnVQcm94eUVmbDsKK30KKworY2xhc3MgRXdrVmlld0ltcGw7CisKK2NsYXNzIEV3a0Nv
bnRleHRNZW51IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxFd2tDb250ZXh0TWVu
dT4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViS2l0OjpXZWJDb250ZXh0TWVudVBy
b3h5RWZsKiBjb250ZXh0TWVudVByb3h5LCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0
TWVudUl0ZW1EYXRhPiYgaXRlbXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IEV3a0NvbnRleHRNZW51KHZpZXdJbXBsLCBjb250ZXh0TWVudVByb3h5LCBpdGVtcykpOworICAg
IH0KKworICAgIHN0YXRpYyBQYXNzT3duUHRyPEV3a0NvbnRleHRNZW51PiBjcmVhdGUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tDb250ZXh0TWVudSgpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxFd2tDb250ZXh0TWVudT4gY3JlYXRlKEVpbmFfTGlz
dCogaXRlbXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV3a0NvbnRleHRN
ZW51KGl0ZW1zKSk7CisgICAgfQorCisgICAgfkV3a0NvbnRleHRNZW51KCk7CisKKyAgICB2b2lk
IGhpZGUoKTsKKyAgICB2b2lkIGFwcGVuZEl0ZW0oRXdrQ29udGV4dE1lbnVJdGVtKik7CisgICAg
dm9pZCByZW1vdmVJdGVtKEV3a0NvbnRleHRNZW51SXRlbSopOworCisgICAgY29uc3QgRWluYV9M
aXN0KiBpdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dE1lbnVJdGVtczsgfQorICAgIHZv
aWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0
ZW1EYXRhJiBpdGVtKTsKKworcHJpdmF0ZToKKyAgICBFd2tDb250ZXh0TWVudSgpOworICAgIEV3
a0NvbnRleHRNZW51KEVpbmFfTGlzdCogaXRlbXMpOworICAgIEV3a0NvbnRleHRNZW51KEV3a1Zp
ZXdJbXBsKiB2aWV3SW1wbCwgV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZsKiwgY29uc3Qg
VmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKTsKKworICAgIEV3
a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOworICAgIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUVm
bCogbV9jb250ZXh0TWVudVByb3h5OworICAgIEVpbmFfTGlzdCogbV9jb250ZXh0TWVudUl0ZW1z
OworfTsKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X21lbnVfcHJpdmF0ZV9oCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kZWZpbmVzLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGVmaW5lcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3
MzIwZmIzNzVhZmIyZDhhMTlhNTgwNDk5YmJhMTI5OGI0YWYxNGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGVmaW5lcy5oCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmls
ZSAgICBld2tfZGVmaW5lcy5oCisgKiBAYnJpZWYgICBEZWZpbmVzIHRoZSBFd2sgU3RydWN0cwor
ICovCisKKyNpZm5kZWYgZXdrX2RlZmluZXNfaAorI2RlZmluZSBld2tfZGVmaW5lc19oCisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0
eXBlIG5hbWUgZm9yIEV3a19Db250ZXh0X01lbnUgKi8KK3R5cGVkZWYgc3RydWN0IEV3a0NvbnRl
eHRNZW51IEV3a19Db250ZXh0X01lbnU7CisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBF
d2tfQ29udGV4dF9NZW51X0l0ZW0gKi8KK3R5cGVkZWYgc3RydWN0IEV3a0NvbnRleHRNZW51SXRl
bSBFd2tfQ29udGV4dF9NZW51X0l0ZW07CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CisKKyNlbmRpZiAvKiBld2tfZGVmaW5lc19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCA3NTAxNjExNzRiOWE0NTdmZjJlZGU5ODg1MThiMGIz
NDY3NzJiNTdmLi4zN2Y0MjUzYzFjOGE4NWVjMWMzZjJkMWUxMmU3MjBkODA1ODcyNWRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTg0LDYgKzg0
LDcgQEAKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3QuaCIKICNpbmNsdWRlICJld2tf
Y29sb3JfcGlja2VyLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKKyNpbmNsdWRlICJld2tf
Y29udGV4dF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgogI2luY2x1ZGUg
ImV3a19lcnJvci5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIKQEAgLTExNCw2ICsxMTUsOSBA
QCBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEV2YXNfU21hcnRfQ2xhc3Mgc2M7
IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAqLwogICAgIHVuc2ln
bmVkIGxvbmcgdmVyc2lvbjsKIAorICAgIEVpbmFfQm9vbCAoKmNvbnRleHRfbWVudV9zaG93KShF
d2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV3a19D
b250ZXh0X01lbnUgKm1lbnUpOworICAgIEVpbmFfQm9vbCAoKmNvbnRleHRfbWVudV9oaWRlKShF
d2tfVmlld19TbWFydF9EYXRhICpzZCk7CisKICAgICBFaW5hX0Jvb2wgKCpwb3B1cF9tZW51X3No
b3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX1JlY3RhbmdsZSByZWN0LCBFd2tfVGV4
dF9EaXJlY3Rpb24gdGV4dF9kaXJlY3Rpb24sIGRvdWJsZSBwYWdlX3NjYWxlX2ZhY3RvciwgRXdr
X1BvcHVwX01lbnUgKm1lbnUpOwogICAgIEVpbmFfQm9vbCAoKnBvcHVwX21lbnVfaGlkZSkoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QpOwogCkBAIC0xNjksNyArMTczLDcgQEAgc3RydWN0IEV3a19W
aWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJT
SU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8K
LSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21h
cnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZp
bmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xh
c3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoq
CiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3Ry
dWN0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvdGVzdF9ld2syX2NvbnRleHRfbWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dF9tZW51LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmY0
NzJhNWJkNzE2MDYwNDRjZGVkZjgyZDAwZDE0ZThlYTliMDU1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHRf
bWVudS5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl
IDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgiCisjaW5jbHVk
ZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgPEVX
ZWJLaXQyLmg+CisjaW5jbHVkZSA8RWNvcmUuaD4KKwordXNpbmcgbmFtZXNwYWNlIEVXSzJVbml0
VGVzdDsKKworZXh0ZXJuIEVXSzJVbml0VGVzdEVudmlyb25tZW50KiBlbnZpcm9ubWVudDsKKwor
c3RhdGljIGlubGluZSB2b2lkIGNoZWNrQmFzaWNDb250ZXh0TWVudUl0ZW0oRXdrX0NvbnRleHRf
TWVudV9JdGVtKiBpdGVtLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBFd2tfQ29u
dGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgY29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9v
bCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCkKK3sKKyAgICBBU1NFUlRfVFJVRShpdGVtKTsK
KworICAgIEVYUEVDVF9FUSh0eXBlLCBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQoaXRl
bSkpOworICAgIEVYUEVDVF9FUShhY3Rpb24sIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25f
Z2V0KGl0ZW0pKTsKKyAgICBFWFBFQ1RfU1RSRVEodGl0bGUsIGV3a19jb250ZXh0X21lbnVfaXRl
bV90aXRsZV9nZXQoaXRlbSkpOworICAgIEVYUEVDVF9FUShjaGVja2VkLCBld2tfY29udGV4dF9t
ZW51X2l0ZW1fY2hlY2tlZF9nZXQoaXRlbSkpOworICAgIEVYUEVDVF9FUShlbmFibGVkLCBld2tf
Y29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQoaXRlbSkpOworfQorCitzdGF0aWMgRWluYV9C
b29sIHNob3dDb250ZXh0TWVudShFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIEV2YXNf
Q29vcmQgeCwgRXZhc19Db29yZCB5LCBFd2tfQ29udGV4dF9NZW51KiBjb250ZXh0TWVudSkKK3sK
KyAgICBjb25zdCBFaW5hX0xpc3QqIGxpc3QgPSBld2tfY29udGV4dF9tZW51X2l0ZW1zX2dldChj
b250ZXh0TWVudSk7CisgICAgRVhQRUNUX0VRKDQsIGVpbmFfbGlzdF9jb3VudChsaXN0KSk7CisK
KyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4
dF9NZW51X0l0ZW0qPihlaW5hX2xpc3RfbnRoKGxpc3QsIDApKTsKKyAgICBjaGVja0Jhc2ljQ29u
dGV4dE1lbnVJdGVtKGl0ZW0sIEVXS19BQ1RJT05fVFlQRSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19HT19CQUNLLCAiR28gQmFjayIsIGZhbHNlLCB0cnVlKTsKKworICAgIGl0ZW0gPSBzdGF0
aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW0qPihlaW5hX2xpc3RfbnRoKGxpc3QsIDEpKTsK
KyAgICBjaGVja0Jhc2ljQ29udGV4dE1lbnVJdGVtKGl0ZW0sIEVXS19BQ1RJT05fVFlQRSwgRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19HT19GT1JXQVJELCAiR28gRm9yd2FyZCIsIGZhbHNlLCB0
cnVlKTsKKyAgICBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9zZXQoaXRlbSwgZmFsc2Up
OworICAgIEVYUEVDVF9GQUxTRShld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQoaXRl
bSkpOworCisgICAgaXRlbSA9IHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGVp
bmFfbGlzdF9udGgobGlzdCwgMikpOworICAgIGNoZWNrQmFzaWNDb250ZXh0TWVudUl0ZW0oaXRl
bSwgRVdLX0FDVElPTl9UWVBFLCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUT1AsICJTdG9w
IiwgZmFsc2UsIHRydWUpOworICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX3NldChp
dGVtLCB0cnVlKTsKKyAgICBFWFBFQ1RfVFJVRShld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tl
ZF9nZXQoaXRlbSkpOworCisgICAgaXRlbSA9IHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVf
SXRlbSo+KGVpbmFfbGlzdF9udGgobGlzdCwgMykpOworICAgIGNoZWNrQmFzaWNDb250ZXh0TWVu
dUl0ZW0oaXRlbSwgRVdLX0FDVElPTl9UWVBFLCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1JF
TE9BRCwgIlJlbG9hZCIsIGZhbHNlLCB0cnVlKTsKKyAgICBld2tfY29udGV4dF9tZW51X2l0ZW1f
dGl0bGVfc2V0KGl0ZW0sICJSZWZyZXNoIik7CisgICAgRVhQRUNUX1NUUkVRKCJSZWZyZXNoIiwg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldChpdGVtKSk7CisKKyAgICAvLyBNYWtlcyBu
ZXcgY29udGV4dCBtZW51IGl0ZW1zLgorICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSogbmV3SXRl
bSA9IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRVdLX0FDVElPTl9UWVBFLCBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX09USEVSLCAiTmV3IEN1c3RvbSBJdGVtIiwgZmFsc2UsIHRydWUpOwor
ICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQoY29udGV4dE1lbnUsIG5ld0l0ZW0pOwor
CisgICAgRWluYV9MaXN0KiBzdWJNZW51SXRlbUxpc3QgPSAwOworICAgIEV3a19Db250ZXh0X01l
bnVfSXRlbSogc3ViSXRlbTEgPSBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KEVXS19TVUJNRU5V
X1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1RIRVIsICJOZXcgU3ViIEl0ZW0gMSIs
IGZhbHNlLCB0cnVlKTsKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIHN1Ykl0ZW0yID0gZXdr
X2NvbnRleHRfbWVudV9pdGVtX25ldyhFV0tfU1VCTUVOVV9UWVBFLCBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX09USEVSLCAiTmV3IFN1YiBJdGVtIDIiLCBmYWxzZSwgdHJ1ZSk7CisgICAgRXdr
X0NvbnRleHRfTWVudV9JdGVtKiBzdWJJdGVtMyA9IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXco
RVdLX1NVQk1FTlVfVFlQRSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PVEhFUiwgIk5ldyBT
dWIgSXRlbSAzIiwgZmFsc2UsIHRydWUpOworICAgIHN1Yk1lbnVJdGVtTGlzdCA9IGVpbmFfbGlz
dF9hcHBlbmQoc3ViTWVudUl0ZW1MaXN0LCBzdWJJdGVtMSk7CisgICAgc3ViTWVudUl0ZW1MaXN0
ID0gZWluYV9saXN0X2FwcGVuZChzdWJNZW51SXRlbUxpc3QsIHN1Ykl0ZW0yKTsKKyAgICBzdWJN
ZW51SXRlbUxpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKHN1Yk1lbnVJdGVtTGlzdCwgc3ViSXRlbTMp
OworICAgIEV3a19Db250ZXh0X01lbnUqIHN1Yk1lbnUgPSBld2tfY29udGV4dF9tZW51X25ld193
aXRoX2l0ZW1zKHN1Yk1lbnVJdGVtTGlzdCk7CisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBu
ZXdJdGVtMiA9IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51KEVXS19BQ1RJ
T05fVFlQRSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PVEhFUiwgIk5ldyBDdXN0b20gSXRl
bSIsIGZhbHNlLCB0cnVlLCBzdWJNZW51KTsKKyAgICBld2tfY29udGV4dF9tZW51X2l0ZW1fYXBw
ZW5kKGNvbnRleHRNZW51LCBuZXdJdGVtMik7CisKKyAgICBsaXN0ID0gZXdrX2NvbnRleHRfbWVu
dV9pdGVtc19nZXQoY29udGV4dE1lbnUpOworICAgIEVYUEVDVF9FUSg2LCBlaW5hX2xpc3RfY291
bnQobGlzdCkpOworCisgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtX3JlbW92ZShjb250ZXh0TWVu
dSwgbmV3SXRlbSk7CisgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtX3JlbW92ZShjb250ZXh0TWVu
dSwgbmV3SXRlbTIpOworICAgIGxpc3QgPSBld2tfY29udGV4dF9tZW51X2l0ZW1zX2dldChjb250
ZXh0TWVudSk7CisgICAgRVhQRUNUX0VRKDQsIGVpbmFfbGlzdF9jb3VudChsaXN0KSk7CisKKyAg
ICBFWFBFQ1RfVFJVRShld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KGNvbnRleHRNZW51LCBp
dGVtKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2Us
IGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QpCit7CisgICAgY29uc3QgY2hhciogaXRlbVNl
bGVjdEhUTUwgPQorICAgICAgICAiPGh0bWw+IgorICAgICAgICAiPGJvZHk+PGEgaHJlZj1odHRw
Oi8vd3d3Lmdvb2dsZS5jb20+VGVzdCBMaW5rPC9hPjwvYm9keT4iCisgICAgICAgICI8L2JvZHk+
PC9odG1sPiI7IAorCisgICAgZXdrVmlld0NsYXNzKCktPmNvbnRleHRfbWVudV9zaG93ID0gc2hv
d0NvbnRleHRNZW51OworCisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCks
IGl0ZW1TZWxlY3RIVE1MLCAiZmlsZTovLy8iLCAwKTsKKyAgICBtb3VzZUNsaWNrKDIwLCAzMCwg
LypSaWdodCovIDMpOworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVD
bGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNs
aWVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E4NjAyOGUwZGQ2NDMwNzE2MjczMWYxN2YzNWUyZjNm
YTY4NTFkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
Q29udGV4dE1lbnVDbGllbnRFZmwuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50
RWZsLmgiCisKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSAiV0tBcnJheS5oIgorI2luY2x1ZGUgIldLUGFnZS5oIgorI2luY2x1
ZGUgIldlYkNvbnRleHRNZW51SXRlbS5oIiAgIAorI2luY2x1ZGUgPEV2YXMuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKworc3RhdGljIGlubGluZSBDb250ZXh0TWVudUNsaWVudEVmbCog
dG9Db250ZXh0Q2xpZW50RWZsKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PENvbnRleHRNZW51Q2xpZW50RWZsKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpOworfQorCitDb250ZXh0TWVudUNsaWVudEVmbDo6Q29udGV4dE1lbnVDbGllbnRF
ZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQorICAgIDogbV92aWV3SW1wbCh2aWV3SW1wbCkKK3sK
KyAgICBXS1BhZ2VSZWYgcGFnZVJlZiA9IG1fdmlld0ltcGwtPndrUGFnZSgpOworICAgIEFTU0VS
VChwYWdlUmVmKTsKKworICAgIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50IGNvbnRleHRNZW51Q2xp
ZW50OworICAgIG1lbXNldCgmY29udGV4dE1lbnVDbGllbnQsIDAsIHNpemVvZihXS1BhZ2VDb250
ZXh0TWVudUNsaWVudCkpOworICAgIGNvbnRleHRNZW51Q2xpZW50LnZlcnNpb24gPSBrV0tQYWdl
Q29udGV4dE1lbnVDbGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICBjb250ZXh0TWVudUNsaWVudC5j
bGllbnRJbmZvID0gdGhpczsKKyAgICBjb250ZXh0TWVudUNsaWVudC5nZXRDb250ZXh0TWVudUZy
b21Qcm9wb3NlZE1lbnVfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCA9IDA7CisgICAgY29udGV4dE1l
bnVDbGllbnQuY3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQgPSAwOworICAgIGNvbnRleHRN
ZW51Q2xpZW50LmNvbnRleHRNZW51RGlzbWlzc2VkID0gMDsKKyAgICBjb250ZXh0TWVudUNsaWVu
dC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUgPSAwOworCisgICAgV0tQYWdlU2V0UGFn
ZUNvbnRleHRNZW51Q2xpZW50KHBhZ2VSZWYsICZjb250ZXh0TWVudUNsaWVudCk7Cit9CisKK3Zv
aWQgQ29udGV4dE1lbnVDbGllbnRFZmw6OmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShX
S1BhZ2VSZWYsIFdLQXJyYXlSZWYsIFdLQXJyYXlSZWYqLCBXS0hpdFRlc3RSZXN1bHRSZWYsIFdL
VHlwZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMjllNGVkM2NlY2NiZDMzN2Q4ODdjNWI1NDU0NTAxZGY3NWIxYWMwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNs
aWVudEVmbC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDb250ZXh0TWVudUNsaWVudEVmbF9oCisjZGVmaW5lIENvbnRleHRNZW51Q2xpZW50RWZsX2gK
KworI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKKyNp
bmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworY2xhc3MgRXdrVmlld0ltcGw7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDb250
ZXh0TWVudUNsaWVudEVmbCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q29udGV4
dE1lbnVDbGllbnRFZmw+IGNyZWF0ZShFd2tWaWV3SW1wbCogdmlld0ltcGwpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvbnRleHRNZW51Q2xpZW50RWZsKHZpZXdJbXBsKSk7
CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51
KFdLUGFnZVJlZiwgV0tBcnJheVJlZiBwcm9wb3NlZE1lbnUsIFdLQXJyYXlSZWYqIG5ld01lbnUs
IFdLSGl0VGVzdFJlc3VsdFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBDb250ZXh0TWVudUNsaWVudEVmbChF
d2tWaWV3SW1wbCopOworCisgICAgRXdrVmlld0ltcGwqIG1fdmlld0ltcGw7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIENvbnRleHRNZW51Q2xpZW50RWZsX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAKaW5kZXgg
OTdhODVmNWNjZWZlYzczZGIzZjM0NjlhYjQxMzNlMjMyYzFiMzRkMC4uMGNlODJhYWU0NmU0MDRm
NWQyOTNkYWFjNjM0ZGIwMTkzNWIyYzlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKICNpbmNsdWRlICJX
ZWJDb250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1ZGUg
IldlYkNvbnRleHRNZW51UHJveHlFZmwuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5o
IgpAQCAtMjIxLDEwICsyMjEsOSBAQCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdl
Q2xpZW50QmFzZTo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KgogICAgIHJldHVy
biBXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKG1fdmlld0ltcGwsIHBhZ2UpOwogfQogCi1Q
YXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRCYXNlOjpjcmVhdGVDb250
ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCitQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJv
eHk+IFBhZ2VDbGllbnRCYXNlOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSog
cGFnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVy
biBXZWJDb250ZXh0TWVudVByb3h5RWZsOjpjcmVhdGUobV92aWV3SW1wbCwgcGFnZSk7CiB9CiAK
ICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVj
N2UwZWI4MTYzMzM1M2MxNjMzZDBjZWZiNTllZDU3ZjUyYzQ1YjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3Bw
CkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb250
ZXh0TWVudVByb3h5RWZsLmgiCisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1
ZGUgIkV3a1ZpZXdJbXBsLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgor
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJD
b250ZXh0TWVudVByb3h5RWZsOjpXZWJDb250ZXh0TWVudVByb3h5RWZsKEV3a1ZpZXdJbXBsKiB2
aWV3SW1wbCwgV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIDogbV92aWV3SW1wbCh2aWV3SW1wbCkK
KyAgICAsIG1fcGFnZShwYWdlKQoreworfQorCitXZWJDb250ZXh0TWVudVByb3h5RWZsOjp+V2Vi
Q29udGV4dE1lbnVQcm94eUVmbCgpCit7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUVm
bDo6c2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcykKK3sKKyAgICBtX3ZpZXdJ
bXBsLT5zaG93Q29udGV4dE1lbnUodGhpcywgcG9zaXRpb24sIGl0ZW1zKTsKK30KKwordm9pZCBX
ZWJDb250ZXh0TWVudVByb3h5RWZsOjpoaWRlQ29udGV4dE1lbnUoKQoreworICAgIG1fdmlld0lt
cGwtPmhpZGVDb250ZXh0TWVudSgpOworfQorCit2b2lkIFdlYkNvbnRleHRNZW51UHJveHlFZmw6
OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0
ZW0pCit7CisgICAgbV9wYWdlLT5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZChpdGVtKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQ
cm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVBy
b3h5RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdiZTJhYjljZWI1ZGRjZjFjNDYyYjQ1NTM4YzMyOTNhMjIy
OGY0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Q29udGV4dE1lbnVQcm94eUVmbC5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29udGV4
dE1lbnVQcm94eUVmbF9oCisjZGVmaW5lIFdlYkNvbnRleHRNZW51UHJveHlFZmxfaAorCisjaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCisKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5Lmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50
UG9pbnQuaD4KKworY2xhc3MgRXdrVmlld0ltcGw7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFz
cyBXZWJDb250ZXh0TWVudVByb3h5RWZsIDogcHVibGljIFdlYkNvbnRleHRNZW51UHJveHkgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHlFZmw+IGNy
ZWF0ZShFd2tWaWV3SW1wbCogdmlld0ltcGwsIFdlYlBhZ2VQcm94eSogcGFnZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGV4dE1lbnVQcm94eUVmbCh2aWV3SW1w
bCwgcGFnZSkpOworICAgIH0KKworICAgIH5XZWJDb250ZXh0TWVudVByb3h5RWZsKCk7CisKKyAg
ICB2b2lkIHNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFZl
Y3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYpOworICAgIHZvaWQgaGlkZUNvbnRleHRNZW51
KCk7CisKKyAgICB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRN
ZW51SXRlbURhdGEmKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb250ZXh0TWVudVByb3h5RWZsKEV3
a1ZpZXdJbXBsKiwgV2ViUGFnZVByb3h5Kik7CisKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1w
bDsKKyAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKK307CisKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyNlbmRpZiAvLyBXZWJDb250
ZXh0TWVudVByb3h5RWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175358</attachid>
            <date>2012-11-21 00:28:54 -0800</date>
            <delta_ts>2012-11-21 06:25:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96200-20121121172641.patch</filename>
            <type>text/plain</type>
            <size>76457</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA2NThmZDE3MWU1Yzk5
MjZmODYwYTczZDRkMWJmZDAyMTkzZjdjZC4uNGVmZTAzM2YwYjYyYjUzMjNjODg5ZWNlYmE0OTdm
NWJiOTgwYjg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTIwICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0sy
XSBTdXBwb3J0IENvbnRleHQgTWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICBFRkwg
cG9ydCBhbHNvIGRvZXNuJ3QgaGlkZSB1bmF2YWlsYWJsZSBtZW51cyBhcyBndGsgcG9ydC4KKwog
MjAxMi0xMS0yMCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW1Y4XSBSZW1vdmUgdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0NTAwNjE5NGY1OGI2NmQ5YWE2MmJhN2VmNGQxYTdlMWQ0M2Q2YTk3Li5j
NjRkMTg5NWE5YmFjNTQ4MDdjMmI3MDg5MDg1M2MzYjA1YzUzZjdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTAxIEBACisyMDEyLTExLTIwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBTdXBwb3J0IENvbnRleHQgTWVudQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYyMDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN1
cHBvcnRzIFdLMiBFRkwncyBjb250ZXh0IG1lbnUgYXMgV0sxIGltcGxlbWVudGF0aW9uIGJlY2F1
c2Ugd2UgY2FuJ3QgdXNlIGVsZW1lbnRhcnkgaW4gaW5zaWRlIFdlYktpdC4KKyAgICAgICAgT25s
eSBiYXNpYyBmdW5jdGlvbmFsaXRpZXMgb2YgY29udGV4dCBtZW51IGFyZSBzdXBwb3J0ZWQuIEJl
c2lkZSB0aGlzIGltcGxlbWVudGF0aW9uIGZvbGxvd3MgR1RLJ3MgaW1wbGVtZW50YXRpb24uCisg
ICAgICAgIEZvciBleGFtcGxlLCBld2tfY29udGV4dF9tZW51X25ldywgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX2FwcGVuZCwgZXdrX2NvbnRleHRfbWVudV9pdGVtX3JlbW92ZSBhcmUgc3VwcG9ydGVk
LgorCisgICAgICAgIEluIGFkZGl0aW9uLCBld2tfZGVmaW5lcy5oIGZpbGUgaXMgYWRkZWQgaW4g
b3JkZXIgdG8gc3VwcG9ydCBjcm9zcyBpbmNsdXNpb24gYXMgR1RLIHBvcnQuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0
Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2hv
d0NvbnRleHRNZW51KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpoaWRlQ29udGV4dE1lbnUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X21lbnUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEV3a0NvbnRleHRNZW51OjpF
d2tDb250ZXh0TWVudSk6CisgICAgICAgIChFd2tDb250ZXh0TWVudTo6fkV3a0NvbnRleHRNZW51
KToKKyAgICAgICAgKEV3a0NvbnRleHRNZW51OjpoaWRlKToKKyAgICAgICAgKEV3a19Db250ZXh0
X01lbnU6OmFwcGVuZEl0ZW0pOgorICAgICAgICAoRXdrX0NvbnRleHRfTWVudTo6cmVtb3ZlSXRl
bSk6CisgICAgICAgIChFd2tDb250ZXh0TWVudTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgor
ICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9uZXcpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVu
dV9uZXdfd2l0aF9pdGVtcyk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fYXBwZW5k
KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9yZW1vdmUpOgorICAgICAgICAoZXdr
X2NvbnRleHRfbWVudV9oaWRlKToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0
KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmNwcDogQWRkZWQuCisgICAgICAg
IChFd2tDb250ZXh0TWVudUl0ZW06OkV3a0NvbnRleHRNZW51SXRlbSk6CisgICAgICAgIChld2tf
Y29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9u
ZXdfd2l0aF9zdWJtZW51KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dl
dCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQpOgorICAgICAgICAo
ZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9nZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRf
bWVudV9pdGVtX2FjdGlvbl9zZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3Rp
dGxlX2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KToKKyAg
ICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX2dldCk6CisgICAgICAgIChld2tf
Y29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9zZXQpOgorICAgICAgICAoZXdrX2NvbnRleHRfbWVu
dV9pdGVtX2VuYWJsZWRfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFi
bGVkX3NldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9p
dGVtLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21l
bnVfaXRlbV9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoRXdrQ29udGV4dE1lbnVJdGVtKToK
KyAgICAgICAgKEV3a0NvbnRleHRNZW51SXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKEV3a0NvbnRl
eHRNZW51SXRlbTo6YWN0aW9uKToKKyAgICAgICAgKEV3a0NvbnRleHRNZW51SXRlbTo6c2V0QWN0
aW9uKToKKyAgICAgICAgKEV3a0NvbnRleHRNZW51SXRlbTo6dGl0bGUpOgorICAgICAgICAoRXdr
Q29udGV4dE1lbnVJdGVtOjpzZXRUaXRsZSk6CisgICAgICAgIChFd2tDb250ZXh0TWVudUl0ZW06
OnR5cGUpOgorICAgICAgICAoRXdrQ29udGV4dE1lbnVJdGVtOjpzZXRUeXBlKToKKyAgICAgICAg
KEV3a0NvbnRleHRNZW51SXRlbTo6Y2hlY2tlZCk6CisgICAgICAgIChFd2tDb250ZXh0TWVudUl0
ZW06OnNldENoZWNrZWQpOgorICAgICAgICAoRXdrQ29udGV4dE1lbnVJdGVtOjplbmFibGVkKToK
KyAgICAgICAgKEV3a0NvbnRleHRNZW51SXRlbTo6c2V0RW5hYmxlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKEV3a0NvbnRleHRNZW51KToKKyAgICAgICAgKEV3a0NvbnRl
eHRNZW51OjpjcmVhdGUpOgorICAgICAgICAoRXdrQ29udGV4dE1lbnU6Oml0ZW1zKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGVmaW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0X21lbnUuY3BwOiBBZGRlZC4KKyAgICAgICAgKGNoZWNr
QmFzaWNDb250ZXh0TWVudUl0ZW0pOgorICAgICAgICAoc2hvd0NvbnRleHRNZW51KToKKyAgICAg
ICAgKFRFU1RfRik6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVm
bC5jcHA6IEFkZGVkLgorICAgICAgICAodG9Db250ZXh0Q2xpZW50RWZsKToKKyAgICAgICAgKENv
bnRleHRNZW51Q2xpZW50RWZsOjpDb250ZXh0TWVudUNsaWVudEVmbCk6CisgICAgICAgIChDb250
ZXh0TWVudUNsaWVudEVmbDo6Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51Q2xpZW50RWZsLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKENvbnRleHRNZW51Q2xpZW50RWZsKToKKyAgICAgICAgKFdl
YktpdDo6Q29udGV4dE1lbnVDbGllbnRFZmw6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9QYWdlQ2xpZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRCYXNl
OjpjcmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkNv
bnRleHRNZW51UHJveHlFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmw6OldlYkNvbnRleHRNZW51UHJveHlFZmwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZsOjp+V2ViQ29udGV4dE1l
bnVQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmw6OnNo
b3dDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlFZmw6
OmhpZGVDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlF
Zmw6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dl
YkNvbnRleHRNZW51UHJveHlFZmwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViQ29udGV4dE1lbnVQcm94eUVmbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRN
ZW51UHJveHlFZmw6OmNyZWF0ZSk6CisKIDIwMTItMTEtMjAgIEppbndvbyBTb25nICA8amlud29v
Ny5zb25nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gUmVtb3ZlIHVubmVjZXNz
YXJ5ICNpbmNsdWRlIGluIEFQSSB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAKaW5kZXggNzk3OTcxZDBmNTZjOTUyNGUwMjQ0OGNmZGRjNGI5ZTVl
ZGZhMTY5ZC4uNTY0MGRjNzY5N2U4MjM2Mzc2YzY1MzExMmZjMWI4MzAwZjRhOTYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtODc2LDgg
Kzg3Niw4IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAg
ICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPmhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkpKSB7CiAjZW5kaWYKIAot
ICAgICAgICAgICAgICAgIC8vIEluIEdUSysgdW5hdmFpbGFibGUgaXRlbXMgYXJlIG5vdCBoaWRk
ZW4gYnV0IGluc2Vuc2l0aXZlCi0jaWYgUExBVEZPUk0oR1RLKQorICAgICAgICAgICAgICAgIC8v
IEluIEdUSysgYW5kIEVGTCwgdW5hdmFpbGFibGUgaXRlbXMgYXJlIG5vdCBoaWRkZW4gYnV0IGlu
c2Vuc2l0aXZlLgorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgICAgICAg
ICAgICAgIGFwcGVuZEl0ZW0oQmFja0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIGFwcGVuZEl0ZW0oRm9yd2FyZEl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwog
ICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU3RvcEl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA2NzlhNmE1N2I0YzNhYTJiYWVkZGUzZjJl
ZTJmOWEyMzhkZTFlZTg3Li43NzM0YTkyYTc3OTMzOGZmZmIzNTQ3MzM4NWRiM2M2YjZiNWIyYzI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNDksNiArNDksOCBAQCBMSVNUKEFQUEVO
RCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJk
X2xpc3RfaXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHRfbWVudV9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFu
YWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcApAQCAtNzksNiArODEs
NyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9lZmwvQmF0
dGVyeVByb3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRF
ZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Zp
bmRDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcApAQCAt
OTYsNiArOTksNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3Mv
ZWZsL1RleHRDaGVja2VyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvVmlicmF0aW9uQ2xpZW50
RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKKyAgICBVSVByb2Nl
c3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVj
dG9yUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBA
IC0yNTcsNiArMjYxLDcgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oIgogICAgICIk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9t
YW5hZ2VyLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfZGF0YWJhc2VfbWFuYWdlci5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2RlZmluZXMuaCIKICAgICAiJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuaCIKICAg
ICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19lcnJv
ci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2Zhdmljb25fZGF0YWJhc2UuaCIKQEAgLTM2NCw2ICszNjksNyBAQCBTRVQoRVdLMlVuaXRU
ZXN0c19CSU5BUklFUwogICAgIHRlc3RfZXdrMl9jb2xvcl9waWNrZXIKICAgICB0ZXN0X2V3azJf
Y29udGV4dAogICAgIHRlc3RfZXdrMl9jb250ZXh0X2hpc3RvcnlfY2FsbGJhY2tzCisgICAgdGVz
dF9ld2syX2NvbnRleHRfbWVudQogICAgIHRlc3RfZXdrMl9jb29raWVfbWFuYWdlcgogICAgIHRl
c3RfZXdrMl9kYXRhYmFzZV9tYW5hZ2VyCiAgICAgdGVzdF9ld2syX2Rvd25sb2FkX2pvYgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggYWRhYWUxZWNk
ZTUwNjc5Yzk5NWNjOTViZWI3ZDE5YTExODYwZTU1YS4uYjEyMjExMDg0NDNjMGU0OTZhY2M4YzJl
YzUzZmNjZTc4OTNmNTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
V2ViS2l0Mi5oCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9s
aXN0X2l0ZW0uaCIKICNpbmNsdWRlICJld2tfY29sb3JfcGlja2VyLmgiCiAjaW5jbHVkZSAiZXdr
X2NvbnRleHQuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51LmgiCisjaW5jbHVkZSAiZXdr
X2NvbnRleHRfbWVudV9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiZXdrX2RhdGFiYXNlX21hbmFnZXIuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRf
am9iLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5jcHAKaW5kZXggMDA0NDM0MTkyN2U4MmI3ZWY3YzQxYzdhMjBjNmViNzI3ZjRkMjExYy4uOWI4
OWVlNWI3ZTBhZmY0NjEzZmJmMTA1NDQxYzViNWExYjcwZjgwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcApAQCAtMjEsNiArMjEsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCiAKKyNpbmNs
dWRlICJDb250ZXh0TWVudUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIkVmbFNjcmVlblV0aWxpdGll
cy5oIgogI2luY2x1ZGUgIkZpbmRDbGllbnRFZmwuaCIKICNpbmNsdWRlICJGb3JtQ2xpZW50RWZs
LmgiCkBAIC00NSw2ICs0Niw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNs
dWRlICJld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19jb2xv
cl9waWNrZXJfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfZmF2aWNv
bl9kYXRhYmFzZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2
YXRlLmgiCkBAIC0xMTUsNiArMTE3LDcgQEAgRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNf
T2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNvbnRleHQsIFBhc3MKICAgICAs
IG1fcGFnZVBvbGljeUNsaWVudChQYWdlUG9saWN5Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAg
ICAgLCBtX3BhZ2VVSUNsaWVudChQYWdlVUlDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAs
IG1fcmVzb3VyY2VMb2FkQ2xpZW50KFJlc291cmNlTG9hZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMp
KQorICAgICwgbV9jb250ZXh0TWVudUNsaWVudChDb250ZXh0TWVudUNsaWVudEVmbDo6Y3JlYXRl
KHRoaXMpKQogICAgICwgbV9maW5kQ2xpZW50KEZpbmRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fZm9ybUNsaWVudChGb3JtQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAjaWYgRU5B
QkxFKFZJQlJBVElPTikKQEAgLTczMyw2ICs3MzYsMzggQEAgdm9pZCBFd2tWaWV3SW1wbDo6aW5m
b3JtQ29udGVudHNTaXplQ2hhbmdlKGNvbnN0IEludFNpemUmIHNpemUpCiBDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZULCBSVEwpOwog
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19S
SUdIVCwgTFRSKTsKIAordm9pZCBFd2tWaWV3SW1wbDo6c2hvd0NvbnRleHRNZW51KFdlYkNvbnRl
eHRNZW51UHJveHlFZmwqIGNvbnRleHRNZW51UHJveHksIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb3NpdGlvbiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcykK
K3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgIEFTU0VS
VChzZC0+YXBpKTsKKworICAgIEFTU0VSVChjb250ZXh0TWVudVByb3h5KTsKKworICAgIGlmICgh
c2QtPmFwaS0+Y29udGV4dF9tZW51X3Nob3cpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICht
X2NvbnRleHRNZW51KQorICAgICAgICBoaWRlQ29udGV4dE1lbnUoKTsKKworICAgIG1fY29udGV4
dE1lbnUgPSBFd2tfQ29udGV4dF9NZW51OjpjcmVhdGUodGhpcywgY29udGV4dE1lbnVQcm94eSwg
aXRlbXMpOworCisgICAgc2QtPmFwaS0+Y29udGV4dF9tZW51X3Nob3coc2QsIHBvc2l0aW9uLngo
KSwgcG9zaXRpb24ueSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKK30KKwordm9pZCBFd2tWaWV3
SW1wbDo6aGlkZUNvbnRleHRNZW51KCkKK3sKKyAgICBpZiAoIW1fY29udGV4dE1lbnUpCisgICAg
ICAgIHJldHVybjsKKworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7
CisgICAgQVNTRVJUKHNkLT5hcGkpOworCisgICAgaWYgKHNkLT5hcGktPmNvbnRleHRfbWVudV9o
aWRlKQorICAgICAgICBzZC0+YXBpLT5jb250ZXh0X21lbnVfaGlkZShzZCk7CisKKyAgICBtX2Nv
bnRleHRNZW51LmNsZWFyKCk7Cit9CisKIHZvaWQgRXdrVmlld0ltcGw6OnJlcXVlc3RQb3B1cE1l
bnUoV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5LCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3Is
IGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4
KQogewogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAppbmRleCBjMGI5N2E4
OTk5YThjODIzYTEyZmE0YzM4YjA5YWIxOGE5NzU0YWJmLi41NDVjNWFiNjg5MmFjNGJhNzZlNzgz
MDg5NmM3OWNiMTZmNmFiZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXdJbXBsLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKK2NsYXNzIENvbnRleHRNZW51Q2xpZW50RWZsOwogY2xhc3MgRmluZENsaWVudEVm
bDsKIGNsYXNzIEZvcm1DbGllbnRFZmw7CiBjbGFzcyBJbnB1dE1ldGhvZENvbnRleHRFZmw7CkBA
IC01NSw2ICs1Niw4IEBAIGNsYXNzIFBhZ2VMb2FkQ2xpZW50RWZsOwogY2xhc3MgUGFnZVBvbGlj
eUNsaWVudEVmbDsKIGNsYXNzIFBhZ2VVSUNsaWVudEVmbDsKIGNsYXNzIFJlc291cmNlTG9hZENs
aWVudEVmbDsKK2NsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CitjbGFzcyBXZWJDb250ZXh0
TWVudVByb3h5RWZsOwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5Owog
Y2xhc3MgV2ViUG9wdXBJdGVtOwpAQCAtNzksNiArODIsNyBAQCBjbGFzcyBJbnRTaXplOwogY2xh
c3MgRXdrQ29udGV4dDsKIGNsYXNzIEV3a0JhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIEV3a0NvbG9y
UGlja2VyOworY2xhc3MgRXdrQ29udGV4dE1lbnU7CiBjbGFzcyBFd2tQb3B1cE1lbnU7CiBjbGFz
cyBFd2tTZXR0aW5nczsKIGNsYXNzIEV3a1dpbmRvd0ZlYXR1cmVzOwpAQCAtMTY4LDYgKzE3Miw5
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVxdWVzdFBvcHVwTWVudShXZWJLaXQ6OldlYlBvcHVw
TWVudVByb3h5RWZsKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHREaXJl
Y3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlBv
cHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOwogICAgIHZvaWQgY2xvc2VQ
b3B1cE1lbnUoKTsKKyAgICAKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudShXZWJLaXQ6OldlYkNv
bnRleHRNZW51UHJveHlFZmwqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNv
bnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE+JiBpdGVtcyk7CisgICAg
dm9pZCBoaWRlQ29udGV4dE1lbnUoKTsKIAogICAgIHZvaWQgdXBkYXRlVGV4dElucHV0U3RhdGUo
KTsKIApAQCAtMjQ0LDYgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6UGFn
ZVBvbGljeUNsaWVudEVmbD4gbV9wYWdlUG9saWN5Q2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6
OlBhZ2VVSUNsaWVudEVmbD4gbV9wYWdlVUlDbGllbnQ7CiAgICAgT3duUHRyPFdlYktpdDo6UmVz
b3VyY2VMb2FkQ2xpZW50RWZsPiBtX3Jlc291cmNlTG9hZENsaWVudDsKKyAgICBPd25QdHI8V2Vi
S2l0OjpDb250ZXh0TWVudUNsaWVudEVmbD4gbV9jb250ZXh0TWVudUNsaWVudDsKICAgICBPd25Q
dHI8V2ViS2l0OjpGaW5kQ2xpZW50RWZsPiBtX2ZpbmRDbGllbnQ7CiAgICAgT3duUHRyPFdlYktp
dDo6Rm9ybUNsaWVudEVmbD4gbV9mb3JtQ2xpZW50OwogI2lmIEVOQUJMRShWSUJSQVRJT04pCkBA
IC0yNjcsNiArMjc1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdG91Y2hFdmVudHNFbmFibGVk
OwogI2VuZGlmCiAgICAgV2ViQ29yZTo6VGltZXI8RXdrVmlld0ltcGw+IG1fZGlzcGxheVRpbWVy
OworICAgIE93blB0cjxFd2tDb250ZXh0TWVudT4gbV9jb250ZXh0TWVudTsKICAgICBPd25QdHI8
RXdrUG9wdXBNZW51PiBtX3BvcHVwTWVudTsKICAgICBPd25QdHI8V2ViS2l0OjpJbnB1dE1ldGhv
ZENvbnRleHRFZmw+IG1faW5wdXRNZXRob2RDb250ZXh0OwogICAgIE93blB0cjxFd2tDb2xvclBp
Y2tlcj4gbV9jb2xvclBpY2tlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE0ZTU0NzE4NGMzMTk2
Y2ZhZWU3Zjk1ZTAwMzhhZTU5ODY1MzE0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnUuY3BwCkBAIC0wLDAgKzEsMTQ5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51LmgiCisKKyNpbmNsdWRlICJBUElPYmplY3Qu
aCIKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRl
bURhdGEuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5RWZsLmgiCisjaW5jbHVkZSAi
ZXdrX2NvbnRleHRfbWVudV9pdGVtLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudV9pdGVt
X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9tZW51X3ByaXZhdGUuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKworRXdrQ29udGV4dE1lbnU6OkV3a0NvbnRleHRNZW51KEV3
a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViQ29udGV4dE1lbnVQcm94eUVmbCogY29udGV4dE1lbnVQ
cm94eSwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1z
KQorICAgIDogbV92aWV3SW1wbCh2aWV3SW1wbCkKKyAgICAsIG1fY29udGV4dE1lbnVQcm94eShj
b250ZXh0TWVudVByb3h5KQorICAgICwgbV9jb250ZXh0TWVudUl0ZW1zKDApCit7CisgICAgY29u
c3Qgc2l6ZV90IHNpemUgPSBpdGVtcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCisgICAgICAgIG1fY29udGV4dE1lbnVJdGVtcyA9IGVpbmFfbGlzdF9hcHBl
bmQobV9jb250ZXh0TWVudUl0ZW1zLCBFd2tfQ29udGV4dF9NZW51X0l0ZW06OmNyZWF0ZShpdGVt
c1tpXSkubGVha1B0cigpKTsKK30KKworRXdrQ29udGV4dE1lbnU6OkV3a0NvbnRleHRNZW51KCkK
KyAgICA6IG1fdmlld0ltcGwoMCkKKyAgICAsIG1fY29udGV4dE1lbnVQcm94eSgwKQorICAgICwg
bV9jb250ZXh0TWVudUl0ZW1zKDApCit7Cit9CisKK0V3a0NvbnRleHRNZW51OjpFd2tDb250ZXh0
TWVudShFaW5hX0xpc3QqIGl0ZW1zKQorICAgIDogbV92aWV3SW1wbCgwKQorICAgICwgbV9jb250
ZXh0TWVudVByb3h5KDApCisgICAgLCBtX2NvbnRleHRNZW51SXRlbXMoMCkKK3sKKyAgICBFaW5h
X0xpc3QqIGw7CisgICAgdm9pZCogZGF0YTsKKyAgICBFSU5BX0xJU1RfRk9SRUFDSChpdGVtcywg
bCwgZGF0YSkKKyAgICAgICAgbV9jb250ZXh0TWVudUl0ZW1zID0gZWluYV9saXN0X2FwcGVuZCht
X2NvbnRleHRNZW51SXRlbXMsIHN0YXRpY19jYXN0PEV3a0NvbnRleHRNZW51SXRlbSo+KGRhdGEp
KTsKK30KKworRXdrQ29udGV4dE1lbnU6On5Fd2tDb250ZXh0TWVudSgpCit7CisgICAgdm9pZCog
ZGF0YTsKKyAgICBFSU5BX0xJU1RfRlJFRShtX2NvbnRleHRNZW51SXRlbXMsIGRhdGEpCisgICAg
ICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW0qPihkYXRhKTsKK30K
Kwordm9pZCBFd2tDb250ZXh0TWVudTo6aGlkZSgpCit7CisgICAgbV92aWV3SW1wbC0+aGlkZUNv
bnRleHRNZW51KCk7Cit9CisKK3ZvaWQgRXdrX0NvbnRleHRfTWVudTo6YXBwZW5kSXRlbShFd2tD
b250ZXh0TWVudUl0ZW0qIGl0ZW0pCit7CisgICAgbV9jb250ZXh0TWVudUl0ZW1zID0gZWluYV9s
aXN0X2FwcGVuZChtX2NvbnRleHRNZW51SXRlbXMsIGl0ZW0pOworfQorCit2b2lkIEV3a19Db250
ZXh0X01lbnU6OnJlbW92ZUl0ZW0oRXdrQ29udGV4dE1lbnVJdGVtKiBpdGVtKQoreworICAgIG1f
Y29udGV4dE1lbnVJdGVtcyA9IGVpbmFfbGlzdF9yZW1vdmUobV9jb250ZXh0TWVudUl0ZW1zLCBp
dGVtKTsKK30KKwordm9pZCBFd2tDb250ZXh0TWVudTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQo
Y29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQoreworICAgIG1fY29u
dGV4dE1lbnVQcm94eS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoaXRlbSk7IAorfSAKKworRXdr
X0NvbnRleHRfTWVudSogZXdrX2NvbnRleHRfbWVudV9uZXcoKQoreworICAgIHJldHVybiBFd2tD
b250ZXh0TWVudTo6Y3JlYXRlKCkubGVha1B0cigpOworfQorCitFd2tfQ29udGV4dF9NZW51KiBl
d2tfY29udGV4dF9tZW51X25ld193aXRoX2l0ZW1zKEVpbmFfTGlzdCogaXRlbXMpCit7CisgICAg
cmV0dXJuIEV3a0NvbnRleHRNZW51OjpjcmVhdGUoaXRlbXMpLmxlYWtQdHIoKTsKK30KKworRWlu
YV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQoRXdrX0NvbnRleHRfTWVudSogbWVu
dSwgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChtZW51LCBmYWxzZSk7CisKKyAgICBtZW51LT5hcHBlbmRJdGVtKGl0ZW0p
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0
ZW1fcmVtb3ZlKEV3a19Db250ZXh0X01lbnUqIG1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbSog
aXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudSwgZmFsc2Up
OworCisgICAgbWVudS0+cmVtb3ZlSXRlbShpdGVtKTsKKworICAgIHJldHVybiB0cnVlOworfQor
CitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9oaWRlKEV3a19Db250ZXh0X01lbnUqIG1lbnUp
Cit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIGZhbHNlKTsKKwor
ICAgIG1lbnUtPmhpZGUoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBFaW5hX0xp
c3QqIGV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnUqIG1l
bnUpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1lbnUsIDApOworCisg
ICAgcmV0dXJuIG1lbnUtPml0ZW1zKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29udGV4dF9tZW51
X2l0ZW1fc2VsZWN0KEV3a19Db250ZXh0X01lbnUqIG1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRl
bSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwobWVudSwgZmFs
c2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisK
KyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UeXBlPihpdGVtLT50eXBlKCkpOworICAgIFdlYkNvcmU6OkNv
bnRleHRNZW51QWN0aW9uIGFjdGlvbiA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51
QWN0aW9uPihpdGVtLT5hY3Rpb24oKSk7CisKKyAgICBtZW51LT5jb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZChXZWJDb250ZXh0TWVudUl0ZW1EYXRhKHR5cGUsIGFjdGlvbiwgaXRlbS0+dGl0bGUoKSwg
aXRlbS0+ZW5hYmxlZCgpLCBpdGVtLT5jaGVja2VkKCkpKTsKKworICAgIHJldHVybiB0cnVlOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHRfbWVudS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
bWVudS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFkMzU2MTkzOTI3ODUwZGI3MTM3OGFiNzI1ZTYxYzA1MDc1YmE5
NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9tZW51LmgKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfY29udGV4dF9tZW51LmgKKyAqIEBi
cmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIENvbnRleHQgTWVudSBBUEkuCisgKi8KKworI2lmbmRl
ZiBld2tfY29udGV4dF9tZW51X2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfbWVudV9oCisKKyNpbmNs
dWRlICJld2tfZGVmaW5lcy5oIgorI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNw
bHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgRXdrX0Nv
bnRleHRfTWVudSB0byBiZSB1c2VkIGFzIGEgc3VibWVudSBvZiBhbiBleGlzdGluZworICogRXdr
X0NvbnRleHRfTWVudS4gVGhlIGNvbnRleHQgbWVudSBpcyBjcmVhdGVkIGJ5IHRoZSBld2tfdmll
dyBhbmQKKyAqIHBhc3NlZCBhcyBhbiBhcmd1bWVudCBvZiBld2tfdmlldyBzbWFydCBjYWxsYmFj
ay4KKyAqCisgKiBAcmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBuZXcgY29udGV4dCBtZW51Cisg
KgorICogQHNlZSBld2tfY29udGV4dF9tZW51X25ld193aXRoX2l0ZW1zCisgKi8KK0VBUEkgRXdr
X0NvbnRleHRfTWVudSAqZXdrX2NvbnRleHRfbWVudV9uZXcodm9pZCk7CisKKy8qKgorICogQ3Jl
YXRlcyBhIG5ldyBFd2tfQ29udGV4dF9NZW51IHRvIGJlIHVzZWQgYXMgYSBzdWJtZW51IG9mIGFu
IGV4aXN0aW5nCisgKiBFd2tfQ29udGV4dF9NZW51IHdpdGggdGhlIGdpdmVuIGluaXRpYWwgaXRl
bXMuIFRoZSBjb250ZXh0IG1lbnUgaXMKKyAqIGNyZWF0ZWQgYnkgdGhlIGV3a192aWV3IGFuZCBw
YXNzZWQgYXMgYW4gYXJndW1lbnQgb2YgZXdrX3ZpZXcgc21hcnQgY2FsbGJhY2suCisgKgorICog
QHBhcmFtIGl0ZW1zIHRoZSBsaXN0IG9mIGluaXRpYWwgaXRlbXMKKyAqIEByZXR1cm4gdGhlIHBv
aW50ZXIgdG8gdGhlIG5ldyBjb250ZXh0IG1lbnUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21l
bnVfbmV3CisgKi8KK0VBUEkgRXdrX0NvbnRleHRfTWVudSAqZXdrX2NvbnRleHRfbWVudV9uZXdf
d2l0aF9pdGVtcyhFaW5hX0xpc3QgKml0ZW1zKTsKKworLyoqCisgKiBBcHBlbmRzIHRoZSBpdGVt
IG9mIHRoZSBjb250ZXh0IG1lbnUuCisgKgorICogQHBhcmFtIG1lbnUgdGhlIGNvbnRleHQgbWVu
dSAKKyAqIEBwYXJhbSBpdGVtIHRoZSBpdGVtIHRvIGFwcGVuZAorICogQHJldHVybiBAYyBFSU5B
X1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRWlu
YV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQoRXdrX0NvbnRleHRfTWVudSAqbWVu
dSwgRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtKTsKKworLyoqCisgKiBSZW1vdmVzIHRoZSBp
dGVtIG9mIHRoZSBjb250ZXh0IG1lbnUuCisgKgorICogQHBhcmFtIG1lbnUgdGhlIGNvbnRleHQg
bWVudSAKKyAqIEBwYXJhbSBpdGVtIHRoZSBpdGVtIHRvIHJlbW92ZQorICogQHJldHVybiBAYyBF
SU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KK0VBUEkg
RWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9yZW1vdmUoRXdrX0NvbnRleHRfTWVudSAq
bWVudSwgRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtKTsKKworLyoqCisgKiBIaWRlcyB0aGUg
Y29udGV4dCBtZW51LgorICoKKyAqIEBwYXJhbSBtZW51IHRoZSBjb250ZXh0IG1lbnUgdG8gaGlk
ZQorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvbiBm
YWlsdXJlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaGlkZShFd2tfQ29u
dGV4dF9NZW51ICptZW51KTsKKworLyoqCisgKiBHZXRzIHRoZSBsaXN0IG9mIGl0ZW1zLgorICoK
KyAqIEBwYXJhbSBvIHRoZSBjb250ZXh0IG1lbnUgdG8gZ2V0IGxpc3Qgb2YgdGhlIGl0ZW1zCisg
KiBAcmV0dXJuIHRoZSBsaXN0IG9mIHRoZSBpdGVtcyBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24g
ZmFpbHVyZQorICovCitFQVBJIGNvbnN0IEVpbmFfTGlzdCAqZXdrX2NvbnRleHRfbWVudV9pdGVt
c19nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudSAqbyk7CisKKy8qKgorICogU2VsZWN0cyB0aGUg
aXRlbSBmcm9tIHRoZSBjb250ZXh0IG1lbnUuCisgKgorICogQHBhcmFtIG1lbnUgdGhlIGNvbnRl
eHQgbWVudQorICogQHBhcmFtIGl0ZW0gdGhlIGl0ZW0gaXMgc2VsZWN0ZWQKKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QoRXdrX0NvbnRleHRf
TWVudSAqbWVudSwgRXdrX0NvbnRleHRfTWVudV9JdGVtICppdGVtKTsKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIGV3a19jb250ZXh0X21lbnVfaCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVu
dV9pdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X21lbnVfaXRlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU3ZGJmNjJhNzA5NThkNTEzNjdhZmQwOGFmNjhm
ZjkzNjk3YWRmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X21lbnVfaXRlbS5jcHAKQEAgLTAsMCArMSwyMjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcK
KyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVu
dV9pdGVtX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OworCitFd2tDb250ZXh0TWVudUl0ZW06OkV3a0NvbnRleHRNZW51SXRlbShj
b25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQorICAgIDogbV90eXBlKHN0YXRpY19j
YXN0PEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlPihpdGVtLnR5cGUoKSkpCisgICAgLCBtX2Fj
dGlvbihzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uPihpdGVtLmFjdGlv
bigpKSkKKyAgICAsIG1fdGl0bGUoaXRlbS50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpCisgICAgLCBt
X2lzQ2hlY2tlZChpdGVtLmNoZWNrZWQoKSkKKyAgICAsIG1faXNFbmFibGVkKGl0ZW0uZW5hYmxl
ZCgpKQorICAgICwgbV9wYXJlbnRNZW51KDApCisgICAgLCBtX3N1Yk1lbnUoMCkKK3sKK30KKwor
RXdrQ29udGV4dE1lbnVJdGVtOjpFd2tDb250ZXh0TWVudUl0ZW0oRXdrX0NvbnRleHRfTWVudV9J
dGVtX1R5cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24sIGNvbnN0
IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQsIEV3a19D
b250ZXh0X01lbnUqIHN1Yk1lbnUpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fYWN0aW9u
KGFjdGlvbikKKyAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgLCBtX2lzQ2hlY2tlZChjaGVja2Vk
KQorICAgICwgbV9pc0VuYWJsZWQoZW5hYmxlZCkKKyAgICAsIG1fcGFyZW50TWVudSgwKQorICAg
ICwgbV9zdWJNZW51KHN1Yk1lbnUpCit7Cit9CisKK0V3a19Db250ZXh0X01lbnVfSXRlbSogZXdr
X2NvbnRleHRfbWVudV9pdGVtX25ldyhFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlLCBF
d2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgY29uc3QgY2hhciogdGl0bGUsIEVp
bmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCkKK3sKKyAgICByZXR1cm4gRXdrX0Nv
bnRleHRfTWVudV9JdGVtOjpjcmVhdGUodHlwZSwgYWN0aW9uLCB0aXRsZSwgY2hlY2tlZCwgZW5h
YmxlZCwgMCkubGVha1B0cigpOworfQorCitFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGV3a19jb250
ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51KEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBl
IHR5cGUsIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBjb25zdCBjaGFyKiB0
aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkLCBFd2tfQ29udGV4dF9N
ZW51KiBzdWJNZW51KQoreworICAgIHJldHVybiBFd2tfQ29udGV4dF9NZW51X0l0ZW06OmNyZWF0
ZSh0eXBlLCBhY3Rpb24sIHRpdGxlLCBjaGVja2VkLCBlbmFibGVkLCBzdWJNZW51KS5sZWFrUHRy
KCk7Cit9CisKK0V3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIGV3a19jb250ZXh0X21lbnVfaXRl
bV90eXBlX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIEVXS19BQ1RJT05fVFlQRSk7CisKKyAg
ICByZXR1cm4gaXRlbS0+dHlwZSgpOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9p
dGVtX3R5cGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgRXdrX0NvbnRleHRfTWVu
dV9JdGVtX1R5cGUgdHlwZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
aXRlbSwgZmFsc2UpOworCisgICAgaXRlbS0+c2V0VHlwZSh0eXBlKTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGV3a19jb250ZXh0X21lbnVf
aXRlbV9hY3Rpb25fZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19OT19BQ1RJT04pOworCisgICAgcmV0dXJuIGl0ZW0tPmFjdGlvbigpOworfQorCitF
aW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9zZXQoRXdrX0NvbnRleHRfTWVu
dV9JdGVtKiBpdGVtLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbikKK3sKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworCisgICAgaXRl
bS0+c2V0QWN0aW9uKGFjdGlvbik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY29uc3QgY2hh
ciogZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51
X0l0ZW0qIGl0ZW0pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0s
IDApOworCisgICAgcmV0dXJuIGl0ZW0tPnRpdGxlKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfY29u
dGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSwgY29u
c3QgY2hhciogdGl0bGUpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0
ZW0sIGZhbHNlKTsKKworICAgIGl0ZW0tPnNldFRpdGxlKHRpdGxlKTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfZ2V0KGNv
bnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoaXRlbSwgZmFsc2UpOworCisgICAgcmV0dXJuIGl0ZW0tPmNoZWNrZWQo
KTsKK30KKworRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9jaGVja2VkX3NldChFd2tf
Q29udGV4dF9NZW51X0l0ZW0qIGl0ZW0sIEVpbmFfQm9vbCBjaGVja2VkKQoreworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICBpdGVtLT5zZXRD
aGVja2VkKGNoZWNrZWQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tf
Y29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVt
KiBpdGVtKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCBmYWxz
ZSk7CisgICAgCisgICAgcmV0dXJuIGl0ZW0tPmVuYWJsZWQoKTsKK30KKworRWluYV9Cb29sIGV3
a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0
ZW0sIEVpbmFfQm9vbCBlbmFibGVkKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChpdGVtLCBmYWxzZSk7CisKKyAgICBpdGVtLT5zZXRFbmFibGVkKGVuYWJsZWQpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19OT19BQ1RJT04sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z05vQWN0aW9uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19PUEVOX0xJTktfSU5fTkVXX1dJTkRPVywgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfRE9XTkxPQURfTElOS19UT19ESVNLLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTElOS19UT19DTElQ
Qk9BUkQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09Q
RU5fSU1BR0VfSU5fTkVXX1dJTkRPVywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3Blbklt
YWdlSW5OZXdXaW5kb3cpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX0RPV05MT0FEX0lNQUdFX1RPX0RJU0ssIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2spOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfSU1BR0VfVE9fQ0xJUEJPQVJELCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCk7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWV9JTUFH
RV9VUkxfVE9fQ0xJUEJPQVJELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VV
cmxUb0NsaXBib2FyZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfT1BFTl9GUkFNRV9JTl9ORVdfV0lORE9XLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvdyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ09QWSwgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnQ29weSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfR09fQkFDSywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnR29CYWNr
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19HT19GT1JXQVJELCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQpOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NUT1As
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1N0b3ApOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1JFTE9BRCwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnUmVsb2FkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19DVVQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0N1dCk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
UEFTVEUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUxFQ1RfQUxMLCBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTZWxlY3RBbGwpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUxMSU5HX0dVRVNTLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ0d1ZXNzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19HVUVTU0VTX0ZPVU5ELCBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX1NQRUxMSU5HLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZyk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTEVBUk5fU1BFTExJTkcs
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09USEVSLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdPdGhlcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0VBUkNIX0lOX1NQT1RMSUdIVCwgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFQVJDSF9XRUIsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTE9PS19VUF9JTl9ESUNUSU9OQVJZLCBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09QRU5fV0lUSF9ERUZB
VUxUX0FQUExJQ0FUSU9OLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuV2l0aERlZmF1
bHRBcHBsaWNhdGlvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhU
X01FTlVfSVRFTV9QREZBQ1RVQUxfU0laRSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGQWN0
dWFsU2l6ZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVf
SVRFTV9QREZaT09NX0lOLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZab29tSW4pOworQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGWk9PTV9P
VVQsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERlpvb21PdXQpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQVVUT19TSVpFLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1QREZBdXRvU2l6ZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9QREZTSU5HTEVfUEFHRSwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtUERGU2luZ2xlUGFnZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19DT05URVhUX01FTlVfSVRFTV9QREZGQUNJTkdfUEFHRVMsIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVBERkZhY2luZ1BhZ2VzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1BERkNPTlRJTlVPVVMsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBE
RkNvbnRpbnVvdXMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9N
RU5VX0lURU1fUERGTkVYVF9QQUdFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZOZXh0UGFn
ZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9Q
REZQUkVWSU9VU19QQUdFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZQcmV2aW91c1BhZ2Up
OworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X09QRU5fTElOSywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmspOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lHTk9SRV9H
UkFNTUFSLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVMTElO
R19NRU5VLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUpOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfU1BF
TExJTkdfUEFORUwsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVs
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RB
R19DSEVDS19TUEVMTElORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGlu
Zyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfQ0hFQ0tfU1BFTExJTkdfV0hJTEVfVFlQSU5HLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX0dSQU1NQVJfV0lUSF9TUEVMTElORywg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19GT05U
X01FTlUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51KTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0ZPTlRTLCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0JPTEQsIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0JvbGQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX0lUQUxJQywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSXRh
bGljKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19VTkRFUkxJTkUsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1VU
TElORSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RZTEVTLCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdTdHlsZXMpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NIT1dfQ09MT1JTLCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdTaG93Q29sb3JzKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVFQ0hfTUVOVSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnU3BlZWNoTWVudSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfU1RBUlRfU1BFQUtJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1N0YXJ0U3BlYWtpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1NUT1BfU1BFQUtJTkcsIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1N0b3BTcGVha2luZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfV1JJVElOR19ESVJFQ1RJT05fTUVOVSwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0RFRkFVTFRfRElSRUNUSU9OLCBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUZUX1RPX1JJR0hULCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUklHSFRfVE9fTEVGVCwgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1BERlNJTkdMRV9QQUdFX1NDUk9M
TElORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUERGU2luZ2xlUGFnZVNjcm9sbGluZyk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
UERGRkFDSU5HX1BBR0VTX1NDUk9MTElORywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUERG
RmFjaW5nUGFnZXNTY3JvbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0lOU1BFQ1RfRUxFTUVOVCwgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX01FTlUsIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25NZW51KTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9ERUZBVUxU
LCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdCk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9E
SVJFQ1RJT05fTEVGVF9UT19SSUdIVCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4dERp
cmVjdGlvbkxlZnRUb1JpZ2h0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9SSUdIVF9UT19MRUZULCBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fT1BFTl9NRURJQV9JTl9O
RVdfV0lORE9XLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuTWVkaWFJbk5ld1dpbmRv
dyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfQ09QWV9NRURJQV9MSU5LX1RPX0NMSVBCT0FSRCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnQ29weU1lZGlhTGlua1RvQ2xpcGJvYXJkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFfQ09OVFJPTFMsIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHMpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RPR0dMRV9NRURJQV9M
T09QLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUxvb3ApOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0VOVEVSX1ZJ
REVPX0ZVTExTQ1JFRU4sIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0VudGVyVmlkZW9GdWxs
c2NyZWVuKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19NRURJQV9QTEFZX1BBVVNFLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdNZWRp
YVBsYXlQYXVzZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfTUVESUFfTVVURSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTWVkaWFN
dXRlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X0JBU0VfQ1VTVE9NX1RBRywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRhZyk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19DT05URVhUX01FTlVfSVRFTV9DVVNU
T01fVEFHX05PX0FDVElPTiwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtQ3VzdG9tVGFnTm9BY3Rp
b24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfQ09OVEVYVF9NRU5VX0lURU1f
TEFTVF9DVVNUT01fVEFHLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1MYXN0Q3VzdG9tVGFnKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX0NPTlRFWFRfTUVOVV9JVEVNX0JBU0Vf
QVBQTElDQVRJT05fVEFHLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25U
YWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHRfbWVudV9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dF9tZW51X2l0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjEyYTIxZjVjMTg5YWEyODAwZWFiMjFk
ZTZlZmZmOWY1YWNkMDVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtLmgKQEAgLTAsMCArMSwyNzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfY29u
dGV4dF9tZW51X2l0ZW0uaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgQ29udGV4dCBN
ZW51IEl0ZW0gQVBJLgorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRfbWVudV9pdGVtX2gKKyNk
ZWZpbmUgZXdrX2NvbnRleHRfbWVudV9pdGVtX2gKKworI2luY2x1ZGUgImV3a19kZWZpbmVzLmgi
CisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKKy8qKgorICogXGVudW0gICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUKKyAq
IEBicmllZiAgIERlZmluZXMgdGhlIHR5cGVzIG9mIHRoZSBpdGVtcyBmb3IgdGhlIGNvbnRleHQg
bWVudS4KKyAqIEBpbmZvICAgIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggQ29udGV4dE1lbnVJdGVt
LmgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfQUNUSU9OX1RZUEUsCisgICAgRVdLX0NI
RUNLQUJMRV9BQ1RJT05fVFlQRSwKKyAgICBFV0tfU0VQQVJBVE9SX1RZUEUsCisgICAgRVdLX1NV
Qk1FTlVfVFlQRQorfSBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZTsKKworLyoqCisgKiBcZW51
bSAgICBFd2tfQ29udGV4dF9NZW51X0FjdGlvbgorICogQGJyaWVmICAgUHJvdmlkZXMgdGhlIGFj
dGlvbnMgb2YgaXRlbXMgZm9yIHRoZSBjb250ZXh0IG1lbnUuCisgKiBAaW5mbyAgICBLZWVwIHRo
aXMgaW4gc3luYyB3aXRoIENvbnRleHRNZW51SXRlbS5oCisgKi8KK3R5cGVkZWYgZW51bSB7Cisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19BQ1RJT04sCisgICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19PUEVOX0xJTktfSU5fTkVXX1dJTkRPVywKKyAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX0RPV05MT0FEX0xJTktfVE9fRElTSywKKyAgICBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX0NPUFlfTElOS19UT19DTElQQk9BUkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19PUEVOX0lNQUdFX0lOX05FV19XSU5ET1csCisgICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19ET1dOTE9BRF9JTUFHRV9UT19ESVNLLAorICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9UQUdfQ09QWV9JTUFHRV9UT19DTElQQk9BUkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVN
X1RBR19DT1BZX0lNQUdFX1VSTF9UT19DTElQQk9BUkQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19PUEVOX0ZSQU1FX0lOX05FV19XSU5ET1csCisgICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19DT1BZLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfR09fQkFDSywKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0dPX0ZPUldBUkQsCisgICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19TVE9QLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUkVMT0FE
LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ1VULAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfUEFTVEUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUxFQ1Rf
QUxMLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfR1VFU1MsCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19OT19HVUVTU0VTX0ZPVU5ELAorICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX1NQRUxMSU5HLAorICAgIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfTEVBUk5fU1BFTExJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19P
VEhFUiwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NFQVJDSF9JTl9TUE9UTElHSFQs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TRUFSQ0hfV0VCLAorICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfTE9PS19VUF9JTl9ESUNUSU9OQVJZLAorICAgIEVXS19DT05URVhU
X01FTlVfSVRFTV9UQUdfT1BFTl9XSVRIX0RFRkFVTFRfQVBQTElDQVRJT04sCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1BERkFDVFVBTF9TSVpFLAorICAgIEVXS19DT05URVhUX01FTlVfSVRF
TV9QREZaT09NX0lOLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZaT09NX09VVCwKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGQVVUT19TSVpFLAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9QREZTSU5HTEVfUEFHRSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fUERGRkFD
SU5HX1BBR0VTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9QREZDT05USU5VT1VTLAorICAg
IEVXS19DT05URVhUX01FTlVfSVRFTV9QREZORVhUX1BBR0UsCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1BERlBSRVZJT1VTX1BBR0UsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19P
UEVOX0xJTksgPSAyMDAwLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX0dS
QU1NQVIsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVMTElOR19NRU5VLCAvKio8
IHNwZWxsaW5nIG9yIHNwZWxsaW5nL2dyYW1tYXIgc3ViLW1lbnUgKi8KKyAgICBFV0tfQ09OVEVY
VF9NRU5VX0lURU1fVEFHX1NIT1dfU1BFTExJTkdfUEFORUwsCisgICAgRVdLX0NPTlRFWFRfTUVO
VV9JVEVNX1RBR19DSEVDS19TUEVMTElORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X0NIRUNLX1NQRUxMSU5HX1dISUxFX1RZUElORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX0NIRUNLX0dSQU1NQVJfV0lUSF9TUEVMTElORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX0ZPTlRfTUVOVSwgLyoqPCBmb250IHN1Yi1tZW51ICovCisgICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19TSE9XX0ZPTlRTLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
Qk9MRCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0lUQUxJQywKKyAgICBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX1VOREVSTElORSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX09VVExJTkUsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TVFlMRVMsCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TSE9XX0NPTE9SUywKKyAgICBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1NQRUVDSF9NRU5VLCAvKio8IHNwZWVjaCBzdWItbWVudSAqLworICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfU1RBUlRfU1BFQUtJTkcsCisgICAgRVdLX0NPTlRFWFRf
TUVOVV9JVEVNX1RBR19TVE9QX1NQRUFLSU5HLAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9U
QUdfV1JJVElOR19ESVJFQ1RJT05fTUVOVSwgLyoqPCB3cml0aW5nIGRpcmVjdGlvbiBzdWItbWVu
dSAqLworICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfREVGQVVMVF9ESVJFQ1RJT04sCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19MRUZUX1RPX1JJR0hULAorICAgIEVXS19DT05U
RVhUX01FTlVfSVRFTV9UQUdfUklHSFRfVE9fTEVGVCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX1BERlNJTkdMRV9QQUdFX1NDUk9MTElORywKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lU
RU1fVEFHX1BERkZBQ0lOR19QQUdFU19TQ1JPTExJTkcsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9J
VEVNX1RBR19JTlNQRUNUX0VMRU1FTlQsCisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19U
RVhUX0RJUkVDVElPTl9NRU5VLCAvKio8IHRleHQgZGlyZWN0aW9uIHN1Yi1tZW51ICovCisgICAg
RVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19URVhUX0RJUkVDVElPTl9ERUZBVUxULAorICAgIEVX
S19DT05URVhUX01FTlVfSVRFTV9UQUdfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCwKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX09QRU5fTUVESUFfSU5fTkVXX1dJTkRPVywKKyAg
ICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NPUFlfTUVESUFfTElOS19UT19DTElQQk9BUkQs
CisgICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFfQ09OVFJPTFMsCisg
ICAgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19UT0dHTEVfTUVESUFfTE9PUCwKKyAgICBFV0tf
Q09OVEVYVF9NRU5VX0lURU1fVEFHX0VOVEVSX1ZJREVPX0ZVTExTQ1JFRU4sCisgICAgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19NRURJQV9QTEFZX1BBVVNFLAorICAgIEVXS19DT05URVhUX01F
TlVfSVRFTV9UQUdfTUVESUFfTVVURSwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fQkFTRV9D
VVNUT01fVEFHID0gNTAwMCwKKyAgICBFV0tfQ09OVEVYVF9NRU5VX0lURU1fQ1VTVE9NX1RBR19O
T19BQ1RJT04gPSA1OTk4LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9MQVNUX0NVU1RPTV9U
QUcgPSA1OTk5LAorICAgIEVXS19DT05URVhUX01FTlVfSVRFTV9CQVNFX0FQUExJQ0FUSU9OX1RB
RyA9IDEwMDAwCit9IEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb247CisKKy8qKgorICogQ3Jl
YXRlcyBhIG5ldyBpdGVtIG9mIHRoZSBjb250ZXh0IG1lbnUuCisgKgorICogQHBhcmFtIHR5cGUg
c3BlY2lmaWVzIGEgdHlwZSBvZiB0aGUgaXRlbQorICogQHBhcmFtIGFjdGlvbiBzcGVjaWZpZXMg
YSBhY3Rpb24gb2YgdGhlIGl0ZW0KKyAqIEBwYXJhbSB0aXRsZSBzcGVjaWZpZXMgYSB0aXRsZSBv
ZiB0aGUgaXRlbQorICogQHBhcmFtIGNoZWNrZWQgQGMgRUlOQV9UUlVFIGlmIHRoZSBpdGVtIHNo
b3VsZCBiZSB0b2dnbGVkIG9yIEBjIEVJTkFfRkFMU0UgaWYgbm90CisgKiBAcGFyYW0gZW5hYmxl
ZCBAYyBFSU5BX1RSVUUgdG8gZW5hYmxlIHRoZSBpdGVtIG9yIEBjIEVJTkFfRkFMU0UgdG8gZGlz
YWJsZQorICogQHJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgbmV3IGl0ZW0KKyAqCisgKiBAc2Vl
IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51CisgKi8KK0VBUEkgRXdrX0Nv
bnRleHRfTWVudV9JdGVtICpld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KEV3a19Db250ZXh0X01l
bnVfSXRlbV9UeXBlIHR5cGUsIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uLCBj
b25zdCBjaGFyICp0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKTsK
KworLyoqCisgKiBDcmVhdGVzIGEgbmV3IGl0ZW0gb2YgdGhlIGNvbnRleHQgbWVudS4KKyAqCisg
KiBAcGFyYW0gdHlwZSBzcGVjaWZpZXMgYSB0eXBlIG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gYWN0
aW9uIHNwZWNpZmllcyBhIGFjdGlvbiBvZiB0aGUgaXRlbQorICogQHBhcmFtIHRpdGxlIHNwZWNp
ZmllcyBhIHRpdGxlIG9mIHRoZSBpdGVtCisgKiBAcGFyYW0gY2hlY2tlZCBAYyBFSU5BX1RSVUUg
aWYgdGhlIGl0ZW0gc2hvdWxkIGJlIHRvZ2dsZWQgb3IgQGMgRUlOQV9GQUxTRSBpZiBub3QKKyAq
IEBwYXJhbSBlbmFibGVkIEBjIEVJTkFfVFJVRSB0byBlbmFibGUgdGhlIGl0ZW0gb3IgQGMgRUlO
QV9GQUxTRSB0byBkaXNhYmxlCisgKiBAcGFyYW0gc3VibWVudSBzcGVjaWZpZXMgYSBzdWJtZW51
IG9mIHRoZSBpdGVtCisgKiBAcmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBuZXcgaXRlbQorICoK
KyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldworICovCitFQVBJIEV3a19Db250ZXh0
X01lbnVfSXRlbSAqZXdrX2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUoRXdrX0Nv
bnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBh
Y3Rpb24sIGNvbnN0IGNoYXIgKnRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVu
YWJsZWQsIEV3a19Db250ZXh0X01lbnUgKnN1Ym1lbnUpOworCisvKioKKyAqIEdldHMgdHlwZSBv
ZiB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBnZXQgdGhlIHR5cGUKKyAq
IEByZXR1cm4gdHlwZSBvZiB0aGUgaXRlbSBvbiBzdWNjZXNzIG9yIEBjIEVXS19BQ1RJT05fVFlQ
RSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9zZXQK
KyAqLworRUFQSSBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSBld2tfY29udGV4dF9tZW51X2l0
ZW1fdHlwZV9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpvKTsKKworLyoqCisgKiBT
ZXRzIHRoZSB0eXBlIG9mIGl0ZW0uCisgKgorICogQHBhcmFtIG8gdGhlIGl0ZW0gdG8gc2V0IHRo
ZSB0eXBlCisgKiBAcGFyYW0gdHlwZSBhIG5ldyB0eXBlIGZvciB0aGUgaXRlbSBvYmplY3QKKyAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFp
bHVyZQorICoKKyAqIEBzZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0CisgKi8KK0VB
UEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX3NldChFd2tfQ29udGV4dF9N
ZW51X0l0ZW0gKm8sIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUpOworCisvKioKKyAq
IEdldHMgYW4gYWN0aW9uIG9mIHRoZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRv
IGdldCB0aGUgYWN0aW9uCisgKiBAcmV0dXJuIGFuIGFjdGlvbiBvZiB0aGUgaXRlbSBvbiBzdWNj
ZXNzIG9yIEBjIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fQUNUSU9OIG9uIGZhaWx1cmUK
KyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fc2V0CisgKi8KK0VBUEkg
RXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9u
X2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pOworCisvKioKKyAqIFNldHMgYW4g
YWN0aW9uIG9mIHRoZSBpdGVtLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRvIHNldCB0aGUg
YWN0aW9uCisgKiBAcGFyYW0gYWN0aW9uIGEgbmV3IGFjdGlvbiBmb3IgdGhlIGl0ZW0gb2JqZWN0
CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG9u
IGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0Cisg
Ki8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fc2V0KEV3a19D
b250ZXh0X01lbnVfSXRlbSAqbywgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiBhY3Rpb24p
OworCisvKioKKyAqIEdldHMgYSB0aXRsZSBvZiB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0
aGUgaXRlbSB0byBnZXQgdGhlIHRpdGxlCisgKiBAcmV0dXJuIGEgdGl0bGUgb2YgdGhlIGl0ZW0g
b24gc3VjY2Vzcywgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4
dF9tZW51X2l0ZW1fdGl0bGVfc2V0CisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX2NvbnRleHRf
bWVudV9pdGVtX3RpdGxlX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKm8pOworCisv
KioKKyAqIFNldHMgYSB0aXRsZSBvZiB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRl
bSB0byBzZXQgdGhlIHRpdGxlCisgKiBAcGFyYW0gdGl0bGUgYSBuZXcgdGl0bGUgZm9yIHRoZSBp
dGVtIG9iamVjdAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlO
QV9GQUxTRSBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0
bGVfZ2V0CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9z
ZXQoRXdrX0NvbnRleHRfTWVudV9JdGVtICpvLCBjb25zdCBjaGFyICp0aXRsZSk7CisKKy8qKgor
ICogUXVlcmllcyBpZiB0aGUgaXRlbSBpcyB0b2dnbGVkLgorICoKKyAqIEBwYXJhbSBvIHRoZSBp
dGVtIHRvIHF1ZXJ5IGlmIHRoZSBpdGVtIGlzIHRvZ2dsZWQKKyAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIGlmIHRoZSBpdGVtIGlzIHRvZ2dsZWQgb3IgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24g
ZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tl
ZF9nZXQoY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtICpvKTsKKworLyoqCisgKiBTZXRzIGlm
IHRoZSBpdGVtIHNob3VsZCBiZSB0b2dnbGVkLgorICoKKyAqIEBwYXJhbSBvIHRoZSBpdGVtIHRv
IGJlIHRvZ2dsZWQKKyAqIEBwYXJhbSBjaGVja2VkIEBjIEVJTkFfVFJVRSBpZiB0aGUgaXRlbSBz
aG91bGQgYmUgdG9nZ2xlZCBvciBAYyBFSU5BX0ZBTFNFIGlmIG5vdAorICogQHJldHVybiBAYyBF
SU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKKyAqLworRUFQ
SSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9pdGVtX2NoZWNrZWRfc2V0KEV3a19Db250ZXh0
X01lbnVfSXRlbSAqbywgRWluYV9Cb29sIGNoZWNrZWQpOworCisvKioKKyAqIEdldHMgaWYgdGhl
IGl0ZW0gaXMgZW5hYmxlZC4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0byBnZXQgZW5hYmxl
ZCBzdGF0ZQorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgaXQncyBlbmFibGVkLCBAYyBFSU5B
X0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfY29udGV4dF9tZW51
X2l0ZW1fZW5hYmxlZF9zZXQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9p
dGVtX2VuYWJsZWRfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbSAqbyk7CisKKy8qKgor
ICogRW5hYmxlcy9kaXNhYmxlcyB0aGUgaXRlbS4KKyAqCisgKiBAcGFyYW0gbyB0aGUgaXRlbSB0
byBlbmFibGUvZGlzYWJsZQorICogQHBhcmFtIGVuYWJsZWQgQGMgRUlOQV9UUlVFIHRvIGVuYWJs
ZSB0aGUgaXRlbSBvciBAYyBFSU5BX0ZBTFNFIHRvIGRpc2FibGUKKyAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICoKKyAqIEBz
ZWUgZXdrX2NvbnRleHRfbWVudV9pdGVtX2VuYWJsZWRfZ2V0CisgKi8KK0VBUEkgRWluYV9Cb29s
IGV3a19jb250ZXh0X21lbnVfaXRlbV9lbmFibGVkX3NldChFd2tfQ29udGV4dF9NZW51X0l0ZW0g
Km8sIEVpbmFfQm9vbCBlbmFibGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYK
KworI2VuZGlmIC8qIGV3a19jb250ZXh0X21lbnVfaXRlbV9oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9p
dGVtX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmYyNzkwYjI0ZGVjYjNhYTZiMTNhZGRjY2ZjOTYx
MjExMjk0MjY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfbWVudV9pdGVtX3ByaXZhdGUuaApAQCAtMCwwICsxLDgyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX3ByaXZhdGVfaAorI2RlZmluZSBld2tfY29udGV4dF9tZW51X2l0ZW1fcHJpdmF0ZV9o
CisKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0
TWVudUl0ZW1EYXRhLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudS5oIgorI2luY2x1ZGUg
ImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
Ky8qKgorICogXHN0cnVjdCAgRXdrX0NvbnRleHRfTWVudV9JdGVtCisgKiBAYnJpZWYgICBDb250
YWlucyB0aGUgY29udGV4dCBtZW51IGl0ZW0gZGF0YS4KKyAqLworY2xhc3MgRXdrQ29udGV4dE1l
bnVJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxFd2tDb250ZXh0TWVudUl0
ZW0+IGNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV3a0NvbnRleHRNZW51SXRlbShpdGVt
KSk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NPd25QdHI8RXdrQ29udGV4dE1lbnVJdGVtPiBj
cmVhdGUoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZSwgRXdrX0NvbnRleHRfTWVudV9J
dGVtX0FjdGlvbiBhY3Rpb24sIGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwg
RWluYV9Cb29sIGVuYWJsZWQsIEV3a0NvbnRleHRNZW51KiBzdWJNZW51KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tDb250ZXh0TWVudUl0ZW0odHlwZSwgYWN0aW9uLCB0
aXRsZSwgY2hlY2tlZCwgZW5hYmxlZCwgc3ViTWVudSkpOworICAgIH0KKworICAgIEV3a19Db250
ZXh0X01lbnVfSXRlbV9BY3Rpb24gYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb247IH0K
KyAgICB2b2lkIHNldEFjdGlvbihFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbikg
eyBtX2FjdGlvbiA9IGFjdGlvbjsgfQorCisgICAgY29uc3QgY2hhciogdGl0bGUoKSBjb25zdCB7
IHJldHVybiBtX3RpdGxlOyB9CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBjaGFyKiB0aXRsZSkg
eyBtX3RpdGxlID0gdGl0bGU7IH0KKworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB2b2lkIHNldFR5cGUoRXdrX0NvbnRl
eHRfTWVudV9JdGVtX1R5cGUgdHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9CisKKyAgICBib29sIGNo
ZWNrZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2hlY2tlZDsgfQorICAgIHZvaWQgc2V0Q2hlY2tl
ZChib29sIGNoZWNrZWQpIHsgbV9pc0NoZWNrZWQgPSBjaGVja2VkOyB9CisKKyAgICBib29sIGVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RW5hYmxl
ZChib29sIGVuYWJsZWQpIHsgbV9pc0VuYWJsZWQgPSBlbmFibGVkOyB9CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgRXdrQ29udGV4dE1lbnVJdGVtKGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1l
bnVJdGVtRGF0YSYpOworICAgIEV3a0NvbnRleHRNZW51SXRlbShFd2tfQ29udGV4dF9NZW51X0l0
ZW1fVHlwZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgY29uc3Qg
Y2hhciogdGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCwgRXdrQ29u
dGV4dE1lbnUqIHN1Yk1lbnUpOworCisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgbV90
eXBlOworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gbV9hY3Rpb247CisKKyAgICBX
S0VpbmFTaGFyZWRTdHJpbmcgbV90aXRsZTsKKyAgICAKKyAgICBib29sIG1faXNDaGVja2VkOwor
ICAgIGJvb2wgbV9pc0VuYWJsZWQ7CisKKyAgICBFd2tfQ29udGV4dF9NZW51KiBtX3BhcmVudE1l
bnU7CisgICAgRXdrX0NvbnRleHRfTWVudSogbV9zdWJNZW51OworfTsKKworI2VuZGlmIC8vIGV3
a19jb250ZXh0X21lbnVfaXRlbV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21lbnVfcHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfbWVudV9wcml2YXRlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjlmNWM5MGFjMDgzZTJjMjc0ZWEyODYzODNiZjc5YTZjOGRlZTI0NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X21l
bnVfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9tZW51X3ByaXZhdGVfaAorI2RlZmluZSBld2tf
Y29udGV4dF9tZW51X3ByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0
YS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnVfaXRlbS5oIgorI2luY2x1ZGUgPEVpbmEu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOworY2xh
c3MgV2ViQ29udGV4dE1lbnVQcm94eUVmbDsKK30KKworY2xhc3MgRXdrVmlld0ltcGw7CisKK2Ns
YXNzIEV3a0NvbnRleHRNZW51IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxFd2tD
b250ZXh0TWVudT4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViS2l0OjpXZWJDb250
ZXh0TWVudVByb3h5RWZsKiBjb250ZXh0TWVudVByb3h5LCBjb25zdCBWZWN0b3I8V2ViS2l0OjpX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEV3a0NvbnRleHRNZW51KHZpZXdJbXBsLCBjb250ZXh0TWVudVByb3h5LCBpdGVt
cykpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzT3duUHRyPEV3a0NvbnRleHRNZW51PiBjcmVh
dGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tDb250ZXh0TWVudSgp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxFd2tDb250ZXh0TWVudT4gY3JlYXRl
KEVpbmFfTGlzdCogaXRlbXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV3
a0NvbnRleHRNZW51KGl0ZW1zKSk7CisgICAgfQorCisgICAgfkV3a0NvbnRleHRNZW51KCk7CisK
KyAgICB2b2lkIGhpZGUoKTsKKyAgICB2b2lkIGFwcGVuZEl0ZW0oRXdrQ29udGV4dE1lbnVJdGVt
Kik7CisgICAgdm9pZCByZW1vdmVJdGVtKEV3a0NvbnRleHRNZW51SXRlbSopOworCisgICAgY29u
c3QgRWluYV9MaXN0KiBpdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dE1lbnVJdGVtczsg
fQorICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViS2l0OjpXZWJDb250
ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKTsKKworcHJpdmF0ZToKKyAgICBFd2tDb250ZXh0TWVudSgp
OworICAgIEV3a0NvbnRleHRNZW51KEVpbmFfTGlzdCogaXRlbXMpOworICAgIEV3a0NvbnRleHRN
ZW51KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5RWZs
KiwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKTsK
KworICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOworICAgIFdlYktpdDo6V2ViQ29udGV4dE1l
bnVQcm94eUVmbCogbV9jb250ZXh0TWVudVByb3h5OworICAgIEVpbmFfTGlzdCogbV9jb250ZXh0
TWVudUl0ZW1zOworfTsKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X21lbnVfcHJpdmF0ZV9oCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kZWZpbmVz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGVmaW5lcy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk3MzIwZmIzNzVhZmIyZDhhMTlhNTgwNDk5YmJhMTI5OGI0YWYxNGMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGVmaW5lcy5o
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoq
CisgKiBAZmlsZSAgICBld2tfZGVmaW5lcy5oCisgKiBAYnJpZWYgICBEZWZpbmVzIHRoZSBFd2sg
U3RydWN0cworICovCisKKyNpZm5kZWYgZXdrX2RlZmluZXNfaAorI2RlZmluZSBld2tfZGVmaW5l
c19oCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENy
ZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3a19Db250ZXh0X01lbnUgKi8KK3R5cGVkZWYgc3RydWN0
IEV3a0NvbnRleHRNZW51IEV3a19Db250ZXh0X01lbnU7CisKKy8qKiBDcmVhdGVzIGEgdHlwZSBu
YW1lIGZvciBFd2tfQ29udGV4dF9NZW51X0l0ZW0gKi8KK3R5cGVkZWYgc3RydWN0IEV3a0NvbnRl
eHRNZW51SXRlbSBFd2tfQ29udGV4dF9NZW51X0l0ZW07CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
fQorI2VuZGlmCisKKyNlbmRpZiAvKiBld2tfZGVmaW5lc19oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCAzOTE3MGVlNmRjNTY5MmMxNjQ3Mzk0
YzRkZDZmMmQxNjg2NTdmNmMzLi4wZjVhY2MzZDA4ZDE0ZmY2ZDUxNTMyOGRmZjQxNzE5Y2ZkNGU2
ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAg
LTgyLDYgKzgyLDcgQEAKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3QuaCIKICNpbmNs
dWRlICJld2tfY29sb3JfcGlja2VyLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKKyNpbmNs
dWRlICJld2tfY29udGV4dF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYi5oIgog
I2luY2x1ZGUgImV3a19lcnJvci5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIKQEAgLTExMyw2
ICsxMTQsOSBAQCBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEV2YXNfU21hcnRf
Q2xhc3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAqLwog
ICAgIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKIAorICAgIEVpbmFfQm9vbCAoKmNvbnRleHRfbWVu
dV9zaG93KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3Jk
IHksIEV3a19Db250ZXh0X01lbnUgKm1lbnUpOworICAgIEVpbmFfQm9vbCAoKmNvbnRleHRfbWVu
dV9oaWRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisKICAgICBFaW5hX0Jvb2wgKCpwb3B1
cF9tZW51X3Nob3cpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX1JlY3RhbmdsZSByZWN0
LCBFd2tfVGV4dF9EaXJlY3Rpb24gdGV4dF9kaXJlY3Rpb24sIGRvdWJsZSBwYWdlX3NjYWxlX2Zh
Y3RvciwgRXdrX1BvcHVwX01lbnUgKm1lbnUpOwogICAgIEVpbmFfQm9vbCAoKnBvcHVwX21lbnVf
aGlkZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwogCkBAIC0xNjksNyArMTczLDcgQEAgc3Ry
dWN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1Nf
SU5JVF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJT
SU9OCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19p
bml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0
KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdf
U21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHRfbWVudS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dF9tZW51LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ODg1OGFmMWQ1ZWFiODUxYTgwYWVjNGQ3YTRmY2JkY2EzMzBlYjlkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVz
dF9ld2syX2NvbnRleHRfbWVudS5jcHAKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgICAgQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUK
KyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgICBJbmMuLCA1OSBUZW1w
bGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RC
YXNlLmgiCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9ubWVudC5o
IgorI2luY2x1ZGUgPEVXZWJLaXQyLmg+CisjaW5jbHVkZSA8RWNvcmUuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIEVXSzJVbml0VGVzdDsKKworZXh0ZXJuIEVXSzJVbml0VGVzdEVudmlyb25tZW50KiBl
bnZpcm9ubWVudDsKKworc3RhdGljIGlubGluZSB2b2lkIGNoZWNrQmFzaWNDb250ZXh0TWVudUl0
ZW0oRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlw
ZSB0eXBlLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGFjdGlvbiwgY29uc3QgY2hhciog
dGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCkKK3sKKyAgICBBU1NF
UlRfVFJVRShpdGVtKTsKKworICAgIEVYUEVDVF9FUSh0eXBlLCBld2tfY29udGV4dF9tZW51X2l0
ZW1fdHlwZV9nZXQoaXRlbSkpOworICAgIEVYUEVDVF9FUShhY3Rpb24sIGV3a19jb250ZXh0X21l
bnVfaXRlbV9hY3Rpb25fZ2V0KGl0ZW0pKTsKKyAgICBFWFBFQ1RfU1RSRVEodGl0bGUsIGV3a19j
b250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQoaXRlbSkpOworICAgIEVYUEVDVF9FUShjaGVja2Vk
LCBld2tfY29udGV4dF9tZW51X2l0ZW1fY2hlY2tlZF9nZXQoaXRlbSkpOworICAgIEVYUEVDVF9F
UShlbmFibGVkLCBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9nZXQoaXRlbSkpOworfQor
CitzdGF0aWMgRWluYV9Cb29sIHNob3dDb250ZXh0TWVudShFd2tfVmlld19TbWFydF9EYXRhKiBz
bWFydERhdGEsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFd2tfQ29udGV4dF9NZW51KiBj
b250ZXh0TWVudSkKK3sKKyAgICBjb25zdCBFaW5hX0xpc3QqIGxpc3QgPSBld2tfY29udGV4dF9t
ZW51X2l0ZW1zX2dldChjb250ZXh0TWVudSk7CisgICAgRVhQRUNUX0VRKDQsIGVpbmFfbGlzdF9j
b3VudChsaXN0KSk7CisKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNf
Y2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW0qPihlaW5hX2xpc3RfbnRoKGxpc3QsIDApKTsKKyAg
ICBjaGVja0Jhc2ljQ29udGV4dE1lbnVJdGVtKGl0ZW0sIEVXS19BQ1RJT05fVFlQRSwgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19HT19CQUNLLCAiR28gQmFjayIsIGZhbHNlLCB0cnVlKTsKKwor
ICAgIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW0qPihlaW5hX2xpc3Rf
bnRoKGxpc3QsIDEpKTsKKyAgICBjaGVja0Jhc2ljQ29udGV4dE1lbnVJdGVtKGl0ZW0sIEVXS19B
Q1RJT05fVFlQRSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19HT19GT1JXQVJELCAiR28gRm9y
d2FyZCIsIGZhbHNlLCB0cnVlKTsKKyAgICBld2tfY29udGV4dF9tZW51X2l0ZW1fZW5hYmxlZF9z
ZXQoaXRlbSwgZmFsc2UpOworICAgIEVYUEVDVF9GQUxTRShld2tfY29udGV4dF9tZW51X2l0ZW1f
ZW5hYmxlZF9nZXQoaXRlbSkpOworCisgICAgaXRlbSA9IHN0YXRpY19jYXN0PEV3a19Db250ZXh0
X01lbnVfSXRlbSo+KGVpbmFfbGlzdF9udGgobGlzdCwgMikpOworICAgIGNoZWNrQmFzaWNDb250
ZXh0TWVudUl0ZW0oaXRlbSwgRVdLX0FDVElPTl9UWVBFLCBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX1NUT1AsICJTdG9wIiwgZmFsc2UsIHRydWUpOworICAgIGV3a19jb250ZXh0X21lbnVfaXRl
bV9jaGVja2VkX3NldChpdGVtLCB0cnVlKTsKKyAgICBFWFBFQ1RfVFJVRShld2tfY29udGV4dF9t
ZW51X2l0ZW1fY2hlY2tlZF9nZXQoaXRlbSkpOworCisgICAgaXRlbSA9IHN0YXRpY19jYXN0PEV3
a19Db250ZXh0X01lbnVfSXRlbSo+KGVpbmFfbGlzdF9udGgobGlzdCwgMykpOworICAgIGNoZWNr
QmFzaWNDb250ZXh0TWVudUl0ZW0oaXRlbSwgRVdLX0FDVElPTl9UWVBFLCBFV0tfQ09OVEVYVF9N
RU5VX0lURU1fVEFHX1JFTE9BRCwgIlJlbG9hZCIsIGZhbHNlLCB0cnVlKTsKKyAgICBld2tfY29u
dGV4dF9tZW51X2l0ZW1fdGl0bGVfc2V0KGl0ZW0sICJSZWZyZXNoIik7CisgICAgRVhQRUNUX1NU
UkVRKCJSZWZyZXNoIiwgZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldChpdGVtKSk7CisK
KyAgICAvLyBNYWtlcyBuZXcgY29udGV4dCBtZW51IGl0ZW1zLgorICAgIEV3a19Db250ZXh0X01l
bnVfSXRlbSogbmV3SXRlbSA9IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRVdLX0FDVElPTl9U
WVBFLCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX09USEVSLCAiTmV3IEN1c3RvbSBJdGVtIiwg
ZmFsc2UsIHRydWUpOworICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9hcHBlbmQoY29udGV4dE1l
bnUsIG5ld0l0ZW0pOworCisgICAgRWluYV9MaXN0KiBzdWJNZW51SXRlbUxpc3QgPSAwOworICAg
IEV3a19Db250ZXh0X01lbnVfSXRlbSogc3ViTWVudUl0ZW0xID0gZXdrX2NvbnRleHRfbWVudV9p
dGVtX25ldyhFV0tfQUNUSU9OX1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1RIRVIs
ICJOZXcgU3ViTWVudSBJdGVtIDEiLCBmYWxzZSwgdHJ1ZSk7CisgICAgRXdrX0NvbnRleHRfTWVu
dV9JdGVtKiBzdWJNZW51SXRlbTIgPSBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KEVXS19BQ1RJ
T05fVFlQRSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19PVEhFUiwgIk5ldyBTdWJNZW51IEl0
ZW0gMiIsIGZhbHNlLCB0cnVlKTsKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIHN1Yk1lbnVJ
dGVtMyA9IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRVdLX0FDVElPTl9UWVBFLCBFV0tfQ09O
VEVYVF9NRU5VX0lURU1fVEFHX09USEVSLCAiTmV3IFN1Yk1lbnUgSXRlbSAzIiwgZmFsc2UsIHRy
dWUpOworICAgIHN1Yk1lbnVJdGVtTGlzdCA9IGVpbmFfbGlzdF9hcHBlbmQoc3ViTWVudUl0ZW1M
aXN0LCBzdWJNZW51SXRlbTEpOworICAgIHN1Yk1lbnVJdGVtTGlzdCA9IGVpbmFfbGlzdF9hcHBl
bmQoc3ViTWVudUl0ZW1MaXN0LCBzdWJNZW51SXRlbTIpOworICAgIHN1Yk1lbnVJdGVtTGlzdCA9
IGVpbmFfbGlzdF9hcHBlbmQoc3ViTWVudUl0ZW1MaXN0LCBzdWJNZW51SXRlbTMpOworICAgIEV3
a19Db250ZXh0X01lbnUqIHN1Yk1lbnUgPSBld2tfY29udGV4dF9tZW51X25ld193aXRoX2l0ZW1z
KHN1Yk1lbnVJdGVtTGlzdCk7CisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBuZXdJdGVtMiA9
IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51KEVXS19TVUJNRU5VX1RZUEUs
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1RIRVIsICJOZXcgQ3VzdG9tIEl0ZW0gMiIsIGZh
bHNlLCB0cnVlLCBzdWJNZW51KTsKKyAgICBld2tfY29udGV4dF9tZW51X2l0ZW1fYXBwZW5kKGNv
bnRleHRNZW51LCBuZXdJdGVtMik7CisKKyAgICBFd2tfQ29udGV4dF9NZW51KiBzdWJNZW51MiA9
IGV3a19jb250ZXh0X21lbnVfbmV3KCk7CisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBuZXdJ
dGVtMyA9IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51KEVXS19TVUJNRU5V
X1RZUEUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfT1RIRVIsICJOZXcgQ3VzdG9tIEl0ZW0g
MyIsIGZhbHNlLCB0cnVlLCBzdWJNZW51Mik7CisgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtX2Fw
cGVuZChjb250ZXh0TWVudSwgbmV3SXRlbTMpOworCisgICAgbGlzdCA9IGV3a19jb250ZXh0X21l
bnVfaXRlbXNfZ2V0KGNvbnRleHRNZW51KTsKKyAgICBFWFBFQ1RfRVEoNywgZWluYV9saXN0X2Nv
dW50KGxpc3QpKTsKKworICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9yZW1vdmUoY29udGV4dE1l
bnUsIG5ld0l0ZW0pOworICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9yZW1vdmUoY29udGV4dE1l
bnUsIG5ld0l0ZW0yKTsKKyAgICBld2tfY29udGV4dF9tZW51X2l0ZW1fcmVtb3ZlKGNvbnRleHRN
ZW51LCBuZXdJdGVtMyk7CisgICAgbGlzdCA9IGV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0KGNv
bnRleHRNZW51KTsKKyAgICBFWFBFQ1RfRVEoNCwgZWluYV9saXN0X2NvdW50KGxpc3QpKTsKKwor
ICAgIEVYUEVDVF9UUlVFKGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QoY29udGV4dE1lbnUs
IGl0ZW0pKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFz
ZSwgZXdrX2NvbnRleHRfbWVudV9pdGVtX3NlbGVjdCkKK3sKKyAgICBjb25zdCBjaGFyKiBpdGVt
U2VsZWN0SFRNTCA9CisgICAgICAgICI8aHRtbD4iCisgICAgICAgICI8Ym9keT48YSBocmVmPWh0
dHA6Ly93d3cuZ29vZ2xlLmNvbT5UZXN0IExpbms8L2E+PC9ib2R5PiIKKyAgICAgICAgIjwvYm9k
eT48L2h0bWw+IjsgCisKKyAgICBld2tWaWV3Q2xhc3MoKS0+Y29udGV4dF9tZW51X3Nob3cgPSBz
aG93Q29udGV4dE1lbnU7CisKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXco
KSwgaXRlbVNlbGVjdEhUTUwsICJmaWxlOi8vLyIsIDApOworICAgIG1vdXNlQ2xpY2soMjAsIDMw
LCAvKlJpZ2h0Ki8gMyk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsTG9hZEZpbmlzaGVkKCkp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVu
dUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51
Q2xpZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTg2MDI4ZTBkZDY0MzA3MTYyNzMxZjE3ZjM1ZTJm
M2ZhNjg1MWQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGll
bnRFZmwuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlICJXS0FycmF5LmgiCisjaW5jbHVkZSAiV0tQYWdlLmgiCisjaW5j
bHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiICAgCisjaW5jbHVkZSA8RXZhcy5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgaW5saW5lIENvbnRleHRNZW51Q2xpZW50RWZs
KiB0b0NvbnRleHRDbGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVDbGllbnRFZmwqPihjb25zdF9jYXN0PHZvaWQqPihj
bGllbnRJbmZvKSk7Cit9CisKK0NvbnRleHRNZW51Q2xpZW50RWZsOjpDb250ZXh0TWVudUNsaWVu
dEVmbChFd2tWaWV3SW1wbCogdmlld0ltcGwpCisgICAgOiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQor
eworICAgIFdLUGFnZVJlZiBwYWdlUmVmID0gbV92aWV3SW1wbC0+d2tQYWdlKCk7CisgICAgQVNT
RVJUKHBhZ2VSZWYpOworCisgICAgV0tQYWdlQ29udGV4dE1lbnVDbGllbnQgY29udGV4dE1lbnVD
bGllbnQ7CisgICAgbWVtc2V0KCZjb250ZXh0TWVudUNsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZUNv
bnRleHRNZW51Q2xpZW50KSk7CisgICAgY29udGV4dE1lbnVDbGllbnQudmVyc2lvbiA9IGtXS1Bh
Z2VDb250ZXh0TWVudUNsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIGNvbnRleHRNZW51Q2xpZW50
LmNsaWVudEluZm8gPSB0aGlzOworICAgIGNvbnRleHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51
RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwID0gMDsKKyAgICBjb250ZXh0
TWVudUNsaWVudC5jdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZCA9IDA7CisgICAgY29udGV4
dE1lbnVDbGllbnQuY29udGV4dE1lbnVEaXNtaXNzZWQgPSAwOworICAgIGNvbnRleHRNZW51Q2xp
ZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSA9IDA7CisKKyAgICBXS1BhZ2VTZXRQ
YWdlQ29udGV4dE1lbnVDbGllbnQocGFnZVJlZiwgJmNvbnRleHRNZW51Q2xpZW50KTsKK30KKwor
dm9pZCBDb250ZXh0TWVudUNsaWVudEVmbDo6Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51
KFdLUGFnZVJlZiwgV0tBcnJheVJlZiwgV0tBcnJheVJlZiosIFdLSGl0VGVzdFJlc3VsdFJlZiwg
V0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVm
bC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIyOWU0ZWQzY2VjY2JkMzM3ZDg4N2M1YjU0NTQ1MDFkZjc1YjFhYzAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRNZW51
Q2xpZW50RWZsLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIENvbnRleHRNZW51Q2xpZW50RWZsX2gKKyNkZWZpbmUgQ29udGV4dE1lbnVDbGllbnRFZmxf
aAorCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dC5oIgor
I2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCitjbGFzcyBFd2tWaWV3SW1wbDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENv
bnRleHRNZW51Q2xpZW50RWZsIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDb250
ZXh0TWVudUNsaWVudEVmbD4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ29udGV4dE1lbnVDbGllbnRFZmwodmlld0ltcGwp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1l
bnUoV0tQYWdlUmVmLCBXS0FycmF5UmVmIHByb3Bvc2VkTWVudSwgV0tBcnJheVJlZiogbmV3TWVu
dSwgV0tIaXRUZXN0UmVzdWx0UmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENvbnRleHRNZW51Q2xpZW50RWZs
KEV3a1ZpZXdJbXBsKik7CisKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gQ29udGV4dE1lbnVDbGllbnRFZmxfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcAppbmRl
eCA5N2E4NWY1Y2NlZmVjNzNkYjNmMzQ2OWFiNDEzM2UyMzJjMWIzNGQwLi4wY2U4MmFhZTQ2ZTQw
NGY1ZDI5M2RhYWM2MzRkYjAxOTM1YjJjOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUg
IldlYkNvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCisjaW5jbHVk
ZSAiV2ViQ29udGV4dE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZs
LmgiCkBAIC0yMjEsMTAgKzIyMSw5IEBAIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBh
Z2VDbGllbnRCYXNlOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqCiAgICAgcmV0
dXJuIFdlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUobV92aWV3SW1wbCwgcGFnZSk7CiB9CiAK
LVBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNv
bnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK1Bhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQ
cm94eT4gUGFnZUNsaWVudEJhc2U6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5
KiBwYWdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIFdlYkNvbnRleHRNZW51UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdJbXBsLCBwYWdlKTsKIH0K
IAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWM3ZTBlYjgxNjMzMzUzYzE2MzNkMGNlZmI1OWVkNTdmNTJjNDViMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5j
cHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNv
bnRleHRNZW51UHJveHlFZmwuaCIKKworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorCisjaW5j
bHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgi
CisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YkNvbnRleHRNZW51UHJveHlFZmw6OldlYkNvbnRleHRNZW51UHJveHlFZmwoRXdrVmlld0ltcGwq
IHZpZXdJbXBsLCBXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3ZpZXdJbXBsKHZpZXdJbXBs
KQorICAgICwgbV9wYWdlKHBhZ2UpCit7Cit9CisKK1dlYkNvbnRleHRNZW51UHJveHlFZmw6On5X
ZWJDb250ZXh0TWVudVByb3h5RWZsKCkKK3sKK30KKwordm9pZCBXZWJDb250ZXh0TWVudVByb3h5
RWZsOjpzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBj
b25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQoreworICAgIG1fdmll
d0ltcGwtPnNob3dDb250ZXh0TWVudSh0aGlzLCBwb3NpdGlvbiwgaXRlbXMpOworfQorCit2b2lk
IFdlYkNvbnRleHRNZW51UHJveHlFZmw6OmhpZGVDb250ZXh0TWVudSgpCit7CisgICAgbV92aWV3
SW1wbC0+aGlkZUNvbnRleHRNZW51KCk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUVm
bDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYg
aXRlbSkKK3sKKyAgICBtX3BhZ2UtPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGl0ZW0pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVu
dVByb3h5RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51
UHJveHlFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2JlMmFiOWNlYjVkZGNmMWM0NjJiNDU1MzhjMzI5M2Ey
MjI4ZjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJDb250ZXh0TWVudVByb3h5RWZsLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb250
ZXh0TWVudVByb3h5RWZsX2gKKyNkZWZpbmUgV2ViQ29udGV4dE1lbnVQcm94eUVmbF9oCisKKyNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHku
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9J
bnRQb2ludC5oPgorCitjbGFzcyBFd2tWaWV3SW1wbDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2Ns
YXNzIFdlYkNvbnRleHRNZW51UHJveHlFZmwgOiBwdWJsaWMgV2ViQ29udGV4dE1lbnVQcm94eSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eUVmbD4g
Y3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250ZXh0TWVudVByb3h5RWZsKHZpZXdJ
bXBsLCBwYWdlKSk7CisgICAgfQorCisgICAgfldlYkNvbnRleHRNZW51UHJveHlFZmwoKTsKKwor
ICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3Qg
VmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jik7CisgICAgdm9pZCBoaWRlQ29udGV4dE1l
bnUoKTsKKworICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4
dE1lbnVJdGVtRGF0YSYpOworCitwcml2YXRlOgorICAgIFdlYkNvbnRleHRNZW51UHJveHlFZmwo
RXdrVmlld0ltcGwqLCBXZWJQYWdlUHJveHkqKTsKKworICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJ
bXBsOworICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOworfTsKKworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorI2VuZGlmIC8vIFdlYkNv
bnRleHRNZW51UHJveHlFZmxfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>