<?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>62961</bug_id>
          
          <creation_ts>2011-06-19 20:05:21 -0700</creation_ts>
          <short_desc>[EFL] Initial implementation of GraphicsContext3DPrivate</short_desc>
          <delta_ts>2012-03-03 03:42:10 -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>
          
          <blocked>62695</blocked>
    
    <blocked>62709</blocked>
    
    <blocked>79759</blocked>
    
    <blocked>79766</blocked>
    
    <blocked>80211</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Hyowon Kim">hw1008.kim</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>kenneth</cc>
    
    <cc>kevin.cs.oh</cc>
    
    <cc>leandro</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sangseok.lim</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>423433</commentid>
    <comment_count>0</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2011-06-19 20:05:21 -0700</bug_when>
    <thetext>This patch adds GraphicsContext3DInternal implementation for EFL port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423437</commentid>
    <comment_count>1</comment_count>
      <attachid>97734</attachid>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2011-06-19 20:10:24 -0700</bug_when>
    <thetext>Created attachment 97734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423458</commentid>
    <comment_count>2</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-06-19 21:21:32 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=97734&amp;action=review

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:61
&gt; +    m_evasGL = ewk_view_evas_gl_create(ewkView);

Should we call ewk api to create evas GL?

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:83
&gt; +    m_context = evas_gl_context_create(m_evasGL, shareContext);
&gt; +    if (!m_context)
&gt; +        return false;
&gt; +
&gt; +    if (!createSurface(ewkView, bRenderDirectlyToEvasGLObject))
&gt; +        return false;

If we can fail to create here, I think that we should create evas gl.
Is it right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423462</commentid>
    <comment_count>3</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-06-19 21:24:58 -0700</bug_when>
    <thetext>I think this patch is too big. Is it possible to split this patch into smaller one ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423495</commentid>
    <comment_count>4</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2011-06-19 23:21:15 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I think this patch is too big. Is it possible to split this patch into smaller one ?

I have already heard the same comment about the size of my patch from Leandro.
(Bug 62709)
GraphicsContext3DInternal is big because it contains wrapper functions to all OpenGL(ES) functions. I have no idea how to split it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423497</commentid>
    <comment_count>5</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-06-19 23:32:37 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; I think this patch is too big. Is it possible to split this patch into smaller one ?
&gt; 
&gt; I have already heard the same comment about the size of my patch from Leandro.
&gt; (Bug 62709)
&gt; GraphicsContext3DInternal is big because it contains wrapper functions to all OpenGL(ES) functions. I have no idea how to split it.

I&apos;m not sure if my case can be adjusted your patch. Anyway, when I have a huge patch, I make a patch which has dummy functions first. Then, I make next patches which implement the dummy functions step by step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423515</commentid>
    <comment_count>6</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-06-20 00:31:36 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97734&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:61
&gt; &gt; +    m_evasGL = ewk_view_evas_gl_create(ewkView);
&gt; 
&gt; Should we call ewk api to create evas GL?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:83
&gt; &gt; +    m_context = evas_gl_context_create(m_evasGL, shareContext);
&gt; &gt; +    if (!m_context)
&gt; &gt; +        return false;
&gt; &gt; +
&gt; &gt; +    if (!createSurface(ewkView, bRenderDirectlyToEvasGLObject))
&gt; &gt; +        return false;
&gt; 
&gt; If we can fail to create here, I think that we should create evas gl.
&gt; Is it right?

s/create evas gl/clear evas gl/
anyway, this is my mistake after discussed. please ignore it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423572</commentid>
    <comment_count>7</comment_count>
      <attachid>97769</attachid>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2011-06-20 02:51:43 -0700</bug_when>
    <thetext>Created attachment 97769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423575</commentid>
    <comment_count>8</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2011-06-20 02:53:53 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #2)
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97734&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:61
&gt; &gt; &gt; +    m_evasGL = ewk_view_evas_gl_create(ewkView);
&gt; &gt; 
&gt; &gt; Should we call ewk api to create evas GL?

I didn&apos;t know about evas_object_evas_get().
I have replaced the following code 1 with the code 2.

(1) m_evasGL = ewk_view_evas_gl_create(ewkView);

(2) Evas* evas = evas_object_evas_get(ewkView);
    m_evasGL = evas_gl_create(evas);

Thank you very very much :)

&gt; &gt; &gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:83
&gt; &gt; &gt; +    m_context = evas_gl_context_create(m_evasGL, shareContext);
&gt; &gt; &gt; +    if (!m_context)
&gt; &gt; &gt; +        return false;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    if (!createSurface(ewkView, bRenderDirectlyToEvasGLObject))
&gt; &gt; &gt; +        return false;
&gt; &gt; 
&gt; &gt; If we can fail to create here, I think that we should create evas gl.
&gt; &gt; Is it right?
&gt; 
&gt; s/create evas gl/clear evas gl/
&gt; anyway, this is my mistake after discussed. please ignore it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423588</commentid>
    <comment_count>9</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-06-20 03:45:19 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=97769&amp;action=review

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:59
&gt; +    Evas_Object* ewkView = static_cast&lt;Evas_Object*&gt;(hostWindow-&gt;platformPageClient());

how do you think view instead of ewkView.

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:70
&gt; +    Evas_GL_Context* shareContext = 0;

shareContext or sharedContext? Which one is right?

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:74
&gt; +        GraphicsContext3D* compositingContext = ewk_view_accelerated_compositing_context_get(ewkView);

Is it public api?
If not, does we need to guard this to ACCELEARTED_COMPOSITING macro?

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:89
&gt; +bool GraphicsContext3DInternal::createSurface(Evas_Object* ewkView, bool renderDirectlyToEvasGLObject)

If createSurface is only for initialize, does we need to separate it?

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:98
&gt; +    evas_object_geometry_get(ewkView, &amp;x, &amp;y, &amp;w, &amp;h);

I think that we can move this into if (renderDirectlyToEvasGLObject).
And evas_object_geometry_get will clear values to 0 although it failed.

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:100
&gt; +    int surfaceWidth = 0, surfaceHeight = 0;

I prefered these meaningful name, but can we share this with w, h.

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:106
&gt; +    } else
&gt; +        surfaceWidth = surfaceHeight = 1;

How about initializing above values to 1 instead of else statement.

Other codes looks just bypassed from WebKit&apos;s to evas_gl_api&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423604</commentid>
    <comment_count>10</comment_count>
      <attachid>97781</attachid>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2011-06-20 05:10:02 -0700</bug_when>
    <thetext>Created attachment 97781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423607</commentid>
    <comment_count>11</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2011-06-20 05:12:38 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=97781) [details]
&gt; Patch

I updated this patch to reflect the comment #9 From Ryuan Choi. Thanks again Ryuan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423651</commentid>
    <comment_count>12</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-20 07:01:11 -0700</bug_when>
    <thetext>Informal r- from my side:

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:2
&gt; +    Copyright (C) 2009-2011 Samsung Electronics

This file is new, so the copyright should start in 2011.

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:57
&gt; +bool GraphicsContext3DInternal::initialize(GraphicsContext3D::Attributes attrs, HostWindow* hostWindow, bool bRenderDirectlyToEvasGLObject)

I&apos;d rather if instead of having a public constructor and this method you could have a static create() method which took care of creating and initializing the object automatically.

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:144
&gt; +void GraphicsContext3DInternal::bindAttribLocation(Platform3DObject program, GC3Duint index, const char* name)

I think it makes more sense to make name a String, and call .utf8().data() here.

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:394
&gt; +    char* name = static_cast&lt;char*&gt;(malloc(maxNameLength * sizeof(char)));

sizeof(char) is always 1.

Manually managing the memory allocated here should not be necessary. You can use, for example, an OwnArrayPtr: OwnArrayPtr&lt;char&gt; name = adoptArrayPtr(new char[maxNameLength]);

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:431
&gt; +    char* name = static_cast&lt;char*&gt;(malloc(maxNameLength * sizeof(char)));

Ditto.

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:486
&gt; +        ListHashSet&lt;GC3Denum&gt;::iterator iter = m_syntheticErrors.begin();

I think it&apos;s clearer to do

  GC3Denum err = m_syntheticErrors.first();
  m_syntheticErrors.remove(m_syntheticErrors.begin());
  return err;

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:545
&gt; +    char* log = static_cast&lt;char*&gt;(malloc(logLength * sizeof(char)));

Same comment about manual memory management.

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:579
&gt; +    char* log = static_cast&lt;char*&gt;(malloc(logLength * sizeof(char)));

Ditto.

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:601
&gt; +    char* log = static_cast&lt;char*&gt;(malloc(logLength * sizeof(char)));

Ditto.

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:1113
&gt; +    return 0;

Missing notImplemented()?

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.h:2
&gt; +    Copyright (C) 2009-2011 Samsung Electronics

This file is new, so the copyright should start in 2011.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424965</commentid>
    <comment_count>13</comment_count>
      <attachid>97781</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-06-21 19:33:42 -0700</bug_when>
    <thetext>Comment on attachment 97781
Patch

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

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:2
&gt; +    Copyright (C) 2009-2011 Samsung Electronics

Remvoe 2009. Let&apos;s only use 2011.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425013</commentid>
    <comment_count>14</comment_count>
      <attachid>98115</attachid>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2011-06-21 21:53:00 -0700</bug_when>
    <thetext>Created attachment 98115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425016</commentid>
    <comment_count>15</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2011-06-21 22:03:34 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=98115) [details]
&gt; Patch

I updated this patch to reflect the comment #12 from Raphael.
Raphael, thank you for your interest and comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425017</commentid>
    <comment_count>16</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2011-06-21 22:07:21 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Informal r- from my side:
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:57
&gt; &gt; +bool GraphicsContext3DInternal::initialize(GraphicsContext3D::Attributes attrs, HostWindow* hostWindow, bool bRenderDirectlyToEvasGLObject)
&gt; 
&gt; I&apos;d rather if instead of having a public constructor and this method you could have a static create() method which took care of creating and initializing the object automatically.
&gt; 

GraphicsContext3DInternal::initialize() calls many Evas_GL&apos;s create functions. 
If one of them fails, initialize() returns false, and then the GraphicsContext3DInternal instance will be destroyed.

According to your comment about a static create() function, I made the following codes.
static PassOwnPtr&lt;GraphicsContext3DInternal&gt; GraphicsContext3DInternal::create(a, b, c)
{
     OwnPtr&lt;GraphicsContext3DInternal&gt; internal = adoptPtr(new GraphicsContext3DInternal());
     if (!internal-&gt;initialize(a, b, c))
        return 0;
     return internal.release();    
}

But it couldn&apos;t return 0 due to the following compile error.

error: conversion from &apos;int&apos; to non-scalar type &apos;WTF::PassOwnPtr&lt;WebCore::GraphicsContext3DInternal&gt;&apos; requested

So creating and initailizing a instance at once in the static GraphicsContext3DInternal::create() function seems to be difficult because of its return type.

GraphicsContext3DInternal instances are created only in GraphicsContext3D::create(), so I think that current implementation might be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425034</commentid>
    <comment_count>17</comment_count>
      <attachid>98115</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-06-21 22:40:10 -0700</bug_when>
    <thetext>Comment on attachment 98115
Patch

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

When you define functions, you need to adhere consistency in parameter name. AFAIK, we have to adhere WebKit coding style rule in WebCore,

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.h:57
&gt; +    void blendFuncSeparate(GC3Denum srcRGB, GC3Denum dstRGB, GC3Denum srcAlpha, GC3Denum dstAlpha);

you use &quot;A&quot; upper case in srcAlpha.

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.h:70
&gt; +    void copyTexImage2D(GC3Denum target, GC3Dint level, GC3Denum internalformat, GC3Dint x, GC3Dint y, GC3Dsizei width, GC3Dsizei height, GC3Dint border);

In internalformat, you don&apos;t use upper case for &quot;f&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425142</commentid>
    <comment_count>18</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2011-06-22 04:18:26 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #12)
&gt; &gt; Informal r- from my side:
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DInternal.cpp:57
&gt; &gt; &gt; +bool GraphicsContext3DInternal::initialize(GraphicsContext3D::Attributes attrs, HostWindow* hostWindow, bool bRenderDirectlyToEvasGLObject)
&gt; &gt; 
&gt; &gt; I&apos;d rather if instead of having a public constructor and this method you could have a static create() method which took care of creating and initializing the object automatically.
&gt; &gt; 
&gt; GraphicsContext3DInternal::initialize() calls many Evas_GL&apos;s create functions. 
&gt; If one of them fails, initialize() returns false, and then the GraphicsContext3DInternal instance will be destroyed.
&gt; According to your comment about a static create() function, I made the following codes.
&gt; static PassOwnPtr&lt;GraphicsContext3DInternal&gt; GraphicsContext3DInternal::create(a, b, c)
&gt; {
&gt;      OwnPtr&lt;GraphicsContext3DInternal&gt; internal = adoptPtr(new GraphicsContext3DInternal());
&gt;      if (!internal-&gt;initialize(a, b, c))
&gt;         return 0;
&gt;      return internal.release();    
&gt; }
&gt; But it couldn&apos;t return 0 due to the following compile error.
&gt; error: conversion from &apos;int&apos; to non-scalar type &apos;WTF::PassOwnPtr&lt;WebCore::GraphicsContext3DInternal&gt;&apos; requested
&gt; So creating and initailizing a instance at once in the static GraphicsContext3DInternal::create() function seems to be difficult because of its return type.
&gt; GraphicsContext3DInternal instances are created only in GraphicsContext3D::create(), so I think that current implementation might be good.

Sorry, I should have used &quot;return nullptr;&quot; instead of 0!!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425191</commentid>
    <comment_count>19</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-22 07:05:45 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Sorry, I should have used &quot;return nullptr;&quot; instead of 0!!!

I&apos;m glad you&apos;ve figured it out :) I&apos;m looking forward to another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425917</commentid>
    <comment_count>20</comment_count>
      <attachid>98304</attachid>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2011-06-22 20:10:06 -0700</bug_when>
    <thetext>Created attachment 98304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425918</commentid>
    <comment_count>21</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2011-06-22 20:11:32 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; Sorry, I should have used &quot;return nullptr;&quot; instead of 0!!!
&gt; 
&gt; I&apos;m glad you&apos;ve figured it out :) I&apos;m looking forward to another patch.

You are so kind :) I updated this patch to reflect your comment about using the static create function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427859</commentid>
    <comment_count>22</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-27 05:15:47 -0700</bug_when>
    <thetext>It looks good to me now; informal r+ from my side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545316</commentid>
    <comment_count>23</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-01-30 12:43:35 -0800</bug_when>
    <thetext>How are you testing this code? are you enabling webgl in build-webkit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565126</commentid>
    <comment_count>24</comment_count>
      <attachid>128908</attachid>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2012-02-25 23:59:17 -0800</bug_when>
    <thetext>Created attachment 128908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565129</commentid>
    <comment_count>25</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2012-02-26 00:22:03 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; How are you testing this code? are you enabling webgl in build-webkit?

I&apos;m sorry for the delay in my response.
I&apos;ve actually finished the implementation about accelerated compositing using texmap and GC3D already.
I will summit another patch soon, in order to add GC3D files to webkit-efl build when ACCELERATED_COMPOSITING is used.
Thanks for your interest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565131</commentid>
    <comment_count>26</comment_count>
      <attachid>128908</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-26 00:50:54 -0800</bug_when>
    <thetext>Comment on attachment 128908
Patch

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

New failing tests:
inspector/protocol/console-agent.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565144</commentid>
    <comment_count>27</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2012-02-26 06:52:30 -0800</bug_when>
    <thetext>i think we are already using GTK GraphicsContext3DInternal: https://bugs.webkit.org/show_bug.cgi?id=77296

I think you guys should try to synchronize what you are doing.


(In reply to comment #26)
&gt; (From update of attachment 128908 [details])
&gt; Attachment 128908 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/11633543
&gt; 
&gt; New failing tests:
&gt; inspector/protocol/console-agent.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565259</commentid>
    <comment_count>28</comment_count>
      <attachid>128939</attachid>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2012-02-26 18:50:50 -0800</bug_when>
    <thetext>Created attachment 128939
re-upload</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565301</commentid>
    <comment_count>29</comment_count>
      <attachid>128947</attachid>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2012-02-26 21:16:43 -0800</bug_when>
    <thetext>Created attachment 128947
re-upload2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565349</commentid>
    <comment_count>30</comment_count>
    <who name="Hyowon Kim">hw1008.kim</who>
    <bug_when>2012-02-26 22:53:28 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; i think we are already using GTK GraphicsContext3DInternal: https://bugs.webkit.org/show_bug.cgi?id=77296
&gt; 
&gt; I think you guys should try to synchronize what you are doing.
&gt; 

Bug 77296 makes it shareable to use GC3DPrivate with GLX backend.

But, this patch is a EFL platform specific using Evas_GL backend.
(As you know, the initialization of GLX is a lot different from Evas_GL&apos;s.)

Evas_GL could make it easy to render to Evas 
and provide options to take advantage of performance gains.

And I talked with &apos;ChangSeok Oh&apos; who&apos;s the author of Bug 77296.
He agreed that GC3DPrivate in efl port should be seperated from it in glx.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565463</commentid>
    <comment_count>31</comment_count>
      <attachid>128947</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-27 01:30:59 -0800</bug_when>
    <thetext>Comment on attachment 128947
re-upload2

Rejecting attachment 128947 from commit-queue.

New failing tests:
inspector/protocol/console-agent.html
Full output: http://queues.webkit.org/results/11634005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566220</commentid>
    <comment_count>32</comment_count>
      <attachid>128947</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-02-27 18:08:48 -0800</bug_when>
    <thetext>Comment on attachment 128947
re-upload2

Try cq+ once more because I think that complained message is not related to this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566259</commentid>
    <comment_count>33</comment_count>
      <attachid>128947</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-27 19:01:25 -0800</bug_when>
    <thetext>Comment on attachment 128947
re-upload2

Clearing flags on attachment: 128947

Committed r109061: &lt;http://trac.webkit.org/changeset/109061&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566260</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-27 19:01:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97734</attachid>
            <date>2011-06-19 20:10:24 -0700</date>
            <delta_ts>2011-06-20 02:51:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62961-20110620121105.patch</filename>
            <type>text/plain</type>
            <size>54005</size>
            <attacher name="Hyowon Kim">hw1008.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkyMjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlN2U2MjdjOWQwNmE5OTYy
MGZkMjQwYjlkZDMyYTI4NDY5MDdlOWQ5Li43YTU1YjNkZDFiMTcxMjFkNGVlZGRlM2E4ODU5ZDU3
NTM2Yjk2YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYxIEBACisyMDExLTA2LTE5ICBIeW93
b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBBZGQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjI5NjEKKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgbmV3IGZpbGVz
IGFyZSBub3QgeWV0IGFkZGVkIHRvIENNYWtlTGlzdHMqLnR4dC4KKyAgICAgICAgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbCBjbGFzcyBmb3IgRWZsIHBvcnQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
Ojp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjptYWtlQ29udGV4dEN1
cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aXNH
TEVTMkNvbXBsaWFudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpiaW5kVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpibGVuZENvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJsZW5kRXF1YXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmxlbmRF
cXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjbGVhcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjbGVhckNvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNsZWFyRGVwdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2xlYXJTdGVuY2lsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNvbG9yTWFzayk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjb21waWxlU2hhZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNvcHlUZXhJ
bWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNv
cHlUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmN1bGxGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmRlcHRoRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpkZXB0aE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpkZXRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZHJhd0FycmF5cyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkcmF3RWxlbWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZW5hYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmZpbmlzaCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpmbHVzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpmcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpmcmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpmcm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0QXR0YWNoZWRTaGFkZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEF0dHJpYkxv
Y2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omdl
dEJvb2xlYW52KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmdldEJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmdldENvbnRleHRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEZsb2F0dik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRJ
bnRlZ2Vydik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpn
ZXRQcm9ncmFtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0U2hhZGVySW5mb0xvZyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRTaGFkZXJTb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0U3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFRleFBh
cmFtZXRlcmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmdldFRleFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmdldFVuaWZvcm1mdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFZlcnRleEF0dHJpYmZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFZlcnRleEF0dHJpYml2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFZlcnRleEF0
dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpoaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omlz
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omlz
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpp
c0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmlzUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjppc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjppc1NoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjppc1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6bGluZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnBpeGVsU3RvcmVpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnBvbHlnb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnNhbXBsZUNvdmVyYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnNjaXNzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c2hhZGVyU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnN0ZW5jaWxGdW5j
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnN0ZW5jaWxG
dW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpzdGVuY2lsT3ApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp0ZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnRleFBhcmFtZXRlcmkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMWYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTFmdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMWkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTFp
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3Jt
MmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9y
bTJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlm
b3JtMmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5p
Zm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1
bmlmb3JtM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
Ojp1bmlmb3JtM2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjp1bmlmb3JtNGYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjp1bmlmb3JtNGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1c2VQcm9ncmFtKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZhbGlkYXRlUHJvZ3JhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWIx
Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhB
dHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
dmVydGV4QXR0cmliMmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliUG9pbnRl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2aWV3cG9y
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjcmVhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3Jl
YXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZVByb2dyYW0p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZGVsZXRlUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnN5bnRoZXNpemVHTEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmg6IEFkZGVkLgorCiAyMDExLTA2
LTE5ICBVbmEgU2Fib3ZpYyAgPHVuYS5zYWJvdmljQHBhbG0uY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA3MmU1MTQ0YjA3Njg0OTA4ZjNmYmMwYWU0OTRjMjdlYmM0NjdlNWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbC5jcHAKQEAgLTAsMCArMSwxMTIxIEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAwOS0yMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
REludGVybmFsLmgiCisKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiZXdrX3By
aXZhdGUuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsKCkKKyAgICA6IG1fYm91bmRGQk8oMCkKKyAgICAsIG1fYm91bmRUZXh0dXJlKDApCisg
ICAgLCBtX2JvdW5kQXJyYXlCdWZmZXIoMCkKKyAgICAsIG1fZXZhc0dMKDApCisgICAgLCBtX2Nv
bnRleHQoMCkKKyAgICAsIG1fc3VyZmFjZSgwKQorICAgICwgbV9hcGkoMCkKK3sKK30KKworR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKQorewor
ICAgIGlmIChtX2V2YXNHTCkgeworICAgICAgICBpZiAobV9zdXJmYWNlKQorICAgICAgICAgICAg
ZXZhc19nbF9zdXJmYWNlX2Rlc3Ryb3kobV9ldmFzR0wsIG1fc3VyZmFjZSk7CisKKyAgICAgICAg
aWYgKG1fY29udGV4dCkKKyAgICAgICAgICAgIGV2YXNfZ2xfY29udGV4dF9kZXN0cm95KG1fZXZh
c0dMLCBtX2NvbnRleHQpOworCisgICAgICAgIGV2YXNfZ2xfZnJlZShtX2V2YXNHTCk7CisgICAg
fQorfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmluaXRpYWxpemUoR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJv
b2wgYlJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpCit7CisgICAgRXZhc19PYmplY3QqIGV3
a1ZpZXcgPSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGhvc3RXaW5kb3ctPnBsYXRmb3JtUGFn
ZUNsaWVudCgpKTsKKworICAgIG1fZXZhc0dMID0gZXdrX3ZpZXdfZXZhc19nbF9jcmVhdGUoZXdr
Vmlldyk7CisgICAgaWYgKCFtX2V2YXNHTCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
bV9hcGkgPSBldmFzX2dsX2FwaV9nZXQobV9ldmFzR0wpOworICAgIGlmICghbV9hcGkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIEV2YXNfR0xfQ29udGV4dCogc2hhcmVDb250ZXh0ID0g
MDsKKworICAgIGlmICghYlJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpIHsKKyAgICAgICAg
Ly8gdG8gc2hhcmUgcmVzb3VyY2VzIHdpdGggYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgY29udGV4
dAorICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29tcG9zaXRpbmdDb250ZXh0ID0gZXdrX3Zp
ZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4dF9nZXQoZXdrVmlldyk7CisgICAgICAg
IGlmIChjb21wb3NpdGluZ0NvbnRleHQpCisgICAgICAgICAgICBzaGFyZUNvbnRleHQgPSBzdGF0
aWNfY2FzdDxFdmFzX0dMX0NvbnRleHQqPihjb21wb3NpdGluZ0NvbnRleHQtPnBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0M0QoKSk7CisgICAgfQorCisgICAgbV9jb250ZXh0ID0gZXZhc19nbF9jb250
ZXh0X2NyZWF0ZShtX2V2YXNHTCwgc2hhcmVDb250ZXh0KTsKKyAgICBpZiAoIW1fY29udGV4dCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFjcmVhdGVTdXJmYWNlKGV3a1ZpZXcs
IGJSZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIG1ha2VDb250ZXh0Q3VycmVudCgpOworfQorCitib29sIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmNyZWF0ZVN1cmZhY2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wg
cmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCkKK3sKKyAgICBFdmFzX0dMX0NvbmZpZyBjb25m
aWcgPSB7CisgICAgICAgIEVWQVNfR0xfUkdCQV84LAorICAgICAgICBFVkFTX0dMX0RFUFRIX0JJ
VF84LAorICAgICAgICBFVkFTX0dMX1NURU5DSUxfTk9ORQorICAgIH07CisKKyAgICBpbnQgeCA9
IDAsIHkgPSAwLCB3ID0gMCwgaCA9IDA7CisgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KGV3
a1ZpZXcsICZ4LCAmeSwgJncsICZoKTsKKworICAgIGludCBzdXJmYWNlV2lkdGggPSAwLCBzdXJm
YWNlSGVpZ2h0ID0gMDsKKyAgICBpZiAocmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCkgewor
ICAgICAgICAvLyBzYW1lIHNpemUgYXMgb3VyIGhvc3R3aW5kb3cKKyAgICAgICAgc3VyZmFjZVdp
ZHRoID0gdzsKKyAgICAgICAgc3VyZmFjZUhlaWdodCA9IGg7CisgICAgfSBlbHNlCisgICAgICAg
IHN1cmZhY2VXaWR0aCA9IHN1cmZhY2VIZWlnaHQgPSAxOworCisgICAgbV9zdXJmYWNlID0gZXZh
c19nbF9zdXJmYWNlX2NyZWF0ZShtX2V2YXNHTCwgJmNvbmZpZywgc3VyZmFjZVdpZHRoLCBzdXJm
YWNlSGVpZ2h0KTsKKyAgICBpZiAoIW1fc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKHJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpIHsKKyAgICAgICAgRXZhc19O
YXRpdmVfU3VyZmFjZSBuYXRpdmVTdXJmYWNlOworICAgICAgICBldmFzX2dsX25hdGl2ZV9zdXJm
YWNlX2dldChtX2V2YXNHTCwgbV9zdXJmYWNlLCAmbmF0aXZlU3VyZmFjZSk7CisKKyAgICAgICAg
ZXdrX3ZpZXdfZXZhc19nbF9vYmplY3RfY3JlYXRlKGV3a1ZpZXcsICZuYXRpdmVTdXJmYWNlLCB4
LCB5LCB3LCBoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1BsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dDsKK30KKworYm9vbCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjptYWtlQ29udGV4dEN1cnJlbnQoKQoreworICAgIHJldHVy
biAoZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR0wsIG1fc3VyZmFjZSwgbV9jb250ZXh0KSA9
PSBFSU5BX1RSVUUpOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzR0xF
UzJDb21wbGlhbnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjphY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQWN0aXZlVGV4dHVyZSh0
ZXh0dXJlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjphdHRhY2hTaGFk
ZXIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xBdHRhY2hTaGFkZXIocHJv
Z3JhbSwgc2hhZGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpiaW5k
QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwg
Y29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2Fw
aS0+Z2xCaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xCaW5kQnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKKworICAgIGlmICh0YXJnZXQg
PT0gR0xfQVJSQVlfQlVGRkVSKQorICAgICAgICBtX2JvdW5kQXJyYXlCdWZmZXIgPSBidWZmZXI7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZEZyYW1lYnVmZmVyKEdD
M0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikKK3sKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKworICAgIGlmIChmcmFtZWJ1ZmZlciAhPSBtX2JvdW5kRkJPKSB7
CisgICAgICAgIG1fYXBpLT5nbEJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGZyYW1lYnVmZmVyKTsK
KyAgICAgICAgbV9ib3VuZEZCTyA9IGZyYW1lYnVmZmVyOworICAgIH0KK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwg
UGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9hcGktPmdsQmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9hcGktPmdsQmluZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlKTsKKyAgICBtX2JvdW5kVGV4
dHVyZSA9IHRleHR1cmU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Ymxl
bmRDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNsYW1wZiBibHVl
LCBHQzNEY2xhbXBmIGFscGhhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbEJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJsZW5kRXF1YXRpb24oR0MzRGVudW0gbW9kZSkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xCbGVuZEVxdWF0aW9uKG1v
ZGUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJsZW5kRXF1YXRpb25T
ZXBhcmF0ZShHQzNEZW51bSBtb2RlUkdCLCBHQzNEZW51bSBtb2RlQWxwaGEpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKG1v
ZGVSR0IsIG1vZGVBbHBoYSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0b3IsIEdDM0RlbnVtIGRmYWN0b3IpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0
b3IpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJsZW5kRnVuY1NlcGFy
YXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0UkdCLCBHQzNEZW51bSBzcmNBbHBoYSwg
R0MzRGVudW0gZHN0QWxwaGEpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsQmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBo
YSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YnVmZmVyRGF0YShHQzNE
ZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQzNEZW51
bSB1c2FnZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xCdWZm
ZXJEYXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50cHRy
IG9mZnNldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9m
ZnNldCwgc2l6ZSwgZGF0YSk7Cit9CisKK0dDM0RlbnVtIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xDaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKHRhcmdldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2xlYXIo
R0MzRGJpdGZpZWxkIG1hc2spCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsQ2xlYXIobWFzayk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
Y2xlYXJDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNsYW1wZiBi
bHVlLCBHQzNEY2xhbXBmIGFscGhhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbENsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDbGVhckRlcHRoZihk
ZXB0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2xlYXJTdGVuY2ls
KEdDM0RpbnQgcykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xD
bGVhclN0ZW5jaWwocyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y29s
b3JNYXNrKEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0Rib29sZWFuIGJs
dWUsIEdDM0Rib29sZWFuIGFscGhhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbENvbG9yTWFzayhyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0
IHNoYWRlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDb21w
aWxlU2hhZGVyKHNoYWRlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
Y29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0Mz
RHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsQ29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB4LCBH
QzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKK3sKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjdWxsRmFjZShHQzNEZW51bSBtb2RlKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEN1bGxGYWNlKG1vZGUpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlcHRoRnVuYyhHQzNEZW51bSBm
dW5jKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERlcHRoRnVu
YyhmdW5jKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZXB0aE1hc2so
R0MzRGJvb2xlYW4gZmxhZykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2Fw
aS0+Z2xEZXB0aE1hc2soZmxhZyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6ZGVwdGhSYW5nZShHQzNEY2xhbXBmIHpOZWFyLCBHQzNEY2xhbXBmIHpGYXIpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRGVwdGhSYW5nZWYoek5lYXIsIHpG
YXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRldGFjaFNoYWRlcihQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERldGFjaFNoYWRlcihwcm9ncmFt
LCBzaGFkZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRpc2FibGUo
R0MzRGVudW0gY2FwKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5n
bERpc2FibGUoY2FwKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkcmF3QXJyYXlzKEdDM0RlbnVt
IG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZHJhd0VsZW1lbnRzKEdDM0Rl
bnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwgR0MzRGludHB0ciBvZmZz
ZXQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRHJhd0VsZW1l
bnRzKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19j
YXN0PGludHB0cl90PihvZmZzZXQpKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6ZW5hYmxlKEdDM0RlbnVtIGNhcCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xFbmFibGUoY2FwKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkKK3sKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShpbmRleCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZmluaXNoKCkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xGaW5pc2goKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpmbHVzaCgpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRmx1c2goKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJn
ZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxh
dGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50
LCByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3Qg
dGV4dHVyZSwgR0MzRGludCBsZXZlbCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRh
cmdldCwgdGV4dHVyZSwgbGV2ZWwpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbEZyb250RmFjZShtb2RlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsK
K30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRBY3RpdmVBdHRyaWIoUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykK
K3sKKyAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKworICAgIGludCBtYXhOYW1lTGVuZ3RoID0gLTE7CisgICAgbV9hcGkt
PmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwg
Jm1heE5hbWVMZW5ndGgpOworICAgIGlmIChtYXhOYW1lTGVuZ3RoIDwgMCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgY2hhciogbmFtZSA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2Mo
bWF4TmFtZUxlbmd0aCAqIHNpemVvZihjaGFyKSkpOworICAgIGlmICghbmFtZSkgeworICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGludCBsZW5ndGggPSAwOworICAgIGludCBzaXplID0gLTE7Cisg
ICAgR0xlbnVtIHR5cGUgPSAwOworCisgICAgbV9hcGktPmdsR2V0QWN0aXZlQXR0cmliKHByb2dy
YW0sIGluZGV4LCBtYXhOYW1lTGVuZ3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwor
ICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBmcmVlKG5hbWUpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgaW5mby5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChuYW1lLCBs
ZW5ndGgpOworICAgIGluZm8udHlwZSA9IHR5cGU7CisgICAgaW5mby5zaXplID0gc2l6ZTsKKyAg
ICBmcmVlKG5hbWUpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBH
QzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykKK3sKKyAgICBpZiAoIXByb2dyYW0pIHsK
KyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIGlu
dCBtYXhOYW1lTGVuZ3RoID0gLTE7CisgICAgbV9hcGktPmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0s
IEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhOYW1lTGVuZ3RoKTsKKyAgICBpZiAo
bWF4TmFtZUxlbmd0aCA8IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNoYXIqIG5h
bWUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKG1heE5hbWVMZW5ndGggKiBzaXplb2YoY2hh
cikpKTsKKyAgICBpZiAoIW5hbWUpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbnQgbGVu
Z3RoID0gMDsKKyAgICBpbnQgc2l6ZSA9IC0xOworICAgIEdMZW51bSB0eXBlID0gMDsKKworICAg
IG1fYXBpLT5nbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heE5hbWVMZW5ndGgs
ICZsZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAgaWYgKHNpemUgPCAwKSB7CisgICAg
ICAgIGZyZWUobmFtZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbmZv
Lm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KG5hbWUsIGxlbmd0aCk7CisgICAgaW5mby50eXBlID0g
dHlwZTsKKyAgICBpbmZvLnNpemUgPSBzaXplOworICAgIGZyZWUobmFtZSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0QXR0YWNoZWRT
aGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHNpemVpIG1heENvdW50LCBHQzNE
c2l6ZWkqIGNvdW50LCBQbGF0Zm9ybTNET2JqZWN0KiBzaGFkZXJzKQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBt
YXhDb3VudCwgY291bnQsIHNoYWRlcnMpOworfQorCitpbnQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBj
aGFyKiBuYW1lKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2Fw
aS0+Z2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpnZXRCb29sZWFudihHQzNEZW51bSBwbmFtZSwgR0MzRGJvb2xl
YW4qIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdl
dEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFt
ZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworfQorCitH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpn
ZXRDb250ZXh0QXR0cmlidXRlcygpCit7CisgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKK30KKwor
R0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0RXJyb3IoKQoreworICAgIGlm
IChtX3N5bnRoZXRpY0Vycm9ycy5zaXplKCkgPiAwKSB7CisgICAgICAgIExpc3RIYXNoU2V0PEdD
M0RlbnVtPjo6aXRlcmF0b3IgaXRlciA9IG1fc3ludGhldGljRXJyb3JzLmJlZ2luKCk7CisgICAg
ICAgIEdDM0RlbnVtIGVyciA9ICppdGVyOworICAgICAgICBtX3N5bnRoZXRpY0Vycm9ycy5yZW1v
dmUoaXRlcik7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorCisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbEdldEVycm9yKCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0RmxvYXR2KEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxv
YXQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdl
dEZsb2F0dihwbmFtZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwg
R0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRJbnRlZ2VydihHQzNEZW51bSBw
bmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAg
ICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX0ZSQUdN
RU5UX1VOSUZPUk1fVkVDVE9SUzoKKyAgICAgICAgbV9hcGktPmdsR2V0SW50ZWdlcnYoR0xfTUFY
X0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUywgdmFsdWUpOworICAgICAgICAqdmFsdWUgLz0gNDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX1ZFUlRFWF9V
TklGT1JNX1ZFQ1RPUlM6CisgICAgICAgIG1fYXBpLT5nbEdldEludGVnZXJ2KEdMX01BWF9WRVJU
RVhfVU5JRk9STV9WRUNUT1JTLCB2YWx1ZSk7CisgICAgICAgICp2YWx1ZSAvPSA0OworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkFSWUlOR19WRUNUT1JT
OgorICAgICAgICBtX2FwaS0+Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCB2
YWx1ZSk7CisgICAgICAgICp2YWx1ZSAvPSA0OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBtX2FwaS0+Z2xHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgIH0KK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtLCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0s
IHBuYW1lLCB2YWx1ZSk7Cit9CisKK1N0cmluZyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpn
ZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisKKyAgICBpbnQgbG9nTGVuZ3RoID0gMDsKKyAgICBtX2FwaS0+Z2xH
ZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwg
JmxvZ0xlbmd0aCk7CisgICAgaWYgKCFsb2dMZW5ndGgpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIGNoYXIqIGxvZyA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2MobG9nTGVuZ3Ro
ICogc2l6ZW9mKGNoYXIpKSk7CisgICAgaWYgKCFsb2cpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIGludCByZXR1cm5lZExvZ0xlbmd0aDsKKyAgICBtX2FwaS0+Z2xHZXRQcm9ncmFt
SW5mb0xvZyhwcm9ncmFtLCBsb2dMZW5ndGgsICZyZXR1cm5lZExvZ0xlbmd0aCwgbG9nKTsKKyAg
ICBBU1NFUlQobG9nTGVuZ3RoID09IHJldHVybmVkTG9nTGVuZ3RoICsgMSk7CisKKyAgICBTdHJp
bmcgcmVzID0gU3RyaW5nOjpmcm9tVVRGOChsb2csIHJldHVybmVkTG9nTGVuZ3RoKTsKKyAgICBm
cmVlKGxvZyk7CisgICAgcmV0dXJuIHJlczsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2
YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0U2hhZGVyaXYo
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRTaGFkZXJpdihz
aGFkZXIsIHBuYW1lLCB2YWx1ZSk7Cit9CisKK1N0cmluZyBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworCisgICAgaW50IGxvZ0xlbmd0aCA9IDA7CisgICAgbV9hcGkt
PmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RI
LCAmbG9nTGVuZ3RoKTsKKyAgICBpZiAobG9nTGVuZ3RoIDw9IDEpCisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKworICAgIGNoYXIqIGxvZyA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2MobG9n
TGVuZ3RoICogc2l6ZW9mKGNoYXIpKSk7CisgICAgaWYgKCFsb2cpCisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKworICAgIGludCByZXR1cm5lZExvZ0xlbmd0aDsKKyAgICBtX2FwaS0+Z2xHZXRT
aGFkZXJJbmZvTG9nKHNoYWRlciwgbG9nTGVuZ3RoLCAmcmV0dXJuZWRMb2dMZW5ndGgsIGxvZyk7
CisgICAgQVNTRVJUKGxvZ0xlbmd0aCA9PSByZXR1cm5lZExvZ0xlbmd0aCArIDEpOworCisgICAg
U3RyaW5nIHJlcyA9IFN0cmluZzo6ZnJvbVVURjgobG9nLCByZXR1cm5lZExvZ0xlbmd0aCk7Cisg
ICAgZnJlZShsb2cpOworICAgIHJldHVybiByZXM7Cit9CisKK1N0cmluZyBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpbnQgbG9nTGVuZ3RoID0gMDsKKyAg
ICBtX2FwaS0+Z2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX1NIQURFUl9TT1VSQ0VfTEVOR1RILCAm
bG9nTGVuZ3RoKTsKKyAgICBpZiAobG9nTGVuZ3RoIDw9IDEpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKworICAgIGNoYXIqIGxvZyA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2MobG9nTGVu
Z3RoICogc2l6ZW9mKGNoYXIpKSk7CisgICAgaWYgKCFsb2cpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKworICAgIGludCByZXR1cm5lZExvZ0xlbmd0aDsKKyAgICBtX2FwaS0+Z2xHZXRTaGFk
ZXJTb3VyY2Uoc2hhZGVyLCBsb2dMZW5ndGgsICZyZXR1cm5lZExvZ0xlbmd0aCwgbG9nKTsKKyAg
ICBBU1NFUlQobG9nTGVuZ3RoID09IHJldHVybmVkTG9nTGVuZ3RoICsgMSk7CisKKyAgICBTdHJp
bmcgcmVzID0gU3RyaW5nOjpmcm9tVVRGOChsb2csIHJldHVybmVkTG9nTGVuZ3RoKTsKKyAgICBm
cmVlKGxvZyk7CisgICAgcmV0dXJuIHJlczsKK30KKworU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmdldFN0cmluZyhHQzNEZW51bSBuYW1lKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
bV9hcGktPmdsR2V0U3RyaW5nKG5hbWUpKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Z2V0VGV4UGFyYW1ldGVyZnYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFt
ZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBt
X2FwaS0+Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VGV4UGFyYW1ldGVyaXYoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFt
ZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFVuaWZv
cm1mdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9h
dCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0
VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
R0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgbV9hcGktPmdsR2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1
ZSk7Cit9CisKK0dDM0RpbnQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VW5pZm9ybUxv
Y2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgY2hhciogbmFtZSkKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsR2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sIG5hbWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmdldFZlcnRleEF0dHJpYmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSwgR0Mz
RGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+
Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQzNEdWludCBpbmRleCwg
R0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUp
OworfQorCitHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VmVydGV4
QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSkKK3sKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICB2b2lkKiBwb2ludGVyID0gMDsKKyAgICBtX2FwaS0+Z2xH
ZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcG5hbWUsICZwb2ludGVyKTsKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxHQzNEc2l6ZWlwdHI+KHBvaW50ZXIpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmhpbnQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBt
b2RlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEhpbnQodGFy
Z2V0LCBtb2RlKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
aXNCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbElzQnVmZmVyKGJ1ZmZlcik7Cit9CisKK0dDM0Ri
b29sZWFuIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzRW5hYmxlZChHQzNEZW51bSBjYXAp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbElzRW5h
YmxlZChjYXApOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpp
c0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbElzRnJhbWVidWZmZXIoZnJhbWVi
dWZmZXIpOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppc1By
b2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xJc1Byb2dyYW0ocHJvZ3JhbSk7Cit9CisKK0dDM0Ri
b29sZWFuIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3Jt
M0RPYmplY3QgcmVuZGVyYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IHJldHVybiBtX2FwaS0+Z2xJc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworfQorCitHQzNE
Ym9vbGVhbiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppc1NoYWRlcihQbGF0Zm9ybTNET2Jq
ZWN0IHNoYWRlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9h
cGktPmdsSXNTaGFkZXIoc2hhZGVyKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6aXNUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKK3sKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsSXNUZXh0dXJlKHRleHR1
cmUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmxpbmVXaWR0aChHQzNE
ZmxvYXQgd2lkdGgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmds
TGluZVdpZHRoKHdpZHRoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjps
aW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsTGlua1Byb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGl4ZWxTdG9yZWkoR0MzRGVudW0gcG5hbWUsIEdD
M0RpbnQgcGFyYW0pCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmds
UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpwb2x5Z29uT2Zmc2V0KEdDM0RmbG9hdCBmYWN0b3IsIEdDM0RmbG9hdCB1bml0cykK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xQb2x5Z29uT2Zmc2V0
KGZhY3RvciwgdW5pdHMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJl
YWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCB2b2lkKiBkYXRhKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgbV9hcGktPmdsRmx1c2goKTsKKyAgICBt
X2FwaS0+Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0
YSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cmVuZGVyYnVmZmVyU3Rv
cmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisK
KyAgICBtX2FwaS0+Z2xSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnNh
bXBsZUNvdmVyYWdlKEdDM0RjbGFtcGYgdmFsdWUsIEdDM0Rib29sZWFuIGludmVydCkKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTYW1wbGVDb3ZlcmFnZSh2YWx1
ZSwgaW52ZXJ0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzY2lzc29y
KEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsU2Npc3Nvcih4LCB5
LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpz
aGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIGNvbnN0IGNoYXIqIHN0cmluZykK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBpbnQgbGVuZ3RoID0gc3RyaW5nID8g
c3RybGVuKHN0cmluZykgOiAwOworICAgIG1fYXBpLT5nbFNoYWRlclNvdXJjZShzaGFkZXIsIDEs
ICZzdHJpbmcsICZsZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFN0ZW5jaWxGdW5jKGZ1
bmMsIHJlZiwgbWFzayk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3Rl
bmNpbEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJl
ZiwgR0MzRHVpbnQgbWFzaykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2Fw
aS0+Z2xTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTdGVuY2lsTWFzayht
YXNrKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVuY2lsTWFza1Nl
cGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0R1aW50IG1hc2spCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsU3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVuY2lsT3AoR0MzRGVudW0g
ZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnN0ZW5jaWxPcFNlcGFyYXRlKEdD
M0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFz
cykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTdGVuY2lsT3BT
ZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworfQorCitib29sIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVs
LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25z
dCB2b2lkKiBwaXhlbHMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGkt
PmdsVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4UGFyYW1ldGVyZihHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQgcGFyYW0pCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBw
YXJhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4UGFyYW1ldGVy
aShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFRleFBhcmFtZXRlcmkodGFyZ2V0
LCBwbmFtZSwgcGFyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnRl
eFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZz
ZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBH
QzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK3sKKyAg
ICBtX2FwaS0+Z2xUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMWYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0
IHgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTFm
KGxvY2F0aW9uLCB4KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlm
b3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEZmxvYXQqIHYpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTFmdihsb2Nh
dGlvbiwgc2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5p
Zm9ybTFpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtMWkobG9jYXRpb24sIHgpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0xaXYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRHNpemVpIHNpemUsIEdDM0RpbnQqIHYpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgdik7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTJmKEdDM0RpbnQgbG9jYXRpb24sIEdD
M0RmbG9hdCB4LCBHQzNEZmxvYXQgeSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xVbmlmb3JtMmYobG9jYXRpb24sIHgsIHkpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVp
IHNpemUsIEdDM0RmbG9hdCogdikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBt
X2FwaS0+Z2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCB2KTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMmkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB4
LCBHQzNEaW50IHkpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmds
VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjp1bmlmb3JtMml2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNE
aW50KiB2KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZv
cm0yaXYobG9jYXRpb24sIHNpemUsIHYpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnVuaWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0
IHksIEdDM0RmbG9hdCB6KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbFVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6
ZSwgR0MzRGZsb2F0KiB2KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIHYpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdD
M0RpbnQgeSwgR0MzRGludCB6KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbFVuaWZvcm0zaShsb2NhdGlvbiwgeCwgeSwgeik7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTNpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkg
c2l6ZSwgR0MzRGludCogdikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2Fw
aS0+Z2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCB2KTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjp1bmlmb3JtNGYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgs
IEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgR0MzRGZsb2F0IHcpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtNGZ2KEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEZmxvYXQqIHYpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwg
dik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTRpKEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHosIEdDM0RpbnQgdykK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtNGkobG9j
YXRpb24sIHgsIHksIHosIHcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnVuaWZvcm00aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0RpbnQqIHYp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTRpdihs
b2NhdGlvbiwgc2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
dW5pZm9ybU1hdHJpeDJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGJv
b2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNpemUsIHRy
YW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVu
aWZvcm1NYXRyaXgzZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0Rib29s
ZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFu
c3Bvc2UsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlm
b3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEYm9vbGVh
biB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNw
b3NlLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dXNlUHJv
Z3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZhbGlkYXRl
UHJvZ3JhbShwcm9ncmFtKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2
ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliMWYoaW5kZXgsIHgpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjFmdihHQzNE
dWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCB2YWx1ZXMpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjJmKEdDM0R1aW50IGlu
ZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHkpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliMmYoaW5kZXgsIHgsIHkpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRl
eCwgR0MzRGZsb2F0KiB2YWx1ZXMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCB2YWx1ZXMpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjNmKEdDM0R1aW50IGluZGV4LCBHQzNE
ZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6KQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjNmdihpbmRleCwgdmFsdWVzKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWI0ZihHQzNEdWludCBpbmRl
eCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgR0MzRGZsb2F0IHcpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliNGYo
aW5kZXgsIHgsIHksIHosIHcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliNGZ2KGlu
ZGV4LCB2YWx1ZXMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRl
eEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlw
ZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGludHB0ciBv
ZmZzZXQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpZiAobV9ib3VuZEFy
cmF5QnVmZmVyIDw9IDApCisgICAgICAgIHJldHVybjsKKworICAgIG1fYXBpLT5nbFZlcnRleEF0
dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRl
cnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZpZXdwb3J0KEdDM0RpbnQgeCwgR0Mz
RGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdo
dCk7Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3Jl
YXRlQnVmZmVyKCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBQbGF0Zm9ybTNE
T2JqZWN0IG87CisgICAgbV9hcGktPmdsR2VuQnVmZmVycygxLCAmbyk7CisgICAgcmV0dXJuIG87
Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRl
RnJhbWVidWZmZXIoKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIFBsYXRmb3Jt
M0RPYmplY3QgbyA9IDA7CisgICAgbV9hcGktPmdsR2VuRnJhbWVidWZmZXJzKDEsICZvKTsKKyAg
ICByZXR1cm4gbzsKK30KKworUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBy
ZXR1cm4gbV9hcGktPmdsQ3JlYXRlUHJvZ3JhbSgpOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBvOworICAgIG1fYXBpLT5n
bEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm8pOworICAgIHJldHVybiBvOworfQorCitQbGF0Zm9ybTNE
T2JqZWN0IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSBz
aGFkZXJUeXBlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2Fw
aS0+Z2xDcmVhdGVTaGFkZXIoc2hhZGVyVHlwZSk7Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlVGV4dHVyZSgpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBvOworICAgIG1fYXBpLT5nbEdlblRl
eHR1cmVzKDEsICZvKTsKKyAgICByZXR1cm4gbzsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpkZWxldGVCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRGVsZXRlQnVmZmVycygxLCAmYnVm
ZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxldGVGcmFtZWJ1
ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIG1fYXBpLT5nbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZVByb2dyYW0oUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6ZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVy
YnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERlbGV0
ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6ZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERlbGV0ZVNoYWRlcihzaGFk
ZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZVRleHR1cmUo
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fYXBpLT5nbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpzeW50aGVzaXplR0xFcnJvcihHQzNEZW51bSBlcnJvcikK
K3sKKyAgICBtX3N5bnRoZXRpY0Vycm9ycy5hZGQoZXJyb3IpOworfQorCitFeHRlbnNpb25zM0Qq
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEV4dGVuc2lvbnMoKQoreworICAgIHJldHVy
biAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWZsL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGQ2MjRhYzUx
YWVhZTA4YWY4OGNkMzRhOWE2ZTcxNzQ1OTg3ODI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwu
aApAQCAtMCwwICsxLDIyMyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBTYW1z
dW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBHcmFwaGljc0NvbnRleHQzREludGVybmFsX2gK
KyNkZWZpbmUgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbF9oCisKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgorCisjaW5jbHVkZSA8RXZhc19HTC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwgeworcHVibGljOgorICAgIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKKyAgICB+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bCgpOworCisgICAgYm9vbCBpbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVz
IGF0dHJzLCBIb3N0V2luZG93KiwgYm9vbCByZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KTsK
KworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQz
RCgpIGNvbnN0OworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKKyNlbmRpZgorCisgICAgYm9vbCBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKworICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0Owor
CisgICAgdm9pZCBhY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpOworICAgIHZvaWQgYXR0
YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCBzaGFk
ZXIpOworICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QsIEdDM0R1
aW50IGluZGV4LCBjb25zdCBjaGFyKiBuYW1lKTsKKyAgICB2b2lkIGJpbmRCdWZmZXIoR0MzRGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihH
QzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgYmluZFJlbmRlcmJ1
ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgYmluZFRl
eHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGJsZW5k
Q29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwg
R0MzRGNsYW1wZiBhbHBoYSk7CisgICAgdm9pZCBibGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUp
OworICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDM0RlbnVtIG1vZGVSR0IsIEdDM0Rl
bnVtIG1vZGVBbHBoYSk7CisgICAgdm9pZCBibGVuZEZ1bmMoR0MzRGVudW0gc2ZhY3RvciwgR0Mz
RGVudW0gZGZhY3Rvcik7CisgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBzcmNS
R0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxwaGEsIEdDM0RlbnVtIGRzdEFscGhh
KTsKKworICAgIHZvaWQgYnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciwg
Y29uc3Qgdm9pZCogZGF0YSwgR0MzRGVudW0gdXNhZ2UpOworICAgIHZvaWQgYnVmZmVyU3ViRGF0
YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zmc2V0LCBHQzNEc2l6ZWlwdHIsIGNvbnN0
IHZvaWQqIGRhdGEpOworCisgICAgR0MzRGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNE
ZW51bSB0YXJnZXQpOworICAgIHZvaWQgY2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spOworICAgIHZv
aWQgY2xlYXJDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNsYW1w
ZiBibHVlLCBHQzNEY2xhbXBmIGFscGhhKTsKKyAgICB2b2lkIGNsZWFyRGVwdGgoR0MzRGNsYW1w
ZiBkZXB0aCk7CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0MzRGludCBzKTsKKyAgICB2b2lkIGNv
bG9yTWFzayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29sZWFuIGdyZWVuLCBHQzNEYm9vbGVhbiBi
bHVlLCBHQzNEYm9vbGVhbiBhbHBoYSk7CisgICAgdm9pZCBjb21waWxlU2hhZGVyKFBsYXRmb3Jt
M0RPYmplY3QpOworCisgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEaW50IHgsIEdDM0RpbnQg
eSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlcik7Cisg
ICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKKyAgICB2b2lkIGN1bGxGYWNlKEdD
M0RlbnVtIG1vZGUpOworICAgIHZvaWQgZGVwdGhGdW5jKEdDM0RlbnVtIGZ1bmMpOworICAgIHZv
aWQgZGVwdGhNYXNrKEdDM0Rib29sZWFuIGZsYWcpOworICAgIHZvaWQgZGVwdGhSYW5nZShHQzNE
Y2xhbXBmIHpOZWFyLCBHQzNEY2xhbXBmIHpGYXIpOworICAgIHZvaWQgZGV0YWNoU2hhZGVyKFBs
YXRmb3JtM0RPYmplY3QsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGlzYWJsZShHQzNE
ZW51bSBjYXApOworICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGlu
ZGV4KTsKKyAgICB2b2lkIGRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwg
R0MzRHNpemVpIGNvdW50KTsKKyAgICB2b2lkIGRyYXdFbGVtZW50cyhHQzNEZW51bSBtb2RlLCBH
QzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnRwdHIgb2Zmc2V0KTsKKworICAg
IHZvaWQgZW5hYmxlKEdDM0RlbnVtIGNhcCk7CisgICAgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShHQzNEdWludCBpbmRleCk7CisgICAgdm9pZCBmaW5pc2goKTsKKyAgICB2b2lkIGZsdXNo
KCk7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm0z
RE9iamVjdCk7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwgUGxhdGZvcm0zRE9iamVj
dCwgR0MzRGludCBsZXZlbCk7CisgICAgdm9pZCBmcm9udEZhY2UoR0MzRGVudW0gbW9kZSk7Cisg
ICAgdm9pZCBnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpOworCisgICAgYm9vbCBnZXRB
Y3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgQWN0
aXZlSW5mbyYpOworICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7CisgICAgdm9pZCBnZXRBdHRhY2hl
ZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6ZWkgbWF4Q291bnQsIEdD
M0RzaXplaSogY291bnQsIFBsYXRmb3JtM0RPYmplY3QqIHNoYWRlcnMpOworICAgIEdDM0RpbnQg
Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCwgY29uc3QgY2hhciogbmFtZSk7Cisg
ICAgdm9pZCBnZXRCb29sZWFudihHQzNEZW51bSBwbmFtZSwgR0MzRGJvb2xlYW4qIHZhbHVlKTsK
KyAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0g
cG5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBnZXRDb250ZXh0QXR0cmlidXRlcygpOworICAgIEdDM0RlbnVtIGdldEVycm9yKCk7CisgICAg
dm9pZCBnZXRGbG9hdHYoR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUpOworICAgIHZv
aWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpOworICAg
IHZvaWQgZ2V0SW50ZWdlcnYoR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICB2
b2lkIGdldFByb2dyYW1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RlbnVtIHBuYW1l
LCBHQzNEaW50KiB2YWx1ZSk7CisgICAgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3Jt
M0RPYmplY3QpOworICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIHZvaWQgZ2V0U2hh
ZGVyaXYoUGxhdGZvcm0zRE9iamVjdCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKTsK
KyAgICBTdHJpbmcgZ2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0KTsKKworICAgIFN0
cmluZyBnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgU3RyaW5nIGdldFN0
cmluZyhHQzNEZW51bSBuYW1lKTsKKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KEdDM0RlbnVt
IHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUpOworICAgIHZvaWQgZ2V0
VGV4UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCog
dmFsdWUpOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
R0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRVbmlmb3Jt
aXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiB2
YWx1ZSk7CisgICAgR0MzRGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCwg
Y29uc3QgY2hhciogbmFtZSk7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQzNEdWludCBp
bmRleCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUpOworICAgIHZvaWQgZ2V0VmVy
dGV4QXR0cmliaXYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1
ZSk7CisgICAgR0MzRHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRl
eCwgR0MzRGVudW0gcG5hbWUpOworCisgICAgdm9pZCBoaW50KEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gbW9kZSk7CisgICAgR0MzRGJvb2xlYW4gaXNCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7
CisgICAgR0MzRGJvb2xlYW4gaXNFbmFibGVkKEdDM0RlbnVtIGNhcCk7CisgICAgR0MzRGJvb2xl
YW4gaXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBHQzNEYm9vbGVhbiBpc1By
b2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNSZW5kZXJidWZmZXIo
UGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNTaGFkZXIoUGxhdGZvcm0zRE9i
amVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QpOworICAg
IHZvaWQgbGluZVdpZHRoKEdDM0RmbG9hdCk7CisgICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9y
bTNET2JqZWN0KTsKKyAgICB2b2lkIHBpeGVsU3RvcmVpKEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50
IHBhcmFtKTsKKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0MzRGZsb2F0IGZhY3RvciwgR0MzRGZs
b2F0IHVuaXRzKTsKKworICAgIHZvaWQgcmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0Rl
bnVtIHR5cGUsIHZvaWQqIGRhdGEpOworCisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCk7CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShHQzNEY2xhbXBmIHZh
bHVlLCBHQzNEYm9vbGVhbiBpbnZlcnQpOworICAgIHZvaWQgc2Npc3NvcihHQzNEaW50IHgsIEdD
M0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKKyAgICB2b2lkIHNo
YWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBjaGFyKiBzdHJpbmcpOworICAgIHZv
aWQgc3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2sp
OworICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBm
dW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzayk7CisgICAgdm9pZCBzdGVuY2lsTWFzayhH
QzNEdWludCBtYXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUoR0MzRGVudW0gZmFj
ZSwgR0MzRHVpbnQgbWFzayk7CisgICAgdm9pZCBzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0Mz
RGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKTsKKyAgICB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRl
KEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6
cGFzcyk7CisKKyAgICBib29sIHRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBj
b25zdCB2b2lkKiBwaXhlbHMpOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQzNEZW51bSB0YXJn
ZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQgcGFyYW0pOworICAgIHZvaWQgdGV4UGFyYW1l
dGVyaShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKTsKKyAg
ICB2b2lkIHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNE
aW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVs
cyk7CisKKyAgICB2b2lkIHVuaWZvcm0xZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCk7
CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGZs
b2F0KiB2KTsKKyAgICB2b2lkIHVuaWZvcm0xaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgp
OworICAgIHZvaWQgdW5pZm9ybTFpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWksIEdDM0Rp
bnQqIHYpOworICAgIHZvaWQgdW5pZm9ybTJmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4
LCBmbG9hdCB5KTsKKyAgICB2b2lkIHVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNp
emVpLCBHQzNEZmxvYXQqIHYpOworICAgIHZvaWQgdW5pZm9ybTJpKEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RpbnQgeCwgR0MzRGludCB5KTsKKyAgICB2b2lkIHVuaWZvcm0yaXYoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRHNpemVpLCBHQzNEaW50KiB2KTsKKyAgICB2b2lkIHVuaWZvcm0zZihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6KTsKKyAgICB2
b2lkIHVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEZmxvYXQqIHYp
OworICAgIHZvaWQgdW5pZm9ybTNpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGlu
dCB5LCBHQzNEaW50IHopOworICAgIHZvaWQgdW5pZm9ybTNpdihHQzNEaW50IGxvY2F0aW9uLCBH
QzNEc2l6ZWksIEdDM0RpbnQqIHYpOworICAgIHZvaWQgdW5pZm9ybTRmKEdDM0RpbnQgbG9jYXRp
b24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KTsK
KyAgICB2b2lkIHVuaWZvcm00ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEZmxv
YXQqIHYpOworICAgIHZvaWQgdW5pZm9ybTRpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCwg
R0MzRGludCB5LCBHQzNEaW50IHosIEdDM0RpbnQgdyk7CisgICAgdm9pZCB1bmlmb3JtNGl2KEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGludCogdik7CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4MmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGJvb2xlYW4gdHJhbnNw
b3NlLCBHQzNEZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCog
dmFsdWUpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNE
c2l6ZWksIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSk7CisKKyAgICB2
b2lkIHVzZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCB2YWxpZGF0ZVByb2dy
YW0oUGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmKEdDM0R1aW50
IGluZGV4LCBHQzNEZmxvYXQgeCk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQg
aW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmKEdDM0R1
aW50IGluZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHkpOworICAgIHZvaWQgdmVydGV4QXR0
cmliMmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNE
ZmxvYXQgeik7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0Rm
bG9hdCogdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKEdDM0R1aW50IGluZGV4LCBH
QzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6LCBHQzNEZmxvYXQgdyk7CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKTsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6
ZSwgR0MzRGVudW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGludHB0ciBvZmZzZXQpOworCisg
ICAgdm9pZCB2aWV3cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0KTsKKworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlQnVmZmVyKCk7
CisgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIFBsYXRmb3Jt
M0RPYmplY3QgY3JlYXRlUHJvZ3JhbSgpOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlUmVu
ZGVyYnVmZmVyKCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVTaGFkZXIoR0MzRGVudW0p
OworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlVGV4dHVyZSgpOworCisgICAgdm9pZCBkZWxl
dGVCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcihQ
bGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGRlbGV0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVj
dCk7CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAg
dm9pZCBkZWxldGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBkZWxldGVUZXh0
dXJlKFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQzNE
ZW51bSBlcnJvcik7CisKKyAgICBFeHRlbnNpb25zM0QqIGdldEV4dGVuc2lvbnMoKTsKKworcHJp
dmF0ZToKKyAgICBib29sIGNyZWF0ZVN1cmZhY2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wg
cmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCk7CisKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CisKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fYm91bmRG
Qk87CisgICAgUGxhdGZvcm0zRE9iamVjdCBtX2JvdW5kVGV4dHVyZTsKKyAgICBQbGF0Zm9ybTNE
T2JqZWN0IG1fYm91bmRBcnJheUJ1ZmZlcjsKKworICAgIExpc3RIYXNoU2V0PEdDM0RlbnVtPiBt
X3N5bnRoZXRpY0Vycm9yczsKKworICAgIEV2YXNfR0wqIG1fZXZhc0dMOworICAgIEV2YXNfR0xf
Q29udGV4dCogbV9jb250ZXh0OworICAgIEV2YXNfR0xfU3VyZmFjZSogbV9zdXJmYWNlOworICAg
IEV2YXNfR0xfQVBJKiBtX2FwaTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEdyYXBoaWNzTGF5ZXJFZmxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97769</attachid>
            <date>2011-06-20 02:51:43 -0700</date>
            <delta_ts>2011-06-20 05:09:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62961-20110620185227.patch</filename>
            <type>text/plain</type>
            <size>53979</size>
            <attacher name="Hyowon Kim">hw1008.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkyMjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlN2U2MjdjOWQwNmE5OTYy
MGZkMjQwYjlkZDMyYTI4NDY5MDdlOWQ5Li40MzRlMjk4ZTIyYzA5Mzc2NzkyYTMzOTM2ZmNlN2Ni
MGIwMWRkNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYwIEBACisyMDExLTA2LTIwICBIeW93
b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBBZGQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjI5NjEKKworICAgICAgICBBZGQgdGhlIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWwgY2xhc3MgdXNpbmcgRXZhc19HTCBBUElzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpjcmVhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6bWFrZUNvbnRleHRDdXJyZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzR0xFUzJD
b21wbGlhbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
YWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6YmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZFRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmxlbmRDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpibGVuZEVxdWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJsZW5kRXF1YXRp
b25TZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6YmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2xlYXJDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjbGVhckRlcHRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNsZWFyU3RlbmNpbCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjb2xvck1hc2spOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjb3B5VGV4SW1hZ2Uy
RCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjb3B5VGV4
U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpjdWxsRmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpkZXB0aEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmRlcHRoUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpmaW5pc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Zmx1c2gpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZnJh
bWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6ZnJvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEF0dGFjaGVkU2hhZGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRBdHRyaWJMb2NhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRCb29s
ZWFudik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpnZXRDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpnZXRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0SW50ZWdl
cnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJv
Z3JhbWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omdl
dFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFNoYWRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0U2hhZGVyU291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRUZXhQYXJhbWV0
ZXJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRU
ZXhQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRWZXJ0ZXhBdHRyaWJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aGlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppc0J1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppc0VuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aXNGcmFt
ZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpp
c1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
aXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6aXNTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6aXNUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmxpbmVXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnJlYWRQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzYW1wbGVDb3ZlcmFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzY2lzc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnNoYWRlclNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVuY2lsRnVuYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVuY2lsRnVuY1Nl
cGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnN0
ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6c3RlbmNpbE9wKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4UGFyYW1ldGVyZik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp0ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnRleFN1YkltYWdlMkQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTFmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0xZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTFpKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0xaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTJmKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0yZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTJp
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0y
aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9y
bTNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZv
cm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5p
Zm9ybTNpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVu
aWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
dW5pZm9ybTRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6dW5pZm9ybTRpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliMWYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmli
MWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRl
eEF0dHJpYjJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnZlcnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliNGYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliNGZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmlld3BvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZUZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxldGVQcm9ncmFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZVJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxl
dGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oOiBBZGRlZC4KKwogMjAxMS0wNi0xOSAg
VW5hIFNhYm92aWMgIDx1bmEuc2Fib3ZpY0BwYWxtLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zODk2ODQ4MDliNDY3NjIyYzU0OWI0ZDNiYzcwYzExMDYzY2RhODkyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWwuY3BwCkBAIC0wLDAgKzEsMTEyMiBAQAorLyoKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbC5oIgorCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgorI2luY2x1ZGUgImV3a19wcml2YXRl
LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bCgpCisgICAgOiBtX2JvdW5kRkJPKDApCisgICAgLCBtX2JvdW5kVGV4dHVyZSgwKQorICAgICwg
bV9ib3VuZEFycmF5QnVmZmVyKDApCisgICAgLCBtX2V2YXNHTCgwKQorICAgICwgbV9jb250ZXh0
KDApCisgICAgLCBtX3N1cmZhY2UoMCkKKyAgICAsIG1fYXBpKDApCit7Cit9CisKK0dyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCkKK3sKKyAgICBp
ZiAobV9ldmFzR0wpIHsKKyAgICAgICAgaWYgKG1fc3VyZmFjZSkKKyAgICAgICAgICAgIGV2YXNf
Z2xfc3VyZmFjZV9kZXN0cm95KG1fZXZhc0dMLCBtX3N1cmZhY2UpOworCisgICAgICAgIGlmICht
X2NvbnRleHQpCisgICAgICAgICAgICBldmFzX2dsX2NvbnRleHRfZGVzdHJveShtX2V2YXNHTCwg
bV9jb250ZXh0KTsKKworICAgICAgICBldmFzX2dsX2ZyZWUobV9ldmFzR0wpOworICAgIH0KK30K
KworYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppbml0aWFsaXplKEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sIGJS
ZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KQoreworICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3
ID0gc3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihob3N0V2luZG93LT5wbGF0Zm9ybVBhZ2VDbGll
bnQoKSk7CisKKyAgICBFdmFzKiBldmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQoZXdrVmlldyk7
CisgICAgbV9ldmFzR0wgPSBldmFzX2dsX2NyZWF0ZShldmFzKTsKKyAgICBpZiAoIW1fZXZhc0dM
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2FwaSA9IGV2YXNfZ2xfYXBpX2dldCht
X2V2YXNHTCk7CisgICAgaWYgKCFtX2FwaSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
RXZhc19HTF9Db250ZXh0KiBzaGFyZUNvbnRleHQgPSAwOworCisgICAgaWYgKCFiUmVuZGVyRGly
ZWN0bHlUb0V2YXNHTE9iamVjdCkgeworICAgICAgICAvLyB0byBzaGFyZSByZXNvdXJjZXMgd2l0
aCBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBjb250ZXh0CisgICAgICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBjb21wb3NpdGluZ0NvbnRleHQgPSBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGlu
Z19jb250ZXh0X2dldChld2tWaWV3KTsKKyAgICAgICAgaWYgKGNvbXBvc2l0aW5nQ29udGV4dCkK
KyAgICAgICAgICAgIHNoYXJlQ29udGV4dCA9IHN0YXRpY19jYXN0PEV2YXNfR0xfQ29udGV4dCo+
KGNvbXBvc2l0aW5nQ29udGV4dC0+cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpKTsKKyAgICB9
CisKKyAgICBtX2NvbnRleHQgPSBldmFzX2dsX2NvbnRleHRfY3JlYXRlKG1fZXZhc0dMLCBzaGFy
ZUNvbnRleHQpOworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWNyZWF0ZVN1cmZhY2UoZXdrVmlldywgYlJlbmRlckRpcmVjdGx5VG9FdmFzR0xP
YmplY3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbWFrZUNvbnRleHRD
dXJyZW50KCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlU3Vy
ZmFjZShFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCByZW5kZXJEaXJlY3RseVRvRXZhc0dMT2Jq
ZWN0KQoreworICAgIEV2YXNfR0xfQ29uZmlnIGNvbmZpZyA9IHsKKyAgICAgICAgRVZBU19HTF9S
R0JBXzgsCisgICAgICAgIEVWQVNfR0xfREVQVEhfQklUXzgsCisgICAgICAgIEVWQVNfR0xfU1RF
TkNJTF9OT05FCisgICAgfTsKKworICAgIGludCB4ID0gMCwgeSA9IDAsIHcgPSAwLCBoID0gMDsK
KyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoZXdrVmlldywgJngsICZ5LCAmdywgJmgpOwor
CisgICAgaW50IHN1cmZhY2VXaWR0aCA9IDAsIHN1cmZhY2VIZWlnaHQgPSAwOworICAgIGlmIChy
ZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KSB7CisgICAgICAgIC8vIHNhbWUgc2l6ZSBhcyBv
dXIgaG9zdHdpbmRvdworICAgICAgICBzdXJmYWNlV2lkdGggPSB3OworICAgICAgICBzdXJmYWNl
SGVpZ2h0ID0gaDsKKyAgICB9IGVsc2UKKyAgICAgICAgc3VyZmFjZVdpZHRoID0gc3VyZmFjZUhl
aWdodCA9IDE7CisKKyAgICBtX3N1cmZhY2UgPSBldmFzX2dsX3N1cmZhY2VfY3JlYXRlKG1fZXZh
c0dMLCAmY29uZmlnLCBzdXJmYWNlV2lkdGgsIHN1cmZhY2VIZWlnaHQpOworICAgIGlmICghbV9z
dXJmYWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAocmVuZGVyRGlyZWN0bHlU
b0V2YXNHTE9iamVjdCkgeworICAgICAgICBFdmFzX05hdGl2ZV9TdXJmYWNlIG5hdGl2ZVN1cmZh
Y2U7CisgICAgICAgIGV2YXNfZ2xfbmF0aXZlX3N1cmZhY2VfZ2V0KG1fZXZhc0dMLCBtX3N1cmZh
Y2UsICZuYXRpdmVTdXJmYWNlKTsKKworICAgICAgICBld2tfdmlld19ldmFzX2dsX29iamVjdF9j
cmVhdGUoZXdrVmlldywgJm5hdGl2ZVN1cmZhY2UsIHgsIHksIHcsIGgpOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb250ZXh0OworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Om1h
a2VDb250ZXh0Q3VycmVudCgpCit7CisgICAgcmV0dXJuIChldmFzX2dsX21ha2VfY3VycmVudCht
X2V2YXNHTCwgbV9zdXJmYWNlLCBtX2NvbnRleHQpID09IEVJTkFfVFJVRSk7Cit9CisKK2Jvb2wg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YWN0
aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbEFjdGl2ZVRleHR1cmUodGV4dHVyZSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSwgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQmluZEF0dHJpYkxvY2F0aW9uKHBy
b2dyYW0sIGluZGV4LCBuYW1lKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQmluZEJ1ZmZlcih0YXJn
ZXQsIGJ1ZmZlcik7CisKKyAgICBpZiAodGFyZ2V0ID09IEdMX0FSUkFZX0JVRkZFUikKKyAgICAg
ICAgbV9ib3VuZEFycmF5QnVmZmVyID0gYnVmZmVyOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmJpbmRGcmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RP
YmplY3QgZnJhbWVidWZmZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBp
ZiAoZnJhbWVidWZmZXIgIT0gbV9ib3VuZEZCTykgeworICAgICAgICBtX2FwaS0+Z2xCaW5kRnJh
bWVidWZmZXIodGFyZ2V0LCBmcmFtZWJ1ZmZlcik7CisgICAgICAgIG1fYm91bmRGQk8gPSBmcmFt
ZWJ1ZmZlcjsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Ymlu
ZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJpbmRSZW5kZXJidWZm
ZXIodGFyZ2V0LCBidWZmZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJpbmRUZXh0dXJlKHRh
cmdldCwgdGV4dHVyZSk7CisgICAgbV9ib3VuZFRleHR1cmUgPSB0ZXh0dXJlOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJsZW5kQ29sb3IoR0MzRGNsYW1wZiByZWQsIEdD
M0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSkKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xCbGVuZENvbG9yKHJlZCwgZ3Jl
ZW4sIGJsdWUsIGFscGhhKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpi
bGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsQmxlbmRFcXVhdGlvbihtb2RlKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0MzRGVudW0gbW9kZVJHQiwg
R0MzRGVudW0gbW9kZUFscGhhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbEJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJsZW5kRnVuYyhHQzNEZW51bSBzZmFjdG9y
LCBHQzNEZW51bSBkZmFjdG9yKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbEJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpibGVuZEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBzcmNSR0IsIEdDM0Rl
bnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxwaGEsIEdDM0RlbnVtIGRzdEFscGhhKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJsZW5kRnVuY1NlcGFyYXRlKHNy
Y1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIg
c2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0MzRGVudW0gdXNhZ2UpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRhdGEs
IHVzYWdlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpidWZmZXJTdWJE
YXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0RzaXplaXB0ciBzaXpl
LCBjb25zdCB2b2lkKiBkYXRhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOworfQorCitH
QzNEZW51bSBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KEdDM0RlbnVtIHRhcmdldCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1
cm4gbV9hcGktPmdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbENsZWFyKG1hc2spOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNsZWFyQ29sb3IoR0MzRGNsYW1wZiByZWQs
IEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDbGVhckNvbG9yKHJlZCwg
Z3JlZW4sIGJsdWUsIGFscGhhKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsQ2xlYXJEZXB0aGYoZGVwdGgpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmNsZWFyU3RlbmNpbChHQzNEaW50IHMpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQ2xlYXJTdGVuY2lsKHMpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNvbG9yTWFzayhHQzNEYm9vbGVhbiByZWQsIEdD
M0Rib29sZWFuIGdyZWVuLCBHQzNEYm9vbGVhbiBibHVlLCBHQzNEYm9vbGVhbiBhbHBoYSkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDb2xvck1hc2socmVkLCBn
cmVlbiwgYmx1ZSwgYWxwaGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwg
R0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9y
ZGVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbENvcHlUZXhJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNvcHlUZXhT
dWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0
LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgs
IEdDM0RzaXplaSBoZWlnaHQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsQ29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
eCwgeSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6Y3VsbEZhY2UoR0MzRGVudW0gbW9kZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xDdWxsRmFjZShtb2RlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpkZXB0aEZ1bmMoR0MzRGVudW0gZnVuYykKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZXB0aEZ1bmMoZnVuYyk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6ZGVwdGhNYXNrKEdDM0Rib29sZWFuIGZsYWcpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRGVwdGhNYXNrKGZsYWcpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlcHRoUmFuZ2UoR0MzRGNsYW1wZiB6
TmVhciwgR0MzRGNsYW1wZiB6RmFyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbERlcHRoUmFuZ2VmKHpOZWFyLCB6RmFyKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpkZXRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQ
bGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xEZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKK3sKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEaXNhYmxlKGNhcCk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1
aW50IGluZGV4KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6ZHJhd0FycmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNE
c2l6ZWkgY291bnQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmds
RHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmRyYXdFbGVtZW50cyhHQzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQs
IEdDM0RlbnVtIHR5cGUsIEdDM0RpbnRwdHIgb2Zmc2V0KQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIG1fYXBpLT5nbERyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgcmVp
bnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmVuYWJsZShHQzNEZW51bSBjYXAp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRW5hYmxlKGNhcCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoR0MzRHVpbnQgaW5kZXgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OmZpbmlzaCgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsRmluaXNoKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Zmx1c2goKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbEZsdXNoKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBH
QzNEZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVy
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCByZW5k
ZXJidWZmZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVu
dW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0RpbnQgbGV2ZWwpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRnJhbWVidWZmZXJUZXh0
dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpmcm9udEZhY2UoR0MzRGVudW0gbW9k
ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xGcm9udEZhY2Uo
bW9kZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2VuZXJhdGVNaXBt
YXAoR0MzRGVudW0gdGFyZ2V0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbEdlbmVyYXRlTWlwbWFwKHRhcmdldCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0Mz
RHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCit7CisgICAgaWYgKCFwcm9ncmFtKSB7Cisg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpbnQg
bWF4TmFtZUxlbmd0aCA9IC0xOworICAgIG1fYXBpLT5nbEdldFByb2dyYW1pdihwcm9ncmFtLCBH
TF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZtYXhOYW1lTGVuZ3RoKTsKKyAgICBpZiAo
bWF4TmFtZUxlbmd0aCA8IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNoYXIqIG5h
bWUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKG1heE5hbWVMZW5ndGggKiBzaXplb2YoY2hh
cikpKTsKKyAgICBpZiAoIW5hbWUpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbnQgbGVu
Z3RoID0gMDsKKyAgICBpbnQgc2l6ZSA9IC0xOworICAgIEdMZW51bSB0eXBlID0gMDsKKworICAg
IG1fYXBpLT5nbEdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4TmFtZUxlbmd0aCwg
Jmxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAg
ICAgZnJlZShuYW1lKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGluZm8u
bmFtZSA9IFN0cmluZzo6ZnJvbVVURjgobmFtZSwgbGVuZ3RoKTsKKyAgICBpbmZvLnR5cGUgPSB0
eXBlOworICAgIGluZm8uc2l6ZSA9IHNpemU7CisgICAgZnJlZShuYW1lKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRBY3RpdmVVbmlm
b3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8m
IGluZm8pCit7CisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpbnQgbWF4TmFtZUxlbmd0aCA9IC0xOworICAg
IG1fYXBpLT5nbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVO
R1RILCAmbWF4TmFtZUxlbmd0aCk7CisgICAgaWYgKG1heE5hbWVMZW5ndGggPCAwKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBjaGFyKiBuYW1lID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1h
bGxvYyhtYXhOYW1lTGVuZ3RoICogc2l6ZW9mKGNoYXIpKSk7CisgICAgaWYgKCFuYW1lKSB7Cisg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaW50IGxlbmd0aCA9IDA7CisgICAgaW50IHNpemUgPSAt
MTsKKyAgICBHTGVudW0gdHlwZSA9IDA7CisKKyAgICBtX2FwaS0+Z2xHZXRBY3RpdmVVbmlmb3Jt
KHByb2dyYW0sIGluZGV4LCBtYXhOYW1lTGVuZ3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5h
bWUpOworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBmcmVlKG5hbWUpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaW5mby5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChu
YW1lLCBsZW5ndGgpOworICAgIGluZm8udHlwZSA9IHR5cGU7CisgICAgaW5mby5zaXplID0gc2l6
ZTsKKyAgICBmcmVlKG5hbWUpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIEdDM0RzaXplaSBtYXhDb3VudCwgR0MzRHNpemVpKiBjb3VudCwgUGxhdGZvcm0zRE9i
amVjdCogc2hhZGVycykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+
Z2xHZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBzaGFkZXJzKTsK
K30KKworaW50IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEF0dHJpYkxvY2F0aW9uKFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsR2V0QXR0cmliTG9jYXRpb24ocHJv
Z3JhbSwgbmFtZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0Qm9v
bGVhbnYoR0MzRGVudW0gcG5hbWUsIEdDM0Rib29sZWFuKiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEJ1ZmZlclBhcmFtZXRlcml2
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldEJ1ZmZlclBhcmFtZXRlcml2
KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKK30KKworR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQorewor
ICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7Cit9CisKK0dDM0RlbnVtIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmdldEVycm9yKCkKK3sKKyAgICBpZiAobV9zeW50aGV0aWNFcnJvcnMuc2l6ZSgp
ID4gMCkgeworICAgICAgICBMaXN0SGFzaFNldDxHQzNEZW51bT46Oml0ZXJhdG9yIGl0ZXIgPSBt
X3N5bnRoZXRpY0Vycm9ycy5iZWdpbigpOworICAgICAgICBHQzNEZW51bSBlcnIgPSAqaXRlcjsK
KyAgICAgICAgbV9zeW50aGV0aWNFcnJvcnMucmVtb3ZlKGl0ZXIpOworICAgICAgICByZXR1cm4g
ZXJyOworICAgIH0KKworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2Fw
aS0+Z2xHZXRFcnJvcigpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omdl
dEZsb2F0dihHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0Rl
bnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQs
IGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlM6CisgICAg
ICAgIG1fYXBpLT5nbEdldEludGVnZXJ2KEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMs
IHZhbHVlKTsKKyAgICAgICAgKnZhbHVlIC89IDQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOgorICAgICAgICBt
X2FwaS0+Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUywgdmFsdWUp
OworICAgICAgICAqdmFsdWUgLz0gNDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6TUFYX1ZBUllJTkdfVkVDVE9SUzoKKyAgICAgICAgbV9hcGktPmdsR2V0SW50
ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywgdmFsdWUpOworICAgICAgICAqdmFsdWUgLz0g
NDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbV9hcGktPmdsR2V0SW50
ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVudW0g
cG5hbWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbEdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgdmFsdWUpOworfQorCitTdHJp
bmcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgaW50
IGxvZ0xlbmd0aCA9IDA7CisgICAgbV9hcGktPmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBo
aWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZsb2dMZW5ndGgpOworICAgIGlmICghbG9n
TGVuZ3RoKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBjaGFyKiBsb2cgPSBzdGF0
aWNfY2FzdDxjaGFyKj4obWFsbG9jKGxvZ0xlbmd0aCAqIHNpemVvZihjaGFyKSkpOworICAgIGlm
ICghbG9nKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpbnQgcmV0dXJuZWRMb2dM
ZW5ndGg7CisgICAgbV9hcGktPmdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbG9nTGVuZ3Ro
LCAmcmV0dXJuZWRMb2dMZW5ndGgsIGxvZyk7CisgICAgQVNTRVJUKGxvZ0xlbmd0aCA9PSByZXR1
cm5lZExvZ0xlbmd0aCArIDEpOworCisgICAgU3RyaW5nIHJlcyA9IFN0cmluZzo6ZnJvbVVURjgo
bG9nLCByZXR1cm5lZExvZ0xlbmd0aCk7CisgICAgZnJlZShsb2cpOworICAgIHJldHVybiByZXM7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBH
QzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgdmFsdWUpOworfQor
CitTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0
Zm9ybTNET2JqZWN0IHNoYWRlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAg
IGludCBsb2dMZW5ndGggPSAwOworICAgIG1fYXBpLT5nbEdldFNoYWRlcml2KHNoYWRlciwgR3Jh
cGhpY3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxvZ0xlbmd0aCk7CisgICAgaWYgKGxv
Z0xlbmd0aCA8PSAxKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBjaGFyKiBsb2cg
PSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKGxvZ0xlbmd0aCAqIHNpemVvZihjaGFyKSkpOwor
ICAgIGlmICghbG9nKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpbnQgcmV0dXJu
ZWRMb2dMZW5ndGg7CisgICAgbV9hcGktPmdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxvZ0xl
bmd0aCwgJnJldHVybmVkTG9nTGVuZ3RoLCBsb2cpOworICAgIEFTU0VSVChsb2dMZW5ndGggPT0g
cmV0dXJuZWRMb2dMZW5ndGggKyAxKTsKKworICAgIFN0cmluZyByZXMgPSBTdHJpbmc6OmZyb21V
VEY4KGxvZywgcmV0dXJuZWRMb2dMZW5ndGgpOworICAgIGZyZWUobG9nKTsKKyAgICByZXR1cm4g
cmVzOworfQorCitTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0U2hhZGVyU291
cmNlKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworCisgICAgaW50IGxvZ0xlbmd0aCA9IDA7CisgICAgbV9hcGktPmdsR2V0U2hhZGVyaXYoc2hh
ZGVyLCBHTF9TSEFERVJfU09VUkNFX0xFTkdUSCwgJmxvZ0xlbmd0aCk7CisgICAgaWYgKGxvZ0xl
bmd0aCA8PSAxKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBjaGFyKiBsb2cgPSBz
dGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKGxvZ0xlbmd0aCAqIHNpemVvZihjaGFyKSkpOworICAg
IGlmICghbG9nKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpbnQgcmV0dXJuZWRM
b2dMZW5ndGg7CisgICAgbV9hcGktPmdsR2V0U2hhZGVyU291cmNlKHNoYWRlciwgbG9nTGVuZ3Ro
LCAmcmV0dXJuZWRMb2dMZW5ndGgsIGxvZyk7CisgICAgQVNTRVJUKGxvZ0xlbmd0aCA9PSByZXR1
cm5lZExvZ0xlbmd0aCArIDEpOworCisgICAgU3RyaW5nIHJlcyA9IFN0cmluZzo6ZnJvbVVURjgo
bG9nLCByZXR1cm5lZExvZ0xlbmd0aCk7CisgICAgZnJlZShsb2cpOworICAgIHJldHVybiByZXM7
Cit9CisKK1N0cmluZyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRTdHJpbmcoR0MzRGVu
dW0gbmFtZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gU3RyaW5n
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1fYXBpLT5nbEdldFN0cmluZyhuYW1lKSkp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFRleFBhcmFtZXRlcmZ2
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0VGV4UGFyYW1ldGVyZnYo
dGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmdldFRleFBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdD
M0RpbnQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5n
bEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlv
biwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFVuaWZv
cm1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQq
IHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldFVu
aWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworfQorCitHQzNEaW50IEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgcmV0dXJuIG1fYXBpLT5nbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQzNE
dWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgs
IHBuYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0
VmVydGV4QXR0cmliaXYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2
YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRWZXJ0
ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKK30KKworR0MzRHNpemVpcHRyIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRl
eCwgR0MzRGVudW0gcG5hbWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgdm9p
ZCogcG9pbnRlciA9IDA7CisgICAgbV9hcGktPmdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5k
ZXgsIHBuYW1lLCAmcG9pbnRlcik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R0MzRHNp
emVpcHRyPihwb2ludGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpo
aW50KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gbW9kZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xIaW50KHRhcmdldCwgbW9kZSk7Cit9CisKK0dDM0Rib29s
ZWFuIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzQnVmZmVyKFBsYXRmb3JtM0RPYmplY3Qg
YnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2FwaS0+
Z2xJc0J1ZmZlcihidWZmZXIpOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjppc0VuYWJsZWQoR0MzRGVudW0gY2FwKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xJc0VuYWJsZWQoY2FwKTsKK30KKworR0MzRGJvb2xl
YW4gR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2Jq
ZWN0IGZyYW1lYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVy
biBtX2FwaS0+Z2xJc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKK30KKworR0MzRGJvb2xlYW4g
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmds
SXNQcm9ncmFtKHByb2dyYW0pOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsSXNSZW5kZXJi
dWZmZXIocmVuZGVyYnVmZmVyKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6aXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbElzU2hhZGVyKHNoYWRlcik7Cit9
CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzVGV4dHVyZShQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
cmV0dXJuIG1fYXBpLT5nbElzVGV4dHVyZSh0ZXh0dXJlKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpsaW5lV2lkdGgoR0MzRGZsb2F0IHdpZHRoKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbExpbmVXaWR0aCh3aWR0aCk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6bGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbExp
bmtQcm9ncmFtKHByb2dyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnBpeGVsU3RvcmVpKEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cG9seWdvbk9mZnNldChHQzNE
ZmxvYXQgZmFjdG9yLCBHQzNEZmxvYXQgdW5pdHMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsUG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGlu
dCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwg
R0MzRGVudW0gdHlwZSwgdm9pZCogZGF0YSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KworICAgIG1fYXBpLT5nbEZsdXNoKCk7CisgICAgbV9hcGktPmdsUmVhZFBpeGVscyh4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgbV9hcGktPmdsUmVuZGVyYnVmZmVy
U3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzYW1wbGVDb3ZlcmFnZShHQzNEY2xhbXBmIHZh
bHVlLCBHQzNEYm9vbGVhbiBpbnZlcnQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9hcGktPmdsU2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c2Npc3NvcihHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbFNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmpl
Y3Qgc2hhZGVyLCBjb25zdCBjaGFyKiBzdHJpbmcpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgaW50IGxlbmd0aCA9IHN0cmluZyA/IHN0cmxlbihzdHJpbmcpIDogMDsKKyAgICBt
X2FwaS0+Z2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCAxLCAmc3RyaW5nLCAmbGVuZ3RoKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5j
LCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBtX2FwaS0+Z2xTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0MzRGVudW0g
ZmFjZSwgR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsU3RlbmNpbEZ1bmNTZXBhcmF0ZShm
YWNlLCBmdW5jLCByZWYsIG1hc2spOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OnN0ZW5jaWxNYXNrKEdDM0R1aW50IG1hc2spCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsU3RlbmNpbE1hc2sobWFzayk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNE
dWludCBtYXNrKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFN0
ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNE
ZW51bSB6cGFzcykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xT
dGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpzdGVuY2lsT3BTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBmYWls
LCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgbV9hcGktPmdsU3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWws
IHpwYXNzKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp0ZXhJbWFnZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0Rl
bnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFRleEltYWdlMkQodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnRleFBhcmFtZXRlcmYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0Mz
RGZsb2F0IHBhcmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5n
bFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnRleFBhcmFtZXRlcmkoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51
bSBwbmFtZSwgR0MzRGludCBwYXJhbSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0
eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCit7CisgICAgbV9hcGktPmdsVGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIHBpeGVscyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9y
bTFmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4KQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm0xZihsb2NhdGlvbiwgeCk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTFmdihHQzNEaW50IGxvY2F0aW9uLCBH
QzNEc2l6ZWkgc2l6ZSwgR0MzRGZsb2F0KiB2KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbFVuaWZvcm0xZnYobG9jYXRpb24sIHNpemUsIHYpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0xaShHQzNEaW50IGxvY2F0aW9uLCBH
QzNEaW50IHgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5p
Zm9ybTFpKGxvY2F0aW9uLCB4KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
Ojp1bmlmb3JtMWl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEaW50KiB2
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm0xaXYo
bG9jYXRpb24sIHNpemUsIHYpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnVuaWZvcm0yZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHkpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTJmKGxvY2F0
aW9uLCB4LCB5KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3Jt
MmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEZmxvYXQqIHYpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTJmdihsb2NhdGlv
biwgc2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9y
bTJpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5KQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTJpdihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGludCogdikKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCB2KTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtM2YoR0MzRGludCBs
b2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeikKK3sKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtM2YobG9jYXRpb24sIHgs
IHksIHopOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0zZnYo
R0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0RmbG9hdCogdikKK3sKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtM2Z2KGxvY2F0aW9uLCBz
aXplLCB2KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtM2ko
R0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RpbnQgeikKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtM2kobG9jYXRpb24s
IHgsIHksIHopOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0z
aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0RpbnQqIHYpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTNpdihsb2NhdGlvbiwg
c2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTRm
KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHos
IEdDM0RmbG9hdCB3KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5n
bFVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwgdyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6
ZSwgR0MzRGZsb2F0KiB2KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbFVuaWZvcm00ZnYobG9jYXRpb24sIHNpemUsIHYpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnVuaWZvcm00aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdD
M0RpbnQgeSwgR0MzRGludCB6LCBHQzNEaW50IHcpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtNGl2KEdDM0RpbnQgbG9jYXRp
b24sIEdDM0RzaXplaSBzaXplLCBHQzNEaW50KiB2KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm00aXYobG9jYXRpb24sIHNpemUsIHYpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm1NYXRyaXgyZnYoR0MzRGludCBs
b2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0
KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlm
b3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIHZhbHVlKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9j
YXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCog
dmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9y
bU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCB2YWx1ZSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybU1hdHJpeDRmdihHQzNEaW50IGxvY2F0
aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZh
bHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm1N
YXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVzZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVzZVByb2dy
YW0ocHJvZ3JhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmFsaWRh
dGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xWYWxpZGF0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliMWYoR0MzRHVpbnQgaW5k
ZXgsIEdDM0RmbG9hdCB4KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbFZlcnRleEF0dHJpYjFmKGluZGV4LCB4KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjp2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFs
dWVzKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0
dHJpYjFmdihpbmRleCwgdmFsdWVzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9h
dCB5KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0
dHJpYjJmKGluZGV4LCB4LCB5KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
Ojp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjJmdihp
bmRleCwgdmFsdWVzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0
ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNE
ZmxvYXQgeikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xWZXJ0
ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6dmVydGV4QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVl
cykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xWZXJ0ZXhBdHRy
aWIzZnYoaW5kZXgsIHZhbHVlcyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6dmVydGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQg
eSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQg
aW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjRmdihpbmRleCwgdmFsdWVzKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGlu
ZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQs
IEdDM0RzaXplaSBzdHJpZGUsIEdDM0RpbnRwdHIgb2Zmc2V0KQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworCisgICAgaWYgKG1fYm91bmRBcnJheUJ1ZmZlciA8PSAwKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2FwaS0+Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0
eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjp2aWV3cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbFZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworfQorCitQbGF0Zm9ybTNET2JqZWN0
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZUJ1ZmZlcigpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBvOworICAgIG1fYXBpLT5nbEdl
bkJ1ZmZlcnMoMSwgJm8pOworICAgIHJldHVybiBvOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKK3sKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG8gPSAwOworICAgIG1fYXBp
LT5nbEdlbkZyYW1lYnVmZmVycygxLCAmbyk7CisgICAgcmV0dXJuIG87Cit9CisKK1BsYXRmb3Jt
M0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlUHJvZ3JhbSgpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbENyZWF0ZVByb2dy
YW0oKTsKK30KKworUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpj
cmVhdGVSZW5kZXJidWZmZXIoKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIFBs
YXRmb3JtM0RPYmplY3QgbzsKKyAgICBtX2FwaS0+Z2xHZW5SZW5kZXJidWZmZXJzKDEsICZvKTsK
KyAgICByZXR1cm4gbzsKK30KKworUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpjcmVhdGVTaGFkZXIoR0MzRGVudW0gc2hhZGVyVHlwZSkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsQ3JlYXRlU2hhZGVyKHNoYWRlclR5
cGUpOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNy
ZWF0ZVRleHR1cmUoKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIFBsYXRmb3Jt
M0RPYmplY3QgbzsKKyAgICBtX2FwaS0+Z2xHZW5UZXh0dXJlcygxLCAmbyk7CisgICAgcmV0dXJu
IG87Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZGVsZXRlQnVmZmVyKFBs
YXRmb3JtM0RPYmplY3QgYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbERlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6ZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFt
ZWJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZWxl
dGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZWxldGVQcm9ncmFtKHBy
b2dyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZVJlbmRl
cmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZyZW5kZXJi
dWZmZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZVNoYWRl
cihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpkZWxldGVUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZWxldGVUZXh0dXJl
cygxLCAmdGV4dHVyZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3lu
dGhlc2l6ZUdMRXJyb3IoR0MzRGVudW0gZXJyb3IpCit7CisgICAgbV9zeW50aGV0aWNFcnJvcnMu
YWRkKGVycm9yKTsKK30KKworRXh0ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpnZXRFeHRlbnNpb25zKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRElu
dGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhkNjI0YWM1MWFlYWUwOGFmODhjZDM0YTlhNmU3MTc0NTk4
NzgyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VmbC9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgKQEAgLTAsMCArMSwyMjMgQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5k
ZWYgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbF9oCisjZGVmaW5lIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWxfaAorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKworI2luY2x1ZGUg
PEV2YXNfR0wuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsIHsKK3B1YmxpYzoKKyAgICBHcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7
CisgICAgfkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKKworICAgIGJvb2wgaW5pdGlhbGl6
ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyosIGJvb2wg
cmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCk7CisKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dDNEIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdDsKKworI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3Q7CisjZW5kaWYKKworICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBi
b29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdDsKKworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShH
QzNEZW51bSB0ZXh0dXJlKTsKKyAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKTsKKyAgICB2b2lkIGJpbmRBdHRyaWJM
b2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0LCBHQzNEdWludCBpbmRleCwgY29uc3QgY2hhciogbmFt
ZSk7CisgICAgdm9pZCBiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVj
dCk7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNE
T2JqZWN0KTsKKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0
Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgUGxh
dGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBibGVuZENvbG9yKEdDM0RjbGFtcGYgcmVkLCBHQzNE
Y2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEpOworICAgIHZv
aWQgYmxlbmRFcXVhdGlvbihHQzNEZW51bSBtb2RlKTsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb25T
ZXBhcmF0ZShHQzNEZW51bSBtb2RlUkdCLCBHQzNEZW51bSBtb2RlQWxwaGEpOworICAgIHZvaWQg
YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0b3IsIEdDM0RlbnVtIGRmYWN0b3IpOworICAgIHZvaWQg
YmxlbmRGdW5jU2VwYXJhdGUoR0MzRGVudW0gc3JjUkdCLCBHQzNEZW51bSBkc3RSR0IsIEdDM0Rl
bnVtIHNyY0FscGhhLCBHQzNEZW51bSBkc3RBbHBoYSk7CisKKyAgICB2b2lkIGJ1ZmZlckRhdGEo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIsIGNvbnN0IHZvaWQqIGRhdGEsIEdDM0RlbnVt
IHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
cHRyIG9mZnNldCwgR0MzRHNpemVpcHRyLCBjb25zdCB2b2lkKiBkYXRhKTsKKworICAgIEdDM0Rl
bnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KTsKKyAgICB2b2lkIGNs
ZWFyKEdDM0RiaXRmaWVsZCBtYXNrKTsKKyAgICB2b2lkIGNsZWFyQ29sb3IoR0MzRGNsYW1wZiBy
ZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSk7
CisgICAgdm9pZCBjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpOworICAgIHZvaWQgY2xlYXJT
dGVuY2lsKEdDM0RpbnQgcyk7CisgICAgdm9pZCBjb2xvck1hc2soR0MzRGJvb2xlYW4gcmVkLCBH
QzNEYm9vbGVhbiBncmVlbiwgR0MzRGJvb2xlYW4gYmx1ZSwgR0MzRGJvb2xlYW4gYWxwaGEpOwor
ICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0KTsKKworICAgIHZvaWQgY29w
eVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpOworICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQg
eW9mZnNldCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCk7CisgICAgdm9pZCBjdWxsRmFjZShHQzNEZW51bSBtb2RlKTsKKyAgICB2b2lkIGRl
cHRoRnVuYyhHQzNEZW51bSBmdW5jKTsKKyAgICB2b2lkIGRlcHRoTWFzayhHQzNEYm9vbGVhbiBm
bGFnKTsKKyAgICB2b2lkIGRlcHRoUmFuZ2UoR0MzRGNsYW1wZiB6TmVhciwgR0MzRGNsYW1wZiB6
RmFyKTsKKyAgICB2b2lkIGRldGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0LCBQbGF0Zm9ybTNE
T2JqZWN0KTsKKyAgICB2b2lkIGRpc2FibGUoR0MzRGVudW0gY2FwKTsKKyAgICB2b2lkIGRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCk7CisgICAgdm9pZCBkcmF3QXJyYXlz
KEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCk7CisgICAgdm9p
ZCBkcmF3RWxlbWVudHMoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0
eXBlLCBHQzNEaW50cHRyIG9mZnNldCk7CisKKyAgICB2b2lkIGVuYWJsZShHQzNEZW51bSBjYXAp
OworICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpOworICAg
IHZvaWQgZmluaXNoKCk7CisgICAgdm9pZCBmbHVzaCgpOworICAgIHZvaWQgZnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51
bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZnJhbWVi
dWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNE
ZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RpbnQgbGV2ZWwpOworICAgIHZv
aWQgZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpOworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAoR0Mz
RGVudW0gdGFyZ2V0KTsKKworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKKyAgICBib29sIGdldEFj
dGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgQWN0
aXZlSW5mbyYpOworICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgR0MzRHNpemVpIG1heENvdW50LCBHQzNEc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybTNE
T2JqZWN0KiBzaGFkZXJzKTsKKyAgICBHQzNEaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3Jt
M0RPYmplY3QsIGNvbnN0IGNoYXIqIG5hbWUpOworICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0MzRGVu
dW0gcG5hbWUsIEdDM0Rib29sZWFuKiB2YWx1ZSk7CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0
ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsK
KyAgICBHQzNEZW51bSBnZXRFcnJvcigpOworICAgIHZvaWQgZ2V0RmxvYXR2KEdDM0RlbnVtIHBu
YW1lLCBHQzNEZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVu
dW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICB2b2lkIGdldEludGVnZXJ2KEdDM0RlbnVt
IHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRQcm9ncmFtaXYoUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtLCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIFN0
cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdD
M0RpbnQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3QsIEdD
M0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAgU3RyaW5nIGdldFNoYWRlckluZm9M
b2coUGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRm
b3JtM0RPYmplY3QpOworICAgIFN0cmluZyBnZXRTdHJpbmcoR0MzRGVudW0gbmFtZSk7CisgICAg
dm9pZCBnZXRUZXhQYXJhbWV0ZXJmdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBH
QzNEZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2KEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFVuaWZv
cm1mdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9h
dCogdmFsdWUpOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogdmFsdWUpOworICAgIEdDM0RpbnQgZ2V0VW5p
Zm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QsIGNvbnN0IGNoYXIqIG5hbWUpOworICAgIHZv
aWQgZ2V0VmVydGV4QXR0cmliZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lLCBHQzNE
ZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDM0R1aW50IGluZGV4
LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIEdDM0RzaXplaXB0ciBnZXRW
ZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lKTsKKworICAg
IHZvaWQgaGludChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIG1vZGUpOworICAgIEdDM0Rib29s
ZWFuIGlzQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIEdDM0Rib29sZWFuIGlzRW5hYmxl
ZChHQzNEZW51bSBjYXApOworICAgIEdDM0Rib29sZWFuIGlzRnJhbWVidWZmZXIoUGxhdGZvcm0z
RE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOwor
ICAgIEdDM0Rib29sZWFuIGlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIEdD
M0Rib29sZWFuIGlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIEdDM0Rib29sZWFuIGlz
VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGxpbmVXaWR0aChHQzNEZmxvYXQp
OworICAgIHZvaWQgbGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBwaXhl
bFN0b3JlaShHQzNEZW51bSBwbmFtZSwgR0MzRGludCBwYXJhbSk7CisgICAgdm9pZCBwb2x5Z29u
T2Zmc2V0KEdDM0RmbG9hdCBmYWN0b3IsIEdDM0RmbG9hdCB1bml0cyk7CisKKyAgICB2b2lkIHJl
YWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCB2b2lkKiBkYXRhKTsKKwor
ICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOworICAgIHZv
aWQgc2FtcGxlQ292ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1ZSwgR0MzRGJvb2xlYW4gaW52ZXJ0KTsK
KyAgICB2b2lkIHNjaXNzb3IoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCk7CisgICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVj
dCwgY29uc3QgY2hhciogc3RyaW5nKTsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1
bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2Vw
YXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50
IG1hc2spOworICAgIHZvaWQgc3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzayk7CisgICAgdm9pZCBz
dGVuY2lsTWFza1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0R1aW50IG1hc2spOworICAgIHZv
aWQgc3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFz
cyk7CisgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBm
YWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpOworCisgICAgYm9vbCB0ZXhJbWFn
ZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdD
M0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKTsKKyAgICB2
b2lkIHRleFBhcmFtZXRlcmYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGZs
b2F0IHBhcmFtKTsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
ZW51bSBwbmFtZSwgR0MzRGludCBwYXJhbSk7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZz
ZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBH
QzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpOworCisgICAgdm9pZCB1bmlmb3JtMWYo
R0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgpOworICAgIHZvaWQgdW5pZm9ybTFmdihHQzNE
aW50IGxvY2F0aW9uLCBHQzNEc2l6ZWksIEdDM0RmbG9hdCogdik7CisgICAgdm9pZCB1bmlmb3Jt
MWkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB4KTsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEaW50KiB2KTsKKyAgICB2b2lkIHVuaWZvcm0y
ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgZmxvYXQgeSk7CisgICAgdm9pZCB1bmlm
b3JtMmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGZsb2F0KiB2KTsKKyAgICB2
b2lkIHVuaWZvcm0yaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSk7Cisg
ICAgdm9pZCB1bmlmb3JtMml2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGludCog
dik7CisgICAgdm9pZCB1bmlmb3JtM2YoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdD
M0RmbG9hdCB5LCBHQzNEZmxvYXQgeik7CisgICAgdm9pZCB1bmlmb3JtM2Z2KEdDM0RpbnQgbG9j
YXRpb24sIEdDM0RzaXplaSwgR0MzRGZsb2F0KiB2KTsKKyAgICB2b2lkIHVuaWZvcm0zaShHQzNE
aW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6KTsKKyAgICB2b2lk
IHVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEaW50KiB2KTsKKyAg
ICB2b2lkIHVuaWZvcm00ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0
IHksIEdDM0RmbG9hdCB6LCBHQzNEZmxvYXQgdyk7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGZsb2F0KiB2KTsKKyAgICB2b2lkIHVuaWZvcm00
aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6LCBHQzNE
aW50IHcpOworICAgIHZvaWQgdW5pZm9ybTRpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWks
IEdDM0RpbnQqIHYpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEc2l6ZWksIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSk7Cisg
ICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0Mz
RGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIHVuaWZvcm1N
YXRyaXg0ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDM0RmbG9hdCogdmFsdWUpOworCisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtM0RP
YmplY3QpOworICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOworCisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgpOworICAg
IHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7
CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdD
M0RmbG9hdCB5KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgR0Mz
RGZsb2F0KiB2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliM2YoR0MzRHVpbnQgaW5kZXgs
IEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHopOworICAgIHZvaWQgdmVydGV4
QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWI0ZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBH
QzNEZmxvYXQgeiwgR0MzRGZsb2F0IHcpOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDM0R1
aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2lu
dGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29s
ZWFuIG5vcm1hbGl6ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSBz
dHJpZGUsIEdDM0RpbnRwdHIgb2Zmc2V0KTsKKworICAgIHZvaWQgdmlld3BvcnQoR0MzRGludCB4
LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CisKKyAgICBQ
bGF0Zm9ybTNET2JqZWN0IGNyZWF0ZUJ1ZmZlcigpOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3Jl
YXRlRnJhbWVidWZmZXIoKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVByb2dyYW0oKTsK
KyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIFBsYXRmb3Jt
M0RPYmplY3QgY3JlYXRlU2hhZGVyKEdDM0RlbnVtKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNy
ZWF0ZVRleHR1cmUoKTsKKworICAgIHZvaWQgZGVsZXRlQnVmZmVyKFBsYXRmb3JtM0RPYmplY3Qp
OworICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9p
ZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRlUmVuZGVy
YnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRlU2hhZGVyKFBsYXRmb3Jt
M0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0KTsKKwor
ICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0MzRGVudW0gZXJyb3IpOworCisgICAgRXh0ZW5z
aW9uczNEKiBnZXRFeHRlbnNpb25zKCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBjcmVhdGVTdXJm
YWNlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIHJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmpl
Y3QpOworCisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwor
CisgICAgUGxhdGZvcm0zRE9iamVjdCBtX2JvdW5kRkJPOworICAgIFBsYXRmb3JtM0RPYmplY3Qg
bV9ib3VuZFRleHR1cmU7CisgICAgUGxhdGZvcm0zRE9iamVjdCBtX2JvdW5kQXJyYXlCdWZmZXI7
CisKKyAgICBMaXN0SGFzaFNldDxHQzNEZW51bT4gbV9zeW50aGV0aWNFcnJvcnM7CisKKyAgICBF
dmFzX0dMKiBtX2V2YXNHTDsKKyAgICBFdmFzX0dMX0NvbnRleHQqIG1fY29udGV4dDsKKyAgICBF
dmFzX0dMX1N1cmZhY2UqIG1fc3VyZmFjZTsKKyAgICBFdmFzX0dMX0FQSSogbV9hcGk7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHcmFwaGljc0xheWVyRWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97781</attachid>
            <date>2011-06-20 05:10:02 -0700</date>
            <delta_ts>2011-06-21 21:52:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62961-20110620211047.patch</filename>
            <type>text/plain</type>
            <size>53783</size>
            <attacher name="Hyowon Kim">hw1008.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkyMjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlN2U2MjdjOWQwNmE5OTYy
MGZkMjQwYjlkZDMyYTI4NDY5MDdlOWQ5Li40MzRlMjk4ZTIyYzA5Mzc2NzkyYTMzOTM2ZmNlN2Ni
MGIwMWRkNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYwIEBACisyMDExLTA2LTIwICBIeW93
b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBBZGQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjI5NjEKKworICAgICAgICBBZGQgdGhlIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWwgY2xhc3MgdXNpbmcgRXZhc19HTCBBUElzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpjcmVhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6bWFrZUNvbnRleHRDdXJyZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzR0xFUzJD
b21wbGlhbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
YWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6YmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZFRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmxlbmRDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpibGVuZEVxdWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJsZW5kRXF1YXRp
b25TZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6YmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2xlYXJDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjbGVhckRlcHRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNsZWFyU3RlbmNpbCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjb2xvck1hc2spOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjb3B5VGV4SW1hZ2Uy
RCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjb3B5VGV4
U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpjdWxsRmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpkZXB0aEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmRlcHRoUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpmaW5pc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Zmx1c2gpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZnJh
bWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6ZnJvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEF0dGFjaGVkU2hhZGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRBdHRyaWJMb2NhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRCb29s
ZWFudik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpnZXRDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpnZXRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0SW50ZWdl
cnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJv
Z3JhbWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omdl
dFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFNoYWRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0U2hhZGVyU291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRUZXhQYXJhbWV0
ZXJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRU
ZXhQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRWZXJ0ZXhBdHRyaWJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aGlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppc0J1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppc0VuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aXNGcmFt
ZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpp
c1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
aXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6aXNTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6aXNUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmxpbmVXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnJlYWRQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzYW1wbGVDb3ZlcmFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzY2lzc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnNoYWRlclNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVuY2lsRnVuYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVuY2lsRnVuY1Nl
cGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnN0
ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6c3RlbmNpbE9wKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4UGFyYW1ldGVyZik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp0ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnRleFN1YkltYWdlMkQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTFmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0xZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTFpKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0xaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTJmKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0yZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTJp
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0y
aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9y
bTNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZv
cm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5p
Zm9ybTNpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVu
aWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
dW5pZm9ybTRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6dW5pZm9ybTRpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliMWYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmli
MWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRl
eEF0dHJpYjJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnZlcnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliNGYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliNGZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmlld3BvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZUZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxldGVQcm9ncmFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZVJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxl
dGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oOiBBZGRlZC4KKwogMjAxMS0wNi0xOSAg
VW5hIFNhYm92aWMgIDx1bmEuc2Fib3ZpY0BwYWxtLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNDI0NmQ1MDkwNWQxZWJiYjAzNDY5Yjc1NGY5ODE4NWQ4MmJkOTNmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWwuY3BwCkBAIC0wLDAgKzEsMTExOCBAQAorLyoKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbC5oIgorCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgorI2luY2x1ZGUgImV3a19wcml2YXRl
LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bCgpCisgICAgOiBtX2JvdW5kRkJPKDApCisgICAgLCBtX2JvdW5kVGV4dHVyZSgwKQorICAgICwg
bV9ib3VuZEFycmF5QnVmZmVyKDApCisgICAgLCBtX2V2YXNHTCgwKQorICAgICwgbV9jb250ZXh0
KDApCisgICAgLCBtX3N1cmZhY2UoMCkKKyAgICAsIG1fYXBpKDApCit7Cit9CisKK0dyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCkKK3sKKyAgICBp
ZiAobV9ldmFzR0wpIHsKKyAgICAgICAgaWYgKG1fc3VyZmFjZSkKKyAgICAgICAgICAgIGV2YXNf
Z2xfc3VyZmFjZV9kZXN0cm95KG1fZXZhc0dMLCBtX3N1cmZhY2UpOworCisgICAgICAgIGlmICht
X2NvbnRleHQpCisgICAgICAgICAgICBldmFzX2dsX2NvbnRleHRfZGVzdHJveShtX2V2YXNHTCwg
bV9jb250ZXh0KTsKKworICAgICAgICBldmFzX2dsX2ZyZWUobV9ldmFzR0wpOworICAgIH0KK30K
KworYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppbml0aWFsaXplKEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sIGJS
ZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KQoreworICAgIEV2YXNfT2JqZWN0KiB2aWV3ID0g
c3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihob3N0V2luZG93LT5wbGF0Zm9ybVBhZ2VDbGllbnQo
KSk7CisKKyAgICBFdmFzKiBldmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQodmlldyk7CisgICAg
bV9ldmFzR0wgPSBldmFzX2dsX2NyZWF0ZShldmFzKTsKKyAgICBpZiAoIW1fZXZhc0dMKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2FwaSA9IGV2YXNfZ2xfYXBpX2dldChtX2V2YXNH
TCk7CisgICAgaWYgKCFtX2FwaSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRXZhc19H
TF9Db250ZXh0KiBzaGFyZWRDb250ZXh0ID0gMDsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKyAgICBpZiAoIWJSZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KSB7CisgICAg
ICAgIC8vIHRvIHNoYXJlIHJlc291cmNlcyB3aXRoIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGNv
bnRleHQKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbXBvc2l0aW5nQ29udGV4dCA9IGV3
a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX2NvbnRleHRfZ2V0KHZpZXcpOworICAgICAg
ICBpZiAoY29tcG9zaXRpbmdDb250ZXh0KQorICAgICAgICAgICAgc2hhcmVkQ29udGV4dCA9IHN0
YXRpY19jYXN0PEV2YXNfR0xfQ29udGV4dCo+KGNvbXBvc2l0aW5nQ29udGV4dC0+cGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRCgpKTsKKyAgICB9CisjZW5kaWYKKworICAgIG1fY29udGV4dCA9IGV2
YXNfZ2xfY29udGV4dF9jcmVhdGUobV9ldmFzR0wsIHNoYXJlZENvbnRleHQpOworICAgIGlmICgh
bV9jb250ZXh0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWNyZWF0ZVN1cmZh
Y2UodmlldywgYlJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gbWFrZUNvbnRleHRDdXJyZW50KCk7Cit9CisKK2Jvb2wgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlU3VyZmFjZShFdmFzX09iamVjdCogdmlldywg
Ym9vbCByZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KQoreworICAgIEV2YXNfR0xfQ29uZmln
IGNvbmZpZyA9IHsKKyAgICAgICAgRVZBU19HTF9SR0JBXzgsCisgICAgICAgIEVWQVNfR0xfREVQ
VEhfQklUXzgsCisgICAgICAgIEVWQVNfR0xfU1RFTkNJTF9OT05FCisgICAgfTsKKworICAgIGlu
dCB4ID0gMCwgeSA9IDAsIHcgPSAxLCBoID0gMTsKKworICAgIGlmIChyZW5kZXJEaXJlY3RseVRv
RXZhc0dMT2JqZWN0KQorICAgICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQodmlldywgJngs
ICZ5LCAmdywgJmgpOworCisgICAgbV9zdXJmYWNlID0gZXZhc19nbF9zdXJmYWNlX2NyZWF0ZSht
X2V2YXNHTCwgJmNvbmZpZywgdywgaCk7CisgICAgaWYgKCFtX3N1cmZhY2UpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChyZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KSB7Cisg
ICAgICAgIEV2YXNfTmF0aXZlX1N1cmZhY2UgbmF0aXZlU3VyZmFjZTsKKyAgICAgICAgZXZhc19n
bF9uYXRpdmVfc3VyZmFjZV9nZXQobV9ldmFzR0wsIG1fc3VyZmFjZSwgJm5hdGl2ZVN1cmZhY2Up
OworCisgICAgICAgIGV3a192aWV3X2V2YXNfZ2xfb2JqZWN0X2NyZWF0ZSh2aWV3LCAmbmF0aXZl
U3VyZmFjZSwgeCwgeSwgdywgaCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRleHQ7Cit9CisK
K2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6bWFrZUNvbnRleHRDdXJyZW50KCkKK3sK
KyAgICByZXR1cm4gKGV2YXNfZ2xfbWFrZV9jdXJyZW50KG1fZXZhc0dMLCBtX3N1cmZhY2UsIG1f
Y29udGV4dCkgPT0gRUlOQV9UUlVFKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjphY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRl
eHR1cmUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQWN0aXZl
VGV4dHVyZSh0ZXh0dXJlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjph
dHRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xBdHRhY2hT
aGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWlu
dCBpbmRleCwgY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xCaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJpbmRCdWZmZXIoR0MzRGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICBtX2FwaS0+Z2xCaW5kQnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKKworICAgIGlm
ICh0YXJnZXQgPT0gR0xfQVJSQVlfQlVGRkVSKQorICAgICAgICBtX2JvdW5kQXJyYXlCdWZmZXIg
PSBidWZmZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZEZyYW1l
YnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIGlmIChmcmFtZWJ1ZmZlciAhPSBtX2Jv
dW5kRkJPKSB7CisgICAgICAgIG1fYXBpLT5nbEJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGZyYW1l
YnVmZmVyKTsKKyAgICAgICAgbV9ib3VuZEZCTyA9IGZyYW1lYnVmZmVyOworICAgIH0KK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVt
IHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgbV9hcGktPmdsQmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZFRleHR1cmUoR0MzRGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgbV9hcGktPmdsQmluZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlKTsKKyAgICBt
X2JvdW5kVGV4dHVyZSA9IHRleHR1cmU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6YmxlbmRDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNs
YW1wZiBibHVlLCBHQzNEY2xhbXBmIGFscGhhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbEJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJsZW5kRXF1YXRpb24oR0MzRGVudW0g
bW9kZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xCbGVuZEVx
dWF0aW9uKG1vZGUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJsZW5k
RXF1YXRpb25TZXBhcmF0ZShHQzNEZW51bSBtb2RlUkdCLCBHQzNEZW51bSBtb2RlQWxwaGEpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQmxlbmRFcXVhdGlvblNl
cGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0b3IsIEdDM0RlbnVtIGRmYWN0b3IpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQmxlbmRGdW5jKHNmYWN0
b3IsIGRmYWN0b3IpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJsZW5k
RnVuY1NlcGFyYXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0UkdCLCBHQzNEZW51bSBz
cmNBbHBoYSwgR0MzRGVudW0gZHN0QWxwaGEpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsQmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhh
LCBkc3RBbHBoYSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YnVmZmVy
RGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRh
LCBHQzNEZW51bSB1c2FnZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2Fw
aS0+Z2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50cHRyIG9mZnNldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQnVmZmVyU3ViRGF0YSh0
YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7Cit9CisKK0dDM0RlbnVtIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xDaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKHRhcmdldCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6Y2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsQ2xlYXIobWFzayk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Y2xlYXJDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0Mz
RGNsYW1wZiBibHVlLCBHQzNEY2xhbXBmIGFscGhhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbENsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNsZWFyRGVwdGgoR0MzRGNsYW1w
ZiBkZXB0aCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDbGVh
ckRlcHRoZihkZXB0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2xl
YXJTdGVuY2lsKEdDM0RpbnQgcykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBt
X2FwaS0+Z2xDbGVhclN0ZW5jaWwocyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Y29sb3JNYXNrKEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0Ri
b29sZWFuIGJsdWUsIEdDM0Rib29sZWFuIGFscGhhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbENvbG9yTWFzayhyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9y
bTNET2JqZWN0IHNoYWRlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2Fw
aS0+Z2xDb21waWxlU2hhZGVyKHNoYWRlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Y29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBH
QzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQ29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0Mz
RGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDb3B5VGV4U3ViSW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjdWxsRmFjZShHQzNEZW51bSBt
b2RlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEN1bGxGYWNl
KG1vZGUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlcHRoRnVuYyhH
QzNEZW51bSBmdW5jKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5n
bERlcHRoRnVuYyhmdW5jKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpk
ZXB0aE1hc2soR0MzRGJvb2xlYW4gZmxhZykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xEZXB0aE1hc2soZmxhZyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6ZGVwdGhSYW5nZShHQzNEY2xhbXBmIHpOZWFyLCBHQzNEY2xhbXBmIHpGYXIp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRGVwdGhSYW5nZWYo
ek5lYXIsIHpGYXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRldGFj
aFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVy
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERldGFjaFNoYWRl
cihwcm9ncmFtLCBzaGFkZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmRpc2FibGUoR0MzRGVudW0gY2FwKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbERpc2FibGUoY2FwKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5
KGluZGV4KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkcmF3QXJyYXlz
KEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKK3sKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEcmF3QXJyYXlzKG1vZGUsIGZpcnN0
LCBjb3VudCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZHJhd0VsZW1l
bnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwgR0MzRGlu
dHB0ciBvZmZzZXQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmds
RHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+
KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6ZW5hYmxlKEdDM0RlbnVtIGNhcCkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xFbmFibGUoY2FwKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xFbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheShpbmRleCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
ZmluaXNoKCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xGaW5p
c2goKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpmbHVzaCgpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRmx1c2goKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNE
ZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRh
cmdldCwgUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBh
dHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3Jt
M0RPYmplY3QgdGV4dHVyZSwgR0MzRGludCBsZXZlbCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICBtX2FwaS0+Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1l
bnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEZyb250RmFjZShtb2RlKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2VuZXJhdGVNaXBtYXAo
dGFyZ2V0KTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRBY3RpdmVB
dHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgQWN0aXZlSW5m
byYgaW5mbykKK3sKKyAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIGludCBtYXhOYW1lTGVuZ3RoID0gLTE7Cisg
ICAgbV9hcGktPmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFY
X0xFTkdUSCwgJm1heE5hbWVMZW5ndGgpOworICAgIGlmIChtYXhOYW1lTGVuZ3RoIDwgMCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2hhciogbmFtZSA9IHN0YXRpY19jYXN0PGNoYXIq
PihtYWxsb2MobWF4TmFtZUxlbmd0aCAqIHNpemVvZihjaGFyKSkpOworICAgIGlmICghbmFtZSkg
eworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGludCBsZW5ndGggPSAwOworICAgIGludCBzaXpl
ID0gLTE7CisgICAgR0xlbnVtIHR5cGUgPSAwOworCisgICAgbV9hcGktPmdsR2V0QWN0aXZlQXR0
cmliKHByb2dyYW0sIGluZGV4LCBtYXhOYW1lTGVuZ3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUs
IG5hbWUpOworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBmcmVlKG5hbWUpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaW5mby5uYW1lID0gU3RyaW5nOjpmcm9tVVRG
OChuYW1lLCBsZW5ndGgpOworICAgIGluZm8udHlwZSA9IHR5cGU7CisgICAgaW5mby5zaXplID0g
c2l6ZTsKKyAgICBmcmVlKG5hbWUpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBHQzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykKK3sKKyAgICBpZiAoIXBy
b2dyYW0pIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KworICAgIGludCBtYXhOYW1lTGVuZ3RoID0gLTE7CisgICAgbV9hcGktPmdsR2V0UHJvZ3JhbWl2
KHByb2dyYW0sIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhOYW1lTGVuZ3RoKTsK
KyAgICBpZiAobWF4TmFtZUxlbmd0aCA8IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGNoYXIqIG5hbWUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKG1heE5hbWVMZW5ndGggKiBz
aXplb2YoY2hhcikpKTsKKyAgICBpZiAoIW5hbWUpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBpbnQgbGVuZ3RoID0gMDsKKyAgICBpbnQgc2l6ZSA9IC0xOworICAgIEdMZW51bSB0eXBlID0g
MDsKKworICAgIG1fYXBpLT5nbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heE5h
bWVMZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAgaWYgKHNpemUgPCAw
KSB7CisgICAgICAgIGZyZWUobmFtZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBpbmZvLm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KG5hbWUsIGxlbmd0aCk7CisgICAgaW5m
by50eXBlID0gdHlwZTsKKyAgICBpbmZvLnNpemUgPSBzaXplOworICAgIGZyZWUobmFtZSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0
QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHNpemVpIG1heENv
dW50LCBHQzNEc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybTNET2JqZWN0KiBzaGFkZXJzKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldEF0dGFjaGVkU2hhZGVycyhw
cm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRlcnMpOworfQorCitpbnQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
LCBjb25zdCBjaGFyKiBuYW1lKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJl
dHVybiBtX2FwaS0+Z2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRCb29sZWFudihHQzNEZW51bSBwbmFtZSwg
R0MzRGJvb2xlYW4qIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbEdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
ZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUp
OworfQorCitHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpnZXRDb250ZXh0QXR0cmlidXRlcygpCit7CisgICAgcmV0dXJuIG1fYXR0cmlidXRl
czsKK30KKworR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0RXJyb3IoKQor
eworICAgIGlmIChtX3N5bnRoZXRpY0Vycm9ycy5zaXplKCkgPiAwKSB7CisgICAgICAgIExpc3RI
YXNoU2V0PEdDM0RlbnVtPjo6aXRlcmF0b3IgaXRlciA9IG1fc3ludGhldGljRXJyb3JzLmJlZ2lu
KCk7CisgICAgICAgIEdDM0RlbnVtIGVyciA9ICppdGVyOworICAgICAgICBtX3N5bnRoZXRpY0Vy
cm9ycy5yZW1vdmUoaXRlcik7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorCisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbEdldEVycm9yKCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0RmxvYXR2KEdDM0RlbnVtIHBuYW1l
LCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbEdldEZsb2F0dihwbmFtZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDM0RlbnVt
IHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZh
bHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZh
bHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRJbnRlZ2VydihH
QzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisKKyAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUzoKKyAgICAgICAgbV9hcGktPmdsR2V0SW50ZWdl
cnYoR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUywgdmFsdWUpOworICAgICAgICAqdmFs
dWUgLz0gNDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFY
X1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6CisgICAgICAgIG1fYXBpLT5nbEdldEludGVnZXJ2KEdM
X01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTLCB2YWx1ZSk7CisgICAgICAgICp2YWx1ZSAvPSA0
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkFSWUlO
R19WRUNUT1JTOgorICAgICAgICBtX2FwaS0+Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19W
RUNUT1JTLCB2YWx1ZSk7CisgICAgICAgICp2YWx1ZSAvPSA0OworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBtX2FwaS0+Z2xHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOwor
ICAgIH0KK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRQcm9ncmFtaXYo
UGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0UHJvZ3JhbWl2
KHByb2dyYW0sIHBuYW1lLCB2YWx1ZSk7Cit9CisKK1N0cmluZyBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpbnQgbG9nTGVuZ3RoID0gMDsKKyAgICBt
X2FwaS0+Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9H
X0xFTkdUSCwgJmxvZ0xlbmd0aCk7CisgICAgaWYgKCFsb2dMZW5ndGgpCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKworICAgIGNoYXIqIGxvZyA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2Mo
bG9nTGVuZ3RoICogc2l6ZW9mKGNoYXIpKSk7CisgICAgaWYgKCFsb2cpCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKworICAgIGludCByZXR1cm5lZExvZ0xlbmd0aDsKKyAgICBtX2FwaS0+Z2xH
ZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsb2dMZW5ndGgsICZyZXR1cm5lZExvZ0xlbmd0aCwg
bG9nKTsKKyAgICBBU1NFUlQobG9nTGVuZ3RoID09IHJldHVybmVkTG9nTGVuZ3RoICsgMSk7CisK
KyAgICBTdHJpbmcgcmVzID0gU3RyaW5nOjpmcm9tVVRGOChsb2csIHJldHVybmVkTG9nTGVuZ3Ro
KTsKKyAgICBmcmVlKGxvZyk7CisgICAgcmV0dXJuIHJlczsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJn
ZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQs
IHBuYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0
U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50
KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRT
aGFkZXJpdihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7Cit9CisKK1N0cmluZyBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgaW50IGxvZ0xlbmd0aCA9IDA7Cisg
ICAgbV9hcGktPmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19M
T0dfTEVOR1RILCAmbG9nTGVuZ3RoKTsKKyAgICBpZiAobG9nTGVuZ3RoIDw9IDEpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKworICAgIGNoYXIqIGxvZyA9IHN0YXRpY19jYXN0PGNoYXIqPiht
YWxsb2MobG9nTGVuZ3RoICogc2l6ZW9mKGNoYXIpKSk7CisgICAgaWYgKCFsb2cpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKworICAgIGludCByZXR1cm5lZExvZ0xlbmd0aDsKKyAgICBtX2Fw
aS0+Z2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgbG9nTGVuZ3RoLCAmcmV0dXJuZWRMb2dMZW5n
dGgsIGxvZyk7CisgICAgQVNTRVJUKGxvZ0xlbmd0aCA9PSByZXR1cm5lZExvZ0xlbmd0aCArIDEp
OworCisgICAgU3RyaW5nIHJlcyA9IFN0cmluZzo6ZnJvbVVURjgobG9nLCByZXR1cm5lZExvZ0xl
bmd0aCk7CisgICAgZnJlZShsb2cpOworICAgIHJldHVybiByZXM7Cit9CisKK1N0cmluZyBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBz
aGFkZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpbnQgbG9nTGVuZ3Ro
ID0gMDsKKyAgICBtX2FwaS0+Z2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX1NIQURFUl9TT1VSQ0Vf
TEVOR1RILCAmbG9nTGVuZ3RoKTsKKyAgICBpZiAobG9nTGVuZ3RoIDw9IDEpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKworICAgIGNoYXIqIGxvZyA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxs
b2MobG9nTGVuZ3RoICogc2l6ZW9mKGNoYXIpKSk7CisgICAgaWYgKCFsb2cpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKworICAgIGludCByZXR1cm5lZExvZ0xlbmd0aDsKKyAgICBtX2FwaS0+
Z2xHZXRTaGFkZXJTb3VyY2Uoc2hhZGVyLCBsb2dMZW5ndGgsICZyZXR1cm5lZExvZ0xlbmd0aCwg
bG9nKTsKKyAgICBBU1NFUlQobG9nTGVuZ3RoID09IHJldHVybmVkTG9nTGVuZ3RoICsgMSk7CisK
KyAgICBTdHJpbmcgcmVzID0gU3RyaW5nOjpmcm9tVVRGOChsb2csIHJldHVybmVkTG9nTGVuZ3Ro
KTsKKyAgICBmcmVlKGxvZyk7CisgICAgcmV0dXJuIHJlczsKK30KKworU3RyaW5nIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmdldFN0cmluZyhHQzNEZW51bSBuYW1lKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4obV9hcGktPmdsR2V0U3RyaW5nKG5hbWUpKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6Z2V0VGV4UGFyYW1ldGVyZnYoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
ZW51bSBwbmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBtX2FwaS0+Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VGV4UGFyYW1ldGVyaXYo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0VGV4UGFyYW1ldGVyaXYodGFy
Z2V0LCBwbmFtZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmdldFVuaWZvcm1mdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RmbG9hdCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsR2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0
aW9uLCB2YWx1ZSk7Cit9CisKK0dDM0RpbnQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0
VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgY2hhciogbmFt
ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsR2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmdldFZlcnRleEF0dHJpYmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBw
bmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQzNEdWlu
dCBpbmRleCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFt
ZSwgdmFsdWUpOworfQorCitHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICB2b2lkKiBwb2ludGVyID0gMDsKKyAgICBt
X2FwaS0+Z2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcG5hbWUsICZwb2ludGVyKTsK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHQzNEc2l6ZWlwdHI+KHBvaW50ZXIpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmhpbnQoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEZW51bSBtb2RlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5n
bEhpbnQodGFyZ2V0LCBtb2RlKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6aXNCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbElzQnVmZmVyKGJ1ZmZlcik7Cit9
CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzRW5hYmxlZChHQzNE
ZW51bSBjYXApCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBp
LT5nbElzRW5hYmxlZChjYXApOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbElzRnJhbWVidWZm
ZXIoZnJhbWVidWZmZXIpOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjppc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xJc1Byb2dyYW0ocHJvZ3JhbSk7Cit9
CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzUmVuZGVyYnVmZmVy
KFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xJc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOwor
fQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppc1NoYWRlcihQbGF0
Zm9ybTNET2JqZWN0IHNoYWRlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBy
ZXR1cm4gbV9hcGktPmdsSXNTaGFkZXIoc2hhZGVyKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6aXNUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsSXNUZXh0
dXJlKHRleHR1cmUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmxpbmVX
aWR0aChHQzNEZmxvYXQgd2lkdGgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsTGluZVdpZHRoKHdpZHRoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsTGlua1Byb2dyYW0ocHJvZ3JhbSk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGl4ZWxTdG9yZWkoR0MzRGVudW0g
cG5hbWUsIEdDM0RpbnQgcGFyYW0pCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsUGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpwb2x5Z29uT2Zmc2V0KEdDM0RmbG9hdCBmYWN0b3IsIEdDM0RmbG9h
dCB1bml0cykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xQb2x5
Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCB2b2lkKiBk
YXRhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgbV9hcGktPmdsRmx1c2go
KTsKKyAgICBtX2FwaS0+Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgZGF0YSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cmVuZGVy
YnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisKKyAgICBtX2FwaS0+Z2xSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnNhbXBsZUNvdmVyYWdlKEdDM0RjbGFtcGYgdmFsdWUsIEdDM0Rib29sZWFuIGludmVy
dCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTYW1wbGVDb3Zl
cmFnZSh2YWx1ZSwgaW52ZXJ0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpzY2lzc29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXpl
aSBoZWlnaHQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsU2Np
c3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpzaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIGNvbnN0IGNoYXIq
IHN0cmluZykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBpbnQgbGVuZ3RoID0g
c3RyaW5nID8gc3RybGVuKHN0cmluZykgOiAwOworICAgIG1fYXBpLT5nbFNoYWRlclNvdXJjZShz
aGFkZXIsIDEsICZzdHJpbmcsICZsZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWlu
dCBtYXNrKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFN0ZW5j
aWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBmdW5jLCBH
QzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3RlbmNpbE1hc2soR0MzRHVp
bnQgbWFzaykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTdGVu
Y2lsTWFzayhtYXNrKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVu
Y2lsTWFza1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0R1aW50IG1hc2spCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsU3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNl
LCBtYXNrKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVuY2lsT3Ao
R0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwg
enBhc3MpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnN0ZW5jaWxPcFNl
cGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNE
ZW51bSB6cGFzcykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xT
dGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworfQorCitib29sIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNE
c2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0
eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9hcGktPmdsVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4UGFyYW1ldGVyZihH
QzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQgcGFyYW0pCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVGV4UGFyYW1ldGVyZih0YXJnZXQs
IHBuYW1lLCBwYXJhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4
UGFyYW1ldGVyaShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFt
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFRleFBhcmFtZXRl
cmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNE
aW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVs
cykKK3sKKyAgICBtX2FwaS0+Z2xUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMWYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGZsb2F0IHgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmds
VW5pZm9ybTFmKGxvY2F0aW9uLCB4KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjp1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEZmxv
YXQqIHYpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9y
bTFmdihsb2NhdGlvbiwgc2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6dW5pZm9ybTFpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCkKK3sKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtMWkobG9jYXRpb24sIHgpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0xaXYoR0MzRGludCBs
b2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0RpbnQqIHYpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgdik7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTJmKEdDM0RpbnQgbG9j
YXRpb24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtMmYobG9jYXRpb24sIHgsIHkpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRHNpemVpIHNpemUsIEdDM0RmbG9hdCogdikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCB2KTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMmkoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGludCB4LCBHQzNEaW50IHkpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsVW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjp1bmlmb3JtMml2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBz
aXplLCBHQzNEaW50KiB2KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbFVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIHYpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnVuaWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwg
R0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fYXBpLT5nbFVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeik7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNE
c2l6ZWkgc2l6ZSwgR0MzRGZsb2F0KiB2KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fYXBpLT5nbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIHYpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNE
aW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbFVuaWZvcm0zaShsb2NhdGlvbiwgeCwgeSwgeik7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTNpdihHQzNEaW50IGxvY2F0aW9uLCBH
QzNEc2l6ZWkgc2l6ZSwgR0MzRGludCogdikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCB2KTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtNGYoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgR0MzRGZsb2F0IHcpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTRmKGxvY2F0aW9uLCB4
LCB5LCB6LCB3KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3Jt
NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEZmxvYXQqIHYpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTRmdihsb2NhdGlv
biwgc2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9y
bTRpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHosIEdD
M0RpbnQgdykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlm
b3JtNGkobG9jYXRpb24sIHgsIHksIHosIHcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnVuaWZvcm00aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdD
M0RpbnQqIHYpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5p
Zm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6dW5pZm9ybU1hdHJpeDJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6
ZSwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24s
IHNpemUsIHRyYW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnVuaWZvcm1NYXRyaXgzZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUs
IEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBz
aXplLCB0cmFuc3Bvc2UsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjp1bmlmb3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBH
QzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6
ZSwgdHJhbnNwb3NlLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6dXNlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5n
bFZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjp2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliMWYoaW5k
ZXgsIHgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJp
YjFmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCB2YWx1ZXMp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjJmKEdD
M0R1aW50IGluZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHkpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliMmYoaW5kZXgsIHgsIHkpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjJmdihHQzNE
dWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCB2YWx1ZXMpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjNmKEdDM0R1aW50IGlu
ZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6KQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5
LCB6KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWIz
ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjNmdihpbmRleCwgdmFsdWVzKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWI0ZihHQzNE
dWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgR0MzRGZs
b2F0IHcpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4
QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1
ZXMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0
cmliNGZ2KGluZGV4LCB2YWx1ZXMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0Mz
RGVudW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwgR0Mz
RGludHB0ciBvZmZzZXQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpZiAo
bV9ib3VuZEFycmF5QnVmZmVyIDw9IDApCisgICAgICAgIHJldHVybjsKKworICAgIG1fYXBpLT5n
bFZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlk
ZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0
KSkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZpZXdwb3J0KEdDM0Rp
bnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmlld3BvcnQoeCwgeSwgd2lk
dGgsIGhlaWdodCk7Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBQ
bGF0Zm9ybTNET2JqZWN0IG87CisgICAgbV9hcGktPmdsR2VuQnVmZmVycygxLCAmbyk7CisgICAg
cmV0dXJuIG87Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6Y3JlYXRlRnJhbWVidWZmZXIoKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IFBsYXRmb3JtM0RPYmplY3QgbyA9IDA7CisgICAgbV9hcGktPmdsR2VuRnJhbWVidWZmZXJzKDEs
ICZvKTsKKyAgICByZXR1cm4gbzsKK30KKworUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICByZXR1cm4gbV9hcGktPmdsQ3JlYXRlUHJvZ3JhbSgpOworfQorCitQbGF0Zm9ybTNE
T2JqZWN0IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBvOworICAg
IG1fYXBpLT5nbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm8pOworICAgIHJldHVybiBvOworfQorCitQ
bGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZVNoYWRlcihH
QzNEZW51bSBzaGFkZXJUeXBlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJl
dHVybiBtX2FwaS0+Z2xDcmVhdGVTaGFkZXIoc2hhZGVyVHlwZSk7Cit9CisKK1BsYXRmb3JtM0RP
YmplY3QgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlVGV4dHVyZSgpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBvOworICAgIG1fYXBp
LT5nbEdlblRleHR1cmVzKDEsICZvKTsKKyAgICByZXR1cm4gbzsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpkZWxldGVCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRGVsZXRlQnVmZmVy
cygxLCAmYnVmZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxl
dGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJh
bWVidWZmZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZVBy
b2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmpl
Y3QgcmVuZGVyYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hh
ZGVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERlbGV0ZVNo
YWRlcihzaGFkZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0
ZVRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIG1fYXBpLT5nbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzeW50aGVzaXplR0xFcnJvcihHQzNEZW51
bSBlcnJvcikKK3sKKyAgICBtX3N5bnRoZXRpY0Vycm9ycy5hZGQoZXJyb3IpOworfQorCitFeHRl
bnNpb25zM0QqIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEV4dGVuc2lvbnMoKQorewor
ICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MGY3ZTcwM2ExYmExMzFjMzAwZWYzZjkwZWQ0OWM4NGYyODNmODMyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWwuaApAQCAtMCwwICsxLDIyMyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsX2gKKyNkZWZpbmUgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbF9oCisKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgorCisjaW5jbHVkZSA8RXZhc19HTC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwgeworcHVibGlj
OgorICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKKyAgICB+R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbCgpOworCisgICAgYm9vbCBpbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiwgYm9vbCByZW5kZXJEaXJlY3RseVRvRXZhc0dM
T2JqZWN0KTsKKworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCgpIGNvbnN0OworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKKyNlbmRpZgorCisgICAg
Ym9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgp
IGNvbnN0OworCisgICAgdm9pZCBhY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpOworICAg
IHZvaWQgYXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9i
amVjdCBzaGFkZXIpOworICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmpl
Y3QsIEdDM0R1aW50IGluZGV4LCBjb25zdCBjaGFyKiBuYW1lKTsKKyAgICB2b2lkIGJpbmRCdWZm
ZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGJpbmRGcmFt
ZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgYmlu
ZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZv
aWQgYmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2
b2lkIGJsZW5kQ29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFt
cGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSk7CisgICAgdm9pZCBibGVuZEVxdWF0aW9uKEdDM0Rl
bnVtIG1vZGUpOworICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDM0RlbnVtIG1vZGVS
R0IsIEdDM0RlbnVtIG1vZGVBbHBoYSk7CisgICAgdm9pZCBibGVuZEZ1bmMoR0MzRGVudW0gc2Zh
Y3RvciwgR0MzRGVudW0gZGZhY3Rvcik7CisgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHQzNE
ZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxwaGEsIEdDM0RlbnVt
IGRzdEFscGhhKTsKKworICAgIHZvaWQgYnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0Rz
aXplaXB0ciwgY29uc3Qgdm9pZCogZGF0YSwgR0MzRGVudW0gdXNhZ2UpOworICAgIHZvaWQgYnVm
ZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zmc2V0LCBHQzNEc2l6ZWlw
dHIsIGNvbnN0IHZvaWQqIGRhdGEpOworCisgICAgR0MzRGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyhHQzNEZW51bSB0YXJnZXQpOworICAgIHZvaWQgY2xlYXIoR0MzRGJpdGZpZWxkIG1hc2sp
OworICAgIHZvaWQgY2xlYXJDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwg
R0MzRGNsYW1wZiBibHVlLCBHQzNEY2xhbXBmIGFscGhhKTsKKyAgICB2b2lkIGNsZWFyRGVwdGgo
R0MzRGNsYW1wZiBkZXB0aCk7CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0MzRGludCBzKTsKKyAg
ICB2b2lkIGNvbG9yTWFzayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29sZWFuIGdyZWVuLCBHQzNE
Ym9vbGVhbiBibHVlLCBHQzNEYm9vbGVhbiBhbHBoYSk7CisgICAgdm9pZCBjb21waWxlU2hhZGVy
KFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRChHQzNEZW51bSB0
YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEaW50IHgs
IEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJv
cmRlcik7CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0Rp
bnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEaW50IHgsIEdD
M0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKKyAgICB2b2lkIGN1
bGxGYWNlKEdDM0RlbnVtIG1vZGUpOworICAgIHZvaWQgZGVwdGhGdW5jKEdDM0RlbnVtIGZ1bmMp
OworICAgIHZvaWQgZGVwdGhNYXNrKEdDM0Rib29sZWFuIGZsYWcpOworICAgIHZvaWQgZGVwdGhS
YW5nZShHQzNEY2xhbXBmIHpOZWFyLCBHQzNEY2xhbXBmIHpGYXIpOworICAgIHZvaWQgZGV0YWNo
U2hhZGVyKFBsYXRmb3JtM0RPYmplY3QsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGlz
YWJsZShHQzNEZW51bSBjYXApOworICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdD
M0R1aW50IGluZGV4KTsKKyAgICB2b2lkIGRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGlu
dCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KTsKKyAgICB2b2lkIGRyYXdFbGVtZW50cyhHQzNEZW51
bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnRwdHIgb2Zmc2V0
KTsKKworICAgIHZvaWQgZW5hYmxlKEdDM0RlbnVtIGNhcCk7CisgICAgdm9pZCBlbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCk7CisgICAgdm9pZCBmaW5pc2goKTsKKyAgICB2
b2lkIGZsdXNoKCk7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwg
UGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwgUGxhdGZv
cm0zRE9iamVjdCwgR0MzRGludCBsZXZlbCk7CisgICAgdm9pZCBmcm9udEZhY2UoR0MzRGVudW0g
bW9kZSk7CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpOworCisgICAg
Ym9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBp
bmRleCwgQWN0aXZlSW5mbyYpOworICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7CisgICAgdm9pZCBn
ZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6ZWkgbWF4
Q291bnQsIEdDM0RzaXplaSogY291bnQsIFBsYXRmb3JtM0RPYmplY3QqIHNoYWRlcnMpOworICAg
IEdDM0RpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCwgY29uc3QgY2hhciog
bmFtZSk7CisgICAgdm9pZCBnZXRCb29sZWFudihHQzNEZW51bSBwbmFtZSwgR0MzRGJvb2xlYW4q
IHZhbHVlKTsKKyAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwg
R0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBnZXRDb250ZXh0QXR0cmlidXRlcygpOworICAgIEdDM0RlbnVtIGdldEVycm9y
KCk7CisgICAgdm9pZCBnZXRGbG9hdHYoR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUp
OworICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFs
dWUpOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVl
KTsKKyAgICB2b2lkIGdldFByb2dyYW1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0Rl
bnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9n
KFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIHZv
aWQgZ2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVjdCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQq
IHZhbHVlKTsKKyAgICBTdHJpbmcgZ2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0KTsK
KworICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgU3Ry
aW5nIGdldFN0cmluZyhHQzNEZW51bSBuYW1lKTsKKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUpOworICAg
IHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwg
R0MzRGludCogdmFsdWUpOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSk7CisgICAgdm9pZCBn
ZXRVbmlmb3JtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBH
QzNEaW50KiB2YWx1ZSk7CisgICAgR0MzRGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0z
RE9iamVjdCwgY29uc3QgY2hhciogbmFtZSk7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihH
QzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUpOworICAgIHZv
aWQgZ2V0VmVydGV4QXR0cmliaXYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lLCBHQzNE
aW50KiB2YWx1ZSk7CisgICAgR0MzRHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQzNE
dWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUpOworCisgICAgdm9pZCBoaW50KEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gbW9kZSk7CisgICAgR0MzRGJvb2xlYW4gaXNCdWZmZXIoUGxhdGZvcm0z
RE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNFbmFibGVkKEdDM0RlbnVtIGNhcCk7CisgICAg
R0MzRGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBHQzNEYm9v
bGVhbiBpc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNSZW5k
ZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNTaGFkZXIoUGxh
dGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNUZXh0dXJlKFBsYXRmb3JtM0RPYmpl
Y3QpOworICAgIHZvaWQgbGluZVdpZHRoKEdDM0RmbG9hdCk7CisgICAgdm9pZCBsaW5rUHJvZ3Jh
bShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIHBpeGVsU3RvcmVpKEdDM0RlbnVtIHBuYW1l
LCBHQzNEaW50IHBhcmFtKTsKKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0MzRGZsb2F0IGZhY3Rv
ciwgR0MzRGZsb2F0IHVuaXRzKTsKKworICAgIHZvaWQgcmVhZFBpeGVscyhHQzNEaW50IHgsIEdD
M0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUsIHZvaWQqIGRhdGEpOworCisgICAgdm9pZCByZW5kZXJidWZmZXJT
dG9yYWdlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFnZShHQzNE
Y2xhbXBmIHZhbHVlLCBHQzNEYm9vbGVhbiBpbnZlcnQpOworICAgIHZvaWQgc2Npc3NvcihHQzNE
aW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKKyAg
ICB2b2lkIHNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBjaGFyKiBzdHJpbmcp
OworICAgIHZvaWQgc3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1
aW50IG1hc2spOworICAgIHZvaWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBH
QzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzayk7CisgICAgdm9pZCBzdGVu
Y2lsTWFzayhHQzNEdWludCBtYXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUoR0Mz
RGVudW0gZmFjZSwgR0MzRHVpbnQgbWFzayk7CisgICAgdm9pZCBzdGVuY2lsT3AoR0MzRGVudW0g
ZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKTsKKyAgICB2b2lkIHN0ZW5jaWxP
cFNlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBH
QzNEZW51bSB6cGFzcyk7CisKKyAgICBib29sIHRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51
bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQzNE
ZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQgcGFyYW0pOworICAgIHZvaWQg
dGV4UGFyYW1ldGVyaShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBh
cmFtKTsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZv
aWQqIHBpeGVscyk7CisKKyAgICB2b2lkIHVuaWZvcm0xZihHQzNEaW50IGxvY2F0aW9uLCBHQzNE
ZmxvYXQgeCk7CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXpl
aSwgR0MzRGZsb2F0KiB2KTsKKyAgICB2b2lkIHVuaWZvcm0xaShHQzNEaW50IGxvY2F0aW9uLCBH
QzNEaW50IHgpOworICAgIHZvaWQgdW5pZm9ybTFpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6
ZWksIEdDM0RpbnQqIHYpOworICAgIHZvaWQgdW5pZm9ybTJmKEdDM0RpbnQgbG9jYXRpb24sIEdD
M0RmbG9hdCB4LCBmbG9hdCB5KTsKKyAgICB2b2lkIHVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlv
biwgR0MzRHNpemVpLCBHQzNEZmxvYXQqIHYpOworICAgIHZvaWQgdW5pZm9ybTJpKEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5KTsKKyAgICB2b2lkIHVuaWZvcm0yaXYoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEaW50KiB2KTsKKyAgICB2b2lkIHVuaWZvcm0z
ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6
KTsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNE
ZmxvYXQqIHYpOworICAgIHZvaWQgdW5pZm9ybTNpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQg
eCwgR0MzRGludCB5LCBHQzNEaW50IHopOworICAgIHZvaWQgdW5pZm9ybTNpdihHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEc2l6ZWksIEdDM0RpbnQqIHYpOworICAgIHZvaWQgdW5pZm9ybTRmKEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0Rm
bG9hdCB3KTsKKyAgICB2b2lkIHVuaWZvcm00ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVp
LCBHQzNEZmxvYXQqIHYpOworICAgIHZvaWQgdW5pZm9ybTRpKEdDM0RpbnQgbG9jYXRpb24sIEdD
M0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHosIEdDM0RpbnQgdyk7CisgICAgdm9pZCB1bmlm
b3JtNGl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGludCogdik7CisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4MmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGJvb2xl
YW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgz
ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
M0RmbG9hdCogdmFsdWUpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQzNEaW50IGxvY2F0
aW9uLCBHQzNEc2l6ZWksIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSk7
CisKKyAgICB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCB2YWxp
ZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFm
KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgeCk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZnYo
R0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJp
YjJmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHkpOworICAgIHZvaWQg
dmVydGV4QXR0cmliMmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9h
dCB5LCBHQzNEZmxvYXQgeik7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5k
ZXgsIEdDM0RmbG9hdCogdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRmKEdDM0R1aW50
IGluZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6LCBHQzNEZmxvYXQg
dyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCog
dmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdD
M0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGludHB0ciBvZmZz
ZXQpOworCisgICAgdm9pZCB2aWV3cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVp
IHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKKworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRl
QnVmZmVyKCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZlcigpOworICAg
IFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlUHJvZ3JhbSgpOworICAgIFBsYXRmb3JtM0RPYmplY3Qg
Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVTaGFkZXIo
R0MzRGVudW0pOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlVGV4dHVyZSgpOworCisgICAg
dm9pZCBkZWxldGVCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBkZWxldGVGcmFt
ZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGRlbGV0ZVByb2dyYW0oUGxhdGZv
cm0zRE9iamVjdCk7CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVj
dCk7CisgICAgdm9pZCBkZWxldGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBk
ZWxldGVUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgdm9pZCBzeW50aGVzaXplR0xF
cnJvcihHQzNEZW51bSBlcnJvcik7CisKKyAgICBFeHRlbnNpb25zM0QqIGdldEV4dGVuc2lvbnMo
KTsKKworcHJpdmF0ZToKKyAgICBib29sIGNyZWF0ZVN1cmZhY2UoRXZhc19PYmplY3QqIHZpZXcs
IGJvb2wgcmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCk7CisKKyAgICBHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CisKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1f
Ym91bmRGQk87CisgICAgUGxhdGZvcm0zRE9iamVjdCBtX2JvdW5kVGV4dHVyZTsKKyAgICBQbGF0
Zm9ybTNET2JqZWN0IG1fYm91bmRBcnJheUJ1ZmZlcjsKKworICAgIExpc3RIYXNoU2V0PEdDM0Rl
bnVtPiBtX3N5bnRoZXRpY0Vycm9yczsKKworICAgIEV2YXNfR0wqIG1fZXZhc0dMOworICAgIEV2
YXNfR0xfQ29udGV4dCogbV9jb250ZXh0OworICAgIEV2YXNfR0xfU3VyZmFjZSogbV9zdXJmYWNl
OworICAgIEV2YXNfR0xfQVBJKiBtX2FwaTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJFZmxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98115</attachid>
            <date>2011-06-21 21:53:00 -0700</date>
            <delta_ts>2011-06-22 20:09:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62961-20110622135404.patch</filename>
            <type>text/plain</type>
            <size>53793</size>
            <attacher name="Hyowon Kim">hw1008.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkzMjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZjY0YzgxMGE0ZDllMGEw
NjIwMmJiZDUyNGJkMTE3YWM4NTZiMGJkLi45YzI0ZWVhNjIwNTgzNzVlMmI2YzI1YWIyYzhlMjQ2
ODliYWY0ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYwIEBACisyMDExLTA2LTIxICBIeW93
b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBBZGQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjI5NjEKKworICAgICAgICBBZGQgdGhlIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWwgY2xhc3MgdXNpbmcgRXZhc19HTCBBUElzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpjcmVhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6bWFrZUNvbnRleHRDdXJyZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzR0xFUzJD
b21wbGlhbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
YWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6YmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZFRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmxlbmRDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpibGVuZEVxdWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJsZW5kRXF1YXRp
b25TZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6YmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2xlYXJDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjbGVhckRlcHRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNsZWFyU3RlbmNpbCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjb2xvck1hc2spOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjb3B5VGV4SW1hZ2Uy
RCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjb3B5VGV4
U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpjdWxsRmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpkZXB0aEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmRlcHRoUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpmaW5pc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Zmx1c2gpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZnJh
bWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6ZnJvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEF0dGFjaGVkU2hhZGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRBdHRyaWJMb2NhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRCb29s
ZWFudik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpnZXRDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpnZXRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0SW50ZWdl
cnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJv
Z3JhbWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omdl
dFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFNoYWRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0U2hhZGVyU291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRUZXhQYXJhbWV0
ZXJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRU
ZXhQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRWZXJ0ZXhBdHRyaWJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aGlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppc0J1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppc0VuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aXNGcmFt
ZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpp
c1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
aXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6aXNTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6aXNUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmxpbmVXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnJlYWRQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzYW1wbGVDb3ZlcmFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzY2lzc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnNoYWRlclNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVuY2lsRnVuYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVuY2lsRnVuY1Nl
cGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnN0
ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6c3RlbmNpbE9wKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4UGFyYW1ldGVyZik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp0ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnRleFN1YkltYWdlMkQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTFmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0xZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTFpKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0xaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTJmKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0yZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTJp
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0y
aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9y
bTNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZv
cm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5p
Zm9ybTNpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVu
aWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
dW5pZm9ybTRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6dW5pZm9ybTRpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliMWYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmli
MWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRl
eEF0dHJpYjJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnZlcnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliNGYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliNGZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmlld3BvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZUZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxldGVQcm9ncmFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZVJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxl
dGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oOiBBZGRlZC4KKwogMjAxMS0wNi0yMCAg
RXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vm
bC9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
YmQ1N2E1ZDRlN2MxMjcyNjc4M2I0Y2YyMDNjOWY0MWVlMzc4NGRhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWwuY3BwCkBAIC0wLDAgKzEsMTExMiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaCIKKwor
I2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2lu
Y2x1ZGUgImV3a19wcml2YXRlLmgiCisKKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpCisgICAg
OiBtX2JvdW5kRkJPKDApCisgICAgLCBtX2JvdW5kVGV4dHVyZSgwKQorICAgICwgbV9ib3VuZEFy
cmF5QnVmZmVyKDApCisgICAgLCBtX2V2YXNHTCgwKQorICAgICwgbV9jb250ZXh0KDApCisgICAg
LCBtX3N1cmZhY2UoMCkKKyAgICAsIG1fYXBpKDApCit7Cit9CisKK0dyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCkKK3sKKyAgICBpZiAobV9ldmFz
R0wpIHsKKyAgICAgICAgaWYgKG1fc3VyZmFjZSkKKyAgICAgICAgICAgIGV2YXNfZ2xfc3VyZmFj
ZV9kZXN0cm95KG1fZXZhc0dMLCBtX3N1cmZhY2UpOworCisgICAgICAgIGlmIChtX2NvbnRleHQp
CisgICAgICAgICAgICBldmFzX2dsX2NvbnRleHRfZGVzdHJveShtX2V2YXNHTCwgbV9jb250ZXh0
KTsKKworICAgICAgICBldmFzX2dsX2ZyZWUobV9ldmFzR0wpOworICAgIH0KK30KKworYm9vbCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjppbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sIGJSZW5kZXJEaXJl
Y3RseVRvRXZhc0dMT2JqZWN0KQoreworICAgIEV2YXNfT2JqZWN0KiB2aWV3ID0gc3RhdGljX2Nh
c3Q8RXZhc19PYmplY3QqPihob3N0V2luZG93LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSk7CisKKyAg
ICBFdmFzKiBldmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQodmlldyk7CisgICAgbV9ldmFzR0wg
PSBldmFzX2dsX25ldyhldmFzKTsKKyAgICBpZiAoIW1fZXZhc0dMKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBtX2FwaSA9IGV2YXNfZ2xfYXBpX2dldChtX2V2YXNHTCk7CisgICAgaWYg
KCFtX2FwaSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRXZhc19HTF9Db250ZXh0KiBz
aGFyZWRDb250ZXh0ID0gMDsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAg
ICBpZiAoIWJSZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KSB7CisgICAgICAgIC8vIHRvIHNo
YXJlIHJlc291cmNlcyB3aXRoIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGNvbnRleHQKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbXBvc2l0aW5nQ29udGV4dCA9IGV3a192aWV3X2FjY2Vs
ZXJhdGVkX2NvbXBvc2l0aW5nX2NvbnRleHRfZ2V0KHZpZXcpOworICAgICAgICBpZiAoY29tcG9z
aXRpbmdDb250ZXh0KQorICAgICAgICAgICAgc2hhcmVkQ29udGV4dCA9IHN0YXRpY19jYXN0PEV2
YXNfR0xfQ29udGV4dCo+KGNvbXBvc2l0aW5nQ29udGV4dC0+cGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQzRCgpKTsKKyAgICB9CisjZW5kaWYKKworICAgIG1fY29udGV4dCA9IGV2YXNfZ2xfY29udGV4
dF9jcmVhdGUobV9ldmFzR0wsIHNoYXJlZENvbnRleHQpOworICAgIGlmICghbV9jb250ZXh0KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWNyZWF0ZVN1cmZhY2UodmlldywgYlJl
bmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gbWFrZUNvbnRleHRDdXJyZW50KCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6Y3JlYXRlU3VyZmFjZShFdmFzX09iamVjdCogdmlldywgYm9vbCByZW5kZXJE
aXJlY3RseVRvRXZhc0dMT2JqZWN0KQoreworICAgIEV2YXNfR0xfQ29uZmlnIGNvbmZpZyA9IHsK
KyAgICAgICAgRVZBU19HTF9SR0JBXzgsCisgICAgICAgIEVWQVNfR0xfREVQVEhfQklUXzgsCisg
ICAgICAgIEVWQVNfR0xfU1RFTkNJTF9OT05FCisgICAgfTsKKworICAgIGludCB4ID0gMCwgeSA9
IDAsIHcgPSAxLCBoID0gMTsKKworICAgIGlmIChyZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0
KQorICAgICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQodmlldywgJngsICZ5LCAmdywgJmgp
OworCisgICAgbV9zdXJmYWNlID0gZXZhc19nbF9zdXJmYWNlX2NyZWF0ZShtX2V2YXNHTCwgJmNv
bmZpZywgdywgaCk7CisgICAgaWYgKCFtX3N1cmZhY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChyZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KSB7CisgICAgICAgIEV2YXNf
TmF0aXZlX1N1cmZhY2UgbmF0aXZlU3VyZmFjZTsKKyAgICAgICAgZXZhc19nbF9uYXRpdmVfc3Vy
ZmFjZV9nZXQobV9ldmFzR0wsIG1fc3VyZmFjZSwgJm5hdGl2ZVN1cmZhY2UpOworCisgICAgICAg
IGV3a192aWV3X2V2YXNfZ2xfb2JqZWN0X2NyZWF0ZSh2aWV3LCAmbmF0aXZlU3VyZmFjZSwgeCwg
eSwgdywgaCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0M0QoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRleHQ7Cit9CisKK2Jvb2wgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6bWFrZUNvbnRleHRDdXJyZW50KCkKK3sKKyAgICByZXR1cm4g
KGV2YXNfZ2xfbWFrZV9jdXJyZW50KG1fZXZhc0dMLCBtX3N1cmZhY2UsIG1fY29udGV4dCkgPT0g
RUlOQV9UUlVFKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppc0dMRVMy
Q29tcGxpYW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjphY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQWN0aXZlVGV4dHVyZSh0ZXh0
dXJlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjphdHRhY2hTaGFkZXIo
UGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xBdHRhY2hTaGFkZXIocHJvZ3Jh
bSwgc2hhZGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpiaW5kQXR0
cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgY29u
c3QgU3RyaW5nJiBuYW1lKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbEJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgp
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpiaW5kQnVmZmVyKEdDM0Rl
bnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsQmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CisKKyAg
ICBpZiAodGFyZ2V0ID09IEdMX0FSUkFZX0JVRkZFUikKKyAgICAgICAgbV9ib3VuZEFycmF5QnVm
ZmVyID0gYnVmZmVyOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJpbmRG
cmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpZiAoZnJhbWVidWZmZXIgIT0g
bV9ib3VuZEZCTykgeworICAgICAgICBtX2FwaS0+Z2xCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBm
cmFtZWJ1ZmZlcik7CisgICAgICAgIG1fYm91bmRGQk8gPSBmcmFtZWJ1ZmZlcjsKKyAgICB9Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZFJlbmRlcmJ1ZmZlcihHQzNE
ZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBidWZmZXIp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJpbmRUZXh0dXJlKEdDM0Rl
bnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZSk7Cisg
ICAgbV9ib3VuZFRleHR1cmUgPSB0ZXh0dXJlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmJsZW5kQ29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdD
M0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICBtX2FwaS0+Z2xCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpibGVuZEVxdWF0aW9uKEdDM0Rl
bnVtIG1vZGUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQmxl
bmRFcXVhdGlvbihtb2RlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpi
bGVuZEVxdWF0aW9uU2VwYXJhdGUoR0MzRGVudW0gbW9kZVJHQiwgR0MzRGVudW0gbW9kZUFscGhh
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJsZW5kRXF1YXRp
b25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmJsZW5kRnVuYyhHQzNEZW51bSBzZmFjdG9yLCBHQzNEZW51bSBkZmFjdG9y
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJsZW5kRnVuYyhz
ZmFjdG9yLCBkZmFjdG9yKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpi
bGVuZEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVu
dW0gc3JjQWxwaGEsIEdDM0RlbnVtIGRzdEFscGhhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbEJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNB
bHBoYSwgZHN0QWxwaGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJ1
ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCog
ZGF0YSwgR0MzRGVudW0gdXNhZ2UpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRh
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJ1ZmZlclN1YkRh
dGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOworfQorCitHQzNEZW51bSBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdldCkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsQ2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbENsZWFyKG1hc2spOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmNsZWFyQ29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4s
IEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhh
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjbGVhckRlcHRoKEdDM0Rj
bGFtcGYgZGVwdGgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmds
Q2xlYXJEZXB0aGYoZGVwdGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmNsZWFyU3RlbmNpbChHQzNEaW50IHMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9hcGktPmdsQ2xlYXJTdGVuY2lsKHMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmNvbG9yTWFzayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29sZWFuIGdyZWVuLCBH
QzNEYm9vbGVhbiBibHVlLCBHQzNEYm9vbGVhbiBhbHBoYSkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDb2xvck1hc2socmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNvbXBpbGVTaGFkZXIoUGxh
dGZvcm0zRE9iamVjdCBzaGFkZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbENvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQs
IEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQ29weVRleFN1Yklt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3VsbEZhY2UoR0MzRGVu
dW0gbW9kZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDdWxs
RmFjZShtb2RlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZXB0aEZ1
bmMoR0MzRGVudW0gZnVuYykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2Fw
aS0+Z2xEZXB0aEZ1bmMoZnVuYyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6ZGVwdGhNYXNrKEdDM0Rib29sZWFuIGZsYWcpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsRGVwdGhNYXNrKGZsYWcpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmRlcHRoUmFuZ2UoR0MzRGNsYW1wZiB6TmVhciwgR0MzRGNsYW1wZiB6
RmFyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERlcHRoUmFu
Z2VmKHpOZWFyLCB6RmFyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpk
ZXRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZXRhY2hT
aGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xEaXNhYmxlKGNhcCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheShpbmRleCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZHJhd0Fy
cmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRHJhd0FycmF5cyhtb2RlLCBm
aXJzdCwgY291bnQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRyYXdF
bGVtZW50cyhHQzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIEdD
M0RpbnRwdHIgb2Zmc2V0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbERyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZv
aWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmVuYWJsZShHQzNEZW51bSBjYXApCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRW5hYmxlKGNhcCk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5k
ZXgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkoaW5kZXgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmZpbmlzaCgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmds
RmluaXNoKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Zmx1c2goKQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEZsdXNoKCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSByZW5kZXJidWZm
ZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdl
dCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCByZW5kZXJidWZmZXIpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFyZ2V0LCBQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0RpbnQgbGV2ZWwpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsRnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRh
Y2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xGcm9udEZhY2UobW9kZSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2VuZXJhdGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdlbmVyYXRlTWlw
bWFwKHRhcmdldCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0QWN0
aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2
ZUluZm8mIGluZm8pCit7CisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpbnQgbWF4TmFtZUxlbmd0aCA9IC0x
OworICAgIG1fYXBpLT5nbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfQVRUUklCVVRF
X01BWF9MRU5HVEgsICZtYXhOYW1lTGVuZ3RoKTsKKyAgICBpZiAobWF4TmFtZUxlbmd0aCA8IDAp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE93bkFycmF5UHRyPGNoYXI+IG5hbWUgPSBh
ZG9wdEFycmF5UHRyKG5ldyBjaGFyW21heE5hbWVMZW5ndGhdKTsKKyAgICBpZiAoIW5hbWUpIHsK
KyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbnQgbGVuZ3RoID0gMDsKKyAgICBpbnQgc2l6ZSA9
IC0xOworICAgIEdMZW51bSB0eXBlID0gMDsKKworICAgIG1fYXBpLT5nbEdldEFjdGl2ZUF0dHJp
Yihwcm9ncmFtLCBpbmRleCwgbWF4TmFtZUxlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0eXBlLCBu
YW1lLmdldCgpKTsKKyAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGluZm8ubmFtZSA9IFN0cmluZzo6ZnJvbVVURjgobmFtZS5nZXQoKSwgbGVuZ3RoKTsKKyAg
ICBpbmZvLnR5cGUgPSB0eXBlOworICAgIGluZm8uc2l6ZSA9IHNpemU7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0QWN0aXZlVW5pZm9y
bShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBp
bmZvKQoreworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworCisgICAgaW50IG1heE5hbWVMZW5ndGggPSAtMTsKKyAgICBt
X2FwaS0+Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdU
SCwgJm1heE5hbWVMZW5ndGgpOworICAgIGlmIChtYXhOYW1lTGVuZ3RoIDwgMCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgT3duQXJyYXlQdHI8Y2hhcj4gbmFtZSA9IGFkb3B0QXJyYXlQ
dHIobmV3IGNoYXJbbWF4TmFtZUxlbmd0aF0pOworICAgIGlmICghbmFtZSkgeworICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGludCBsZW5ndGggPSAwOworICAgIGludCBzaXplID0gLTE7CisgICAg
R0xlbnVtIHR5cGUgPSAwOworCisgICAgbV9hcGktPmdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFt
LCBpbmRleCwgbWF4TmFtZUxlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmdldCgp
KTsKKyAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGluZm8u
bmFtZSA9IFN0cmluZzo6ZnJvbVVURjgobmFtZS5nZXQoKSwgbGVuZ3RoKTsKKyAgICBpbmZvLnR5
cGUgPSB0eXBlOworICAgIGluZm8uc2l6ZSA9IHNpemU7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHNpemVpIG1heENvdW50LCBHQzNEc2l6ZWkqIGNvdW50
LCBQbGF0Zm9ybTNET2JqZWN0KiBzaGFkZXJzKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbEdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291
bnQsIHNoYWRlcnMpOworfQorCitpbnQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0QXR0
cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbEdldEF0
dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0Qm9vbGVhbnYoR0MzRGVudW0gcG5hbWUsIEdDM0Ri
b29sZWFuKiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+
Z2xHZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmdldEJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0g
cG5hbWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKK30K
KworR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQoreworICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7Cit9
CisKK0dDM0RlbnVtIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEVycm9yKCkKK3sKKyAg
ICBpZiAobV9zeW50aGV0aWNFcnJvcnMuc2l6ZSgpID4gMCkgeworICAgICAgICBHQzNEZW51bSBl
cnIgPSBtX3N5bnRoZXRpY0Vycm9ycy5maXJzdCgpOworICAgICAgICBtX3N5bnRoZXRpY0Vycm9y
cy5yZW1vdmUobV9zeW50aGV0aWNFcnJvcnMuYmVnaW4oKSk7CisgICAgICAgIHJldHVybiBlcnI7
CisgICAgfQorCisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5n
bEdldEVycm9yKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0Rmxv
YXR2KEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldEZsb2F0dihwbmFtZSwgdmFsdWUpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0g
cG5hbWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0
YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUzoKKyAgICAgICAg
bV9hcGktPmdsR2V0SW50ZWdlcnYoR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUywgdmFs
dWUpOworICAgICAgICAqdmFsdWUgLz0gNDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6TUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6CisgICAgICAgIG1fYXBp
LT5nbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTLCB2YWx1ZSk7Cisg
ICAgICAgICp2YWx1ZSAvPSA0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpNQVhfVkFSWUlOR19WRUNUT1JTOgorICAgICAgICBtX2FwaS0+Z2xHZXRJbnRlZ2Vy
dihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCB2YWx1ZSk7CisgICAgICAgICp2YWx1ZSAvPSA0Owor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBtX2FwaS0+Z2xHZXRJbnRlZ2Vy
dihwbmFtZSwgdmFsdWUpOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEZW51bSBwbmFt
ZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCB2YWx1ZSk7Cit9CisKK1N0cmluZyBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0pCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpbnQgbG9n
TGVuZ3RoID0gMDsKKyAgICBtX2FwaS0+Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3ND
b250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxvZ0xlbmd0aCk7CisgICAgaWYgKCFsb2dMZW5n
dGgpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIE93bkFycmF5UHRyPGNoYXI+IGxv
ZyA9IGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbbG9nTGVuZ3RoXSk7CisgICAgaWYgKCFsb2cpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGludCByZXR1cm5lZExvZ0xlbmd0aCA9IDA7
CisgICAgbV9hcGktPmdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbG9nTGVuZ3RoLCAmcmV0
dXJuZWRMb2dMZW5ndGgsIGxvZy5nZXQoKSk7CisgICAgQVNTRVJUKGxvZ0xlbmd0aCA9PSByZXR1
cm5lZExvZ0xlbmd0aCArIDEpOworCisgICAgU3RyaW5nIHJlcyA9IFN0cmluZzo6ZnJvbVVURjgo
bG9nLmdldCgpLCByZXR1cm5lZExvZ0xlbmd0aCk7CisgICAgcmV0dXJuIHJlczsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihH
QzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIEdDM0RlbnVtIHBu
YW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBt
X2FwaS0+Z2xHZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7Cit9CisKK1N0cmluZyBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmpl
Y3Qgc2hhZGVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgaW50IGxvZ0xl
bmd0aCA9IDA7CisgICAgbV9hcGktPmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRl
eHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbG9nTGVuZ3RoKTsKKyAgICBpZiAobG9nTGVuZ3RoIDw9
IDEpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIE93bkFycmF5UHRyPGNoYXI+IGxv
ZyA9IGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbbG9nTGVuZ3RoXSk7CisgICAgaWYgKCFsb2cpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGludCByZXR1cm5lZExvZ0xlbmd0aCA9IDA7
CisgICAgbV9hcGktPmdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxvZ0xlbmd0aCwgJnJldHVy
bmVkTG9nTGVuZ3RoLCBsb2cuZ2V0KCkpOworICAgIEFTU0VSVChsb2dMZW5ndGggPT0gcmV0dXJu
ZWRMb2dMZW5ndGggKyAxKTsKKworICAgIFN0cmluZyByZXMgPSBTdHJpbmc6OmZyb21VVEY4KGxv
Zy5nZXQoKSwgcmV0dXJuZWRMb2dMZW5ndGgpOworICAgIHJldHVybiByZXM7Cit9CisKK1N0cmlu
ZyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9i
amVjdCBzaGFkZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpbnQgbG9n
TGVuZ3RoID0gMDsKKyAgICBtX2FwaS0+Z2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX1NIQURFUl9T
T1VSQ0VfTEVOR1RILCAmbG9nTGVuZ3RoKTsKKyAgICBpZiAobG9nTGVuZ3RoIDw9IDEpCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIE93bkFycmF5UHRyPGNoYXI+IGxvZyA9IGFkb3B0
QXJyYXlQdHIobmV3IGNoYXJbbG9nTGVuZ3RoXSk7CisgICAgaWYgKCFsb2cpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKworICAgIGludCByZXR1cm5lZExvZ0xlbmd0aCA9IDA7CisgICAgbV9h
cGktPmdsR2V0U2hhZGVyU291cmNlKHNoYWRlciwgbG9nTGVuZ3RoLCAmcmV0dXJuZWRMb2dMZW5n
dGgsIGxvZy5nZXQoKSk7CisgICAgQVNTRVJUKGxvZ0xlbmd0aCA9PSByZXR1cm5lZExvZ0xlbmd0
aCArIDEpOworCisgICAgU3RyaW5nIHJlcyA9IFN0cmluZzo6ZnJvbVVURjgobG9nLmdldCgpLCBy
ZXR1cm5lZExvZ0xlbmd0aCk7CisgICAgcmV0dXJuIHJlczsKK30KKworU3RyaW5nIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmdldFN0cmluZyhHQzNEZW51bSBuYW1lKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4obV9hcGktPmdsR2V0U3RyaW5nKG5hbWUpKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6Z2V0VGV4UGFyYW1ldGVyZnYoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
ZW51bSBwbmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBtX2FwaS0+Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VGV4UGFyYW1ldGVyaXYo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0VGV4UGFyYW1ldGVyaXYodGFy
Z2V0LCBwbmFtZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmdldFVuaWZvcm1mdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RmbG9hdCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsR2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0
aW9uLCB2YWx1ZSk7Cit9CisKK0dDM0RpbnQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0
VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBu
YW1lKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xH
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQzNEdWludCBp
bmRleCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1l
LCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VmVydGV4
QXR0cmliaXYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRWZXJ0ZXhBdHRy
aWJpdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKK30KKworR0MzRHNpemVpcHRyIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0Mz
RGVudW0gcG5hbWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgdm9pZCogcG9p
bnRlciA9IDA7CisgICAgbV9hcGktPmdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBu
YW1lLCAmcG9pbnRlcik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R0MzRHNpemVpcHRy
Pihwb2ludGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpoaW50KEdD
M0RlbnVtIHRhcmdldCwgR0MzRGVudW0gbW9kZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBtX2FwaS0+Z2xIaW50KHRhcmdldCwgbW9kZSk7Cit9CisKK0dDM0Rib29sZWFuIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVy
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xJc0J1
ZmZlcihidWZmZXIpOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzREludGVybmFs
Ojppc0VuYWJsZWQoR0MzRGVudW0gY2FwKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIHJldHVybiBtX2FwaS0+Z2xJc0VuYWJsZWQoY2FwKTsKK30KKworR0MzRGJvb2xlYW4gR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZy
YW1lYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2Fw
aS0+Z2xJc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsSXNQcm9n
cmFtKHByb2dyYW0pOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzREludGVybmFs
Ojppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKK3sKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsSXNSZW5kZXJidWZmZXIo
cmVuZGVyYnVmZmVyKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6aXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbElzU2hhZGVyKHNoYWRlcik7Cit9CisKK0dD
M0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzVGV4dHVyZShQbGF0Zm9ybTNE
T2JqZWN0IHRleHR1cmUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJu
IG1fYXBpLT5nbElzVGV4dHVyZSh0ZXh0dXJlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpsaW5lV2lkdGgoR0MzRGZsb2F0IHdpZHRoKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbExpbmVXaWR0aCh3aWR0aCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6bGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbExpbmtQcm9n
cmFtKHByb2dyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBpeGVs
U3RvcmVpKEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cG9seWdvbk9mZnNldChHQzNEZmxvYXQg
ZmFjdG9yLCBHQzNEZmxvYXQgdW5pdHMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9hcGktPmdsUG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVu
dW0gdHlwZSwgdm9pZCogZGF0YSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAg
IG1fYXBpLT5nbEZsdXNoKCk7CisgICAgbV9hcGktPmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgbV9hcGktPmdsUmVuZGVyYnVmZmVyU3RvcmFn
ZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpzYW1wbGVDb3ZlcmFnZShHQzNEY2xhbXBmIHZhbHVlLCBH
QzNEYm9vbGVhbiBpbnZlcnQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsU2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6c2Npc3NvcihHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVp
IHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fYXBpLT5nbFNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3Qgc2hh
ZGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBjb25zdCBjaGFyKiBzdHIgPSBzdHJpbmcudXRmOCgpLmRhdGEoKTsKKyAgICBpbnQgbGVu
Z3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIG1fYXBpLT5nbFNoYWRlclNvdXJjZShzaGFkZXIs
IDEsICZzdHIsICZsZW5ndGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFN0ZW5jaWxGdW5jKGZ1
bmMsIHJlZiwgbWFzayk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3Rl
bmNpbEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJl
ZiwgR0MzRHVpbnQgbWFzaykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2Fw
aS0+Z2xTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTdGVuY2lsTWFzayht
YXNrKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVuY2lsTWFza1Nl
cGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0R1aW50IG1hc2spCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsU3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVuY2lsT3AoR0MzRGVudW0g
ZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnN0ZW5jaWxPcFNlcGFyYXRlKEdD
M0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFz
cykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTdGVuY2lsT3BT
ZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworfQorCitib29sIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVs
LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25z
dCB2b2lkKiBwaXhlbHMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGkt
PmdsVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4UGFyYW1ldGVyZihHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQgcGFyYW0pCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBw
YXJhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4UGFyYW1ldGVy
aShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFRleFBhcmFtZXRlcmkodGFyZ2V0
LCBwbmFtZSwgcGFyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnRl
eFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZz
ZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBH
QzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK3sKKyAg
ICBtX2FwaS0+Z2xUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMWYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0
IHgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTFm
KGxvY2F0aW9uLCB4KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlm
b3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEZmxvYXQqIHYpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTFmdihsb2Nh
dGlvbiwgc2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5p
Zm9ybTFpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtMWkobG9jYXRpb24sIHgpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0xaXYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRHNpemVpIHNpemUsIEdDM0RpbnQqIHYpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgdik7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTJmKEdDM0RpbnQgbG9jYXRpb24sIEdD
M0RmbG9hdCB4LCBHQzNEZmxvYXQgeSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xVbmlmb3JtMmYobG9jYXRpb24sIHgsIHkpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVp
IHNpemUsIEdDM0RmbG9hdCogdikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBt
X2FwaS0+Z2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCB2KTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMmkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB4
LCBHQzNEaW50IHkpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmds
VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjp1bmlmb3JtMml2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNE
aW50KiB2KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZv
cm0yaXYobG9jYXRpb24sIHNpemUsIHYpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OnVuaWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0
IHksIEdDM0RmbG9hdCB6KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbFVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6
ZSwgR0MzRGZsb2F0KiB2KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIHYpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdD
M0RpbnQgeSwgR0MzRGludCB6KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbFVuaWZvcm0zaShsb2NhdGlvbiwgeCwgeSwgeik7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTNpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkg
c2l6ZSwgR0MzRGludCogdikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2Fw
aS0+Z2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCB2KTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjp1bmlmb3JtNGYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgs
IEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgR0MzRGZsb2F0IHcpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtNGZ2KEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEZmxvYXQqIHYpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwg
dik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTRpKEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHosIEdDM0RpbnQgdykK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtNGkobG9j
YXRpb24sIHgsIHksIHosIHcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnVuaWZvcm00aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0RpbnQqIHYp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTRpdihs
b2NhdGlvbiwgc2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
dW5pZm9ybU1hdHJpeDJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGJv
b2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNpemUsIHRy
YW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVu
aWZvcm1NYXRyaXgzZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0Rib29s
ZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFu
c3Bvc2UsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlm
b3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEYm9vbGVh
biB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNw
b3NlLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dXNlUHJv
Z3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZhbGlkYXRl
UHJvZ3JhbShwcm9ncmFtKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2
ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliMWYoaW5kZXgsIHgpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjFmdihHQzNE
dWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCB2YWx1ZXMpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjJmKEdDM0R1aW50IGlu
ZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHkpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliMmYoaW5kZXgsIHgsIHkpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRl
eCwgR0MzRGZsb2F0KiB2YWx1ZXMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCB2YWx1ZXMpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjNmKEdDM0R1aW50IGluZGV4LCBHQzNE
ZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6KQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjNmdihpbmRleCwgdmFsdWVzKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWI0ZihHQzNEdWludCBpbmRl
eCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgR0MzRGZsb2F0IHcpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliNGYo
aW5kZXgsIHgsIHksIHosIHcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliNGZ2KGlu
ZGV4LCB2YWx1ZXMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRl
eEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlw
ZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGludHB0ciBv
ZmZzZXQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpZiAobV9ib3VuZEFy
cmF5QnVmZmVyIDw9IDApCisgICAgICAgIHJldHVybjsKKworICAgIG1fYXBpLT5nbFZlcnRleEF0
dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRl
cnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZpZXdwb3J0KEdDM0RpbnQgeCwgR0Mz
RGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdo
dCk7Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3Jl
YXRlQnVmZmVyKCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBQbGF0Zm9ybTNE
T2JqZWN0IG87CisgICAgbV9hcGktPmdsR2VuQnVmZmVycygxLCAmbyk7CisgICAgcmV0dXJuIG87
Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRl
RnJhbWVidWZmZXIoKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIFBsYXRmb3Jt
M0RPYmplY3QgbyA9IDA7CisgICAgbV9hcGktPmdsR2VuRnJhbWVidWZmZXJzKDEsICZvKTsKKyAg
ICByZXR1cm4gbzsKK30KKworUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBy
ZXR1cm4gbV9hcGktPmdsQ3JlYXRlUHJvZ3JhbSgpOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBvOworICAgIG1fYXBpLT5n
bEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm8pOworICAgIHJldHVybiBvOworfQorCitQbGF0Zm9ybTNE
T2JqZWN0IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSBz
aGFkZXJUeXBlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2Fw
aS0+Z2xDcmVhdGVTaGFkZXIoc2hhZGVyVHlwZSk7Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlVGV4dHVyZSgpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBvOworICAgIG1fYXBpLT5nbEdlblRl
eHR1cmVzKDEsICZvKTsKKyAgICByZXR1cm4gbzsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpkZWxldGVCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRGVsZXRlQnVmZmVycygxLCAmYnVm
ZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxldGVGcmFtZWJ1
ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIG1fYXBpLT5nbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZVByb2dyYW0oUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6ZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVy
YnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERlbGV0
ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6ZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERlbGV0ZVNoYWRlcihzaGFk
ZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlbGV0ZVRleHR1cmUo
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fYXBpLT5nbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpzeW50aGVzaXplR0xFcnJvcihHQzNEZW51bSBlcnJvcikK
K3sKKyAgICBtX3N5bnRoZXRpY0Vycm9ycy5hZGQoZXJyb3IpOworfQorCitFeHRlbnNpb25zM0Qq
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEV4dGVuc2lvbnMoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZmZThiMDA0OTU2ZGFhYjIwZDM1NGRiZmNiMTdhOTMzYWQyYTg5YjEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCkBAIC0wLDAgKzEsMjIzIEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsX2gKKyNkZWZpbmUgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbF9oCisK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorCisjaW5jbHVkZSA8RXZhc19HTC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwg
eworcHVibGljOgorICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKKyAgICB+R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbCgpOworCisgICAgYm9vbCBpbml0aWFsaXplKEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiwgYm9vbCByZW5kZXJEaXJlY3Rs
eVRvRXZhc0dMT2JqZWN0KTsKKworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZv
cm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0OworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKKyNlbmRp
ZgorCisgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIGJvb2wgaXNHTEVTMkNv
bXBsaWFudCgpIGNvbnN0OworCisgICAgdm9pZCBhY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1
cmUpOworICAgIHZvaWQgYXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxh
dGZvcm0zRE9iamVjdCBzaGFkZXIpOworICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBsYXRm
b3JtM0RPYmplY3QsIEdDM0R1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZv
aWQgYmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZv
aWQgYmluZEZyYW1lYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCk7Cisg
ICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVj
dCk7CisgICAgdm9pZCBiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmpl
Y3QpOworICAgIHZvaWQgYmxlbmRDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVl
biwgR0MzRGNsYW1wZiBibHVlLCBHQzNEY2xhbXBmIGFscGhhKTsKKyAgICB2b2lkIGJsZW5kRXF1
YXRpb24oR0MzRGVudW0gbW9kZSk7CisgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0Mz
RGVudW0gbW9kZVJHQiwgR0MzRGVudW0gbW9kZUFscGhhKTsKKyAgICB2b2lkIGJsZW5kRnVuYyhH
QzNEZW51bSBzZmFjdG9yLCBHQzNEZW51bSBkZmFjdG9yKTsKKyAgICB2b2lkIGJsZW5kRnVuY1Nl
cGFyYXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0UkdCLCBHQzNEZW51bSBzcmNBbHBo
YSwgR0MzRGVudW0gZHN0QWxwaGEpOworCisgICAgdm9pZCBidWZmZXJEYXRhKEdDM0RlbnVtIHRh
cmdldCwgR0MzRHNpemVpcHRyLCBjb25zdCB2b2lkKiBkYXRhLCBHQzNEZW51bSB1c2FnZSk7Cisg
ICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludHB0ciBvZmZzZXQs
IEdDM0RzaXplaXB0ciwgY29uc3Qgdm9pZCogZGF0YSk7CisKKyAgICBHQzNEZW51bSBjaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdldCk7CisgICAgdm9pZCBjbGVhcihHQzNEYml0
ZmllbGQgbWFzayk7CisgICAgdm9pZCBjbGVhckNvbG9yKEdDM0RjbGFtcGYgcmVkLCBHQzNEY2xh
bXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEpOworICAgIHZvaWQg
Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKTsKKyAgICB2b2lkIGNsZWFyU3RlbmNpbChHQzNE
aW50IHMpOworICAgIHZvaWQgY29sb3JNYXNrKEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4g
Z3JlZW4sIEdDM0Rib29sZWFuIGJsdWUsIEdDM0Rib29sZWFuIGFscGhhKTsKKyAgICB2b2lkIGNv
bXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQs
IEdDM0RpbnQgYm9yZGVyKTsKKyAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdD
M0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwor
ICAgIHZvaWQgY3VsbEZhY2UoR0MzRGVudW0gbW9kZSk7CisgICAgdm9pZCBkZXB0aEZ1bmMoR0Mz
RGVudW0gZnVuYyk7CisgICAgdm9pZCBkZXB0aE1hc2soR0MzRGJvb2xlYW4gZmxhZyk7CisgICAg
dm9pZCBkZXB0aFJhbmdlKEdDM0RjbGFtcGYgek5lYXIsIEdDM0RjbGFtcGYgekZhcik7CisgICAg
dm9pZCBkZXRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCwgUGxhdGZvcm0zRE9iamVjdCk7Cisg
ICAgdm9pZCBkaXNhYmxlKEdDM0RlbnVtIGNhcCk7CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpOworICAgIHZvaWQgZHJhd0FycmF5cyhHQzNEZW51bSBt
b2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpOworICAgIHZvaWQgZHJhd0VsZW1l
bnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwgR0MzRGlu
dHB0ciBvZmZzZXQpOworCisgICAgdm9pZCBlbmFibGUoR0MzRGVudW0gY2FwKTsKKyAgICB2b2lk
IGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KTsKKyAgICB2b2lkIGZpbmlz
aCgpOworICAgIHZvaWQgZmx1c2goKTsKKyAgICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVyYnVm
ZmVydGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFy
Z2V0LCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEaW50IGxldmVsKTsKKyAgICB2b2lkIGZyb250RmFj
ZShHQzNEZW51bSBtb2RlKTsKKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdl
dCk7CisKKyAgICBib29sIGdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0s
IEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7CisgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3Jt
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsK
KyAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdD
M0RzaXplaSBtYXhDb3VudCwgR0MzRHNpemVpKiBjb3VudCwgUGxhdGZvcm0zRE9iamVjdCogc2hh
ZGVycyk7CisgICAgR0MzRGludCBnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0LCBj
b25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0MzRGVudW0gcG5hbWUs
IEdDM0Rib29sZWFuKiB2YWx1ZSk7CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQzNE
ZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBHQzNE
ZW51bSBnZXRFcnJvcigpOworICAgIHZvaWQgZ2V0RmxvYXR2KEdDM0RlbnVtIHBuYW1lLCBHQzNE
ZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcG5hbWUs
IEdDM0RpbnQqIHZhbHVlKTsKKyAgICB2b2lkIGdldEludGVnZXJ2KEdDM0RlbnVtIHBuYW1lLCBH
QzNEaW50KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIFN0cmluZyBnZXRQ
cm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZh
bHVlKTsKKyAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3QsIEdDM0RlbnVtIHBu
YW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coUGxhdGZv
cm0zRE9iamVjdCk7CisKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmpl
Y3QpOworICAgIFN0cmluZyBnZXRTdHJpbmcoR0MzRGVudW0gbmFtZSk7CisgICAgdm9pZCBnZXRU
ZXhQYXJhbWV0ZXJmdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQq
IHZhbHVlKTsKKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogdmFsdWUp
OworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRGludCogdmFsdWUpOworICAgIEdDM0RpbnQgZ2V0VW5pZm9ybUxvY2F0
aW9uKFBsYXRmb3JtM0RPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBnZXRW
ZXJ0ZXhBdHRyaWJmdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCog
dmFsdWUpOworICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0MzRHVpbnQgaW5kZXgsIEdDM0Rl
bnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAgR0MzRHNpemVpcHRyIGdldFZlcnRleEF0
dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUpOworCisgICAgdm9pZCBo
aW50KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gbW9kZSk7CisgICAgR0MzRGJvb2xlYW4gaXNC
dWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNFbmFibGVkKEdDM0Rl
bnVtIGNhcCk7CisgICAgR0MzRGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0
KTsKKyAgICBHQzNEYm9vbGVhbiBpc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0Mz
RGJvb2xlYW4gaXNSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xl
YW4gaXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNUZXh0dXJl
KFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgbGluZVdpZHRoKEdDM0RmbG9hdCk7CisgICAg
dm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIHBpeGVsU3RvcmVp
KEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKTsKKyAgICB2b2lkIHBvbHlnb25PZmZzZXQo
R0MzRGZsb2F0IGZhY3RvciwgR0MzRGZsb2F0IHVuaXRzKTsKKworICAgIHZvaWQgcmVhZFBpeGVs
cyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0
LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIHZvaWQqIGRhdGEpOworCisgICAgdm9p
ZCByZW5kZXJidWZmZXJTdG9yYWdlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CisgICAgdm9pZCBzYW1w
bGVDb3ZlcmFnZShHQzNEY2xhbXBmIHZhbHVlLCBHQzNEYm9vbGVhbiBpbnZlcnQpOworICAgIHZv
aWQgc2Npc3NvcihHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0KTsKKyAgICB2b2lkIHNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0LCBjb25z
dCBTdHJpbmcmKTsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQg
cmVmLCBHQzNEdWludCBtYXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUoR0MzRGVu
dW0gZmFjZSwgR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spOworICAg
IHZvaWQgc3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzayk7CisgICAgdm9pZCBzdGVuY2lsTWFza1Nl
cGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0R1aW50IG1hc2spOworICAgIHZvaWQgc3RlbmNpbE9w
KEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcyk7CisgICAgdm9p
ZCBzdGVuY2lsT3BTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBmYWlsLCBHQzNEZW51
bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpOworCisgICAgYm9vbCB0ZXhJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1h
dCwgR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKTsKKyAgICB2b2lkIHRleFBhcmFt
ZXRlcmYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0IHBhcmFtKTsK
KyAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwg
R0MzRGludCBwYXJhbSk7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBl
LCBjb25zdCB2b2lkKiBwaXhlbHMpOworCisgICAgdm9pZCB1bmlmb3JtMWYoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGZsb2F0IHgpOworICAgIHZvaWQgdW5pZm9ybTFmdihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEc2l6ZWksIEdDM0RmbG9hdCogdik7CisgICAgdm9pZCB1bmlmb3JtMWkoR0MzRGludCBs
b2NhdGlvbiwgR0MzRGludCB4KTsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0MzRGludCBsb2NhdGlv
biwgR0MzRHNpemVpLCBHQzNEaW50KiB2KTsKKyAgICB2b2lkIHVuaWZvcm0yZihHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEZmxvYXQgeCwgZmxvYXQgeSk7CisgICAgdm9pZCB1bmlmb3JtMmZ2KEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGZsb2F0KiB2KTsKKyAgICB2b2lkIHVuaWZvcm0y
aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSk7CisgICAgdm9pZCB1bmlm
b3JtMml2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGludCogdik7CisgICAgdm9p
ZCB1bmlmb3JtM2YoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBH
QzNEZmxvYXQgeik7CisgICAgdm9pZCB1bmlmb3JtM2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rz
aXplaSwgR0MzRGZsb2F0KiB2KTsKKyAgICB2b2lkIHVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9u
LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6KTsKKyAgICB2b2lkIHVuaWZvcm0zaXYo
R0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEaW50KiB2KTsKKyAgICB2b2lkIHVuaWZv
cm00ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9h
dCB6LCBHQzNEZmxvYXQgdyk7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RzaXplaSwgR0MzRGZsb2F0KiB2KTsKKyAgICB2b2lkIHVuaWZvcm00aShHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6LCBHQzNEaW50IHcpOworICAg
IHZvaWQgdW5pZm9ybTRpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWksIEdDM0RpbnQqIHYp
OworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWks
IEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSk7CisgICAgdm9pZCB1bmlm
b3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGJvb2xlYW4gdHJh
bnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9h
dCogdmFsdWUpOworCisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOworICAg
IHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgpOworICAgIHZvaWQgdmVydGV4
QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7CisgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5KTsK
KyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1
ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliM2YoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB4
LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHopOworICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdD
M0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0
ZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwg
R0MzRGZsb2F0IHcpOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDM0R1aW50IGluZGV4LCBH
QzNEZmxvYXQqIHZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50
IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSBzdHJpZGUsIEdDM0Rp
bnRwdHIgb2Zmc2V0KTsKKworICAgIHZvaWQgdmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHks
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CisKKyAgICBQbGF0Zm9ybTNET2Jq
ZWN0IGNyZWF0ZUJ1ZmZlcigpOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlRnJhbWVidWZm
ZXIoKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVByb2dyYW0oKTsKKyAgICBQbGF0Zm9y
bTNET2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3Jl
YXRlU2hhZGVyKEdDM0RlbnVtKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVRleHR1cmUo
KTsKKworICAgIHZvaWQgZGVsZXRlQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQg
ZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBkZWxldGVQcm9n
cmFtKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRm
b3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QpOwor
ICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0KTsKKworICAgIHZvaWQgc3lu
dGhlc2l6ZUdMRXJyb3IoR0MzRGVudW0gZXJyb3IpOworCisgICAgRXh0ZW5zaW9uczNEKiBnZXRF
eHRlbnNpb25zKCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBjcmVhdGVTdXJmYWNlKEV2YXNfT2Jq
ZWN0KiB2aWV3LCBib29sIHJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpOworCisgICAgR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOworCisgICAgUGxhdGZvcm0z
RE9iamVjdCBtX2JvdW5kRkJPOworICAgIFBsYXRmb3JtM0RPYmplY3QgbV9ib3VuZFRleHR1cmU7
CisgICAgUGxhdGZvcm0zRE9iamVjdCBtX2JvdW5kQXJyYXlCdWZmZXI7CisKKyAgICBMaXN0SGFz
aFNldDxHQzNEZW51bT4gbV9zeW50aGV0aWNFcnJvcnM7CisKKyAgICBFdmFzX0dMKiBtX2V2YXNH
TDsKKyAgICBFdmFzX0dMX0NvbnRleHQqIG1fY29udGV4dDsKKyAgICBFdmFzX0dMX1N1cmZhY2Uq
IG1fc3VyZmFjZTsKKyAgICBFdmFzX0dMX0FQSSogbV9hcGk7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHcmFwaGljc0xheWVyRWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98304</attachid>
            <date>2011-06-22 20:10:06 -0700</date>
            <delta_ts>2012-02-25 23:59:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62961-20110623120959.patch</filename>
            <type>text/plain</type>
            <size>54640</size>
            <attacher name="Hyowon Kim">hw1008.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkzMjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZjY0YzgxMGE0ZDllMGEw
NjIwMmJiZDUyNGJkMTE3YWM4NTZiMGJkLi5hOTY0OTI5YWU2NDgxMGNkMzhhNzhhMTg0NWEzNzE4
NGFmZmY1OTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYxIEBACisyMDExLTA2LTIyICBIeW93
b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBBZGQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjI5NjEKKworICAgICAgICBBZGQgdGhlIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWwgY2xhc3MgdXNpbmcgRXZhc19HTCBBUElzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5HcmFw
aGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Om1ha2VDb250ZXh0Q3VycmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjppc0dMRVMyQ29t
cGxpYW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmFj
dGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6YXR0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpiaW5kUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJpbmRUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJsZW5kQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmxlbmRFcXVhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpibGVuZEVxdWF0aW9u
U2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmJsZW5kRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2xlYXJEZXB0aCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjbGVhclN0ZW5jaWwpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y29sb3JNYXNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNvbXBpbGVTaGFkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y29weVRleEltYWdlMkQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y29weVRleFN1
YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
Y3VsbEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmRlcHRoTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpkZXB0aFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmRldGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZmluaXNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmZsdXNoKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmZyYW1l
YnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmZyb250RmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRBdHRhY2hlZFNoYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0QXR0cmliTG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0Qm9vbGVh
bnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0QnVm
ZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6Z2V0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6Z2V0RmxvYXR2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEludGVnZXJ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFByb2dy
YW1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRQ
cm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpnZXRTaGFkZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFNoYWRlclNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRTdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VGV4UGFyYW1ldGVy
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VGV4
UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VmVydGV4QXR0cmliZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VmVydGV4QXR0cmliT2Zm
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmhpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aXNCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aXNFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzRnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aXNQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omlz
UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmlzU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmlzVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpsaW5lV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6bGlua1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6cG9seWdvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c2Npc3Nvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzaGFkZXJTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3RlbmNpbEZ1bmMpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3RlbmNpbEZ1bmNTZXBh
cmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVu
Y2lsTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpz
dGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnN0ZW5jaWxPcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnRleFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0xZik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMWZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0xaSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMWl2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0yZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMmZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0yaSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMml2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0z
Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3Jt
M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZv
cm0zaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlm
b3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVu
aWZvcm00Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1
bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnVuaWZvcm00aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
Ojp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmFsaWRhdGVQcm9ncmFtKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjFmKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjFm
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhB
dHRyaWIyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2
ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZpZXdwb3J0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjcmVhdGVGcmFt
ZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpj
cmVhdGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpkZWxldGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZGVsZXRlUHJvZ3JhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxldGVSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZGVsZXRl
U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRl
bGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaDogQWRkZWQuCisKIDIwMTEtMDYtMjAgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc0
ZmMxZjQyZjU1MWYzNGI5OGEwMDdjZDcxYzM5Y2NkZmVlYzYxZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRElu
dGVybmFsLmNwcApAQCAtMCwwICsxLDExMjIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEx
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoV0VCR0wpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzREludGVybmFsLmgiCisKKyNp
bmNsdWRlICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJld2tfcHJpdmF0ZS5oIgorCisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NP
d25QdHI8R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbD4gR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93
KiBob3N0V2luZG93LCBib29sIHJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpCit7CisgICAg
T3duUHRyPEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw+IGludGVybmFsID0gYWRvcHRQdHIobmV3
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKSk7CisKKyAgICBpZiAoIWludGVybmFsLT5pbml0
aWFsaXplKGF0dHJzLCBob3N0V2luZG93LCByZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gaW50ZXJuYWwucmVsZWFzZSgp
OworfQorCitHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsKCkKKyAgICA6IG1fYm91bmRGQk8oMCkKKyAgICAsIG1fYm91bmRUZXh0dXJlKDApCisgICAg
LCBtX2JvdW5kQXJyYXlCdWZmZXIoMCkKKyAgICAsIG1fZXZhc0dMKDApCisgICAgLCBtX2NvbnRl
eHQoMCkKKyAgICAsIG1fc3VyZmFjZSgwKQorICAgICwgbV9hcGkoMCkKK3sKK30KKworR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKQoreworICAg
IGlmIChtX2V2YXNHTCkgeworICAgICAgICBpZiAobV9zdXJmYWNlKQorICAgICAgICAgICAgZXZh
c19nbF9zdXJmYWNlX2Rlc3Ryb3kobV9ldmFzR0wsIG1fc3VyZmFjZSk7CisKKyAgICAgICAgaWYg
KG1fY29udGV4dCkKKyAgICAgICAgICAgIGV2YXNfZ2xfY29udGV4dF9kZXN0cm95KG1fZXZhc0dM
LCBtX2NvbnRleHQpOworCisgICAgICAgIGV2YXNfZ2xfZnJlZShtX2V2YXNHTCk7CisgICAgfQor
fQorCitib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmluaXRpYWxpemUoR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJvb2wg
YlJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpCit7CisgICAgRXZhc19PYmplY3QqIHZpZXcg
PSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGhvc3RXaW5kb3ctPnBsYXRmb3JtUGFnZUNsaWVu
dCgpKTsKKworICAgIEV2YXMqIGV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldCh2aWV3KTsKKyAg
ICBtX2V2YXNHTCA9IGV2YXNfZ2xfbmV3KGV2YXMpOworICAgIGlmICghbV9ldmFzR0wpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fYXBpID0gZXZhc19nbF9hcGlfZ2V0KG1fZXZhc0dM
KTsKKyAgICBpZiAoIW1fYXBpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFdmFzX0dM
X0NvbnRleHQqIHNoYXJlZENvbnRleHQgPSAwOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorICAgIGlmICghYlJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpIHsKKyAgICAg
ICAgLy8gdG8gc2hhcmUgcmVzb3VyY2VzIHdpdGggYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgY29u
dGV4dAorICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29tcG9zaXRpbmdDb250ZXh0ID0gZXdr
X3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4dF9nZXQodmlldyk7CisgICAgICAg
IGlmIChjb21wb3NpdGluZ0NvbnRleHQpCisgICAgICAgICAgICBzaGFyZWRDb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8RXZhc19HTF9Db250ZXh0Kj4oY29tcG9zaXRpbmdDb250ZXh0LT5wbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dDNEKCkpOworICAgIH0KKyNlbmRpZgorCisgICAgbV9jb250ZXh0ID0gZXZh
c19nbF9jb250ZXh0X2NyZWF0ZShtX2V2YXNHTCwgc2hhcmVkQ29udGV4dCk7CisgICAgaWYgKCFt
X2NvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghY3JlYXRlU3VyZmFj
ZSh2aWV3LCBiUmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBtYWtlQ29udGV4dEN1cnJlbnQoKTsKK30KKworYm9vbCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpjcmVhdGVTdXJmYWNlKEV2YXNfT2JqZWN0KiB2aWV3LCBi
b29sIHJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpCit7CisgICAgRXZhc19HTF9Db25maWcg
Y29uZmlnID0geworICAgICAgICBFVkFTX0dMX1JHQkFfOCwKKyAgICAgICAgRVZBU19HTF9ERVBU
SF9CSVRfOCwKKyAgICAgICAgRVZBU19HTF9TVEVOQ0lMX05PTkUKKyAgICB9OworCisgICAgaW50
IHggPSAwLCB5ID0gMCwgdyA9IDEsIGggPSAxOworCisgICAgaWYgKHJlbmRlckRpcmVjdGx5VG9F
dmFzR0xPYmplY3QpCisgICAgICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldCh2aWV3LCAmeCwg
JnksICZ3LCAmaCk7CisKKyAgICBtX3N1cmZhY2UgPSBldmFzX2dsX3N1cmZhY2VfY3JlYXRlKG1f
ZXZhc0dMLCAmY29uZmlnLCB3LCBoKTsKKyAgICBpZiAoIW1fc3VyZmFjZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKHJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpIHsKKyAg
ICAgICAgRXZhc19OYXRpdmVfU3VyZmFjZSBuYXRpdmVTdXJmYWNlOworICAgICAgICBldmFzX2ds
X25hdGl2ZV9zdXJmYWNlX2dldChtX2V2YXNHTCwgbV9zdXJmYWNlLCAmbmF0aXZlU3VyZmFjZSk7
CisKKyAgICAgICAgZXdrX3ZpZXdfZXZhc19nbF9vYmplY3RfY3JlYXRlKHZpZXcsICZuYXRpdmVT
dXJmYWNlLCB4LCB5LCB3LCBoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1BsYXRm
b3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dDsKK30KKwor
Ym9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjptYWtlQ29udGV4dEN1cnJlbnQoKQorewor
ICAgIHJldHVybiAoZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR0wsIG1fc3VyZmFjZSwgbV9j
b250ZXh0KSA9PSBFSU5BX1RSVUUpOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmFjdGl2ZVRleHR1cmUoR0MzRGVudW0gdGV4
dHVyZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xBY3RpdmVU
ZXh0dXJlKHRleHR1cmUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmF0
dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hh
ZGVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEF0dGFjaFNo
YWRlcihwcm9ncmFtLCBzaGFkZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsQmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGluZGV4LCBuYW1lLnV0
ZjgoKS5kYXRhKCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJpbmRC
dWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKK3sKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xCaW5kQnVmZmVyKHRhcmdldCwgYnVm
ZmVyKTsKKworICAgIGlmICh0YXJnZXQgPT0gR0xfQVJSQVlfQlVGRkVSKQorICAgICAgICBtX2Jv
dW5kQXJyYXlCdWZmZXIgPSBidWZmZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6YmluZEZyYW1lYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBm
cmFtZWJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIGlmIChmcmFt
ZWJ1ZmZlciAhPSBtX2JvdW5kRkJPKSB7CisgICAgICAgIG1fYXBpLT5nbEJpbmRGcmFtZWJ1ZmZl
cih0YXJnZXQsIGZyYW1lYnVmZmVyKTsKKyAgICAgICAgbV9ib3VuZEZCTyA9IGZyYW1lYnVmZmVy
OworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpiaW5kUmVuZGVy
YnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQmluZFJlbmRlcmJ1ZmZlcih0YXJn
ZXQsIGJ1ZmZlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmluZFRl
eHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQmluZFRleHR1cmUodGFyZ2V0LCB0
ZXh0dXJlKTsKKyAgICBtX2JvdW5kVGV4dHVyZSA9IHRleHR1cmU7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6YmxlbmRDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1w
ZiBncmVlbiwgR0MzRGNsYW1wZiBibHVlLCBHQzNEY2xhbXBmIGFscGhhKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1
ZSwgYWxwaGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJsZW5kRXF1
YXRpb24oR0MzRGVudW0gbW9kZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBt
X2FwaS0+Z2xCbGVuZEVxdWF0aW9uKG1vZGUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQzNEZW51bSBtb2RlUkdCLCBHQzNEZW51
bSBtb2RlQWxwaGEpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmds
QmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmxlbmRGdW5jKEdDM0RlbnVtIHNyY0ZhY3RvciwgR0Mz
RGVudW0gZHN0RmFjdG9yKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbEJsZW5kRnVuYyhzcmNGYWN0b3IsIGRzdEZhY3Rvcik7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6YmxlbmRGdW5jU2VwYXJhdGUoR0MzRGVudW0gc3JjUkdCLCBHQzNE
ZW51bSBkc3RSR0IsIEdDM0RlbnVtIHNyY0FscGhhLCBHQzNEZW51bSBkc3RBbHBoYSkKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xCbGVuZEZ1bmNTZXBhcmF0ZShz
cmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRy
IHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDM0RlbnVtIHVzYWdlKQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRh
LCB1c2FnZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YnVmZmVyU3Vi
RGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zmc2V0LCBHQzNEc2l6ZWlwdHIgc2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBt
X2FwaS0+Z2xCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKK30KKwor
R0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHQzNEZW51bSB0YXJnZXQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0
dXJuIG1fYXBpLT5nbENoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpjbGVhcihHQzNEYml0ZmllbGQgbWFzaykKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDbGVhcihtYXNrKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjbGVhckNvbG9yKEdDM0RjbGFtcGYgcmVk
LCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQ2xlYXJDb2xvcihyZWQs
IGdyZWVuLCBibHVlLCBhbHBoYSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbENsZWFyRGVwdGhmKGRlcHRoKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpjbGVhclN0ZW5jaWwoR0MzRGludCBjbGVhclZhbHVlKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbENsZWFyU3RlbmNpbChjbGVh
clZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjb2xvck1hc2so
R0MzRGJvb2xlYW4gcmVkLCBHQzNEYm9vbGVhbiBncmVlbiwgR0MzRGJvb2xlYW4gYmx1ZSwgR0Mz
RGJvb2xlYW4gYWxwaGEpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGkt
PmdsQ29sb3JNYXNrKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpjb21waWxlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVy
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbENvbXBpbGVTaGFk
ZXIoc2hhZGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjb3B5VGV4
SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFs
Rm9ybWF0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEaW50IGJvcmRlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwg
eCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RpbnQgeE9mZnNldCwgR0MzRGludCB5T2Zmc2V0LCBHQzNEaW50IHgsIEdDM0RpbnQg
eSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbENvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhPZmZzZXQsIHlPZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OmN1bGxGYWNlKEdDM0RlbnVtIG1vZGUpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQ3VsbEZhY2UobW9kZSk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZGVwdGhGdW5jKEdDM0RlbnVtIGZ1bmMpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRGVwdGhGdW5jKGZ1bmMp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRlcHRoTWFzayhHQzNEYm9v
bGVhbiBmbGFnKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERl
cHRoTWFzayhmbGFnKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZXB0
aFJhbmdlKEdDM0RjbGFtcGYgek5lYXIsIEdDM0RjbGFtcGYgekZhcikKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZXB0aFJhbmdlZih6TmVhciwgekZhcik7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZGV0YWNoU2hhZGVyKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRGV0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRl
cik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZGlzYWJsZShHQzNEZW51
bSBjYXApCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRGlzYWJs
ZShjYXApOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRpc2FibGVWZXJ0
ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBtX2FwaS0+Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwg
R0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbERyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkcmF3RWxlbWVudHMoR0MzRGVudW0gbW9k
ZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBHQzNEaW50cHRyIG9mZnNldCkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEcmF3RWxlbWVudHMobW9k
ZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KG9mZnNldCkpKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpl
bmFibGUoR0MzRGVudW0gY2FwKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbEVuYWJsZShjYXApOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpmaW5pc2goKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEZpbmlzaCgpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmZsdXNoKCkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xGbHVzaCgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVyYnVmZmVyVGFyZ2V0LCBQbGF0Zm9ybTNE
T2JqZWN0IHJlbmRlcmJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBt
X2FwaS0+Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRl
cmJ1ZmZlclRhcmdldCwgcmVuZGVyYnVmZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleFRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
LCBHQzNEaW50IGxldmVsKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbEZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4VGFyZ2V0LCB0
ZXh0dXJlLCBsZXZlbCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZnJv
bnRGYWNlKEdDM0RlbnVtIG1vZGUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsRnJvbnRGYWNlKG1vZGUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdldCkKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworfQorCiti
b29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQoreworICAg
IGlmICghcHJvZ3JhbSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworCisgICAgaW50IG1heE5hbWVMZW5ndGggPSAtMTsKKyAgICBtX2FwaS0+Z2xHZXRQ
cm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4TmFt
ZUxlbmd0aCk7CisgICAgaWYgKG1heE5hbWVMZW5ndGggPCAwKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBPd25BcnJheVB0cjxjaGFyPiBuYW1lID0gYWRvcHRBcnJheVB0cihuZXcgY2hh
clttYXhOYW1lTGVuZ3RoXSk7CisgICAgaWYgKCFuYW1lKSB7CisgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgaW50IGxlbmd0aCA9IDA7CisgICAgaW50IHNpemUgPSAtMTsKKyAgICBHTGVudW0gdHlw
ZSA9IDA7CisKKyAgICBtX2FwaS0+Z2xHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIG1h
eE5hbWVMZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZS5nZXQoKSk7CisgICAgaWYg
KHNpemUgPCAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbmZvLm5hbWUgPSBTdHJp
bmc6OmZyb21VVEY4KG5hbWUuZ2V0KCksIGxlbmd0aCk7CisgICAgaW5mby50eXBlID0gdHlwZTsK
KyAgICBpbmZvLnNpemUgPSBzaXplOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBHQzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykKK3sKKyAgICBpZiAoIXBy
b2dyYW0pIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KworICAgIGludCBtYXhOYW1lTGVuZ3RoID0gLTE7CisgICAgbV9hcGktPmdsR2V0UHJvZ3JhbWl2
KHByb2dyYW0sIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhOYW1lTGVuZ3RoKTsK
KyAgICBpZiAobWF4TmFtZUxlbmd0aCA8IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IE93bkFycmF5UHRyPGNoYXI+IG5hbWUgPSBhZG9wdEFycmF5UHRyKG5ldyBjaGFyW21heE5hbWVM
ZW5ndGhdKTsKKyAgICBpZiAoIW5hbWUpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbnQg
bGVuZ3RoID0gMDsKKyAgICBpbnQgc2l6ZSA9IC0xOworICAgIEdMZW51bSB0eXBlID0gMDsKKwor
ICAgIG1fYXBpLT5nbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heE5hbWVMZW5n
dGgsICZsZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZS5nZXQoKSk7CisgICAgaWYgKHNpemUgPCAw
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbmZvLm5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KG5hbWUuZ2V0KCksIGxlbmd0aCk7CisgICAgaW5mby50eXBlID0gdHlwZTsKKyAgICBpbmZv
LnNpemUgPSBzaXplOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0s
IEdDM0RzaXplaSBtYXhDb3VudCwgR0MzRHNpemVpKiBjb3VudCwgUGxhdGZvcm0zRE9iamVjdCog
c2hhZGVycykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRB
dHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBzaGFkZXJzKTsKK30KKwor
aW50IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmdldEJvb2xlYW52KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGJvb2xlYW4qIHZhbHVlKQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldEJvb2xlYW52KHBh
cmFtTmFtZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omdl
dEJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBH
QzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+
Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOworfQorCitH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpn
ZXRDb250ZXh0QXR0cmlidXRlcygpCit7CisgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKK30KKwor
R0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0RXJyb3IoKQoreworICAgIGlm
IChtX3N5bnRoZXRpY0Vycm9ycy5zaXplKCkgPiAwKSB7CisgICAgICAgIEdDM0RlbnVtIGVyciA9
IG1fc3ludGhldGljRXJyb3JzLmZpcnN0KCk7CisgICAgICAgIG1fc3ludGhldGljRXJyb3JzLnJl
bW92ZShtX3N5bnRoZXRpY0Vycm9ycy5iZWdpbigpKTsKKyAgICAgICAgcmV0dXJuIGVycjsKKyAg
ICB9CisKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsR2V0
RXJyb3IoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRGbG9hdHYo
R0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldEZsb2F0dihwYXJhbU5hbWUsIHZhbHVlKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0Rl
bnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFy
Z2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQq
IHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgc3dpdGNoIChwYXJh
bU5hbWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfRlJBR01FTlRfVU5JRk9S
TV9WRUNUT1JTOgorICAgICAgICBtX2FwaS0+Z2xHZXRJbnRlZ2VydihHTF9NQVhfRlJBR01FTlRf
VU5JRk9STV9WRUNUT1JTLCB2YWx1ZSk7CisgICAgICAgICp2YWx1ZSAvPSA0OworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVYX1VOSUZPUk1fVkVD
VE9SUzoKKyAgICAgICAgbV9hcGktPmdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9VTklGT1JN
X1ZFQ1RPUlMsIHZhbHVlKTsKKyAgICAgICAgKnZhbHVlIC89IDQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WQVJZSU5HX1ZFQ1RPUlM6CisgICAgICAg
IG1fYXBpLT5nbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsIHZhbHVlKTsKKyAg
ICAgICAgKnZhbHVlIC89IDQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IG1fYXBpLT5nbEdldEludGVnZXJ2KHBhcmFtTmFtZSwgdmFsdWUpOworICAgIH0KK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtLCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldFByb2dyYW1pdihwcm9ncmFtLCBw
YXJhbU5hbWUsIHZhbHVlKTsKK30KKworU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKK3sKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKworICAgIGludCBsb2dMZW5ndGggPSAwOworICAgIG1fYXBpLT5n
bEdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RI
LCAmbG9nTGVuZ3RoKTsKKyAgICBpZiAoIWxvZ0xlbmd0aCkKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworCisgICAgT3duQXJyYXlQdHI8Y2hhcj4gbG9nID0gYWRvcHRBcnJheVB0cihuZXcgY2hh
cltsb2dMZW5ndGhdKTsKKyAgICBpZiAoIWxvZykKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgaW50IHJldHVybmVkTG9nTGVuZ3RoID0gMDsKKyAgICBtX2FwaS0+Z2xHZXRQcm9ncmFt
SW5mb0xvZyhwcm9ncmFtLCBsb2dMZW5ndGgsICZyZXR1cm5lZExvZ0xlbmd0aCwgbG9nLmdldCgp
KTsKKyAgICBBU1NFUlQobG9nTGVuZ3RoID09IHJldHVybmVkTG9nTGVuZ3RoICsgMSk7CisKKyAg
ICBTdHJpbmcgcmVzID0gU3RyaW5nOjpmcm9tVVRGOChsb2cuZ2V0KCksIHJldHVybmVkTG9nTGVu
Z3RoKTsKKyAgICByZXR1cm4gcmVzOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0g
cGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFt
ZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFNoYWRl
cml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQq
IHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldFNo
YWRlcml2KHNoYWRlciwgcGFyYW1OYW1lLCB2YWx1ZSk7Cit9CisKK1N0cmluZyBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVy
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgaW50IGxvZ0xlbmd0aCA9IDA7
CisgICAgbV9hcGktPmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6SU5G
T19MT0dfTEVOR1RILCAmbG9nTGVuZ3RoKTsKKyAgICBpZiAobG9nTGVuZ3RoIDw9IDEpCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIE93bkFycmF5UHRyPGNoYXI+IGxvZyA9IGFkb3B0
QXJyYXlQdHIobmV3IGNoYXJbbG9nTGVuZ3RoXSk7CisgICAgaWYgKCFsb2cpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKworICAgIGludCByZXR1cm5lZExvZ0xlbmd0aCA9IDA7CisgICAgbV9h
cGktPmdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxvZ0xlbmd0aCwgJnJldHVybmVkTG9nTGVu
Z3RoLCBsb2cuZ2V0KCkpOworICAgIEFTU0VSVChsb2dMZW5ndGggPT0gcmV0dXJuZWRMb2dMZW5n
dGggKyAxKTsKKworICAgIFN0cmluZyByZXMgPSBTdHJpbmc6OmZyb21VVEY4KGxvZy5nZXQoKSwg
cmV0dXJuZWRMb2dMZW5ndGgpOworICAgIHJldHVybiByZXM7Cit9CisKK1N0cmluZyBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFk
ZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpbnQgbG9nTGVuZ3RoID0g
MDsKKyAgICBtX2FwaS0+Z2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX1NIQURFUl9TT1VSQ0VfTEVO
R1RILCAmbG9nTGVuZ3RoKTsKKyAgICBpZiAobG9nTGVuZ3RoIDw9IDEpCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKworICAgIE93bkFycmF5UHRyPGNoYXI+IGxvZyA9IGFkb3B0QXJyYXlQdHIo
bmV3IGNoYXJbbG9nTGVuZ3RoXSk7CisgICAgaWYgKCFsb2cpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKworICAgIGludCByZXR1cm5lZExvZ0xlbmd0aCA9IDA7CisgICAgbV9hcGktPmdsR2V0
U2hhZGVyU291cmNlKHNoYWRlciwgbG9nTGVuZ3RoLCAmcmV0dXJuZWRMb2dMZW5ndGgsIGxvZy5n
ZXQoKSk7CisgICAgQVNTRVJUKGxvZ0xlbmd0aCA9PSByZXR1cm5lZExvZ0xlbmd0aCArIDEpOwor
CisgICAgU3RyaW5nIHJlcyA9IFN0cmluZzo6ZnJvbVVURjgobG9nLmdldCgpLCByZXR1cm5lZExv
Z0xlbmd0aCk7CisgICAgcmV0dXJuIHJlczsKK30KKworU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmdldFN0cmluZyhHQzNEZW51bSBuYW1lKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
bV9hcGktPmdsR2V0U3RyaW5nKG5hbWUpKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Z2V0VGV4UGFyYW1ldGVyZnYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJh
bU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9hcGktPmdsR2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRUZXhQYXJhbWV0ZXJpdihH
QzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0VGV4UGFyYW1ldGVyaXYo
dGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fYXBpLT5nbEdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFVuaWZvcm1pdihQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHZhbHVlKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldFVuaWZvcm1pdihwcm9ncmFt
LCBsb2NhdGlvbiwgdmFsdWUpOworfQorCitHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0
cmluZyYgbmFtZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9h
cGktPmdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VmVydGV4QXR0cmliZnYoR0Mz
RHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRWZXJ0ZXhBdHRyaWJmdihp
bmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Z2V0VmVydGV4QXR0cmliaXYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFt
ZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUpOworfQorCitH
QzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0VmVydGV4QXR0cmliT2Zm
c2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgdm9pZCogcG9pbnRlciA9IDA7CisgICAgbV9hcGktPmdsR2V0VmVy
dGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBhcmFtTmFtZSwgJnBvaW50ZXIpOworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PEdDM0RzaXplaXB0cj4ocG9pbnRlcik7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aGludChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIG1v
ZGUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsSGludCh0YXJn
ZXQsIG1vZGUpOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpp
c0J1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsSXNCdWZmZXIoYnVmZmVyKTsKK30KKworR0MzRGJv
b2xlYW4gR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aXNFbmFibGVkKEdDM0RlbnVtIGNhcCkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsSXNFbmFi
bGVkKGNhcCk7Cit9CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omlz
RnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsSXNGcmFtZWJ1ZmZlcihmcmFtZWJ1
ZmZlcik7Cit9CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzUHJv
Z3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbElzUHJvZ3JhbShwcm9ncmFtKTsKK30KKworR0MzRGJv
b2xlYW4gR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm0z
RE9iamVjdCByZW5kZXJidWZmZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
cmV0dXJuIG1fYXBpLT5nbElzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7Cit9CisKK0dDM0Ri
b29sZWFuIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzU2hhZGVyKFBsYXRmb3JtM0RPYmpl
Y3Qgc2hhZGVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2Fw
aS0+Z2xJc1NoYWRlcihzaGFkZXIpOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjppc1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xJc1RleHR1cmUodGV4dHVy
ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6bGluZVdpZHRoKEdDM0Rm
bG9hdCB3aWR0aCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xM
aW5lV2lkdGgod2lkdGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omxp
bmtQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xMaW5rUHJvZ3JhbShwcm9ncmFtKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpwaXhlbFN0b3JlaShHQzNEZW51bSBwYXJhbU5hbWUs
IEdDM0RpbnQgcGFyYW0pCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGkt
PmdsUGl4ZWxTdG9yZWkocGFyYW1OYW1lLCBwYXJhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6cG9seWdvbk9mZnNldChHQzNEZmxvYXQgZmFjdG9yLCBHQzNEZmxvYXQg
dW5pdHMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsUG9seWdv
bk9mZnNldChmYWN0b3IsIHVuaXRzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgdm9pZCogZGF0
YSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIG1fYXBpLT5nbEZsdXNoKCk7
CisgICAgbV9hcGktPmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGRhdGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJlbmRlcmJ1
ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbEZvcm1hdCwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworCisgICAgbV9hcGktPmdsUmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFs
Rm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpzYW1wbGVDb3ZlcmFnZShHQzNEY2xhbXBmIHZhbHVlLCBHQzNEYm9vbGVhbiBpbnZlcnQp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsU2FtcGxlQ292ZXJh
Z2UodmFsdWUsIGludmVydCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
c2Npc3NvcihHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFNjaXNz
b3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6c2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBjb25zdCBTdHJpbmcm
IHN0cmluZykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBjb25zdCBjaGFyKiBz
dHIgPSBzdHJpbmcudXRmOCgpLmRhdGEoKTsKKyAgICBpbnQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOworICAgIG1fYXBpLT5nbFNoYWRlclNvdXJjZShzaGFkZXIsIDEsICZzdHIsICZsZW5ndGgp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnN0ZW5jaWxGdW5jKEdDM0Rl
bnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZShH
QzNEZW51bSBmYWNlLCBHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTdGVuY2lsRnVuY1Nl
cGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTdGVuY2lsTWFzayhtYXNrKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDM0RlbnVtIGZh
Y2UsIEdDM0R1aW50IG1hc2spCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsU3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gekZh
aWwsIEdDM0RlbnVtIHpQYXNzKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbFN0ZW5jaWxPcChmYWlsLCB6RmFpbCwgelBhc3MpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0Rl
bnVtIGZhaWwsIEdDM0RlbnVtIHpGYWlsLCBHQzNEZW51bSB6UGFzcykKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWls
LCB6RmFpbCwgelBhc3MpOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnRl
eEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRl
ciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVGV4SW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQs
IHR5cGUsIHBpeGVscyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6dGV4UGFyYW1ldGVyZihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBh
cmFtTmFtZSwgR0MzRGZsb2F0IHBhcmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fYXBpLT5nbFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwYXJhbU5hbWUsIHBhcmFtKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50IHBhcmFtKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwYXJh
bU5hbWUsIHBhcmFtKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp0ZXhT
dWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4T2Zmc2V0
LCBHQzNEaW50IHlPZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0Mz
RGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCit7CisgICAg
bV9hcGktPmdsVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4T2Zmc2V0LCB5T2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTFmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm0xZihs
b2NhdGlvbiwgeCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9y
bTFmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGZsb2F0KiB2KQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm0xZnYobG9jYXRp
b24sIHNpemUsIHYpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZv
cm0xaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTFpKGxvY2F0aW9uLCB4KTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlmb3JtMWl2KEdDM0RpbnQgbG9jYXRpb24sIEdD
M0RzaXplaSBzaXplLCBHQzNEaW50KiB2KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fYXBpLT5nbFVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIHYpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm0yZihHQzNEaW50IGxvY2F0aW9uLCBHQzNE
ZmxvYXQgeCwgR0MzRGZsb2F0IHkpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsVW5pZm9ybTJmKGxvY2F0aW9uLCB4LCB5KTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjp1bmlmb3JtMmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBz
aXplLCBHQzNEZmxvYXQqIHYpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsVW5pZm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTJpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCwg
R0MzRGludCB5KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVu
aWZvcm0yaShsb2NhdGlvbiwgeCwgeSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6dW5pZm9ybTJpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGlu
dCogdikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3Jt
Mml2KGxvY2F0aW9uLCBzaXplLCB2KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjp1bmlmb3JtM2YoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5
LCBHQzNEZmxvYXQgeikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+
Z2xVbmlmb3JtM2YobG9jYXRpb24sIHgsIHksIHopOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OnVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUs
IEdDM0RmbG9hdCogdikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+
Z2xVbmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCB2KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjp1bmlmb3JtM2koR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNE
aW50IHksIEdDM0RpbnQgeikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2Fw
aS0+Z2xVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNp
emUsIEdDM0RpbnQqIHYpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGkt
PmdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgdik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTRmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBH
QzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwgdyk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9ybTRmdihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGZsb2F0KiB2KQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm00ZnYobG9jYXRpb24sIHNpemUsIHYp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVuaWZvcm00aShHQzNEaW50
IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6LCBHQzNEaW50IHcpCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTRpKGxvY2F0
aW9uLCB4LCB5LCB6LCB3KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1
bmlmb3JtNGl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEaW50KiB2KQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm00aXYobG9j
YXRpb24sIHNpemUsIHYpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVu
aWZvcm1NYXRyaXgyZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0Rib29s
ZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFu
c3Bvc2UsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp1bmlm
b3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEYm9vbGVh
biB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNw
b3NlLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dW5pZm9y
bU1hdHJpeDRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGJvb2xlYW4g
dHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9z
ZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnVzZVByb2dy
YW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbFVzZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xWYWxpZGF0ZVBy
b2dyYW0ocHJvZ3JhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVy
dGV4QXR0cmliMWYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB4KQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjFmKGluZGV4LCB4KTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjFmdihpbmRleCwgdmFsdWVzKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRl
eCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgs
IEdDM0RmbG9hdCogdmFsdWVzKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbFZlcnRleEF0dHJpYjJmdihpbmRleCwgdmFsdWVzKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZs
b2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICBtX2FwaS0+Z2xWZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeik7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliM2Z2KEdDM0R1aW50
IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIHZhbHVlcyk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgs
IEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjRmKGlu
ZGV4LCB4LCB5LCB6LCB3KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2
ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjRmdihpbmRl
eCwgdmFsdWVzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2ZXJ0ZXhB
dHRyaWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUs
IEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQsIEdDM0RzaXplaSBzdHJpZGUsIEdDM0RpbnRwdHIgb2Zm
c2V0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgaWYgKG1fYm91bmRBcnJh
eUJ1ZmZlciA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2FwaS0+Z2xWZXJ0ZXhBdHRy
aWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJw
cmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2aWV3cG9ydChHQzNEaW50IHgsIEdDM0Rp
bnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQp
OworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0
ZUJ1ZmZlcigpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgUGxhdGZvcm0zRE9i
amVjdCBvOworICAgIG1fYXBpLT5nbEdlbkJ1ZmZlcnMoMSwgJm8pOworICAgIHJldHVybiBvOwor
fQorCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZUZy
YW1lYnVmZmVyKCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBQbGF0Zm9ybTNE
T2JqZWN0IG8gPSAwOworICAgIG1fYXBpLT5nbEdlbkZyYW1lYnVmZmVycygxLCAmbyk7CisgICAg
cmV0dXJuIG87Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6Y3JlYXRlUHJvZ3JhbSgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0
dXJuIG1fYXBpLT5nbENyZWF0ZVByb2dyYW0oKTsKK30KKworUGxhdGZvcm0zRE9iamVjdCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpjcmVhdGVSZW5kZXJidWZmZXIoKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIFBsYXRmb3JtM0RPYmplY3QgbzsKKyAgICBtX2FwaS0+Z2xH
ZW5SZW5kZXJidWZmZXJzKDEsICZvKTsKKyAgICByZXR1cm4gbzsKK30KKworUGxhdGZvcm0zRE9i
amVjdCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpjcmVhdGVTaGFkZXIoR0MzRGVudW0gc2hh
ZGVyVHlwZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGkt
PmdsQ3JlYXRlU2hhZGVyKHNoYWRlclR5cGUpOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIFBsYXRmb3JtM0RPYmplY3QgbzsKKyAgICBtX2FwaS0+Z2xHZW5UZXh0
dXJlcygxLCAmbyk7CisgICAgcmV0dXJuIG87Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6ZGVsZXRlQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZl
cik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6ZGVsZXRlRnJhbWVidWZm
ZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICBtX2FwaS0+Z2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxldGVQcm9ncmFtKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBt
X2FwaS0+Z2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1
ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZWxldGVS
ZW5kZXJidWZmZXJzKDEsICZyZW5kZXJidWZmZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZWxldGVTaGFkZXIoc2hhZGVy
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpkZWxldGVUZXh0dXJlKFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xEZWxldGVUZXh0dXJlcygxLCAmdGV4dHVyZSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6c3ludGhlc2l6ZUdMRXJyb3IoR0MzRGVudW0gZXJyb3IpCit7
CisgICAgbV9zeW50aGV0aWNFcnJvcnMuYWRkKGVycm9yKTsKK30KKworRXh0ZW5zaW9uczNEKiBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRFeHRlbnNpb25zKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45ZjIzM2FkYzBhM2Q3OWJiZjFlYzA2NTQ4ZWNhOWM1MzhkNjAyYTVkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWwuaApAQCAtMCwwICsxLDIyNSBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbF9oCisjZGVmaW5lIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxfaAorCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKworI2luY2x1ZGUgPEV2YXNfR0wuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHQzREludGVybmFsIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzREludGVybmFs
PiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cq
LCBib29sIHJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpOworICAgIH5HcmFwaGljc0NvbnRl
eHQzREludGVybmFsKCk7CisKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdDsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CisjZW5kaWYK
KworICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBib29sIGlzR0xFUzJDb21w
bGlhbnQoKSBjb25zdDsKKworICAgIHZvaWQgYWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJl
KTsKKyAgICB2b2lkIGF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRm
b3JtM0RPYmplY3Qgc2hhZGVyKTsKKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bTNET2JqZWN0LCBHQzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lk
IGJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lk
IGJpbmRGcmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAg
IHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3Qp
OworICAgIHZvaWQgYmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0
KTsKKyAgICB2b2lkIGJsZW5kQ29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4s
IEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSk7CisgICAgdm9pZCBibGVuZEVxdWF0
aW9uKEdDM0RlbnVtIG1vZGUpOworICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDM0Rl
bnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSk7CisgICAgdm9pZCBibGVuZEZ1bmMoR0Mz
RGVudW0gc3JjRmFjdG9yLCBHQzNEZW51bSBkc3RGYWN0b3IpOworICAgIHZvaWQgYmxlbmRGdW5j
U2VwYXJhdGUoR0MzRGVudW0gc3JjUkdCLCBHQzNEZW51bSBkc3RSR0IsIEdDM0RlbnVtIHNyY0Fs
cGhhLCBHQzNEZW51bSBkc3RBbHBoYSk7CisKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEc2l6ZWlwdHIsIGNvbnN0IHZvaWQqIGRhdGEsIEdDM0RlbnVtIHVzYWdlKTsK
KyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50cHRyIG9mZnNl
dCwgR0MzRHNpemVpcHRyLCBjb25zdCB2b2lkKiBkYXRhKTsKKworICAgIEdDM0RlbnVtIGNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KTsKKyAgICB2b2lkIGNsZWFyKEdDM0Ri
aXRmaWVsZCBtYXNrKTsKKyAgICB2b2lkIGNsZWFyQ29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0Rj
bGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSk7CisgICAgdm9p
ZCBjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpOworICAgIHZvaWQgY2xlYXJTdGVuY2lsKEdD
M0RpbnQgY2xlYXJWYWx1ZSk7CisgICAgdm9pZCBjb2xvck1hc2soR0MzRGJvb2xlYW4gcmVkLCBH
QzNEYm9vbGVhbiBncmVlbiwgR0MzRGJvb2xlYW4gYmx1ZSwgR0MzRGJvb2xlYW4gYWxwaGEpOwor
ICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0KTsKKworICAgIHZvaWQgY29w
eVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRl
cm5hbEZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpOworICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhPZmZzZXQsIEdDM0RpbnQg
eU9mZnNldCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCk7CisgICAgdm9pZCBjdWxsRmFjZShHQzNEZW51bSBtb2RlKTsKKyAgICB2b2lkIGRl
cHRoRnVuYyhHQzNEZW51bSBmdW5jKTsKKyAgICB2b2lkIGRlcHRoTWFzayhHQzNEYm9vbGVhbiBm
bGFnKTsKKyAgICB2b2lkIGRlcHRoUmFuZ2UoR0MzRGNsYW1wZiB6TmVhciwgR0MzRGNsYW1wZiB6
RmFyKTsKKyAgICB2b2lkIGRldGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0LCBQbGF0Zm9ybTNE
T2JqZWN0KTsKKyAgICB2b2lkIGRpc2FibGUoR0MzRGVudW0gY2FwKTsKKyAgICB2b2lkIGRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCk7CisgICAgdm9pZCBkcmF3QXJyYXlz
KEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCk7CisgICAgdm9p
ZCBkcmF3RWxlbWVudHMoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0
eXBlLCBHQzNEaW50cHRyIG9mZnNldCk7CisKKyAgICB2b2lkIGVuYWJsZShHQzNEZW51bSBjYXAp
OworICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpOworICAg
IHZvaWQgZmluaXNoKCk7CisgICAgdm9pZCBmbHVzaCgpOworICAgIHZvaWQgZnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51
bSByZW5kZXJidWZmZXJUYXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZnJhbWVi
dWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNE
ZW51bSB0ZXhUYXJnZXQsIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RpbnQgbGV2ZWwpOworICAgIHZv
aWQgZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpOworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAoR0Mz
RGVudW0gdGFyZ2V0KTsKKworICAgIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKKyAgICBib29sIGdldEFj
dGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgQWN0
aXZlSW5mbyYpOworICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgR0MzRHNpemVpIG1heENvdW50LCBHQzNEc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybTNE
T2JqZWN0KiBzaGFkZXJzKTsKKyAgICBHQzNEaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3Jt
M0RPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBnZXRCb29sZWFudihHQzNE
ZW51bSBwYXJhbU5hbWUsIEdDM0Rib29sZWFuKiB2YWx1ZSk7CisgICAgdm9pZCBnZXRCdWZmZXJQ
YXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCog
dmFsdWUpOworICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGdldENvbnRleHRBdHRy
aWJ1dGVzKCk7CisgICAgR0MzRGVudW0gZ2V0RXJyb3IoKTsKKyAgICB2b2lkIGdldEZsb2F0dihH
QzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpOworICAgIHZvaWQgZ2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRh
Y2htZW50LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICB2b2lkIGdl
dEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIHZvaWQg
Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVudW0gcGFyYW1OYW1l
LCBHQzNEaW50KiB2YWx1ZSk7CisgICAgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3Jt
M0RPYmplY3QpOworICAgIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICB2b2lkIGdl
dFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3QsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCog
dmFsdWUpOworICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QpOwor
CisgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBTdHJp
bmcgZ2V0U3RyaW5nKEdDM0RlbnVtIG5hbWUpOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpOwor
ICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJh
bU5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogdmFsdWUpOworICAg
IHZvaWQgZ2V0VW5pZm9ybWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGludCogdmFsdWUpOworICAgIEdDM0RpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBs
YXRmb3JtM0RPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBnZXRWZXJ0ZXhB
dHRyaWJmdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZh
bHVlKTsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdDM0R1aW50IGluZGV4LCBHQzNEZW51
bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICBHQzNEc2l6ZWlwdHIgZ2V0VmVydGV4
QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUpOworCisgICAg
dm9pZCBoaW50KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gbW9kZSk7CisgICAgR0MzRGJvb2xl
YW4gaXNCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNFbmFibGVk
KEdDM0RlbnVtIGNhcCk7CisgICAgR0MzRGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNE
T2JqZWN0KTsKKyAgICBHQzNEYm9vbGVhbiBpc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7Cisg
ICAgR0MzRGJvb2xlYW4gaXNSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0Mz
RGJvb2xlYW4gaXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNU
ZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgbGluZVdpZHRoKEdDM0RmbG9hdCk7
CisgICAgdm9pZCBsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIHBpeGVs
U3RvcmVpKEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCBwYXJhbSk7CisgICAgdm9pZCBwb2x5
Z29uT2Zmc2V0KEdDM0RmbG9hdCBmYWN0b3IsIEdDM0RmbG9hdCB1bml0cyk7CisKKyAgICB2b2lk
IHJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCB2b2lkKiBkYXRhKTsK
KworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IGludGVybmFsRm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOworICAg
IHZvaWQgc2FtcGxlQ292ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1ZSwgR0MzRGJvb2xlYW4gaW52ZXJ0
KTsKKyAgICB2b2lkIHNjaXNzb3IoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCk7CisgICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9i
amVjdCwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5j
LCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzayk7CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFy
YXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBt
YXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrKEdDM0R1aW50IG1hc2spOworICAgIHZvaWQgc3Rl
bmNpbE1hc2tTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEdWludCBtYXNrKTsKKyAgICB2b2lk
IHN0ZW5jaWxPcChHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6RmFpbCwgR0MzRGVudW0gelBhc3Mp
OworICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZmFp
bCwgR0MzRGVudW0gekZhaWwsIEdDM0RlbnVtIHpQYXNzKTsKKworICAgIGJvb2wgdGV4SW1hZ2Uy
RChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNE
ZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscyk7CisgICAgdm9p
ZCB0ZXhQYXJhbWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNE
ZmxvYXQgcGFyYW0pOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaShHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCBwYXJhbSk7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4T2Zmc2V0LCBHQzNEaW50
IHlPZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9y
bWF0LCBHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpOworCisgICAgdm9pZCB1bmlm
b3JtMWYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgpOworICAgIHZvaWQgdW5pZm9ybTFm
dihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWksIEdDM0RmbG9hdCogdik7CisgICAgdm9pZCB1
bmlmb3JtMWkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB4KTsKKyAgICB2b2lkIHVuaWZvcm0x
aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEaW50KiB2KTsKKyAgICB2b2lkIHVu
aWZvcm0yZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgZmxvYXQgeSk7CisgICAgdm9p
ZCB1bmlmb3JtMmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGZsb2F0KiB2KTsK
KyAgICB2b2lkIHVuaWZvcm0yaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQg
eSk7CisgICAgdm9pZCB1bmlmb3JtMml2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0Mz
RGludCogdik7CisgICAgdm9pZCB1bmlmb3JtM2YoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0
IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeik7CisgICAgdm9pZCB1bmlmb3JtM2Z2KEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGZsb2F0KiB2KTsKKyAgICB2b2lkIHVuaWZvcm0z
aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6KTsKKyAg
ICB2b2lkIHVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEaW50KiB2
KTsKKyAgICB2b2lkIHVuaWZvcm00ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0Mz
RGZsb2F0IHksIEdDM0RmbG9hdCB6LCBHQzNEZmxvYXQgdyk7CisgICAgdm9pZCB1bmlmb3JtNGZ2
KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGZsb2F0KiB2KTsKKyAgICB2b2lkIHVu
aWZvcm00aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6
LCBHQzNEaW50IHcpOworICAgIHZvaWQgdW5pZm9ybTRpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNE
c2l6ZWksIEdDM0RpbnQqIHYpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEc2l6ZWksIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1
ZSk7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXpl
aSwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIHVu
aWZvcm1NYXRyaXg0ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUpOworCisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRm
b3JtM0RPYmplY3QpOworICAgIHZvaWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3Qp
OworCisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgp
OworICAgIHZvaWQgdmVydGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZh
bHVlcyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0
IHgsIEdDM0RmbG9hdCB5KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRl
eCwgR0MzRGZsb2F0KiB2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliM2YoR0MzRHVpbnQg
aW5kZXgsIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHopOworICAgIHZvaWQg
dmVydGV4QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7CisgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWI0ZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9h
dCB5LCBHQzNEZmxvYXQgeiwgR0MzRGZsb2F0IHcpOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2
KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdD
M0Rib29sZWFuIG5vcm1hbGl6ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0Rz
aXplaSBzdHJpZGUsIEdDM0RpbnRwdHIgb2Zmc2V0KTsKKworICAgIHZvaWQgdmlld3BvcnQoR0Mz
RGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CisK
KyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZUJ1ZmZlcigpOworICAgIFBsYXRmb3JtM0RPYmpl
Y3QgY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVByb2dy
YW0oKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIFBs
YXRmb3JtM0RPYmplY3QgY3JlYXRlU2hhZGVyKEdDM0RlbnVtKTsKKyAgICBQbGF0Zm9ybTNET2Jq
ZWN0IGNyZWF0ZVRleHR1cmUoKTsKKworICAgIHZvaWQgZGVsZXRlQnVmZmVyKFBsYXRmb3JtM0RP
YmplY3QpOworICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7Cisg
ICAgdm9pZCBkZWxldGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRl
UmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRlU2hhZGVyKFBs
YXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0
KTsKKworICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0MzRGVudW0gZXJyb3IpOworCisgICAg
RXh0ZW5zaW9uczNEKiBnZXRFeHRlbnNpb25zKCk7CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbCgpOworCisgICAgYm9vbCBpbml0aWFsaXplKEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiwgYm9vbCByZW5kZXJEaXJlY3RseVRv
RXZhc0dMT2JqZWN0KTsKKworICAgIGJvb2wgY3JlYXRlU3VyZmFjZShFdmFzX09iamVjdCogdmll
dywgYm9vbCByZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KTsKKworICAgIEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKKworICAgIFBsYXRmb3JtM0RPYmplY3Qg
bV9ib3VuZEZCTzsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fYm91bmRUZXh0dXJlOworICAgIFBs
YXRmb3JtM0RPYmplY3QgbV9ib3VuZEFycmF5QnVmZmVyOworCisgICAgTGlzdEhhc2hTZXQ8R0Mz
RGVudW0+IG1fc3ludGhldGljRXJyb3JzOworCisgICAgRXZhc19HTCogbV9ldmFzR0w7CisgICAg
RXZhc19HTF9Db250ZXh0KiBtX2NvbnRleHQ7CisgICAgRXZhc19HTF9TdXJmYWNlKiBtX3N1cmZh
Y2U7CisgICAgRXZhc19HTF9BUEkqIG1fYXBpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gR3JhcGhpY3NMYXllckVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128908</attachid>
            <date>2012-02-25 23:59:17 -0800</date>
            <delta_ts>2012-02-26 18:50:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62961-20120226165915.patch</filename>
            <type>text/plain</type>
            <size>49290</size>
            <attacher name="Hyowon Kim">hw1008.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE1Zjg4OTRiNjExNGZh
MmQzNjVjZmE2MTViZGIxYmQ4ZWRkNTgwZS4uYWExMmM5ZmVjOTFhNDBiNjZjMjEyYWMzYWU1MGY5
ZGMwNGFjODdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NSBAQAorMjAxMi0wMi0yNSAgSHlv
d29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gSW5pdGlh
bCBpbXBsZW1lbnRhdGlvbiBvZiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyOTYxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGUgY2xhc3MgdXNpbmcgRXZhc19HTC4KKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlIGRlbGVnYXRlcyBhbGwgR0wgZnVuY3Rpb24gY2FsbHMgdG8g
RXZhc19HTF9BUEkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6fkdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpjcmVhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmlzR0xFUzJDb21wbGlhbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjphY3RpdmVUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YXR0YWNoU2hh
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmluZEF0
dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OmJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmJsZW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmxlbmRGdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmxlbmRGdW5jU2VwYXJhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpidWZmZXJEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YnVmZmVyU3ViRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjbGVhckRlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpjdWxsRmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmRlcHRoRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmRlcHRoTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmRlcHRoUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpkZXRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZHJhd0FycmF5cyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRyYXdFbGVtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmVuYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Zmlu
aXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Zmx1c2gp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpmcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6ZnJvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0QXR0cmliTG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRCb29s
ZWFudik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldEJ1
ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpnZXRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmdldEZsb2F0dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0SW50ZWdlcnYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRQcm9ncmFtaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRQcm9ncmFt
SW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0U3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0VGV4UGFyYW1ldGVyZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRUZXhQYXJhbWV0ZXJpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFVuaWZvcm1m
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFVuaWZv
cm1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFVu
aWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OmdldFZlcnRleEF0dHJpYmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpoaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aXNCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjppc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aXNQcm9ncmFtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aXNSZW5kZXJidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjppc1NoYWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmlzVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmxpbmVXaWR0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmxpbmtQcm9ncmFtKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGl4ZWxTdG9yZWkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwb2x5Z29uT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cmVhZFBpeGVscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnJlbmRlcmJ1ZmZlclN0
b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpzYW1w
bGVDb3ZlcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OnNjaXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpz
aGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpzdGVuY2lsRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OnN0ZW5jaWxGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpzdGVuY2lsTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpzdGVuY2lsT3ApOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnRleEltYWdlMkQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp0ZXhQYXJhbWV0ZXJmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dGV4UGFyYW1ldGVyaSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnRleFN1YkltYWdlMkQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3JtMWYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3JtMWZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTFp
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTFp
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZvcm0y
Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZvcm0y
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3Jt
MmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3Jt
Mml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5pZm9y
bTNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5pZm9y
bTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZv
cm0zaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZv
cm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlm
b3JtNGYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlm
b3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5p
Zm9ybTRpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5p
Zm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVu
aWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp2ZXJ0ZXhBdHRyaWIxZik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnZlcnRleEF0dHJpYjJmKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4QXR0cmliMmZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4QXR0
cmliM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp2ZXJ0
ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnZlcnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjp2aWV3cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZVNoYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZVRl
eHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpkZWxl
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpk
ZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRFeHRlbnNpb25zKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQzRFByaXZh
dGUpOgorCiAyMDEyLTAyLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgTW92ZSBhbiBBU1NFUlQgdG8gYXZvaWQgaXQgZmlyaW5nIGR1ZSB0byBhIHJh
Y2UgY29uZGl0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY4OTI1NjRiZTRhZDQ4YmVhNjZmZGQ4MzJiNjVmYjVjNDQzYWYwNjEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmNwcApAQCAtMCwwICsxLDk0MyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShXRUJHTCkgfHwgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCisKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50RWZsLmgiCisK
KyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU+IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJvb2wg
cmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCkKK3sKKyAgICBPd25QdHI8R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlPiBpbnRlcm5hbCA9IGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUoKSk7CisKKyAgICBpZiAoIWludGVybmFsLT5pbml0aWFsaXplKGF0dHJpYnV0ZXMsIGhv
c3RXaW5kb3csIHJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIHJldHVybiBpbnRlcm5hbC5yZWxlYXNlKCk7Cit9CisKK0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCkKKyAgICA6IG1fYm91
bmRGQk8oMCkKKyAgICAsIG1fYm91bmRUZXh0dXJlKDApCisgICAgLCBtX2JvdW5kQXJyYXlCdWZm
ZXIoMCkKKyAgICAsIG1fZXZhc0dMKDApCisgICAgLCBtX2NvbnRleHQoMCkKKyAgICAsIG1fc3Vy
ZmFjZSgwKQorICAgICwgbV9jb25maWcoMCkKKyAgICAsIG1fYXBpKDApCit7Cit9CisKK0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6fkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpCit7Cit9CisK
K2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjppbml0aWFsaXplKEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJvb2wg
YlJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpj
cmVhdGVTdXJmYWNlKFBhZ2VDbGllbnRFZmwqIHBhZ2VDbGllbnQsIGJvb2wgcmVuZGVyRGlyZWN0
bHlUb0V2YXNHTE9iamVjdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdAoreworICAgIHJldHVybiBt
X2NvbnRleHQ7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjptYWtlQ29udGV4
dEN1cnJlbnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aXNHTEVTMkNvbXBsaWFudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjphY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsQWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIG1fYXBpLT5nbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xCaW5kQXR0cmliTG9j
YXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZv
cm0zRE9iamVjdCBidWZmZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsQmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CisKKyAgICBpZiAodGFyZ2V0ID09IEdM
X0FSUkFZX0JVRkZFUikKKyAgICAgICAgbV9ib3VuZEFycmF5QnVmZmVyID0gYnVmZmVyOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmluZEZyYW1lYnVmZmVyKEdDM0RlbnVt
IHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKworICAgIGlmIChmcmFtZWJ1ZmZlciAhPSBtX2JvdW5kRkJPKSB7CisgICAg
ICAgIG1fYXBpLT5nbEJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGZyYW1lYnVmZmVyKTsKKyAgICAg
ICAgbV9ib3VuZEZCTyA9IGZyYW1lYnVmZmVyOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9y
bTNET2JqZWN0IGJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2Fw
aS0+Z2xCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0z
RE9iamVjdCB0ZXh0dXJlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbEJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZSk7CisgICAgbV9ib3VuZFRleHR1cmUgPSB0
ZXh0dXJlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmxlbmRDb2xvcihH
QzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNsYW1wZiBibHVlLCBHQzNEY2xh
bXBmIGFscGhhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJs
ZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6YmxlbmRFcXVhdGlvbihHQzNEZW51bSBtb2RlKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJsZW5kRXF1YXRpb24obW9kZSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0Mz
RGVudW0gbW9kZVJHQiwgR0MzRGVudW0gbW9kZUFscGhhKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIG1fYXBpLT5nbEJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2Rl
QWxwaGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmxlbmRGdW5jKEdD
M0RlbnVtIHNyY0ZhY3RvciwgR0MzRGVudW0gZHN0RmFjdG9yKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJsZW5kRnVuYyhzcmNGYWN0b3IsIGRzdEZhY3Rvcik7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpibGVuZEZ1bmNTZXBhcmF0ZShH
QzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxwaGEsIEdDM0Rl
bnVtIGRzdEFscGhhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5n
bEJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0
YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQzNEZW51bSB1c2Fn
ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xCdWZmZXJEYXRh
KHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zmc2V0
LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBz
aXplLCBkYXRhKTsKK30KKworR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdldCkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJn
ZXQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y2xlYXIoR0MzRGJpdGZp
ZWxkIG1hc2spCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQ2xl
YXIobWFzayk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjbGVhckNvbG9y
KEdDM0RjbGFtcGYgcmVkLCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdDM0Rj
bGFtcGYgYWxwaGEpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmds
Q2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQ2xlYXJEZXB0aGYoZGVwdGgpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y2xlYXJTdGVuY2lsKEdDM0RpbnQgY2xl
YXJWYWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDbGVh
clN0ZW5jaWwoY2xlYXJWYWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
Ojpjb2xvck1hc2soR0MzRGJvb2xlYW4gcmVkLCBHQzNEYm9vbGVhbiBncmVlbiwgR0MzRGJvb2xl
YW4gYmx1ZSwgR0MzRGJvb2xlYW4gYWxwaGEpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsQ29sb3JNYXNrKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9i
amVjdCBzaGFkZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmds
Q29tcGlsZVNoYWRlcihzaGFkZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51
bSBpbnRlcm5hbEZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgbV9hcGktPmdsQ29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RpbnQgeE9mZnNldCwgR0MzRGludCB5T2Zmc2V0LCBHQzNEaW50IHgs
IEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbENvcHlUZXhTdWJJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIHhPZmZzZXQsIHlPZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3VsbEZhY2UoR0MzRGVudW0gbW9kZSkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDdWxsRmFjZShtb2RlKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRlcHRoRnVuYyhHQzNEZW51bSBm
dW5jKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERlcHRoRnVu
YyhmdW5jKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRlcHRoTWFzayhH
QzNEYm9vbGVhbiBmbGFnKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbERlcHRoTWFzayhmbGFnKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmRlcHRoUmFuZ2UoR0MzRGNsYW1wZiB6TmVhciwgR0MzRGNsYW1wZiB6RmFyKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERlcHRoUmFuZ2VmKHpOZWFyLCB6RmFy
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRldGFjaFNoYWRlcihQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERldGFjaFNoYWRlcihwcm9ncmFtLCBz
aGFkZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGlzYWJsZShHQzNE
ZW51bSBjYXApCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRGlz
YWJsZShjYXApOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpkcmF3QXJyYXlzKEdDM0RlbnVtIG1vZGUs
IEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICBtX2FwaS0+Z2xEcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpkcmF3RWxlbWVudHMoR0MzRGVudW0gbW9k
ZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBHQzNEaW50cHRyIG9mZnNldCkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEcmF3RWxlbWVudHMobW9k
ZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KG9mZnNldCkpKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmVu
YWJsZShHQzNEZW51bSBjYXApCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsRW5hYmxlKGNhcCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpl
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpmaW5pc2goKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEZpbmlzaCgpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Zmx1c2goKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbEZsdXNoKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlclRhcmdldCwgUGxhdGZvcm0zRE9iamVj
dCByZW5kZXJidWZmZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGkt
PmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZm
ZXJUYXJnZXQsIHJlbmRlcmJ1ZmZlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFj
aG1lbnQsIEdDM0RlbnVtIHRleFRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBHQzNE
aW50IGxldmVsKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEZy
YW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4VGFyZ2V0LCB0ZXh0dXJl
LCBsZXZlbCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpmcm9udEZhY2Uo
R0MzRGVudW0gbW9kZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+
Z2xGcm9udEZhY2UobW9kZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpn
ZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsR2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsKK30KKworYm9vbCBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1
aW50IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0
QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHNpemVpIG1heENv
dW50LCBHQzNEc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybTNET2JqZWN0KiBzaGFkZXJzKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldEF0dGFjaGVkU2hhZGVycyhw
cm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRlcnMpOworfQorCitpbnQgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0s
IGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBy
ZXR1cm4gbV9hcGktPmdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0
YSgpKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldEJvb2xlYW52KEdD
M0RlbnVtIHBhcmFtTmFtZSwgR0MzRGJvb2xlYW4qIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldEJvb2xlYW52KHBhcmFtTmFtZSwgdmFsdWUpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldEJ1ZmZlclBhcmFtZXRl
cml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7Cit9CisKK0dyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dGVzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMo
KQoreworICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7Cit9CisKK0dDM0RlbnVtIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Z2V0RXJyb3IoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRGbG9hdHYo
R0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldEZsb2F0dihwYXJhbU5hbWUsIHZhbHVlKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVu
dW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBtX2FwaS0+Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJn
ZXQsIGF0dGFjaG1lbnQsIHBhcmFtTmFtZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2
YWx1ZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVu
dW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBtX2FwaS0+Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgcGFyYW1OYW1lLCB2YWx1ZSk7
Cit9CisKK1N0cmluZyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFByb2dyYW1JbmZvTG9n
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1O
YW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBt
X2FwaS0+Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFs
dWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0U2hhZGVyaXYoUGxh
dGZvcm0zRE9iamVjdCBzaGFkZXIsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0U2hhZGVyaXYo
c2hhZGVyLCBwYXJhbU5hbWUsIHZhbHVlKTsKK30KKworU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3Qg
c2hhZGVyKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCitTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRTdHJpbmcoR0MzRGVudW0g
bmFtZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1fYXBpLT5nbEdldFN0cmluZyhuYW1lKSkpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0VGV4UGFyYW1ldGVyZnYoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0VGV4UGFyYW1ldGVyZnYo
dGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmdldFRleFBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1O
YW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBt
X2FwaS0+Z2xHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRVbmlmb3JtZnYocHJvZ3Jh
bSwgbG9jYXRpb24sIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmdldFVuaWZvcm1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbEdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworfQorCitHQzNEaW50
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
bmFtZS51dGY4KCkuZGF0YSgpKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmdldFZlcnRleEF0dHJpYmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdD
M0RmbG9hdCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGkt
PmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0VmVydGV4QXR0cmliaXYoR0MzRHVpbnQgaW5k
ZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBhcmFt
TmFtZSwgdmFsdWUpOworfQorCitHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFt
ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICB2b2lkKiBwb2ludGVyID0gMDsK
KyAgICBtX2FwaS0+Z2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcGFyYW1OYW1lLCAm
cG9pbnRlcik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R0MzRHNpemVpcHRyPihwb2lu
dGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmhpbnQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBtb2RlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbEhpbnQodGFyZ2V0LCBtb2RlKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjppc0J1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsSXNCdWZmZXIoYnVm
ZmVyKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjppc0VuYWJs
ZWQoR0MzRGVudW0gY2FwKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVy
biBtX2FwaS0+Z2xJc0VuYWJsZWQoY2FwKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbElzRnJh
bWVidWZmZXIoZnJhbWVidWZmZXIpOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbElzUHJvZ3JhbShwcm9ncmFt
KTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjppc1JlbmRlcmJ1
ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsSXNSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVy
KTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjppc1NoYWRlcihQ
bGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICByZXR1cm4gbV9hcGktPmdsSXNTaGFkZXIoc2hhZGVyKTsKK30KKworR0MzRGJvb2xlYW4gR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjppc1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xJc1Rl
eHR1cmUodGV4dHVyZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpsaW5l
V2lkdGgoR0MzRGZsb2F0IHdpZHRoKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbExpbmVXaWR0aCh3aWR0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsTGlua1Byb2dyYW0ocHJvZ3JhbSk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwaXhlbFN0b3JlaShHQzNEZW51bSBw
YXJhbU5hbWUsIEdDM0RpbnQgcGFyYW0pCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9hcGktPmdsUGl4ZWxTdG9yZWkocGFyYW1OYW1lLCBwYXJhbSk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwb2x5Z29uT2Zmc2V0KEdDM0RmbG9hdCBmYWN0b3IsIEdD
M0RmbG9hdCB1bml0cykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+
Z2xQb2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdp
ZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIHZv
aWQqIGRhdGEpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBtX2FwaS0+Z2xG
bHVzaCgpOworICAgIG1fYXBpLT5nbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBkYXRhKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbEZvcm1h
dCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRl
cm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpzYW1wbGVDb3ZlcmFnZShHQzNEY2xhbXBmIHZhbHVlLCBHQzNEYm9vbGVhbiBpbnZl
cnQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsU2FtcGxlQ292
ZXJhZ2UodmFsdWUsIGludmVydCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpzY2lzc29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXpl
aSBoZWlnaHQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsU2Np
c3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgY29uc3QgU3RyaW5n
JiBzdHJpbmcpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgY29uc3QgY2hhciog
c3RyID0gc3RyaW5nLnV0ZjgoKS5kYXRhKCk7CisgICAgaW50IGxlbmd0aCA9IHN0cmluZy5sZW5n
dGgoKTsKKyAgICBtX2FwaS0+Z2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCAxLCAmc3RyLCAmbGVuZ3Ro
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnN0ZW5jaWxGdW5jKEdDM0Rl
bnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdD
M0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFN0ZW5jaWxGdW5jU2Vw
YXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnN0ZW5jaWxNYXNrKEdDM0R1aW50IG1hc2spCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsU3RlbmNpbE1hc2sobWFzayk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDM0RlbnVtIGZhY2Us
IEdDM0R1aW50IG1hc2spCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGkt
PmdsU3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnN0ZW5jaWxPcChHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6RmFpbCwg
R0MzRGVudW0gelBhc3MpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGkt
PmdsU3RlbmNpbE9wKGZhaWwsIHpGYWlsLCB6UGFzcyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpzdGVuY2lsT3BTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBm
YWlsLCBHQzNEZW51bSB6RmFpbCwgR0MzRGVudW0gelBhc3MpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsU3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgekZh
aWwsIHpQYXNzKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnRleEltYWdl
MkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbEZvcm1h
dCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0Mz
RGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVGV4SW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUs
IHBpeGVscyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjp0ZXhQYXJhbWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1l
LCBHQzNEZmxvYXQgcGFyYW0pCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsVGV4UGFyYW1ldGVyZih0YXJnZXQsIHBhcmFtTmFtZSwgcGFyYW0pOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dGV4UGFyYW1ldGVyaShHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCBwYXJhbSkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcGFyYW1OYW1lLCBw
YXJhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp0ZXhTdWJJbWFnZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4T2Zmc2V0LCBHQzNEaW50
IHlPZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9y
bWF0LCBHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4
T2Zmc2V0LCB5T2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3JtMWYoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGZsb2F0IHgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsVW5pZm9ybTFmKGxvY2F0aW9uLCB4KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnVuaWZvcm0xZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdD
M0RmbG9hdCogYXJyYXkpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGkt
PmdsVW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTFpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtMWkobG9j
YXRpb24sIHgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTFp
dihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGludCogYXJyYXkpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTFpdihsb2NhdGlv
biwgc2l6ZSwgYXJyYXkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5p
Zm9ybTJmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSkKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtMmYobG9jYXRpb24s
IHgsIHkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTJmdihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGZsb2F0KiBhcnJheSkKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtMmZ2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlm
b3JtMmkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNEaW50IHkpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZvcm0yaXYoR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0RpbnQqIGFycmF5KQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUs
IGFycmF5KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZvcm0zZihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6KQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm0zZihsb2Nh
dGlvbiwgeCwgeSwgeik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlm
b3JtM2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEZmxvYXQqIGFycmF5
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm0zZnYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OnVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0Mz
RGludCB6KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZv
cm0zaShsb2NhdGlvbiwgeCwgeSwgeik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjp1bmlmb3JtM2l2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEaW50
KiBhcnJheSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlm
b3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjp1bmlmb3JtNGYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdDM0Rm
bG9hdCB5LCBHQzNEZmxvYXQgeiwgR0MzRGZsb2F0IHcpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZvcm00ZnYoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0RmbG9hdCogYXJyYXkpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTRpKEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHosIEdDM0RpbnQgdykK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtNGkobG9j
YXRpb24sIHgsIHksIHosIHcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
dW5pZm9ybTRpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGludCogYXJy
YXkpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTRp
dihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6dW5pZm9ybU1hdHJpeDJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwg
R0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNp
emUsIHRyYW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6dW5pZm9ybU1hdHJpeDNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0Mz
RGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUs
IHRyYW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
dW5pZm9ybU1hdHJpeDRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGJv
b2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRy
YW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dXNl
UHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgbV9hcGktPmdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0pCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmFsaWRh
dGVQcm9ncmFtKHByb2dyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
dmVydGV4QXR0cmliMWYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB4KQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjFmKGluZGV4LCB4KTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnZlcnRleEF0dHJpYjFmdihHQzNE
dWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCB2YWx1ZXMpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4QXR0cmliMmYoR0MzRHVpbnQgaW5k
ZXgsIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBtX2FwaS0+Z2xWZXJ0ZXhBdHRyaWIyZihpbmRleCwgeCwgeSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgs
IEdDM0RmbG9hdCogdmFsdWVzKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbFZlcnRleEF0dHJpYjJmdihpbmRleCwgdmFsdWVzKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OnZlcnRleEF0dHJpYjNmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxv
YXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnZlcnRleEF0dHJpYjNmdihHQzNEdWludCBp
bmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9hcGktPmdsVmVydGV4QXR0cmliM2Z2KGluZGV4LCB2YWx1ZXMpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgsIEdD
M0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjRmKGluZGV4
LCB4LCB5LCB6LCB3KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnZlcnRl
eEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliNGZ2KGluZGV4LCB2
YWx1ZXMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4QXR0cmli
UG9pbnRlcihHQzNEdWludCBpbmRleCwgR0MzRGludCBzaXplLCBHQzNEZW51bSB0eXBlLCBHQzNE
Ym9vbGVhbiBub3JtYWxpemVkLCBHQzNEc2l6ZWkgc3RyaWRlLCBHQzNEaW50cHRyIG9mZnNldCkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIGlmIChtX2JvdW5kQXJyYXlCdWZm
ZXIgPD0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliUG9p
bnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWludGVycHJldF9j
YXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp2aWV3cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIG1fYXBpLT5nbFZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworfQor
CitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlQnVmZmVy
KCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGJ1
ZmZlciA9IDA7CisgICAgbV9hcGktPmdsR2VuQnVmZmVycygxLCAmYnVmZmVyKTsKKyAgICByZXR1
cm4gYnVmZmVyOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y3JlYXRlRnJhbWVidWZmZXIoKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyID0gMDsKKyAgICBtX2FwaS0+Z2xHZW5GcmFtZWJ1ZmZl
cnMoMSwgJmJ1ZmZlcik7CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworUGxhdGZvcm0zRE9iamVj
dCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZVByb2dyYW0oKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xDcmVhdGVQcm9ncmFtKCk7Cit9
CisKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVSZW5k
ZXJidWZmZXIoKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIFBsYXRmb3JtM0RP
YmplY3QgYnVmZmVyOworICAgIG1fYXBpLT5nbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJmJ1ZmZlcik7
CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSBzaGFkZXJUeXBlKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xDcmVhdGVTaGFkZXIoc2hh
ZGVyVHlwZSk7Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjcmVhdGVUZXh0dXJlKCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmU7CisgICAgbV9hcGktPmdsR2VuVGV4dHVyZXMoMSwgJnRleHR1
cmUpOworICAgIHJldHVybiB0ZXh0dXJlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6ZGVsZXRlQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpkZWxldGVGcmFtZWJ1ZmZlcihQ
bGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0pCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGkt
PmdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZWxldGVSZW5kZXJi
dWZmZXJzKDEsICZyZW5kZXJidWZmZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6ZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERlbGV0ZVNoYWRlcihzaGFkZXIpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNE
T2JqZWN0IHRleHR1cmUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGkt
PmdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6c3ludGhlc2l6ZUdMRXJyb3IoR0MzRGVudW0gZXJyb3IpCit7CisgICAgbV9z
eW50aGV0aWNFcnJvcnMuYWRkKGVycm9yKTsKK30KKworRXh0ZW5zaW9uczNEKiBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmdldEV4dGVuc2lvbnMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkgfHwgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3NjQzOGJiZDY4MzVhNzcwZmM5OTNlNGIw
ZjNlZmI4NDg2ODNlYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTAsMCArMSwyMjgg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisj
aWZuZGVmIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZV9oCisjZGVmaW5lIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorCisjaW5jbHVk
ZSA8RXZhc19HTC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2VDbGllbnRF
Zmw7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPiBjcmVhdGUoR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqLCBib29sIHJlbmRlckRpcmVj
dGx5VG9FdmFzR0xPYmplY3QpOworICAgIH5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKTsKKwor
ICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgp
IGNvbnN0OworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKKyNlbmRpZgorCisgICAgYm9vbCBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKworICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0OworCisg
ICAgdm9pZCBhY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpOworICAgIHZvaWQgYXR0YWNo
U2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIp
OworICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QsIEdDM0R1aW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgYmluZEJ1ZmZlcihHQzNEZW51
bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKEdD
M0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBiaW5kUmVuZGVyYnVm
ZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBiaW5kVGV4
dHVyZShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgYmxlbmRD
b2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNsYW1wZiBibHVlLCBH
QzNEY2xhbXBmIGFscGhhKTsKKyAgICB2b2lkIGJsZW5kRXF1YXRpb24oR0MzRGVudW0gbW9kZSk7
CisgICAgdm9pZCBibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0MzRGVudW0gbW9kZVJHQiwgR0MzRGVu
dW0gbW9kZUFscGhhKTsKKyAgICB2b2lkIGJsZW5kRnVuYyhHQzNEZW51bSBzcmNGYWN0b3IsIEdD
M0RlbnVtIGRzdEZhY3Rvcik7CisgICAgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBz
cmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxwaGEsIEdDM0RlbnVtIGRzdEFs
cGhhKTsKKworICAgIHZvaWQgYnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0
ciwgY29uc3Qgdm9pZCogZGF0YSwgR0MzRGVudW0gdXNhZ2UpOworICAgIHZvaWQgYnVmZmVyU3Vi
RGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zmc2V0LCBHQzNEc2l6ZWlwdHIsIGNv
bnN0IHZvaWQqIGRhdGEpOworCisgICAgR0MzRGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhH
QzNEZW51bSB0YXJnZXQpOworICAgIHZvaWQgY2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spOworICAg
IHZvaWQgY2xlYXJDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNs
YW1wZiBibHVlLCBHQzNEY2xhbXBmIGFscGhhKTsKKyAgICB2b2lkIGNsZWFyRGVwdGgoR0MzRGNs
YW1wZiBkZXB0aCk7CisgICAgdm9pZCBjbGVhclN0ZW5jaWwoR0MzRGludCBjbGVhclZhbHVlKTsK
KyAgICB2b2lkIGNvbG9yTWFzayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29sZWFuIGdyZWVuLCBH
QzNEYm9vbGVhbiBibHVlLCBHQzNEYm9vbGVhbiBhbHBoYSk7CisgICAgdm9pZCBjb21waWxlU2hh
ZGVyKFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEaW50
IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50
IGJvcmRlcik7CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RpbnQgeE9mZnNldCwgR0MzRGludCB5T2Zmc2V0LCBHQzNEaW50IHgs
IEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKKyAgICB2b2lk
IGN1bGxGYWNlKEdDM0RlbnVtIG1vZGUpOworICAgIHZvaWQgZGVwdGhGdW5jKEdDM0RlbnVtIGZ1
bmMpOworICAgIHZvaWQgZGVwdGhNYXNrKEdDM0Rib29sZWFuIGZsYWcpOworICAgIHZvaWQgZGVw
dGhSYW5nZShHQzNEY2xhbXBmIHpOZWFyLCBHQzNEY2xhbXBmIHpGYXIpOworICAgIHZvaWQgZGV0
YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQg
ZGlzYWJsZShHQzNEZW51bSBjYXApOworICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5
KEdDM0R1aW50IGluZGV4KTsKKyAgICB2b2lkIGRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0Mz
RGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KTsKKyAgICB2b2lkIGRyYXdFbGVtZW50cyhHQzNE
ZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnRwdHIgb2Zm
c2V0KTsKKworICAgIHZvaWQgZW5hYmxlKEdDM0RlbnVtIGNhcCk7CisgICAgdm9pZCBlbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCk7CisgICAgdm9pZCBmaW5pc2goKTsKKyAg
ICB2b2lkIGZsdXNoKCk7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51
bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlclRhcmdl
dCwgUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleFRhcmdldCwgUGxh
dGZvcm0zRE9iamVjdCwgR0MzRGludCBsZXZlbCk7CisgICAgdm9pZCBmcm9udEZhY2UoR0MzRGVu
dW0gbW9kZSk7CisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpOworCisg
ICAgYm9vbCBnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWlu
dCBpbmRleCwgQWN0aXZlSW5mbyYpOworICAgIGJvb2wgZ2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJik7CisgICAgdm9p
ZCBnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6ZWkg
bWF4Q291bnQsIEdDM0RzaXplaSogY291bnQsIFBsYXRmb3JtM0RPYmplY3QqIHNoYWRlcnMpOwor
ICAgIEdDM0RpbnQgZ2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKKyAgICB2b2lkIGdldEJvb2xlYW52KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0Mz
RGJvb2xlYW4qIHZhbHVlKTsKKyAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVt
IHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBHQzNE
ZW51bSBnZXRFcnJvcigpOworICAgIHZvaWQgZ2V0RmxvYXR2KEdDM0RlbnVtIHBhcmFtTmFtZSwg
R0MzRGZsb2F0KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBh
cmFtTmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoR0MzRGVudW0g
cGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRQcm9ncmFtaXYoUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKTsK
KyAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9p
ZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBh
cmFtTmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIHZvaWQgZ2V0U2hhZGVyaXYoUGxhdGZvcm0z
RE9iamVjdCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAgU3RyaW5n
IGdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICBTdHJpbmcgZ2V0U2hh
ZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3QpOworICAgIFN0cmluZyBnZXRTdHJpbmcoR0MzRGVu
dW0gbmFtZSk7CisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdihHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRUZXhQYXJh
bWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFs
dWUpOworICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0Mz
RGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRVbmlmb3JtaXYo
UGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiB2YWx1
ZSk7CisgICAgR0MzRGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdDM0R1aW50IGlu
ZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpOworICAgIHZvaWQgZ2V0
VmVydGV4QXR0cmliaXYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGlu
dCogdmFsdWUpOworICAgIEdDM0RzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVp
bnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSk7CisKKyAgICB2b2lkIGhpbnQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBtb2RlKTsKKyAgICBHQzNEYm9vbGVhbiBpc0J1ZmZlcihQbGF0Zm9y
bTNET2JqZWN0KTsKKyAgICBHQzNEYm9vbGVhbiBpc0VuYWJsZWQoR0MzRGVudW0gY2FwKTsKKyAg
ICBHQzNEYm9vbGVhbiBpc0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIEdDM0Ri
b29sZWFuIGlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBHQzNEYm9vbGVhbiBpc1Jl
bmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBHQzNEYm9vbGVhbiBpc1NoYWRlcihQ
bGF0Zm9ybTNET2JqZWN0KTsKKyAgICBHQzNEYm9vbGVhbiBpc1RleHR1cmUoUGxhdGZvcm0zRE9i
amVjdCk7CisgICAgdm9pZCBsaW5lV2lkdGgoR0MzRGZsb2F0KTsKKyAgICB2b2lkIGxpbmtQcm9n
cmFtKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0MzRGVudW0gcGFy
YW1OYW1lLCBHQzNEaW50IHBhcmFtKTsKKyAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0MzRGZsb2F0
IGZhY3RvciwgR0MzRGZsb2F0IHVuaXRzKTsKKworICAgIHZvaWQgcmVhZFBpeGVscyhHQzNEaW50
IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51
bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIHZvaWQqIGRhdGEpOworCisgICAgdm9pZCByZW5kZXJi
dWZmZXJTdG9yYWdlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxGb3JtYXQsIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CisgICAgdm9pZCBzYW1wbGVDb3ZlcmFn
ZShHQzNEY2xhbXBmIHZhbHVlLCBHQzNEYm9vbGVhbiBpbnZlcnQpOworICAgIHZvaWQgc2Npc3Nv
cihHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0
KTsKKyAgICB2b2lkIHNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNE
dWludCBtYXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwg
R0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spOworICAgIHZvaWQgc3Rl
bmNpbE1hc2soR0MzRHVpbnQgbWFzayk7CisgICAgdm9pZCBzdGVuY2lsTWFza1NlcGFyYXRlKEdD
M0RlbnVtIGZhY2UsIEdDM0R1aW50IG1hc2spOworICAgIHZvaWQgc3RlbmNpbE9wKEdDM0RlbnVt
IGZhaWwsIEdDM0RlbnVtIHpGYWlsLCBHQzNEZW51bSB6UGFzcyk7CisgICAgdm9pZCBzdGVuY2ls
T3BTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6RmFpbCwg
R0MzRGVudW0gelBhc3MpOworCisgICAgYm9vbCB0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVu
dW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKTsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmYoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCBwYXJhbSk7CisgICAg
dm9pZCB0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBH
QzNEaW50IHBhcmFtKTsKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxldmVsLCBHQzNEaW50IHhPZmZzZXQsIEdDM0RpbnQgeU9mZnNldCwgR0MzRHNpemVp
IHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUs
IGNvbnN0IHZvaWQqIHBpeGVscyk7CisKKyAgICB2b2lkIHVuaWZvcm0xZihHQzNEaW50IGxvY2F0
aW9uLCBHQzNEZmxvYXQgeCk7CisgICAgdm9pZCB1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RzaXplaSwgR0MzRGZsb2F0KiB2KTsKKyAgICB2b2lkIHVuaWZvcm0xaShHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEaW50IHgpOworICAgIHZvaWQgdW5pZm9ybTFpdihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEc2l6ZWksIEdDM0RpbnQqIHYpOworICAgIHZvaWQgdW5pZm9ybTJmKEdDM0RpbnQgbG9j
YXRpb24sIEdDM0RmbG9hdCB4LCBmbG9hdCB5KTsKKyAgICB2b2lkIHVuaWZvcm0yZnYoR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEZmxvYXQqIHYpOworICAgIHZvaWQgdW5pZm9ybTJp
KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5KTsKKyAgICB2b2lkIHVuaWZv
cm0yaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEaW50KiB2KTsKKyAgICB2b2lk
IHVuaWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdD
M0RmbG9hdCB6KTsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNp
emVpLCBHQzNEZmxvYXQqIHYpOworICAgIHZvaWQgdW5pZm9ybTNpKEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHopOworICAgIHZvaWQgdW5pZm9ybTNpdihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWksIEdDM0RpbnQqIHYpOworICAgIHZvaWQgdW5pZm9y
bTRmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0
IHosIEdDM0RmbG9hdCB3KTsKKyAgICB2b2lkIHVuaWZvcm00ZnYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRHNpemVpLCBHQzNEZmxvYXQqIHYpOworICAgIHZvaWQgdW5pZm9ybTRpKEdDM0RpbnQgbG9j
YXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHosIEdDM0RpbnQgdyk7CisgICAg
dm9pZCB1bmlmb3JtNGl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGludCogdik7
CisgICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwg
R0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIHVuaWZv
cm1NYXRyaXgzZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihHQzNE
aW50IGxvY2F0aW9uLCBHQzNEc2l6ZWksIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0
KiB2YWx1ZSk7CisKKyAgICB2b2lkIHVzZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7CisgICAg
dm9pZCB2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICB2b2lkIHZlcnRl
eEF0dHJpYjFmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgeCk7CisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWIxZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKTsKKyAgICB2b2lkIHZl
cnRleEF0dHJpYjJmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHkpOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliMmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVl
cyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgs
IEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeik7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoR0Mz
RHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjRm
KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6LCBH
QzNEZmxvYXQgdyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdD
M0RmbG9hdCogdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQg
aW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXpl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGlu
dHB0ciBvZmZzZXQpOworCisgICAgdm9pZCB2aWV3cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKKworICAgIFBsYXRmb3JtM0RPYmpl
Y3QgY3JlYXRlQnVmZmVyKCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVGcmFtZWJ1ZmZl
cigpOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlUHJvZ3JhbSgpOworICAgIFBsYXRmb3Jt
M0RPYmplY3QgY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVh
dGVTaGFkZXIoR0MzRGVudW0pOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlVGV4dHVyZSgp
OworCisgICAgdm9pZCBkZWxldGVCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBk
ZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGRlbGV0ZVByb2dy
YW0oUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZv
cm0zRE9iamVjdCk7CisgICAgdm9pZCBkZWxldGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7Cisg
ICAgdm9pZCBkZWxldGVUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgdm9pZCBzeW50
aGVzaXplR0xFcnJvcihHQzNEZW51bSBlcnJvcik7CisKKyAgICBFeHRlbnNpb25zM0QqIGdldEV4
dGVuc2lvbnMoKTsKKworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKTsK
KworICAgIGJvb2wgaW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRy
cywgSG9zdFdpbmRvdyosIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCk7CisKKyAg
ICBib29sIGNyZWF0ZVN1cmZhY2UoUGFnZUNsaWVudEVmbCosIGJvb2wgcmVuZGVyRGlyZWN0bHlU
b0V2YXNHTE9iamVjdCk7CisKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBtX2F0
dHJpYnV0ZXM7CisKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fYm91bmRGQk87CisgICAgUGxhdGZv
cm0zRE9iamVjdCBtX2JvdW5kVGV4dHVyZTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fYm91bmRB
cnJheUJ1ZmZlcjsKKworICAgIExpc3RIYXNoU2V0PEdDM0RlbnVtPiBtX3N5bnRoZXRpY0Vycm9y
czsKKworICAgIEV2YXNfR0wqIG1fZXZhc0dMOworICAgIEV2YXNfR0xfQ29udGV4dCogbV9jb250
ZXh0OworICAgIEV2YXNfR0xfU3VyZmFjZSogbV9zdXJmYWNlOworICAgIEV2YXNfR0xfQ29uZmln
KiBtX2NvbmZpZzsKKyAgICBFdmFzX0dMX0FQSSogbV9hcGk7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHcmFwaGljc0xheWVyRWZsX2gK
</data>
<flag name="review"
          id="131417"
          type_id="1"
          status="+"
          setter="noam"
    />
    <flag name="commit-queue"
          id="131418"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128939</attachid>
            <date>2012-02-26 18:50:50 -0800</date>
            <delta_ts>2012-02-26 21:16:43 -0800</delta_ts>
            <desc>re-upload</desc>
            <filename>bugzilla_20120227.patch</filename>
            <type>text/plain</type>
            <size>49117</size>
            <attacher name="Hyowon Kim">hw1008.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYjhlODEwLi4wNzRlM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTY3
IEBACiAyMDEyLTAyLTI2ICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KIAor
ICAgICAgICBbRUZMXSBJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjI5NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgdGhlIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSBjbGFzcyB1c2luZyBF
dmFzX0dMLgorICAgICAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgZGVsZWdhdGVzIGFsbCBH
TCBmdW5jdGlvbiBjYWxscyB0byBFdmFzX0dMX0FQSS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZVN1cmZhY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNE
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bWFrZUNvbnRl
eHRDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
aXNHTEVTMkNvbXBsaWFudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmJpbmRUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmxlbmRDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmJsZW5kRXF1YXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpibGVuZEVxdWF0aW9u
U2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpi
bGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpi
bGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y2xlYXJDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmNsZWFyRGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpjbGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjb2xvck1hc2spOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjb3B5VGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmN1bGxGYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVwdGhGdW5jKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVwdGhNYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVwdGhSYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRldGFjaFNoYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRpc2FibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpkaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpmbHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpmcm9udEZhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZW5lcmF0ZU1pcG1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldEFjdGl2ZUF0dHJpYik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldEFjdGl2ZVVu
aWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRB
dHRhY2hlZFNoYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldEVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0RmxvYXR2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmdldFByb2dyYW1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRTaGFkZXJpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFNoYWRlckluZm9Mb2cpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRTaGFkZXJTb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRUZXhQ
YXJhbWV0ZXJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmdldFRleFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0VmVydGV4QXR0cmliZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRWZXJ0ZXhBdHRyaWJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFZlcnRleEF0dHJpYk9m
ZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmhpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjppc0J1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmlzRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmlzRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjppc1Byb2dy
YW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjppc1JlbmRl
cmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Omlz
U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aXNU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bGlu
ZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bGlu
a1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpw
aXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OnBvbHlnb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6c2Npc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OnNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OnN0ZW5jaWxGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnN0ZW5jaWxPcCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnN0ZW5jaWxPcFNl
cGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dGV4
SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnRl
eFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
Ojp0ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjp1bmlmb3JtM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnVuaWZvcm00Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjp1bmlmb3JtNGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dXNlUHJvZ3JhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnZhbGlkYXRlUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnZlcnRleEF0dHJp
YjFmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4
QXR0cmliMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
dmVydGV4QXR0cmliMmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4QXR0cmliNGZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4QXR0cmliUG9pbnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnZpZXdwb3J0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlRnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVh
dGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRlbGV0ZVNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRlbGV0ZVRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpzeW50aGVzaXpl
R0xFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisKKzIwMTItMDItMjYgIEh5b3dvbiBLaW0gIDxodzEw
MDgua2ltQHNhbXN1bmcuY29tPgorCiAgICAgICAgIFtFRkxdIEltcGxlbWVudGF0aW9uIG9mIEdy
YXBoaWNzQ29udGV4dDNEIGZvciBFRkwgcG9ydAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0NTIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODkyNTY0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTAsMCArMSw5NDMgQEAKKy8qCisgICAgQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoV0VCR0wpIHx8IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgorCisjaW5jbHVkZSAiSG9zdFdpbmRv
dy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudEVm
bC5oIgorCisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlPiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZShHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93
LCBib29sIHJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpCit7CisgICAgT3duUHRyPEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZT4gaW50ZXJuYWwgPSBhZG9wdFB0cihuZXcgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlKCkpOworCisgICAgaWYgKCFpbnRlcm5hbC0+aW5pdGlhbGl6ZShhdHRyaWJ1
dGVzLCBob3N0V2luZG93LCByZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gaW50ZXJuYWwucmVsZWFzZSgpOworfQorCitH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpCisgICAg
OiBtX2JvdW5kRkJPKDApCisgICAgLCBtX2JvdW5kVGV4dHVyZSgwKQorICAgICwgbV9ib3VuZEFy
cmF5QnVmZmVyKDApCisgICAgLCBtX2V2YXNHTCgwKQorICAgICwgbV9jb250ZXh0KDApCisgICAg
LCBtX3N1cmZhY2UoMCkKKyAgICAsIG1fY29uZmlnKDApCisgICAgLCBtX2FwaSgwKQoreworfQor
CitHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6On5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKQor
eworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aW5pdGlhbGl6ZShHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93
LCBib29sIGJSZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Y3JlYXRlU3VyZmFjZShQYWdlQ2xpZW50RWZsKiBwYWdlQ2xpZW50LCBib29sIHJlbmRl
ckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb250ZXh0OworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bWFr
ZUNvbnRleHRDdXJyZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6YWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEFjdGl2ZVRleHR1cmUodGV4dHVyZSk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjphdHRhY2hTaGFkZXIoUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVy
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmJpbmRBdHRyaWJMb2NhdGlv
bihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQmluZEF0
dHJpYkxvY2F0aW9uKHByb2dyYW0sIGluZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQs
IFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fYXBpLT5nbEJpbmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOworCisgICAgaWYgKHRhcmdl
dCA9PSBHTF9BUlJBWV9CVUZGRVIpCisgICAgICAgIG1fYm91bmRBcnJheUJ1ZmZlciA9IGJ1ZmZl
cjsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmJpbmRGcmFtZWJ1ZmZlcihH
QzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpZiAoZnJhbWVidWZmZXIgIT0gbV9ib3VuZEZCTykg
eworICAgICAgICBtX2FwaS0+Z2xCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBmcmFtZWJ1ZmZlcik7
CisgICAgICAgIG1fYm91bmRGQk8gPSBmcmFtZWJ1ZmZlcjsKKyAgICB9Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwg
UGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9hcGktPmdsQmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xCaW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmUpOworICAgIG1fYm91bmRUZXh0
dXJlID0gdGV4dHVyZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmJsZW5k
Q29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwg
R0MzRGNsYW1wZiBhbHBoYSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2Fw
aS0+Z2xCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmJsZW5kRXF1YXRpb24oR0MzRGVudW0gbW9kZSkKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xCbGVuZEVxdWF0aW9uKG1vZGUp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmxlbmRFcXVhdGlvblNlcGFy
YXRlKEdDM0RlbnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJH
QiwgbW9kZUFscGhhKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmJsZW5k
RnVuYyhHQzNEZW51bSBzcmNGYWN0b3IsIEdDM0RlbnVtIGRzdEZhY3RvcikKK3sKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xCbGVuZEZ1bmMoc3JjRmFjdG9yLCBkc3RG
YWN0b3IpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmxlbmRGdW5jU2Vw
YXJhdGUoR0MzRGVudW0gc3JjUkdCLCBHQzNEZW51bSBkc3RSR0IsIEdDM0RlbnVtIHNyY0FscGhh
LCBHQzNEZW51bSBkc3RBbHBoYSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBt
X2FwaS0+Z2xCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFs
cGhhKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmJ1ZmZlckRhdGEoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0MzRGVu
dW0gdXNhZ2UpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQnVm
ZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50cHRy
IG9mZnNldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9m
ZnNldCwgc2l6ZSwgZGF0YSk7Cit9CisKK0dDM0RlbnVtIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNEZW51bSB0YXJnZXQpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbENoZWNrRnJhbWVidWZmZXJTdGF0
dXModGFyZ2V0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNsZWFyKEdD
M0RiaXRmaWVsZCBtYXNrKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbENsZWFyKG1hc2spOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y2xl
YXJDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNsYW1wZiBibHVl
LCBHQzNEY2xhbXBmIGFscGhhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbENsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbENsZWFyRGVwdGhmKGRlcHRo
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNsZWFyU3RlbmNpbChHQzNE
aW50IGNsZWFyVmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGkt
PmdsQ2xlYXJTdGVuY2lsKGNsZWFyVmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Y29sb3JNYXNrKEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdD
M0Rib29sZWFuIGJsdWUsIEdDM0Rib29sZWFuIGFscGhhKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIG1fYXBpLT5nbENvbG9yTWFzayhyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjb21waWxlU2hhZGVyKFBsYXRm
b3JtM0RPYmplY3Qgc2hhZGVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwg
R0MzRGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbENvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IGludGVybmFsRm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhPZmZzZXQsIEdDM0RpbnQgeU9mZnNldCwgR0Mz
RGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDb3B5VGV4U3ViSW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCB4T2Zmc2V0LCB5T2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmN1bGxGYWNlKEdDM0RlbnVtIG1v
ZGUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQ3VsbEZhY2Uo
bW9kZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpkZXB0aEZ1bmMoR0Mz
RGVudW0gZnVuYykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xE
ZXB0aEZ1bmMoZnVuYyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpkZXB0
aE1hc2soR0MzRGJvb2xlYW4gZmxhZykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xEZXB0aE1hc2soZmxhZyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpkZXB0aFJhbmdlKEdDM0RjbGFtcGYgek5lYXIsIEdDM0RjbGFtcGYgekZhcikKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZXB0aFJhbmdlZih6TmVh
ciwgekZhcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpkZXRhY2hTaGFk
ZXIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZXRhY2hTaGFkZXIocHJv
Z3JhbSwgc2hhZGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRpc2Fi
bGUoR0MzRGVudW0gY2FwKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbERpc2FibGUoY2FwKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZHJhd0FycmF5cyhHQzNEZW51
bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZHJhd0VsZW1lbnRzKEdDM0Rl
bnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwgR0MzRGludHB0ciBvZmZz
ZXQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRHJhd0VsZW1l
bnRzKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19j
YXN0PGludHB0cl90PihvZmZzZXQpKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjplbmFibGUoR0MzRGVudW0gY2FwKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fYXBpLT5nbEVuYWJsZShjYXApOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXko
aW5kZXgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZmluaXNoKCkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xGaW5pc2goKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmZsdXNoKCkKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xGbHVzaCgpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSByZW5kZXJidWZmZXJUYXJnZXQsIFBsYXRmb3Jt
M0RPYmplY3QgcmVuZGVyYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVu
ZGVyYnVmZmVyVGFyZ2V0LCByZW5kZXJidWZmZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51
bSBhdHRhY2htZW50LCBHQzNEZW51bSB0ZXhUYXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVy
ZSwgR0MzRGludCBsZXZlbCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2Fw
aS0+Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleFRhcmdldCwg
dGV4dHVyZSwgbGV2ZWwpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZnJv
bnRGYWNlKEdDM0RlbnVtIG1vZGUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsRnJvbnRGYWNlKG1vZGUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Z2VuZXJhdGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0KQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdlbmVyYXRlTWlwbWFwKHRhcmdldCk7Cit9CisKK2Jv
b2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
LCBHQzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OmdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXpl
aSBtYXhDb3VudCwgR0MzRHNpemVpKiBjb3VudCwgUGxhdGZvcm0zRE9iamVjdCogc2hhZGVycykK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRBdHRhY2hlZFNo
YWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBzaGFkZXJzKTsKK30KKworaW50IEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgcmV0dXJuIG1fYXBpLT5nbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRm
OCgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRCb29s
ZWFudihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0Rib29sZWFuKiB2YWx1ZSkKK3sKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRCb29sZWFudihwYXJhbU5hbWUsIHZh
bHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldEJ1ZmZlclBhcmFt
ZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1
ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRCdWZmZXJQ
YXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOworfQorCitHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldENvbnRleHRBdHRy
aWJ1dGVzKCkKK3sKKyAgICByZXR1cm4gbV9hdHRyaWJ1dGVzOworfQorCitHQzNEZW51bSBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmdldEVycm9yKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiAwOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0
RmxvYXR2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRGbG9hdHYocGFyYW1OYW1lLCB2YWx1
ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQs
IEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0Mz
RGludCogdmFsdWUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmdldFByb2dyYW1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0s
IEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBhcmFtTmFtZSwg
dmFsdWUpOworfQorCitTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRQcm9ncmFt
SW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5h
bWUsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFNoYWRl
cml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQq
IHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldFNo
YWRlcml2KHNoYWRlciwgcGFyYW1OYW1lLCB2YWx1ZSk7Cit9CisKK1N0cmluZyBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0
cmluZyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybTNE
T2JqZWN0IHNoYWRlcikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0U3RyaW5nKEdD
M0RlbnVtIG5hbWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIFN0
cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihtX2FwaS0+Z2xHZXRTdHJpbmcobmFt
ZSkpKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFRleFBhcmFtZXRl
cmZ2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVl
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldFRleFBhcmFt
ZXRlcmZ2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpnZXRUZXhQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVl
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFVuaWZvcm1mdihQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogdmFsdWUp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0VW5pZm9ybWZ2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKK30KKwor
R0MzRGludCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsR2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1O
YW1lLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFZlcnRleEF0dHJpYml2KEdDM0R1
aW50IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldFZlcnRleEF0dHJpYml2KGluZGV4
LCBwYXJhbU5hbWUsIHZhbHVlKTsKK30KKworR0MzRHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBw
YXJhbU5hbWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgdm9pZCogcG9pbnRl
ciA9IDA7CisgICAgbV9hcGktPmdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBhcmFt
TmFtZSwgJnBvaW50ZXIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEdDM0RzaXplaXB0
cj4ocG9pbnRlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpoaW50KEdD
M0RlbnVtIHRhcmdldCwgR0MzRGVudW0gbW9kZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBtX2FwaS0+Z2xIaW50KHRhcmdldCwgbW9kZSk7Cit9CisKK0dDM0Rib29sZWFuIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aXNCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbElzQnVm
ZmVyKGJ1ZmZlcik7Cit9CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
aXNFbmFibGVkKEdDM0RlbnVtIGNhcCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICByZXR1cm4gbV9hcGktPmdsSXNFbmFibGVkKGNhcCk7Cit9CisKK0dDM0Rib29sZWFuIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1l
YnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2FwaS0+
Z2xJc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKK30KKworR0MzRGJvb2xlYW4gR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjppc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xJc1Byb2dyYW0o
cHJvZ3JhbSk7Cit9CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aXNS
ZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbElzUmVuZGVyYnVmZmVyKHJlbmRl
cmJ1ZmZlcik7Cit9CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aXNT
aGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbElzU2hhZGVyKHNoYWRlcik7Cit9CisKK0dDM0Rib29s
ZWFuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aXNUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3Qg
dGV4dHVyZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGkt
PmdsSXNUZXh0dXJlKHRleHR1cmUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6bGluZVdpZHRoKEdDM0RmbG9hdCB3aWR0aCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBtX2FwaS0+Z2xMaW5lV2lkdGgod2lkdGgpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6bGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbExpbmtQcm9ncmFtKHByb2dy
YW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGl4ZWxTdG9yZWkoR0Mz
RGVudW0gcGFyYW1OYW1lLCBHQzNEaW50IHBhcmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbFBpeGVsU3RvcmVpKHBhcmFtTmFtZSwgcGFyYW0pOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cG9seWdvbk9mZnNldChHQzNEZmxvYXQgZmFj
dG9yLCBHQzNEZmxvYXQgdW5pdHMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsUG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OnJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0
eXBlLCB2b2lkKiBkYXRhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgbV9h
cGktPmdsRmx1c2goKTsKKyAgICBtX2FwaS0+Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJu
YWxGb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKK3sKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdl
dCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6c2FtcGxlQ292ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1ZSwgR0MzRGJvb2xl
YW4gaW52ZXJ0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFNh
bXBsZUNvdmVyYWdlKHZhbHVlLCBpbnZlcnQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6c2Npc3NvcihHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBp
LT5nbFNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpzaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIGNvbnN0
IFN0cmluZyYgc3RyaW5nKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGNvbnN0
IGNoYXIqIHN0ciA9IHN0cmluZy51dGY4KCkuZGF0YSgpOworICAgIGludCBsZW5ndGggPSBzdHJp
bmcubGVuZ3RoKCk7CisgICAgbV9hcGktPmdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwgJnN0ciwg
Jmxlbmd0aCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpzdGVuY2lsRnVu
YyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKK3sKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1h
c2spOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6c3RlbmNpbEZ1bmNTZXBh
cmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQg
bWFzaykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTdGVuY2ls
RnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFN0ZW5jaWxNYXNrKG1hc2spOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQzNEZW51
bSBmYWNlLCBHQzNEdWludCBtYXNrKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbFN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0g
ekZhaWwsIEdDM0RlbnVtIHpQYXNzKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbFN0ZW5jaWxPcChmYWlsLCB6RmFpbCwgelBhc3MpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6c3RlbmNpbE9wU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0Mz
RGVudW0gZmFpbCwgR0MzRGVudW0gekZhaWwsIEdDM0RlbnVtIHpQYXNzKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZh
aWwsIHpGYWlsLCB6UGFzcyk7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp0
ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJu
YWxGb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3Jk
ZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFRleEltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6dGV4UGFyYW1ldGVyZihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBh
cmFtTmFtZSwgR0MzRGZsb2F0IHBhcmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fYXBpLT5nbFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwYXJhbU5hbWUsIHBhcmFtKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnRleFBhcmFtZXRlcmkoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQgcGFyYW0pCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBhcmFt
TmFtZSwgcGFyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dGV4U3Vi
SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeE9mZnNldCwg
R0MzRGludCB5T2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0Rl
bnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFRleFN1YkltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgeE9mZnNldCwgeU9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhl
bHMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTFmKEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fYXBpLT5nbFVuaWZvcm0xZihsb2NhdGlvbiwgeCk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjp1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBz
aXplLCBHQzNEZmxvYXQqIGFycmF5KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbFVuaWZvcm0xZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZvcm0xaShHQzNEaW50IGxvY2F0aW9uLCBHQzNE
aW50IHgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9y
bTFpKGxvY2F0aW9uLCB4KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVu
aWZvcm0xaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0RpbnQqIGFycmF5
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm0xaXYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OnVuaWZvcm0yZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHkp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTJmKGxv
Y2F0aW9uLCB4LCB5KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZv
cm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0RmbG9hdCogYXJyYXkp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTJmdihs
b2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6dW5pZm9ybTJpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5KQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm0yaShsb2NhdGlv
biwgeCwgeSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3JtMml2
KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEaW50KiBhcnJheSkKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtMml2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlm
b3JtM2YoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxv
YXQgeikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3Jt
M2YobG9jYXRpb24sIHgsIHksIHopOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6dW5pZm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGZsb2F0
KiBhcnJheSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlm
b3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjp1bmlmb3JtM2koR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNEaW50
IHksIEdDM0RpbnQgeikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+
Z2xVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6dW5pZm9ybTNpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwg
R0MzRGludCogYXJyYXkpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGkt
PmdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTRmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4
LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwg
dyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3JtNGZ2KEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEZmxvYXQqIGFycmF5KQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm00ZnYobG9jYXRpb24sIHNp
emUsIGFycmF5KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZvcm00
aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6LCBHQzNE
aW50IHcpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9y
bTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnVuaWZvcm00aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0Rp
bnQqIGFycmF5KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVu
aWZvcm00aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OnVuaWZvcm1NYXRyaXgyZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVp
IHNpemUsIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0
aW9uLCBzaXplLCB0cmFuc3Bvc2UsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnVuaWZvcm1NYXRyaXgzZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNp
emUsIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9u
LCBzaXplLCB0cmFuc3Bvc2UsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnVuaWZvcm1NYXRyaXg0ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUs
IEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBz
aXplLCB0cmFuc3Bvc2UsIHZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OnVzZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVzZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5n
bFZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnZlcnRleEF0dHJpYjFmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgeCkKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xWZXJ0ZXhBdHRyaWIxZihpbmRl
eCwgeCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp2ZXJ0ZXhBdHRyaWIx
ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKQoreworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjFmdihpbmRleCwgdmFsdWVzKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnZlcnRleEF0dHJpYjJmKEdDM0R1
aW50IGluZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHkpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliMmYoaW5kZXgsIHgsIHkpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4QXR0cmliMmZ2KEdDM0R1aW50
IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIHZhbHVlcyk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp2ZXJ0ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwg
R0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeikKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xWZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeik7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp2ZXJ0ZXhBdHRyaWIzZnYoR0Mz
RHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjNmdihpbmRleCwgdmFsdWVzKTsKK30KKwor
dm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnZlcnRleEF0dHJpYjRmKEdDM0R1aW50IGlu
ZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6LCBHQzNEZmxvYXQgdykK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xWZXJ0ZXhBdHRyaWI0
ZihpbmRleCwgeCwgeSwgeiwgdyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
Ojp2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFZlcnRleEF0dHJpYjRmdihp
bmRleCwgdmFsdWVzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnZlcnRl
eEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlw
ZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGludHB0ciBv
ZmZzZXQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBpZiAobV9ib3VuZEFy
cmF5QnVmZmVyIDw9IDApCisgICAgICAgIHJldHVybjsKKworICAgIG1fYXBpLT5nbFZlcnRleEF0
dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRl
cnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmlld3BvcnQoR0MzRGludCB4LCBHQzNE
aW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0
KTsKK30KKworUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0
ZUJ1ZmZlcigpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgUGxhdGZvcm0zRE9i
amVjdCBidWZmZXIgPSAwOworICAgIG1fYXBpLT5nbEdlbkJ1ZmZlcnMoMSwgJmJ1ZmZlcik7Cisg
ICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlciA9IDA7CisgICAgbV9hcGktPmdsR2VuRnJh
bWVidWZmZXJzKDEsICZidWZmZXIpOworICAgIHJldHVybiBidWZmZXI7Cit9CisKK1BsYXRmb3Jt
M0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsQ3JlYXRlUHJvZ3Jh
bSgpOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3Jl
YXRlUmVuZGVyYnVmZmVyKCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBQbGF0
Zm9ybTNET2JqZWN0IGJ1ZmZlcjsKKyAgICBtX2FwaS0+Z2xHZW5SZW5kZXJidWZmZXJzKDEsICZi
dWZmZXIpOworICAgIHJldHVybiBidWZmZXI7Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVTaGFkZXIoR0MzRGVudW0gc2hhZGVyVHlwZSkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsQ3JlYXRlU2hh
ZGVyKHNoYWRlclR5cGUpOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Y3JlYXRlVGV4dHVyZSgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlOworICAgIG1fYXBpLT5nbEdlblRleHR1cmVzKDEs
ICZ0ZXh0dXJlKTsKKyAgICByZXR1cm4gdGV4dHVyZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZWxldGVCdWZmZXJzKDEsICZi
dWZmZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVsZXRlRnJhbWVi
dWZmZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVy
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRlbGV0ZVByb2dyYW0oUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJi
dWZmZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRGVsZXRl
UmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZWxldGVTaGFkZXIoc2hhZGVy
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRlbGV0ZVRleHR1cmUoUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OnN5bnRoZXNpemVHTEVycm9yKEdDM0RlbnVtIGVycm9yKQorewor
ICAgIG1fc3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7Cit9CisKK0V4dGVuc2lvbnMzRCogR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRFeHRlbnNpb25zKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wpIHx8IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9H
cmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi42NzY0MzhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjI4IEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lm
bmRlZiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGVfaAorI2RlZmluZSBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGVfaAorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKworI2luY2x1ZGUg
PEV2YXNfR0wuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlQ2xpZW50RWZs
OworCitjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4gY3JlYXRlKEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiwgYm9vbCByZW5kZXJEaXJlY3Rs
eVRvRXZhc0dMT2JqZWN0KTsKKyAgICB+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCk7CisKKyAg
ICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBj
b25zdDsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CisjZW5kaWYKKworICAgIGJvb2wgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisKKyAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdDsKKworICAg
IHZvaWQgYWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlKTsKKyAgICB2b2lkIGF0dGFjaFNo
YWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKTsK
KyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0LCBHQzNEdWludCBp
bmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIGJpbmRCdWZmZXIoR0MzRGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHQzNE
ZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZl
cihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgYmluZFRleHR1
cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGJsZW5kQ29s
b3IoR0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwgR0Mz
RGNsYW1wZiBhbHBoYSk7CisgICAgdm9pZCBibGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUpOwor
ICAgIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDM0RlbnVtIG1vZGVSR0IsIEdDM0RlbnVt
IG1vZGVBbHBoYSk7CisgICAgdm9pZCBibGVuZEZ1bmMoR0MzRGVudW0gc3JjRmFjdG9yLCBHQzNE
ZW51bSBkc3RGYWN0b3IpOworICAgIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoR0MzRGVudW0gc3Jj
UkdCLCBHQzNEZW51bSBkc3RSR0IsIEdDM0RlbnVtIHNyY0FscGhhLCBHQzNEZW51bSBkc3RBbHBo
YSk7CisKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIs
IGNvbnN0IHZvaWQqIGRhdGEsIEdDM0RlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlclN1YkRh
dGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50cHRyIG9mZnNldCwgR0MzRHNpemVpcHRyLCBjb25z
dCB2b2lkKiBkYXRhKTsKKworICAgIEdDM0RlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0Mz
RGVudW0gdGFyZ2V0KTsKKyAgICB2b2lkIGNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKTsKKyAgICB2
b2lkIGNsZWFyQ29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFt
cGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSk7CisgICAgdm9pZCBjbGVhckRlcHRoKEdDM0RjbGFt
cGYgZGVwdGgpOworICAgIHZvaWQgY2xlYXJTdGVuY2lsKEdDM0RpbnQgY2xlYXJWYWx1ZSk7Cisg
ICAgdm9pZCBjb2xvck1hc2soR0MzRGJvb2xlYW4gcmVkLCBHQzNEYm9vbGVhbiBncmVlbiwgR0Mz
RGJvb2xlYW4gYmx1ZSwgR0MzRGJvb2xlYW4gYWxwaGEpOworICAgIHZvaWQgY29tcGlsZVNoYWRl
cihQbGF0Zm9ybTNET2JqZWN0KTsKKworICAgIHZvaWQgY29weVRleEltYWdlMkQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbEZvcm1hdCwgR0MzRGludCB4
LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBi
b3JkZXIpOworICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEaW50IHhPZmZzZXQsIEdDM0RpbnQgeU9mZnNldCwgR0MzRGludCB4LCBH
QzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CisgICAgdm9pZCBj
dWxsRmFjZShHQzNEZW51bSBtb2RlKTsKKyAgICB2b2lkIGRlcHRoRnVuYyhHQzNEZW51bSBmdW5j
KTsKKyAgICB2b2lkIGRlcHRoTWFzayhHQzNEYm9vbGVhbiBmbGFnKTsKKyAgICB2b2lkIGRlcHRo
UmFuZ2UoR0MzRGNsYW1wZiB6TmVhciwgR0MzRGNsYW1wZiB6RmFyKTsKKyAgICB2b2lkIGRldGFj
aFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGRp
c2FibGUoR0MzRGVudW0gY2FwKTsKKyAgICB2b2lkIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShH
QzNEdWludCBpbmRleCk7CisgICAgdm9pZCBkcmF3QXJyYXlzKEdDM0RlbnVtIG1vZGUsIEdDM0Rp
bnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCk7CisgICAgdm9pZCBkcmF3RWxlbWVudHMoR0MzRGVu
dW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBHQzNEaW50cHRyIG9mZnNl
dCk7CisKKyAgICB2b2lkIGVuYWJsZShHQzNEZW51bSBjYXApOworICAgIHZvaWQgZW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpOworICAgIHZvaWQgZmluaXNoKCk7CisgICAg
dm9pZCBmbHVzaCgpOworICAgIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSByZW5kZXJidWZmZXJUYXJnZXQs
IFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSB0ZXhUYXJnZXQsIFBsYXRm
b3JtM0RPYmplY3QsIEdDM0RpbnQgbGV2ZWwpOworICAgIHZvaWQgZnJvbnRGYWNlKEdDM0RlbnVt
IG1vZGUpOworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0KTsKKworICAg
IGJvb2wgZ2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQg
aW5kZXgsIEFjdGl2ZUluZm8mKTsKKyAgICBib29sIGdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYpOworICAgIHZvaWQg
Z2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHNpemVpIG1h
eENvdW50LCBHQzNEc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybTNET2JqZWN0KiBzaGFkZXJzKTsKKyAg
ICBHQzNEaW50IGdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CisgICAgdm9pZCBnZXRCb29sZWFudihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0Ri
b29sZWFuKiB2YWx1ZSk7CisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzIGdldENvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgR0MzRGVu
dW0gZ2V0RXJyb3IoKTsKKyAgICB2b2lkIGdldEZsb2F0dihHQzNEZW51bSBwYXJhbU5hbWUsIEdD
M0RmbG9hdCogdmFsdWUpOworICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSBwYXJh
bU5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICB2b2lkIGdldEludGVnZXJ2KEdDM0RlbnVtIHBh
cmFtTmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIHZvaWQgZ2V0UHJvZ3JhbWl2KFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSk7Cisg
ICAgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQg
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJh
bU5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFNoYWRlcml2KFBsYXRmb3JtM0RP
YmplY3QsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIFN0cmluZyBn
ZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgU3RyaW5nIGdldFNoYWRl
clNvdXJjZShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBTdHJpbmcgZ2V0U3RyaW5nKEdDM0RlbnVt
IG5hbWUpOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
ZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpOworICAgIHZvaWQgZ2V0VGV4UGFyYW1l
dGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVl
KTsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RmbG9hdCogdmFsdWUpOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogdmFsdWUp
OworICAgIEdDM0RpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQzNEdWludCBpbmRl
eCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFZl
cnRleEF0dHJpYml2KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQq
IHZhbHVlKTsKKyAgICBHQzNEc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50
IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUpOworCisgICAgdm9pZCBoaW50KEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gbW9kZSk7CisgICAgR0MzRGJvb2xlYW4gaXNCdWZmZXIoUGxhdGZvcm0z
RE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNFbmFibGVkKEdDM0RlbnVtIGNhcCk7CisgICAg
R0MzRGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICBHQzNEYm9v
bGVhbiBpc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNSZW5k
ZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNTaGFkZXIoUGxh
dGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNUZXh0dXJlKFBsYXRmb3JtM0RPYmpl
Y3QpOworICAgIHZvaWQgbGluZVdpZHRoKEdDM0RmbG9hdCk7CisgICAgdm9pZCBsaW5rUHJvZ3Jh
bShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIHBpeGVsU3RvcmVpKEdDM0RlbnVtIHBhcmFt
TmFtZSwgR0MzRGludCBwYXJhbSk7CisgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDM0RmbG9hdCBm
YWN0b3IsIEdDM0RmbG9hdCB1bml0cyk7CisKKyAgICB2b2lkIHJlYWRQaXhlbHMoR0MzRGludCB4
LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0g
Zm9ybWF0LCBHQzNEZW51bSB0eXBlLCB2b2lkKiBkYXRhKTsKKworICAgIHZvaWQgcmVuZGVyYnVm
ZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOworICAgIHZvaWQgc2FtcGxlQ292ZXJhZ2Uo
R0MzRGNsYW1wZiB2YWx1ZSwgR0MzRGJvb2xlYW4gaW52ZXJ0KTsKKyAgICB2b2lkIHNjaXNzb3Io
R0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7
CisgICAgdm9pZCBzaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCwgY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVp
bnQgbWFzayk7CisgICAgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdD
M0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKTsKKyAgICB2b2lkIHN0ZW5j
aWxNYXNrKEdDM0R1aW50IG1hc2spOworICAgIHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0ZShHQzNE
ZW51bSBmYWNlLCBHQzNEdWludCBtYXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxPcChHQzNEZW51bSBm
YWlsLCBHQzNEZW51bSB6RmFpbCwgR0MzRGVudW0gelBhc3MpOworICAgIHZvaWQgc3RlbmNpbE9w
U2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gekZhaWwsIEdD
M0RlbnVtIHpQYXNzKTsKKworICAgIGJvb2wgdGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscyk7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQgcGFyYW0pOworICAgIHZv
aWQgdGV4UGFyYW1ldGVyaShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0Mz
RGludCBwYXJhbSk7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGludCB4T2Zmc2V0LCBHQzNEaW50IHlPZmZzZXQsIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBj
b25zdCB2b2lkKiBwaXhlbHMpOworCisgICAgdm9pZCB1bmlmb3JtMWYoR0MzRGludCBsb2NhdGlv
biwgR0MzRGZsb2F0IHgpOworICAgIHZvaWQgdW5pZm9ybTFmdihHQzNEaW50IGxvY2F0aW9uLCBH
QzNEc2l6ZWksIEdDM0RmbG9hdCogdik7CisgICAgdm9pZCB1bmlmb3JtMWkoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGludCB4KTsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRHNpemVpLCBHQzNEaW50KiB2KTsKKyAgICB2b2lkIHVuaWZvcm0yZihHQzNEaW50IGxvY2F0
aW9uLCBHQzNEZmxvYXQgeCwgZmxvYXQgeSk7CisgICAgdm9pZCB1bmlmb3JtMmZ2KEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGZsb2F0KiB2KTsKKyAgICB2b2lkIHVuaWZvcm0yaShH
QzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSk7CisgICAgdm9pZCB1bmlmb3Jt
Mml2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGludCogdik7CisgICAgdm9pZCB1
bmlmb3JtM2YoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNE
ZmxvYXQgeik7CisgICAgdm9pZCB1bmlmb3JtM2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXpl
aSwgR0MzRGZsb2F0KiB2KTsKKyAgICB2b2lkIHVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBH
QzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6KTsKKyAgICB2b2lkIHVuaWZvcm0zaXYoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEaW50KiB2KTsKKyAgICB2b2lkIHVuaWZvcm00
ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0RmbG9hdCB6
LCBHQzNEZmxvYXQgdyk7CisgICAgdm9pZCB1bmlmb3JtNGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdD
M0RzaXplaSwgR0MzRGZsb2F0KiB2KTsKKyAgICB2b2lkIHVuaWZvcm00aShHQzNEaW50IGxvY2F0
aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRGludCB6LCBHQzNEaW50IHcpOworICAgIHZv
aWQgdW5pZm9ybTRpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWksIEdDM0RpbnQqIHYpOwor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWksIEdD
M0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2YWx1ZSk7CisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGJvb2xlYW4gdHJhbnNw
b3NlLCBHQzNEZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCog
dmFsdWUpOworCisgICAgdm9pZCB1c2VQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZv
aWQgdmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QpOworCisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgpOworICAgIHZvaWQgdmVydGV4QXR0
cmliMWZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5KTsKKyAg
ICB2b2lkIHZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMp
OworICAgIHZvaWQgdmVydGV4QXR0cmliM2YoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB4LCBH
QzNEZmxvYXQgeSwgR0MzRGZsb2F0IHopOworICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdDM0R1
aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihH
QzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgR0Mz
RGZsb2F0IHcpOworICAgIHZvaWQgdmVydGV4QXR0cmliNGZ2KEdDM0R1aW50IGluZGV4LCBHQzNE
ZmxvYXQqIHZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGlu
ZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSBzdHJpZGUsIEdDM0RpbnRw
dHIgb2Zmc2V0KTsKKworICAgIHZvaWQgdmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CisKKyAgICBQbGF0Zm9ybTNET2JqZWN0
IGNyZWF0ZUJ1ZmZlcigpOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRlRnJhbWVidWZmZXIo
KTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVByb2dyYW0oKTsKKyAgICBQbGF0Zm9ybTNE
T2JqZWN0IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIFBsYXRmb3JtM0RPYmplY3QgY3JlYXRl
U2hhZGVyKEdDM0RlbnVtKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVRleHR1cmUoKTsK
KworICAgIHZvaWQgZGVsZXRlQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVs
ZXRlRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBkZWxldGVQcm9ncmFt
KFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3Jt
M0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QpOworICAg
IHZvaWQgZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0KTsKKworICAgIHZvaWQgc3ludGhl
c2l6ZUdMRXJyb3IoR0MzRGVudW0gZXJyb3IpOworCisgICAgRXh0ZW5zaW9uczNEKiBnZXRFeHRl
bnNpb25zKCk7CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCk7CisK
KyAgICBib29sIGluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMs
IEhvc3RXaW5kb3cqLCBib29sIHJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpOworCisgICAg
Ym9vbCBjcmVhdGVTdXJmYWNlKFBhZ2VDbGllbnRFZmwqLCBib29sIHJlbmRlckRpcmVjdGx5VG9F
dmFzR0xPYmplY3QpOworCisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgbV9hdHRy
aWJ1dGVzOworCisgICAgUGxhdGZvcm0zRE9iamVjdCBtX2JvdW5kRkJPOworICAgIFBsYXRmb3Jt
M0RPYmplY3QgbV9ib3VuZFRleHR1cmU7CisgICAgUGxhdGZvcm0zRE9iamVjdCBtX2JvdW5kQXJy
YXlCdWZmZXI7CisKKyAgICBMaXN0SGFzaFNldDxHQzNEZW51bT4gbV9zeW50aGV0aWNFcnJvcnM7
CisKKyAgICBFdmFzX0dMKiBtX2V2YXNHTDsKKyAgICBFdmFzX0dMX0NvbnRleHQqIG1fY29udGV4
dDsKKyAgICBFdmFzX0dMX1N1cmZhY2UqIG1fc3VyZmFjZTsKKyAgICBFdmFzX0dMX0NvbmZpZyog
bV9jb25maWc7CisgICAgRXZhc19HTF9BUEkqIG1fYXBpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gR3JhcGhpY3NMYXllckVmbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128947</attachid>
            <date>2012-02-26 21:16:43 -0800</date>
            <delta_ts>2012-02-27 19:01:25 -0800</delta_ts>
            <desc>re-upload2</desc>
            <filename>bugzilla_20120227_2.patch</filename>
            <type>text/plain</type>
            <size>49100</size>
            <attacher name="Hyowon Kim">hw1008.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZDFkYjk0Li5hMzRmNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTY1
IEBACisyMDEyLTAyLTI2ICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXSBJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjI5NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgdGhlIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSBjbGFzcyB1c2luZyBF
dmFzX0dMLgorICAgICAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgZGVsZWdhdGVzIGFsbCBH
TCBmdW5jdGlvbiBjYWxscyB0byBFdmFzX0dMX0FQSS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZVN1cmZhY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNE
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bWFrZUNvbnRl
eHRDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
aXNHTEVTMkNvbXBsaWFudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmJpbmRUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmxlbmRDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmJsZW5kRXF1YXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpibGVuZEVxdWF0aW9u
U2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpi
bGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpi
bGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y2xlYXJDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmNsZWFyRGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpjbGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjb2xvck1hc2spOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjb3B5VGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmN1bGxGYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVwdGhGdW5jKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVwdGhNYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVwdGhSYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRldGFjaFNoYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRpc2FibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpkaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpmbHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpmcm9udEZhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZW5lcmF0ZU1pcG1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldEFjdGl2ZUF0dHJpYik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldEFjdGl2ZVVu
aWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRB
dHRhY2hlZFNoYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldEVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0RmxvYXR2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmdldFByb2dyYW1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRTaGFkZXJpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFNoYWRlckluZm9Mb2cpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRTaGFkZXJTb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRUZXhQ
YXJhbWV0ZXJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmdldFRleFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0VmVydGV4QXR0cmliZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRWZXJ0ZXhBdHRyaWJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFZlcnRleEF0dHJpYk9m
ZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmhpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjppc0J1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmlzRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmlzRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjppc1Byb2dy
YW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjppc1JlbmRl
cmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Omlz
U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aXNU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bGlu
ZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bGlu
a1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpw
aXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OnBvbHlnb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6c2Npc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OnNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OnN0ZW5jaWxGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnN0ZW5jaWxPcCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnN0ZW5jaWxPcFNl
cGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dGV4
SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnRl
eFBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
Ojp0ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjp1bmlmb3JtM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnVuaWZvcm00Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjp1bmlmb3JtNGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dXNlUHJvZ3JhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnZhbGlkYXRlUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnZlcnRleEF0dHJp
YjFmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4
QXR0cmliMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
dmVydGV4QXR0cmliMmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4QXR0cmliNGZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4QXR0cmliUG9pbnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnZpZXdwb3J0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlRnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVh
dGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRlbGV0ZVNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRlbGV0ZVRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpzeW50aGVzaXpl
R0xFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisKIDIwMTItMDItMjYgIERpcmsgU2NodWx6ZSAgPGty
aXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBDbGVhbnVwIG9mIEFkb2JlcyBjb3B5cmlnaHQgdGV4
dC4gVGhlIHRleHQgZ290IGhhcm1vbml6ZWQgd2l0aCBjb3B5cmlnaHQgdGV4dHMgb2Ygb3RoZXIg
Y29tcGFuaWVzLiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg5MjU2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
Y3BwCkBAIC0wLDAgKzEsOTQzIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQkdM
KSB8fCBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaCIKKworI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRFZmwuaCIKKworI2luY2x1ZGUg
PHd0Zi9Pd25BcnJheVB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4g
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgYXR0cmlidXRlcywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCByZW5kZXJEaXJl
Y3RseVRvRXZhc0dMT2JqZWN0KQoreworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU+IGludGVybmFsID0gYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpKTsK
KworICAgIGlmICghaW50ZXJuYWwtPmluaXRpYWxpemUoYXR0cmlidXRlcywgaG9zdFdpbmRvdywg
cmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIGludGVybmFsLnJlbGVhc2UoKTsKK30KKworR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKQorICAgIDogbV9ib3VuZEZCTygwKQor
ICAgICwgbV9ib3VuZFRleHR1cmUoMCkKKyAgICAsIG1fYm91bmRBcnJheUJ1ZmZlcigwKQorICAg
ICwgbV9ldmFzR0woMCkKKyAgICAsIG1fY29udGV4dCgwKQorICAgICwgbV9zdXJmYWNlKDApCisg
ICAgLCBtX2NvbmZpZygwKQorICAgICwgbV9hcGkoMCkKK3sKK30KKworR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCkKK3sKK30KKworYm9vbCBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgYXR0cmlidXRlcywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCBiUmVuZGVyRGly
ZWN0bHlUb0V2YXNHTE9iamVjdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZVN1cmZh
Y2UoUGFnZUNsaWVudEVmbCogcGFnZUNsaWVudCwgYm9vbCByZW5kZXJEaXJlY3RseVRvRXZhc0dM
T2JqZWN0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGxh
dGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dDsK
K30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Om1ha2VDb250ZXh0Q3VycmVudCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmFjdGl2
ZVRleHR1cmUoR0MzRGVudW0gdGV4dHVyZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xBY3RpdmVUZXh0dXJlKHRleHR1cmUpOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9hcGktPmdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJpbmRBdHRyaWJMb2NhdGlvbihwcm9n
cmFtLCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0
IGJ1ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xCaW5k
QnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKKworICAgIGlmICh0YXJnZXQgPT0gR0xfQVJSQVlfQlVG
RkVSKQorICAgICAgICBtX2JvdW5kQXJyYXlCdWZmZXIgPSBidWZmZXI7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworCisgICAgaWYgKGZyYW1lYnVmZmVyICE9IG1fYm91bmRGQk8pIHsKKyAgICAgICAgbV9hcGkt
PmdsQmluZEZyYW1lYnVmZmVyKHRhcmdldCwgZnJhbWVidWZmZXIpOworICAgICAgICBtX2JvdW5k
RkJPID0gZnJhbWVidWZmZXI7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6YmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3Qg
YnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJpbmRS
ZW5kZXJidWZmZXIodGFyZ2V0LCBidWZmZXIpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRl
eHR1cmUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQmluZFRl
eHR1cmUodGFyZ2V0LCB0ZXh0dXJlKTsKKyAgICBtX2JvdW5kVGV4dHVyZSA9IHRleHR1cmU7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpibGVuZENvbG9yKEdDM0RjbGFtcGYg
cmVkLCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQmxlbmRDb2xvcihy
ZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpibGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgbV9hcGktPmdsQmxlbmRFcXVhdGlvbihtb2RlKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQzNEZW51bSBtb2Rl
UkdCLCBHQzNEZW51bSBtb2RlQWxwaGEpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9hcGktPmdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpibGVuZEZ1bmMoR0MzRGVudW0gc3Jj
RmFjdG9yLCBHQzNEZW51bSBkc3RGYWN0b3IpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsQmxlbmRGdW5jKHNyY0ZhY3RvciwgZHN0RmFjdG9yKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmJsZW5kRnVuY1NlcGFyYXRlKEdDM0RlbnVtIHNy
Y1JHQiwgR0MzRGVudW0gZHN0UkdCLCBHQzNEZW51bSBzcmNBbHBoYSwgR0MzRGVudW0gZHN0QWxw
aGEpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsQmxlbmRGdW5j
U2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDM0RlbnVtIHVzYWdlKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEJ1ZmZlckRhdGEodGFyZ2V0LCBz
aXplLCBkYXRhLCB1c2FnZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpi
dWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0RzaXpl
aXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEp
OworfQorCitHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIHJldHVybiBtX2FwaS0+Z2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjbGVhcihHQzNEYml0ZmllbGQgbWFzaykK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDbGVhcihtYXNrKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNsZWFyQ29sb3IoR0MzRGNsYW1w
ZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBo
YSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDbGVhckNvbG9y
KHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDbGVhckRlcHRoZihkZXB0aCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpjbGVhclN0ZW5jaWwoR0MzRGludCBjbGVhclZhbHVlKQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbENsZWFyU3RlbmNpbChj
bGVhclZhbHVlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNvbG9yTWFz
ayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29sZWFuIGdyZWVuLCBHQzNEYm9vbGVhbiBibHVlLCBH
QzNEYm9vbGVhbiBhbHBoYSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2Fw
aS0+Z2xDb2xvck1hc2socmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRl
cikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xDb21waWxlU2hh
ZGVyKHNoYWRlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjb3B5VGV4
SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFs
Rm9ybWF0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEaW50IGJvcmRlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwg
eCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGludCB4T2Zmc2V0LCBHQzNEaW50IHlPZmZzZXQsIEdDM0RpbnQgeCwgR0MzRGludCB5
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsQ29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
eE9mZnNldCwgeU9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpjdWxsRmFjZShHQzNEZW51bSBtb2RlKQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEN1bGxGYWNlKG1vZGUpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVwdGhGdW5jKEdDM0RlbnVtIGZ1bmMpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRGVwdGhGdW5jKGZ1bmMpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVwdGhNYXNrKEdDM0Rib29sZWFu
IGZsYWcpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRGVwdGhN
YXNrKGZsYWcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVwdGhSYW5n
ZShHQzNEY2xhbXBmIHpOZWFyLCBHQzNEY2xhbXBmIHpGYXIpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsRGVwdGhSYW5nZWYoek5lYXIsIHpGYXIpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsRGV0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEaXNhYmxlKGNhcCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpkaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkoR0MzRHVpbnQgaW5kZXgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBm
aXJzdCwgR0MzRHNpemVpIGNvdW50KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fYXBpLT5nbERyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmRyYXdFbGVtZW50cyhHQzNEZW51bSBtb2RlLCBHQzNEc2l6
ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnRwdHIgb2Zmc2V0KQoreworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwg
dHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zm
c2V0KSkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZW5hYmxlKEdDM0Rl
bnVtIGNhcCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xFbmFi
bGUoY2FwKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIG1fYXBpLT5nbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmZpbmlzaCgpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgbV9hcGktPmdsRmluaXNoKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpmbHVzaCgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsRmx1c2goKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVu
dCwgR0MzRGVudW0gcmVuZGVyYnVmZmVyVGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1
ZmZlcikKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlclRhcmdldCwg
cmVuZGVyYnVmZmVyKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0Mz
RGVudW0gdGV4VGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0RpbnQgbGV2ZWwp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsRnJhbWVidWZmZXJU
ZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXhUYXJnZXQsIHRleHR1cmUsIGxldmVsKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmZyb250RmFjZShHQzNEZW51bSBt
b2RlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEZyb250RmFj
ZShtb2RlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdlbmVyYXRlTWlw
bWFwKEdDM0RlbnVtIHRhcmdldCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBt
X2FwaS0+Z2xHZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworfQorCitib29sIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0Mz
RHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpn
ZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgs
IEFjdGl2ZUluZm8mIGluZm8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRBdHRhY2hlZFNo
YWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6ZWkgbWF4Q291bnQsIEdDM0Rz
aXplaSogY291bnQsIFBsYXRmb3JtM0RPYmplY3QqIHNoYWRlcnMpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1h
eENvdW50LCBjb3VudCwgc2hhZGVycyk7Cit9CisKK2ludCBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2Fw
aS0+Z2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0Qm9vbGVhbnYoR0MzRGVudW0gcGFy
YW1OYW1lLCBHQzNEYm9vbGVhbiogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsR2V0Qm9vbGVhbnYocGFyYW1OYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCit7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0
LCBwYXJhbU5hbWUsIHZhbHVlKTsKK30KKworR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRDb250ZXh0QXR0cmlidXRlcygpCit7CisgICAg
cmV0dXJuIG1fYXR0cmlidXRlczsKK30KKworR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpnZXRFcnJvcigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldEZsb2F0dihHQzNEZW51bSBw
YXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsR2V0RmxvYXR2KHBhcmFtTmFtZSwgdmFsdWUpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSBwYXJhbU5h
bWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNo
bWVudCwgcGFyYW1OYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEZW51bSBwYXJhbU5h
bWUsIEdDM0RpbnQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbEdldFByb2dyYW1pdihwcm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVlKTsKK30KKworU3Ry
aW5nIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0
cmluZygpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0Rp
bnQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRTaGFkZXJpdihQbGF0Zm9ybTNET2Jq
ZWN0IHNoYWRlciwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRTaGFkZXJpdihzaGFkZXIsIHBh
cmFtTmFtZSwgdmFsdWUpOworfQorCitTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpn
ZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmlu
ZyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFN0cmluZyhHQzNEZW51bSBuYW1lKQorewor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4obV9hcGktPmdsR2V0U3RyaW5nKG5hbWUpKSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRUZXhQYXJhbWV0ZXJmdihHQzNEZW51bSB0YXJn
ZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBh
cmFtTmFtZSwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0
VGV4UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0Rp
bnQqIHZhbHVlKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdl
dFRleFBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHZhbHVlKQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbEdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlv
biwgdmFsdWUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0VW5pZm9y
bWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCog
dmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsR2V0VW5p
Zm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7Cit9CisKK0dDM0RpbnQgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgcmV0dXJuIG1fYXBpLT5nbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0Zjgo
KS5kYXRhKCkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z2V0VmVydGV4
QXR0cmliZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2
YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xHZXRWZXJ0
ZXhBdHRyaWJmdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQzNEdWludCBpbmRleCwgR0MzRGVu
dW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBtX2FwaS0+Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1
ZSk7Cit9CisKK0dDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdldFZlcnRl
eEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHZvaWQqIHBvaW50ZXIgPSAwOworICAgIG1fYXBp
LT5nbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwYXJhbU5hbWUsICZwb2ludGVyKTsK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHQzNEc2l6ZWlwdHI+KHBvaW50ZXIpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6aGludChHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIG1vZGUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmds
SGludCh0YXJnZXQsIG1vZGUpOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmlzQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBtX2FwaS0+Z2xJc0J1ZmZlcihidWZmZXIpOworfQor
CitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmlzRW5hYmxlZChHQzNEZW51
bSBjYXApCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5n
bElzRW5hYmxlZChjYXApOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OmlzRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikKK3sKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsSXNGcmFtZWJ1ZmZlcihm
cmFtZWJ1ZmZlcik7Cit9CisKK0dDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICByZXR1cm4gbV9hcGktPmdsSXNQcm9ncmFtKHByb2dyYW0pOworfQorCitH
QzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmlzUmVuZGVyYnVmZmVyKFBsYXRm
b3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIHJldHVybiBtX2FwaS0+Z2xJc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworfQorCitH
QzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmlzU2hhZGVyKFBsYXRmb3JtM0RP
YmplY3Qgc2hhZGVyKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJldHVybiBt
X2FwaS0+Z2xJc1NoYWRlcihzaGFkZXIpOworfQorCitHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmlzVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbElzVGV4dHVyZSh0ZXh0
dXJlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmxpbmVXaWR0aChHQzNE
ZmxvYXQgd2lkdGgpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmds
TGluZVdpZHRoKHdpZHRoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Omxp
bmtQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xMaW5rUHJvZ3JhbShwcm9ncmFtKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBpeGVsU3RvcmVpKEdDM0RlbnVtIHBhcmFtTmFtZSwg
R0MzRGludCBwYXJhbSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+
Z2xQaXhlbFN0b3JlaShwYXJhbU5hbWUsIHBhcmFtKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OnBvbHlnb25PZmZzZXQoR0MzRGZsb2F0IGZhY3RvciwgR0MzRGZsb2F0IHVu
aXRzKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFBvbHlnb25P
ZmZzZXQoZmFjdG9yLCB1bml0cyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgdm9pZCogZGF0YSkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIG1fYXBpLT5nbEZsdXNoKCk7Cisg
ICAgbV9hcGktPmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IGRhdGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cmVuZGVyYnVmZmVy
U3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsUmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsRm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnNh
bXBsZUNvdmVyYWdlKEdDM0RjbGFtcGYgdmFsdWUsIEdDM0Rib29sZWFuIGludmVydCkKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTYW1wbGVDb3ZlcmFnZSh2YWx1
ZSwgaW52ZXJ0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnNjaXNzb3Io
R0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTY2lzc29yKHgsIHks
IHdpZHRoLCBoZWlnaHQpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6c2hh
ZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZykK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBjb25zdCBjaGFyKiBzdHIgPSBzdHJp
bmcudXRmOCgpLmRhdGEoKTsKKyAgICBpbnQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAg
IG1fYXBpLT5nbFNoYWRlclNvdXJjZShzaGFkZXIsIDEsICZzdHIsICZsZW5ndGgpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywg
R0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsU3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0MzRGVudW0gZmFj
ZSwgR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsU3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNl
LCBmdW5jLCByZWYsIG1hc2spOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xTdGVuY2lsTWFzayhtYXNrKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRHVpbnQg
bWFzaykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTdGVuY2ls
TWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpGYWlsLCBHQzNEZW51bSB6
UGFzcykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xTdGVuY2ls
T3AoZmFpbCwgekZhaWwsIHpQYXNzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0Rl
bnVtIHpGYWlsLCBHQzNEZW51bSB6UGFzcykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2FwaS0+Z2xTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6RmFpbCwgelBhc3Mp
OworfQorCitib29sIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dGV4SW1hZ2UyRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK3sKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnRl
eFBhcmFtZXRlcmYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9h
dCBwYXJhbSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xUZXhQ
YXJhbWV0ZXJmKHRhcmdldCwgcGFyYW1OYW1lLCBwYXJhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjp0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0g
cGFyYW1OYW1lLCBHQzNEaW50IHBhcmFtKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fYXBpLT5nbFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwYXJhbU5hbWUsIHBhcmFtKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnRleFN1YkltYWdlMkQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhPZmZzZXQsIEdDM0RpbnQgeU9mZnNldCwg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0Rl
bnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBtX2FwaS0+Z2xUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhPZmZzZXQsIHlP
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKK30KKwordm9pZCBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZvcm0xZihHQzNEaW50IGxvY2F0aW9uLCBHQzNE
ZmxvYXQgeCkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlm
b3JtMWYobG9jYXRpb24sIHgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
dW5pZm9ybTFmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGZsb2F0KiBh
cnJheSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3Jt
MWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjp1bmlmb3JtMWkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB4KQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm0xaShsb2NhdGlvbiwgeCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3JtMWl2KEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEaW50KiBhcnJheSkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBh
cnJheSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3JtMmYoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5KQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm0yZihsb2NhdGlvbiwgeCwgeSk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3JtMmZ2KEdDM0RpbnQgbG9j
YXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEZmxvYXQqIGFycmF5KQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUsIGFy
cmF5KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZvcm0yaShHQzNE
aW50IGxvY2F0aW9uLCBHQzNEaW50IHgsIEdDM0RpbnQgeSkKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtMmkobG9jYXRpb24sIHgsIHkpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTJpdihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEc2l6ZWkgc2l6ZSwgR0MzRGludCogYXJyYXkpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTNmKEdDM0RpbnQgbG9j
YXRpb24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHopCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5
LCB6KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZvcm0zZnYoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0RmbG9hdCogYXJyYXkpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTNmdihsb2NhdGlvbiwg
c2l6ZSwgYXJyYXkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5pZm9y
bTNpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEaW50IHopCit7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybTNpKGxvY2F0
aW9uLCB4LCB5LCB6KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnVuaWZv
cm0zaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpIHNpemUsIEdDM0RpbnQqIGFycmF5KQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm0zaXYobG9j
YXRpb24sIHNpemUsIGFycmF5KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OnVuaWZvcm00ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdD
M0RmbG9hdCB6LCBHQzNEZmxvYXQgdykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dW5pZm9ybTRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNE
c2l6ZWkgc2l6ZSwgR0MzRGZsb2F0KiBhcnJheSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlv
biwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RpbnQgeiwgR0MzRGludCB3KQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbFVuaWZvcm00aShsb2NhdGlvbiwgeCwg
eSwgeiwgdyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3JtNGl2
KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEaW50KiBhcnJheSkKK3sKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xVbmlmb3JtNGl2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlm
b3JtTWF0cml4MmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEYm9vbGVh
biB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9hcGktPmdsVW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNw
b3NlLCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3Jt
TWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgbV9hcGktPmdsVW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3Nl
LCB2YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1bmlmb3JtTWF0
cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBzaXplLCBHQzNEYm9vbGVhbiB0cmFu
c3Bvc2UsIEdDM0RmbG9hdCogdmFsdWUpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9hcGktPmdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCB2
YWx1ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp1c2VQcm9ncmFtKFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBtX2FwaS0+Z2xVc2VQcm9ncmFtKHByb2dyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKK3sK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xWYWxpZGF0ZVByb2dyYW0o
cHJvZ3JhbSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp2ZXJ0ZXhBdHRy
aWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliMWYoaW5kZXgsIHgpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4
LCBHQzNEZmxvYXQqIHZhbHVlcykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBt
X2FwaS0+Z2xWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIHZhbHVlcyk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZs
b2F0IHgsIEdDM0RmbG9hdCB5KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1f
YXBpLT5nbFZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0
KiB2YWx1ZXMpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVy
dGV4QXR0cmliMmZ2KGluZGV4LCB2YWx1ZXMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6dmVydGV4QXR0cmliM2YoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB4LCBHQzNE
ZmxvYXQgeSwgR0MzRGZsb2F0IHopCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
bV9hcGktPmdsVmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNE
ZmxvYXQqIHZhbHVlcykKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+
Z2xWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIHZhbHVlcyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjp2ZXJ0ZXhBdHRyaWI0ZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHgs
IEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgR0MzRGZsb2F0IHcpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgbV9hcGktPmdsVmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHos
IHcpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6dmVydGV4QXR0cmliNGZ2
KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIHZhbHVlcykKK3sKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIHZhbHVlcyk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdD
M0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5v
cm1hbGl6ZWQsIEdDM0RzaXplaSBzdHJpZGUsIEdDM0RpbnRwdHIgb2Zmc2V0KQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworCisgICAgaWYgKG1fYm91bmRBcnJheUJ1ZmZlciA8PSAwKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2FwaS0+Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4
LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lk
Kj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnZpZXdwb3J0KEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgbV9hcGktPmdsVmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK1BsYXRmb3Jt
M0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVCdWZmZXIoKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyID0gMDsK
KyAgICBtX2FwaS0+Z2xHZW5CdWZmZXJzKDEsICZidWZmZXIpOworICAgIHJldHVybiBidWZmZXI7
Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVG
cmFtZWJ1ZmZlcigpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgUGxhdGZvcm0z
RE9iamVjdCBidWZmZXIgPSAwOworICAgIG1fYXBpLT5nbEdlbkZyYW1lYnVmZmVycygxLCAmYnVm
ZmVyKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlUHJvZ3JhbSgpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbENyZWF0ZVByb2dyYW0oKTsKK30KKworUGxhdGZv
cm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBidWZm
ZXI7CisgICAgbV9hcGktPmdsR2VuUmVuZGVyYnVmZmVycygxLCAmYnVmZmVyKTsKKyAgICByZXR1
cm4gYnVmZmVyOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y3JlYXRlU2hhZGVyKEdDM0RlbnVtIHNoYWRlclR5cGUpCit7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgcmV0dXJuIG1fYXBpLT5nbENyZWF0ZVNoYWRlcihzaGFkZXJUeXBlKTsK
K30KKworUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZVRl
eHR1cmUoKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZTsKKyAgICBtX2FwaS0+Z2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7CisgICAg
cmV0dXJuIHRleHR1cmU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpkZWxl
dGVCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgbV9hcGktPmdsRGVsZXRlQnVmZmVycygxLCAmYnVmZmVyKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtM0RP
YmplY3QgZnJhbWVidWZmZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9h
cGktPmdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZWxldGVQ
cm9ncmFtKHByb2dyYW0pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZGVs
ZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQoreworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fYXBpLT5nbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwg
JnJlbmRlcmJ1ZmZlcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpkZWxl
dGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgbV9hcGktPmdsRGVsZXRlU2hhZGVyKHNoYWRlcik7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpkZWxldGVUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2FwaS0+Z2xEZWxldGVU
ZXh0dXJlcygxLCAmdGV4dHVyZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpzeW50aGVzaXplR0xFcnJvcihHQzNEZW51bSBlcnJvcikKK3sKKyAgICBtX3N5bnRoZXRpY0Vy
cm9ycy5hZGQoZXJyb3IpOworfQorCitFeHRlbnNpb25zM0QqIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Z2V0RXh0ZW5zaW9ucygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKSB8fCBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc2NDM4YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuaApAQCAtMCwwICsxLDIyOCBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlX2gKKyNkZWZpbmUgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlX2gKKworI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisKKyNpbmNsdWRlIDxFdmFzX0dMLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZUNsaWVudEVmbDsKKworY2xhc3MgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBhdHRycywgSG9zdFdpbmRvdyosIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCk7
CisgICAgfkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpOworCisgICAgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3Q7CisKKyNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0OworI2VuZGlmCisKKyAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisg
ICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3Q7CisKKyAgICB2b2lkIGFjdGl2ZVRleHR1
cmUoR0MzRGVudW0gdGV4dHVyZSk7CisgICAgdm9pZCBhdHRhY2hTaGFkZXIoUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcik7CisgICAgdm9pZCBiaW5kQXR0
cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CisgICAgdm9pZCBiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0z
RE9iamVjdCk7CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0
Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0
LCBQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdl
dCwgUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBibGVuZENvbG9yKEdDM0RjbGFtcGYgcmVk
LCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEpOwor
ICAgIHZvaWQgYmxlbmRFcXVhdGlvbihHQzNEZW51bSBtb2RlKTsKKyAgICB2b2lkIGJsZW5kRXF1
YXRpb25TZXBhcmF0ZShHQzNEZW51bSBtb2RlUkdCLCBHQzNEZW51bSBtb2RlQWxwaGEpOworICAg
IHZvaWQgYmxlbmRGdW5jKEdDM0RlbnVtIHNyY0ZhY3RvciwgR0MzRGVudW0gZHN0RmFjdG9yKTsK
KyAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0
UkdCLCBHQzNEZW51bSBzcmNBbHBoYSwgR0MzRGVudW0gZHN0QWxwaGEpOworCisgICAgdm9pZCBi
dWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRyLCBjb25zdCB2b2lkKiBkYXRh
LCBHQzNEZW51bSB1c2FnZSk7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0RzaXplaXB0ciwgY29uc3Qgdm9pZCogZGF0YSk7CisK
KyAgICBHQzNEZW51bSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdldCk7Cisg
ICAgdm9pZCBjbGVhcihHQzNEYml0ZmllbGQgbWFzayk7CisgICAgdm9pZCBjbGVhckNvbG9yKEdD
M0RjbGFtcGYgcmVkLCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdDM0RjbGFt
cGYgYWxwaGEpOworICAgIHZvaWQgY2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKTsKKyAgICB2
b2lkIGNsZWFyU3RlbmNpbChHQzNEaW50IGNsZWFyVmFsdWUpOworICAgIHZvaWQgY29sb3JNYXNr
KEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0Rib29sZWFuIGJsdWUsIEdD
M0Rib29sZWFuIGFscGhhKTsKKyAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVj
dCk7CisKKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKTsKKyAgICB2b2lk
IGNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGlu
dCB4T2Zmc2V0LCBHQzNEaW50IHlPZmZzZXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOworICAgIHZvaWQgY3VsbEZhY2UoR0MzRGVudW0g
bW9kZSk7CisgICAgdm9pZCBkZXB0aEZ1bmMoR0MzRGVudW0gZnVuYyk7CisgICAgdm9pZCBkZXB0
aE1hc2soR0MzRGJvb2xlYW4gZmxhZyk7CisgICAgdm9pZCBkZXB0aFJhbmdlKEdDM0RjbGFtcGYg
ek5lYXIsIEdDM0RjbGFtcGYgekZhcik7CisgICAgdm9pZCBkZXRhY2hTaGFkZXIoUGxhdGZvcm0z
RE9iamVjdCwgUGxhdGZvcm0zRE9iamVjdCk7CisgICAgdm9pZCBkaXNhYmxlKEdDM0RlbnVtIGNh
cCk7CisgICAgdm9pZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpOwor
ICAgIHZvaWQgZHJhd0FycmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6
ZWkgY291bnQpOworICAgIHZvaWQgZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXpl
aSBjb3VudCwgR0MzRGVudW0gdHlwZSwgR0MzRGludHB0ciBvZmZzZXQpOworCisgICAgdm9pZCBl
bmFibGUoR0MzRGVudW0gY2FwKTsKKyAgICB2b2lkIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdD
M0R1aW50IGluZGV4KTsKKyAgICB2b2lkIGZpbmlzaCgpOworICAgIHZvaWQgZmx1c2goKTsKKyAg
ICB2b2lkIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0g
YXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVyYnVmZmVyVGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0
KTsKKyAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVu
dW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4VGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNE
aW50IGxldmVsKTsKKyAgICB2b2lkIGZyb250RmFjZShHQzNEZW51bSBtb2RlKTsKKyAgICB2b2lk
IGdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdldCk7CisKKyAgICBib29sIGdldEFjdGl2ZUF0
dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZv
Jik7CisgICAgYm9vbCBnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
R0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKTsKKyAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVy
cyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXplaSBtYXhDb3VudCwgR0MzRHNpemVp
KiBjb3VudCwgUGxhdGZvcm0zRE9iamVjdCogc2hhZGVycyk7CisgICAgR0MzRGludCBnZXRBdHRy
aWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZv
aWQgZ2V0Qm9vbGVhbnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEYm9vbGVhbiogdmFsdWUpOwor
ICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBw
YXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmli
dXRlcyBnZXRDb250ZXh0QXR0cmlidXRlcygpOworICAgIEdDM0RlbnVtIGdldEVycm9yKCk7Cisg
ICAgdm9pZCBnZXRGbG9hdHYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKTsK
KyAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2
YWx1ZSk7CisgICAgdm9pZCBnZXRJbnRlZ2VydihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQq
IHZhbHVlKTsKKyAgICB2b2lkIGdldFByb2dyYW1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0s
IEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpOworICAgIFN0cmluZyBnZXRQcm9n
cmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2
YWx1ZSk7CisgICAgdm9pZCBnZXRTaGFkZXJpdihQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSBw
YXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKTsKKyAgICBTdHJpbmcgZ2V0U2hhZGVySW5mb0xvZyhQ
bGF0Zm9ybTNET2JqZWN0KTsKKworICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0z
RE9iamVjdCk7CisgICAgU3RyaW5nIGdldFN0cmluZyhHQzNEZW51bSBuYW1lKTsKKyAgICB2b2lk
IGdldFRleFBhcmFtZXRlcmZ2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBH
QzNEZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2KEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRV
bmlmb3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNE
ZmxvYXQqIHZhbHVlKTsKKyAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHZhbHVlKTsKKyAgICBHQzNEaW50IGdl
dFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpOwor
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFt
TmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSk7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHQzNE
dWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSk7CisgICAgR0Mz
RHNpemVpcHRyIGdldFZlcnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0MzRGVudW0g
cGFyYW1OYW1lKTsKKworICAgIHZvaWQgaGludChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIG1v
ZGUpOworICAgIEdDM0Rib29sZWFuIGlzQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIEdD
M0Rib29sZWFuIGlzRW5hYmxlZChHQzNEZW51bSBjYXApOworICAgIEdDM0Rib29sZWFuIGlzRnJh
bWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCk7CisgICAgR0MzRGJvb2xlYW4gaXNQcm9ncmFtKFBs
YXRmb3JtM0RPYmplY3QpOworICAgIEdDM0Rib29sZWFuIGlzUmVuZGVyYnVmZmVyKFBsYXRmb3Jt
M0RPYmplY3QpOworICAgIEdDM0Rib29sZWFuIGlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QpOwor
ICAgIEdDM0Rib29sZWFuIGlzVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGxp
bmVXaWR0aChHQzNEZmxvYXQpOworICAgIHZvaWQgbGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVj
dCk7CisgICAgdm9pZCBwaXhlbFN0b3JlaShHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQgcGFy
YW0pOworICAgIHZvaWQgcG9seWdvbk9mZnNldChHQzNEZmxvYXQgZmFjdG9yLCBHQzNEZmxvYXQg
dW5pdHMpOworCisgICAgdm9pZCByZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0g
dHlwZSwgdm9pZCogZGF0YSk7CisKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbEZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNE
c2l6ZWkgaGVpZ2h0KTsKKyAgICB2b2lkIHNhbXBsZUNvdmVyYWdlKEdDM0RjbGFtcGYgdmFsdWUs
IEdDM0Rib29sZWFuIGludmVydCk7CisgICAgdm9pZCBzY2lzc29yKEdDM0RpbnQgeCwgR0MzRGlu
dCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOworICAgIHZvaWQgc2hhZGVy
U291cmNlKFBsYXRmb3JtM0RPYmplY3QsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc3RlbmNp
bEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spOworICAgIHZv
aWQgc3RlbmNpbEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBmdW5jLCBHQzNE
aW50IHJlZiwgR0MzRHVpbnQgbWFzayk7CisgICAgdm9pZCBzdGVuY2lsTWFzayhHQzNEdWludCBt
YXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRHVp
bnQgbWFzayk7CisgICAgdm9pZCBzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gekZh
aWwsIEdDM0RlbnVtIHpQYXNzKTsKKyAgICB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKEdDM0RlbnVt
IGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpGYWlsLCBHQzNEZW51bSB6UGFzcyk7CisK
KyAgICBib29sIHRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNE
ZW51bSBpbnRlcm5hbEZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBH
QzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lk
KiBwaXhlbHMpOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0IHBhcmFtKTsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmko
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQgcGFyYW0pOworICAg
IHZvaWQgdGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0Rp
bnQgeE9mZnNldCwgR0MzRGludCB5T2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBo
ZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxz
KTsKKworICAgIHZvaWQgdW5pZm9ybTFmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB4KTsK
KyAgICB2b2lkIHVuaWZvcm0xZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEZmxv
YXQqIHYpOworICAgIHZvaWQgdW5pZm9ybTFpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgeCk7
CisgICAgdm9pZCB1bmlmb3JtMWl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RzaXplaSwgR0MzRGlu
dCogdik7CisgICAgdm9pZCB1bmlmb3JtMmYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHgs
IGZsb2F0IHkpOworICAgIHZvaWQgdW5pZm9ybTJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6
ZWksIEdDM0RmbG9hdCogdik7CisgICAgdm9pZCB1bmlmb3JtMmkoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGludCB4LCBHQzNEaW50IHkpOworICAgIHZvaWQgdW5pZm9ybTJpdihHQzNEaW50IGxvY2F0
aW9uLCBHQzNEc2l6ZWksIEdDM0RpbnQqIHYpOworICAgIHZvaWQgdW5pZm9ybTNmKEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHopOworICAgIHZv
aWQgdW5pZm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWksIEdDM0RmbG9hdCogdik7
CisgICAgdm9pZCB1bmlmb3JtM2koR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB4LCBHQzNEaW50
IHksIEdDM0RpbnQgeik7CisgICAgdm9pZCB1bmlmb3JtM2l2KEdDM0RpbnQgbG9jYXRpb24sIEdD
M0RzaXplaSwgR0MzRGludCogdik7CisgICAgdm9pZCB1bmlmb3JtNGYoR0MzRGludCBsb2NhdGlv
biwgR0MzRGZsb2F0IHgsIEdDM0RmbG9hdCB5LCBHQzNEZmxvYXQgeiwgR0MzRGZsb2F0IHcpOwor
ICAgIHZvaWQgdW5pZm9ybTRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWksIEdDM0RmbG9h
dCogdik7CisgICAgdm9pZCB1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB4LCBH
QzNEaW50IHksIEdDM0RpbnQgeiwgR0MzRGludCB3KTsKKyAgICB2b2lkIHVuaWZvcm00aXYoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEaW50KiB2KTsKKyAgICB2b2lkIHVuaWZvcm1N
YXRyaXgyZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRHNpemVpLCBHQzNEYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDM0RmbG9hdCogdmFsdWUpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEc2l6ZWksIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiB2
YWx1ZSk7CisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rz
aXplaSwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIHZhbHVlKTsKKworICAgIHZv
aWQgdXNlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIHZhbGlkYXRlUHJvZ3Jh
bShQbGF0Zm9ybTNET2JqZWN0KTsKKworICAgIHZvaWQgdmVydGV4QXR0cmliMWYoR0MzRHVpbnQg
aW5kZXgsIEdDM0RmbG9hdCB4KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjFmdihHQzNEdWludCBp
bmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliMmYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCB4LCBHQzNEZmxvYXQgeSk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogdmFsdWVzKTsKKyAgICB2b2lkIHZlcnRl
eEF0dHJpYjNmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgeCwgR0MzRGZsb2F0IHksIEdDM0Rm
bG9hdCB6KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYjNmdihHQzNEdWludCBpbmRleCwgR0MzRGZs
b2F0KiB2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgsIEdD
M0RmbG9hdCB4LCBHQzNEZmxvYXQgeSwgR0MzRGZsb2F0IHosIEdDM0RmbG9hdCB3KTsKKyAgICB2
b2lkIHZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiB2YWx1ZXMpOwor
ICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcihHQzNEdWludCBpbmRleCwgR0MzRGludCBzaXpl
LCBHQzNEZW51bSB0eXBlLCBHQzNEYm9vbGVhbiBub3JtYWxpemVkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHQzNEc2l6ZWkgc3RyaWRlLCBHQzNEaW50cHRyIG9mZnNldCk7CisKKyAg
ICB2b2lkIHZpZXdwb3J0KEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQpOworCisgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVCdWZmZXIoKTsK
KyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgUGxhdGZvcm0z
RE9iamVjdCBjcmVhdGVQcm9ncmFtKCk7CisgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVSZW5k
ZXJidWZmZXIoKTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNyZWF0ZVNoYWRlcihHQzNEZW51bSk7
CisgICAgUGxhdGZvcm0zRE9iamVjdCBjcmVhdGVUZXh0dXJlKCk7CisKKyAgICB2b2lkIGRlbGV0
ZUJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKFBs
YXRmb3JtM0RPYmplY3QpOworICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0
KTsKKyAgICB2b2lkIGRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2
b2lkIGRlbGV0ZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICB2b2lkIGRlbGV0ZVRleHR1
cmUoUGxhdGZvcm0zRE9iamVjdCk7CisKKyAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDM0Rl
bnVtIGVycm9yKTsKKworICAgIEV4dGVuc2lvbnMzRCogZ2V0RXh0ZW5zaW9ucygpOworCitwcml2
YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpOworCisgICAgYm9vbCBpbml0aWFs
aXplKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiwgYm9v
bCByZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KTsKKworICAgIGJvb2wgY3JlYXRlU3VyZmFj
ZShQYWdlQ2xpZW50RWZsKiwgYm9vbCByZW5kZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KTsKKwor
ICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKKworICAgIFBs
YXRmb3JtM0RPYmplY3QgbV9ib3VuZEZCTzsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fYm91bmRU
ZXh0dXJlOworICAgIFBsYXRmb3JtM0RPYmplY3QgbV9ib3VuZEFycmF5QnVmZmVyOworCisgICAg
TGlzdEhhc2hTZXQ8R0MzRGVudW0+IG1fc3ludGhldGljRXJyb3JzOworCisgICAgRXZhc19HTCog
bV9ldmFzR0w7CisgICAgRXZhc19HTF9Db250ZXh0KiBtX2NvbnRleHQ7CisgICAgRXZhc19HTF9T
dXJmYWNlKiBtX3N1cmZhY2U7CisgICAgRXZhc19HTF9Db25maWcqIG1fY29uZmlnOworICAgIEV2
YXNfR0xfQVBJKiBtX2FwaTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEdyYXBoaWNzTGF5ZXJFZmxfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>